LVM詳解


簡述

LVM Logical Volume Manager,中文一般翻譯為 "邏輯卷管理",它是 Linux 下對磁盤分區進行管理的一種機制。LVM利用Linux內核的device-mapper功能來實現存儲系統的虛擬化(系統分區獨立於底層硬件)。

LVM 是建立在磁盤分區和文件系統之間的一個邏輯層,++系統管理員可以利用 LVM 在不重新對磁盤分區的情況下動態的調整分區的大小++。如果系統新增了一塊硬盤,通過LVM就可以將新增的硬盤空間直接擴展到原來的磁盤分區上。

LVM 的優點:

  • 文件系統可以跨多個磁盤,因此大小不再受物理磁盤的限制。
  • 可以在系統運行狀態下動態地擴展文件系統大小。
  • 可以以鏡像的方式冗余重要數據到多個物理磁盤上。
  • 可以很方便地導出整個卷組,並導入到另外一台機器上。

LVM 缺點:

  • 在從卷組中移除一個磁盤的時候必須使用 reducevg 命令(這個命令要求root權限,並且不允許在快照卷組中使用)。
  • 當卷組中的一個磁盤損壞時,整個卷組都會受影響。
  • 因為增加了一個邏輯層,存儲的性能會受影響。

LVM相關概念

  • PV(Physical Volume):物理卷

硬盤分區后但還未格式化為文件系統,可使用pvcreate命令將分區創建為PV,其對應的system ID為8e即LVM格式所對應的系統標識符。

  • VG(Volume Group):卷組

將多個PV組合起來,使用vgcreate創建卷組,這樣卷組就可以包含多個PV,相當於重新組合多個分區后所得到的磁盤。雖然VG是組合了多個PV,但創建VG時會將VG所有的空間根據指定的PE大小划分為多個PE,在LVM模式中存儲都是以PE為單元,類似於文件系統中的BLOCK。

  • PE(Physical Extent):物理塊

PE是VG的存儲單元,實際的數據都是存儲在PE中

  • LV(Logical Volume):邏輯卷

VG相當於組合的多個硬盤,則LV相當於分區,只不過該分區是通過VG進行划分的。VG中存在很多PE,可以指定將多少個PE划分給一個LV,也可以直接指定大小來划分。划分為LV后就相當於划分了分區,僅需要對LV進行格式化文件系統即可。

  • LE(Logical Extent):邏輯塊

PE是物理存儲單元,而LE則是邏輯存儲單元,即LE為LV中的邏輯存儲單元,與PE大小一致。從VG中划分LV,實際上就是從VG中划分PE,而划分LV后稱之為LE,而不是PE了。

LVM之所以能夠伸縮容量,其實現方法就是將LV中的PE進行刪除或增加

image

LVM的存儲機制

LV是從VG中划分出來的,因此LV中的PE可能來自於多個PV。因此向LV存儲數據時,主要有兩種機制:

  • 線性模式(Linear):先將數據存儲在屬於同一個PV的PE,然后再向下一個PV中的PE
  • 條帶模式(Striped):將一份數據拆分為多份,分別寫入該LV對應的每個PV中,類似於RAID 0,因此讀寫性能會優於線性模式。

使用場景

在對磁盤分區的大小進行規划時,如果不能確定磁盤分區大小,可以通過LVM來解決;
使用 fdisk、gdisk 等工具對磁盤分區后,磁盤空間就固定了。空間過大會導致浪費,對於分區過小可以從新划分磁盤的分區,或者通過軟連接的方式將此分區的目錄鏈接到另外一個分區。這樣雖然能夠臨時解決問題,但會給管理帶來麻煩

創建LVM

一、磁盤分區(物理分區)

  1. 添加硬盤,通過fdisk -l查看硬盤是否添加成功;
  2. 對硬盤進行分區

二、准備物理卷

在這之前,檢查是否安裝了lvm(pvcreat /dev/sdb1),如果未安裝,安裝命令:

