LVM : 縮減檔案系統的容量

sparkdev發表於2019-01-04

有擴充套件就有縮減,我們在前文《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 命令縮減檔案系統的容量需要事先解除安裝檔案系統。其實實際使用中縮減檔案系統的時候並不多,大家往往寧願犧牲一些儲存空間也不願看到折騰丟資料的情況。

參考:
縮小 LVM 空間
鳥哥的私房菜:縮小 LV 容量

相關文章