LVM 全攻略:一文掌握邏輯卷的增刪改查(含生產(chǎn)實(shí)操)
今天分享一下LVM,這是我結(jié)合生產(chǎn)環(huán)境總結(jié)出來的操作,非常實(shí)用,文章較長(zhǎng),請(qǐng)耐心閱讀。

一、邏輯卷介紹
LVM(Logical Volume Manager)邏輯卷管理,是在硬盤分區(qū)和文件系統(tǒng)之間添加的一個(gè)邏輯層。
LVM就是通過將底層的物理硬盤封裝,然后以邏輯卷的方式呈現(xiàn)給上層應(yīng)用。當(dāng)我們對(duì)底層的物理硬盤進(jìn)行操作時(shí),不再是針對(duì)分區(qū)進(jìn)行操作,而是通過邏輯卷對(duì)底層硬盤進(jìn)行管理操作。
二、邏輯卷基本概念
概念原理圖如下:

(1) 物理卷(Physical Volume,PV)
物理卷是底層真正提供容量,存放數(shù)據(jù)的設(shè)備,它可以是硬盤分區(qū)、整個(gè)硬盤、raid陣列或SAN硬盤。設(shè)備必須初始化為L(zhǎng)VM物理卷,才能與LVM結(jié)合使用。。
(2) 卷組(Volume Group, VG)
卷組建立在物理卷之上,它由一個(gè)或多個(gè)物理卷組成。即把物理卷整合起來提供容量分配。 一個(gè)LVM系統(tǒng)中可以只有一個(gè)卷組,也可以包含多個(gè)卷組。
(3) 邏輯卷(Logical Volume, LV)
邏輯卷建立在卷組之上,它是從卷組中“切出”的一塊空間。它是最終用戶使用的邏輯設(shè)備。邏輯卷創(chuàng)建之后,其大小可以伸縮。
(4) 物理區(qū)域 PE(physical extent)
每一個(gè)物理卷被劃分為稱為PE(Physical Extents)的基本單元,具有唯一編號(hào)的PE是能被LVM尋址的最小單元。PE的大小可指定,默認(rèn)為4 MB。 PE的大小一旦確定將不能改變,同一個(gè)卷組中的所有物理卷的PE的大小是一致的。 4MB=4096kb=4096kb/4kb=1024個(gè)block
三、邏輯卷創(chuàng)建與刪除
操作命令:

創(chuàng)建和刪除順序:

1. 環(huán)境準(zhǔn)備
可以將硬盤做成PV,也可以將分區(qū)做成PV。
本次實(shí)驗(yàn)就用三塊5G的硬盤來模擬(容量你自定義即可)。

[root@liyb ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda           8:0    0   50G  0 disk 
├─sda1        8:1    0    2G  0 part /boot
└─sda2        8:2    0   48G  0 part 
  └─rl-root 253:0    0   48G  0 lvm  /
sdb           8:16   0    5G  0 disk 
sdc           8:32   0    5G  0 disk 
sdd           8:48   0    5G  0 disk 
sr0          11:0    1 10.2G  0 rom  
[root@liyb ~]#2. 安裝lvm相關(guān)軟件包
有些發(fā)行版本是安裝系統(tǒng)時(shí)就已經(jīng)安裝了,不用重復(fù)安裝。
yum install lvm2 lvm2-libs -y3. 創(chuàng)建物理卷(PV)
# 將三個(gè)硬盤做成PV
pvcreate /dev/sdb /dev/sdc /dev/sdd    # 也可以寫成/dev/sd{b..d} 或  /dev/sd[bcd] 或 /dev/sd[b-d]
# 查看PV情況,因?yàn)槲覀兏謪^(qū)也是LVM格式,所有有4個(gè)PV
pvs
# 刪除PV,這一步先不做。
pvremove /dev/sdb /dev/sdc /dev/sdb
圖片
說明:除了pvs還可以使用pvdisplay和pvscan等命令查看更詳細(xì)的信息
4. 創(chuàng)建與擴(kuò)展卷組(VG)
- 創(chuàng)建卷組(VG)使用vgcreate命令
 - 擴(kuò)展卷組使用vgextend命令
 
將/dev/sdb與/dev/sdc創(chuàng)建成一個(gè)卷組,卷組名自定義為vg-data:
# 創(chuàng)建卷組
[root@liyb ~]# vgcreate vg-data /dev/sdb  /dev/sdc
  Volume group "vg-data" successfully created將/dev/sdd擴(kuò)展添加到卷組vg01中:
# vgextend vg-data /dev/sdd
  Volume group "vg-data" successfully extended查看驗(yàn)證:
# 查看卷組情況
vgs
# 查看PV情況 
pvs
注意事項(xiàng):
- 可以通過-s指定PE大?。J(rèn)是4MB)
 - PE大,讀取速度快,但浪費(fèi)空間。反之,讀取速度慢,但節(jié)省空間。類似于socket
 
5. 將卷組劃分為邏輯卷(LV)
- 使用lvcreate命令劃分LV
 - 使用lvs命令查看
 
創(chuàng)建邏輯卷:
lvcreate常見參數(shù)  | 說明  | 
-n  | 指定邏輯卷的名字  | 
-L  | 指定邏輯卷的大小  | 
-l  | 通過指定PE的個(gè)數(shù)或空間百分比來指定邏輯卷的大小  | 
# 指定創(chuàng)建邏輯卷大小
[root@liyb ~]# lvcreate -n lv-data -L 2G vg-data
  Logical volume "lv-data" created.
