LFCS 系列第十一講:如何使用命令 vgcreate、lvcreate 和 lvextend 管理和創建 LVM
![](https://linuxstory.org/wp-content/uploads/2024/06/232801y520roewoe2uquro.png)
在安裝 Linux 系統的時候要做的最重要的決定之一便是給系統文件、home 目錄等分配空間。在這個地方犯了錯,再要擴大空間不足的分區,那樣既麻煩又有風險。
邏輯卷管理 (LVM)相較於傳統的分區管理有許多優點,已經成為大多數(如果不能說全部的話) Linux 發行版安裝時的默認選擇。LVM 最大的優點應該是能方便的按照你的意願調整(減小或增大)邏輯分區的大小。
LVM 的組成結構:
- 把一塊或多塊硬碟或者一個或多個分區配置成物理卷(PV)。
- 一個用一個或多個物理卷創建出的卷組(VG)。可以把一個卷組想像成一個單獨的存儲單元。
- 在一個卷組上可以創建多個邏輯卷。每個邏輯卷相當於一個傳統意義上的分區 —— 優點是它的大小可以根據需求重新調整大小,正如之前提到的那樣。
本文,我們將使用三塊 8 GB 的磁碟(/dev/sdb、/dev/sdc 和 /dev/sdd)分別創建三個物理卷。你既可以直接在整個設備上創建 PV,也可以先分區在創建。
在這裡我們選擇第一種方式,如果你決定使用第二種(可以參考本系列第四講:創建分區和文件系統)確保每個分區的類型都是 8e
。
創建物理卷,卷組和邏輯卷
要在 /dev/sdb、/dev/sdc 和 /dev/sdd上創建物理卷,運行:
# pvcreate /dev/sdb /dev/sdc /dev/sdd
你可以列出新創建的 PV ,通過:
# pvs
並得到每個 PV 的詳細信息,通過:
# pvdisplay /dev/sdX
(X 即 b、c 或 d)
如果沒有輸入 /dev/sdX
,那麼你將得到所有 PV 的信息。
使用 /dev/sdb和
/dev/sdc創建卷組 ,命名為
vg00(在需要時是可以通過添加其他設備來擴展空間的,我們等到說明這點的時候再用,所以暫時先保留
/dev/sdd`):
# vgcreate vg00 /dev/sdb /dev/sdc
就像物理卷那樣,你也可以查看卷組的信息,通過:
# vgdisplay vg00
由於 vg00
是由兩個 8 GB 的磁碟組成的,所以它將會顯示成一個 16 GB 的硬碟:
LVM 卷組列表
當談到創建邏輯卷,空間的分配必須考慮到當下和以後的需求。根據每個邏輯卷的用途來命名是一個好的做法。
舉個例子,讓我們創建兩個 LV,命名為 vol_projects
(10 GB) 和 vol_backups
(剩下的空間), 在日後分別用於部署項目文件和系統備份。
參數 -n
用於為 LV 指定名稱,而 -L
用於設定固定的大小,還有 -l
(小寫的 L)在 VG 的預留空間中用於指定百分比大小的空間。
# lvcreate -n vol_projects -L 10G vg00
# lvcreate -n vol_backups -l 100%FREE vg00
和之前一樣,你可以查看 LV 的列表和基礎信息,通過:
# lvs
或是查看詳細信息,通過:
# lvdisplay
若要查看單個 LV 的信息,使用 lvdisplay 加上 VG 和 LV 作為參數,如下:
# lvdisplay vg00/vol_projects
邏輯卷列表
如上圖,我們看到 LV 已經被創建成存儲設備了(參考 LV Path 那一行)。在使用每個邏輯卷之前,需要先在上面創建文件系統。
這裡我們拿 ext4 來做舉例,因為對於每個 LV 的大小, ext4 既可以增大又可以減小(相對的 xfs 就只允許增大):
# mkfs.ext4 /dev/vg00/vol_projects
# mkfs.ext4 /dev/vg00/vol_backups
我們將在下一節向大家說明,如何調整邏輯卷的大小並在需要的時候添加額外的外部存儲空間。
調整邏輯卷大小和擴充卷組
現在設想以下場景。vol_backups
中的空間即將用完,而 vol_projects
中還有富餘的空間。由於 LVM 的特性,我們可以輕易的減小後者的大小(比方說 2.5 GB),並將其分配給前者,與此同時調整每個文件系統的大小。
幸運的是這很簡單,只需:
# lvreduce -L -2.5G -r /dev/vg00/vol_projects
# lvextend -l +100%FREE -r /dev/vg00/vol_backups
減小邏輯卷和卷組
在調整邏輯卷的時候,其中包含的減號 (-)
或加號 (+)
是十分重要的。否則 LV 將會被設置成指定的大小,而非調整指定大小。
有些時候,你可能會遭遇那種無法僅靠調整邏輯卷的大小就可以解決的問題,那時你就需要購置額外的存儲設備了,你可能需要再加一塊硬碟。這裡我們將通過添加之前配置時預留的 PV (/dev/sdd
),用以模擬這種情況。
想把 /dev/sdd
加到 vg00
,執行:
# vgextend vg00 /dev/sdd
如果你在運行上條命令的前後執行 vgdisplay vg00
,你就會看出 VG 的大小增加了。
# vgdisplay vg00
查看卷組磁碟大小
現在,你可以使用新加的空間,按照你的需求調整現有 LV 的大小,或者創建一個新的 LV。
在啟動和需求時掛載邏輯卷
當然,如果我們不打算實際的使用邏輯卷,那麼創建它們就變得毫無意義了。為了更好的識別邏輯卷,我們需要找出它的 UUID
(用於識別一個格式化存儲設備的唯一且不變的屬性)。
要做到這點,可使用 blkid 加每個設備的路徑來實現:
# blkid /dev/vg00/vol_projects
# blkid /dev/vg00/vol_backups
尋找邏輯卷的 UUID
為每個 LV 創建掛載點:
# mkdir /home/projects
# mkdir /home/backups
並在 /etc/fstab
插入相應的條目(確保使用之前獲得的UUID):
UUID=b85df913-580f-461c-844f-546d8cde4646 /home/projects ext4 defaults 0 0
UUID=e1929239-5087-44b1-9396-53e09db6eb9e /home/backups ext4 defaults 0 0
保存並掛載 LV:
# mount -a
# mount | grep home
掛載邏輯卷
在涉及到 LV 的實際使用時,你還需要按照曾在本系列第八講:管理用戶和用戶組中講解的那樣,為其設置合適的 ugo+rwx
。
總結
本文介紹了 邏輯卷管理,一個用於管理可擴展存儲設備的多功能工具。與 RAID(曾在本系列講解過的 第六講:組裝分區為RAID設備——創建和管理系統備份)結合使用,你將同時體驗到(LVM 帶來的)可擴展性和(RAID 提供的)冗餘。
在這類的部署中,你通常會在 RAID
上發現 LVM
,這就是說,要先配置好 RAID 然後它在上面配置 LVM。
如果你對本問有任何的疑問和建議,可以直接在下方的評論區告訴我們。
via: http://www.tecmint.com/manage-and-create-lvm-parition-using-vgcreate-lvcreate-and-lvextend/
作者:Gabriel Cánepa 譯者:martin2011qi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive