跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文件 / 儲存管理指南 / 邏輯磁碟區 (LVM) / LVM 組態
適用範圍 SUSE Linux Enterprise Server 12 SP5

5 LVM 組態

本章介紹邏輯磁碟區管理員 (LVM) 的原理及其基本功能,以及令其在多種狀況下都能發揮效用的基本功能。YaST LVM 組態可透過 YaST 進階磁碟分割程式來完成。這個磁碟分割工具讓您編輯和刪除現有磁碟分割,以及建立應該與 LVM 一起使用的新磁碟分割。

警告
警告:風險

使用 LVM 可能會增加風險,如遺失資料。這些危險也包括應用程式當機、電源中斷和錯誤指令。執行 LVM 或重新設定磁碟區前,請儲存您的資料。決不要在沒有備份的情形下工作。

5.1 瞭解邏輯磁碟區管理員

LVM 支援在多個實體磁碟區 (硬碟、分割區、LUN) 之間彈性地分配硬碟空間。在安裝過程中,僅當完成首次磁碟分割時需要變更硬碟空間的分割,由此開發了此工具。因為要修改正在執行之系統上的分割區很困難,LVM 提供了儲存空間的虛擬集區 (磁碟區群組,或稱之 VG)。需要時,可從虛擬集區建立邏輯磁碟區 (LV)。作業系統可以存取這些 LV,而不是存取實體分割區。磁碟區群組可以延伸至一個以上的磁碟,因此數個磁碟或是數個磁碟的某些部份可能會構成單一的 VG。借此,LVM 提供了一種從實體磁碟空間進行擷取的方法,允許使用比實體磁碟重新分割更為簡單和安全的方式來變更分割。

圖形 5.1 「實體分割與 LVM」比較實體分割 (左邊) 與 LVM 分割 (右邊)。在左邊,單一個磁碟已分割為三個實體分割區 (PART),每一個都會指定掛接點 (MP),讓作業系統存取它們。在右邊,已經個別將兩個磁碟分割成兩個及三個實體分割區。已經定義兩個 LVM 磁碟區群組 (VG1 與 VG2)。VG 1 包含 DISK 1 的兩個磁碟區以及 DISK 2 的一個磁碟區。VG 2 包含 DISK 2 其餘的兩個磁碟區。

實體分割與 LVM
圖 5.1︰ 實體分割與 LVM

在 LVM 中,併入一個磁碟區群組中的實體磁碟分割區稱為實體磁碟區 (PV)。在圖形 5.1 「實體分割與 LVM」中的磁碟區群組中,已經定義 4 個邏輯磁碟區 (LV 1 至 LV 4),作業系統可以透過關聯的掛接點 (MP) 來使用這些邏輯磁碟區。在不同的邏輯磁碟區之間的邊緣,不需要對齊任何分割區的邊緣。請參閱此範例中 LV 1 與 LV 2 之間的邊緣。

LVM 功能︰

  • 數個硬碟或分割區可以在大的邏輯磁碟區結合成一個。

  • 如果組態適用,當可用空間耗盡時,可以擴大 LV (如 /usr)。

  • 使用 LVM,就可以在執行的系統中新增硬碟或 LV。然而,這種作法需要能執行此動作的隨插即用式硬體。

  • 可以啟動分割模式,將邏輯磁碟區的資料流分散至數個實體磁碟區。如果這些實體磁碟區位於不同的磁碟上,這可以改善讀寫效能,就像 RAID 0 一樣。

  • 快照功能能夠讓執行系統中的備份 (特別是伺服器) 成為一致。

注意
注意:LVM 和 RAID

儘管 LVM 也支援 0/1/4/5/6 層級的 RAID,但建議使用 MD RAID (請參閱第 7 章 「軟體 RAID 組態)。不過,LVM 在 RAID 0 和 1 下也可以正常運作,因為 RAID 0 類似於通用邏輯磁碟區管理 (各個邏輯區塊會對應至實體裝置上的區塊)。在 RAID 1 基礎上使用的 LVM 可以追蹤鏡像同步,並且完全能夠管理同步程序。使用更高的 RAID 層級時,需要透過一個管理精靈來監控附加磁碟的狀態,並在磁碟陣列出現問題時通知管理員。LVM 便包含這種精靈,但在裝置故障等例外情況下,該精靈無法正常運作。

警告
警告:IBM Z:LVM 根檔案系統

如果您將系統的根檔案系統設定在 LVM 或軟體 RAID 陣列中,則必須將 /boot 置於獨立的非 LVM 或非 RAID 分割區上,否則系統將無法開機。此類分割區的建議大小為 500 MB,建議的檔案系統為 Ext4。

使用 LVM 的這些功能,對於使用頻繁的家用個人電腦或小型伺服器而言,在效能上可以看到改善。如果您在資料庫、音樂歸檔或使用者目錄中的資料會一直累積,LVM 就是非常適用的工具。可允許比實體硬碟還大的檔案系統。不過,請記住使用 LVM 與使用傳統分割區是不同的。

您可以使用 YaST 磁碟分割程式來管理新的或現有的 LVM 儲存物件。如需設定 LVM 的指示及詳細資訊,請參閱官方網站的 LVM HOWTO

5.2 建立磁碟區群組

一個 LVM 磁碟區群組 (VG) 可將多個 Linux LVM 分割區組合到一個邏輯空間池中。您可以從群組的可用空間中切出邏輯磁碟區。群組中的 Linux LVM 分割區可以位於相同磁碟也可以位於不同的磁碟上。您可以新增分割區或整個磁碟來擴充群組的大小。

