在咱們以前的文章中,咱們介紹了什麼是 LVM 以及能用 LVM 作什麼,今天咱們會給你介紹一些 LVM 的主要管理工具,使得你在設置和擴展安裝時更遊刃有餘。linux
正如以前所述,LVM 是介於你的操做系統和物理硬盤驅動器之間的抽象層。這意味着你的物理硬盤驅動器和分區再也不依賴於他們所在的硬盤驅動和分區。而是你的操做系統所見的硬盤驅動和分區能夠是由任意數目的獨立硬盤聚集而成的或是一個軟件磁盤陣列。ubuntu
要管理 LVM,這裏有不少可用的 GUI 工具,但要真正理解 LVM 配置發生的事情,最好要知道一些命令行工具。這當你在一個服務器或不提供 GUI 工具的發行版上管理 LVM 時尤其有用。安全
LVM 的大部分命令和彼此都很是類似。每一個可用的命令都由如下其中之一開頭:bash
物理卷命令用於在卷組中添加或刪除硬盤驅動。卷組命令用於爲你的邏輯卷操做更改顯示的物理分區抽象集。邏輯卷命令會以分區形式顯示卷組,使得你的操做系統能使用指定的空間。服務器
爲了幫助你理解每一個前綴可用的命令,咱們製做了一個備忘單。咱們會在該文章中介紹一些命令,但仍有不少你可用但沒有介紹到的命令。工具
該列表中的全部命令都要以 root 身份運行,由於你更改的是會影響整個機器系統級設置。spa
你首先須要作的事情是檢查你的 LVM 設置。s 和 display 命令能夠和物理卷(pv)、卷組(vg)以及邏輯卷(lv)一塊兒使用,是一個找出當前設置的好起點。操作系統
display 命令會格式化輸出信息,所以比 s 命令更易於理解。對每一個命令你會看到名稱和 pv/vg 的路徑,它還會給出空閒和已使用空間的信息。命令行
最重要的信息是 PV 名稱和 VG 名稱。用這兩部分信息咱們能夠繼續進行 LVM 設置。code
邏輯卷是你的操做系統在 LVM 中使用的分區。建立一個邏輯卷,首先須要擁有一個物理卷和卷組。下面是建立一個新的邏輯卷所須要的所有命令。
咱們會從一個全新的沒有任何分區和信息的硬盤開始。首先找出你將要使用的磁盤。(/dev/sda, sdb, 等)
注意:記住全部的命令都要以 root 身份運行或者在命令前面添加 'sudo' 。
fdisk -l
若是以前你的硬盤從未格式化或分區過,在 fdisk 的輸出中你極可能看到相似下面的信息。這徹底正常,由於咱們會在下面的步驟中建立須要的分區。
咱們的新磁盤位置是 /dev/sdb,讓咱們用 fdisk 命令在磁盤上建立一個新的分區。
這裏有大量能建立新分區的 GUI 工具,包括 Gparted,但因爲咱們已經打開了終端,咱們將使用 fdisk 命令建立須要的分區。
在終端中輸入如下命令:
fdisk /dev/sdb
這會使你進入到一個特殊的 fdisk 提示符中。
以指定的順序輸入命令建立一個使用新硬盤 100% 空間的主分區併爲 LVM 作好了準備。若是你須要更改分區的大小或想要多個分區,我建議使用 GParted 或本身瞭解一下關於 fdisk 命令的使用。
警告:下面的步驟會格式化你的硬盤驅動。確保在進行下面步驟以前你的硬盤驅動中沒有任何有用的信息。
輸入 enter 鍵兩次以接受默認的第一個和最後一個柱面。
用下面的命令準備 LVM 所使用的分區。
覈實並將信息寫入硬盤。
運行這些命令以後,會退出 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 開頭,取決於你的工做對象。
讓咱們來看一個如何向剛建立的邏輯卷 "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 命令代替。
快照是一些新的高級文件系統提供的功能,可是 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 你須要瞭解的大部分知識。若是你有任何關於這些討論的經驗,請在下面的評論框中和你們分享。