如何使用 LVM 管理滴滴雲 EBS

java06051515發表於2018-12-20

LVM 介紹

LVM ( Logical Volume Management ) 是一種儲存裝置管理技術,使使用者能夠彙集和抽象儲存裝置元件的物理佈局,從而實現對物理磁碟簡單靈活的管理。利用 Linux Device Mapper 核心框架,LVM2 可用於將現有儲存裝置組合到一起,並根據需要從組合空間分配邏輯單元。

本文將介紹如何用 LVM 管理儲存裝置。接下來將展示如何顯示邏輯卷的相關資訊,如何建立和銷燬各種型別的卷,以及如何透過調整大小或轉換來修改現有卷。我們將使用 Centos 7.x 來演示這些操作。

環境準備

建立一個 滴滴雲 DC2,作業系統為 Centos 7.x,並掛載兩塊規格一樣的資料盤,本列中採用兩塊大小為 200G 的 SSD 雲盤,所使用的使用者為具有 sudo 許可權的 dc2-user。

安裝 LVM:

  # sudo yum install -y lvm2

建立或擴充套件 LVM 元件

本節將討論如何建立和擴充套件物理卷、卷組和邏輯卷。

從原始儲存裝置建立物理卷

為了透過 LVM 管理儲存裝置,首先必須將儲存裝置標記為物理卷 ( PV, Physical Volume ) 。這樣 LVM 才可以在卷組 ( VG, Volume Group ) 內使用該裝置,卷組相當於是由物理卷構成的儲存池。

首先,使用  lvmdiskscan  命令查詢 LVM 可以看到並使用的所有塊裝置:

這裡我們可以看到適合於 LVM 的物理卷的裝置。從中挑選出沒有資料的裝置,比如  /dev/vdb  和  /dev/vdc  用來建立 LVM。

警告:請確保再次檢查你打算與 LVM 一起使用的裝置是否沒有任何重要資料已經寫入它們。在 LVM 中使用這些裝置將覆蓋當前內容。如果 DC2 伺服器上已有重要資料,則在進行備份。

要將儲存裝置標記為 LVM 物理卷,可以使用命令  pvcreate 。你可以同時透過多個裝置:

該命令會在所有目標裝置上寫入 LVM 頭,以標記它們為 LVM 物理卷。

檢視物理卷:

pvdisplay  命令可以輸出更詳細的資訊:

從物理卷建立新卷組

若要從 LVM 物理卷建立新卷組,請使用  vgcreate  命令。必須提供一個卷組名稱,然後至少有一個 LVM 物理卷:

  # sudo vgcreate volume_group_name /dev/vdb

  Volume  group   "volume_group_name"   successfully  created

本例中,建立了具有單個初始物理卷的卷組。如果願意,你可以在建立中傳遞多個物理卷:

  # sudo vgcreate volume_group_name /dev/vdb /dev/sdc /dev/sdd

檢視卷組資訊:

通常,每個伺服器只需要一個卷組。可以將所有 LVM 管理的儲存新增到該池中,然後可以從該池中分配邏輯卷。

你可能希望擁有一個以上的卷組的原因之一是,如果你覺得需要對不同卷使用不同的區段大小。通常,你不必設定區段大小(預設大小 4M 對於大多數使用來說足夠),但是如果需要,可以在建立卷組時透過 -s 選項進行設定:

  # sudo vgcreate -s 8M volume_group_name /dev/vda

這將建立一個具有段大小為 8M 的新卷組。

向現有卷組新增物理卷

若要透過新增額外的物理卷擴充套件卷組,請使用  vgextend  命令。這個命令需要一個卷組名,後面跟著要新增的物理卷。如果願意的話,你可以同時輸入多個物理卷:

  # sudo vgextend volume_group_name /dev/vdc

  Volume  group   "volume_group_name"   successfully  extended

物理卷將被新增到卷組中,從而擴充套件儲存池的可用容量。

透過指定大小建立邏輯卷

若要從卷組儲存池建立邏輯卷,請使用  lvcreate  命令。使用-L選項指定邏輯卷的大小,使用 -n 選項指定名稱,並傳入卷組名稱以從中分配空間。

例如,從  volume_group_name  卷組建立一個名為 test 且大小為 10G 邏輯卷型別:

  # sudo lvcreate -L 10G -n test volume_group_name  

  Logical  volume   "test"   created