若要使用整個磁碟,磁碟不得包含任何分割區。使用分割區時,一定不能將它們掛接。YaST 在將分割區新增至 VG 時,會自動將它們的分割區類型變更為 0x8E Linux LVM

  1. 啟動 YaST 並開啟磁碟分割程式

  2. 如果您需要重新設定現有分割設定,請依如下步驟操作。如需詳細資訊,請參閱第 12.1 節 「使用 YaST 磁碟分割程式」。如果您只是想利用現有的未使用磁碟或分割區,請跳過此步驟。

    警告
    警告:未分割磁碟上的實體磁碟區

    可以使用某個未分割的磁碟做為實體磁碟區 (PV),前提是該磁碟不是安裝作業系統的磁碟,也不是作業系統從中開機的磁碟。

    由於未分割的磁碟在系統層級顯示為未使用,因此很容易將其覆寫,或以錯誤的方式對其進行存取。

    1. 若要使用已包含分割區的整個硬碟,請刪除該磁碟上的所有分割區。

    2. 若要使用目前已掛接的分割區,請將其卸載。

  3. 在左側面板中,選取磁碟區管理

    右側面板中即會開啟一份現有磁碟區群組清單。

  4. 在「磁碟區管理」頁面左下方,按一下新增 › 磁碟區群組

    Image
  5. 按如下所示定義磁碟區群組︰

    1. 指定磁碟區群組名稱

      如果您要在安裝時建立磁碟區群組,建議為將包含 SUSE Linux Enterprise Server 系統檔案的磁碟區群組指定 system 名稱。

    2. 指定實體範圍大小

      實體範圍大小定義磁碟區群組中實體區塊的大小。在卷冊群組中的所有磁碟空間都會以此大小的區塊來處理。值可以是 1 KB 到 16 GB 範圍內 2 的次方。此值通常設定為 4 MB。

      在 LVM1 中,4 MB 實體範圍允許的最大 LV 大小是 256 GB,因為該 LVM 最多支援每個 LV 有 65534 個範圍。在 SUSE Linux Enterprise Server 上使用的 LVM2 不會限制實體範圍數量。範圍數量較大不會影響邏輯磁碟區的 I/O 效能,但會降低 LVM 工具的速度。

      重要
      重要:實體範圍大小

      在單個 VG 中不應混合使用不同的實體範圍大小。在進行初始設定後,就不應當再修改範圍。

    3. 可用實體磁碟區清單中,選取要用來組成此磁碟區群組的 Linux LVM 分割區,然後按一下新增以將它們移至選定實體磁碟區清單。

    4. 按一下完成

      新群組便會出現在磁碟區群組清單中。

  6. 在「磁碟區管理」頁面中按下一步,確認新的磁碟區群組有列出,然後按一下完成

  7. 若要檢查哪些實體裝置屬於磁碟區群組,請於任一時間在執行中系統內開啟 YaST 磁碟分割程式,然後按一下磁碟區管理 › 編輯 › 實體裝置。按一下中止離開此螢幕。

    名為 DATA 的磁碟區群組中的實體磁碟區
    圖 5.2︰ 名為 DATA 的磁碟區群組中的實體磁碟區

5.3 建立邏輯磁碟區

邏輯磁碟區會提供一個與硬碟提供的空間池相似的空間池。若要讓此空間可用,需要定義邏輯磁碟區。邏輯磁碟區類似於一般分割區,您可以將其格式化和掛接。

使用 YaST 磁碟分割程式可從現有磁碟區群組建立邏輯磁碟區。至少指定一個邏輯磁碟區給每個磁碟區群組。可以視需要建立新的邏輯磁碟區,直到磁碟區群組中的所有可用空間都用完為止。可以選擇性地簡易佈建一個 LVM 邏輯磁碟區,以便建立大小超出可用空間的邏輯磁碟區 (如需詳細資訊,請參閱第 5.3.1 節 「簡易佈建的邏輯磁碟區」)。

  • 一般磁碟區: (預設) 系統會立即配置磁碟區的空間。

  • 簡易池: 邏輯磁碟區是保留給簡易磁碟區使用的空間池。簡易磁碟區可以視需要從簡易池中配置它們所需的空間。

  • 簡易磁碟區: 建立為疏鬆磁碟區的磁碟區。該磁碟區會視需要從簡易池配置所需的空間。

  • 鏡像磁碟區: 建立的磁碟區中包含定義數量的鏡像。

程序 5.1︰ 設定邏輯磁碟區
  1. 啟動 YaST 並開啟磁碟分割程式

  2. 在左側面板中,選取磁碟區管理。右側面板中即會開啟一份現有磁碟區群組清單。

  3. 選取要在其中建立磁碟區的磁碟區群組,然後選擇新增 › 邏輯磁碟區

  4. 提供磁碟區的名稱,然後選擇一般磁碟區 (如需設定簡易佈建磁碟區的資訊,請參閱第 5.3.1 節 「簡易佈建的邏輯磁碟區」)。按下一步繼續。

    Image
  5. 指定磁碟區的大小以及是否使用多個等量磁區。

    如果使用分割的磁碟區,資料將在多個實體磁碟區之間分配。如果這些實體磁碟區是在不同的硬碟上,通常可以改善讀寫效能 (像 RAID 0 一樣)。可用等量磁碟區的最大數量就是實體磁碟區的數量。預設值 1 表示不使用多個等量磁碟區。

    Image
  6. 選擇磁碟區的角色。您在此處所做的選擇只會影響即將開啟之對話方塊的預設值。它們可以在下一步中變更。如果不確定,請選擇原始磁碟區 (未格式化)

    Image
  7. 格式化選項下,選取格式化分割區,然後選取檔案系統選項功能表的內容視檔案系統而定。一般不需要變更預設值。

    掛接選項下,選取掛接分割區,然後選取掛接點。按一下Fstab 選項可為磁碟區新增特殊掛接選項。

  8. 按一下完成

  9. 下一步,確認變更有列出,然後按一下完成

