2012/06/29

virtualbox how to shrink vdi 檔如何壓縮?

明明已經把系統空間空出來了,可是 vdi 檔卻是愈長愈大,之前也不是很在意,主要是這次是要給別人用的,檔案太大不方便傳輸。要把明明系統不大,但是 vdi 檔卻相對非常大的檔縮小是可能的,會發生這樣的事主要是我在機器裡面編譯整個 android, 事後雖然 make clean 仍然不會因此變小,甚至還有加檔的話,vdi 檔仍然繼續變大....

1. guest 系統裡面請安裝 zerofree, 它不大,作用就是把已經刪除的 inode 資料清空,不然的話檔案系統會繼續往後長
2. 該 guest 系統用個開機光碟開機,當然我是用 iso 檔,一樣的
3. 光碟開機後進試用模式,掛載時請使用唯讀:
    mount /dev/sda1 /mnt -o ro
4. /mnt/usr/sbin/zerofree /dev/sda1

之後將 gesut os 關機,並回到 host 系統
5. 參考這篇VboxManage modifyvdi /path/to/your/VM.vdi compact
6. VboxManage clonehd  /path/to/your/VM.vdi  name-of-clone-vm.vdi
到此已經把 vdi 縮小。
順便講一下,要複製 vdi 請勿直接用 copy, 因為那樣的話虛擬磁碟的 UUID 會是相同的,請用上面的命令來複製產生新的虛擬磁碟

2012/06/21

daily update backup file 每日更新備份檔


有次幫朋友解決她的系統,因為她對 Linux 是門外漢,負責人又離職了,而系統首先是董事長的信無法收發,發現的是積存太大,爆了。後來又發現所有人都無法登入,一查,發現的是整顆硬碟爆了。
結論如下:
1. 該系統是磁碟陣列,但是只裝一顆硬碟。
2. 那顆硬碟只有 300G, 給 var, home 各約一半,大略上說啦,信箱當然在 /var/spool/mail 下,卻備份在 /home 下
3. 每週備份一次整個 /var 及 /home 
有發現問題嗎?問題來了,還不止一個,有誰看出來了嗎?整個!還是整個 /home!!!!
暫時解決方案就是把舊的備份檔砍了,只留一個最新的,而 /home 則是整個砍了。/var 還沒什麼大問題,比較嚴重的也只有她家董事長的信箱一個人就占了 1GB, 不大啦,但是每週備份也就不小喔。

而 /home 則成等比級數成長,所以該負責員工一離職,一週左右就出問題了。現在提供一下要更新備份檔的作法參考如下:

先初始一個第0階的備份檔:
$ tar --create --listed-incremental ./game.snar --gzip \
    --file game_`date +%F`.tar.gz game/ 2>&1 >> game_`date +%F`.log
接下來,備份時可以只針對比第0階的備份檔新的才更新,其中時間的參考檔是 game.snar,所以這個檔請不要亂刪。之後產生的都稱之為 level 1 的備份檔。
$ tar --create --listed-incremental ./game.snar --gzip \
    --file game_`date +%F`.tar.gz game/ >> game_`date +%F`.log
要還原的話,參考命令如下:
$ for t in game_2011-10-2*.tar.gz; \
    do tar --extract --incremental --gzip --file $t; done