Linux分区有多种方式,一种是LVM格式的比较方便,另一种是标准分区扩容比较麻烦,麻烦的事情那么出错的概率也就越大,所以建议生产环境上分区都使用LVM格式硬盘分区。
一. 什么叫LVM?
LVM全称叫「Logical Volume Manage」,可以允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小,允许在多个物理设备间重新组织文件系统。
LVM可以弹性的更改LVM的容量,pe是lvm中存储最小的存储单位,类似与我们平常说的1K。
它可以通过交换PE来进行资料的转换,将原来LV内的PE转移到其他的设备中以降低LV的容量,或将其他设备中的PE加到LV中以加大容量,通过这样的方式来实现动态调整分区的大小,来达到更小风险的动态分区扩容与缩容。
二. LVM基本特性:
PV物理卷
LVM基本特性,即可以通过插件CLVM,实现群集逻辑卷管理
LV逻辑卷(逻辑卷管理:会在物理存储上生成抽象层,以便创建逻辑存储卷,方便设备命名)(下面是逻辑卷的分类)
Linear 线性卷(这是默认的LVM形式,即按顺序占用磁盘,一块写完了再写另一块)
Stripe 条带逻辑卷
RAID raid逻辑卷
Mirror 镜像卷
Thinly-Provision 精简配置逻辑卷
Snapshot 快照卷
Thinly-Provisioned Snapshot 精简配置快照卷
Cache 缓存卷
三. 创建PV时(一同被创建的有)
1. 接近设备起始处,放置一个标签,包括uuid,元数据的位置 #(这个标签每个磁盘默认都保持一份)
2. LVM元数据,包含LVM卷组的配置详情
3. 剩余空间,用于存储数据
四. LVM逻辑卷概念及创建LVM的步骤
1. LVM的组成
PE:(物理拓展,是VG卷组的基本组成单位)
PV:(物理卷)
VG:(卷组)
LV:(逻辑卷)
2. 创建LVM的步骤
1. 将磁盘创建为PV(物理卷),其实物理磁盘被条带化为PV,划成了一个一个的PE,默认每个PE大小是4MB
2. 创建VG(卷组),其实它是一个空间池,不同PV加入同一VG
3. 创建LV(逻辑卷),组成LV的PE可能来自不同的物理磁盘
4. 格式化LV,挂载使用
五. LVM相关命令工具
1. PV操作命令
pvchange 更改物理卷的属性
pvck 检查物理卷元数据
pvcreate 初始化磁盘或分区以供lvm使用
pvdisplay 显示物理卷的属性
pvmove 移动物理Exent
pvremove 删除物理卷
pvresize 调整lvm2使用的磁盘或分区的大小
pvs 报告有关物理卷的信息
pvscan 扫描物理卷的所有磁盘
2. VG操作命令
vgcfgbackup 备份卷组描述符区域
vgcfgrestore 恢复卷组描述符区域
vgchange 更改卷组的属性
vgck 检查卷组元数据
vgconvert 转换卷组元数据格式
vgcreate 创建卷组
vgdisplay 显示卷组的属性
vgexport 使卷组对系统不了解(这是个什么)
vgextend 将物理卷添加到卷组
vgimportclone 导入并重命名重复的卷组(例如硬件快照)
vgmerge 合并两个卷组
vgmknodes 重新创建卷组目录和逻辑卷特殊文件
vgreduce 通过删除一个或多个物理卷来减少卷组(将物理卷踢出VG)
vgremove 删除卷组
vgrename 重命名卷组
vgs 报告有关卷组信息
vgscan 扫描卷组的所有磁盘并重建高速缓存
vgsplit 将卷组拆分为两个,通过移动整个物理卷将任何逻辑卷从一个卷组移动到另一个卷组
3. lv操作命令
lvchange 更改逻辑卷属性
lvconvert 将逻辑卷从线性转换为镜像或快照
lvcreate 将现有卷组中创建逻辑卷
lvdisplay 显示逻辑卷的属性
lvextend 扩展逻辑卷的大小
lvmconfig 在加载lvm.conf和任何其他配置文件后显示配置信息
lvmdiskscan 扫描lvm2可见的所有设备
lvmdump 创建lvm2信息转储以用于诊断目的
lvreduce 减少逻辑卷的大小
lvremove 删除逻辑卷
lvrename 重命名逻辑卷
lvresize 调整逻辑卷大小
lvs 报告有关逻辑卷的信息
lvscan 扫描所有的逻辑卷
六. LVM管理命令
1. PV管理(物理卷)
pvcreate /dev/sdb1 制作PV
pvremove /dev/sdb1 删除PV撤销PV(需先踢出VG)
2. VG管理(卷组)
vgcreate datavg /dev/sdb1 制作VG
vgcreate datavg /dev/sdb1 /dev/sdb2 制作多个VG, 格式:vgcreate vgname 分区
vgcreate -s 16M datavg2 /dev/sdb3 注:-s 指定pe的大小为16M,默认是4M
vgreduce --removemissing datavg 从卷组中移除缺失的磁盘
vgreduce --removemissing datavg --force 强制移除
vgextend datavg /dev/sdb3 扩展VG空间
pvs 查看pv信息
vgreduce datavg /dev/sdb3 踢出VG中的某个成员
vgs 查看vgs信息
3. LV管理(逻辑卷)
lvcreate -n lvdata1 -L 1.5G datavg
#制作LV逻辑卷, 参数: -n lv的名字,-L 指定lv的大小,datavg 是vg的名字,表示从那个vg上来制作.
lvchange -ay /dev/datavg/lvdata1 激活修复后的逻辑卷
lvchange -ay /dev/datavg/lvdata1 -K 强制激活
七. LVM的快照
用途:注意用途是数据一致性备份,先做一个快照,冻结当前系统,这样快照里面的内容可暂时保持不变,系统本身继续运行,通过重新挂载备份快照卷,实现不中断服务备份。
例: lvcreate -s -n kuaizhao01 -L 100M /dev/datavg/lvdata1
八. LVM中查看PV\VG\LV和删除使用方法
1. 查看物理卷信息
pvs && pvdisplay
2. 查看卷组信息
vgs && vgdisplay
3. 查看逻辑卷信息
lvs && lvdisplay
4. 删除LV
lvremove /dev/mapper/VG-mylv
5. 删除VG
vgremove VG
6. 删除PV(注意删除顺序是LV,VG,PV)
pvremove /dev/sdb
九. 一个centos8.5的LVM扩容实例:
原因:有一台服务器是centos8系统,使用hyper-v虚拟机安装,使用一段时间后发现分区容量已占98%,需要扩容。经查询当前系统分区为LVM(逻辑卷管理), 卷组(vg)名为centos,支持动态扩容,所以决定直接添加新硬盘动态扩容,具体操作如下:
1. 虚拟机新添加一块硬盘:
虚拟机-右键-设置-IDE控制器-添加-选择126G容量-虚拟硬盘位置-选择目录-文件名-确定
2. 创建新的PV物理卷, 加入相应的VG:
fdisk -l #查看新磁盘是否添加成功,本例发现新出现sdb物理磁盘,即成功
#(似乎可以不分区) fdisk /dev/sdb #给新硬盘分区:n-p-回车-回车-w 保存退出
lsblk -f #查看一下磁盘逻辑和文件系统
pvcreate /dev/sdb #为新硬盘创建物理卷, 即把sdb添加到物理硬盘池中
pvs #查看pv物理卷空间,确认原有VG名为centos
vgextend centos /dev/sdb #将刚才创建好的物理卷添加到pv组空间centos中去
pvs #再查看一下pv组空间,新的sdb物理卷的VG名是否成功变成centos
vgs #查看卷组vg的容量情况,centos应该已经出现新的VFree空闲空间
3. 扩容LV逻辑卷centos-root:
df -hT #先查询出要动态扩容的vg逻辑卷全名
lvs #再次确认一遍需要扩容的vg name
lvextend -L +100G /dev/mapper/centos-root
#添加容量(路径也可以用: lvextend -L +100G /dev/centos/root)
xfs_growfs /dev/mapper/centos-root #确认扩容xfs格式的分区
# ext4文件系统 :resize2fs /dev/mapper/centos-root
df -hT && lsblk -f #查看挂载点、系统和容量,确认容量修改已经成功生效
pvs && vgs && lvs #查看物理卷&卷组&逻辑卷的信息, 确认成功
lsblk -f #查看新磁盘UUID号码“ls -l /dev/disk/by-uuid/”也可
vi /etc/fstab #配置挂载信息,如果用mount挂载,重启后可能引发系统崩溃
UUID=b0fab428-92a9-46b5-8032-772c628d98dd /data/mysql_data ext4 defaults 0 0
备注:如果分区为非LVM,可以添加硬盘格式化后挂载新目录,把原有数据cp转移到新目录。