邏輯卷管理器(LVM)

一、什麼是LVM?

LVM(Logical Volume Manager)邏輯卷管理是在Linux2.4內核以上實現的磁盤管理技術。它是Linux環境下對磁盤分區進行管理的一種機制。現在不僅僅是Linux系統上可以使用LVM這種磁盤管理機制,對於其它的類UNIX操作系統,以及windows操作系統都有類似與LVM這種磁盤管理軟件。
LVM的工作原理其實很簡單,它就是通過將底層的物理硬盤抽象的封裝起來,然後以邏輯卷的方式呈現給上層應用。在傳統的磁盤管理機制中,我們的上層應用是直接訪問文件系統,從而對底層的物理硬盤進行讀取,而在LVM中,其通過對底層的硬盤進行封裝,當我們對底層的物理硬盤進行操作時,其不再是針對於分區進行操作,而是通過一個叫做邏輯卷的東西來對其進行底層的磁盤管理操作。比如說我增加一個物理硬盤,這個時候上層的服務是感覺不到的,因爲呈現給上次服務的是以邏輯卷的方式。

二、LVM的優缺點

1.優點

①.可以在系統運行的狀態下動態的擴展文件系統的大小。
在Linux操作系統中我們的磁盤管理機制和Windows上的都差不多,絕大多數都是使用MBR(Master Boot Recorder)都是通過先對一個硬盤進行分區,然後再將該分區進行文件系統的格式化,在Linux系統中如果要使用該分區就將其掛載上去即可,windows的話其實底層也就是自動將所有的分區掛載好,然後我們就可以對該分區進行使用了。
可這樣做的話會帶來很多問題,比如我們使用的一個分區所剩空間大小已經不夠使用了,這個時候我們沒法對分區進行擴充,我們只能通過增加硬盤,然後在新的硬盤上創建分區,對分區進行格式化,然後將之前分區的所有東西都拷貝到新的分區裏面才行。但是新增加的硬盤是作爲獨立的文件系統存在的,原有的文件系統並沒有得到任何的擴充,上層應用只能訪問到一個文件系統。這樣的方式對個人的電腦來說可能還能接受,但是如果對於生產環境下的服務器來說,這是不可接受的。因爲如果要把一個分區的內容都拷貝到另一個分區上去,勢必要首先卸載掉之前的那個分區,然後再對整個分區進行拷貝,如果服務器上運行着一個重要的服務,要求是 7*24 小時運行正常的,那麼卸載掉分區這是不可想象的,同時如果該分區保存的內容非常非常的多,那麼在對分區進行轉移時時間可能會耗費很久,所以,這個時候我們就會受到傳統磁盤管理的限制,因爲其不能夠進行動態的磁盤管理。因此,爲了解決這個問題,LVM技術就誕生了!這也是LVM最大的優點。

②.文件系統可以跨多個磁盤,因此文件系統大小不會受物理磁盤的限制。
③.可以增加新的磁盤到LVM的存儲池中。
④.可以以鏡像的方式冗餘重要的數據到多個物理磁盤。
⑤.可以方便的導出整個卷組到另外一臺機器。
2.缺點

①.在從卷組中移除一個磁盤的時候必須使用reducevg命令(這個命令要求root權限,並且不允許在快照卷組中使用)。
②.當卷組中的一個磁盤損壞時,整個卷組都會受到影響。
③.因爲加入了額外的操作,存貯性能受到影響。

三、LVM的用法

1.名詞解釋

