LVM 概念、術語和操作簡介

簡介

LVM,或稱為 Logical Volume Management,是一種存儲設備管理技術,使用戶可以將組件存儲設備的物理佈局進行池化和抽象,以便進行靈活的管理。利用 裝置映射器 Linux 內核框架,目前的版本 LVM2 可以將現有的存儲設備收集到組中,並根據需要從組合空間分配邏輯單元。

LVM 的主要優勢包括增加的抽象性、靈活性和控制性。邏輯卷可以具有有意義的名稱,如“數據庫”或“根備份”。卷還可以根據空間需求動態調整大小,在運行系統中在池中的物理設備之間遷移或導出。LVM 還提供了快照、分區和鏡像等高級功能。

在本指南中,您將學習 LVM 的工作原理,並練習在裸機上快速啟動和運行的基本命令。

LVM 架構和術語

在深入研究 LVM 管理命令之前,了解 LVM 如何組織存儲設備以及它使用的一些術語是很重要的。

LVM 存儲管理結構

LVM 通過在物理存儲設備之上進行抽象層層疊加來實現功能。LVM 使用的基本層次,從最原始開始,分別是:

  • 物理卷: 物理卷的 LVM 工具前綴為 pv...。這些物理卷是磁盤塊設備或其他類似磁盤的設備(例如,由設備映射器創建的其他設備,如 RAID 數組),並被 LVM 用作更高層次抽象的原始構建材料。物理卷是常規存儲設備。LVM 會向設備寫入標頭以分配它進行管理。

  • 卷組: 卷組的 LVM 工具前綴為 vg...
    LVM 將物理卷組合成稱為卷組的存儲池。卷組抽象化了底層設備的特性,並作為一個統一的邏輯設備,具有組成物理卷的合併存儲容量。

  • 邏輯卷:邏輯卷的 LVM 實用程式前綴是 lv...,通用 LVM 實用程式可能以 lvm... 開頭。卷組可以被切割成任意數量的邏輯卷。邏輯卷在功能上等同於物理磁盤上的分割,但更具靈活性。邏輯卷是用戶和應用程序將與之交互的主要組件。

LVM 可用於將物理卷組合併成卷組,以統一系統中可用的存儲空間。然後,管理員可以將卷組分割為任意的邏輯卷,這些邏輯卷充當靈活的分割。

理解 Extents

每個卷組中的每個卷都被分成稱為extent的小固定大小塊。extent的大小由卷組決定。組內的所有卷都符合相同的extent大小。

物理卷上的extents稱為物理extents,而邏輯卷的extents則稱為邏輯extents。邏輯卷是LVM在邏輯和物理extents之間維護的映射。由於這種關係,extent大小代表LVM可以分配的最小空間。

Extents是LVM靈活性和功能的基礎。LVM將呈現為統一設備的邏輯extents不必映射到連續的物理extents。LVM可以在不中斷用戶的情況下複製和重新組織組成邏輯卷的物理extents。邏輯卷也可以通過添加或刪除extents來擴展或縮小。

常見用例

現在您已經熟悉LVM使用的一些術語和結構,可以探索一些常見的LVM使用方式。您將從使用兩個物理磁盤形成四個邏輯卷的流程開始。

將物理設備標記為物理卷

從掃描系統中 LVM 可訪問和管理的塊設備開始。您可以使用以下命令執行此操作:

  1. sudo lvmdiskscan

該命令的輸出將顯示 LVM 可與之交互的所有可用塊設備:

Output
/dev/ram0 [ 64.00 MiB] /dev/sda [ 200.00 GiB] /dev/ram1 [ 64.00 MiB] . . . /dev/ram15 [ 64.00 MiB] /dev/sdb [ 100.00 GiB] 2 disks 17 partitions 0 LVM physical volume whole disks 0 LVM physical volumes

在此示例中,請注意當前有兩個磁盤和 17 個分區。這些分區主要是系統中用作性能增強的 RAM 磁盤/dev/ram* 分區。此示例中的磁盤是 /dev/sda(具有 200G 空間)和 /dev/sdb(具有 100G)

警告:請務必仔細檢查您打算在 LVM 中使用的設備是否已經有任何重要數據寫入。在 LVM 中使用這些設備將覆蓋當前內容。如果您的伺服器上有重要數據,請在繼續之前進行備份。

現在您知道要使用的物理設備,請使用 pvcreate 命令將它們標記為 LVM 中的物理卷:

  1. sudo pvcreate /dev/sda /dev/sdb
Output
Physical volume "/dev/sda" successfully created Physical volume "/dev/sdb" successfully created

這將向設備寫入 LVM 標頭,指示它們已準備好添加到卷組中。

運行 pvs 命令來驗證 LVM 是否已註冊這些物理卷:

  1. sudo pvs
Output
PV VG Fmt Attr PSize PFree /dev/sda lvm2 --- 200.00g 200.00g /dev/sdb lvm2 --- 100.00g 100.00g

請注意,這兩個裝置都在 PV 欄位下,該欄位代表物理卷。

將物理卷添加到卷組

現在您已經從您的裝置創建了物理卷,您可以創建一個卷組。大多數情況下,您在系統中只有一個卷組,以便在分配時最大程度地提高靈活性。以下卷組示例名為 LVMVolGroup。您可以根據需要命名您的卷組。

要創建卷組並將您的兩個物理卷添加到其中,請運行:

  1. sudo vgcreate LVMVolGroup /dev/sda /dev/sdb
Output
Volume group "LVMVolGroup" successfully created

再次檢查 pvs 輸出,將指示您的物理卷現在與新的卷組相關聯:

  1. sudo pvs
