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
, 이는 대상 파일 시스템에 새 파일을 위한 공간이 없음을 나타냅니다.
설명하는 시나리오에서는 일반적으로 한도에 도달하면 전송이 중단됩니다.