Linux之lvm应用
1. LVM2介绍
全称:Logical Volume Manager Version 2
内核使用的模块dm: device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块
真正的设备文件:/dev/dm-0 /dev/dm-1 /dev/dm-2
符号链接文件:/dev/mapper/VG_NAME-LV_NAME
/dev/VolGroup/lv_home
/dev/VolGroup/lv_root
/dev/VolGroup/lv_swap
2. LVM2名词
PV: 物理卷 逻辑卷管理系统最底层,可为整个物理硬盘或实际物理硬盘上的分区。
VG: 卷组 PV组合成VG,卷组建立在物理卷上,一卷组中至少包括一个物理卷,卷组建立后可动态的添加卷到卷组中,一个逻辑卷管理系统可有多个卷组
LV: 逻辑卷 VG切分成LV,逻辑卷建立在卷组基础上,卷组中未分配空间可用于建立新的逻辑卷,逻辑卷建立后可动态扩展和缩小空间
PE: 物理块 PV的基本单元,默认4M
LE: 逻辑块 LV的基本单元,一个逻辑卷最多只能包含65536个PE,所以一个PE的大小就决定了逻辑卷的最大容量
抽象关系:
3. 操作流程图
4. 如何配置LVM逻辑卷管理系统
1. 安装系统时,指定lvm
2. 安装系统时,选择的是标准分区,而不是lvm
1. 将各物理磁盘或分区的系统类型设为Linux LVM,其system ID为8e
[root@localhost ~]# fdisk /dev/sda ... Command (m for help): n First cylinder (1593-3916, default 1593): Using default value 1593 Last cylinder, +cylinders or +size{K,M,G} (1593-3916, default 3916): +5G ... Command (m for help): t Partition number (1-6): 5 Hex code (type L to list codes): 8e # 指定system ID为8e Changed system type of partition 5 to 8e (Linux LVM) ... Command (m for help): p ... /dev/sda5 1593 2246 5252227+ 8e Linux LVM /dev/sda6 2247 2900 5253223+ 8e Linux LVM /dev/sda7 2901 3554 5253223+ 8e Linux LVM Command (m for help): w
2. 把要修改为lvm的分区,卸载umount /dev/sdb1
3. 创建pv
pvcreate /dev/sdb1
4. 创建vg
5. 创建lv
5. PV管理工具
pvcreate 创建pv
pvcreate /dev/sda2
-f:强制创建逻辑卷,不需用户确认
-u:指定设备的UUID
-y:所有问题都回答yes
pvscan 搜寻目前系统里面任何具有PV的磁盘
[root@db ~]# pvscan PV /dev/sda2 VG VolGroup lvm2 [2.18 TiB / 154.63 GiB free] Total: 1 [2.18 TiB] / in use: 1 [2.18 TiB] / in no VG: 0 [0 ]
-e:仅显示属于输出卷组的物理卷
-n:仅显示不属于任何卷组的物理卷
-u:显示UUID
pvs 显示PV简要信息
[root@db ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 VolGroup lvm2 a-- 2.18t 154.63g
pvdisplay 显示当前所有pv详细信息
[root@db ~]# pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name VolGroup PV Size 2.18 TiB / not usable 2.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 571554 Free PE 39586 Allocated PE 531968 PV UUID 6LStL8-Pfmw-rQ2P-nt7V-oilE-zSP3-VbQ0WP
pvremove 将PV属性移除,让该partition不具有PV属性
pvremove /dev/sda2
-f:强制删除
-y:所有问题都回答yes
6. VG管理工具
vgcreate 创建卷组
语法: vgcreate [-s N[mgt]] VG名称 PV名称
-s: 后面接PE的大小(size),单位可以是m,g,t(大小写均可),默认为4M
-l: 卷组上允许创建的最大逻辑卷数
-p: 卷组中允许添加的最大物理卷数
例子:
vgcreate -s 16M myvg /dev/sda2
vgscan 搜寻系统上面是否有VG存在
[root@db ~]# vgscan Reading all physical volumes. This may take a while... Found volume group "myvg" using metadata type lvm2
vgs 显示卷组简要信息
[root@db ~]# vgs VG #PV #LV #SN Attr VSize VFree VolGroup 1 3 0 wz--n- 2.18t 154.63g
vgdisplay 显示卷组详细信息
[root@dbm_200_shopzp ~]# vgdisplay --- Volume group --- VG Name myvg System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 6 VG Access read/write VG Status resizable MAX LV 0 Cur LV 3 Open LV 3 Max PV 0 Cur PV 1 Act PV 1 VG Size 2.18 TiB PE Size 4.00 MiB Total PE 571554 Alloc PE / Size 531968 / 2.03 TiB Free PE / Size 39586 / 154.63 GiB VG UUID J0ZD5l-RJU1-XSfb-CYb2-hNzI-FEtC-JeMhhY
-A:仅显示活动卷组的信息
-s:使用短格式输出信息
vgremove 删除卷组
vgremove myvg /dev/sda2
vgextend 在VG内增加额外的PV
vgextend myvg /dev/sda3
vgreduce 在VG内移除PV
vgreduce myvg /dev/sda3
先做pvmove,移动该PV到同组的其它PV
7. LV管理工具
逻辑卷对应的设备文件保存在卷组目录下,为/dev/VG_NAME/LV_NAME.
lvcreate 创建逻辑卷
语法: lvcreate [-l N] [-n LV名称] VG名称
-L: 后面接容量,这个数字必须是PE的倍数
-l: 后面接PE的个数
-n: 后面接的就是LV的名称
-s: 创建快照
-p r: 设置为只读
lvcreate -I 356 -n mylv myvg
lvcreate -L 5.56G -n mylv myvg
创建完成后,会产生一个文件/dev/myvg/mylv,符号链接到/dev/mapper/myvg_mylv
文件系统阶段,格式化分区
mkfs -t ext4 /dev/myvg/mylv
mkdir /mnt/lvm
mount /dev/myvg/mylv /mnt/lvm
lvscan 扫描当前系统中的所有逻辑卷,及其对应的设备文件
lvs 显示逻辑卷简要信息
[root@dbm_200_shopzp ~]# lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert mylv myvg -wi-ao---- 5.56g
lvdisplay 显示详细信息
[root@dbm_200_shopzp ~]# lvdisplay --- Logical volume --- LV Path /dev/myvg/mylv LV Name mylv VG Name myvg LV UUID 2kroy3-WWcd-Qzqr-K3vI-1CrR-rtsh-0btU2f LV Write Access read/write LV Creation host, time localhost.localdomain, 2019-06-05 02:26:35 +0800 LV Status available # open 1 LV Size 5.56 GiB Current LE 268800 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
lvreduce 在LV里面减少容量
-L:指定缩减(后)的大小
-l:指定缩减(后)的大小(LE数)
umount /dev/VG_NAME/LV_NAME
e2fsck -f /dev/VG_NAME/LV_NAME
resize2fs /dev/VG_NAME/LV_NAME 指定大小
lvreduce -L 3G /dev/VG_NAME/LV_NAME
mount /dev/VG_NAME/LV_NAME
lvextend 在LV里面增加容量
-L:指定扩展(后)的大小。例如,-L +800M表示扩大800M,而-L 800M表示扩大至800M
-l:指定扩展(后)的大小(LE数)
lvextend -L [+]1000G /dev/VG_NAME/LV_NAME
resize2fs /dev/VG_NAME/LV_NAME
lvremove 删除一个LV
-f 强制删除
lvremove /dev/VG_NAME/LV_NAME
lvresize 对LV进行容量大小的调整
8. 扩大LV容量
1. 用fdisk设置新的具有8e systemID的分区
fdisk /dev/hda
partprobe
2. 利用pvcreate创建PV
pvcreate /dev/hda10
3. 利用vgextend将PV加入我们的myvg
vgextend myvg /dev/hda10
4. 利用lvextend将新加入的PV内的PE加入mylv
lvextend -L +300M /dev/myvg/mylv
5. 通过resize2fs将文件系统的容量确实增加,扩展文件系统
resize2fs /dev/myvg/mylv
9. 减小LV容量
1. umount /dev/myvg/mylv 卸载对应的逻辑卷
2. e2fsck -f /dev/myvg/mylv 检测文件系统
3. resize2fs /dev/myvg/mylv 500M 缩减/dev/myvg/mylv至500M
4. lvreduce -L 500M /dev/myvg/mylv 缩减/dev/myvg/mylv至500M
5. pvmove /dev/hda6 /dev/hda10 移动要删除的pv,到其他pv
6. vgreduce myvg /dev/hda6 减少卷组对应的物理卷
7. pvremove /dev/hda6 删除pv
10. centost调整根目录大小
1. 确保centos系统采用的是lvm分区格式
df -h
2. 想从VolGroup-lv_home分区取出200G的空间添加到根目录VolGroup-lv_root分区上
3. 卸载VolGroup-lv_home分区
umount /home
4. 再使用df -h查看/home目录没有了
5. 重新设置VolGroup-lv_home的大小
resize2fs -p /dev/mapper/VolGroup-lv_home 1024G
报错:
resize2fs: Bad magic number in super-block 当尝试打开 /dev/mapper/centos-home 时
找不到有效的文件系统超级块.
要求先执行命令: e2fsck -f /dev/mapper/VolGroup-lv_home
再执行: resize2fs -p /dev/mapper/VolGroup-lv_home 1024G
6. 检查/home大小是否设置成功
mount /home
df -h
7. 将VolGroup-lv_home减少到指定的大小
lvreduce -L 1024G /dev/mapper/VolGroup-lv_home
8. 查看卷组可分配的空间
vgdisplay
9. 将可用的空间添加到VolGroup-lv_root分区上
lvextend -L +1000G /dev/mapper/VolGroup-lv_root
10. 重新设定VolGroup-lv_root分区的大小
resize2fs -p /dev/mapper/VolGroup-lv_root
11. 再次查看
df -h
看到VolGroup-lv_root空间已经增加了1000G
11. LVM的系统快照
1. 快照示意图
2. 例子
[root@localhost ~]# mount -o remount,ro /dev/myvg/mylv /data # 创建快照卷之前先将对应的逻辑卷改为只读 [root@localhost ~]# lvcreate -s -L 512M -n mylv_snap /dev/myvg/mylv # 创建大小为512M的快照 Logical volume "mylv_snap" created [root@localhost ~]# mount -o remount,rw /dev/myvg/mylv /data # 将逻辑卷改回为读写 [root@localhost ~]# mount /dev/myvg/mylv_snap /mnt [root@localhost ~]# df -h # 可以看到快照和其对应的逻辑卷显示的参数值一样 ... /dev/mapper/myvg-mylv 489M 11M 453M 3% /data /dev/mapper/myvg-mylv_snap 489M 11M 453M 3% /mnt [root@localhost ~]# ls /mnt inittab lost+found [root@localhost ~]# cp /etc/passwd /data # 向原始卷中新增一些数据 [root@localhost ~]# ls /data inittab lost+found passwd [root@localhost ~]# ls /mnt # 快照所显示的文件系统状态仍是创建那一刻的 inittab lost+found
12. xfs文件系统扩容
参考文档:https://www.cnblogs.com/-abm/p/11349240.html