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

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

ext4 파티션에서 40억 개의 파일 제한이 초과되면 어떻게 됩니까(예: 50억 개의 파일이 전송됨)?

답변1

아마도 "기기에 남은 공간이 없습니다" 오류가 표시될 것입니다.

# 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

답변2

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

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

관련 정보