上一篇文章,我們學習了如何給lvm的邏輯卷及卷組擴容。這篇文章我們來學習,如何給lvm的邏輯卷及卷組縮小空間。
<b>注意邏輯卷的縮小一定要離線操作,不能是線上操作,否則會造成邏輯卷損壞,以緻造成資料的丢失。</b>
縮小邏輯卷一定要按照如下步驟進行:
1、解除安裝已經挂載的邏輯卷
2、縮小檔案系統,使用resize2fs指令
3、縮小邏輯卷
4、檢視縮小後的邏輯卷
5、挂載邏輯卷
先來檢視邏輯卷的空間大小,使用lvs或者lvdisplay指令,如下:

通過上圖我們可以看到,目前邏輯卷/dev/vg1/data的空間大小為800m,而且已經挂載到/testlvm目錄下,并且/testlvm目錄下已經有一個檔案test.txt。
先來解除安裝邏輯卷,如下:
umount /testlvm/
邏輯卷的挂載解除安裝完畢後,我們來縮小檔案系統使用resize2fs指令。我們現在要把邏輯卷/dev/vg1/data由原來的800m縮小為300m,指令如下:
resize2fs /dev/vg1/data 300m
有關resize2fs指令的使用,可以檢視resize2fs的幫助文檔,如下:
接着系統會提示先先運作e2fsck指令,該指令是用來檢查邏輯卷是否有問題的,參數-f是遇見錯誤直接修複不提示。如下:
e2fsck -f /dev/vg1/data
e2fsck運作完畢後,我們再來執行resize2fs /dev/vg1/data 300m,如下:
我們可以看到現在沒有報錯,現在檔案系統的大小已經壓縮為300m。
下面我們開始縮小邏輯卷lv,我們可以通過lvreduce指令來實作。如下:
lvreduce -l 300 /dev/vg1/data
有關lvreduce指令的使用,我們看幫助。如下:
邏輯卷空間縮小後,我們再次來使用lvs及lvdisplay指令進行檢視,如下:
通過上圖我們可以很明顯的看到邏輯卷/dev/vg1/data的空間已經縮小至300m。那麼我們現在挂載該邏輯卷到/testlvm目錄下并檢視該目錄的内容是否和邏輯卷分區縮小前的一樣,如下:
mount /dev/vg1/data /testlvm/
通過上圖,我們可以很明顯的看到/testlvm目錄的大小,已經縮小為300m。而且/testlvm目錄下的test.txt檔案還是存在的,說明我們已經成功的為邏輯卷縮小空間。
以上有關邏輯卷的空間縮小,下面我們再來介紹有關卷組的空間縮小。
其實卷組的空間縮小就是把已經加入卷組的實體卷删除,先來檢視卷組中目前有的實體卷,如下:
通過上圖,我們可以很明顯的看到目前系統中兩個實體卷/dev/sda5/、/dev/sda6,而且這兩個實體卷已經都加入到卷組vg1中。
這個我們是通過圖中标記出來的黃色部分知道的,同時我們也知道這兩個實體卷的大小都是1000m,卷組vg1的大小為2000m。
我們現在要把實體卷/dev/sda6删除,這個就相當于縮小了卷組vg1的大小。我們可以通過vgreduce指令來實作,如下:
vgreduce vg1 /dev/sda6
有關vgreduce的使用,可以檢視幫助文檔,如下:
現在我們再來檢視卷組vg1的大小,如下:
通過上圖,我們可以很明顯的看到卷組vg1現在的大小已經是1000m。而且實體卷/dev/sda6目前不屬于任何一個卷組。
<b>注意:卷組縮小空間,一定要要卷組的空閑空間大小大于删除的實體卷的空間大小。</b>
到此lvm邏輯卷及卷組的空間縮小到此結束,下篇文章我們将介紹有關如何删除邏輯卷及卷組。