首頁 > 軟體

邏輯卷管理(LVM) Linux 使用者指南

2020-06-16 16:58:08

管理磁碟空間對系統管理員來說是一件重要的日常工作。一旦磁碟空間耗盡就需要進行一系列耗時而又複雜的任務,以提升磁碟分割區中可用的磁碟空間。它也需要系統離線才能處理。通常這種任務會涉及到安裝一個新的硬碟、引導至恢復模式或者單使用者模式、在新硬碟上建立一個分割區和一個檔案系統、掛載到臨時掛載點去從一個太小的檔案系統中移動資料到較大的新位置、修改 /etc/fstab 檔案的內容來反映出新分割區的正確裝置名、以及重新引導來重新掛載新的檔案系統到正確的掛載點。

我想告訴你的是,當 LVM (邏輯卷管理)首次出現在 Fedora Linux 中時,我是非常抗拒它的。我最初的反應是,我並不需要在我和我的裝置之間有這種額外的抽象層。結果是我錯了,邏輯卷管理是非常有用的。

LVM 讓磁碟空間管理非常靈活。它提供的功能諸如在檔案系統已掛載和活動時,很可靠地增加磁碟空間到一個邏輯卷和它的檔案系統中,並且,它也允許你將多個物理磁碟和分割區融合進一個可以分割成邏輯卷(LV)的單個捲組(VG)中。

卷管理也允許你去減少分配給一個邏輯卷的磁碟空間數量,但是,這裡有兩個要求,第一,卷必須是未掛載的。第二,在捲空間調整之前,檔案系統本身的空間大小必須先被減少。

有一個重要的提示是,檔案系統本身必須允許重新調整大小的操作。當重新提升檔案系統大小的時候,EXT2、3 和 4 檔案系統都允許離線(未掛載狀態)或者線上(掛載狀態)重新調整大小。你應該去認真了解你打算去調整的檔案系統的詳細情況,去驗證它們是否可以完全調整大小,尤其是否可以線上調整大小。

 

即時擴充套件一個檔案系統

在我安裝一個新的發行版到我的生產用機器中之前,我總是喜歡在一個 VirtualBox 虛擬機器中執行這個新的發行版一段時間,以確保它沒有任何的致命的問題存在。在幾年前的一個早晨,我在我的主要使用的工作站上的虛擬機器中安裝了一個新發行的 Fedora 版本。我認為我有足夠的磁碟空間分配給安裝虛擬機器的主檔案系統。但是,我錯了,大約在安裝到三分之一時,我耗盡了我的檔案系統的空間。幸運的是,VirtualBox 檢測到了磁碟空間不足的狀態,並且暫停了虛擬機器,然後顯示了一個明確指出問題所在的錯誤資訊。

請注意,這個問題並不是虛擬機器磁碟太小造成的,而是由於宿主機上空間不足,導致虛擬機器上的虛擬磁碟在宿主機上的邏輯卷中沒有足夠的空間去擴充套件。

因為許多現在的發行版都預設使用了邏輯卷管理,並且在我的捲組中有一些可用的空餘空間,我可以分配額外的磁碟空間到適當的邏輯卷,然後即時擴充套件宿主機的檔案系統。這意味著我不需要去重新格式化整個硬碟,以及重新安裝作業系統或者甚至是重新啟動機器。我不過是分配了一些可用空間到適當的邏輯卷中,並且重新調整了檔案系統的大小 —— 所有的這些操作都在檔案系統線上並且執行著程式的狀態下進行的,虛擬機器也一直使用著宿主機檔案系統。在調整完邏輯卷和檔案系統的大小之後,我恢復了虛擬機器的執行,並且繼續進行安裝過程,就像什麼問題都沒有發生過一樣。

雖然這種問題你可能從來也沒有遇到過,但是,許多人都遇到過重要程式在執行過程中發生磁碟空間不足的問題。而且,雖然許多程式,尤其是 Windows 程式,並不像 VirtualBox 一樣寫的很好,且富有彈性,Linux 邏輯卷管理可以使它在不丟失資料的情況下去恢復,也不需要去進行耗時的安裝過程。

 

LVM 結構

邏輯卷管理的磁碟環境結構如下面的圖 1 所示。邏輯卷管理允許多個單獨的硬碟和/或磁碟分割區組合成一個單個的捲組(VG)。捲組然後可以再劃分為邏輯卷(LV)或者被用於分配成一個大的單一的卷。普通的檔案系統,如 EXT3 或者 EXT4,可以建立在一個邏輯卷上。

在圖 1 中,兩個完整的物理硬碟和一個第三塊硬碟的一個分割區組合成一個單個的捲組。在這個捲組中建立了兩個邏輯卷和檔案系統,比如,可以在每個邏輯卷上建立一個 EXT3 或者 EXT4 的檔案系統。

