如何在Ubuntu中管理和使用邏輯卷管理LVM
在我們之前的文章中,我們介紹了什么是 LVM 以及能用 LVM 做什么,今天我們會給你介紹一些 LVM 的主要管理工具,使得你在設(shè)置和擴展安裝時更游刃有余。
正如之前所述,LVM 是介于你的操作系統(tǒng)和物理硬盤驅(qū)動器之間的抽象層。這意味著你的物理硬盤驅(qū)動器和分區(qū)不再依賴于他們所在的硬盤驅(qū)動和分區(qū)。而是你的操作系統(tǒng)所見的硬盤驅(qū)動和分區(qū)可以是由任意數(shù)目的獨立硬盤匯集而成的或是一個軟件磁盤陣列。
要管理 LVM,這里有很多可用的 GUI 工具,但要真正理解 LVM 配置發(fā)生的事情,最好要知道一些命令行工具。這當你在一個服務(wù)器或不提供 GUI 工具的發(fā)行版上管理 LVM 時尤為有用。
LVM 的大部分命令和彼此都非常相似。每個可用的命令都由以下其中之一開頭:
- Physical Volume (物理卷) = pv
 - Volume Group (卷組)= vg
 - Logical Volume (邏輯卷)= lv
 
物理卷命令用于在卷組中添加或刪除硬盤驅(qū)動。卷組命令用于為你的邏輯卷操作更改顯示的物理分區(qū)抽象集。邏輯卷命令會以分區(qū)形式顯示卷組,使得你的操作系統(tǒng)能使用指定的空間。
可下載的 LVM 備忘單
為了幫助你理解每個前綴可用的命令,我們制作了一個備忘單。我們會在該文章中介紹一些命令,但仍有很多你可用但沒有介紹到的命令。
該列表中的所有命令都要以 root 身份運行,因為你更改的是會影響整個機器系統(tǒng)級設(shè)置。
如何查看當前 LVM 信息
你首先需要做的事情是檢查你的 LVM 設(shè)置。s 和 display 命令可以和物理卷(pv)、卷組(vg)以及邏輯卷(lv)一起使用,是一個找出當前設(shè)置的好起點。
display 命令會格式化輸出信息,因此比 s 命令更易于理解。對每個命令你會看到名稱和 pv/vg 的路徑,它還會給出空閑和已使用空間的信息。
最重要的信息是 PV 名稱和 VG 名稱。用這兩部分信息我們可以繼續(xù)進行 LVM 設(shè)置。
創(chuàng)建一個邏輯卷
邏輯卷是你的操作系統(tǒng)在 LVM 中使用的分區(qū)。創(chuàng)建一個邏輯卷,首先需要擁有一個物理卷和卷組。下面是創(chuàng)建一個新的邏輯卷所需要的全部命令。
創(chuàng)建物理卷
我們會從一個全新的沒有任何分區(qū)和信息的硬盤開始。首先找出你將要使用的磁盤。(/dev/sda, sdb, 等)
注意:記住所有的命令都要以 root 身份運行或者在命令前面添加 'sudo' 。
fdisk -l
如果之前你的硬盤從未格式化或分區(qū)過,在 fdisk 的輸出中你很可能看到類似下面的信息。這完全正常,因為我們會在下面的步驟中創(chuàng)建需要的分區(qū)。
我們的新磁盤位置是 /dev/sdb,讓我們用 fdisk 命令在磁盤上創(chuàng)建一個新的分區(qū)。
#p#
這里有大量能創(chuàng)建新分區(qū)的 GUI 工具,包括 Gparted,但由于我們已經(jīng)打開了終端,我們將使用 fdisk 命令創(chuàng)建需要的分區(qū)。
在終端中輸入以下命令:
fdisk /dev/sdb
這會使你進入到一個特殊的 fdisk 提示符中。
以指定的順序輸入命令創(chuàng)建一個使用新硬盤 100% 空間的主分區(qū)并為 LVM 做好了準備。如果你需要更改分區(qū)的大小或想要多個分區(qū),我建議使用 GParted 或自己了解一下關(guān)于 fdisk 命令的使用。
警告:下面的步驟會格式化你的硬盤驅(qū)動。確保在進行下面步驟之前你的硬盤驅(qū)動中沒有任何有用的信息。
- n = 創(chuàng)建新分區(qū)
 - p = 創(chuàng)建主分區(qū)
 - 1 = 成為磁盤上的首個分區(qū)
 
