Linux 进阶 L18:LVM——会变魔术的磁盘
分区不够用了怎么办?传统办法:备份数据、删分区、重分区、恢复数据——折腾一下午。LVM:一条命令,磁盘在线变大,服务都不用停。
LVM 是什么
LVM 给磁盘加了个"中间层":物理磁盘 → PV(物理卷) → VG(卷组,磁盘池) → LV(逻辑卷,给你用的"分区")。
打个比方:PV 是砖头,VG 是砖头砌成的蓄水池,LV 是从池子里接出来的水管,要多粗有多粗,随时能加粗。
三个概念
sudo pvs # 看物理卷:哪些盘加入了 LVM
sudo vgs # 看卷组:池子多大、用了多少
sudo lvs # 看逻辑卷:分了几根"水管"
实战:创建一个 LVM 卷
假设有块新硬盘 /dev/sdb:
# 1. 做成物理卷
sudo pvcreate /dev/sdb
# 2. 建卷组(池子取名 vg_data)
sudo vgcreate vg_data /dev/sdb
# 3. 从池子里切 10G 出来(逻辑卷取名 lv_web)
sudo lvcreate -L 10G -n lv_web vg_data
# 4. 格式化、挂载
sudo mkfs.ext4 /dev/vg_data/lv_web
sudo mkdir /data && sudo mount /dev/vg_data/lv_web /data
魔术时刻:在线扩容
网站数据爆了,10G 不够,要加到 20G:
# 池子里还有空间,直接扩
sudo lvextend -L +10G /dev/vg_data/lv_web
sudo resize2fs /dev/vg_data/lv_web # ext4 文件系统也要"撑大"
两行命令,服务不用停,用户没感知。
没空间了?加块新盘进池子:
sudo pvcreate /dev/sdc
sudo vgextend vg_data /dev/sdc # 池子变大了
快照:后悔药
升级前拍个快照,翻车了秒回滚:
sudo lvcreate -L 2G -s -n snap_web /dev/vg_data/lv_web
# -s 表示快照,只存变化的部分
# 翻车了,恢复:
sudo umount /data
sudo lvconvert --merge /dev/vg_data/snap_web
sudo mount /dev/vg_data/lv_web /data
什么时候用 LVM
VPS 数据盘、数据库服务器(快照备份)。很多云厂商镜像默认就带 LVM,lsblk 看到 vg-xxx 字样就是。
小结
LVM 的核心思想:存储资源池化,按需分配。