为什么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 - 阮一峰的网络日志

http://www.csdn123.com/html/topnews201408/91/8991.htm

http://akaedu.github.io/book/ch29s02.html#id2857323

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值