我们正在使用Amazon EBS在3级目录结构中存储大量小文件(<10KB)。
~/lists# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 9.9G 3.9G 5.5G 42% /
tmpfs 854M 0 854M 0% /lib/init/rw
varrun 854M 64K 854M 1% /var/run
varlock 854M 0 854M 0% /var/lock
udev 854M 80K 854M 1% /dev
tmpfs 854M 0 854M 0% /dev/shm
/dev/sda2 147G 80G 60G 58% /mnt
/dev/sdj 197G 60G 128G 32% /vol
有问题的分区是/ vol(大小:200GB)
~/lists# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 655360 26541 628819 5% /
tmpfs 186059 3 186056 1% /lib/init/rw
varrun 186059 31 186028 1% /var/run
varlock 186059 2 186057 1% /var/lock
udev 186059 824 185235 1% /dev
tmpfs 186059 1 186058 1% /dev/shm
/dev/sda2 19546112 17573097 1973015 90% /mnt
/dev/sdj 13107200 13107200 0 100% /vol
~/lists# sudo /sbin/dumpe2fs /dev/sdj | grep"Block size"
dumpe2fs 1.41.4 (27-Jan-2009)
Block size: 4096
分区/ vol的inode数量为1300万+。 块大小为4096。以"块大小"为4096,200GB分区(ext3)应支持的inode数量为5200万+(最大inode计算:卷大小,以字节/ 2 ^ 12为单位)。 那么,为什么分区仅支持1300万个inode?
山姆,谢谢您的回答。 块大小为4KB(而不是8KB)。 但是,即使我们占用8KB的空间,这个数字仍然不会相加。 200GB / 8KB = 2600万+(而不是1300万)。
是的,您只是为我指出了要点...您根据mkfs.ext3应该做的事情进行计算。 我只是说您的卷分配了13M个inode,它们都被使用了。 因此,如果您打算将许多小文件写入一个卷,请在mkfs时检查inode。 顺便说一句,如果您回复人们的回答,他们会收到通知。 仅在这里看到您的回复,因为我回去手动检查了这个问题。
我很确定在创建卷时会静态分配inode(在这种情况下使用mfs.ext3)。 无论出于什么原因,mkfs.ext3决定保留1300万个inode,现在您无法再创建任何文件。
参见2001年有关inode的讨论
Wikipedia ext3页面上有一个脚注,以更简洁的方式对此进行解释:Wiki链接
此外,每个文件(不是块)都分配了inode,这就是为什么只有13M inode的原因-mkfs.ext3必须配置为平均文件大小为8 KB,这可以解决您遇到的问题。
en.wikipedia.org/wiki/Ext3#cite_note-0在同一文章中的footnode讨论了inode限制