Linux中國

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

管理磁碟空間對系統管理員來說是一件重要的日常工作。一旦磁碟空間耗盡就需要進行一系列耗時而又複雜的任務,以提升磁碟分區中可用的磁碟空間。它也需要系統離線才能處理。通常這種任務會涉及到安裝一個新的硬碟、引導至恢復模式或者單用戶模式、在新硬碟上創建一個分區和一個文件系統、掛載到臨時掛載點去從一個太小的文件系統中移動數據到較大的新位置、修改 /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 的文件系統。

lvm.png

圖 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

pvcreate /dev/hdd

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

擴展已存在的卷組

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

vgextend /dev/MyVG01 /dev/hdd
創建一個邏輯卷

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

lvcreate -L +50G --name Stuff MyVG01
創建文件系統

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

mkfs -t ext4 /dev/MyVG01/Stuff
增加一個文件系統卷標

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

e2label /dev/MyVG01/Stuff Stuff
掛載文件系統

在這個時候,你可以創建一個掛載點,並在 /etc/fstab 文件系統中添加合適的條目,以掛載文件系統。

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

在 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

pvcreate /dev/hdd

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

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

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

vgextend /dev/MyVG01 /dev/hdd
擴展邏輯卷

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

lvcreate -L +50G --name Stuff MyVG01
擴展文件系統

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

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中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國