作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我们使用 Amazon EBS 在 3 级目录结构中存储大量小文件 (<10KB)。
~/lists# df -hFilesystem Size Used Avail Use% Mounted on/dev/sda1 9.9G 3.9G 5.5G 42% /tmpfs 854M 0 854M 0% /lib/init/rwvarrun 854M 64K 854M 1% /var/runvarlock 854M 0 854M 0% /var/lockudev 854M 80K 854M 1% /devtmpfs 854M 0 854M 0% /dev/shm/dev/sda2 147G 80G 60G 58% /mnt/dev/sdj 197G 60G 128G 32% /vol
有问题的分区是/vol(大小:200GB)
~/lists# df -iFilesystem Inodes IUsed IFree IUse% Mounted on/dev/sda1 655360 26541 628819 5% /tmpfs 186059 3 186056 1% /lib/init/rwvarrun 186059 31 186028 1% /var/runvarlock 186059 2 186057 1% /var/lockudev 186059 824 185235 1% /devtmpfs 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/
我是一名优秀的程序员,十分优秀!