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