LVM介绍及安装使用
LVM简介
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是一种磁盘管理工具,最主要的功能就是可以随时在线调整分区的大小,解决了安装Linux系统时需要评估分区大小的烦恼。
LVM相关术语
物理存储介质(The physical media):LVM存储介质,可以是硬盘分区、整个硬盘、raid阵列或SAN硬盘。设备必须初始化为LVM物理卷,才能与LVM结合使用。
物理卷PV(physical volume):物理卷就是LVM的基本存储逻辑块,但和基本的物理存储介质比较却包含与LVM相关的管理参数,创建物理卷可以用硬盘分区,也可以用硬盘本身。
卷组VG(Volume Group):LVM卷组类似于非LVM系统中的物理硬盘,一个卷组VG由一个或多个物理卷PV组成。可以在卷组VG上建立逻辑卷LV。卷组VG可以使多个硬盘空间看起来像是一个大硬盘。
逻辑卷LV(logical volume):类似于非LVM系统中的硬盘分区,逻辑卷LV建立在卷组VG之上。在逻辑卷LV之上建立文件系统。逻辑卷LV可以创建跨多个硬盘空间的分区。
物理块PE(physical Extent):物理卷PV中可以分配的最小存储单元,PE的大小可以指定,默认为4MB
逻辑块LE(Logical Extent):逻辑卷LV中可以分配的最小存储单元,在同一卷组VG中LE的大小和PE是相同的,并且一一相对。
可以在线对卷组VG、逻辑卷LV进行创建、删除、调整大小等操作。但LVM上的文件系统也需要重新调整大小。
一、LVM常用命令
安装:apt install lvm2
1、(pv、vg、lv)scan 扫描
2、(pv、vg、lv)create 创建
3、(pv、vg、lv)display 显示详细信息
4、(pv、vg、lv)remove 移除
5、(vg、lv)extend 扩展
6、(vg、lv)reduce 减少
7、(pvs、vgs、lvs)s是简单查看对应卷信息
二、创建物理卷PV
1、格式化分区或者硬盘为8e,及Linux LVM格式。
2、使用pvcreate创建物理卷PV。
3、pvs查看创建好的物理卷。
三、创建卷组VG
使用vgcreate创建卷组VG,并且此处可以-s选项指定PE(LE)的大小,(默认PE大小4M)。创建完成后使用vgs查看结果。
四、创建逻辑卷LV
使用lvcreate创建LV。lvcreate -n lvname -L lvsize(M,G)|-l LEnumber vgname。(-L分配内存M、G)(-l 按照PE[物理卷基本单元]单元大小4MB分配,4MB*16=64M),所以vg1和vg2是大小相等的。
五、格式化与挂载
1、 mkfs.ext4 /dev/vg1/lv1
//将lv1格式化成ext4
2、 mkdir /lv1
3、 mount /dev/vg1/lv1 /lv1
//挂载到/lv1下
4、 echo
"/dev/vg1/lv1 /lv1 ext4 defaults 0 0"
>> /etc/fstab
//追加到开机挂载
六、逻辑卷LV扩容(动态扩容)
1、首先需要确认是否有可用的扩容空间,逻辑卷LV是从卷组VG中创建的,所有在逻辑卷LV扩容前需要查看卷组VG的空间使用情况。
(1)lvextend -L +100M /dev/vg1/lv1
// +100M是增加100M
(2)lvextend -L 100M /dev/vg1/lv2
//直接使用100M是增加到100M
(3)resize2fs /dev/vg1/lv1
//ext4文件系统在线扩容
七、卷组VG扩容
卷组的扩容相当简单,一般是LVM空间不够时,添加一块新硬盘时使用。
vgs、pvs 查看当前卷组和物理卷分区信息
vgextend vg1 /dev/sdb3 扩展卷组vg1,增加lvm分区物理卷 /dev/sdb3
八、逻辑卷LV缩小
逻辑卷LV缩小命令lvreduce与扩容命令类似,缩减逻辑卷LV请谨慎操作!
lvreduce命令使用-L选项减少空间,-r选项减少文件系统空间,实现动态调整(这是ext4文件系统)
lvreduce -L 200M -r /dev/vg1/lv1 减少到200M
如果不使用-r选项,那么需要卸载挂载点再使用resize2fs调整,但这已经不是动态调整了
xfs文件系统真的只能增大,不能减小。
九、卷组VG缩小
卷组VG的缩小,要查看物理卷PV是否被使用,因为无法缩减一个正在使用的物理卷PV
使用pvs或者pvdisplay查看当前卷组VG所使用的物理卷是否是否存在数据。(/dev/sdb1当前存有数据,/dev/sdb3不存在数据)
此时想要将/dev/sdb1移出vg1,可以使用pvmove命令移动数据,但必须有足够的空间。
pvmove /dev/sdb1 /dev/sdb3 移动数据
此時,已经将 /dev/sdb1中数据移动到 /dev/sdb3
vgreduce vg1 /dev/sdb1 减小卷组vg1 ,去掉 /dev/sdb1 物理卷
十、删除LVM
umount /lv1
//卸载挂载点
lvremove /dev/vg1/lv1
//移除逻辑卷
vgremove vg1
//移除卷组
pvremove /dev/sdb1
//移除物理卷
lvm创建(新建)
1、添加硬盘sdb,创建主分区。
ls /dev/sd*
fdisk /dev/sdb
设置主分区大小和类型(Linux或者是Linux lvm)
2、创建物理卷pv
pvcreate /dev/sdb1 /dev/sdb2 /dev/sdc1...或者 pvcreate /dev/sdb{1,2,3,4,...}
查看创建好的物理卷pvs、PVdisplay
3、创建卷组vg
vgcreate vg1 /dev/sdb1 /dev/sdb2 ....
vgcreate -s 16M vg2 /dev/sdb3 ... 指定最小PE为16M,默认为4M
查看创建好的卷组vgs、vgdisplay
4、创建逻辑卷lv
lvcreate -n lv1 -L 64M vg1 指定固定大小64M
lvcreate -n lv2 -l 16 vg1 16*4M=64M,16个PE
5、格式化
mkfs.ext4 /dev/vg1/lv1 将LV1格式化成ext4
6、挂载使用
mkdir /lv1
mount /dev/vg1/lv1 /lv1
ceho "/dev/vg1/lv1 /lv1 ext4 defaults 0 0" >> /etc/fstab 开机自动挂载
lvm扩展(扩容、减小、移动、移除)
1、逻辑卷lv扩容
vgs 查看当前LV所在卷组是否有剩余空间
lvextend -L +400M -r /dev/vg1/lv1
若没有-r,没有实时同步文件系统,需要同步
resize2fs /dev/vg1/lv1
2、卷组vg扩容(卷组的扩容相当简单,一般是LVM空间不够时,添加一块新硬盘时使用。)
vgextend vg1 /dev/sdc1
3、逻辑卷lv减小(lvreduce命令使用-L选项减少空间,-r选项减少文件系统空间,实现动态调整(这是ext4文件系统))
lvreduce -L -100M -r /dev/vg1/lv1
如果不使用-r,需要卸载挂载点再使用resize2f调整
resize2fs /dev/vg1/lv1
4、卷组vg减小。(更换旧硬盘)
卷组减小,要查看 物理卷pv是否被占用pvs
通过pvs看到 /dev/sdb1 在vg1卷组,而且pfree <psize,说明 /dev/sdb1 有数据
需要将 /dev/sdb1 数据移动到其他vg1卷组的物理卷上/dev/sdb3
pvmove /dev/sdb1 /dev/sdb3
vgreduce vg1 /dev/sdb1
5、删除lvm
umount /lv1
lvremove /dev/vg1/lv1 移除卷组
pvremove /dev/sdb1 移除物理卷