您的位置:首页 > Web前端 > Node.js

为什么inode耗尽,而磁盘仍然有很大空间

2016-04-21 22:41 579 查看
之前因为这个问题,在心中憋了好久。最近有时间了解到操作系统的概念,才一解心中疑惑。先上几个网上截图。
df -h

Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/dev01-root         75G   58G   14G  82% /
udev                          2.0G  4.0K  2.0G   1% /dev
tmpfs                         396M  292K  396M   1% /run
none                          5.0M     0  5.0M   0% /run/lock
none                          2.0G  4.0K  2.0G   1% /run/shm
/dev/sda1                     228M  149M   68M  69% /boot


df -i

Filesystem                    Inodes   IUsed  IFree IUse% Mounted on
/dev/mapper/dev01-root       4964352 4964352      0  100% /
udev                          503779     440 503339    1% /dev
tmpfs                         506183     353 505830    1% /run
none                          506183       5 506178    1% /run/lock
none                          506183       2 506181    1% /run/shm
/dev/sda1                     124496     255 124241    1% /boot


那为什么inode耗尽,而磁盘仍然有很大空间,怎么理解?
因为inode(inode是OS为了管理磁盘而占用的额外的磁盘空间)与data block(data block是真正存储数据的磁盘块)不是一一对应的。在ext4系统中,两者的比例为1:4,即4个data block才会分配一个inode。这样的设置一般情况下是合理的,比如一般的文件都是几个M,或者大文件几个G,只耗费一个inode)。但是这中制度也会导致,如果你磁盘上放的都是不超过一个block(linux一个block为4K)的小文件,就会出现一个Inode只占用一个data block,极端情况下就会导致inode用完,但是data block还没有用完的情况(极端情况下,磁盘利用率只有40%)。

现在的Linux文件基本上都已经是ext4,但是这个也是基于ext2做的一个改进。
ext2的磁盘划分大概如下(注意super block和GDT在每个block group 都有,存在冗余),其中indoor table就是存放inode的地方:



请尊重原创。

参考资料:
http://www.ruanyifeng.com/blog/2011/12/inode.html http://www.csdn123.com/html/topnews201408/91/8991.htm http://akaedu.github.io/book/ch29s02.html#id2857323
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: