LVM逻辑卷技术
简介
raid磁盘阵列技术,提高硬盘的读写效率,以及保证数据的安全性,raid的缺点是在于当配置好磁盘阵列组,容量大小已经是限定的,当磁盘容量不足的时候想要扩容磁盘的空间就非常麻烦,不同的分区相对独立,没有关系,可能空间利用率很低。如果某一分区满了,默认磁盘管理是无法直接扩容的,只能重新分区,重新分配容量大小,创建文件系统步骤较为繁琐,合并分区时还得重新格式化磁盘分区,还必须进行数据备份。
lvm逻辑卷管理技术它是将一个或多个硬盘在逻辑上进行合并,相当于一个大的磁盘区使用,当你的空间不足时,可以直接去其他硬盘中拿来容量去使用,这就是一个动态的磁盘容量管理技术。lvm相对普通的磁盘分区管理,有较大的灵活性。
lvm的使用方式
-
基于分区形式创建lvm
硬盘的多个分区,由lvm同一进行管理为卷组,可以弹性的调整卷组的大小,加入新硬盘,可以充分利用磁盘容量。文件系统是创建在逻辑卷上,逻辑卷可以根据需求改变大小(总容量控制在卷组中)
-
基于硬盘创建lvm
多块硬盘做出逻辑卷,将整个逻辑卷同一管理,对分区进行动态扩容
lvm的常见名称
PP 物理分区,lvm创建在物理分区之上
PV 物理卷,处于LVM的最底层,一般一个PV对应一个PP
PE 物理区域,PV中可以用于分配的最小存储单位,同一个VG中所有的PV中的PE大小相同
VG 卷组,建立在PV之上,可以划分为多个PV
LE 逻辑扩展单元,组成LV的基本单位,一个LE对应一个PE
LV 逻辑卷,建立在VG之上,是一个可以动态改变大小的分区
LVM原理
LVM是通过交换PE的方式,达到弹性变更文件系统大小的,简而言之就是先把磁盘容量汇总成VG(volume group)再分区(LV)
剔除原本LV中的PE,实现减少LV的容量
把其他PE添加到LV,实现增大LV的容量
一般默认PE大小是4M,LVM最多由65534个PE,所以LVM最大的VG是256G单位
PE是LVM最小存储单位,类型文件系统的block单位,因此PE大小影响VG容量
LV如同/dev/sd[a-z]的分区概念
优点
文件系统可以跨多个磁盘,大小不会受磁盘限制
可在系统允许的情况下,动态扩展文件系统大小
可以增加新的磁盘到LVM的存储池中
LVM配置流程
1.物理分区阶段,针对物理磁盘或者分区,进行fdisk格式化,修改系统的id,默认是83,改为十六进制的8e类型,是lvm类型
2.PV阶段,通过pvcreate,pvdisplay将Linux分区处理为物理卷PV
3.VG阶段,通过vgcreate,vgdisplay将创建好的物理卷PV处理为卷组VG
4.LV阶段,通过lvcreate将卷组分为若干个了卷LV
5.通过mkfs对LV格式化,最后挂载lv使用
说了这么多废话,其实它很简单,相当于就是lvm创建在pp物理分区(实际磁盘分区或者磁盘)上,(一个pv对应着一个pp),把PV的容量融合在一起就是VG卷组,再把VG卷组分成多个LV逻辑卷。而LV逻辑卷由若干LE逻辑扩展单元组成,LE又是由多个物理区域PE(最小存储单位)组成。
简单一句话就是先把磁盘添加pv属性,再把PV的容量融合成VG,最后把VG拆分成LV逻辑卷挂载使用。就这么三步。
物理卷PV管理命令
pvcreate 创建物理卷,将普通的分区加上PV属性
pvscan 查看物理卷信息
pvdisplay 查看各个物理卷的详细参数
pvremove 删除物理卷
卷组VG管理命令
vgcreate 创建卷组
vgscan 查看卷组信息
vgdisplay 查看卷组详细参数
vgreduce 缩小卷组,把物理卷从卷组中删除
vgextend 扩展卷组,把某个物理卷添加到卷组中
vgremove 删除卷组
vgrename 修改名字
逻辑卷LV管理命令
lvcreate
用于创建LVM的逻辑卷
安装:yum install lvm2 -y
参数:
-L 指定逻辑卷大小,单位为kKmMgGtT
-l 指定逻辑卷的大小(LE数)
-n 后面跟着逻辑卷名
-s 创建快照
lvcreate 创建逻辑卷
lvscan 查看逻辑卷信息
lvdisplay 查看逻辑卷的详细参数
lvextend 增大逻辑卷大小
lvreduce 缩小逻辑卷大小
lvremove 删除逻辑卷
实践操作
1.选择两块硬盘,创建PV
[root@localhost ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sdb /dev/sdc /dev/sdd /dev/sde
[root@localhost ~]# pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.
2.创建卷组
[root@localhost ~]# vgcreate vg1 /dev/sdb /dev/sdc
Volume group "vg1" successfully created
3.分别查看PV和VG的信息
如下命令可以:
pvs;pvscan;pvdisplay
vgs;vgscan;vgdisplay
4.创建逻辑卷,进行使用
[root@localhost ~]# lvcreate -n lv1 -L +500M vg1
Logical volume "lv1" created.
5.检查lv信息
lvdisplay 也可以使用lvs或lvscan查看简要信息
6.对刚创建的LV1逻辑卷进行格式化文件系统
mkfs.xfs /dev/vg1/lv1
7.挂载使用
[root@localhost ~]# mkdir /test_lv1
[root@localhost ~]# mount /dev/vg1/lv1 /test_lv1
# 还可以写入开机自动挂载文件中,
[root@localhost ~]# echo -e "/dev/vg1/lv1 /test_lv1 xfs defaults 0 0" >> /etc/fstab
[root@localhost ~]# tail -1 /etc/fstab
/dev/vg1/lv1 /test_lv1 xfs defaults 0 0
8.放点数据测试一下
[root@localhost test_lv1]# df -hT |grep lv1
/dev/mapper/vg1-lv1 xfs 497M 26M 472M 6% /test_lv1
[root@localhost test_lv1]# mv /opt/* ./
[root@localhost test_lv1]# du -h
173M .
[root@localhost test_lv1]# df -hT |grep lv1
/dev/mapper/vg1-lv1 xfs 497M 199M 298M 41% /test_lv1
#总结:可以根据需求选择磁盘数量,也可以通过命令增加或缩小卷组容量
扩容
针对lv逻辑卷的扩容操作,只有卷组中容量够用,就可以对lv逻辑卷扩容
1.先卸载lv设备
umount /dev/vg1/lv1
2.扩容
[root@localhost ~]# lvextend -L +10G /dev/vg1/lv1
Size of logical volume vg1/lv1 changed from 500.00 MiB (125 extents) to <10.49 GiB (2685 extents).
Logical volume vg1/lv1 successfully resized.
3.挂载使用
[root@localhost ~]# mount /dev/vg1/lv1 /test_lv1
[root@localhost ~]# df -hT |grep lv1
/dev/mapper/vg1-lv1 xfs 497M 199M 299M 40% /test_lv1
# 发现容量没有发送变化
4.调整xfs文件系统的大小,否则读取不到容量
[root@localhost ~]# xfs_growfs /dev/vg1/lv1
#查看lv1是否正确调整了空间容量
[root@localhost ~]# df -hT |grep lv1
/dev/mapper/vg1-lv1 xfs 11G 201M 11G 2% /test_lv1
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-ao---- <10.49g
删除lvm
1.卸载lv设备
umount /dev/vg1/lv1
2.删除逻辑卷
[root@localhost ~]# lvremove /dev/vg1/lv1
Do you really want to remove active logical volume vg1/lv1? [y/n]: y
Logical volume "lv1" successfully removed
4.删除VG卷
[root@localhost ~]# vgremove vg1
Volume group "vg1" successfully removed
5.删除物理卷设备
[root@localhost ~]# pvremove /dev/sdb /dev/sdc
Labels on physical volume "/dev/sdb" successfully wiped.
Labels on physical volume "/dev/sdc" successfully wiped.
6.检查所有lvm相关信息
[root@localhost ~]# lvs
[root@localhost ~]# vgs
[root@localhost ~]# pvs
[root@localhost ~]#