如果卷組有足夠的空閒空間來容納卷容量,則會成功建立出新的邏輯卷。

檢視邏輯卷的資訊,用命令  lvs  或  lvdisplay

從所有剩餘空閒空間建立邏輯卷

如果希望使用卷組中剩餘的空閒空間建立卷,使用  vgcreate  命令,像之前一樣透過 -n 選項指定名稱,並傳入卷組名稱,不要傳遞大小,而是使用選項  '-l 100%FREE' ,該選項使用卷組中的剩餘段 ( extents ) 來建立邏輯卷:

  # sudo lvcreate -l 100%FREE -n test2 volume_group_name

這將會使用邏輯卷中所有剩餘的空間。

用高階選項建立邏輯卷

邏輯卷也可以用一些高階選項建立。你可能希望考慮的一些選項是:

  • –Type:指定邏輯卷的型別,該型別確定如何分配邏輯卷。如果沒有足夠的底層物理捲來正確建立所選型別,那麼一些型別將不可用。一些最常見的型別是:

    • Linear:預設型別。所使用的底層物理裝置(如果不止一個)將簡單地彼此附加,做線性擴張。

    • Striped:與 RAID0 類似,striped 結構將資料劃分成塊,並以迴圈方式遍佈底層物理卷。這可以提高效能,但沒有資料冗餘。這需要下面描述的“-i ”選項和至少兩個物理卷。

  1. RARID1:建立映象 RAID1 卷。預設情況下,映象將具有兩個副本,但是可以透過下面描述的 -m 選項指定更多副本。需要至少兩個物理卷。

  2. RAID5:建立 RAID5 卷。最少需要三個物理卷。

  3. RAID6:建立 RAID6 卷。最少需要四個物理卷。

  • -m:指定要儲存的資料的其他副本的數量。“1”指定了一個附加副本,用於總共兩組資料。

  • -i:指定條帶數量。這對於條帶型別是必需的,並且可以修改其他一些 RAID 選項的預設行為。

  • -s:指定操作應該從現有邏輯卷而不是新的獨立邏輯卷建立快照。

  • 我們將提供這些選項的幾個示例來演示它們通常如何使用。

    要建立條帶卷,必須指定至少兩個條帶。這種結構和條帶計數需要至少兩個具有可用容量的物理卷:

      # sudo lvcreate --type striped -i 2 -L 10G -n striped_vol volume_group_name

    若要建立映象卷,請使用 RAID1 型別。如果你想要 2 個副本以上的資料,請使用 -m 選項。這個示例使用 -m 2 來建立總共三個副本的資料(LVM 將其計數為一個帶有兩個映象的原始資料集)。需要至少三個物理卷才能成功:

      # sudo lvcreate --type raid1 -m 2 -L 20G -n mirrored_vol volume_group_name

    增加邏輯卷的大小

    LVM 的主要優點之一是它在提供邏輯卷時的靈活性,在不停止系統的情況下,可以輕鬆地調整卷的數量或大小。

    若要增加現有邏輯卷的大小,請使用  lvresize  命令。使用 -L 標誌來指定新的大小。還可以透過新增“+”大小來使用相對大小。在這種情況下,LVM將按指定的數量增加邏輯卷的大小。要自動調整邏輯捲上使用的檔案系統的大小,請傳入  --resizefs  標誌。

    要正確地提供要展開的邏輯卷的名稱,需要給出卷組,然後是斜槓,然後是邏輯卷:

      # sudo lvresize -L +5G --resizefs volume_group_name/test

    在這個示例中,  volume_group_name  卷組上的 test 邏輯卷和 test 邏輯捲上的檔案系統都將增加 5G。

    如果希望手動處理檔案系統擴充套件,可以去掉  --resizefs  選項,然後使用檔案系統的本地擴充套件實用程式。例如,對於 Ext4 檔案系統,可以鍵入:

      # sudo lvresize -L +5G volume_group_name/test

      # sudo resize2fs /dev/volume_group_name/test

    這也能達到同樣的目的.

    刪除或縮小 LVM 元件

    由於減少容量可能導致資料丟失,因此透過減小元件大小或移除元件來縮小可用容量的過程通常要複雜一些。

    減少邏輯卷的大小

    要縮小邏輯卷,首先應該備份資料。因為這減少了可用容量,如果出錯可能導致資料丟失。

    準備好後,檢查當前使用的空間有多少:

    在這個例子中,它看起來像一個超過 3.9G 的空間目前正在使用中。使用此方法可以幫助你估計可以縮小卷的大小。

    接下來,解除安裝檔案系統。與擴充套件不同,檔案系統收縮應在解除安裝時執行:

      # cd ~

      # sudo umount /dev/volume_group_name/test

    解除安裝後,檢查檔案系統以確保一切正常工作。用 -t 選項傳遞檔案系統型別。我們將使用 -f 來檢查檔案系統是否正常:

      # sudo fsck -t ext4 -f /dev/volume_group_name/test

    檢查檔案系統之後,可以使用檔案系統的本地工具減小檔案系統的大小。xfs檔案系統不支援縮容,對於 Ext4 檔案系統,可以用命令  resize2fs  縮容,傳遞檔案系統的最終大小:

    警告:這裡最安全的選擇是選擇一個比當前使用量大得多的最終尺寸。給自己一些緩衝空間,避免資料丟失,確保備份到位。

      # sudo resize2fs -p /dev/volume_group_name/test 8G

    一旦操作完成,透過選項  -L  向  lvresize  命令傳遞相同的大小來調整邏輯卷的大小:

      # sudo lvresize -L 8G volume_group_name/test

    你會被警告資料丟失的可能性。如果準備就緒,請鍵入 y 繼續進行。

    在邏輯卷已被還原之後,再次檢查檔案系統:

      # sudo fsck -t ext4 -f /dev/volume_group_name/test

    如果一切正常,可以使用通常的掛載命令重新掛載檔案系統:

      # sudo mount /dev/volume_group_name/test /mn

    現在你的邏輯卷應該縮小到合適的大小。

    刪除邏輯卷

    如果不再需要邏輯卷,可以用  lvremove  命令刪除它。

    首先,如果當前 mount 了邏輯卷,則 umount 掉:

      # cd ~

      # sudo umount /dev/volume_group_name/test

    之後,透過一下命令刪除邏輯卷:

      # sudo lvremove volume_group_name/test

    你將被程式要求確認,如果確定要刪除邏輯卷,請鍵入 y。

    移除卷組

    要刪除整個卷組,包括其中的所有邏輯卷,請使用  vgremove  命令。

    在刪除卷組之前,通常應該使用上述過程刪除邏輯卷。至少,必須確保解除安裝卷組包含的任何邏輯卷:

    然後,透過將卷組名稱傳遞給  vgremove  命令,可以刪除整個卷組:

      sudo vgremove  volume_group _ name

    將提示你確認是否希望刪除卷組。如果你仍然存在任何邏輯卷,那麼在刪除之前,你將收到這些卷的單獨確認提示。

    移除物理卷

    如果希望從 LVM 中刪除物理卷,則所需的過程取決於 LVM 當前是否正在使用對應的裝置。

    如果正在使用物理卷,則必須將位於裝置上的物理區段移動到不同的位置。這要求卷組具有足夠的其他物理捲來處理物理區段。如果使用更復雜的邏輯卷型別,則可能需要額外的物理卷,即使你有足夠的空閒空間來適應它的結構。

    當卷組中有足夠的物理捲來處理物理區段時,透過輸入:

      # sudo pvmove /dev/vdb

    這個過程可能需要一段時間,這取決於卷的大小和要傳輸的資料量。

    一旦擴物理段被複製到其他卷,就可以輸入以下命令刪除物理卷:

      sudo vgreduce  volume_group_name  / dev / sdb

    這將從卷組中移除空的物理卷。完成之後,你可以透過輸入一下命令從儲存裝置中刪除物理卷標記:

      sudo  pvremove  / dev / sdb

    你現在應該能夠將刪除的儲存裝置用於其他目的,或者將其完全從系統中刪除。

    結束

    現在,你應該已經瞭解瞭如何使用 LVM 管理 Centos7.x 上的儲存裝置。你知道如何獲得關於現有 LVM 元件的狀態的資訊、如何使用 LVM 組成儲存系統,以及如何修改卷以滿足你的需求。你可以在安全的環境中測試這些概念,以便更好地理解它們是如何組合在一起的。


    來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559758/viewspace-2285335/,如需轉載,請註明出處,否則將追究法律責任。

    相關文章