共用方式為


在 Azure 中的 Linux VM 上設定 LVM

本檔將討論如何在 Azure 虛擬機中設定邏輯磁碟區管理員 (LVM)。 LVM 可用於 AZURE VM 中的 OS 磁碟或數據磁碟,不過,根據預設,大部分的雲端映射都不會在 OS 磁碟上設定 LVM。 下列步驟將著重於設定數據磁碟的 LVM。

線性與分條邏輯磁碟區

LVM 可用來將數個實體磁碟合併成單一儲存體磁碟區。 根據預設,LVM 通常會建立線性邏輯磁碟區,這表示實體記憶體會串連在一起。 在此情況下,讀取/寫入作業通常只會傳送至單一磁碟。 相反地,我們也可以建立條帶式邏輯磁碟區,其中讀寫操作會分散到磁碟區群組中的多個磁碟上(類似於RAID0)。 基於效能考量,您可能會希望對邏輯磁碟區進行條帶化,以便讀取和寫入操作能夠利用所有已連接的數據磁碟。

本文件將說明如何將數個數據磁碟合併成單一磁碟區群組,然後建立等量邏輯磁碟區。 下列步驟已被一般化,以適用於大多數發行版。 在大部分情況下,在 Azure 上管理 LVM 的公用程式和工作流程與其他環境並不大不相同。 如同往常,請洽詢您的 Linux 發行商,以取得在特定發行版本中使用 LVM 的文件與最佳實踐。

鏈接數據磁碟

使用 LVM 時,一個通常會想要從兩個以上的空白數據磁碟開始。 根據您的 IO 需求,您可以選擇連結儲存在我們的標準記憶體中的磁碟,每個磁碟最多可有 500 個 IO/ps,或每個磁碟最多 5000 個 IO/ps 的進階記憶體。 本文不會詳細說明如何將數據磁碟布建和連結至Linux虛擬機。 如需如何將空白數據磁碟連結至 Azure 上 Linux 虛擬機的詳細指示,請參閱Microsoft Azure 一文 連結磁碟

安裝 LVM 公用程式

  • Ubuntu

    sudo apt-get update
    sudo apt-get install lvm2
    
  • RHEL、CentOS 和 Oracle Linux

    sudo yum install lvm2
    
  • SLES 12 和 openSUSE

    sudo zypper install lvm2
    
  • SLES 11

    sudo zypper install lvm2
    

    在 SLES11 上,您也必須編輯 /etc/sysconfig/lvm 並設定 LVM_ACTIVATED_ON_DISCOVERED 為 「啟用」:

    LVM_ACTIVATED_ON_DISCOVERED="enable" 
    

設定 LVM

在本指南中,我們將假設您已連結三個數據磁碟,我們將稱之為 /dev/sdc/dev/sdd/dev/sde。 這些路徑可能不符合 VM 中的磁碟路徑名稱。 您可以執行 'sudo fdisk -l' 或類似的命令來列出可用的磁碟。

  1. 準備實體卷:

    sudo pvcreate /dev/sd[cde]
    Physical volume "/dev/sdc" successfully created
    Physical volume "/dev/sdd" successfully created
    Physical volume "/dev/sde" successfully created
    
  2. 建立磁碟區群組。 在此範例中,我們會呼叫磁碟區群組 data-vg01

    sudo vgcreate data-vg01 /dev/sd[cde]
    Volume group "data-vg01" successfully created
    
  3. 建立邏輯磁碟區。 下列命令會建立稱為 data-lv01 的單一邏輯磁碟區,以跨越整個磁碟區群組,但請注意,在磁碟區群組中建立多個邏輯磁碟區也是可行的。

    sudo lvcreate --extents 100%FREE --stripes 3 --name data-lv01 data-vg01
    Logical volume "data-lv01" created.
    
  4. 格式化邏輯磁碟區

    sudo mkfs -t ext4 /dev/data-vg01/data-lv01
    

    備註

    使用 SLES11 時,請使用 -t ext3 而非 ext4。 SLES11 僅支援 ext4 檔案系統的唯讀取。

將新的文件系統新增至 /etc/fstab

這很重要

不當編輯 /etc/fstab 檔案會導致系統無法開機。 如果不確定,請參閱散發套件的文件,以取得如何適當編輯此檔案的相關資訊。 在編輯之前,也建議先備份 /etc/fstab 檔案。

  1. 為新的檔案系統建立所需的裝入點,例如:

    sudo mkdir /data
    
  2. 找出邏輯磁碟區路徑

    lvdisplay
    --- Logical volume ---
    LV Path                /dev/data-vg01/data-lv01
    ....
    
  3. 在文字編輯器中開啟/etc/fstab並添加新檔案系統的條目,例如:

    /dev/data-vg01/data-lv01  /data  ext4  defaults  0  2
    

    然後,儲存並關閉 /etc/fstab

  4. /etc/fstab測試專案是否正確:

    sudo mount -a
    

    如果此命令導致錯誤訊息,請檢查 檔案中的 /etc/fstab 語法。

    接下來執行 mount 命令,以確保檔案系統已掛接:

    mount
    ......
    /dev/mapper/data--vg01-data--lv01 on /data type ext4 (rw)
    
  5. /etc/fstab 中的(選擇性)安全啟動參數

    許多散發套件包含nobootwaitnofail的掛載參數,這些參數可能會新增至/etc/fstab檔案。 這些參數允許掛接特定文件系統時發生失敗,並允許 Linux 系統繼續開機,即使無法正確掛接 RAID 檔案系統也一樣。 如需這些參數的詳細資訊,請參閱您的發行版的文件。

    範例 (Ubuntu):

    /dev/data-vg01/data-lv01  /data  ext4  defaults,nobootwait  0  2
    

TRIM/UNMAP 支援

有些 Linux 核心會支援 TRIM/UNMAP 作業以捨棄磁碟上未使用的區塊。 這些作業主要適用於標準記憶體,以通知 Azure 已刪除的頁面不再有效且可捨棄。 建立大型檔案後,您可以透過刪除其中的頁面來節省成本。

有兩種方式可在 Linux VM 中啟用 TRIM 支援。 像往常一樣,請參考您所使用的發行版本以了解建議的方法︰

  • 請在 discard 中使用 /etc/fstab 掛載選項,例如:

    /dev/data-vg01/data-lv01  /data  ext4  defaults,discard  0  2
    
  • 在某些情況下,discard 選項可能會影響效能。 或者,您也可以從命令列手動執行 fstrim 命令,或將它新增到 crontab 來定期執行︰

    Ubuntu

    # sudo apt-get install util-linux
    # sudo fstrim /datadrive
    

    RHEL、CentOS 和 Oracle Linux

    # sudo yum install util-linux
    # sudo fstrim /datadrive