当磁盘被大文件填满时的一些小技巧

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当磁盘被大文件填满时的一些小技巧相关的知识,希望对你有一定的参考价值。

当磁盘被大文件填满时的一些小技巧

生产环境中会出现磁盘被一些大文件填满,但是大文件却因为被打开而无法马上删除释放空间的情况,以下技巧是解决此类问题的一种方法

模拟环境

先用/dev/zero 将/boot分区填满

[[email protected] boot]# cp /dev/zero /boot/bigfile
cp: error writing ‘/boot/bigfile’: No space left on device
cp: failed to extend ‘/boot/bigfile’: No space left on device
[[email protected] boot]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2      104806400 3708520 101097880   4% /
devtmpfs          740168       0    740168   0% /dev
tmpfs             756008       0    756008   0% /dev/shm
tmpfs             756008   10144    745864   2% /run
tmpfs             756008       0    756008   0% /sys/fs/cgroup
/dev/sda3       52403200   33140  52370060   1% /data
/dev/sda1        1038336 1038296        40 100% /boot
tmpfs             151204       0    151204   0% /run/user/0

然后将/boot/bigfile文件打开,再新启一个终端,用df查看分区利用率

[[email protected] ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2      104806400 3708664 101097736   4% /
devtmpfs          740168       0    740168   0% /dev
tmpfs             756008       0    756008   0% /dev/shm
tmpfs             756008   10184    745824   2% /run
tmpfs             756008       0    756008   0% /sys/fs/cgroup
/dev/sda3       52403200   33140  52370060   1% /data
/dev/sda1        1038336 1038300        36 100% /boot
tmpfs             151204       0    151204   0% /run/user/0

使用rm将bigfile文件删除

[[email protected] ~]# rm /boot/bigfile 
rm: remove regular file ‘/boot/bigfile’? y
[[email protected] ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2      104806400 3708584 101097816   4% /
devtmpfs          740168       0    740168   0% /dev
tmpfs             756008       0    756008   0% /dev/shm
tmpfs             756008   10184    745824   2% /run
tmpfs             756008       0    756008   0% /sys/fs/cgroup
/dev/sda3       52403200   33140  52370060   1% /data
/dev/sda1        1038336 1038300        36 100% /boot
tmpfs             151204       0    151204   0% /run/user/0

然而此时/boot分区利用率依然为100%,但目录下bigfile文件已经删除。

[[email protected] ~]# ls /boot
config-3.10.0-957.el7.x86_64
efi
grub
grub2
initramfs-0-rescue-30905c0f8bf344f4af5b53a826370629.img
initramfs-3.10.0-957.el7.x86_64.img
symvers-3.10.0-957.el7.x86_64.gz
System.map-3.10.0-957.el7.x86_64
vmlinuz-0-rescue-30905c0f8bf344f4af5b53a826370629
vmlinuz-3.10.0-957.el7.x86_64
[[email protected] ~]# 

当bigfile文件被释放时,/boot分区的利用率归零。
结论:当磁盘文件被写入时,若直接删除此文件是不会释放磁盘空间的,但是此文件已经删除。只有当文件被关闭时空间才会被释放。

以下演示正确的操作方法

先将磁盘填满

[[email protected] ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2      104806400 3708604 101097796   4% /
devtmpfs          740168       0    740168   0% /dev
tmpfs             756008       0    756008   0% /dev/shm
tmpfs             756008   10144    745864   2% /run
tmpfs             756008       0    756008   0% /sys/fs/cgroup
/dev/sda3       52403200   33140  52370060   1% /data
/dev/sda1        1038336  167000    871336  17% /boot
tmpfs             151204       0    151204   0% /run/user/0
[[email protected] ~]# cp /etc/zero /boot
cp: cannot stat ‘/etc/zero’: No such file or directory
[[email protected] ~]# cp /dev/zero /boot/bigfile
cp: overwrite ‘/boot/bigfile’? y
cp: error writing ‘/boot/bigfile’: No space left on device
cp: failed to extend ‘/boot/bigfile’: No space left on device
[[email protected] ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2      104806400 3708584 101097816   4% /
devtmpfs          740168       0    740168   0% /dev
tmpfs             756008       0    756008   0% /dev/shm
tmpfs             756008   10144    745864   2% /run
tmpfs             756008       0    756008   0% /sys/fs/cgroup
/dev/sda3       52403200   33140  52370060   1% /data
/dev/sda1        1038336 1038296        40 100% /boot
tmpfs             151204       0    151204   0% /run/user/0

将bigfile文件打开后另起终端,查看boot分区利用率

[[email protected] ~]# df /boot
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda1        1038336 1038300        36 100% /boot

然后执行重定向命令将bigfile文件清空,此时boot磁盘空间已经释放

[[email protected] ~]# > /boot/bigfile
[[email protected] ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2      104806400 3708588 101097812   4% /
devtmpfs          740168       0    740168   0% /dev
tmpfs             756008       0    756008   0% /dev/shm
tmpfs             756008   10184    745824   2% /run
tmpfs             756008       0    756008   0% /sys/fs/cgroup
/dev/sda3       52403200   33140  52370060   1% /data
/dev/sda1        1038336  167004    871332  17% /boot
tmpfs             151204       0    151204   0% /run/user/0
[[email protected] ~]# ls /boot
bigfile
config-3.10.0-957.el7.x86_64
efi
grub
grub2
initramfs-0-rescue-30905c0f8bf344f4af5b53a826370629.img
initramfs-3.10.0-957.el7.x86_64.img
symvers-3.10.0-957.el7.x86_64.gz
System.map-3.10.0-957.el7.x86_64
vmlinuz-0-rescue-30905c0f8bf344f4af5b53a826370629
vmlinuz-3.10.0-957.el7.x86_64

然后删除bigfile文件

[[email protected] ~]# rm -rf /boot/bigfile

当bigfile文件被关闭时,文件即被删除。

以上是关于当磁盘被大文件填满时的一些小技巧的主要内容,如果未能解决你的问题,请参考以下文章

Android课程---Android Studio使用小技巧:提取方法代码片段

献身说法---修复bug时的一些小技巧

提效小技巧——记录那些不常用的代码片段

做OI题时的一些常用的常数优化小技巧

VS中添加自定义代码片段——偷懒小技巧

关于一些小的c++技巧