前言:lvm作为极强的功能性是非常推荐学习并使用
转载链接:https://blogs.thornfield.cn/2022/04/07/lvmBasicOperation/
lvm概述
LVM(Loical Volume Manager)逻辑卷管理。本质上就是一个虚拟设备驱动,在内核中块设备和物理设备直接添加一个层次。可以将几块物理的硬盘,每个硬盘都是一个物理卷(PhysicalVolume),然后再由多个物理卷上组合成一个卷组(volume group),然后在卷组上在划分出不同大小的LV(LogicalVolume)。这样磁盘就不是由kernel直接调用而是经过了lvm的管理后返回给kernel这样就能在lvm层实现更多的功能,也不再数据也不再局限于单块物理盘。数据维度可以跨越N多块硬盘。可以随意的调整大小、跨越多个物理卷等。
具体的实现分层为:
硬盘或分区做成pv,然后将pv或多个pv建立vg,vg上建立lv
安装lvm
红帽分支RHEL、Fedora、Centos等:
#yum install -y lvm2
Debian分支Debian、Ubuntu、kali等:
#apt install lvm2
或者:
#apt-get install lvm2
Arch及分支Archlinux、Manjaro、Blackarch等:
#pacman -S lvm2
lvm操作
本次操作使用Centos7.8.2003来演示:
环境:系统盘sda 30G,数据盘sdb、sdc、sdd、sde各5G。
要求:
1.安装lvm2管理工具。
2.把sdb分成2个主要分区、sdc分成3个扩展分区,把sdd和sde各分成1个主要分区。在分区时注意修改硬盘类型。
3.使用lvm2创建2个vg,一个由sdb和sdc(VG1),一个由sdd和sde(VG2)。
4.并把所有创建分区都变成物理卷pv。
5.在VG1上创建三个lv分别使用1G的容量,名称为lv0、lv1、lv2。
6.格式化lv0为ext4格式,lv2为xfs格式,然后在创建/lv0和/lv2并挂载上去。
7.在VG2上创建两个lv,lv3使用3G容量剩下的给lv4。
8.删除VG2上所有的lv卷组,并把VG2并入VG1。
9.合并后扩容lv2到4G容量lv0增加到5G容量后在缩小到3G空间。
10.把sde1移出VG1。
11.物理添加一块硬盘到sdf 3G容量,新建为主分区。然后添加到VG1内。
12.删除所有LVM。
解题过程:
1.安装lvm2管理工具。
[root@lvm2 ~]#yum install lvm2 -y
2.把sdb分成2个主要分区,修改硬盘类型。
[root@lvm2 ~]# fdisk /dev/sdb
Command (m for help): n
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-10485759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759): +2500MB
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Command (m for help): n
Select (default p): p
Partition number (2-4, default 2):
First sector (4884480-10485759, default 4884480):
Using default value 4884480
Last sector, +sectors or +size{K,M,G} (4884480-10485759, default 10485759): +2500MB
Command (m for help): t
Partition number (1,2, default 2): 2
Hex code (type L to list all codes): 8e
Command (m for help): w
2.sdc分成3个扩展分区,修改硬盘类型。
[root@lvm2 ~]# fdisk /dev/sdc
Command (m for help): n
Select (default p): e
Partition number (1-4, default 1):
First sector (2048-10485759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759): +3G
Command (m for help): n
Select (default p): l
Adding logical partition 5
First sector (4096-6293503, default 4096):
Using default value 4096
Last sector, +sectors or +size{K,M,G} (4096-6293503, default 6293503): +1G
Command (m for help): t
Partition number (1,5, default 5):
Hex code (type L to list all codes): 8e
Command (m for help): n
Select (default p): l
Adding logical partition 6
First sector (2103296-6293503, default 2103296):
Using default value 2103296
Last sector, +sectors or +size{K,M,G} (2103296-6293503, default 6293503): +1G
Command (m for help): t
Partition number (1,5,6, default 6):
Hex code (type L to list all codes): 8e
Command (m for help): n
Select (default p): l
Adding logical partition 7
First sector (4202496-6293503, default 4202496):
Using default value 4202496
Value out of range.
Last sector, +sectors or +size{K,M,G} (4202496-6293503, default 6293503):
Command (m for help): t
Partition number (1,5-7, default 7):
Hex code (type L to list all codes): 8e
Command (m for help): w
2.把sdd和sde各分成1个主要分区,修改硬盘类型。
[root@lvm2 ~]# fdisk /dev/sdd
Command (m for help): n
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-10485759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759):
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Command (m for help): w
2.把sdd和sde各分成1个主要分区,修改硬盘类型。
[root@lvm2 ~]# fdisk /dev/sde
Command (m for help): n
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-10485759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759):
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Command (m for help): w
到此已经做到第二小题完
[root@lvm2 ~]# pvcreate /dev/sdb{1,2} /dev/sdc{5,6,7} /dev/sdd1 /dev/sde1
3.使用lvm2创建2个vg,一个由sdb和sdc(VG1),一个由sdd和sde(VG2)。
[root@lvm2 ~]# vgcreate VG1 /dev/sdb{1,2} /dev/sdc{5,6,7}
[root@lvm2 ~]# vgcreate VG2 /dev/sdd1 /dev/sde1
4.并把所有创建分区都变成物理卷pv。
5.在VG1上创建三个lv分别使用1G的容量,名称为lv0、lv1、lv2。
[root@lvm2 ~]# lvcreate -n lv0 -L 1G VG1
[root@lvm2 ~]# lvcreate -n lv1 -L 1G VG1
[root@lvm2 ~]# lvcreate -n lv2 -L 1G VG1
6.格式化lv0为ext4格式,lv2为xfs格式,然后在创建/lv0和/lv2并挂载上去。
[root@lvm2 ~]# mkfs.ext4 /dev/VG1/lv0
[root@lvm2 ~]# mkfs.xfs /dev/VG1/lv2
[root@lvm2 ~]# mkdir /lv0
[root@lvm2 ~]# mkdir /lv2
[root@lvm2 ~]# mount /dev/VG1/lv0 /lv0/
[root@lvm2 ~]# mount /dev/VG1/lv2 /lv2/
7.在VG2上创建两个lv,lv3使用3G容量剩下的给lv4。
[root@lvm2 ~]# lvcreate -n lv3 -L 3G VG2
[root@lvm2 ~]# lvcreate -n lv4 -l 100%FREE VG2
[root@lvm2 ~]# lvremove lv3 VG2
[root@lvm2 ~]# lvremove lv4 VG2
8.删除VG2上所有的lv卷组,并把VG2并入VG1。
[root@lvm2 ~]# vgmerge -v VG1 VG2
9.合并后扩容lv2到4G容量lv0增加到5G容量后在缩小到3G空间。
[root@lvm2 ~]# umount /lv0
[root@lvm2 ~]# umount /lv2
[root@lvm2 ~]# lvextend -L +3G /dev/VG1/lv2
[root@lvm2 ~]# lvextend -L +4G /dev/VG1/lv0
[root@lvm2 ~]# resize2fs -f /dev/VG1/lv0
[root@lvm2 ~]# lvreduce -L 2G -r /dev/VG1/lv0
10.把sde1移出VG1。
[root@lvm2 ~]# pvmove /dev/sde1
11.物理添加一块硬盘到sdf 3G容量,新建为主分区。然后添加到VG1内。
[root@lvm2 ~]#reboot
[root@lvm2 ~]# fdisk /dev/sdf
Command (m for help): n
Select (default p): p
全部默认回车
Command (m for help): t
Hex code (type L to list all codes): 8e
Command (m for help): w
[root@lvm2 ~]# vgextend VG1 /dev/sdf1
12.剩下删除所有LVM
[root@lvm2 ~]# lvremove /dev/VG1/lv*
[root@lvm2 ~]# vgremove VG1
[root@lvm2 ~]# pvremove /dev/sd*
总结
总体来说LVM是非常强大的组件,需要学会并使用它,而且这是不难的。以上操作就使用到了几个命令fdisk、pvcreate、vgcreate、lvcreate、vgextend等。主要是多练习,多想想真正使用中会出现哪种需求然后实现它。以下我列出几个命令供大家参考:
PV管理命令:
pvscan 扫描
pvcreate 创建
pvdisplay 显示
pvremove 移除
pvs 查看
VG管理命令:
vgscan 扫描
vgcreate 创建
vgdisplay 显示
vgremove 移除
vgextend 扩展
vgreduce 减少
vgs 查看
LV管理命令:
lvscan 扫描
lvcreate 创建
lvdisplay 显示
lvremove 移除
lvextend 扩展
lvreduce 减少
lvs 查看