VMware虛擬機,從厚置備改爲精簡置備,並減少硬盤的實際佔用空間 使用再生龍Clonezilla備份還原Linux系統 使用再生龍Clonezilla備份還原Linux系統

工做中因爲前期規劃不足,致使磁盤空間分配較大,並且是厚置備。後期再也不須要時,沒法把用不到的空間釋放出來,形成空間浪費。通過摸索和實驗驗證,到最終解決問題,總結出來兩種方案。 html

風險提示:兩種方案的實驗都驗證經過了,但第一種方案在生產環境中沒有成功,若有相似問題,建議採用第二種方案!post

環境:Esxi 6.5,vCenter 6.5 U1e,Ubuntu 16.04

因爲初始分配給Ubuntu 16.04虛擬機的硬盤空間是2T,後期數據量加大須要增長空間時,發現分區表不是GPT,沒法超過2T。測試

致使已在vCenter裏給虛擬機增長的空間浪費,也就是下圖中的這個數字,只能調高,不能調低。url

VMware官方對於這種狀況提供了一種解決辦法:經過遷移,改變虛擬磁盤格式,從「厚置備」改爲「精簡置備」,從而減少實際佔用的空間。spa

                       

官方網址:https://kb.vmware.com/s/article/2014832操作系統

 

經過官方的解決辦法進行處理,以下圖所示,結果喜憂參半3d

 

喜的是實際佔用的空間確實減少了,憂的是減少的空間僅僅是未分配的unallocated這部分,前面已分配的空間,雖然文件已經刪除了,但並無減少。htm

 

第一種方案:壓縮文件系統大小,分區未使用空間充零,修改虛擬磁盤格式。

經過以下實驗進行驗證:

1.給虛擬機分配40G的厚置備硬盤空間並安裝系統,安裝完畢後不進行任何操做,直接關機。

                       

2.關機後遷移虛擬機,虛擬磁盤格式從「厚置備」改爲「精簡置備」,已用空間減少到6GB,說明在沒有寫入數據的狀況下,經過官方的方法是能夠減少實際佔用空間的。

 

3. 再次遷移虛擬機,把虛擬磁盤格式從「精簡置備」改爲「厚置備」,而後拷貝大文件把硬盤空間填充滿。

  

4.把大文件刪除,關機後遷移虛擬機,虛擬磁盤格式從「厚置備」改爲「精簡置備」。能夠看到,雖然刪除了大文件,但經過遷移的方式也僅僅能回收沒有寫入過數據的很小的一塊空間。

 

5.用SystemRescueCD啓動虛擬機,減少/分區的大小

 

fdisk –lu              #查看磁盤分區狀況blog

 

e2fsck –f /dev/sda1        #檢查文件系統圖片

 

resize2fs /dev/sda1 10G        #把文件系統大小調整爲10G

parted /dev/sda                                   #使用parted調整硬盤分區,注意是/dev/sda

(parted)resizepart 1 12G                    #調整分區大小,1表明/dev/sda1

#注意:parted分區大小計算方式不一樣,因此多留一些空間防止數據丟失

 

resize2fs /dev/sda1         #調整文件系統大小,使之與分區大小相匹配

 

6.重啓,從本地硬盤啓動,查看磁盤分區大小,能夠看到/dev/sda1已經被壓縮了。 

 

7.在未分配的空間新建一個分區,而後所有置零

 

dd bs=64k if=/dev/zero of=/dev/sda2           #bs表示每次寫的塊的大小

 

在Gparted中能夠看到File System變成了unknown

 

刪除/dev/sda2,使之變成unallocated

 

8.關機後遷移虛擬機,把虛擬磁盤格式從「精簡置備」改爲「厚置備快速置零」。

之因此要多作這麼一步,是由於上面的操做只是在把操做系統裏把未使用的空間置零了,虛擬機並不知道,所以須要經過這步操做,讓虛擬機把未使用的空間也置零。

 

9.再次遷移虛擬機,把虛擬磁盤格式從「厚置備」改爲「精簡置備」,能夠看到已用空間減少到10GB,也就是實際佔用的空間確實減少了。

 

經過上述實驗,基本上驗證了虛擬機回收空間的標準:

  1. 分配後還沒有寫入過數據;
  2. 分配後寫入過數據,但在操做系統和虛擬機裏均進行過置零操做。

以上方法回收的是Linux系統的空間,理論上Windows系統也能夠經過這個方法回收,只是用到的軟件不一樣。

 

第二種方案:使用再生龍Clonezilla軟件進行備份還原

雖然上文提到第一種方法實驗驗證經過了,可是在操做生產環境中的機器時,因爲各類未知緣由(快照、磁盤整合、漫長的數據遷移時間…),致使最後的結果並不理想,雖然成功的把文件系統的大小減少到了55G,但從厚置備轉換爲精簡置備後,並無達到空間釋放的目的。

此處應有圖片,晚上截圖。

這個方法走不通以後,我想到發生問題之初,曾諮詢過一位老哥,當時提到了一個很牛逼的軟件,產自寶島臺灣的再生龍Clonezilla。

因爲那時我尚未找到減少文件系統大小的方法,而再生龍有以下限制,所以也就無法經過備份還原的方式解決問題。

其實如今想來,經過先備份,再還原到精簡置備磁盤的方式,應該也是能夠的,不過沒有驗證,並且對於強迫症患者來講,這個方案也並不完美。

因此個人方法是先備份原機器/dev/sda1分區,再新建一臺虛擬機,空間比原機器/dev/sda1分區的大小略大(緣由參考使用再生龍Clonezilla備份還原Linux系統),而後把備分內容還原到新虛擬機上,以後再把原機器/dev/sdb1分區所在的虛擬磁盤添加到新虛擬機中。

固然,仍是要先經過實驗驗證一番,具體步驟另外寫了一篇隨筆使用再生龍Clonezilla備份還原Linux系統

實驗很成功,效果很滿意,接下來就是在半夜沒有業務的時候關機調整了。得益於再生龍Clonezilla超高的備份還原效率,30分鐘以內完成了所有操做,通過一天的測試,一切正常。

原機器和新機器的配置對比

 

 

總結:

1.前期的規劃很重要,沒作好規劃,後期就要浪費不少時間來填坑。

2.大致積虛擬磁盤文件的遷移很費時間,一夜可能只能幹這一件事。

相關文章
相關標籤/搜索