pvcreate命令将物理硬盘初始化为LVM物理卷,本质是写入元数据头而不格式化文件系统;需先用lsblk等确认设备,避免误操作;支持多设备、自定义PE大小;成功后可用pvs/pvdisplay验证,未建VG/LV前可用pvremove清除。

直接上手配置 LVM,关键在于顺序不能错:先建 pvcreate,再组 vgcreate,最后分 lvcreate;跳过任意一步或颠倒顺序,后续命令会报错或设备不可用。
怎么用新硬盘初始化物理卷(pvcreate)
新磁盘(如 /dev/sdb)必须先被识别为 LVM 物理卷,否则无法加入卷组。注意:该操作会清空目标设备全部数据,且不依赖分区表——可直接对整盘操作,也可对已设类型为 8e 的分区(如 /dev/sdb1)操作。
- 确认设备存在:
lsblk或fdisk -l | grep "^Disk\|/dev/sd" - 整盘初始化(推荐用于云硬盘或干净磁盘):
pvcreate /dev/sdb - 分区方式初始化(适用于已有分区结构的场景):
pvcreate /dev/sdb1,前提是该分区类型已是8e(用fdisk /dev/sdb→t→ 输入8e设置) - 验证结果:
pvs应显示该 PV 的PSize和PFree;若显示Allocatable NO,说明未成功初始化,常见原因是设备正被其他进程占用(如自动挂载、udev 规则干扰)
怎么创建并验证卷组(vgcreate)
卷组是物理卷的资源池,名称需全局唯一、不含下划线以外的特殊字符(如点、空格),且不能与现有 VG 冲突。创建后立即可用,但若后续要扩容,必须确保 VG 名称拼写完全一致。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 基础创建:
vgcreate vg_data /dev/sdb(单盘)或vgcreate vg_data /dev/sdb /dev/sdc(多盘聚合) - 指定 PE 大小(影响最大 LV 精度):
vgcreate -s 8M vg_data /dev/sdb;默认 4M 足够日常使用,调大可减少元数据开销,但会限制最小 LV 增量 - 验证是否生效:
vgs查看VSize和VFree;vgdisplay vg_data可确认 PV 成员及 PE 总数 - 常见失败原因:
Device /dev/sdb not found表示内核未识别该设备,需执行partprobe或重启 udev;Failed to find physical extent多因 PV 初始化失败或设备路径错误
怎么划分逻辑卷并格式化(lvcreate + mkfs)
逻辑卷本质是 VG 中分配出的一段连续或非连续空间,创建后需显式格式化才能挂载。设备路径有两种等效形式:/dev/vg_name/lv_name 和 /dev/mapper/vg_name-lv_name,后者是前者软链接,fstab 中建议用前者更稳定。
- 按大小创建:
lvcreate -L 20G -n lv_app vg_data - 用尽剩余空间:
lvcreate -l 100%FREE -n lv_home vg_data(注意是小写l,不是大写L) - 格式化(根据需求选):
mkfs.xfs /dev/vg_data/lv_app或mkfs.ext4 /dev/vg_data/lv_app - 挂载前务必创建目录:
mkdir /app,然后mount /dev/vg_data/lv_app /app -
/boot分区绝不能放在 LVM 上,GRUB 不支持从 LV 加载内核;/和/home可放,但需确保 initramfs 包含lvm2模块(多数发行版默认启用)
怎么让 LVM 自动挂载进系统(/etc/fstab 配置)
fstab 条目必须使用设备路径而非 UUID(LVM 设备无标准 UUID),且需确认文件系统类型与格式化时一致,否则 mount -a 会失败并阻断启动流程。
- 正确写法:
/dev/vg_data/lv_app /app xfs defaults 0 0 - 错误写法:
UUID=xxx /app xfs ...(LVM LV 没有 UUID 字段)或/dev/mapper/vg_data-lv_app(符号链接在早期 init 阶段可能未就绪) - 验证配置:
mount -a无输出即成功;df -h | grep app确认已挂载 - 如果系统启动卡在 “A start job is running for dev-mapper-xxx.device”,大概率是 fstab 中路径错误或 LV 未激活;可临时改用
root登录,运行vgchange -ay激活所有 VG,再重试
真正容易被忽略的是 VG 激活状态和 initramfs 兼容性:新创建的 VG 默认处于 inactive 状态,仅在首次 vgchange -ay 后才对系统可见;而某些精简镜像(如 CoreOS、部分容器宿主机)可能未预装 lvm2,导致重启后 LV 不自动激活——这不是配置错误,而是环境缺失。

