yum install -y lvm2
1、安裝好之后,創建物理卷:

2、查看物理卷:
pvdisplay
#或
pvs

LVM邏輯卷的創建與使用

三、創建卷組

先用2個物理卷創建一個卷組vg1

vgcreate vg1 /dev/sdb1 /dev/sdb2

LVM邏輯卷的創建與使用

使用vgdisplay或者vgs查看卷組信息

四、創建邏輯卷

1、在vg1卷組創建一個1000M的邏輯卷:

lvcreate -L 1000M -n lv1 vg1

LVM邏輯卷的創建與使用

2、查看邏輯卷信息:

LVM邏輯卷的創建與使用

3、邏輯卷格式化:

mkfs.ext4 /dev/vg1/lv1

LVM邏輯卷的創建與使用

4、掛載邏輯卷:

mount /dev/vg1/lv1 /data

五、擴展、縮減邏輯卷

  1. 添加硬盤;
fdisk -l   #確認硬盤添加成功
  1. 開始分區;
fdisk /dev/sdk
Command (m for help): n   # 1
Select (default p): p	# 2
Partition number (1-4, default 1): 1	# 3
First sector (2048-20971519, default 2048): 	#4
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): 	#5
Command (m for help): t		# 6
Hex code (type L to list all codes): 8e # 7
Command (m for help): p		# 8
Command (m for help): w		# 9

partprobe  #激活分區
  1. 創建物理卷pv
pvcreate /dev/sdk   #此處可以添加多個磁盤,和raid設備
pvs     #查看pv詳細信息
pvscan          #查看當前系統中的所有PV
  1. 將物理卷添加至卷組vg
vgdisplay		#查看卷組信息
vgextend centos /dev/sdk   #將pv添加至centos卷組
  1. 增加邏輯卷容量
vgdisplay		#查看vg可用空間
lvs			#查看lvs信息
lvresize -L 30G /dev/vg1/lv1   #重新設置lv大小
lvextend -L +5G /dev/testVG/testLV  #擴展lv
e2fsck -f /dev/vg1/lv1          #檢查磁盤錯誤(ext4)
resize2fs /dev/vg1/lv1          #更新邏輯卷信息
xfs_growfs /dev/centos/root     #更新邏輯卷信息,針對xfs文件系統
mount /mnt/    #重新掛載磁盤
  • lvresize:擴展或縮小邏輯卷
  • lvextend: 擴展邏輯卷
  1. 縮減邏輯卷大小

100縮減邏輯卷的時候,要事先卸載掛載的文件系統,然后減少邏輯卷的容量,然后重新掛載

umount /lvm1
e2fsck -f /dev/vgcyn/lvcyn      #強行檢查文件系統
resize2fs /dev/vgcyn/lvcyn 10G  #縮減邏輯空間到10G
lvreduce -L 10G /dev/vg1/lv1    #縮減邏輯空間到10G
lvs

五、刪除邏輯卷,卷組,物理卷

[注意: ]對於創建物理卷、創建卷組以及創建邏輯卷是有嚴格順序的,同樣,對於刪除邏輯卷、刪除卷組以及刪除物理卷也是有嚴格順序要求的

1、首先將正在使用的邏輯卷卸載掉  通過 umount 命令
2、將邏輯卷先刪除  通過 lvremove 命令
3、刪除卷組  通過 vgremove 命令
3、最后再來刪除我們的物理卷  通過 pvremove 命令

補充

2、在yum安裝某個服務的時候,如果不知道這個服務的准確名稱,但是知道其中的命令,比如LVM我們知道它的軟件名稱,但是知道LVM中的pvcreate命令,可以:

yum provides "/*/pvcreate"

3、安裝好之后,無法創建物理卷,輸入命令:

partprobe

參考

https://blog.51cto.com/dreamfire/1084729
https://www.cnblogs.com/gucb/p/13361087.html

LVM----擴展/縮小VG與擴展/縮小LV


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM