3.4.2 LVM创建与初始化流程

3.4.2 LVM创建与初始化流程#

目标与前提#

  • 目标:将物理磁盘初始化为 PV,组建 VG,创建 LV 并格式化挂载
  • 前提:磁盘分区完成且类型为 LVM(8e),或直接使用整盘;系统已安装 LVM 工具

原理草图(LVM数据流)#

文章图片

安装与环境准备#

# 安装 LVM 工具
# RHEL/CentOS
yum install -y lvm2

# Ubuntu/Debian
apt-get update && apt-get install -y lvm2

# 查看磁盘与分区
lsblk
fdisk -l

标准创建与初始化流程(完整示例)#

# 1) 选择磁盘并分区(可选)
fdisk /dev/sdb <<'EOF'
n
p
1


t
8e
w
EOF

fdisk /dev/sdc <<'EOF'
n
p
1


t
8e
w
EOF

# 2) 初始化物理卷(PV)
pvcreate /dev/sdb1 /dev/sdc1
pvs

# 3) 创建卷组(VG)
vgcreate vg_data /dev/sdb1 /dev/sdc1
vgs

# 4) 创建逻辑卷(LV)
lvcreate -L 100G -n lv_app vg_data
lvs

# 5) 格式化文件系统
mkfs.xfs /dev/vg_data/lv_app

# 6) 挂载与开机自动挂载
mkdir -p /data/app
mount /dev/vg_data/lv_app /data/app
blkid /dev/vg_data/lv_app

# 使用 UUID 写入 /etc/fstab 更稳妥
UUID=$(blkid -s UUID -o value /dev/vg_data/lv_app)
echo "UUID=${UUID} /data/app xfs defaults 0 0" >> /etc/fstab

# 7) 验证挂载
mount -a
df -h | grep /data/app

关键命令解释(带示例)#

  • pvcreate /dev/sdb1:把分区初始化为 PV,写入 LVM 元数据
  • vgcreate vg_data /dev/sdb1 /dev/sdc1:把多个 PV 聚合成 VG
  • lvcreate -L 100G -n lv_app vg_data:在 VG 中创建 100G LV
  • mkfs.xfs /dev/vg_data/lv_app:在 LV 上创建文件系统
  • mount /dev/vg_data/lv_app /data/app:挂载到目录
  • blkid:获取 UUID,fstab 推荐用 UUID

最小化可执行示例(快速体验)#

pvcreate /dev/sdb1
vgcreate vg_test /dev/sdb1
lvcreate -L 5G -n lv_test vg_test
mkfs.ext4 /dev/vg_test/lv_test
mkdir -p /mnt/test
mount /dev/vg_test/lv_test /mnt/test
df -h | grep /mnt/test

常见错误与排错#

# 1) PV 被旧签名占用
wipefs -a /dev/sdb1
pvcreate /dev/sdb1

# 2) VG 创建失败(PV 未初始化)
pvs
pvcreate /dev/sdb1

# 3) LV 路径错误导致挂载失败
ls -l /dev/vg_data/
mount /dev/vg_data/lv_app /data/app

# 4) fstab 配置后无法启动
# 使用 emergency 模式进入,注释错误行,再执行:
mount -a

练习题#

  1. 创建一个由 /dev/sdb1/dev/sdc1 组成的 VG,名称为 vg_lab
  2. vg_lab 中创建 lv_web,大小为 20G,格式化为 XFS,挂载到 /srv/web
  3. 使用 UUID 写入 /etc/fstab,并验证 mount -a 无报错。
  4. 故意写错 fstab 行,练习如何修复并恢复正常启动。