圖 1: LVM 允許組合分割區和整個硬碟到卷組中

在一個主機上增加磁碟空間是非常簡單的,在我的經歷中,這種事情是很少的。下面列出了基本的步驟。你也可以建立一個完整的新卷組或者增加新的空間到一個已存在的邏輯卷中,或者建立一個新的邏輯卷。

 

增加一個新的邏輯卷

有時候需要在主機上增加一個新的邏輯卷。例如,在被提示包含我的 VirtualBox 虛擬機器的虛擬磁碟的 /home 檔案系統被填滿時,我決定去建立一個新的邏輯卷,以儲存包含虛擬磁碟在內的虛擬機器資料。這將在我的 /home 檔案系統中釋放大量的空間,並且也允許我去獨立地管理虛擬機器的磁碟空間。

增加一個新的邏輯卷的基本步驟如下:

  1. 如有需要,安裝一個新硬碟。
  2. 可選: 在硬碟上建立一個分割區。
  3. 在硬碟上建立一個完整的物理卷(PV)或者一個分割區。
  4. 分配新的物理捲到一個已存在的捲組(VG)中,或者建立一個新的捲組。
  5. 從捲空間中建立一個新的邏輯卷(LV)。
  6. 在新的邏輯卷中建立一個檔案系統。
  7. /etc/fstab 中增加適當的條目以掛載檔案系統。
  8. 掛載檔案系統。

為了更詳細的介紹,接下來將使用一個範例作為一個實驗去教授關於 Linux 檔案系統的知識。

 

範例

這個範例展示了怎麼用命令列去擴充套件一個已存在的捲組,並給它增加更多的空間,在那個空間上建立一個新的邏輯卷,然後在邏輯卷上建立一個檔案系統。這個過程一直在執行著和已掛載的檔案系統上執行。

警告:僅 EXT3 和 EXT4 檔案系統可以在執行和掛載狀態下調整大小。許多其它的檔案系統,包括 BTRFS 和 ZFS 是不能這樣做的。

 

安裝硬碟

如果在系統中現有硬碟上的捲組中沒有足夠的空間可以增加,那麼可能需要去增加一塊新的硬碟,然後建立空間增加到邏輯卷中。首先,安裝物理硬碟,然後,接著執行後面的步驟。

 

從硬碟上建立物理卷

首先需要去建立一個新的物理卷(PV)。使用下面的命令,它假設新硬碟已經分配為 /dev/hdd

  1. pvcreate /dev/hdd

在新硬碟上建立一個任意分割區並不是必需的。建立的物理卷將被邏輯卷管理器識別為一個新安裝的未處理的磁碟或者一個型別為 83 的 Linux 分割區。如果你想去使用整個硬碟,建立一個分割區並沒有什麼特別的好處,而且後設資料所用的磁碟空間也能用做 PV 的一部分使用。

 

擴充套件已存在的捲組

在這個範例中,我將擴充套件一個已存在的捲組,而不是建立一個新的;你可以選擇其它的方式。在物理磁碟已經建立之後,擴充套件已存在的捲組(VG)去包含新 PV 的空間。在這個範例中,已存在的捲組命名為:MyVG01。

  1. vgextend /dev/MyVG01/dev/hdd

 

建立一個邏輯卷

首先,在捲組中從已存在的空餘空間中建立邏輯卷。下面的命令建立了一個 50 GB 大小的 LV。這個卷組的名字為 MyVG01,然後,邏輯卷的名字為 Stuff。

  1. lvcreate -L +50G--name StuffMyVG01

 

建立檔案系統

建立邏輯卷並不會建立檔案系統。這個任務必須被單獨執行。下面的命令在新建立的邏輯卷中建立了一個 EXT4 檔案系統。

  1. mkfs-t ext4 /dev/MyVG01/Stuff

 

增加一個檔案系統卷標

增加一個檔案系統卷標,更易於在檔案系統以後出現問題時識別它。

  1. e2label /dev/MyVG01/StuffStuff

 

掛載檔案系統

在這個時候,你可以建立一個掛載點,並在 /etc/fstab 檔案系統中新增合適的條目,以掛載檔案系統。

你也可以去檢查並校驗建立的卷是否正確。你可以使用 dflvs 和 vgs 命令去做這些工作。

 

在 LVM 檔案系統中調整邏輯卷大小

