LVM(逻辑卷管理器)

129 阅读3分钟

生产中底层用RAID,上层用LVM组合

LVM

    LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的存储卷,在存储卷上建立文件系统。
    LVM优势就是动态调整容量

名词解释:

名词解释:
	物理卷(PV):磁盘分区或从逻辑上与磁盘分区具有相同功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
	卷组(VG):类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV
	逻辑卷(LV):类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统
	物理块(PE):

LVM实现过程

 #1.创建物理卷(PV)
 	yum -y install lvm2
 	#分区需要更改分区类型为LVM
 	#硬盘直接用
 	pvcreate /dev/sd{b1,c}                  #把sdb1和sdc创建成物理卷		
        [21:48:17 root@centos8 ~]#pvs		#查看物理卷
            PV         VG Fmt  Attr PSize  PFree 
            /dev/sdb1     lvm2 ---   5.00g  5.00g
            /dev/sdc      lvm2 ---  20.00g 20.00g
        [21:50:09 root@centos8 ~]#pvdisplay          #pvdisplay 可以查看到更全的信息
            "/dev/sdb1" is a new physical volume of "5.00 GiB"
                --- NEW Physical volume ---
             PV Name               /dev/sdb1
             VG Name               							#卷组信息
             PV Size               5.00 GiB
             Allocatable           NO
             PE Size               0   
             Total PE              0
             Free PE               0
             Allocated PE          0
             PV UUID               9DQKuy-5YRm-rouS-Jqhm-OjO8-J3bm-POjfG2
             "/dev/sdc" is a new physical volume of "20.00 GiB"
             --- NEW Physical volume ---
             PV Name               /dev/sdc
             VG Name               
             PV Size               20.00 GiB
             Allocatable           NO
             PE Size               0   
             Total PE              0
             Free PE               0
             Allocated PE          0
             PV UUID               8dAUng-gu4x-5XA8-oC8J-LoeY-ZdUo-lcTsLD
#2.创建卷组(VG)并物理卷(PV)加入卷组
 	vgcreate vg0 /dev/sd{b1,c}  #vg0为名称 把两个物理卷PV加入卷组VG
#3.创建逻辑卷(LV)
 	lvcreate -L 5G -n lv-mysql vg0   #-L后直接指定大小,-n 指定逻辑卷LV名称,vg0指定从哪个卷组分空间
 	lvcreate -L 5G -n lv-logs  vg0
 ----------------------------------------------------------------------#此时/dev/vg0/lv-mysql	与分区相同
#4.创建文件系统
 	mkfs.ext4 /dev/vg0/lv-mysql
#5.持久挂载
 	vim /etc/fstab
 	:r!blkid /dev/vg0/lv-mysql
 	mount -a

扩容逻辑卷LV

前提:LV所在的VG有足够的空间
	vgdisplay    #查看卷组信息
	lvresize -r -L +5G /dev/vg0/lv-mysql    #-r 连带文件系统一起扩容

扩容卷组VG

#前提有硬盘或者分区
	pvcreate /dev/sdb2
	vgextend vg0 /dev/sdb2  #把新创建的PV加入VG,使用vgextend

缩减逻辑卷LV

#注意:缩减有数据损坏风险,建议先备份再缩减,xfs文件系统不支持缩减
#1.先取消挂载
	umount	/dev/vg0/lv-mysql
#2.检查文件系统用完整性
	e2fsck -f 	/dev/vg0/lv-mysql
#3.缩减文件系统
	resize2fs 	/dev/vg0/lv-mysql  5G
#4.缩减逻辑卷LV
	lvreduce -L 5G /dev/vg0/lv-mysql
#5.恢复挂载
	mount -a         #-a  可以恢复/etc/fstab的挂载

实现LV快照

#逻辑卷LV快照:写时复制。快照的生命只有一次。
#	特点:备份速度快,瞬间完成
#		应用场景是测试环境,不能完成代替备份
#		快照后,逻辑卷的修改速度会有一定影响
#实现LV快照:LV快照只保存创建快照时的文件内容类似VM快照
#1.创建快照
	#xfs
	lvcreate -L 100m -s -n mysql-snap /dev/vg0/lv-mysql
	#ext4 使用-p r 实现只读
	lvcreate -L 100m -s -n mysql-snap -p r /dev/vg0/lv-mysql
#2.挂载
	mkdir /data/mysql-snap
	#快照与LV用的UUID一样,xfs挂载需要加 -o nouuid,ro 实现只读,防止快照被修改
	mount -o nouuid,ro  /dev/vg0/mysql-snap /data/mysql-snap
	#ext4
	mount /dev/vg0/mysql-snap /data/mysql-snap
#恢复快照--
#1.取消挂载
	umount /dev/vg0/lv-mysql
	umount /dev/vg0/mysql-snap
#2.恢复快照
	lvconvert --merge /dev/vg0/mysql-snap

删除

#删除需要按下面顺序
#1.取消所有挂载	
#2.1删除逻辑卷lv
	lvremove /dev/vg0/lv-mysql
#2.2删除卷组VG
	vgremove vg0
#2.3删除物理卷PV
	pvremove /dev/sd{b1,c}