5.3.1 簡易佈建的邏輯磁碟區

您可以選擇性地對 LVM 邏輯磁碟區進行簡易佈建。簡易佈建可讓您建立預訂大小超過可用空間的邏輯磁碟區。您可以建立一個簡易池,來包含保留的供任意數量簡易磁碟區使用的未使用空間。簡易磁碟區將建立為疏鬆磁碟區,並且會視需要從簡易池配置空間。簡易池可以在需要時動態擴充,以具成本效益的方式來配置儲存空間。簡易佈建磁碟區還支援快照 (可以使用 Snapper 進行管理),如需詳細資訊,請參閱第 7 章 「使用 Snapper 進行系統復原和快照管理

若要設定簡易佈建的邏輯磁碟區,請依程序 5.1 「設定邏輯磁碟區」所述操作。在選擇磁碟區類型時,請不要選擇一般磁碟區,而應選擇簡易磁碟區簡易池

簡易池

邏輯磁碟區是保留給簡易磁碟區使用的空間池。簡易磁碟區可以視需要從簡易池中配置它們所需的空間。

簡易磁碟區

建立為疏鬆磁碟區的磁碟區。該磁碟區會視需要從簡易池配置所需的空間。

重要
重要:叢集中簡易佈建的磁碟區

若要在叢集中使用簡易佈建磁碟區,使用它的簡易池和簡易磁碟區必須在單個叢集資源中管理。如此,簡易磁碟區和簡易池便可永遠獨佔地掛接在同一個節點上。

5.3.2 建立鏡像磁碟區

可以建立包含多個鏡像的邏輯磁碟區。LVM 可確保將寫入基礎實體磁碟區的資料鏡像到不同的實體磁碟區。因此,即使某個實體磁碟區當機,您仍可以存取邏輯磁碟區上的資料。LVM 還保留一個記錄檔案用於管理同步程序。記錄中包含哪些磁碟區區域目前正在與鏡像同步的相關資訊。依預設,記錄會儲存在磁碟上,並且與鏡像位於不同的磁碟 (如果可能的話)。不過,您可以為記錄指定一個不同的位置,例如暫時性記憶體。

目前可以使用兩種類型的鏡像實作︰「正常」的 (非 raid) mirror 邏輯磁碟區和 raid1 邏輯磁碟區。

建立鏡像邏輯磁碟區後,可以對這些磁碟區執行標準操作,例如啟用、擴充和移除。

5.3.2.1 設定鏡像非 raid 邏輯磁碟區

若要建立鏡像磁碟區,請使用 lvcreate 指令。以下範例會建立一個 500 GB 的邏輯磁碟區,其中包含兩個名為 lv1 的鏡像,並使用磁碟區群組 vg1

lvcreate -L 500G -m 2 -n lv1 vg1

此類邏輯磁碟區是一種線性磁碟區 (無分割),可提供檔案系統的三個副本。m 選項指定鏡像的計數。L 選項指定邏輯磁碟區的大小。

邏輯磁碟區會分割成預設大小為 512 KB 的區域。如果需要不同大小的區域,請使用 -R 選項,後接所需的區域大小 (以 MB 為單位)。或者,可以在 lvm.conf 檔案中編輯 mirror_region_size 選項,以設定所需的區域大小。

5.3.2.2 設定 raid1 邏輯磁碟區

由於 LVM 支援 RAID,您可以使用 RAID1 來實作鏡像。相比非 raid 鏡像,這種實作可提供以下優勢︰

  • LVM 為每個鏡像影像維護一個完全備援的點陣圖區,從而提高其錯誤處理能力。

  • 可以暫時性地從陣列中分割出鏡像影像,然後重新合併回去。

  • 陣列可以處理暫時性故障。

  • LVM RAID 1 實作支援快照。

但另一方面,這種類型的鏡像實作不允許在叢集磁碟區群組中建立邏輯磁碟區。

若要使用 RAID 建立鏡像磁碟區,請執行以下指令

lvcreate --type raid1 -m 1 -L 1G -n lv1 vg1

其中,各選項/參數的意義如下︰

  • --type︰需要指定 raid1,否則該指令將使用隱含區段類型 mirror,並建立非 raid 鏡像。

  • -m︰指定鏡像的計數。

  • -L︰指定邏輯磁碟區的大小。

  • -n︰使用此選項可以指定邏輯磁碟區的名稱。

  • vg1︰邏輯磁碟區使用之磁碟區群組的名稱。

LVM 將為陣列中的每個資料磁碟區建立具有一個範圍大小的邏輯磁碟區。如果您有兩個鏡像磁碟區,LVM 將另外建立兩個磁碟區用於儲存中繼資料。

建立 RAID 邏輯磁碟區之後,您可以像使用普通邏輯磁碟區一樣使用該磁碟區。可以將它啟用、擴充,等等。

5.4 自動啟動非根 LVM 磁碟區群組

非根 LVM 磁碟區群組的啟用行為在 /etc/lvm/lvm.conf 檔案中控制,同時受控於 auto_activation_volume_list 參數。該參數預設為空白,即所有磁碟區都會啟用。若只想啟用某些磁碟區群組,請新增名稱並用引號括住,同時以逗號分隔,例如︰

auto_activation_volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]

如果在 auto_activation_volume_list 參數中定義了清單,將會發生以下情況︰

  1. 首先會依據此清單檢查每個邏輯磁碟區。

  2. 如果兩者不符,則不啟用該邏輯磁碟區。

依預設,在 Dracut 重新啟動系統時,非根 LVM 磁碟區群組會自動啟用。此參數可讓您在系統重新啟動時啟動所有磁碟區群組,或者僅啟動指定的非根 LVM 磁碟區群組。