從 Unix 的第一個版本開始,對檔案系統的擴充套件需求就一直伴隨,Linux 也不例外。隨著有了邏輯卷管理(LVM),現在更加容易了。

  1. 如有需要,安裝一個新硬碟。
  2. 可選: 在硬碟上建立一個分割區。
  3. 在硬碟上建立一個完整的物理卷(PV)或者一個分割區。
  4. 分配新的物理捲到一個已存在的捲組(VG)中,或者建立一個新的捲組。
  5. 從捲空間中建立一個新的邏輯卷(LV),或者用卷組中部分或全部空間擴充套件已有的邏輯卷。
  6. 如果建立了新的邏輯卷,那麼在上面建立一個檔案系???。如果對已有的邏輯卷增加空間,使用 resize2fs 命令來增大檔案系統來填滿邏輯卷。
  7. /etc/fstab 中增加適當的條目以掛載檔案系統。
  8. 掛載檔案系統。

 

範例

這個範例展示了怎麼用命令列去擴充套件一個已存在的捲組。它會給 /Staff 檔案系統增加大約 50GB 的空間。這將生成一個可用於掛載的檔案系統,在 Linux 2.6 核心(及更高)上可即時使用 EXT3 和 EXT4 檔案系統。我不推薦你用於任何關鍵系統,但是這是可行的,我已經成功了好多次;即使是在根(/)檔案系統上。是否使用自己把握風險。

警告:僅 EXT3 和 EXT4 檔案系統可以在執行和掛載狀態下調整大小。許多其它的檔案系統,包括 BTRFS 和 ZFS 是不能這樣做的。

 

安裝硬碟

如果在系統中現有硬碟上的捲組中沒有足夠的空間可以增加,那麼可能需要去增加一塊新的硬碟,然後建立空間增加到邏輯卷中。首先,安裝物理硬碟,然後,接著執行後面的步驟。

 

從硬碟上建立物理卷

首先需要去建立一個新的物理卷(PV)。使用下面的命令,它假設新硬碟已經分配為 /dev/hdd

  1. pvcreate /dev/hdd

在新硬碟上建立一個任意分割區並不是必需的。建立的物理卷將被邏輯卷管理器識別為一個新安裝的未處理的磁碟或者一個型別為 83 的 Linux 分割區。如果你想去使用整個硬碟,建立一個分割區並沒有什麼特別的好處,而且後設資料所用的磁碟空間也能用做 PV 的一部分使用。

 

增加物理捲到已存在的捲組

在這個範例中,我將使用一個新的物理卷來擴充套件一個已存在的捲組。在物理卷已經建立之後,擴充套件已存在的捲組(VG)去包含新 PV 的空間。在這個範例中,已存在的捲組命名為:MyVG01。

  1. vgextend /dev/MyVG01/dev/hdd

 

擴充套件邏輯卷

首先,在捲組中從已存在的空餘空間中建立邏輯卷。下面的命令建立了一個 50 GB 大小的 LV。這個卷組的名字為 MyVG01,然後,邏輯卷的名字為 Stuff。

  1. lvcreate -L +50G--name StuffMyVG01

 

擴充套件檔案系統

如果你使用了 -r 選項,擴充套件邏輯卷也將擴充套件器檔案系統。如果你不使用 -r 選項,該操作不行單獨執行。下面的命令在新調整大小的邏輯卷中調整了檔案系統大小。

  1. resize2fs /dev/MyVG01/Stuff

你也可以去檢查並校驗調整大小的卷是否正確。你可以使用 dflvsvgs 命令去做這些工作。

 

提示

過去幾年來,我學習了怎麼去做讓邏輯卷管理更加容易的一些知識,希望這些提示對你有價值。

  • 除非你有一個明確的原因去使用其它的檔案系統外,推薦使用可延伸的檔案系統。除了 EXT2、3、和 4 外,並不是所有的檔案系統都支援調整大小。EXT 檔案系統不但速度快,而且它很高效。在任何情況下,如果預設的引數不能滿足你的需要,它們(指的是檔案系統引數)可以通過一位知識豐富的系統管理員來調優它。
  • 使用有意義的捲和捲組名字。
  • 使用 EXT 檔案系統標籤

我知道,像我一樣,大多數的系統管理員都抗拒邏輯卷管理。我希望這篇文章能夠鼓勵你至少去嘗試一個 LVM。如果你能那樣做,我很高興;因為,自從我使用它之後,我的硬碟管理任務變得如此的簡單。

 

關於作者

David Both 是一位 Linux 和開源軟體的倡導者,住在 Raleigh, North Carolina。他在 IT 行業工作了 40 多年,在 IBM 工作了 20 多年。在 IBM 期間,他在 1981 年為最初的 IBM PC 編寫了第一個培訓課程。他曾教授紅帽的 RHCE 課程,並在 MCI Worldcom、Cisco和 North Carolina 工作。他已經使用 Linux 和開源軟體工作了將近 20 年。


via: https://opensource.com/business/16/9/linux-users-guide-lvm

作者:David Both 譯者:qhwdw 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-12/149835.htm


IT145.com E-mail:sddin#qq.com