糟糕!磁盘爆系统干崩了,LVM来破局!
作者:IT邦德
中国DBA联盟(ACDU)成员,10余年DBA工作经验
擅长主流数据Oracle、MySQL、PG、openGauss运维
备份恢复,安装迁移,性能优化、故障应急处理等可提供技术业务:
1.DB故障处理/疑难杂症远程支援
2.Mysql/PG/Oracle/openGauss
数据库部署及数仓搭建
•••
微信:jem_db
QQ交流群:587159446
公众号:IT邦德
@
🍁 1.导读
🍁 2.LVM概念
⛳️ 2.1 LVM
⛳️ 2.2 PE
⛳️ 2.3 PV
⛳️ 2.4 VG
⛳️ 2.5 LV
3.LVM 全流程操作
4.Linux系统分区大小扩展
4.1 裸盘划分
4.2 创建PV
4.3 扩展逻辑卷
4.4 确认分区大小
5.总结
前言
!! 近期正在给客户部署几套新的Linux操作系统,讲LVM的基本知识做了下总结
🍁 1.导读
!! 想像一个情况,你在当初规划主机的时候将 /home 只给他 50G ,等到使用者众多之后导致这 个 filesystem 不够大, 此时你能怎么作?多数的朋友都是这样:再加一颗新硬盘,然后重新 分区、格式化,将 /home 的数据完整的复制过来, 然后将原本的 partition 卸载重新挂载新的 partition 。啊!好忙碌啊!若是第二次分区却给的容量太多!导致很多磁盘容量被浪费了!你想要将这个 partition 缩小时,又该如何作?将上述的流程再搞一遍!唉~烦死了,尤其复 制很花时间ㄟ~有没有更简单的方法呢?有的!那就是我们这个小节要介绍的 LVM 这玩意 儿!
🍁 2.LVM概念
!! LVM使用分层结构,如下图所示
PE(Physical Extend) 物理拓展
PV(Physical Volume) 物理卷
VG(Volume Group) 卷组
LV(Logical Volume) 逻辑卷
⛳️ 2.1 LVM
LVM 的全名是 Logical Volume Manager
!! 中文可以翻译作逻辑卷轴管理员。LVM 的作法是将几个实体的partitions (或 disk) 通过软件组合成为一块看起来是独立的大磁盘 (VG) ,然后将这块大磁盘再经过分区成为可使用分区 (LV), 最终就能够挂载使用了。但是为什么这样的系统可以进行 filesystem 的扩充或缩小呢?其实与一个称为PE的有关!
⛳️ 2.2 PE
Physical Extent, PE, 实体范围区块
!! 简单的说,这个 PE 就有点像文件系统里面的 block 大小啦。这样说应该就比较 好理解了吧?所以调整 PE 会影响到 LVM 的最大容量喔!
⛳️ 2.3 PV
Physical Volume, PV, 实体卷轴
!! 我们实际的 partition (或 Disk) 需要调整系统识别码 (system ID) 成为 8e (LVM 的识别码),然后再经过 pvcreate 的指令将他转成 LVM 最底层的实体卷轴 (PV) ,之后才能够将这些 PV 加以利用!
⛳️ 2.4 VG
Volume Group, VG, 卷轴群组
!! 所谓的 LVM 大磁盘就是将许多 PV 整合成这个 VG 的东西就是啦!所以 VG 就是 LVM 组合 起来的大磁盘!这么想就好了。
⛳️ 2.5 LV
Logical Volume, LV, 逻辑卷轴
!! 最终的 VG 还会被切成 LV,这个 LV 就是最后可以被格式化使用的类似分区的咚咚了!那么 LV 是否可以随意指定大小呢?当然不可以!既然 PE 是整个 LVM 的最小储存单位,那么 LV 的大小就与在此 LV 内的 PE 总数有关。为了方便使用者利用 LVM 来管理其系统,因此 LV 的设备文件名通常指定为“ /dev/vgname/lvname ”的样式!
通过 PV, VG, LV 的规划之后,
再利用 mkfs 就可以将你的 LV 格式化成为可以利用的文件系统了!
而且这个文件系统的容量在未来还能够进行扩充或减少,
而且里面的数据还不会被影响!实在是很“福气啦!
3.LVM 全流程操作
对/dev/sdb 进行分区
50G磁盘大约分 5个 PE,每个 PE 大约 10G
[root@rac1 ~]# fdisk /dev/sdb
[root@rac1 ~]# fdisk -l | grep dev(1)创建 PV
[root@rac1 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg_root lvm2 a-- 20.00g 7.80g
/dev/sda3 vg_root lvm2 a-- 29.80g 0
[root@rac1 ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
[root@rac1 ~]# pvcreate /dev/sdb2
Physical volume "/dev/sdb2" successfully created
root@rac1 ~]# pvcreate /dev/sdb3
Physical volume "/dev/sdb3" successfully created
root@rac1 ~]# pvcreate /dev/sdb5
Physical volume "/dev/sdb5" successfully created
[root@rac1 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg_root lvm2 a-- 20.00g 7.80g
/dev/sda3 vg_root lvm2 a-- 29.80g 0
/dev/sdb1 lvm2 a-- 10.00g 10.00g
/dev/sdb2 lvm2 a-- 10.00g 10.00g
/dev/sdb3 lvm2 a-- 10.00g 10.00g
/dev/sdb5 lvm2 a-- 10.00g 10.00g
(2)创建 VG
[root@rac1 ~]# vgcreate vg_orasoft /dev/sdb1 \
/dev/sdb2 /dev/sdb3 \
/dev/sdb5
Volume group "vg_orasoft" successfully created
[root@rac1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg_orasoft 4 0 0 wz--n- 40.00g 40.00g
vg_root 2 4 0 wz--n- 49.80g 7.80g
(3)创建 LV
[root@rac1 ~]# lvcreate -n lv_orasoft_u01 -L 40G vg_orasoft
Logical volume "lv_orasoft_u01" created
[root@rac1 ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv_orasoft_u01 vg_orasoft -wi-a----- 40.00g
Vol00 vg_root -wi-ao---- 20.00g
Vol01 vg_root -wi-ao---- 10.00g
Vol02 vg_root -wi-ao---- 10.00g
Vol03 vg_root -wi-ao---- 2.00g
(4)创建文件系统:
[root@rac1 ~]# mkfs.ext4 /dev/vg_orasoft/lv_orasoft_u01
[root@rac1 ~]# mkdir /u01
[root@rac1 ~]# mount /dev/vg_orasoft/lv_orasoft_u01 /u01
(5)加入/etc/fstab 文件
/dev/vg_orasoft/lv_orasoft_u01 /u01 ext4 defaults 0 0
4.Linux系统分区大小扩展
4.1 裸盘划分
root@rhel76 ~]# fdisk /dev/sdb[root@rhel76 ~]# ll /dev/sd*
brw-rw----. 1 root disk 8, 0 Nov 28 23:34 /dev/sda
brw-rw----. 1 root disk 8, 1 Nov 28 23:34 /dev/sda1
brw-rw----. 1 root disk 8, 2 Nov 28 23:34 /dev/sda2
brw-rw----. 1 root disk 8, 16 Nov 28 23:49 /dev/sdb
brw-rw----. 1 root disk 8, 17 Nov 28 23:49 /dev/sdb1
[root@rhel76 ~]# fdisk -l | grep dev
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sdb1 2048 41943039 20970496 83 Linux
Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors
/dev/sda1 * 2048 1953791 975872 83 Linux
/dev/sda2 1953792 125829119 61937664 8e Linux LVM
Disk /dev/mapper/rhel-root: 31.4 GB, 31415336960 bytes, 61358080 sectors
Disk /dev/mapper/rhel-swap: 2000 MB, 2000683008 bytes, 3907584 sectors
Disk /dev/mapper/rhel-u01: 30.0 GB, 30001856512 bytes, 58597376 sectors
4.2 创建PV
[root@rhel76 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rhel lvm2 a-- <59.07g 4.00m[root@rhel76 ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
[root@rhel76 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 rhel lvm2 a-- <59.07g 4.00m
/dev/sdb1 lvm2 --- <20.00g <20.00g
4.3 扩展逻辑卷
[root@rhel76 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 1 3 0 wz--n- <59.07g 4.00m [root@rhel76 ~]# vgextend rhel /dev/sdb1
[root@rhel76 ~]# vgextend rhel /dev/sdb1
Volume group "rhel" successfully extended
[root@rhel76 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 2 3 0 wz--n- 79.06g 20.00g
[root@rhel76 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
jem_vg 1 0 0 wz--n- <20.00g <20.00g
rhel 1 3 0 wz--n- <59.07g 4.00m
[root@rhel76 ~]# lvdisplay
--- Logical volume ---
LV Path /dev/rhel/root
LV Name root
VG Name rhel
LV UUID fB06rl-92CE-trM6-e2tM-pP4o-6SKt-p03lGC
LV Write Access read/write
LV Creation host, time rhel76, 2021-06-26 22:04:57 +0000
LV Status available
# open 1
LV Size <29.26 GiB
Current LE 7490
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
[root@rhel76 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root rhel -wi-ao---- <29.26g
swap rhel -wi-ao---- 1.86g
u01 rhel -wi-ao---- 27.94g
[root@rhel76 ~]# lvextend -L +18G /dev/rhel/root
使用以下命令刷新lv
[root@rhel76 ~]# xfs_growfs /dev/rhel/root
4.4 确认分区大小
5.总结
!! LVM(Logical Volume Manager)逻辑卷管理通过将底层物理硬盘封装起来,以逻辑卷的形式表现给上层应用,逻辑卷的大小可以动态调整,而且不会丢失现在的数据,逻辑卷大小调整时上层服务不需要中止,新加入的硬盘也不会改变现有上层逻辑卷。逻辑卷技术大大提升了磁盘管理的灵活性