The Logical Volume Manager (LVM) provides tools to create virtual block devices from physical devices
LVM是一种单机硬盘虚拟化的技术,在LVM的架构体系中,最关键的三个概念是
- PV(Physical Volume) ,物理卷,即实际存在的硬盘
- VG(Volume Group),卷组,是由多个物理卷组合形成的大的整体的卷组
- LV(Logical Volume),逻辑卷,是从卷组上分割出来的,可以直接mkfs.x格式化挂载使用的
上面这三个概念非常重要,每一个都必须理解,否则谈不上使用LVM(按照本文手动实际执行测试下,基本就理解了)
LVM创建和管理命令在部署LVM时,要依次配置PV物理卷、VG卷组和LV逻辑卷。常用的LVM部署命令如下表所示:
| 功能/命令 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
|---|---|---|---|
| 扫描 | pvscan | vgscan | lvscan |
| 建立 | pvcreate | vgcreate | lvcreate |
| 显示 | pvdisplay | vgdisplay | lvdispaly |
| 删除 | pvremote | vgremote | lvremote |
| 扩展 | 物理卷不能扩展 | vgextend | lvextend |
| 缩小 | 物理卷不能缩小 | vgreduce | lvreduce |
目标:格式化挂载一个LVM逻辑卷磁盘以供使用
准备条件:一台测试机器,该机器上有三块无用的测试数据盘如 /dev/sdb、/dev/sdc、/dev/sdd
测试环境可通过VirtualBox等虚拟化环境搭建,不再赘述
操作步骤参考如下
disk1=/dev/sdd disk2=/dev/sde disk3=/dev/sdf vgname=vgname01 lvname=lvname01 #这里是把三块物理磁盘初始化创建为LVM PV #syntax: pvcreate pvname1 pvname2 pvname3 ... pvcreate $disk1 $disk2 $disk3 pvs pvdisplay # [root@b103-10-210-128-42 ~]# pvs # PV VG Fmt Attr PSize PFree # /dev/sdd lvm2 --- <278.88g <278.88g # /dev/sde lvm2 --- 893.75g 893.75g # /dev/sdf lvm2 --- 893.75g 893.75g # 注意这里的PVName(Physical Volume Name),即 /dev/sdd、/dev/sde、可以看到磁盘路径即PVName #syntax: vgcreate vgname pvname1 pvname2 pvname3 ... vgcreate $vgname $disk1 $disk2 $disk3 vgs pvs pvdisplay vgdisplay #同样特别注意这里的 VGName(Volume Group Name) #这里的VGName名称是全局唯一的,不能重复(不绝对,但是你这么理解也这么用,能省很多事) #一个VGName或者说一个卷组可以对应1块或多块磁盘,我这里是对应3块 # [root@b103-10-210-128-42 ~]# vgs # VG #PV #LV #SN Attr VSize VFree # vgname01 3 0 0 wz--n- <2.02t <2.02t # [root@b103-10-210-128-42 ~]# vgdisplay | less # [root@b103-10-210-128-42 ~]# pvs # PV VG Fmt Attr PSize PFree # /dev/sdd vgname01 lvm2 a-- 278.87g 278.87g # /dev/sde vgname01 lvm2 a-- <893.75g <893.75g # /dev/sdf vgname01 lvm2 a-- <893.75g <893.75g #vgs显示了这个vg对应三个pv #pvs显示这三个pv,对应的都是vgname01这个vg lvcreate --name $vgname/$lvname --size 10G $vgname pvs vgs lvs pvdisplay vgdisplay lvdisplay # [root@b103-10-210-128-42 ~]# pvs # PV VG Fmt Attr PSize PFree # /dev/sdd vgname01 lvm2 a-- 278.87g 268.87g # /dev/sde vgname01 lvm2 a-- <893.75g <893.75g # /dev/sdf vgname01 lvm2 a-- <893.75g <893.75g # [root@b103-10-210-128-42 ~]# vgs # VG #PV #LV #SN Attr VSize VFree # vgname01 3 1 0 wz--n- <2.02t <2.01t # [root@b103-10-210-128-42 ~]# lvs # LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert # lvname01 vgname01 -wi-a----- 10.00g #同样的特别注意这里的 LVName(Logical Volume) #把这个Name理解并用好了,这LVM就算入门了 #官方文档有这么一句话 Where commands take VG or LV names as arguments, the full path name is optional #因此创建逻辑卷,如下三种方法都可以 #1 lvcreate --name $lvname --size 10G $vgname #2 lvcreate --name $vgname/$lvname --size 10G $vgname #3 lvcreate --name /dev/$vgname/$lvname --size 10G $vgname #只要脑中认识到,逻辑卷总是在某个卷组下面,即 /dev/VolumeGroupName/LogicalVolumeName ,就足够了 #以上,我们通过 pv -> vg -> lv 这三套,最终创建出一个可以使用的虚拟盘符,盘符的路径即LVName,可以通过下面的命令查看 #[root@b103-10-210-128-42 ~]# lvdisplay | grep 'LV Path' # LV Path /dev/vgname01/lvname01 #开始挂载使用 testpath=/lvmtest mkfs.xfs /dev/$vgname/$lvname mkdir -p $testpath mount /dev/$vgname/$lvname $testpath df -h | grep $testpath #写入数据测试 dd if=/dev/zero of=$testpath/testfile01 bs=1M count=1000 oflag=direct删除逻辑卷
#有了上面的概念,及实操理解,我们很容易就能知道 #要彻底删除某个磁盘的LVM使用,需要首先删除所有LV,再删除所有VG,最后删除这个PV(即具体的磁盘) #下面的测试紧接上文 #目标:清楚一台机器的LVM使用(前提是对应的磁盘其上数据皆不需要或已妥善备份) # [root@b103-10-210-128-42 ~]# pvs # PV VG Fmt Attr PSize PFree # /dev/sdd vgname01 lvm2 a-- 278.87g 268.87g # /dev/sde vgname01 lvm2 a-- <893.75g <893.75g # /dev/sdf vgname01 lvm2 a-- <893.75g <893.75g # [root@b103-10-210-128-42 ~]# vgs # VG #PV #LV #SN Attr VSize VFree # vgname01 3 1 0 wz--n- <2.02t <2.01t # [root@b103-10-210-128-42 ~]# lvs # LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert # lvname01 vgname01 -wi-ao---- 10.00g #现在我们一下就能看出,机器上有3个PV,这个三个PV都是卷组vgname01使用的 #卷组vgname01只创建了一个LV即 /dev/vgname01/lvname01 disk1=/dev/sdd disk2=/dev/sde disk3=/dev/sdf vgname=vgname01 lvname=lvname01 #如果有任何挂载或使用,则先去掉 #(执行命令时不要在已挂载的路径里待着) umount /dev/$vgname/$lvname mount | grep /dev/$vgname/$lvname lvremove /dev/$vgname/$lvname vgremove /dev/$vgname pvremove $disk1 $disk2 $disk3本文地址
LVM快速使用 http://t.csdn.cn/IGjYD https://blog.csdn.net/xys2015/article/details/125227719



