Linux 上的 Logical Volume Manager 是幹嘛用的呢? 如果說 把一顆硬碟切成好幾個分割 就像是把一棟房子用水泥牆隔成好幾個房間, 那麼把一塊空間 (可以是一個分割區、 一整顆硬碟或好幾顆硬碟) 切成好幾個 logical volume 就像是在一棟房子裡用屏風隔成好幾個房間, 或是吹好幾顆汽球。 傳統的水泥牆硬隔間切割方式彈性很小, 如果刪除了兩個不相鄰小分割, 那麼即使釋出的總空間足夠, 也無法建立一個新的大分割。 LVM 的屏風隔間或吹汽球軟隔間切割方式彈性很大, 使用者不需要擔心每個分割區的位置, 只需要關心剩餘總空間夠不夠用。
vgcreate gaia /dev/sdz99 vgchange -ay gaia # 插入隨身碟後 lvcreate -L 2G -n taiwan gaia mkfs -t ext4 /dev/mapper/gaia-taiwan mount /dev/mapper/gaia-taiwan /mnt/t1 umount /dev/mapper/gaia-taiwan # wipefs -a /dev/mapper/gaia-taiwan lvremove gaia/taiwan vgchange -an gaia # 拔出隨身碟前 vgremove gaia
- 你需要先建一個 volume group, 這就是上述比喻中的整棟房子。 vgcreate 之後的名字可自取; 再後面放 (可以不只一個) 傳統分割區的名字, 也就是這個 VG 所使用的 pyhisical volumes , 它要使用的地基/空間。
- 如果你的 VG 建立在一顆隨身碟上, 那麼每當插入隨身碟後, 必須先用 vgchange -ay ... 通知電腦你打算使用這個 VG。 (如果你才剛建立, 那它當然就自動啟用了, 所以此時這步可省略)
- 用 lvcreate 建立一個 logical volume 。 這步驟相當於比喻當中的一顆汽球或 「擺屏風隔出一個新房間」, 也相當於傳統分割方式 「在 fdisk 裡面建一個新的分割」。
- 再來就是熟悉的格式化/建立新的檔案系統 (mkfs) 。 注意裝置名稱的命名方式。
- 掛載、 開始使用
- 用完後卸載
- 若想清除一個 LV (或任何一個傳統分割區) 上面的檔案系統, 可用 wipefs 。 不清也沒關係, 只是下次要在上面建立新的檔案系統時, 可能會被詢問幾次而已。
- 若想刪除一個 LV, 則用 lvremove (拆除某房間的屏風)。 對應到傳統分割方式的 「在 fdisk 裡面刪除一個分割」。
- 一顆隨身碟上若含有 lvm, 要移除之前, 除了必須先卸載所有的 LV 之外, 還要再 vgchange -an ... (有點類似 "卸載" 整個 VG 的意思), 然後才能拔出來。
- 若要刪除整個 VG, 就用 vgremove 。
我自己初學 lvm 的時候, 最意外的是 vgchange -an ...
因為在隨身碟上建立 VG 時, 並不需要下 vgchange -ay ...
就可以直接往下做 lvcreate ... 。
花了一些力氣才學到 vgchange 這個指令。
總之, 在隨身碟上建立 lvm,
使用時需要兩層的 「掛載」 跟兩層的 「卸載」。
除了上述指令, 我最常用的是:
- lvs : 查看有哪些 LV 可用
- vgs : 查看每個 VG 剩下多少空間可用
- lvrename gaia taiwan formosa : 把 gaia 裡面的 taiwan 改名為 formosa
- lvresize -L 3G gaia/formosa ; resize2fs /dev/mapper/gaia-formosa : 把 formosa 的容量擴增到 3G 。 第一句話是在移動屏風的位置, 讓房間變大; 第二句話是在重新擺設擴大以後的房間, 讓它用到完整的新空間。
現在我的硬碟多半切成四個 primary partitions, 其中三個是 20G 的 ext4, 方便安裝 extlinux 開機管理員, 剩下空間全留給第四個 lvm 分割區。
感謝分享好文章.
回覆刪除