邏輯卷管理器(LVM)
如圖所示就是LVM的基本組成
PV(Physical Volume):物理卷,處於LVM最底層,可以是物理硬盤或者分區。
PP(Physical Extend):物理區域,PV中可以用於分配的最小存儲單元,可以在創建PV的時候制定(默認爲4MB),如1M, 2M, 4M, 8M, 32M, 64M…組成同一VG中所有PV的PE大小應該相同。
VG(Volume Group):卷組,建立在PV之上,可以含有一個到多個PV。
LV(Logical Volume):邏輯卷,建立在VG之上,相當於原來分區的概念。不過大小可以動態改變。
2.LVM的創建
①.首先我們要創建兩個分區爲接下來的LVM做準備,在這裏我添加了一塊空硬盤sdb,在上面創建了兩個分區sdb1和sdb2各500M。
邏輯卷管理器(LVM)
②.用pvcreate命令在新建的分區上創建PV
邏輯卷管理器(LVM)
在這裏是因爲這兩個分區之前被格式化爲ext4系統了,所以這裏要把它變爲邏輯卷需要輸入Y確認更改
創建完後我們可以用pvs查看或者pvdisplay查看詳細信息
邏輯卷管理器(LVM)
邏輯卷管理器(LVM)
因爲在這之前我做過一次LVM所以我這裏有好幾個PV卷組,而像上圖中用pvs命令查看時我們發現我們新創的PV卷組和以前創建的有點不同,它們的Attr部分不一樣,這是因爲我們新創建的PV卷組還沒有激活,a---表示已激活的pv卷組。VG那一欄是所屬的VG組,因爲我們還沒有劃分VG組,所以這一欄也是空。
③.使用vgcreate命令創建一個VG組,並將我們創建的兩個PV加入VG組
邏輯卷管理器(LVM)
同樣我們也是用vgsvgdisplay命令查看卷組信息及詳細信息
邏輯卷管理器(LVM)
vgdisplay後跟卷組名可以只查看這個卷組的詳細信息,不跟卷組名是查看所有卷組的詳細信息。
這裏我們看到我們創好的vg卷組PE大小爲4MiB,這是PE的默認大小,PE是卷組的最小儲存單位,我們也可以用-s參數來修改,不過這隻能才創建卷組時使用,一旦卷組創建成功是沒法再去修改PE大小的。
④.使用lvcreate命令從VG中創建一個邏輯卷
邏輯卷管理器(LVM)
這裏我們使用-L參數後跟的是你要設定的邏輯卷大小,這個大小必須是是你設定的PE值的整數倍,如果不是它會給你分一個比你設定的大一點的空間也就是向上去整數倍空間。也可以使用-l但後面跟的就是PE數量像上個步驟中我們劃分的卷組PE值爲4MiB,數量爲254,我們也可以使用-l跟數量,那劃分的邏輯卷大小就爲4x你劃分的數量MiB。
一般用大L 指定大小,弊端就是有可能用不完vg裏面的空間
用小 l,-l 127, 127 個PE ,弊端是需要計算,比如一個PE 4M 127x4M=508M 但是不會出現用不完vg的空間的情況
-n參數後跟邏輯卷名字,是對創建的卷組命名,最後跟的是卷組名。
邏輯卷的查看命令也是lvslvsdisplay
邏輯卷管理器(LVM)
這裏lvdisplay後跟卷組是查看這個卷組的詳細信息,只輸入lvdisplay是顯示所有邏輯卷的詳細信息
⑤.我們使用mkfs命令對創建的卷組進行格式化
邏輯卷管理器(LVM)
⑥.Linux下的文件系統需要被掛載後才能使用,我們創建一個空目錄,再把創建好的邏輯卷掛載上就可以使用了。
邏輯卷管理器(LVM)
要想實現開機自動掛載可以寫在fstab表裏
3.LVM的擴容與縮小
①.邏輯卷的擴容
LVM的強大之處不只是它可以擴容壓縮,更重要的是它可以支持在線擴容,但我們首先要保證VG中有足夠的空閒空間。
我們使用lvextend命令來對邏輯捲進行擴容
邏輯卷管理器(LVM)
我們先使用vgs查看VG所剩空間是否充足,接着再對lv1進行擴容。-L參數和創建卷組的-L參數一個性質,後面都是直接跟大小,不過這裏要注意+100M是增加100M空間,如果不跟+是擴容到指定的大小,同理如果使用-l參數後,後面跟的就是要增加多少PE值。最後跟的是想要擴容的邏輯卷。
擴容後我們查看一下邏輯卷的大小,確實變成了300M
邏輯卷管理器(LVM)
但這個時候我們用df-h命令查看一下發現掛載的文件系統並沒有增大,這就需要我們使用resize2fs命令手動同步一下文件系統,其實我們有更簡單的操作,就是在擴容的同時加上-r參數他會自動擴展文件系統大小,像這樣
邏輯卷管理器(LVM)
邏輯卷管理器(LVM)
②.卷組的擴容
如果我們發現卷組所剩空間已將不能滿足需求了,這時候我們就需要使用vgextend命令對卷組進行擴容
我們先添加一塊硬盤sdc
邏輯卷管理器(LVM)
在虛擬機中這個時候我們通常需要重啓,這裏我們可以使用echo "- - -" > /sys/class/scsi_host/host0/scan命令讓系統重新掃描SCSI總線來添加設備,因爲添加的是SCSI磁盤,所以掃描的是SCSI總線
邏輯卷管理器(LVM)
首先將要添加的硬盤格式化爲PV
邏輯卷管理器(LVM)
再將新的PV添加到指定的卷組中去
邏輯卷管理器(LVM)
我們可以看到vg卷組大小已經改變了。
②.邏輯卷的縮減
邏輯卷擴容可以在線操作但是縮減必須是離線執行,需要先卸載已掛載的邏輯卷。
[root@localhost ~]# umount /disk1/
擴容邏輯卷我們是先擴大邏輯卷再擴大文件系統,而縮小邏輯卷就需要我們反着來,我們要先縮小文件系統,再去縮小邏輯卷
邏輯卷管理器(LVM)
縮小文件系統前我們要先對文件系統做個掃描檢測,如果我們直接使用resize2fs系統會提示讓你先對文件系統進行檢測,這是爲了保護縮減文件系統時不對數據損害。
接着我們再來縮減邏輯卷

邏輯卷管理器(LVM)
注意:文件系統大小和邏輯卷大小一定要保持一致才行。如果邏輯卷大於文件系統,由於部分區域未格式化成文件系統會造成空間的浪費。
我們可以看到邏輯卷已經縮小了,接着我們再來掛載看看文件系統大小
邏輯卷管理器(LVM)
我們可以看到文件系統也變小了
縮小卷組
我們可以用vgreduce去縮小VG卷組的大小
邏輯卷管理器(LVM)
縮小VG卷組也就是把一個PV從卷組中移除,但我們要先肯定PV中沒有數據,不然就會造成數據的丟失
邏輯卷管理器(LVM)
接着我們可以使用pvremove命令移除PV,這樣就讓分區又重新變成了普通分區。

四、總結

下面我們就對整個LVM的工作原理進行個總結:
1.物理磁盤被格式化爲PV,空間被劃分爲一個個的PE
2.不同的PV加入到同一個VG中,不同PV的PE全部進入到了VG的PE池內
3.LV基於PE創建,大小爲PE的整數倍,組成LV的PE可能來自不同的物理磁盤
4.LV現在就直接可以格式化後掛載使用了
5.LV的擴充縮減實際上就是增加或減少組成該LV的PE數量,如果操作正確其過程不會丟失原始數據
PS:我們實際生產操作中很少用到邏輯卷的縮減,因爲縮減很容易就會造成數據損壞,這是得不償失的,所以我們不推薦對邏輯捲進行縮減。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章