快轉到主要內容

LVM 安全的縮小 LV 的空間

·1597 字· loading · loading ·
Computer-Science LVM
目錄
LVM - 本文屬於一個選集。
§ : 本文
前一篇文章提到 LVM 的使用方式,本篇將解說如何縮減 LV 的空間。

前言
#

  • 硬碟縮減操作不當將有可能造成資料毀損,建議開始前先進行備份。
  • 以下指令可能會需要 Root 權限。

硬碟空間的縮減操作需要較為注意,操作不當可能會毀損原有資料,甚至造成系統不穩定,因此特別分出一篇來解說如何操作。


重點注意
#

為了避免資料遺失,請注意以下操作重點:

  • [建議] 先進行備份
    建議先備份重要資料,這類硬碟空間的操作往往伴隨著不可逆的風險。
  • 確保空間尚未掛載使用
    必須確保要縮減的分區沒有正在被使用。
  • 先縮減 File System 再縮減 LV
    應該先讓 File System 適應縮減後的硬碟空間,再縮減 LV。若順序反了,則可能會刪除到原有的資料,造成難以修復的損壞。
    (但請特別注意,XFS 格式是無法被縮小的,只能先刪除再重新建立較小的分區。)

p.s. 以下操作將以 vg0-lv3 分區掛載到家目錄 /home 為例

請自行更改分區及掛載點至您的所屬情境。

檢查 File System 類型
#

如同先前所說,當 File System 是XFS格式時,則無法直接對分區空間進行縮減。
Unix 系統通常為ext4格式,則可以透過以下指令查看:

1df -Th | grep /home

應該可以看到如下資訊,這表示該分區為vg0lv--3,File System 格式為ext4

1/dev/mapper/vg0-lv--3 ext4     1.2T   65G  1.1T   6% /home

或者透過以下指令查看其他分區資訊:

1blkid

卸載分區
#

透過指令mount可以獲取掛載點清單,並加上grep過濾,否則可能資料會很多。
舉例要查詢的 LV 名稱為lv--3

1mount | grep lv--3

如果有看到類似如下訊息,則表示該分區正在被使用:

1/dev/mapper/vg0-lv--3 on /home type ext4 (rw,relatime)

這時請手動將其卸載:

1# lazy umount
2umount -l /dev/mapper/vg0-lv--3
3# 或者強制關閉
4fuser -vk /home

如果顯示「device is busy」,則表示還有程序正在使用它,可以執行如下指令查看程序:

1lsof +D /home
2# 或者
3fuser -vm /home

接著手動終止那些正在運行的程序後,再嘗試卸載動作。


救援模式
#

如果已經終止了所有跟該分區相關的程序,卻還是無法成功卸載分區,則可以試試轉為救援模式再卸載:

1systemctl rescue
2umount /dev/mapper/vg0-lv--3
3e2fsck -f /dev/mapper/vg0-lv--3

停用 LV
#

檢查 LV 狀態:

1lvdisplay /dev/mapper/vg0-lv--3

LV Status 若顯示「available」則表示正在使用,透過以下指令停用該 LV:

1# 停用
2lvchange -an /dev/mapper/vg0-lv--3
3# 檢查
4e2fsck -f /dev/mapper/vg0-lv--3

如果有程序正在使用 LV 空間,則可以透過下方指令查看使用的程序:

1lsof | grep /dev/mapper/vg0-lv--3
2# 或
3fuser -vm /dev/mapper/vg0-lv--3

手動終止這些程序,或讓下方指令自動刪除:

1# 強制關閉
2fuser -vk /dev/mapper/vg0-lv--3

最後再檢查一次狀態:

1e2fsck -f /dev/mapper/vg0-lv--3

LV 為 SWAP?
#

如果 LV 被作為 SWAP 使用,則需要先停用 SWAP,確認 SWAP 分區:

1cat /proc/swaps

關閉 SWAP 分區:

1swapoff /dev/mapper/vg0-lv--3

必要時停用自動掛載
#

做完上述的步驟後,執行lvdisplay指令查看 LV Status:

