zerofree 降低 Image 壓縮檔安大小

  1. 虛擬機工作一段時間,檔案系統中總會有已刪除的檔案,而 Linux ext 檔案系統刪除檔案僅刪除 inode,儲存檔案內容的 block 並沒清空。因此,壓縮虛擬機 image 檔時會越來越大,為解決此一問題可以使用 zerofree 清空已刪除檔案的內容。編譯 zerofree 必須先安裝 e2fsprogs-devel 開發套件。
    [root@dyw219 ~]# yum install e2fsprogs-devel --enablerepo=centos
    
  2. 下載 zerofree 程式原碼。
    [root@dyw219 ~]# cd /usr/src
    [root@dyw219 src]# wget http://frippery.org/uml/zerofree-1.0.3.tgz
    
  3. 解打包壓縮 zerofree 程式原碼。
    [root@dyw219 src]# tar zxvf zerofree-1.0.3.tgz
    
  4. 進入 zerofree-1.0.3 目錄,執行 make 進行編譯。
    [root@dyw219 src]# cd zerofree-1.0.3
    [root@dyw219 zerofree-1.0.3]# make
    
  5. 查看 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
    
  6. 本例虛擬機已開機,IP 是 192.168.122.100。將 zerofree 可執行檔複製到虛擬機的 /usr/bin 目錄。
    [root@dyw219 zerofree-1.0.3]# scp zerofree 192.168.122.100:/usr/src
    
  7. 虛擬機重開機,編輯開機選單,在核心參數中加上 ro init=/bin/bash 參數後開機,再以 zerofree 進行檔案系統的清除工作。
    bash /# zerofree /dev/mapper/vg_crt-root