Output
PV VG Fmt Attr PSize PFree /dev/sda LVMVolGroup lvm2 a-- 200.00g 200.00g /dev/sdb LVMVolGroup lvm2 a-- 100.00g 100.00g

使用 vgs 列出卷組的簡短摘要:

  1. sudo vgs
Output
VG #PV #LV #SN Attr VSize VFree LVMVolGroup 2 0 0 wz--n- 299.99g 299.99g

您的卷組目前具有兩個物理卷,零個邏輯卷,並具有底層裝置的組合容量。

從卷組池中創建邏輯卷

现在您有一个可用的卷组,可以将其用作从中分配逻辑卷的池。与传统分区不同,使用逻辑卷时,您无需了解卷的布局,因为LVM会为您映射和处理这一切。您只需要提供卷的大小和名称。

在以下示例中,您将从卷组创建四个单独的逻辑卷:

  • 10G“projects”卷
  • 5G“www”卷用于Web内容
  • 20G“db”卷用于数据库
  • “workspace”卷,将填充剩余空间

要创建逻辑卷,请使用lvcreate命令。您必须传入要提取的卷组,并可以使用-n选项命名逻辑卷。要直接指定大小,可以使用-L选项。如果相反,您希望按范围数量指定大小,则可以使用-l选项。

使用-L选项创建前三个逻辑卷:

  1. sudo lvcreate -L 10G -n projects LVMVolGroup
  2. sudo lvcreate -L 5G -n www LVMVolGroup
  3. sudo lvcreate -L 20G -n db LVMVolGroup
Output
Logical volume "projects" created. Logical volume "www" created. Logical volume "db" created.

您可以通过从vgs命令中选择自定义输出来查看逻辑卷及其与卷组的关系:

  1. sudo vgs -o +lv_size,lv_name
Output
VG #PV #LV #SN Attr VSize VFree LSize LV LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 10.00g projects LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 5.00g www LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 20.00g db

在此示例中,您添加了输出的最后两列。它指示分配给逻辑卷的空间量。

現在,您可以使用 `-l` 標誌將餘下的空間分配給 "workspace" 卷,該標誌在 extents 中運作。您還可以提供百分比和單位以更好地傳達您的意圖。在此示例中,分配剩餘的空閒空間,因此您可以傳入 100%FREE:

  1. sudo lvcreate -l 100%FREE -n workspace LVMVolGroup
Output
Logical volume "workspace" created.

使用自定義 vgs 命令檢查卷組信息,請注意您已使用完所有可用的空間:

  1. sudo vgs -o +lv_size,lv_name
Output
VG #PV #LV #SN Attr VSize VFree LSize LV LVMVolGroup 2 4 0 wz--n- 299.99g 0 10.00g projects LVMVolGroup 2 4 0 wz--n- 299.99g 0 5.00g www LVMVolGroup 2 4 0 wz--n- 299.99g 0 20.00g db LVMVolGroup 2 4 0 wz--n- 299.99g 0 264.99g workspace

已創建 workspace 卷,並且 LVMVolGroup 卷組已完全分配。

格式化和掛載邏輯卷

現在您有了邏輯卷,可以像正常的塊設備一樣使用它們。

這些邏輯設備在 /dev 目錄中可用,就像其他存儲設備一樣。您可以在兩個地方訪問它們:

  • /dev/volume_group_name/logical_volume_name
  • /dev/mapper/volume_group_name-logical_volume_name

要使用 Ext4 文件系統格式化您的四個邏輯卷,運行以下命令:

  1. sudo mkfs.ext4 /dev/LVMVolGroup/projects
  2. sudo mkfs.ext4 /dev/LVMVolGroup/www
  3. sudo mkfs.ext4 /dev/LVMVolGroup/db
  4. sudo mkfs.ext4 /dev/LVMVolGroup/workspace

或者,您可以運行以下命令:

  1. sudo mkfs.ext4 /dev/mapper/LVMVolGroup-projects
  2. sudo mkfs.ext4 /dev/mapper/LVMVolGroup-www
  3. sudo mkfs.ext4 /dev/mapper/LVMVolGroup-db
  4. sudo mkfs.ext4 /dev/mapper/LVMVolGroup-workspace

格式化後,創建掛載點:

  1. sudo mkdir -p /mnt/{projects,www,db,workspace}

然後將邏輯卷掛載到適當的位置:

  1. sudo mount /dev/LVMVolGroup/projects /mnt/projects
  2. sudo mount /dev/LVMVolGroup/www /mnt/www
  3. sudo mount /dev/LVMVolGroup/db /mnt/db
  4. sudo mount /dev/LVMVolGroup/workspace /mnt/workspace

為了使掛載持久化,請使用您喜歡的文本編輯器將它們添加到/etc/fstab文件中。 以下示例使用nano

  1. sudo nano /etc/fstab
/etc/fstab
. . .

/dev/LVMVolGroup/projects /mnt/projects ext4 defaults,nofail 0 0
/dev/LVMVolGroup/www /mnt/www ext4 defaults,nofail 0 0
/dev/LVMVolGroup/db /mnt/db ext4 defaults,nofail 0 0
/dev/LVMVolGroup/workspace /mnt/workspace ext4 defaults,nofail 0 0

編輯完您的文件後,保存並退出。 如果您使用nano,請按CTRL+c,然後按y,然後按ENTER

操作系統現在應該會在啟動時自動掛載LVM邏輯卷。

結論

您現在已經了解LVM管理的各個組件,以創建一個靈活的存儲系統,以及如何在LVM設置中啟動和運行存儲設備。

要了解更多關於使用LVM的信息,請查看我們的使用LVM與Ubuntu 18.04指南

Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-lvm-concepts-terminology-and-operations