对于Linux运维、服务器管理来说,LVM是必学的基础技能——它解决了传统分区“一旦创建,大小难改”的痛点,灵活又高效,新手也能快速上手。
一、LVM 是什么?
LVM(Logical Volume Manager,逻辑卷管理器),是Linux系统中一种灵活的存储管理技术。简单说,它能把多个物理磁盘/分区(比如/dev/sdb、/dev/sdc1)“整合”成一个统一的存储池,再从池里按需划分“逻辑卷”,供系统使用。
1. 动态调整大小:不用停机、不丢失数据,随时扩容/缩容逻辑卷;
2. 整合存储:把多个小磁盘合并成一个大“存储池”,避免空间浪费;
3. 支持快照:快速创建逻辑卷快照,方便备份和数据恢复。
二、核心概念
1. PV(物理卷):最底层,被LVM管理的物理设备,比如整块硬盘(/dev/sdb)、分区(/dev/sdb1);
2. VG(卷组):由1个或多个PV组成的“存储池”,把分散的物理空间整合到一起;
3. LV(逻辑卷):从VG中划分出来的“虚拟分区”,我们实际使用的就是它(比如挂载到/mnt/data,像普通分区一样用)。
关系总结:PV → 组成 VG → 划分出 LV,我们直接操作LV。
三、实操步骤
前提:准备好未使用的物理磁盘/分区(比如/dev/sdb),全程用root权限操作(加sudo)。
步骤1:创建PV(初始化物理设备)
把物理磁盘/分区初始化为LVM可识别的PV,命令:
pvcreate /dev/sdb # 单个设备# 多个设备可同时初始化:pvcreate /dev/sdb /dev/sdc验证:pvs (查看所有PV状态,确认创建成功)
步骤2:创建VG(整合PV为存储池)
给卷组起个名字(比如vg_data),将PV加入,命令:
vgcreate vg_data /dev/sdb # vg_data是卷组名,可自定义验证:vgs (查看卷组大小、剩余空间)
步骤3:创建LV(从存储池划分空间)
给逻辑卷起名(比如lv_data),指定大小(比如20G),命令:
lvcreate -n lv_data -L 20G vg_data # -n指定名字,-L指定大小# 也可使用VG全部剩余空间:lvcreate -n lv_data -l 100%FREE vg_data验证:lvs (查看逻辑卷信息)
步骤4:格式化并挂载LV(正式使用)
LV创建后,需格式化(选常用的ext4或xfs),再挂载到目录:
# 格式化(ext4格式,最常用)mkfs.ext4 /dev/vg_data/lv_data# 或xfs格式:mkfs.xfs /dev/vg_data/lv_data# 创建挂载点(自定义目录,比如/mnt/data)mkdir /mnt/data# 挂载LV到目录mount /dev/vg_data/lv_data /mnt/data可选(推荐):设置开机自动挂载,避免重启后失效,编辑/etc/fstab文件,添加一行:/dev/vg_data/lv_data /mnt/data ext4 defaults 0 0
四、常用补充操作
1. 扩容LV(最常用,比如LV空间不够用)
# 1. 先确认VG有剩余空间(vgs查看)# 2. 扩容LV(比如增加10G)lvextend -L +10G /dev/vg_data/lv_data# 3. 扩容文件系统(关键!否则系统识别不到新增空间)# ext4格式:resize2fs /dev/vg_data/lv_data# xfs格式:xfs_growfs /mnt/data(挂载点路径)
2. 删除LVM(谨慎操作,会丢失数据)
# 1. 卸载LVumount /mnt/data# 2. 删除LVlvremove /dev/vg_data/lv_data# 3. 删除VGvgremove vg_data# 4. 删除PVpvremove /dev/sdb
五、注意事项
1. 操作前备份重要数据,尤其是缩容、删除操作,一旦失误不可逆;
2. 缩容比扩容复杂,需先卸载LV、检查文件系统,新手建议优先用扩容;
3. PV可以是整块磁盘,也可以是分区,但分区需先设置为LVM类型(fdisk调整分区类型为8e)。
服务器做阵列必看!MegaRAID阵列卡硬盘支持类型详解
紧急!Linux磁盘满到100%,太卡了