基本概念介绍:
PV(物理卷): 物理卷在逻辑卷管理中处于最底层,它可以是物理硬盘上的分区,也可以是一整块硬盘
VG(卷组): 卷组建立在物理卷之上,一个卷组中至少要包含一个物理卷,在卷组建立之后可以动态的添加物理卷到卷组中。
LV(逻辑卷): 逻辑卷建立在卷组之上,卷组中未分配的空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态的扩展或缩小空间,系统中的多个逻辑卷可以属于同一个卷组或不同的多个卷组
PE: 每个物理卷被划分为名为PE的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE大小是可配置的,默认为4M。
LE: 逻辑卷也被划分为名为LE的可被寻址的基本单位。在同一卷组中,LE的大小与PE大小相同,并且一一对应。
常用命令:
PV 物理卷
pvcreate # 创建物理卷
pvscan # 扫描所有磁盘中存在d额物理卷
pvdisplay # 显示指定物理卷属性
pvresize # 调整物理卷容量
pvck # 检查物理卷lvm数据一致性
pvs # 打印输出物理卷的概要信息
pvchange # 改变物理卷分配许可
pvmove # 把某物理卷中的数据转移到其他卷组中的其他xxx卷
VG 卷组
vgcreate # 创建卷组
vgscan # 检测系统中所有磁盘
vgdisplay # 显示卷组的属性信息
vgrename # 更改卷组名(格式: vgrename 旧名 新名)
vgextend # 扩充卷组大小
vgreduce # 缩小卷组大小
LV 逻辑卷
lvcreate # 创建逻辑卷
lvremove # 删除逻辑卷
lvscan # 扫描所有逻辑卷
lvdisplay # 显示逻辑卷的属性信息
lvextend # 扩充逻辑卷大小
lvreduce # 缩小逻辑卷大小
示例:
需求说明:
挂载两块5G硬盘,创建一个名为test的卷组,卷组PE尺寸大小为16M。创建一个名为data的逻辑卷,该逻辑卷所属卷组为test,逻辑卷大小为8G。将该逻辑卷格式化为XFS文件系统并挂载到/data目录下
需求分析:
将磁盘分区为一个5G大小的主分区
分区文件系统为Linux LVM
#创建物理卷pv
pvcreate /dev/sd{b..c}1
#查看物理卷状态
pvdisplay /dev/sdb1 /dev/sdc1
#创建卷组vg
# 将磁盘加入到test卷组中,并且指定PE大小为16M
vgcreate -s 16 test /dev/sdb1 /dev/sdc1
## 查看卷组test
vgdisplay test
#创建逻辑卷LV
# 方法1
lvcreate -n data -L 8G test
# 方法2(LV=PE大小*块数) 16 * 512 = 8192M = 8G
lvcreate -n data -l 512 test
#挂载逻辑卷
# 将磁盘格式化为XFS文件系统
mkfs.xfs /dev/test/data
# 挂载到/data目录下
mount /dev/test/data /data/
#配置自动挂载
# 自动挂载
vim /etc/fstab
/dev/test/data /data xfs defaults 0 0
#UUID方式挂载
# 查看UUID
blkid /dev/test/data
# 自动挂载
vim /etc/fstab
UUID=2a8c491a-d7e8-4a7d-81bc-e90967664f2c /data xfs defaults 0 0
-----------------------------------------------------------------------
扩容物理卷PV
使用场景:磁盘100G lvm分区只使用了20G 现在需要对lvm扩容
#查看当前pvs 物理磁盘大小 lsblk
#重新调整分区 (此处需要特别注意,分区操作不当会导致现有的系统和数据丢失)
fdisk /dev/sda #此处参考非lvm分区调整方法,如果是系统盘开机状态,需要关机进入急救模式调整
超过2T的盘需要使用gpt分区类型,msdos分区类型最大支持2T磁盘空间
parted /dev/sda
mklabel
gpt
yes
Ignore
p
100%
p
quit
#扩容pv
pvresize -v /dev/sda2
#验证
pvs
vgs
#扩容LV
lvextend -l +100%FREE /dev/centos/root
#通知系统分区表的变化
partprobe /dev/sda2
#文件系统扩容
xfs_growfs /dev/centos/root
df -hT
------------------------------------------------------------------------
需求:在原来的基础上再给卷组test增加5G的容量
#查看当前卷组信息
vgdisplay test
#卷组扩容前准备新盘分区
fdisk /dev/sdd
n p t 8e w
#将新盘设置为pv
pvcreate /dev/sdd1
#扩展卷组
# 将/dev/sdd1加入到卷组test中
vgextend test /dev/sdd1
# 查看卷组test容量可以看到比之前大了5G
vgdisplay test
-------------------------------------------------------------------------
缩小卷组
#创建测试文件 在/data中
touch /data/file{1..99}
#查看卷组使用信息
pvs -o+pv_used
#数据迁移
# 将sdc1磁盘的内容移动到sdd1中
pvmove /dev/sdc1 /dev/sdd1
# 再次查看pv信息发现sdc1的数据被腾空了
pvs -o+pv_used
#将物理卷移出test卷组
# 将物理卷/dev/sdc1从卷组中删除,可以看到VG容量少了5G
vgreduce test /dev/sdc1
# 将/dev/sdc1从物理卷中删除
pvremove /dev/sdc1
------------------------------------------------------------------------
扩容逻辑卷LV
需求:将逻辑卷data大小扩容到13G
# 当前逻辑卷大小为8G
lvdisplay /dev/test/data
#扩容卷组
# 分区完新硬盘后将其加入到test卷组中
vgextend test /dev/sdd1
#扩容逻辑卷
lvextend -L 13G /dev/test/data
# lvextend -L +5G /dev/test/data # 在原来的大小上加5G
#将剩下的所有空间加上去
lvextend -l +100%FREE /dev/test/data
#对文件系统进行扩容
当逻辑卷为XFS文件系统时,自动拓展XFS文件系统的逻辑盘到最大可用大小
xfs_growfs /dev/test/data
当逻辑卷为ext2/ext3/ext4文件系统时,使用该工具重置该逻辑卷大小
resize2fs /dev/test/data
df -hT #检查验证
------------------------------------------------------------------
缩小逻辑卷LV
需求:
将逻辑卷大小缩小到10G
缩小文件系统为XFS的逻辑卷大小
XFS文件系统不能直接缩小,需要将调整完大小的逻辑卷再次进行格式化文件系统
但重新格式化后数据会丢失!!! 此处需要注意!
#调整逻辑卷大小
umount /dev/test/data # 缩小逻辑卷大小一定要先取消挂载文件
lvreduce -L -3G /dev/test/data # 在原来大小的基础上减去3G
# lvreduce -L 10G /dev/test/data # 调整大小至10G
#格式化
mkfs.xfs -f /dev/test/data
mount /dev/test/data /data
df -Th
缩小文件系统为ext2/ext3/ext4的逻辑卷大小
umount /dev/test/data
e2fsck -f /dev/test/data
# 调整逻辑卷大小为10G
resize2fs /dev/test/data 10G
# 将逻辑卷大小缩小至10G
lvreduce -L 10G /dev/test/data
#挂载
mount /dev/test/data /data/
#删除逻辑卷
# 如有自动挂载也要在fstab中删除
umount /dev/test/data
# 删除逻辑卷
lvremove /dev/test/data
# 删除卷组
vgremove test
# 删除物理卷设备(设备根据实际情况来)
pvremove /dev/sd{b..d}1
注意事项:
文件系统格式为XFS时进行缩小逻辑卷需要重新格式化才能使用(格式化时磁盘内文件会被清空),文件系统为ext2/ext3/ext4时进行缩小逻辑卷无需重新格式化。文件系统不同时扩容跟缩小逻辑卷的方法与使用的工具也不同。缩小逻辑卷时要把磁盘取消挂载!
其他资料:
1、 物理卷命令
一般维护命令:
pvscan #在系统的所有磁盘中搜索已存在的物理卷
pvdisplay 物理卷全路径名称 #用于显示指定物理卷的属性。
pvchange Cx|--allocation {y|n} 物理卷全路径名 #用于改变物理卷的分配许可设置物理卷的创建与删除命令
pvcreate 设备全路径名 #用于在磁盘或磁盘分区上创建物理卷初始化信息,以便对该物理卷进行逻辑卷管理。
pvmove 源物理卷全路径我[目的物理卷全路径名] #用于把某物理卷中的数据转移到同卷组中其他的特刊卷中。
2、 卷组命令
一般维护命令
vgscan #检测系统中所有磁盘
vgck [卷组名] #用于检查卷组中卷组描述区域信息的一致性。
vgdisplay [卷组名] #显示卷组的属性信息
vgrename 原卷组名 新卷组名
vgchange -a y|n [卷组名] #改变卷组的相应属性。是否可分配
vgchange -l 最大逻辑卷数 #卷组可容纳最大逻辑卷数
vgchange -x y|n [卷组名] #卷是否有效
vgmknodes [卷组名|卷组路径] #用于建立(重新建立)已有卷组目录和其中的设备文件卷组配置的备份与恢复命令
vgcfgbackup [卷组名] #把卷组中的VGDA信息备份到“/etc/lvmconf”目录中的文件
vgcfgrestore -n 卷组名 物理卷全路命名 #从备份文件中必得指定物理卷的信息卷组的建立与删除命令
vgcreate 卷组名 物理卷全路径名[物理卷全路径名]
vgmove 卷组名
卷组的扩充与缩小命令
vgextend 卷组名 物理卷全路径名[物理卷全路径名]
vgreduce 卷组名 物理卷全路径名[物理卷全路径名]
vgreduce命令通过删除LVM卷组中的物理卷来减少卷组容量。不能删除LVM卷组中剩余的最后一个物理卷
#丢失pv处理
vgreduce --removemissing vgname --force
卷组的合并与拆分
vgmerge 目的卷组名 源卷组名 #合并两个已经存在的卷组,要求两个卷组的物理区域大小相等且源卷组是非活动的。
vgsplit 现有卷组 新卷组 物理卷全路径名[物理卷全路径名]
卷组的输入与输出命令
vgexport 卷组名
vgimport 卷组名 卷组中的物理卷[卷组中的物理卷]
3、 逻辑卷命令
一般命令
lvscan
lvdisplay 逻辑卷全路径名[逻辑卷全路径名]
lvrename 旧逻辑卷全路径名 新逻辑卷全路径名
lvrename 卷组名 旧逻辑卷名 新逻辑卷名
lvchange
e2fsadm -L +|- 逻辑卷增减量 逻辑卷全路径名
逻辑卷的创建与删除命令
lvcreate
lvremove
逻辑卷的扩充与缩小命令
lvextend -L|--size +逻辑卷大小增量 逻辑卷全路径名
lvreduce q -L|--size +逻辑卷减小量 逻辑卷全路径名
4、 逻辑卷管理命令
lvmdiskscan #检测所有的SCSI、IDE等存储设备
lvmchange -R|--reset #复位逻辑卷管理器
lvmsadc [日志文件全路径名] #收信逻辑卷管理器读写统计信息,保存到日志文件中。
lvmsar 日志文件全路径名 #从lvmsadc命令生成的日志文件中读取并报告逻辑卷管理器的读写统计信息。
创建lvm流程:
①将物理磁盘设备初始化为物理卷
pvcreate /dev/sdb /dev/sdc
②创建卷组,并将PV加入卷组中
vgcreate linux_vg /dev/sdb /dev/sdc
③基于卷组创建逻辑卷
lvcreate -n hh_lv -L 10G linux_vg
④为创建好的逻辑卷格式化
mkfs.xfs /dev/linux/hh_lv
⑤将格式化好的逻辑卷进行挂载使用
#创建挂载目录
mkdir /data
#临时挂载
mount /dev/linux_vg/hh_lv /data
删除lvm流程:
①删除LV
lvremove /dev/linux_vg/hh_lv
②删除VG
vgremove /dev/linux_vg
③删除物理卷
pvremove /dev/sdb
缩小逻辑卷:
逻辑卷的缩小操作必须离线执行,要卸载逻辑卷
①卸载已经挂载的逻辑卷
umount /dev/linux_vg/hh_lv
②缩小文件系统 (会提示需要运行fsck检查文件系统)
resize2fs /dev/linux_vg/hh_lv 1G
③缩小LV
lvreduce -L -1G /dev/linux_vg/hh_lv
④查看缩小后的LV
lvdisplay
⑤挂载
mount /dev/linux_vg/hh_lv /data
缩小卷组:
①将一个PV从制定卷组中移除
vgreduce linux_vg /dev/sdc
②查看缩小后的卷组大小
vgdisplay 方法1
vgs 方法2
vgscan 方法3
LVM建立和扩容:
#GPT 创建分区
gdisk /dev/sdc
n
+10G (sdc1)
p 打印分区信息
w 保存并退出
y 正在写入磁盘分区表中
sdc 100G
-sdc1 10G
-sdc2 10G
-sdc3 10G
-sdc4 10G
-sdc5 10G
-sdc6 10G
1.创建卷组
创建卷组思路:将创建好的物理卷组成卷组(CentOS7系统直接创建卷组)
#命令格式
vgcreate 卷组名 设备路径1 设备路径2 .....
#创建卷组 取名
#sdc1、sdc2、sdc3组合一个卷组
vgcreate db_vg /dev/sdc1 /dev/sdc2 /dev/sdc3
#详细显示卷组信息
vgdisplay db_vg
#或者,简要显示卷组信息
vgs db_vg
2. 创建逻辑卷
创建逻辑卷思路: 从创建好的卷组中创建逻辑卷
#命令格式:
lvcreate -L 大小 -n 逻辑卷名 卷组名
#创建逻辑卷
lvcreate -L 20G -n mylv db_vg
#简要查看逻辑卷信息
lvs
#查看卷组信息,卷组信息以变小
vgs
3.格式化
#格式化
#卷组下 逻辑卷
mkfs.xfs /dev/db_vg/my_lv
#查看文件系统
lsblk -f /dev/db_vg/my_lv
4.挂载(临时挂载)
#创建挂载目录
mkdir /db_bak
#临时挂载到/db_bask
mount /dev/db_vg/m_lv /db_bak
5.自动挂载
#永久挂载
[root@admin ~]# vim /etc/fstab
/dev/db_vg/my_lv /db_bak xfs default 0 0
#检查挂载
#重新加载fstab文件中的内容
#相当于更新你刚刚修改fstab文件内容
mount -a
6.扩容逻辑卷
逻辑卷支持线上扩容,逻辑卷的空间来源于卷组,当卷组有足够的空间时,才可以扩展逻辑卷
#扩展命令:
lvextend -L +{K,M,G} 逻辑卷路径
#扩展逻辑卷
lvextend -L +10G /dev/db_vg/my_lv
#查看扩充后LV大小
lvs
刷新磁盘空间
#刷新挂载点目录 (方法1)
xfs_growfs /db_bak/
方法2: 更新文件系统
resize2fs /dev/db_vg/my_lv
#查看更新后文件系统
df -h
#磁盘大小发生变化
7.扩容卷组
卷组的空间来源于物理分区,当卷组没有足够空间提供给逻辑卷时,须扩容卷组
扩展卷组命令 vgextend
#扩容卷组名
#卷组名称 设备路径
vgextend db_vg /dev/sdc4 /dev/sdc5 /dev/sdc6
还有一种方法 {} 匹配
vgextend db_vg /dev/sdc{4..6}
#查看卷组信息
vgs
#扩容逻辑卷
lvextend -L +40G /dev/db_vg/my_lv
#显示逻辑卷信息
lvs
#刷新挂载点文件空间
xfs_growfs /db_bak/
删除
#首先卸载
umount /db_bak
#先删除逻辑卷(lvremove),然后删除卷组(vgremove)
lvremove /dev/db_vg/db_lv
#查看磁盘
df -h
#查看卷组信息还在
vgs
#删除卷组
vgremove db_vg
#再然后查看卷组
vgs
#强制覆盖 物理卷
mkfs.xfs -f /dev/sdc4
#删除pv 物理卷
pvremove /dev/sdc5
物理卷迁移:
新增磁盘
1. 新建磁盘分区
新增磁盘需要使用fdisk工具完成磁盘分区,分区后并调整分区为‘Linux LVM’格式,本例中使用fdisk工具新增主分区,并将/dev/sdc磁盘作为一个分区使用
2. 创建物理卷
完成/dev/sdc分区后,可以在/dev/sdc1基础之上使用pvcreate命令创建物理卷。成功创建物理卷后,系统会提示‘Physical volume "/dev/sdc1" successfully created’的输出信息,同时可以使用pvscan、pvs等命令检查当前系统中所存在的物理卷信息
pvcreate /dev/sdc1
pvscan
pvs -o +devices
3. 扩展卷组
完成/dev/sdc1物理卷创建后,可以使用vgextend命令将该物理卷添加到freeops卷组中,执行‘vgextend freeops /dev/sdc1’命令扩展freeops卷组,扩展完成后,系统将会返回‘Volume group "freeops" successfully extended’的提示信息
vgs -o +devices
vgextend freeops /dev/sdc1
vgs -o +devices
pvs -o +devices
4. 物理卷迁移
完成freeops卷组扩展后,卷组内将会存在/dev/sdb1、/dev/sdc1物理卷,目前/dev/freeops/data逻辑卷仅使用/dev/sdb1,可以使用pvmove命令将/dev/freeops/data逻辑卷迁移至/dev/sdc1。使用pvmove迁移物理卷时,迁移速率及时间受原磁盘数据量限制
pvmove -n /dev/freeops/data /dev/sdb1 /dev/sdc1
5. 迁移后确认
使用pvmove命令完成/dev/freeops/data逻辑卷迁移后,/dev/freeops/data所使用的设备将变成/dev/sdc1设备,且挂载点下的内容大小并未发生变化。执行lsblk命令查看当前设备磁盘信息,可以确认逻辑卷已完成迁移工作
du -sh /data
pvs -o +devices
lvs -o +devices /dev/freeops/data
lsblk
6. 原磁盘迁出
完成物理卷迁移后,原来的故障磁盘不可以直接卸载,需要执行vgreduce命令将该物理卷从卷组中移除,并执行pvremove命令擦除物理卷信息。完成上述工作后,该故障磁盘将可以直接从系统中拔出移交维修
vgreduce freeops /dev/sdb1
vgs
pvs -o +devices
pvremove /dev/sdb1
pvs -o +devices
参考资料: