作者 | David Both
譯者 | qhwdw
管理磁碟空間對系統管理員來說是一件重要的日常工作。一旦磁碟空間耗盡就需要進行一系列耗時而又複雜的任務,以提升磁碟分割槽中可用的磁碟空間。它也需要系統離線才能處理。通常這種任務會涉及到安裝一個新的硬碟、引導至恢復樣式或者單使用者樣式、在新硬碟上建立一個分割槽和一個檔案系統、掛載到臨時掛載點去從一個太小的檔案系統中行動資料到較大的新位置、修改 /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
檔案系統中釋放大量的空間,並且也允許我去獨立地管理虛擬機器的磁碟空間。
增加一個新的邏輯捲的基本步驟如下:
/etc/fstab
中增加適當的條目以掛載檔案系統。為了更詳細的介紹,接下來將使用一個示例作為一個實驗去教授關於 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
檔案系統中新增合適的條目,以掛載檔案系統。
你也可以去檢查並校驗建立的捲是否正確。你可以使用 df
、lvs
和 vgs
命令去做這些工作。
在 LVM 檔案系統中調整邏輯捲大小
從 Unix 的第一個版本開始,對檔案系統的擴充套件需求就一直伴隨,Linux 也不例外。隨著有了邏輯捲管理(LVM),現在更加容易了。
resize2fs
命令來增大檔案系統來填滿邏輯捲。/etc/fstab
中增加適當的條目以掛載檔案系統。示例
這個示例展示了怎麼用命令列去擴充套件一個已存在的捲組。它會給 /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
你也可以去檢查並校驗調整大小的捲是否正確。你可以使用 df
、lvs
和 vgs
命令去做這些工作。
提示
過去幾年來,我學習了怎麼去做讓邏輯捲管理更加容易的一些知識,希望這些提示對你有價值。
我知道,像我一樣,大多數的系統管理員都抗拒邏輯捲管理。我希望這篇文章能夠鼓勵你至少去嘗試一個 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[2] 譯者:qhwdw 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出