1. 程式人生 > >當磁盤被大文件填滿時的一些小技巧

當磁盤被大文件填滿時的一些小技巧

cto 生產 user run grub entos ted 寫入 磁盤文件

當磁盤被大文件填滿時的一些小技巧

生產環境中會出現磁盤被一些大文件填滿,但是大文件卻因為被打開而無法馬上刪除釋放空間的情況,以下技巧是解決此類問題的一種方法

模擬環境

先用/dev/zero 將/boot分區填滿

[root@centos7 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
[root@centos7 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查看分區利用率

[root@centos7 ~]# 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文件刪除

[root@centos7 ~]# rm /boot/bigfile 
rm: remove regular file ‘/boot/bigfile’? y
[root@centos7 ~]# 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文件已經刪除。

[root@centos7 ~]# 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
[root@centos7 ~]# 

當bigfile文件被釋放時,/boot分區的利用率歸零。
結論:當磁盤文件被寫入時,若直接刪除此文件是不會釋放磁盤空間的,但是此文件已經刪除。只有當文件被關閉時空間才會被釋放。

以下演示正確的操作方法

先將磁盤填滿

[root@centos7 ~]# 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
[root@centos7 ~]# cp /etc/zero /boot
cp: cannot stat ‘/etc/zero’: No such file or directory
[root@centos7 ~]# 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
[root@centos7 ~]# 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分區利用率

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

然後執行重定向命令將bigfile文件清空,此時boot磁盤空間已經釋放

[root@centos7 ~]# > /boot/bigfile
[root@centos7 ~]# 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
[root@centos7 ~]# 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文件

[root@centos7 ~]# rm -rf /boot/bigfile

當bigfile文件被關閉時,文件即被刪除。

當磁盤被大文件填滿時的一些小技巧