由於2016年2月2日起生效的LFCS考試要求變更,我們在此新增必要的主題到已發佈的LFCS系列。為了準備這次考試,我們強烈建議您也使用LFCE系列。

在安裝Linux系統時,最重要的決定之一是為系統文件、用戶目錄和其他內容分配存儲空間的量。如果在這一點上出錯,擴展已用完空間的分區可能會很麻煩且有些風險。
邏輯卷管理(也稱為LVM)已成為大多數(如果不是全部)Linux發行版安裝的默認選項,相較於傳統的分區管理,它具有許多優勢。也許LVM最突出的特點是,它允許對邏輯分卷進行隨意調整(縮小或擴大)而不需要太多麻煩。
LVM的結構包括:
- 將一個或多個整個硬盤或分區配置為物理卷(PVs)。
- A volume group (VG) is created using one or more physical volumes. You can think of a volume group as a single storage unit.
- 然後可以在卷組中創建多個邏輯卷。每個邏輯卷在某種程度上相當於傳統的分區-具有可以隨意調整大小的優勢,正如我們之前提到的。
在本文中,我們將使用每個8 GB的三個磁碟(/dev/sdb、/dev/sdc和/dev/sdd)來創建三個物理卷。您可以直接在設備上創建PV,也可以首先進行分區。
雖然我們選擇了第一種方法,但如果您決定採用第二種方法(如本系列的第4部分-在Linux中創建分區和文件系統中所解釋的),請確保將每個分區配置為類型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的磁碟:

當谈到創建邏輯卷時,必須考慮當前和未來的需求來分配空間。一般來說,根據每個邏輯卷的用途來命名是被認為是好做法的。
例如,讓我們創建兩個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 路徑行)。在每個邏輯卷可以使用之前,我們需要在它上面創建一個文件系統。
在此我們以ext4作為示例,因為它讓我們既能增大也能減少每個LV的大小(相比之下xfs只允許增大大小):
# mkfs.ext4 /dev/vg00/vol_projects # mkfs.ext4 /dev/vg00/vol_backups
在下一節中,我們將解釋當有需要時如何調整邏輯卷的大小和添加額外的 physicall storage space。
調整邏輯卷大小和擴展卷組
現在想像以下情境。你的 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

為每個 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
權限,如本系列中的 第 8 部分 – 在 Linux 中管理用戶和組 所解釋。
總結
在本文中,我們介紹了 邏輯卷管理,这是一种用于管理存储设备并提供可扩展性的多功能工具。与本系列中第 6 部分 – 在 Linux 中创建和管理 RAID所解釋的 RAID 结合使用时,您可以享有 LVM 提供的可扩展性以及 RAID 提供的冗余性。
在这种设置中,您通常会在 LVM 上找到 RAID,即先配置 RAID,然後在其上配置 LVM。
如果您对本篇文章有任何問題,或者有建議可以改進,欢迎使用下面的评论区與我們聯繫。
Source:
https://www.tecmint.com/manage-and-create-lvm-parition-using-vgcreate-lvcreate-and-lvextend/