5.5 調整現有磁碟區群組的大小

您可以於任何時間在執行中系統內新增更多實體磁碟區,使磁碟區群組提供的空間加以擴充,而無需中斷服務。這一特性允許您將邏輯磁碟區新增至群組或擴充現有磁碟區的大小,如第 5.6 節 「調整邏輯磁碟區的大小」所述。

您還可以透過移除實體磁碟區來縮小磁碟區群組的大小。YaST 只允許移除目前未使用的實體磁碟區。若要瞭解哪些實體磁碟區目前在使用中,請執行以下指令。PE Ranges 欄中列出的分割區 (實體磁碟區) 是使用中的分割區 (實體磁碟區)︰

tux > sudo pvs -o vg_name,lv_name,pv_name,seg_pe_ranges
root's password:
  VG   LV    PV         PE Ranges
             /dev/sda1
  DATA DEVEL /dev/sda5  /dev/sda5:0-3839
  DATA       /dev/sda5
  DATA LOCAL /dev/sda6  /dev/sda6:0-2559
  DATA       /dev/sda7
  DATA       /dev/sdb1
  DATA       /dev/sdc1
  1. 啟動 YaST 並開啟磁碟分割程式

  2. 在左側面板中,選取磁碟區管理。右側面板中即會開啟一份現有磁碟區群組清單。

  3. 選取要變更的磁碟區群組,然後按一下調整大小

    Image
  4. 請執行下列其中一個步驟︰

    • 新增: 透過將一或多個實體磁碟區 (LVM 分割區) 從可用實體磁碟區清單移至選定實體磁碟區清單,可以擴大磁碟區群組的大小。

    • 移除: 透過將一或多個實體磁碟區 (LVM 分割區) 從選定實體磁碟區清單移至可用實體磁碟區清單,可以縮小磁碟區群組的大小。

  5. 按一下完成

  6. 下一步,確認變更有列出,然後按一下完成

5.6 調整邏輯磁碟區的大小

如果磁碟區群組中有未使用的可用空間可供使用,您可以增大邏輯磁碟區以提供更多可用空間。您還可以縮小某個磁碟區的大小,以便釋放磁碟區群組中可供其他邏輯磁碟區使用的空間。

注意
注意:線上調整大小

YaST 在縮小磁碟區的大小時,還會自動調整其檔案系統的大小。目前掛接的磁碟區是否可以線上 (即處於掛接狀態時) 調整大小,取決於其檔案系統。Btrfs、XFS、Ext3 和 ReiserFS 支援線上增大檔案系統。

只有 Btrfs 支援線上縮小檔案系統。若要縮小 XFS、Ext2/3/4 和 ReiserFS 磁碟區,需要將它們卸載。採用 XFS 格式的磁碟區無法縮小,因為 XFS 不支援檔案系統縮減。

  1. 啟動 YaST 並開啟磁碟分割程式

  2. 在左側面板中,選取磁碟區管理。右側面板中即會開啟一份現有磁碟區群組清單。

  3. 選取要變更的邏輯磁碟區,然後按一下調整大小

    Image
  4. 使用下列選項之一設定所需大小︰

    • 最大大小: 將邏輯磁碟區的大小擴充為使用磁碟區群組中剩餘的所有空間。

    • 最小大小: 將邏輯磁碟區的大小縮小為資料和檔案系統中繼資料佔用的大小。

    • 自訂大小: 為磁碟區的大小指定新值。值必須介於上面列出的最小值與最大值之間。請使用 K、M、G、T 分別表示 KB、MB、GB 和 TB (例如 20G)。

  5. 按一下確定

  6. 下一步,確認變更有列出,然後按一下完成

5.7 刪除磁碟區群組或邏輯磁碟區

警告
警告:資料損失

刪除磁碟區群組會損毀其每個成員分割區中的所有資料。刪除邏輯磁碟區會損毀儲存在磁碟區中的所有資料。

  1. 啟動 YaST 並開啟磁碟分割程式

  2. 在左側面板中,選取磁碟區管理。右側面板中即會開啟一份現有磁碟區群組清單。

  3. 選取要移除的磁碟區群組或邏輯磁碟區,然後按一下刪除

  4. 根據您的選擇,系統會顯示警告對話方塊。請按一下進行確認。

  5. 下一步,確認刪除的磁碟區群組 (刪除項目以紅色字型顯示) 有列出,然後按一下完成

5.8 使用 LVM 指令

如需使用 LVM 指令的資訊,請參閱下表中所述指令的 man 頁面。執行所有指令都需要有 root 權限。請使用 sudo COMMAND (建議採用此方式),或者直接以 root 身分執行這些指令。

LVM 指令
pvcreate 裝置

啟始化裝置 (例如 /dev/sdb1),供 LVLM 用做實體磁碟區。如果指定的裝置上存在任何檔案系統,將會出現警告。請記住,僅當已安裝 blkid 時 (預設已安裝),pvcreate 才會檢查現有檔案系統。如果 blkid 不可用,pvcreate 不會產生任何警告,因此您可能會在未收到任何警告的情況下遺失檔案系統。

pvdisplay 裝置

顯示 LVM 實體磁碟區的相關資訊,例如邏輯磁碟區中目前是否正在使用該磁碟區。

vgcreate -c y VG_名稱 裝置 1 [裝置 2...]

使用一或多個指定的裝置建立叢集磁碟區群組。

vgcreate --activationmode 啟用模式 VG_名稱

