파일을 만들지 않고 사용할 수 있는 무료 inode가 있나요? 시스템의 모든 무료 inode를 사용하는 스크립트를 작성하고 싶습니다. 가능합니까?
답변1
이 스크립트는 파일 시스템에서 사용 가능한 inode 수만큼 파일을 생성합니다 /
.
while [ $(df --output=iavail / | tail -n1) -gt 0 ]; do
touch $((i++));
done
내가 아는 한, 파일이나 디렉토리를 사용하지 않고는 inode를 차지할 수 없습니다. 결국 그것이 바로 그것의 목적입니다. 스크립트가 완료된 후에도 인덱스 노드가 계속 사용할 노드입니다. 파일을 해제하려면 생성한 파일을 삭제해야 합니다.
답변2
예, 시스템의 모든 inode를 사용할 수 있습니다. 디스크 공간과 마찬가지로 제한된 리소스입니다. mkfs.ext4
즉, 실행할 때 미리 할당됩니다.
tune2fs -l <device>
또는 같은 도구를 사용하여 df -i <path>
할당 및 사용되는 개수를 확인할 수 있습니다.
예
$ df -i /
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora-root 3276800 355850 2920950 11% /
따라서 이 파일 시스템에는 2920950개의 사용 가능한 inode가 있습니다. 파일 시스템에 파일, 디렉터리 또는 링크를 만들기 시작하면 이를 사용하기 위해 해야 할 일은 그것뿐입니다. 작은 파일이나 링크가 포함된 모든 inode를 사용할 수 있고 여전히 사용 가능한 디스크 공간이 거의 있다는 것을 깨달았습니다.
파일 없이 inode를 사용하시겠습니까?
여기서 무엇을 얻으려는지는 잘 모르겠지만 inode를 사용할 수 있는 유일한 방법은 파일, 디렉터리 또는 링크를 만드는 것입니다. 나는 그것을 소비하는 다른 방법에 익숙하지 않습니다.
예
여기에서 빈 디렉터리를 생성하면 1개의 inode가 소비되는 것을 볼 수 있습니다.
$ df -i /
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora-root 3276800 355850 2920950 11% /
$ sudo mkdir /somedir
$ df -i /
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora-root 3276800 355851 2920949 11% /
아마도 inode를 사용하는 가장 간단한 방법은 디렉토리의 디렉토리 트리를 만드는 것입니다.
$ sudo mkdir /somedir/1
$ df -i /
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora-root 3276800 355852 2920948 11% /
$ sudo mkdir /somedir/2
$ df -i /
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora-root 3276800 355853 2920947 11% /
$ sudo mkdir /somedir/3
$ df -i /
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora-root 3276800 355854 2920946 11% /
ln
다음은 동일한 파일을 사용하여 여러 링크를 생성하여 inode를 사용하는 또 다른 예입니다.
$ ln -s afile ln1
$ df -i .
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora_greeneggs-home 26722304 1153662 25568642 5% /home
$ ln -s afile ln2
$ df -i .
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora_greeneggs-home 26722304 1153663 25568641 5% /home
$ ln -s afile ln3
$ df -i .
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/fedora_greeneggs-home 26722304 1153664 25568640 5% /home
답변3
문서예인덱스 노드.
그러나 어떤 디렉터리에도 연결되지 않은 파일을 생성하고 계속해서 inode를 사용할 수 있습니다. 예를 들어:
zsh -c 'repeat 1000 ((repeat 1000 {exec {fd}> file; rm file}
exec sleep 1000 >&-) | cat)'
(결국) 1,000,000개의 inode가 사용됩니다. 이러한 inode는 sleep
해당 프로세스가 열린 이후 재활용되지 않은 파일을 삭제 합니다 .
이 방법으로 만들 수 있는 파일 수는 생성될 수 있는 프로세스 수와 각 프로세스가 열 수 있는 최대 파일 수에 따라 제한됩니다.