释放磁盘空间技巧
生产环境中会出现磁盘被一些大文件填满,但是大文件却因为被打开而无法马上删除释放空间的情况,以下技巧是解决此类问题的一种方法
模拟环境
先用/dev/zero 将/boot分区填满
1 2 3 4 5 6 7 8 9 10 11 12 13
| [root@centos7 boot] cp: error writing ‘/boot/bigfile’: No space left on device cp: failed to extend ‘/boot/bigfile’: No space left on device [root@centos7 boot] 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查看分区利用率
1 2 3 4 5 6 7 8 9 10
| [root@centos7 ~] 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文件删除
1 2 3 4 5 6 7 8 9 10 11 12
| [root@centos7 ~] rm: remove regular file ‘/boot/bigfile’? y [root@centos7 ~] 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文件已经删除。
1 2 3 4 5 6 7 8 9 10 11 12 13
| [root@centos7 ~] 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 [root@centos7 ~]
|
当bigfile文件被释放时,/boot分区的利用率归零。
结论:当磁盘文件被写入时,若直接删除此文件是不会释放磁盘空间的,但是此文件已经删除。只有当文件被关闭时空间才会被释放。
以下演示正确的操作方法
先将磁盘填满
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| [root@centos7 ~] 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 [root@centos7 ~] cp: cannot stat ‘/etc/zero’: No such file or directory [root@centos7 ~] 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 [root@centos7 ~] 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分区利用率
1 2 3
| [root@centos7 ~] Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 1038336 1038300 36 100% /boot
|
然后执行重定向命令将bigfile文件清空,此时boot磁盘空间已经释放
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| [root@centos7 ~] [root@centos7 ~] 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 [root@centos7 ~] 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文件
当bigfile文件被关闭时,文件即被删除。