設定磁碟區群組啟用模式。您可以指定以下其中一個值︰

  • complete︰只能啟用不受缺少的實體磁碟區影響的邏輯磁碟區,即使特定的邏輯磁碟區能夠容許這種故障。

  • degraded︰預設的啟用模式。如果提供了足夠的備援層級來啟用某個邏輯磁碟區,則即使缺少某些實體磁碟區,也能啟用該邏輯磁碟區。

  • partial︰即使缺少某些實體磁碟區,LVM 也會嘗試啟用磁碟區群組。如果某個非備援邏輯磁碟區缺少重要的實體磁碟區,則通常無法啟用該邏輯磁碟區,而是將它做為錯誤目標進行處理。

vgchange -a [ey|n] VG_名稱

為輸入/輸出啟動 (-a ey) 或取消啟動 (-a n) 磁碟區群組及其邏輯磁碟區。

啟用叢集中的某個磁碟區時,請務必使用 ey 選項。此選項預設用於載入程序檔中。

vgremove VG_名稱

移除磁碟區群組。使用此指令之前,移除邏輯磁碟區,然後取消啟動磁碟區群組。

vgdisplay VG_名稱

顯示指定磁碟區群組的相關資訊。

若要查看磁碟區群組的總體實體範圍,請輸入

vgdisplay VG_NAME | grep "Total PE"
lvcreate -L 大小 -n LV_名稱 VG_名稱

建立具有指定大小的邏輯磁碟區。

lvcreate -L 大小 --thinpool 池名稱 VG_名稱

從磁碟區群組 VG_NAME 建立具有指定大小的簡易池 myPool

以下範例會從磁碟區群組 LOCAL 建立大小為 5 GB 的簡易池︰

lvcreate -L 5G --thinpool myPool LOCAL
lvcreate -T VG_名稱/池名稱 -V 大小 -n LV_名稱

在池 POOL_NAME 中建立簡易邏輯磁碟區。以下範例會從磁碟區群組 LOCAL 上的 myPool 池建立 1 GB 的簡易磁碟區 myThin1

lvcreate -T LOCAL/myPool -V 1G -n myThin1
lvcreate -T VG_名稱/池名稱 -V 大小 -L 大小 -n LV_名稱

您也可以在一條指令中同時建立簡易池和簡易邏輯磁碟區︰

lvcreate -T LOCAL/myPool -V 1G -L 5G -n myThin1
lvcreate --activationmode 啟用模式 LV_名稱

設定邏輯磁碟區啟用模式。您可以指定以下其中一個值︰

  • complete︰僅當邏輯磁碟區的所有實體磁碟區均處於使用中狀態時,才能啟用該邏輯磁碟區。

  • degraded︰預設的啟用模式。如果提供了足夠的備援層級來啟用某個邏輯磁碟區,則即使缺少某些實體磁碟區,也能啟用該邏輯磁碟區。

  • partial︰即使缺少某些實體磁碟區,LVM 也會嘗試啟用磁碟區。如果邏輯磁碟區有一部分不可用,可能會導致資料遺失。此選項通常不使用,但在還原資料時,它可能會有用。

您也可以透過在 /etc/lvm/lvm.conf 中為 activation_mode 組態選項指定上述其中一個值,來指定啟用模式。

lvcreate -s [-L 大小] -n 快照磁碟區 來源磁碟區路徑 VG_名稱

建立指定邏輯磁碟區的快照磁碟區。如果未包括大小選項 (-L--size),則系統會將快照建立為簡易快照。

lvremove /dev/VG_名稱/LV_名稱

移除邏輯磁碟區。

使用此指令之前,請執行 umount 指令卸載邏輯磁碟區以將其關閉。

lvremove 快照磁碟區路徑

移除快照磁碟區。

lvconvert --merge 快照磁碟區路徑

將邏輯磁碟區回復為快照的版本。

vgextend VG_名稱 裝置

將指定的裝置 (實體磁碟區) 新增至現有磁碟區群組。

vgreduce VG_名稱 裝置

從現有磁碟區群組中移除指定的實體磁碟區。

確保實體磁碟區目前未由任何邏輯磁碟區使用。如果在使用中,您必須使用 pvmove 指令將資料移至另一個實體磁碟區。

lvextend -L 大小 /dev/VG_名稱/LV_名稱

擴充指定邏輯磁碟區的大小。此後,您還必須擴充檔案系統以利用新增加的可用空間。如需詳細資料,請參閱第 2 章 「調整檔案系統大小

lvreduce -L 大小 /dev/VG_名稱/LV_名稱

縮小指定邏輯磁碟區的大小。

在縮小磁碟區之前,請務必先縮小檔案系統的大小,否則會有遺失資料的風險。如需詳細資料,請參閱第 2 章 「調整檔案系統大小

lvrename /dev/VG_名稱/LV_名稱 /dev/VG_名稱/新_LV_名稱

重新命名現有 LVM 邏輯磁碟區,這不會變更磁碟區群組名稱。

提示
提示:建立磁碟區時繞過 udev

如果您要使用 LVM 而不是 udev 規則來管理 LV 裝置節點和符號連結,可以使用下列其中一種方法來禁止 udev 發出通知︰

  • /etc/lvm/lvm.conf 中設定 activation/udev_rules = 0activation/udev_sync = 0

    請注意,在 lvcreate 指令中指定 --nodevsync 的效果與設定 activation/udev_sync = 0 相同;仍需設定 activation/udev_rules = 0

  • 設定環境變數 DM_DISABLE_UDEV

    export DM_DISABLE_UDEV=1

    這也會禁止 udev 發出通知。此外,還會忽略 /etc/lvm/lvm.conf 中的所有 udev 相關設定。

5.8.1 使用指令調整邏輯磁碟區的大小

lvresizelvextendlvreduce 指令可用於調整邏輯磁碟區的大小。如需這些指令的語法及選項資訊,請參閱相應指令的 man 頁面。若要擴充 LV,VG 上必須有足夠多的未配置空間。

