如何在 Ubuntu 中管理和使用邏輯卷管理 LVM
![](https://linuxstory.org/wp-content/uploads/2024/06/231045qa6vy9zgf5fkh7a6.png)
在我們之前的文章中,我們介紹了什麼是 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 你需要了解的大部分知識。如果你有任何關於這些討論的經驗,請在下面的評論框中和大家分享。
via: http://www.howtogeek.com/howto/40702/how-to-manage-and-use-lvm-logical-volume-management-in-ubuntu/
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive