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、これは、ターゲットファイルシステムに新しいファイルのためのスペースがないことを示します。

説明するシナリオでは、通常、制限に達すると転送が中断されます。

関連情報