建議您使用 YaST 磁碟分割程式來增大或縮小邏輯磁碟區。使用 YaST 時,磁碟區中檔案系統的大小也會自動調整。

您雖然可以在 LV 處於使用中狀態時手動對其進行擴充或縮小,但若其上包含檔案系統,則無法如此操作。擴充或縮減 LV 不會自動修改磁碟區中檔案系統的大小。在那之後必須使用另一個指令來增大檔案系統。如需調整檔案系統大小的相關資訊,請參閱第 2 章 「調整檔案系統大小

手動調整 LV 大小時,請務必確保使用正確的順序︰

  • 若要擴充 LV,則必須先擴充 LV 然後再嘗試增大檔案系統。

  • 若要縮減 LV,則必須先縮減檔案系統然後再嘗試縮減 LV。

若要擴充邏輯磁碟區的大小︰

  1. 開啟終端機主控台。

  2. 如果邏輯磁碟區包含 Ext2 或 Ext4 檔案系統,則不支援線上增大,請將其卸下。如果它包含為虛擬機器 (例如 Xen VM) 代管的檔案系統,請先關閉該 VM。

  3. 在終端機主控台提示符處,輸入以下指令以增加邏輯磁碟區的大小︰

    sudo lvextend -L +SIZE /dev/VG_NAME/LV_NAME

    對於 SIZE,請指定您要新增到邏輯磁碟區的空間容量,例如 10 GB。以邏輯磁碟區的 Linux 路徑取代 /dev/VG_NAME/LV_NAME,例如 /dev/LOCAL/DATA。例如︰

    sudo lvextend -L +10GB /dev/vg1/v1
  4. 調整檔案系統的大小。如需詳細資料,請參閱第 2 章 「調整檔案系統大小

  5. 如果您已卸下了檔案系統,請重新掛接。

例如,將包含 (已裝載並啟用) Btrfs 的 LV 擴充 10 GB︰

sudo lvextend −L +10G /dev/LOCAL/DATA
sudo btrfs filesystem resize +10G /dev/LOCAL/DATA

若要縮小邏輯磁碟區的大小︰

  1. 開啟終端機主控台。

  2. 如果邏輯磁碟區不包含 Btrfs 檔案系統,請將其卸下。如果它包含為虛擬機器 (例如 Xen VM) 代管的檔案系統,請先關閉該 VM。請注意,包含 XFS 檔案系統之磁碟區的大小無法縮小。

  3. 調整檔案系統的大小。如需詳細資料,請參閱第 2 章 「調整檔案系統大小

  4. 在終端機主控台提示符處,輸入以下指令將邏輯磁碟區的大小縮小為檔案系統的大小︰

    sudo lvreduce /dev/VG_NAME/LV_NAME
  5. 如果您已卸載檔案系統,請重新掛接。

例如,若要將包含 Btrfs 的 LV 縮減 5 GB︰

sudo btrfs filesystem resize -size 5G /dev/LOCAL/DATA
sudo lvreduce /dev/LOCAL/DATA
提示
提示: 使用一條指令調整磁碟區和檔案系統的大小

SUSE Linux Enterprise Server 12 SP1 開始,lvextendlvresizelvreduce 都支援 --resizefs 選項,該選項不僅可以變更磁碟區的大小,而且還能調整檔案系統的大小。因此,上面所示的 lvextendlvreduce 範例也可以改寫為︰

sudo lvextend --resizefs −L +10G /dev/LOCAL/DATA
sudo lvreduce  --resizefs -L -5G /dev/LOCAL/DATA

請注意,--resizefs 在以下檔案系統下受支援︰ext2/3/4、reiserfs、Btrfs 和 XFS。目前只能在 SUSE Linux Enterprise Server 上使用此選項調整 Btrfs 的大小,因為之前的版本不支援此選項。

5.8.2 透過 lvmetad 動態彙總 LVM 中繼資料

大多數 LVM 指令都需要針對儲存在系統中各磁碟裝置上的 LVM 中繼資料的準確檢視。依據目前的 LVM 設計,如果此資訊不可用,LVM 必須掃描系統中的所有實體磁碟裝置。在擁有許多磁碟的系統中,這需要執行非常多的 I/O 操作。如果某個磁碟無法回應,LVM 指令就可能會因等待磁碟回應而逾時。

透過 lvmetad 動態彙總 LVM 中繼資料,便可解決此問題。lvmetad 精靈的用途是,每次在裝置的狀態變更時動態彙總中繼資料資訊,從而消除此掃描的需要。這些事件透過 udev 規則向 lvmetad 發出訊號。如果精靈未在執行中,則 LVM 會照常執行掃描。

此功能預設會啟用。如果您的系統上已將其停用,可執行以下步驟加以啟用︰

  1. 開啟終端機主控台。

  2. 停止 lvmetad 精靈︰

    sudo systemctl stop lvm2-lvmetad
  3. 編輯 /etc/lvm/lvm.conf,將 use_lvmetad 設定為 1

    use_lvmetad = 1
  4. 重新啟動 lvmetad 精靈︰

    sudo systemctl start lvm2-lvmetad

5.8.3 使用 LVM 快取磁碟區

LVM 支援使用高速區塊裝置 (例如 SSD 裝置) 做為大型慢速區塊裝置的寫回或直寫快取。快取邏輯磁碟區類型使用小型高速 LV 來提高大型慢速 LV 的效能。

若要設定 LVM 快取,需要在快取裝置上建立兩個邏輯磁碟區。較大的磁碟區用於快取自身,較小的磁碟區用於儲存快取中繼資料。這兩個磁碟區必須與原始磁碟區同屬一個磁碟區群組。建立這些磁碟區之後,需要將其轉換為快取池,並將該池附加到原始磁碟區︰

