VirtrueBox 映象壓縮

2021-07-03 06:47:52 字數 2228 閱讀 4641

最近發現了使用virtualbox產生的系統映象動態增長的速度十分驚人,用了幾個月映象出乎意料的到達了110gb,不要問我為什麼會變得這麼大,我也不知道為什麼,總之刪除神馬的對磁碟空間沒有什麼幫助。

使用磁碟管理的命令可以看出系統的空間遠沒有這麼大,所以就需要我們對映象進行碎片整理和壓縮。

首先,virtralbox 的磁碟格式有很多種,其中vdi格式virtualbox專用的,當時建立的時候為了通用性考慮使用了vdmk這個格式。原來virtual本身自帶的工具映象的互轉。

1.碎片整理

sudo dd if=/dev/zero of=/empty bs=1m

sudo rm -rf /empty

//對於這個命令 看不明白/empty 掛載了什麼,至於這個命令可以執行就理解為空閒的區域清零操作

2.壓縮

vboxmanage

modifyvdi   xx.vdi compact

這裡兩個步驟是從網上找到了,發現壓縮只支援vdi格式,所以先進行格式轉化,當然本來就是vdi格式就不需要轉化了

vboxmanage

這個命令是在virtualbox的安裝目錄下 執行前輸入絕對路徑或者到安裝目錄或者設定一下環境變數總之能執行即可

接下去是我的操作:

1.首先我嘗試了一下sudo dd if=/dev/zero of=/empty bs=1m

於是不管3721就先轉化格式看看情況: 

十分震驚大小居然只有原來的60%左右了,感覺和原來執行10分鐘填充的關係不是很大吧,可能轉化的過程就會做一些壓縮吧?

因為還沒有做填充zero操作,因為我們刪除檔案通常是做乙個標記這個檔案已經不可用,實際上檔案只是檔案管理器看不到了,

但本事還是一堆二進位制存在。這裡壓縮的原理是根據把0的區域乾掉。那麼我們需要找乙個好用的工具快速解決這個問題。

這裡用到乙個livecd和乙個命令zerofree ,聽起來就是為這個而生的。

首先我們需要先開啟虛擬機器安裝好命令,在livecd上安裝這個命令應該也可以,這裡我進入虛擬機器進行安裝

sudo apt-get install zerofree

whereis zerofree     這裡看到zero被放到了/usr/bin 目錄  之前在bin 和sbin下都找不到使用了find才找出來了。

虛擬機器掛載一下livecd的映象,然後執行起來

sudo mkdir /mnt/ub

sudo mount -n -o ro -t ext4 /dev/sda1 /mnt/ub

#執行zerofree

sudo /mnt/ub/usr/bin/zerofree /dev/sda1

#完成後關機就好,然後嘗試壓縮

vboxmanage

modifyvdi   xx.vdi compact

再一次漫長的等待  從69g-->46g  這裡沒有進入虛擬機器裡觀察究竟占用空間有多少,感覺是差不多了從110g 到了46g體積已經縮小了太多了

最後想,不妨壓縮看一下最後結果如何:用到了7z壓縮(極限壓縮,這裡執行緒越多壓縮的越快,但是相當耗記憶體這種壓縮的情況,這裡保留了一點機器的效能)

經過漫長的等待這裡因為壓縮軟體本身計時了90分鐘的時間(cpu是i7-4600 8g記憶體的情況)

驚人的壓縮率21%(從46g-->11g)

感覺備份這個檔案就非常的方便了。(有人問你的映象到底幹了什麼這麼,我只能默默的吐槽這個是用來編譯安卓的乙個映象,重複編譯幾十次就變成這樣了)

缺點是解壓估計效能差的電腦需要很長的時間了。

Docker映象壓縮和優化

在構建docker容器時,應該盡量想辦法獲得體積更小的映象,因為傳輸和部署體積較小的映象速度更快。但run語句總是會建立乙個新層,而且在生成映象之前還需要使用很多中間檔案,在這種情況下,該如何獲得體積更小的映象呢?示例 dockerfile from ubuntu 14.04 add run.sh ...

怎樣壓縮Docker 映象的大小

第一步是修改dockerfile裡的基礎映象 from ubuntu from alpine from python 2.7 from python 2.7 alpine from ruby 2.3 from ruby 2.3 alpine 使用alpine最大的不同就是安裝包的方式不一樣 比如ru...

壓縮映象原理的乙個應用

設 t 0,s 0 in bbr 2 f t,s 在 t 0,s 0 的領域 n 中連續,s 0 f t 0,s 0 f s t,s 在 n 中存在且在 t 0,s 0 連續並且 f s t 0,s 0 0 用壓縮對映原理證明 存在 delta 0 x t in c t 0 delta,t 0 de...