ext4 파티션에서 40 억 개의 파일 제한을 초과하면 어떻게됩니까? 제한을 초과하고

예를 들어, ext4 파티션에서 40 억 파일 제한을 초과하고 예를 들어 50 억 파일을 전송하면 어떻게됩니까?



답변

아마도 “장치에 남은 공간 없음”오류가 표시 될 것입니다.

# truncate -s 100M foobar.img
# mkfs.ext4 foobar.img
Creating filesystem with 102400 1k blocks and 25688 inodes
---> number of inodes determined at mkfs time ^^^^^
# mount -o loop foobar.img loop/
# touch loop/{1..25688}
touch: cannot touch 'loop/25678': No space left on device
touch: cannot touch 'loop/25679': No space left on device
touch: cannot touch 'loop/25680': No space left on device

실제로 “40 억 개의 파일”보다 훨씬 빨리이 한계에 도달했습니다. 파일 시스템을 모두 확인 df -h하고 df -i남은 공간을 확인하십시오 .

# df -h loop/
Filesystem      Size  Used Avail Use% Mounted on
/dev/loop0       93M  2.1M   84M   3% /dev/shm/loop
# df -i loop/
Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/loop0      25688 25688     0  100% /dev/shm/loop

이 예에서 파일의 평균 크기가 4K가 아닌 경우 저장 공간보다 훨씬 빨리 inode 공간이 부족합니다. 그것은 또 다른 비율을 지정하는 것이 가능하다 ( mke2fs -N number-of-inodes또는 -i bytes-per-inode-T usage-type에 정의 된대로 /etc/mke2fs.conf).


답변

한계에 도달하면 이후에 파일 작성 시도가 실패 ENOSPC하고 대상 파일 시스템에 새 파일을위한 공간이 없음을 나타냅니다.

설명하는 시나리오에서는 일반적으로 한도에 도달하면 전송이 중단됩니다.