天天看點

如何在 Ubuntu 中管理和使用邏輯卷管理 LVM

如何在 Ubuntu 中管理和使用邏輯卷管理 LVM

正如之前所述,lvm 是介于你的作業系統和實體硬碟驅動器之間的抽象層。這意味着你的實體硬碟驅動器和分區不再依賴于他們所在的硬碟驅動和分區。而是你的作業系統所見的硬碟驅動和分區可以是由任意數目的獨立硬碟彙集而成的或是一個軟體磁盤陣列。

要管理 lvm,這裡有很多可用的 gui 工具,但要真正了解 lvm 配置發生的事情,最好要知道一些指令行工具。這當你在一個伺服器或不提供 gui 工具的發行版上管理 lvm 時尤為有用。

lvm 的大部分指令和彼此都非常相似。每個可用的指令都由以下其中之一開頭:

physical volume (實體卷) = pv

volume group (卷組)= vg

logical volume (邏輯卷)= lv

實體卷指令用于在卷組中添加或删除硬碟驅動。卷組指令用于為你的邏輯卷操作更改顯示的實體分區抽象集。邏輯卷指令會以分區形式顯示卷組,使得你的作業系統能使用指定的空間。

<a target="_blank"></a>

為了幫助你了解每個字首可用的指令,我們制作了一個備忘單。我們會在該文章中介紹一些指令,但仍有很多你可用但沒有介紹到的指令。

該清單中的所有指令都要以 root 身份運作,因為你更改的是會影響整個機器系統級設定。

如何在 Ubuntu 中管理和使用邏輯卷管理 LVM

你首先需要做的事情是檢查你的 lvm 設定。s 和 display 指令可以和實體卷(pv)、卷組(vg)以及邏輯卷(lv)一起使用,是一個找出目前設定的好起點。

display 指令會格式化輸出資訊,是以比 s 指令更易于了解。對每個指令你會看到名稱和 pv/vg 的路徑,它還會給出空閑和已使用空間的資訊。

如何在 Ubuntu 中管理和使用邏輯卷管理 LVM

最重要的資訊是 pv 名稱和 vg 名稱。用這兩部分資訊我們可以繼續進行 lvm 設定。

邏輯卷是你的作業系統在 lvm 中使用的分區。建立一個邏輯卷,首先需要擁有一個實體卷和卷組。下面是建立一個新的邏輯卷所需要的全部指令。

我們會從一個全新的沒有任何分區和資訊的硬碟開始。首先找出你将要使用的磁盤。(/dev/sda, sdb, 等)

注意:記住所有的指令都要以 root 身份運作或者在指令前面添加 'sudo' 。

<code>fdisk -l</code>

如果之前你的硬碟從未格式化或分區過,在 fdisk 的輸出中你很可能看到類似下面的資訊。這完全正常,因為我們會在下面的步驟中建立需要的分區。

如何在 Ubuntu 中管理和使用邏輯卷管理 LVM

我們的新磁盤位置是 /dev/sdb,讓我們用 fdisk 指令在磁盤上建立一個新的分區。

在終端中輸入以下指令:

<code>fdisk /dev/sdb</code>

這會使你進入到一個特殊的 fdisk 提示符中。

如何在 Ubuntu 中管理和使用邏輯卷管理 LVM

以指定的順序輸入指令建立一個使用新硬碟 100% 空間的主分區并為 lvm 做好了準備。如果你需要更改分區的大小或想要多個分區,我建議使用 gparted 或自己了解一下關于 fdisk 指令的使用。

警告:下面的步驟會格式化你的硬碟驅動。確定在進行下面步驟之前你的硬碟驅動中沒有任何有用的資訊。

n = 建立新分區

p = 建立主分區

1 = 成為磁盤上的首個分區

輸入 enter 鍵兩次以接受預設的第一個和最後一個柱面。

如何在 Ubuntu 中管理和使用邏輯卷管理 LVM

用下面的指令準備 lvm 所使用的分區。

t = 更改分區類型

8e = 更改為 lvm 分區類型

核實并将資訊寫入硬碟。

p = 檢視分區設定使得在寫入更改到磁盤之前可以回看

w = 寫入更改到磁盤

