前续文章:
情景linux–如何解决单日志文件过大导致的磁盘空间不足?
情景linux–如何解决单日志文件过大导致的磁盘空间不足?(实践篇)
情景linux–如何快速生成大文件?
情景linux–磁盘空间不足的另一种情况
从文章情景linux–磁盘空间不足的另一种情况中可知:
磁盘空间不足至少有三种情况:
磁盘block区用尽了;
磁盘inode区用尽了;
磁盘block区用尽后,删除文件但文件句柄未释放;
而情况3其实是情况1的特殊情况。
大多数情况下,磁盘空间不足应是情况1。特殊情况下,会遇到情况3,这也是文章情景linux–如何解决单日志文件过大导致的磁盘空间不足?中提到的场景。情况2我们在文章情景linux–磁盘空间不足的另一种情况中也做了理论介绍,本文则针对情况2进行实践。
在开始之前我们先使用命令查看磁盘情况(注意观察-i
参数的统计列)。
$ df -ihl
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/VolGroup-lv_root 431K 54K 377K 13% /
tmpfs 235K 1 235K 1% /dev/shm
/dev/sda1 126K 39 125K 1% /boot
$ df -hl
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 6.7G 2.0G 4.4G 31% /
tmpfs 939M 0 939M 0% /dev/shm
/dev/sda1 485M 39M 421M 9% /boot
为了使得block区磁盘空间充足,而inode区空间不足,可以直接生成大量的空文件。新开一个终端窗口执行如下命令:
$ for i in `seq 1 1000000`;do touch $i.txt;done
在产生大量空文件的过程中,可以不断用df -ihl
命令了解inode区的占用情况:
find ./ | wc -l
268738
$ df -ihl
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/VolGroup-lv_root 431K 351K 80K 82% /
tmpfs 235K 1 235K 1% /dev/shm
/dev/sda1 126K 39 125K 1% /boot
$ df -hl
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 6.7G 2.0G 4.4G 31% /
tmpfs 939M 0 939M 0% /dev/shm
/dev/sda1 485M 39M 421M 9% /boot
即,产生了26w多个文件时,磁盘的inode区已经用掉了82%的空间,因而循环创建空文件的命令很快就会是inode区空间耗尽。
当创建了30多万个文件后,循环开始报错:
touch: cannot touch `386787.txt': No space left on device
touch: cannot touch `386788.txt': No space left on device
touch: cannot touch `386789.txt': No space left on device
...(省略)...
$ df -ihl
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/VolGroup-lv_root 431K 431K 0 100% /
tmpfs 235K 1 235K 1% /dev/shm
/dev/sda1 126K 39 125K 1% /boot
$ df -hl
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 6.7G 2.0G 4.4G 31% /
tmpfs 939M 0 939M 0% /dev/shm
/dev/sda1 485M 39M 421M 9% /boot
总结
学习了磁盘相关的知识和这几篇文章的内容后,当遇到linux系统磁盘空间不足时,应区分是哪种情景:
- 使用
df -hl
命令查看磁盘block区使用情况,并结合du
命令进一步确认是哪些文件占用空间比较大,或者是删除了文件但空间没有释放; - 使用
df -ihl
命令查看磁盘inode区使用情况;
相关文章
情景linux–如何解决单日志文件过大导致的磁盘空间不足?
情景linux–如何解决单日志文件过大导致的磁盘空间不足?(实践篇)
情景linux–如何快速生成大文件?
情景linux–磁盘空间不足的另一种情况