程序 5.2︰ 設定快取的邏輯磁碟區
  1. 在慢速裝置上建立原始磁碟區 (如果尚不存在)。

  2. 將實體磁碟區 (從快速裝置) 新增至原始磁碟區所屬的同一個磁碟區群組,然後在實體磁碟區上建立快取資料磁碟區。

  3. 建立快取中繼資料磁碟區。該磁碟區的大小應為快取資料磁碟區大小的 1/1000,最小 8 MB。

  4. 將快取資料磁碟區和中繼資料磁碟區合併成一個快取池磁碟區︰

    lvconvert --type cache-pool --poolmetadata VOLUME_GROUP/METADATA_VOLUME VOLUME_GROUP/CACHING_VOLUME
  5. 將快取池附加到原始磁碟區︰

    lvconvert --type cache --cachepool VOLUME_GROUP/CACHING_VOLUME VOLUME_GROUP/ORIGINAL_VOLUME

如需 LVM 快取的詳細資訊,請參閱 lvmcache(7) man 頁面。

5.9 標記 LVM2 儲存物件

標記是指定給儲存物件中繼資料的無序關鍵字或詞彙。透過使用標記,您可以為 LVM 儲存物件的中繼資料附加無序的標記清單,用實用的方式對物件集合進行分類。

5.9.1 使用 LVM2 標記

標記 LVM2 儲存物件之後,便可以在指令中使用標記來完成下列任務︰

  • 選取要根據是否存在特定標記來處理的 LVM 物件。

  • 在組態檔案中使用標記,可控制在伺服器上啟動哪些磁碟區群組和邏輯磁碟區。

  • 透過在指令中指定標記,覆寫全域組態檔案中的設定。

可以使用標記來代替接受下列各項的任何指令行 LVM 物件參考︰

  • 物件清單

  • 單一物件,只要標記展開為單一物件

在所有位置都尚不支援用標記取代物件名稱。引數展開之後,對於清單中重複的引數,系統會移除重複的引數並保留每個引數的第一個例項。

每當遇到可能不明確的引數類型時,都必須使用 at 符號 (@) 字元為標記加上字首,例如 @mytag。其他情況下,是否使用 @ 隨您選擇。

5.9.2 建立 LVM2 標記的要求

將標記與 LVM 配合使用時,請考慮下列要求︰

受支援的字元

LVM 標記單字可以包含 ASCII 大寫字元 A 到 Z、小寫字元 a 到 z、數字 0 到 9、底線 (_)、加號 (+)、連字號 (-) 及句點 (.)。單字不能以連字號開頭。最大長度為 128 個字元。

受支援的儲存物件

您可以標記 LVM2 實體磁碟區、磁碟區群組、邏輯磁碟區和邏輯磁碟區區段。PV 標記儲存在其磁碟區群組的中繼資料中。刪除磁碟區群組也會刪除未同步實體磁碟區中的標記。您雖然不能標記快照,但可以標記它們的來源。

無法對 LVM1 物件加標記,因為磁碟格式不支援。

5.9.3 指令行標記語法

--addtag標記資訊

將標記新增至 LVM2 儲存物件 (或對其加標記)。範例︰

sudo vgchange --addtag @db1 vg1
--deltag標記資訊

移除 LVM2 儲存物件的標記 (或對其取消標記)。範例︰

sudo vgchange --deltag @db1 vg1
--tag標記資訊

指定標記,用來縮小要啟動或取消啟動之磁碟區群組或邏輯磁碟區的清單。

如果磁碟區具有與提供的標記相符的標記,輸入以下指令可將其啟動 (範例)︰

sudo lvchange -ay --tag @db1 vg1/vol2

5.9.4 組態檔案語法

下面幾節顯示特定使用案例的範例組態。

5.9.4.1 啟用主機名稱 lvm.conf 檔案中的主機名稱標記

將以下代碼新增至 /etc/lvm/lvm.conf 檔案,以啟用主機上 /etc/lvm/lvm_<HOSTNAME>.conf 檔案中單獨定義的主機標記。

tags {
   # Enable hostname tags
   hosttags = 1
}

將啟用代碼放在主機上的 /etc/lvm/lvm_<HOSTNAME>.conf 檔案中。請參閱第 5.9.4.3 節 「定義啟動行為」

5.9.4.2 為 lvm.conf 檔案中的主機名稱定義標記

tags {

   tag1 { }
      # Tag does not require a match to be set.

   tag2 {
      # If no exact match, tag is not set.
      host_list = [ "hostname1", "hostname2" ]
   }
}

5.9.4.3 定義啟動行為

您可以修改 /etc/lvm/lvm.conf 檔案,根據標記啟動 LVM 邏輯磁碟區。

在文字編輯器中,將以下代碼新增至該檔案︰

  activation {
      volume_list = [ "vg1/lvol0", "@database" ]
  }

以您的標記取代 @database。使用 "@*" 可使標記與主機上設定的任何標記相符。

啟用指令會比對磁碟區群組與邏輯磁碟區中繼資料中設定的 VGNAMEVGNAME/LVNAME 或 @TAG。當中繼資料標記相符時,磁碟區群組或邏輯磁碟區才會啟動。如果沒有相符標記,預設不會啟用任何項目。

如果沒有 volume_list 並且主機上定義了標記,則僅當主機標記與中繼資料標記相符時,磁碟區群組或邏輯磁碟區才會啟用。

如果 volume_list 已定義但為空白,並且主機上未定義任何標記,則不會啟用。

如果未定義 volume_list,不會對 LV 的啟用實施任何限制 (允許所有)。

5.9.4.4 在多個主機名稱組態檔案中定義啟動行為