如何在 Ubuntu 中管理和使用邏輯卷管理 LVM

運作這些指令之後,會退出 fdisk 提示符并傳回到終端的 bash 提示符中。

輸入 pvcreate /dev/sdb1 在剛建立的分區上建立一個 lvm 實體卷。

你也許會問為什麼我們不用一個檔案系統格式化分區,不用擔心,該步驟在後面。

如何在 Ubuntu 中管理和使用邏輯卷管理 LVM

現在我們有了一個指定的分區和建立好的實體卷,我們需要建立一個卷組。很幸運這隻需要一個指令。

<code>vgcreate vgpool /dev/sdb1</code>

如何在 Ubuntu 中管理和使用邏輯卷管理 LVM

vgpool 是新建立的卷組的名稱。你可以使用任何你喜歡的名稱,但建議标簽以 vg 開頭,以便後面你使用它時能意識到這是一個卷組。

建立 lvm 将使用的邏輯卷:

<code>lvcreate -l 3g -n lvstuff vgpool</code>

如何在 Ubuntu 中管理和使用邏輯卷管理 LVM

-l 指令指定邏輯卷的大小,在該情況中是 3 gb,-n 指令指定卷的名稱。 指定 vgpool 以便 lvcreate 指令知道從什麼卷擷取空間。

<code>mkfs -t ext3 /dev/vgpool/lvstuff</code>

如何在 Ubuntu 中管理和使用邏輯卷管理 LVM

建立挂載點并将卷挂載到你可以使用的地方。

<code>mkdir /mnt/stuff</code>

<code>mount -t ext3 /dev/vgpool/lvstuff /mnt/stuff</code>

如何在 Ubuntu 中管理和使用邏輯卷管理 LVM

邏輯卷的一個好處是你能使你的存儲實體地變大或變小,而不需要移動所有東西到一個更大的硬碟。另外,你可以添加新的硬碟并同時擴充你的卷組。或者如果你有一個不使用的硬碟,你可以從卷組中移除它使得邏輯卷變小。

這裡有三個用于使實體卷、卷組和邏輯卷變大或變小的基礎工具。

注意:這些指令中的每個都要以 pv、vg 或 lv 開頭,取決于你的工作對象。

resize – 能壓縮或擴充實體卷和邏輯卷,但卷組不能

extend – 能使卷組和邏輯卷變大但不能變小

reduce – 能使卷組和邏輯卷變小但不能變大

讓我們來看一個如何向剛建立的邏輯卷 "lvstuff" 添加新硬碟驅動的例子。

按照上面建立新分區并更改分區類型為 lvm(8e) 的步驟安裝一個新硬碟驅動。然後用 pvcreate 指令建立一個 lvm 能識别的實體卷。

要添加新的硬碟到一個卷組,你隻需要知道你的新分區,在我們的例子中是 /dev/sdc1,以及想要添加到的卷組的名稱。

這會添加新實體卷到已存在的卷組中。

<code>vgextend vgpool /dev/sdc1</code>

如何在 Ubuntu 中管理和使用邏輯卷管理 LVM

調整邏輯卷的大小,我們需要指出的是通過大小而不是裝置來擴充。在我們的例子中,我們會添加一個 8gb 的硬碟驅動到我們的 3gb vgpool。我們可以用 lvextend 或 lvresize 指令使該空間可用。

<code>lvextend -l8g /dev/vgpool/lvstuff</code>

如何在 Ubuntu 中管理和使用邏輯卷管理 LVM

當這個指令工作的時候你會發現它實際上重新設定邏輯卷大小為 8gb 而不是我們期望的将 8gb 添加到已存在的卷上。要添加剩餘的可用 3gb 你需要用下面的指令。

<code>lvextend -l+3g /dev/vgpool/lvstuff</code>

如何在 Ubuntu 中管理和使用邏輯卷管理 LVM

現在我們的邏輯卷已經是 11gb 大小了。

邏輯卷是 11gb 大小但是上面的檔案系統仍然隻有 3gb。要使檔案系統使用整個的 11gb 可用空間你需要用 resize2fs 指令。你隻需要指定 resize2fs 到 11gb 邏輯卷它就會幫你完成其餘的工作。