1lvdisplay /dev/vg0/lv-3

若 LV Status 仍然顯示「available」,則請嘗試編輯/etc/fstab設定,將該分區自動掛載的設定註解,並重新啟動電腦:

1vim /etc/fstab

成功卸載
#

確認分區狀態:

1lvdisplay /dev/vg0/lv-3

如果 LV Status 顯示NOT available,代表該分區已經成功停用。


縮減分區大小
#

首先先檢查並修復分區:

1e2fsck -f /dev/vg0/lv-3

如果是XFS格式則需使用xfs_repair

1xfs_repair /dev/vg0/lv-3

接著縮減 File System,假設縮小至 1200 GB:

該操作會花一些時間,建議 SSH 或其他容易斷線的情況可以用tmux掛住 session。
(如果不知道怎麼使用 tmux,可以看我之前的介紹文章「"Tmux" 指令,建立多個終端 Sessions,登出也能保留背景運作」)

1resize2fs /dev/vg0/lv-3 1200G

如果顯示如下訊息,則表示分區正在被使用,無法在線縮小,需要先卸載:

1resize2fs 1.46.5 (30-Dec-2021)
2Filesystem at /dev/vg0/lv-3 is mounted on /home; on-line resizing required
3resize2fs: On-line shrinking not supported

正常會顯示如下訊息:

1resize2fs 1.46.5 (30-Dec-2021)
2Resizing the filesystem on /dev/vg0/lv-3 to 314572800 (4k) blocks.

直到出現該訊息則表示成功縮減 File System:

1The filesystem on /dev/vg0/lv-3 is now 314572800 (4k) blocks long.

可以先掛載檢查是否成功縮減分區:

1mount /dev/vg0/lv-3 /home

查看分區大小:

1df -h /home

確認分區大小無誤後,再卸載:

1umount /home

再進行一次分區檢查,若沒顯示錯誤則代表成功:

1sudo e2fsck -f /dev/vg0/lv-3

最後才是縮減 LV,使用lvreduce指令:

1lvreduce -L 1200G /dev/vg0/lv-3

正常會顯示如下訊息,輸入y確認繼續:

1WARNING: Reducing active logical volume to 1.17 TiB.
2  THIS MAY DESTROY YOUR DATA (filesystem etc.)
3Do you really want to reduce vg0/lv-3? [y/n]: y
4  Size of logical volume vg0/lv-3 changed from 1.70 TiB (445645 extents) to 1.17 TiB (307200 extents).
5  Logical volume vg0/lv-3 successfully resized.

這樣就完成了,透過lvs指令確認 LV 大小是否正確:

1lvs

掛載使用:

1mount /dev/vg0/lv-3 /home

p.s. 如果剛剛有修改/etc/fstab的話,別忘記改回來。

Alpaca
作者
Alpaca
No one can stop my feet.
LVM - 本文屬於一個選集。
§ : 本文

相關文章

LVM 邏輯卷管理(Logical Volume Manager)
·1369 字· loading · loading
Computer-Science LVM
比傳統硬碟分割更有效的硬碟管理方式。
Ubuntu 安裝 Fcitx5 注音輸入,並解決無法在瀏覽器切換輸入法的問題
·436 字· loading · loading
Computer-Science Ubuntu Fcitx
Ubuntu 安裝 Fcitx5 遇到困難,甚至無法於瀏覽器切換輸入法嗎?
SSH 連線以金鑰取代密碼
·1479 字· loading · loading
Computer-Science SSH
每當使用 SSH 連接遠端主機時,都必須輸入密碼,而為了安全性,密碼又需要一定程度的複雜度,長久下來難免感到麻煩...
架設暗網 - Tor Hidden Service
·1127 字· loading · loading
Computer-Science Tor
本文將說明如何架設 Tor 暗網,將你的服務隱匿在 Tor 當中。
《Pwn - 0x00》Hello, Pwn!
·674 字· loading · loading
Computer-Science Pwn

計算機領域中的「Pwn」是什麼意思?

CTF 「hackme」Web Write Up
·17858 字· loading · loading
Computer-Science CTF