linux - 分区中的 inode 数与分区应支持的最大 inode 数不匹配

标签 linux amazon-ec2 posix inode amazon-ebs

我们使用 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 万+。 block 大小为4096。以 block 大小为4096,200GB分区(ext3)应支持的inode数为5200万+(最大inode计算:卷大小以字节为单位/2^12)。那么为什么分区只支持1300万个inode呢?

最佳答案

我很确定当您创建卷时 inode 是静态分配的(在本例中使用 mfs.ext3)。无论出于何种原因,mkfs.ext3 决定保留 1300 万个 inode,现在您无法再创建任何文件。

参见这个 2001 discussion of inodes

维基百科 ext3 页面有一个脚注更简洁地解释了这一点:wiki link

此外,inode 是按文件(而不是 block )分配的,这就是为什么只有 13M inode 的原因 - mkfs.ext3 必须配置为平均文件大小为 8 KB,这将解释您所看到的问题。

关于linux - 分区中的 inode 数与分区应支持的最大 inode 数不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2062533/

相关文章:

amazon-web-services - "Reset"亚马逊 EC2 服务器

amazon-web-services - 从我的 Android 手机进行网络共享时无法通过 SSH 连接到 EC2 服务器

c - C 中的非忙阻塞队列实现

linux - 如何在此脚本中将数字行添加到文件中

linux - 通过 PID 终止进程的 Bash 脚本

Linux POSIX 合规列表

amazon-web-services - 增加 AWS Elastic Beanstalk 上 Nginx conf 中的 client_max_body_size

java - SpringBoot Java Linux

c - 重新注册信号处理程序会导致无限循环

php - pcntl_sigwaitinfo 和信号处理程序