<code>resize2fs /dev/vgpool/lvstuff</code>

如何在 Ubuntu 中管理和使用邏輯卷管理 LVM

注意:如果你使用除 ext3/4 之外的檔案系統,請檢視調整你的檔案系統大小的工具。

如果你想從卷組中移除一個硬碟驅動你可以按照上面的步驟反向操作,并用 lvreduce 或 vgreduce 指令代替。

調整檔案系統大小 (調整之前確定已經移動檔案到硬碟驅動安全的地方)

減小邏輯卷 (除了 + 可以擴充大小,你也可以用 - 壓縮大小)

用 vgreduce 從卷組中移除硬碟

快照是一些新的進階檔案系統提供的功能,但是 ext3/4 檔案系統并沒有快照的功能。lvm 快照最棒的是你的檔案系統永不掉線,你可以擁有你想要的任何大小而不需要額外的硬碟空間。

如何在 Ubuntu 中管理和使用邏輯卷管理 LVM

lvm 擷取快照的時候,會有一張和邏輯卷完全相同的“照片”,該“照片”可以用于在不同的硬碟上進行備份。生成一個備份的時候,任何需要添加到邏輯卷的新資訊會如往常一樣寫入磁盤,但會跟蹤更改使得原始快照永遠不會損毀。

要建立一個快照,我們需要建立擁有足夠空閑空間的邏輯卷,用于儲存我們備份的時候會寫入該邏輯卷的任何新資訊。如果驅動并不是經常寫入,你可以使用很小的一個存儲空間。備份完成的時候我們隻需要移除臨時邏輯卷,原始邏輯卷會和往常一樣。

建立 lvstuff 的快照,用帶 -s 标記的 lvcreate 指令。

<code>lvcreate -l512m -s -n lvstuffbackup /dev/vgpool/lvstuff</code>

如何在 Ubuntu 中管理和使用邏輯卷管理 LVM

這裡我們建立了一個隻有 512mb 的邏輯卷,因為該硬碟實際上并不會使用。512mb 的空間會儲存備份時産生的任何新資料。

和之前一樣,我們需要建立一個挂載點并挂載新快照,然後才能從中複制檔案。

<code>mkdir /mnt/lvstuffbackup</code>

<code>mount /dev/vgpool/lvstuffbackup /mnt/lvstuffbackup</code>

如何在 Ubuntu 中管理和使用邏輯卷管理 LVM

你剩下需要做的是從 /mnt/lvstuffbackup/ 中複制所有檔案到一個外部的硬碟或者打包所有檔案到一個檔案。

注意:tar -c 會建立一個歸檔檔案,-f 要指出歸檔檔案的名稱和路徑。要擷取 tar 指令的幫助資訊,可以在終端中輸入 man tar。

<code>tar -cf /home/rothgar/backup/lvstuff-ss /mnt/lvstuffbackup/</code>

如何在 Ubuntu 中管理和使用邏輯卷管理 LVM

記住備份時候寫到 lvstuff 的所有檔案都會在我們之前建立的臨時邏輯卷中被跟蹤。確定備份的時候你有足夠的空閑空間。

備份完成後,解除安裝卷并移除臨時快照。

<code>umount /mnt/lvstuffbackup</code>

<code>lvremove /dev/vgpool/lvstuffbackup/</code>

如何在 Ubuntu 中管理和使用邏輯卷管理 LVM

要删除一個邏輯卷,你首先需要確定卷已經解除安裝,然後你可以用 lvremove 指令删除它。邏輯卷删除後你可以移除卷組,卷組删除後你可以删除實體卷。

這是所有移除我們建立的卷群組的指令。

<code>umount /mnt/lvstuff</code>

<code>lvremove /dev/vgpool/lvstuff</code>

<code>vgremove vgpool</code>

<code>pvremove /dev/sdb1 /dev/sdc1</code>

如何在 Ubuntu 中管理和使用邏輯卷管理 LVM

這些已經囊括了關于 lvm 你需要了解的大部分知識。如果你有任何關于這些讨論的經驗,請在下面的評論框中和大家分享。

<b>原文釋出時間為:2015-08-05</b>

<b></b>

<b>本文來自雲栖社群合作夥伴“linux中國</b>

繼續閱讀