輸入 enter 鍵兩次以接受默認的第一個和最后一個柱面。
用下面的命令準備 LVM 所使用的分區(qū)。
- t = 更改分區(qū)類型
 - 8e = 更改為 LVM 分區(qū)類型
 
核實并將信息寫入硬盤。
- p = 查看分區(qū)設(shè)置使得在寫入更改到磁盤之前可以回看
 - w = 寫入更改到磁盤
 
運行這些命令之后,會退出 fdisk 提示符并返回到終端的 bash 提示符中。
輸入 pvcreate /dev/sdb1 在剛創(chuàng)建的分區(qū)上新建一個 LVM 物理卷。
你也許會問為什么我們不用一個文件系統(tǒng)格式化分區(qū),不用擔心,該步驟在后面。
創(chuàng)建卷組
現(xiàn)在我們有了一個指定的分區(qū)和創(chuàng)建好的物理卷,我們需要創(chuàng)建一個卷組。很幸運這只需要一個命令。
vgcreate vgpool /dev/sdb1
vgpool 是新創(chuàng)建的卷組的名稱。你可以使用任何你喜歡的名稱,但建議標簽以 vg 開頭,以便后面你使用它時能意識到這是一個卷組。
創(chuàng)建邏輯卷
創(chuàng)建 LVM 將使用的邏輯卷:
lvcreate -L 3G -n lvstuff vgpool
-L 命令指定邏輯卷的大小,在該情況中是 3 GB,-n 命令指定卷的名稱。 指定 vgpool 以便 lvcreate 命令知道從什么卷獲取空間。
格式化并掛載邏輯卷
最后一步是用一個文件系統(tǒng)格式化新的邏輯卷。如果你需要選擇一個 Linux 文件系統(tǒng)的幫助,請閱讀 如果根據(jù)需要選取最合適的文件系統(tǒng)。
mkfs -t ext3 /dev/vgpool/lvstuff
創(chuàng)建掛載點并將卷掛載到你可以使用的地方。
mkdir /mnt/stuffmount -t ext3 /dev/vgpool/lvstuff /mnt/stuff
#p#
重新設(shè)置邏輯卷大小
邏輯卷的一個好處是你能使你的存儲物理地變大或變小,而不需要移動所有東西到一個更大的硬盤。另外,你可以添加新的硬盤并同時擴展你的卷組?;蛘呷绻阌幸粋€不使用的硬盤,你可以從卷組中移除它使得邏輯卷變小。
這里有三個用于使物理卷、卷組和邏輯卷變大或變小的基礎(chǔ)工具。
注意:這些命令中的每個都要以 pv、vg 或 lv 開頭,取決于你的工作對象。
- resize – 能壓縮或擴展物理卷和邏輯卷,但卷組不能
 - extend – 能使卷組和邏輯卷變大但不能變小
 - reduce – 能使卷組和邏輯卷變小但不能變大
 
讓我們來看一個如何向剛創(chuàng)建的邏輯卷 "lvstuff" 添加新硬盤驅(qū)動的例子。
安裝并格式化新硬盤驅(qū)動
按照上面創(chuàng)建新分區(qū)并更改分區(qū)類型為 LVM(8e) 的步驟安裝一個新硬盤驅(qū)動。然后用 pvcreate 命令創(chuàng)建一個 LVM 能識別的物理卷。
添加新硬盤到卷組
要添加新的硬盤到一個卷組,你只需要知道你的新分區(qū),在我們的例子中是 /dev/sdc1,以及想要添加到的卷組的名稱。
這會添加新物理卷到已存在的卷組中。
vgextend vgpool /dev/sdc1
擴展邏輯卷
調(diào)整邏輯卷的大小,我們需要指出的是通過大小而不是設(shè)備來擴展。在我們的例子中,我們會添加一個 8GB 的硬盤驅(qū)動到我們的 3GB vgpool。我們可以用 lvextend 或 lvresize 命令使該空間可用。
lvextend -L8G /dev/vgpool/lvstuff
當這個命令工作的時候你會發(fā)現(xiàn)它實際上重新設(shè)置邏輯卷大小為 8GB 而不是我們期望的將 8GB 添加到已存在的卷上。要添加剩余的可用 3GB 你需要用下面的命令。
lvextend -L+3G /dev/vgpool/lvstuff
現(xiàn)在我們的邏輯卷已經(jīng)是 11GB 大小了。
擴展文件系統(tǒng)
邏輯卷是 11GB 大小但是上面的文件系統(tǒng)仍然只有 3GB。要使文件系統(tǒng)使用整個的 11GB 可用空間你需要用 resize2fs 命令。你只需要指定 resize2fs 到 11GB 邏輯卷它就會幫你完成其余的工作。
resize2fs /dev/vgpool/lvstuff
注意:如果你使用除 ext3/4 之外的文件系統(tǒng),請查看調(diào)整你的文件系統(tǒng)大小的工具。
壓縮邏輯卷
如果你想從卷組中移除一個硬盤驅(qū)動你可以按照上面的步驟反向操作,并用 lvreduce 或 vgreduce 命令代替。
- 調(diào)整文件系統(tǒng)大小 (調(diào)整之前確保已經(jīng)移動文件到硬盤驅(qū)動安全的地方)
 - 減小邏輯卷 (除了 + 可以擴展大小,你也可以用 - 壓縮大小)
 - 用 vgreduce 從卷組中移除硬盤
 
