모든 inode를 사용하는 방법

모든 inode를 사용하는 방법

파일을 만들지 않고 사용할 수 있는 무료 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해당 프로세스가 열린 이후 재활용되지 않은 파일을 삭제 합니다 .

이 방법으로 만들 수 있는 파일 수는 생성될 수 있는 프로세스 수와 각 프로세스가 열 수 있는 최대 파일 수에 따라 제한됩니다.

관련 정보