有擴充套件就有縮減,我們在前文《LVM : 擴充套件檔案系統的容量》中介紹了通過 LVM 擴充套件檔案系統的方法,本文我們接著前文的 demo 介紹通過 LVM 縮減檔案系統的方法。說明:本文的演示環境為 ubuntu 16.04。
前文中我們把檔案系統 /dev/mapper/nickvg-nicklv00 的容量從 15G 擴充到了 65G(顯示為 64G):
接下來我們再把它重新縮減為 15G,並移除新新增的磁碟 /dev/sde。
解除安裝檔案系統
與擴充套件檔案系統的容量不同,如果是縮減檔案系統的容量,需要解除安裝檔案系統後再進行縮減操作。
如果沒有解除安裝檔案系統,會有上圖中的提示。解除安裝檔案系統本身非常簡單,使用 umount 命令就可以搞定,我們要解除安裝的檔案系統的掛載點為 /home/doc:
$ sudo umount /home/doc
使用 resize2fs 命令縮減檔案系統
解除安裝完檔案系統就可以使用 resize2fs 命令來縮減其容量了,我們的目標是把它縮回 15G:
$ sudo resize2fs /dev/nickvg/nicklv00 15G
提示先執行 e2fsck -f /dev/nickvg/nicklv00 命令。e2fsck 命令用於檢查 ext2/ext3/ext4 檔案系統的完整性,通過適當的選項可以嘗試修復出現的錯誤。e2fsck 執行後的傳回值及代表意義如下:
- 0 沒有任何錯誤發生。
- 1 檔案系統發生錯誤,並且已經修正。
- 2 檔案系統發生錯誤,並且已經修正。
- 4 檔案系統發生錯誤,但沒有修正。
- 8 運作時發生錯誤。
- 16 使用的語法發生錯誤。
- 128 共享的函式庫發生錯誤。
$ sudo e2fsck -f /dev/nickvg/nicklv00
-f 選項表示即使檔案系統沒有錯誤跡象,仍強制檢查正確性。上圖中的 0 表示我們的檔案系統沒有被檢測出錯誤,我們重新執行 resize2fs 命令,這次就可以成功執行了:
使用 lvreduce 命令縮減 LV
在縮減 LV 前先檢視一下其基本資訊:
$ sudo lvs nickvg/nicklv00
上圖顯示 LV nickvg/nicklv00 的容量為 65G,而我們縮減後的檔案系統只有 15G,所以我們是可以縮減這個 LV 的,我們直接把它縮減到 15G:
$ sudo lvreduce -L 15G nickvg/nicklv00 或 $ sudo lvreduce -L 15G /dev/nickvg/nicklv00
檢視下結果:
$ sudo lvdisplay nickvg/nicklv00
LV 的容量變成了 15G,Current LE 的數量為 480。
從 VG 中移除 PV
檢查名稱為 nickvg 的 VG 的資訊:
$ sudo vgdisplay nickvg
結果顯示 VG 的總容量為 69.94G,已經分配了 15G,還有 54.94G 空閒。接下來通過 pvs 命令來檢視 PV 與 VG 的關係:
$ sudo pvs
名稱為 nickvg 的 VG 由 /dev/sdd1 和 /dev/sde1 兩個 PV 組成,其中 /dev/sde1 完全空閒,我們可以把這個 PV 從 VG 中移除掉。vgreduce 命令可以從 VG 中移除 PV:
$ sudo vgreduce nickvg /dev/sde1
從 VG 中移除 PV /dev/sde1 後再次檢視 pv 的狀態:
此時 /dev/sde1 已經不屬於任何 VG。
移除 PV
所謂的移除 PV,就是使用 pvremove 命令移除 PV 裝置上的標籤,讓 LVM 無法識別該裝置是一個 PV。下面我們就來移除 PV /dev/sde1:
$ sudo pvremove /dev/sde1
在 pvremove 命令移除 /dev/sde1 後,pvs 命令輸出的結果中就找不到名稱為 /dev/sde1 的 PV 了。
刪除磁碟分割槽並移除硬碟
檢視裝置檔案:
$ ls /dev/sde*
其中的 /dev/sde1 就是磁碟分割槽的裝置檔案,讓我們先用 gdisk 命令檢視這個分割槽的資訊:
$ sudo gdisk /dev/sde
然後再刪除它:
再去檢視 sde 開頭的裝置檔案,發現 /dev/sde1 已經不見了:
最後關機移除硬碟就可以了。
如果沒有設定開機自動掛載檔案系統,還需要在開機後重新手動掛載檔案系統 /dev/mapper/nickvg-nicklv00 到 /home/doc 目錄。
總結
與擴充套件檔案系統容量不同,在 Ubuntu 16.04 中使用 resize2fs 命令縮減檔案系統的容量需要事先解除安裝檔案系統。其實實際使用中縮減檔案系統的時候並不多,大家往往寧願犧牲一些儲存空間也不願看到折騰丟資料的情況。