# 創(chuàng)建第二個(gè)LV,指定PE個(gè)數(shù),一個(gè)PE默認(rèn)4MB
[root@liyb ~]# lvcreate -n lv-data2 -l 200 vg-data
  Logical volume "lv-data2" created.
# 創(chuàng)建第三個(gè)LV,將剩余的全部的50%空間分給它
[root@liyb ~]# lvcreate -n lv-data3 -l 50%free vg-data
  Logical volume "lv-data3" created.查看邏輯卷:
# lvs
注意事項(xiàng):
- 生產(chǎn)環(huán)境盡量不要一個(gè)vg創(chuàng)建多個(gè)lv,我上面例子只是為了驗(yàn)證常用功能
 - lv名字可以自定義,可以結(jié)合業(yè)務(wù)來起名字
 
6. 驗(yàn)證lv設(shè)備名
# ls /dev/vg-data
# ls /dev/mapper/vg-data*
7. 格式化并掛載
這里以lv-data為例,其他掛載的話,步驟一樣:
# 格式化
[root@liyb ~]# mkfs.xfs /dev/vg-data/lv-data
# 創(chuàng)建掛載點(diǎn),已有掛載目錄可省略
[root@liyb ~]# mkdir /data
# 掛載
[root@liyb ~] mount /dev/vg-data/lv-data  /data
# 查看掛載情況
df -h
四、邏輯卷在線擴(kuò)容
1. 查看vg空間
在生產(chǎn)環(huán)境中,擴(kuò)容順序是: 新增硬盤/分區(qū)-->創(chuàng)建PV-->擴(kuò)容VG-->擴(kuò)容LV-->擴(kuò)容文件系統(tǒng)
# 
df -h |tail -1
# 查看vgs剩余可用容量
[root@liyb ~]# vgs
  VG      #PV #LV #SN Attr   VSize   VFree 
  rl        1   1   0 wz--n- <48.00g     0 
  vg-data   3   3   0 wz--n- <14.99g <6.11g
		 # free空間還有近14G2. 在線擴(kuò)容邏輯卷
上次查看到,VG還有6G可用,我直接演示如何擴(kuò)容LV。我這里也演示LV擴(kuò)容的三種方法
# 方法一:指定擴(kuò)容后最終容量為3G(從2G變3G)
[root@liyb ~]# lvextend -L 3G /dev/vg-data/lv-data
  Size of logical volume vg-data/lv-data changed from 2.00 GiB (512 extents) to 3.00 GiB (768 extents).
  Logical volume vg-data/lv-data successfully resized.
# 方法二:在原有基礎(chǔ)再擴(kuò)容2G(從3G變5G)
[root@liyb ~]# lvextend -L +2G /dev/vg-data/lv-data
  Size of logical volume vg-data/lv-data changed from 3.00 GiB (768 extents) to 5.00 GiB (1280 extents).
  Logical volume vg-data/lv-data successfully resized.
# 方法三:將VG剩余容量全部擴(kuò)容給LV,此操作會(huì)將vg剩余空間全用完。
[root@liyb ~]# lvresize -l +100%FREE /dev/vg-data/lv-data
# 查看lvs
[root@liyb ~]# lvs
3. 擴(kuò)容文件系統(tǒng)
前面步驟只是擴(kuò)容了LV,文件系統(tǒng)并沒有擴(kuò)容,所以需要進(jìn)行下面步驟
# 適合xfs文件系統(tǒng),本次操作執(zhí)行這個(gè)
xfs_growfs  /dev/vg-data/lv-data
# 如果你的文件系統(tǒng)是ext4格式,則使用resize2fs
resize2fs  /dev/vg-data/lv-data4. 驗(yàn)證在線擴(kuò)容成功
[root@liyb ~]# df -h|grep data
/dev/mapper/vg--data-lv--data  8.1G   91M  8.0G   2% /data
注意事項(xiàng):
- 在線縮容LV目前只支持ext4文件系統(tǒng),沒事別做這個(gè)操作,容易丟數(shù)據(jù)。
 - xfs文件系統(tǒng)可支持離線擴(kuò)容,但是操作時(shí)做好備份。
 
五、刪除邏輯卷(謹(jǐn)慎)
如果要?jiǎng)h除邏輯卷,逆向操作步驟為:
卸載文件系統(tǒng)--->刪除邏輯卷LV--->刪除卷組--->刪除物理卷PV
# 卸載文件系統(tǒng),下面命令也可以選擇掛載點(diǎn)
[root@liyb ~]# umount /dev/vg-data/lv-data
# 刪除LV
[root@liyb ~]# lvremove /dev/vg-data/lv-data
Do you really want to remove active logical volume vg-data/lv-data? [y/n]: y
  Logical volume "lv-data" successfully removed.
# 刪除VG,如果有多個(gè)LV使用同一個(gè)卷組,會(huì)提示你都刪除。
[root@liyb ~]# vgremove vg-data 
Do you really want to remove volume group "vg-data" containing 2 logical volumes? [y/n]: y
Do you really want to remove active logical volume vg-data/lv-data2? [y/n]: y
  Logical volume "lv-data2" successfully removed.
Do you really want to remove active logical volume vg-data/lv-data3? [y/n]: y
  Logical volume "lv-data3" successfully removed.
  Volume group "vg-data" successfully removed
# 刪除物理卷PV
[root@liyb ~]# pvremove /dev/sd{b..d}
  Labels on physical volume "/dev/sdb" successfully wiped.
  Labels on physical volume "/dev/sdc" successfully wiped.
  Labels on physical volume "/dev/sdd" successfully wiped.















 
 
 





 
 
 
 