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

之前因为这个问题,在心中憋了好久。最近有时间了解到操作系统的概念,才一解心中疑惑。先上几个网上截图。

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

 

WHAT?明明还有很大剩余空间,怎么就无法创建文件了?怎么理解?

因为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的地方:

为什么inode耗尽,而磁盘仍然有很大空间_第1张图片

 

 

请尊重原创。

最近开通了微信公众号,求扫码关注;

为什么inode耗尽,而磁盘仍然有很大空间_第2张图片

参考资料:

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

你可能感兴趣的:(操作系统)