如果 lvm.conf 檔案中啟用了主機標記,您便可在主機的組態檔案 (/etc/lvm/lvm_<HOST_TAG>.conf) 中使用啟用代碼。例如,/etc/lvm/ 目錄中包含某個伺服器的兩個組態檔案︰

lvm.conf
lvm_<HOST_TAG>.conf

伺服器啟動時,會載入 /etc/lvm/lvm.conf 檔案,並處理該檔案中的任何標記設定。如果定義了任何主機標記,則會載入相關的 /etc/lvm/lvm_<HOST_TAG>.conf 檔案。當它搜尋特定組態檔案項目時,將會先搜尋主機標記檔案,然後再搜尋 lvm.conf 檔案,並在找到第一個相符項時停止搜尋。在 lvm_<HOST_TAG>.conf 檔案中,使用與標記設定順序相反的順序。如此會先搜尋最後設定之標記的檔案。在主機標記檔案中設定的新標記將觸發其他組態檔案的載入。

5.9.5 將標記用於叢集中的簡單啟用控制

/etc/lvm/lvm.conf 檔案中啟用 hostname_tags 選項,可以設定簡單的主機名稱啟用控制。在叢集中的每台機器上使用相同的檔案,使之成為全域設定。

  1. 在文字編輯器中,將以下代碼新增至 /etc/lvm/lvm.conf 檔案︰

    tags {
       hostname_tags = 1
    }
  2. 將該檔案複製到叢集中的所有主機上。

  3. 在叢集的任何機器中,將 db1 新增至啟動 vg1/lvol2 的機器清單︰

    sudo lvchange --addtag @db1 vg1/lvol2
  4. db1 伺服器上,輸入以下指令以將其啟動︰

    sudo lvchange -ay vg1/vol2

5.9.6 使用標記啟動叢集中的偏好主機

本節中的範例示範如何透過兩種方法實現下列目的︰

  • 僅在資料庫主機 db1db2 上啟動磁碟區群組 vg1

  • 僅在檔案伺服器主機 fs1 上啟動磁碟區群組 vg2

  • 起初,在檔案伺服器備份主機 fsb1 上不啟動任何項目,但是讓它準備好接管檔案伺服器主機 fs1 的工作。

5.9.6.1 選項 1︰在主機之間複製的集中式管理與靜態組態

下面的解決方案會在多個主機之間複製單一組態檔案。

  1. @database 標記新增至磁碟區群組 vg1 的中繼資料。在終端機主控台中,輸入

    sudo vgchange --addtag @database vg1
  2. @fileserver 標記新增至磁碟區群組 vg2 的中繼資料。在終端機主控台中,輸入

    sudo vgchange --addtag @fileserver vg2
  3. 在文字編輯器中,使用以下代碼修改 /etc/lvm/lvm.conf 檔案,以定義 @database@fileserver@fileserverbackup 標記。

    tags {
       database {
          host_list = [ "db1", "db2" ]
       }
       fileserver {
          host_list = [ "fs1" ]
       }
       fileserverbackup {
          host_list = [ "fsb1" ]
       }
    }
    
    activation {
       # Activate only if host has a tag that matches a metadata tag
       volume_list = [ "@*" ]
    }
  4. 將修改後的 /etc/lvm/lvm.conf 檔案複製到四部主機︰db1db2fs1fsb1

  5. 如果檔案伺服器主機停機,您可在任何節點上的終端機主控台中輸入以下指令,來啟動 fsb1 上的 vg2

    sudo vgchange --addtag @fileserverbackup vg2
    sudo vgchange -ay vg2

5.9.6.2 選項 2︰本地化的管理與組態

在下面的解決方案中,每部主機都在本地保留要啟動哪些磁碟區類別的相關資訊。

  1. @database 標記新增至磁碟區群組 vg1 的中繼資料。在終端機主控台中,輸入

    sudo vgchange --addtag @database vg1
  2. @fileserver 標記新增至磁碟區群組 vg2 的中繼資料。在終端機主控台中,輸入

    sudo vgchange --addtag @fileserver vg2
  3. 啟用 /etc/lvm/lvm.conf 檔案中的主機標記︰

    1. 在文字編輯器中,使用以下代碼修改 /etc/lvm/lvm.conf 檔案,以啟用主機標記組態檔案。

      tags {
         hosttags = 1
      }
    2. 將修改後的 /etc/lvm/lvm.conf 檔案複製到四部主機︰db1db2fs1fsb1

  4. 在主機 db1 上,建立資料庫主機 db1 的啟動組態檔案。在文字編輯器中,建立 /etc/lvm/lvm_db1.conf 檔案並新增以下代碼︰

    activation {
       volume_list = [ "@database" ]
    }
  5. 在主機 db2 上,建立資料庫主機 db2 的啟動組態檔案。在文字編輯器中,建立 /etc/lvm/lvm_db2.conf 檔案並新增以下代碼︰

    activation {
       volume_list = [ "@database" ]
    }
  6. 在主機 fs1 上,建立檔案伺服器主機 fs1 的啟動組態檔案。在文字編輯器中,建立 /etc/lvm/lvm_fs1.conf 檔案並新增以下代碼︰

    activation {
       volume_list = [ "@fileserver" ]
    }
  7. 如果檔案伺服器主機 fs1 停機,要將備用檔案伺服器主機 fsb1 做為檔案伺服器啟動︰

    1. 在主機 fsb1 上,建立主機 fsb1 的啟動組態檔案。在文字編輯器中,建立 /etc/lvm/lvm_fsb1.conf 檔案並新增以下代碼︰

      activation {
         volume_list = [ "@fileserver" ]
      }
    2. 在終端機主控台中,輸入下列其中一個指令︰

      sudo vgchange -ay vg2
      sudo vgchange -ay @fileserver