備份邏輯卷
快照是一些新的高級文件系統(tǒng)提供的功能,但是 ext3/4 文件系統(tǒng)并沒有快照的功能。LVM 快照最棒的是你的文件系統(tǒng)永不掉線,你可以擁有你想要的任何大小而不需要額外的硬盤空間。
LVM 獲取快照的時候,會有一張和邏輯卷完全相同的“照片”,該“照片”可以用于在不同的硬盤上進行備份。生成一個備份的時候,任何需要添加到邏輯卷的新信息會如往常一樣寫入磁盤,但會跟蹤更改使得原始快照永遠不會損毀。
要創(chuàng)建一個快照,我們需要創(chuàng)建擁有足夠空閑空間的邏輯卷,用于保存我們備份的時候會寫入該邏輯卷的任何新信息。如果驅(qū)動并不是經(jīng)常寫入,你可以使用很小的一個存儲空間。備份完成的時候我們只需要移除臨時邏輯卷,原始邏輯卷會和往常一樣。
創(chuàng)建新快照
創(chuàng)建 lvstuff 的快照,用帶 -s 標記的 lvcreate 命令。
lvcreate -L512M -s -n lvstuffbackup /dev/vgpool/lvstuff
這里我們創(chuàng)建了一個只有 512MB 的邏輯卷,因為該硬盤實際上并不會使用。512MB 的空間會保存?zhèn)浞輹r產(chǎn)生的任何新數(shù)據(jù)。
掛載新快照
和之前一樣,我們需要創(chuàng)建一個掛載點并掛載新快照,然后才能從中復(fù)制文件。
mkdir /mnt/lvstuffbackupmount /dev/vgpool/lvstuffbackup /mnt/lvstuffbackup
復(fù)制快照和刪除邏輯卷
你剩下需要做的是從 /mnt/lvstuffbackup/ 中復(fù)制所有文件到一個外部的硬盤或者打包所有文件到一個文件。
注意:tar -c 會創(chuàng)建一個歸檔文件,-f 要指出歸檔文件的名稱和路徑。要獲取 tar 命令的幫助信息,可以在終端中輸入 man tar。
tar -cf /home/rothgar/Backup/lvstuff-ss /mnt/lvstuffbackup/
記住備份時候?qū)懙?lvstuff 的所有文件都會在我們之前創(chuàng)建的臨時邏輯卷中被跟蹤。確保備份的時候你有足夠的空閑空間。
備份完成后,卸載卷并移除臨時快照。
umount /mnt/lvstuffbackuplvremove /dev/vgpool/lvstuffbackup/
刪除邏輯卷
要刪除一個邏輯卷,你首先需要確保卷已經(jīng)卸載,然后你可以用 lvremove 命令刪除它。邏輯卷刪除后你可以移除卷組,卷組刪除后你可以刪除物理卷。
這是所有移除我們創(chuàng)建的卷和組的命令。
umount /mnt/lvstufflvremove /dev/vgpool/lvstuffvgremove vgpoolpvremove /dev/sdb1 /dev/sdc1
這些已經(jīng)囊括了關(guān)于 LVM 你需要了解的大部分知識。如果你有任何關(guān)于這些討論的經(jīng)驗,請在下面的評論框中和大家分享。
















 
 
 





 
 
 
 