LVM 全攻略:一文掌握邏輯卷的增刪改查(含生產(chǎn)實(shí)操)
今天分享一下LVM,這是我結(jié)合生產(chǎn)環(huán)境總結(jié)出來的操作,非常實(shí)用,文章較長,請耐心閱讀。
一、邏輯卷介紹
LVM(Logical Volume Manager)邏輯卷管理,是在硬盤分區(qū)和文件系統(tǒng)之間添加的一個邏輯層。
LVM就是通過將底層的物理硬盤封裝,然后以邏輯卷的方式呈現(xiàn)給上層應(yīng)用。當(dāng)我們對底層的物理硬盤進(jìn)行操作時,不再是針對分區(qū)進(jìn)行操作,而是通過邏輯卷對底層硬盤進(jìn)行管理操作。
二、邏輯卷基本概念
概念原理圖如下:
(1) 物理卷(Physical Volume,PV)
物理卷是底層真正提供容量,存放數(shù)據(jù)的設(shè)備,它可以是硬盤分區(qū)、整個硬盤、raid陣列或SAN硬盤。設(shè)備必須初始化為LVM物理卷,才能與LVM結(jié)合使用。。
(2) 卷組(Volume Group, VG)
卷組建立在物理卷之上,它由一個或多個物理卷組成。即把物理卷整合起來提供容量分配。 一個LVM系統(tǒng)中可以只有一個卷組,也可以包含多個卷組。
(3) 邏輯卷(Logical Volume, LV)
邏輯卷建立在卷組之上,它是從卷組中“切出”的一塊空間。它是最終用戶使用的邏輯設(shè)備。邏輯卷創(chuàng)建之后,其大小可以伸縮。
(4) 物理區(qū)域 PE(physical extent)
每一個物理卷被劃分為稱為PE(Physical Extents)的基本單元,具有唯一編號的PE是能被LVM尋址的最小單元。PE的大小可指定,默認(rèn)為4 MB。 PE的大小一旦確定將不能改變,同一個卷組中的所有物理卷的PE的大小是一致的。 4MB=4096kb=4096kb/4kb=1024個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)時就已經(jīng)安裝了,不用重復(fù)安裝。
yum install lvm2 lvm2-libs -y
3. 創(chuàng)建物理卷(PV)
# 將三個硬盤做成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個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)建成一個卷組,卷組名自定義為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的個數(shù)或空間百分比來指定邏輯卷的大小 |
# 指定創(chuàng)建邏輯卷大小
[root@liyb ~]# lvcreate -n lv-data -L 2G vg-data
Logical volume "lv-data" created.
# 創(chuàng)建第二個LV,指定PE個數(shù),一個PE默認(rèn)4MB
[root@liyb ~]# lvcreate -n lv-data2 -l 200 vg-data
Logical volume "lv-data2" created.
# 創(chuàng)建第三個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)境盡量不要一個vg創(chuàng)建多個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空間還有近14G
2. 在線擴(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,此操作會將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í)行這個
xfs_growfs /dev/vg-data/lv-data
# 如果你的文件系統(tǒng)是ext4格式,則使用resize2fs
resize2fs /dev/vg-data/lv-data
4. 驗(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),沒事別做這個操作,容易丟數(shù)據(jù)。
- xfs文件系統(tǒng)可支持離線擴(kuò)容,但是操作時做好備份。
五、刪除邏輯卷(謹(jǐn)慎)
如果要刪除邏輯卷,逆向操作步驟為:
卸載文件系統(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,如果有多個LV使用同一個卷組,會提示你都刪除。
[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.