2021-05-12 14:32:11
如何在 Ubuntu 中管理和使用邏輯卷管理 LVM
在我們之前的文章中,我們介紹了什麼是 LVM 以及能用 LVM 做什麼,今天我們會給你介紹一些 LVM 的主要管理工具,使得你在設定和擴充套件安裝時更遊刃有餘。
正如之前所述,LVM 是介於你的作業系統和物理硬碟機之間的抽象層。這意味著你的物理硬碟機和分割區不再依賴於他們所在的硬碟驅動和分割區。而是你的作業系統所見的硬碟驅動和分割區可以是由任意數目的獨立硬碟匯集而成的或是一個軟體磁碟陣列。
要管理 LVM,這裡有很多可用的 GUI 工具,但要真正理解 LVM 設定發生的事情,最好要知道一些命令列工具。這當你在一個伺服器或不提供 GUI 工具的發行版上管理 LVM 時尤為有用。
LVM 的大部分命令和彼此都非常相似。每個可用的命令都由以下其中之一開頭:
- Physical Volume (物理卷) = pv
- Volume Group (卷組)= vg
- Logical Volume (邏輯卷)= lv
物理卷命令用於在捲組中新增或刪除硬碟驅動。捲組命令用於為你的邏輯捲操作更改顯示的物理分割區抽象集。邏輯卷命令會以分割區形式顯示卷組,使得你的作業系統能使用指定的空間。
可下載的 LVM 備忘單
為了幫助你理解每個字首可用的命令,我們製作了一個備忘單。我們會在該文章中介紹一些命令,但仍有很多你可用但沒有介紹到的命令。
該列表中的所有命令都要以 root 身份執行,因為你更改的是會影響整個機器系統級設定。
如何檢視當前 LVM 資訊
你首先需要做的事情是檢查你的 LVM 設定。s 和 display 命令可以和物理卷(pv)、卷組(vg)以及邏輯卷(lv)一起使用,是一個找出當前設定的好起點。
display 命令會格式化輸出資訊,因此比 s 命令更易於理解。對每個命令你會看到名稱和 pv/vg 的路徑,它還會給出空閒和已使用空間的資訊。
最重要的資訊是 PV 名稱和 VG 名稱。用這兩部分資訊我們可以繼續進行 LVM 設定。
建立一個邏輯卷
邏輯卷是你的作業系統在 LVM 中使用的分割區。建立一個邏輯卷,首先需要擁有一個物理卷和捲組。下面是建立一個新的邏輯卷所需要的全部命令。
建立物理卷
我們會從一個全新的沒有任何分割區和資訊的硬碟開始。首先找出你將要使用的磁碟。(/dev/sda, sdb, 等)
注意:記住所有的命令都要以 root 身份執行或者在命令前面新增 'sudo' 。
fdisk -l
如果之前你的硬碟從未格式化或分割區過,在 fdisk 的輸出中你很可能看到類似下面的資訊。這完全正常,因為我們會在下面的步驟中建立需要的分割區。
我們的新磁碟位置是 /dev/sdb,讓我們用 fdisk 命令在磁碟上建立一個新的分割區。
這裡有大量能建立新分割區的 GUI 工具,包括 Gparted,但由於我們已經開啟了終端,我們將使用 fdisk 命令建立需要的分割區。
在終端中輸入以下命令:
fdisk /dev/sdb
這會使你進入到一個特殊的 fdisk 提示符中。
以指定的順序輸入命令建立一個使用新硬碟 100% 空間的主分割區並為 LVM 做好了準備。如果你需要更改分割區的大小或想要多個分割區,我建議使用 GParted 或自己了解一下關於 fdisk 命令的使用。
警告:下面的步驟會格式化你的硬碟驅動。確保在進行下面步驟之前你的硬碟驅動中沒有任何有用的資訊。
- n = 建立新分割區
- p = 建立主分割區
- 1 = 成為磁碟上的首個分割區
輸入 enter 鍵兩次以接受預設的第一個和最後一個柱面。
用下面的命令準備 LVM 所使用的分割區。
- t = 更改分割區型別
- 8e = 更改為 LVM 分割區型別
核實並將資訊寫入硬碟。
- p = 檢視分割區設定使得在寫入更改到磁碟之前可以回看
- w = 寫入更改到磁碟
執行這些命令之後,會退出 fdisk 提示符並返回到終端的 bash 提示符中。
輸入 pvcreate /dev/sdb1 在剛建立的分割區上新建一個 LVM 物理卷。
你也許會問為什麼我們不用一個檔案系統格式化分割區,不用擔心,該步驟在後面。
建立卷組
現在我們有了一個指定的分割區和建立好的物理卷,我們需要建立一個捲組。很幸運這只需要一個命令。
vgcreate vgpool /dev/sdb1
vgpool 是新建立的卷組的名稱。你可以使用任何你喜歡的名稱,但建議標籤以 vg 開頭,以便後面你使用它時能意識到這是一個捲組。
建立邏輯卷
建立 LVM 將使用的邏輯卷:
lvcreate -L 3G-n lvstuff vgpool
-L 命令指定邏輯卷的大小,在該情況中是 3 GB,-n 命令指定捲的名稱。 指定 vgpool 以便 lvcreate 命令知道從什麼捲獲取空間。
格式化並掛載邏輯卷
最後一步是用一個檔案系統格式化新的邏輯卷。如果你需要選擇一個 Linux 檔案系統的幫助,請閱讀 如果根據需要選取最合適的檔案系統。
mkfs -t ext3 /dev/vgpool/lvstuff
建立掛載點並將捲掛載到你可以使用的地方。
mkdir /mnt/stuff
mount -t ext3 /dev/vgpool/lvstuff /mnt/stuff
重新設定邏輯卷大小
邏輯卷的一個好處是你能使你的儲存物理地變大或變小,而不需要移動所有東西到一個更大的硬碟。另外,你可以新增新的硬碟並同時擴充套件你的捲組。或者如果你有一個不使用的硬碟,你可以從捲組中移除它使得邏輯捲變小。
這裡有三個用於使物理卷、卷組和邏輯卷變大或變小的基礎工具。
注意:這些命令中的每個都要以 pv、vg 或 lv 開頭,取決於你的工作物件。
- resize – 能壓縮或擴充套件物理卷和邏輯卷,但捲組不能
- extend – 能使捲組和邏輯卷變大但不能變小
- reduce – 能使捲組和邏輯捲變小但不能變大
讓我們來看一個如何向剛建立的邏輯卷 "lvstuff" 新增新硬碟驅動的例子。
安裝並格式化新硬碟驅動
按照上面建立新分割區並更改分割區型別為 LVM(8e) 的步驟安裝一個新硬碟驅動。然後用 pvcreate 命令建立一個 LVM 能識別的物理卷。
新增新硬碟到卷組
要新增新的硬碟到一個捲組,你只需要知道你的新分割區,在我們的例子中是 /dev/sdc1,以及想要新增到的卷組的名稱。
這會新增新物理捲到已存在的捲組中。
vgextend vgpool /dev/sdc1
擴充套件邏輯卷
調整邏輯卷的大小,我們需要指出的是通過大小而不是裝置來擴充套件。在我們的例子中,我們會新增一個 8GB 的硬碟驅動到我們的 3GB vgpool。我們可以用 lvextend 或 lvresize 命令使該空間可用。
lvextend -L8G /dev/vgpool/lvstuff
當這個命令工作的時候你會發現它實際上重新設定邏輯卷大小為 8GB 而不是我們期望的將 8GB 新增到已存在的捲上。要新增剩餘的可用 3GB 你需要用下面的命令。
lvextend -L+3G/dev/vgpool/lvstuff
現在我們的邏輯卷已經是 11GB 大??了。
擴充套件檔案系統
邏輯卷是 11GB 大小但是上面的檔案系統仍然只有 3GB。要使檔案系統使用整個的 11GB 可用空間你需要用 resize2fs 命令。你只需要指定 resize2fs 到 11GB 邏輯卷它就會幫你完成其餘的工作。
resize2fs /dev/vgpool/lvstuff
注意:如果你使用除 ext3/4 之外的檔案系統,請檢視調整你的檔案系統大小的工具。
壓縮邏輯卷
如果你想從卷組中移除一個硬碟驅動你可以按照上面的步驟反向操作,並用 lvreduce 或 vgreduce 命令代替。
- 調整檔案系統大小 (調整之前確保已經移動檔案到硬碟驅動安全的地方)
- 減小邏輯卷 (除了 + 可以擴充套件大小,你也可以用 - 壓縮大小)
- 用 vgreduce 從卷組中移除硬碟
備份邏輯卷
快照是一些新的高階檔案系統提供的功能,但是 ext3/4 檔案系統並沒有快照的功能。LVM 快照最棒的是你的檔案系統永不掉線,你可以擁有你想要的任何大小而不需要額外的硬碟空間。
LVM 獲取快照的時候,會有一張和邏輯卷完全相同的“照片”,該“照片”可以用於在不同的硬碟上進行備份。生成一個備份的時候,任何需要新增到邏輯卷的新資訊會如往常一樣寫入磁碟,但會跟蹤更改使得原始快照永遠不會損毀。
要建立一個快照,我們需要建立擁有足夠空閒空間的邏輯卷,用於儲存我們備份的時候會寫入該邏輯卷的任何新資訊。如果驅動並不是經常寫入,你可以使用很小的一個儲存空間。備份完成的時候我們只需要移除臨時邏輯卷,原始邏輯卷會和往常一樣。
建立新快照
建立 lvstuff 的快照,用帶 -s 標記的 lvcreate 命令。
lvcreate -L512M -s -n lvstuffbackup /dev/vgpool/lvstuff
這裡我們建立了一個只有 512MB 的邏輯卷,因為該硬碟實際上並不會使用。512MB 的空間會儲存備份時產生的任何新資料。
掛載新快照
和之前一樣,我們需要建立一個掛載點並掛載新快照,然後才能從中複製檔案。
mkdir /mnt/lvstuffbackup
mount /dev/vgpool/lvstuffbackup /mnt/lvstuffbackup
複製快照和刪除邏輯卷
你剩下需要做的是從 /mnt/lvstuffbackup/ 中複製所有檔案到一個外部的硬碟或者打包所有檔案到一個檔案。
注意:tar -c 會建立一個歸檔檔案,-f 要指出歸檔檔案的名稱和路徑。要獲取 tar 命令的幫助資訊,可以在終端中輸入 man tar。
tar -cf /home/rothgar/Backup/lvstuff-ss /mnt/lvstuffbackup/
記住備份時候寫到 lvstuff 的所有檔案都會在我們之前建立的臨時邏輯卷中被跟蹤。確保備份的時候你有足夠的空閒空間。
備份完成後,解除安裝捲並移除臨時快照。
umount /mnt/lvstuffbackup
lvremove /dev/vgpool/lvstuffbackup/
刪除邏輯卷
要刪除一個邏輯卷,你首先需要確保捲已經解除安裝,然後你可以用 lvremove 命令刪除它。邏輯卷刪除後你可以移除卷組,捲組刪除後你可以刪除物理卷。
這是所有移除我們建立的捲和組的命令。
umount /mnt/lvstuff
lvremove /dev/vgpool/lvstuff
vgremove vgpool
pvremove /dev/sdb1 /dev/sdc1
這些已經囊括了關於 LVM 你需要了解的大部分知識。如果你有任何關於這些討論的經驗,請在下面的評論框中和大家分享。
- 使用LVM建立彈性磁碟儲存——第一部分 http://www.linuxidc.com/Linux/2014-10/107697.htm
- 在Linux中擴充套件/縮減LVM(第二部分) http://www.linuxidc.com/Linux/2014-10/107786.htm
- 在 LVM中 錄制邏輯卷快照並恢復(第三部分) http://www.linuxidc.com/Linux/2014-11/108867.htm
- 在LVM中設定精簡資源調配卷(第四部分) http://www.linuxidc.com/Linux/2014-11/109757.htm
- 使用條塊化I/O管理多個LVM磁碟(第五部分) http://www.linuxidc.com/Linux/2014-12/110532.htm
相關文章