在使用lvm前先了解下 LVM介绍及架构,直接开撸。
LVM卷使用
假设有一块1T的盘(/dev/sdb),创建三个分区,使用LVM配置逻辑卷并管理,常见操作步骤如下:
1. 使用fdisk创建LVM类型的分区 → 2. 创建物理卷 → 3. 创建卷组 → 4. 创建逻辑卷 → 5. 格式化并挂载逻辑卷 → 6. 更新fstab
使用fdisk创建分区:fdisk /dev/sdb
按
n
创建新分区,选择主分区 (p
),分区号1,起始扇区默认,结束扇区设置为+300G
。按
t
更改分区类型,选择8e
(Linux LVM)。重复上述步骤创建分区2和3,分配剩余空间(确保类型均为8e)。
按
w
保存并退出。
LVM配置逻辑卷
1. 创建物理卷(PV): pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3 2. 创建卷组(VG): vgcreate vg_sealer /dev/sdb1 /dev/sdb2 /dev/sdb3 3. 创建逻辑卷(LV): lvcreate -n lv_sealer -L 300G vg_sealer
格式化并挂载逻辑卷
1. 格式化逻辑卷:根据需求选择 ext4、xfs 或其他类型,格式化命令需匹配 mkfs.ext4 /dev/vg_sealer/lv_sealer 2. 创建挂载目录: mkdir -p /var/lib/sealer 3. 获取逻辑卷的UUID: blkid /dev/vg_sealer/lv_sealer 4. 编辑/etc/fstab文件: vim /etc/fstab 添加以下行, # 设备标识(建议使用UUID,避免设备名变化导致问题),第1个0为dump 备份标志(0=不备份,1=备份),第2个0为 fsck 检查顺序(0=不检查,根分区设为1,其他数据分区可设为0或2) UUID=你的UUID /var/lib/sealer ext4 defaults 0 0 或者直接挂LVM逻辑卷 /dev/vg_sealer/lv_sealer /var/lib/sealer ext4 defaults 0 0 5. 挂载逻辑卷: mount -a
实际挂载的是LVM逻辑卷(如/dev/vg_sealer/lv_sealer
),而非直接挂载/dev/sdb1
。LVM允许更灵活的存储管理,建议通过逻辑卷进行操作。
LVM逻辑卷扩容
现在300G的卷不够用了,需要将逻辑卷 lv_sealer
从 300G 扩展到 400G,操作步骤如下:
1. 检察卷组(VG)的剩余空间 → 2. 扩容逻辑卷(LV)大小 → 3. 扩展文件系统 → 4. 验证扩展结果
1. 首先确认卷组 vg_sealer 是否有足够的剩余空间: vgdisplay vg_sealer # 查看 Free PE / Size 字段,确保剩余空间 ≥ 100G(若不足需先扩展卷组) Free PE / Size 25599 / 700G # 表示剩余 100G 空间 2. 扩展逻辑卷(LV)大小:将逻辑卷从 300G 扩展到 400G(新增 100G) lvextend -L +100G /dev/vg_sealer/lv_sealer lvextend -L 400G /dev/vg_sealer/lv_sealer # 或直接指定目标大小:-L 400G # 此命令会将卷组中 所有剩余空间 添加到 lv_sealer。 lvextend -l +100%FREE /dev/vg_sealer/lv_sealer # 将剩余空间全部分配给逻辑卷(LV) 3. 扩展文件系统:调整文件系统以使用新增的空间(假设文件系统为 ext4) resize2fs /dev/vg_sealer/lv_sealer #(如果是 xfs 文件系统,用 xfs_growfs /var/lib/sealer) 4. 验证扩展结果:确认逻辑卷和文件系统的新大小 lvdisplay /dev/vg_sealer/lv_sealer # 检查 LV 大小 df -h /var/lib/sealer # 检查文件系统大小
完成后,逻辑卷和文件系统将扩容至 400G, /var/lib/sealer
的挂载点会自动使用新空间。且 ext4
/xfs
支持在线调整(ext4支持在线扩缩容、xfs只支持扩容,不支持缩容),无需卸载文件系统。操作前建议备份重要数据(虽然风险极低)。
创建逻辑卷并占用全部剩余空间
现在突然有个需求,需要创建一个etcd的逻辑卷,并把卷组剩余的空间都分给它使用,此时可以使用 lvcreate
命令,通过 -l 100%FREE
参数直接分配所有剩余空间:
lvcreate -n lv_etcd -l 100%FREE vg_sealer
参数解释:
-n lv_etcd
:指定逻辑卷名称为lv_etcd
。-l 100%FREE
:占用卷组中 全部剩余空间。vg_sealer
:目标卷组名称(根据实际情况替换)。