- 虛擬機工作一段時間,檔案系統中總會有已刪除的檔案,而 Linux ext 檔案系統刪除檔案僅刪除 inode,儲存檔案內容的 block 並沒清空。因此,壓縮虛擬機 image 檔時會越來越大,為解決此一問題可以使用 zerofree 清空已刪除檔案的內容。編譯 zerofree 必須先安裝 e2fsprogs-devel 開發套件。
[root@dyw219 ~]# yum install e2fsprogs-devel --enablerepo=centos
- 下載 zerofree 程式原碼。
[root@dyw219 ~]# cd /usr/src
[root@dyw219 src]# wget http://frippery.org/uml/zerofree-1.0.3.tgz
- 解打包壓縮 zerofree 程式原碼。
[root@dyw219 src]# tar zxvf zerofree-1.0.3.tgz
- 進入 zerofree-1.0.3 目錄,執行 make 進行編譯。
[root@dyw219 src]# cd zerofree-1.0.3
[root@dyw219 zerofree-1.0.3]# make
- 查看 zerofree-1.0.3 目錄已產生 zerofree 可執行檔。
[root@dyw219 zerofree-1.0.3]# ll
total 40
-rw-r--r--. 1 1000 1000 17921 Aug 12 2007 COPYING
-rw-rw-r--. 1 1000 1000 109 Aug 10 2012 Makefile
-rwxr-xr-x. 1 root root 11177 Dec 7 18:02 zerofree
-rw-rw-r--. 1 1000 1000 3870 Aug 10 2012 zerofree.c
- 本例虛擬機已開機,IP 是 192.168.122.100。將 zerofree 可執行檔複製到虛擬機的 /usr/bin 目錄。
[root@dyw219 zerofree-1.0.3]# scp zerofree 192.168.122.100:/usr/src
- 虛擬機重開機,編輯開機選單,在核心參數中加上 ro init=/bin/bash 參數後開機,再以 zerofree 進行檔案系統的清除工作。
bash /# zerofree /dev/mapper/vg_crt-root