LVM 相关技术属于是三年用一次, 每次都要从头学习, 记录在这里
> 为什么用LVM
原本linux文件系统是直接安装在物理磁盘上, 所以当空间不够时只能找个更大的硬盘, 把数据迁移再换上去, 非常麻烦. 所以有了 LVM (Logical Volume Manager), 可以非常方便增加或减少硬盘而不影响系统使用
> 基本原理
传统模式下管理不方便的原因是我们无法直接扩展硬盘的大小(普通人不能), 所以LVM的思路是让系统把文件系统安装在一个可以方便调整的 "虚拟的硬盘" 上, 具体做法是
- 硬盘格式化成PV (Physical Volume). 具体是把每个硬盘都分割成许多个固定大小(默认4M)的PE (Physical Extend). 所以LVM模式基本存储单位就是PE
- 将一个或多个PV加入VG(Volume Group)
- 在 VG 上创建 LV 供系统使用. LV的大小都是PE的整数倍
- 在LV上创建文件系统, 挂载到目录正常使用
其中, 每台计算机可以创建多个VG, 每个VG可以创建多个LV. VG和LV都必须命名以便区分
image.png> 从头创建
1. 创建PV (把 sdb 和 sdc 两块硬盘格式化为PV)
pvcreate /dev/sdb /dev/sdc
2. 创建VG (把两个PV加入一个新VG: vg1)
vgcreate vg1 /dev/sdb /dev/sdc
3. 创建LV (在vg1里创建出大小为10G的一个LV: lv1)
lvcreate -n lv1 -L 10G vg1
4. 创建文件系统(在lv1上创建文件系统)
mkfs.ext4 /dev/vg1/lv1
5. 挂载 (将创建好的LV挂载到目录 /data来使用)
mount /dev/vg1/lv1 /data
> 管理运维
查看
pvdisplay # 查看PV信息(详细)
pvs # 查看PV信息(简略)
vgdisplay # 查看VG信息(详细)
vgs # 查看VG信息(简略)
lvdisplay # 查看LV信息(详细)
lvs # 查看LV信息(简略)
删除LV (需按顺序删除)
lvremove /dev/vg1/lv1 # 先删除lv1
vgremove vg1 # 删除vg1
pvremove /dev/sdb # 删除 PV
扩展LV, 从vg1里增加2G空间给lv1 (无需卸载停用, 可以直接扩展)
lvextend -L +2G /dev/vg1/lv1
resize2fs /dev/vg1/lv1 # 需要更新文件系统才可以使用
扩展VG, 如果vg1空间不足时可以增加硬盘扩展VG
pvcreate /dev/sdd # 创建新的PV , 不要写错不然......
vgextend vg1 /dev/sdd # 将新PV加入vg1
缩小LV, 把lv1大小缩小到 5G (注意控制大小, 预留缓冲的空间, 否则容易损坏数据)
要按顺序操作, 先修改文件系统, 再缩小LV大小
unmount /dev/vg1/lv1 # 卸载lv1
e2fsck -f /dev/vg1/lv1 # 校验
resize2fs /dev/vg1/lv1 5G # 先缩小文件系统 (注意是指定大小, 不是减少5G)
lvreeduce -L -4G /dev/vg1/lv1 # 把lv1缩小 4G
mount /dev/vg1/lv1 /data # 重新挂载
缩小VG, 移除对应的PV即可
vgreduce vg1 /dev/sdd # 把sdd上的PV从vg1移除
网友评论