Linux分卷在虚拟化环境中如何配置
小樊
41
2025-11-22 08:59:28
Linux 分卷在虚拟化环境中的配置指南
一 前置准备与规划
- 在虚拟化平台(如 VMware ESXi、KVM/QEMU、Hyper‑V)为虚拟机新增一块或多块虚拟磁盘,启动后使用 lsblk 确认新盘(如 /dev/sdb)。
- 规划分区方案:使用 MBR 或 GPT;若采用 LVM,建议将分区类型设为 Linux LVM(8E)。
- 常用工具:fdisk/parted(分区)、LVM(pvcreate/vgcreate/lvcreate)、文件系统工具(mkfs.ext4/mkfs.xfs)、挂载与自动挂载(mount /etc/fstab)。
- 注意:操作前做好数据备份,避免误删分区或覆盖数据。
二 方案一 使用 LVM 创建与管理分卷(推荐)
- 分区与内核识别
- 分区:使用 fdisk /dev/sdb(MBR)或 parted(GPT);如用 fdisk,创建分区后将类型设为 8E。
- 识别:执行 partprobe /dev/sdb 或 partx -a /dev/sdb,使内核立即读取新分区表。
- 初始化 LVM 对象
- 创建物理卷:pvcreate /dev/sdb1(若整盘使用可直接 pvcreate /dev/sdb)。
- 创建卷组:vgcreate vg_data /dev/sdb1。
- 创建逻辑卷:lvcreate -L 20G -n lv_data vg_data(或 -l +100%Free 使用全部空闲空间)。
- 格式化与挂载
- 格式化:
- mkfs.ext4 /dev/vg_data/lv_data 或 mkfs.xfs /dev/vg_data/lv_data。
- 挂载:
- 创建目录:mkdir -p /data
- 挂载:mount /dev/vg_data/lv_data /data
- 开机自动挂载(/etc/fstab):
- ext4:/dev/mapper/vg_data-lv_data /data ext4 defaults 0 0
- xfs:/dev/mapper/vg_data-lv_data /data xfs defaults 0 0
- 验证:df -hT、lsblk、pvs/vgs/lvs。
三 在线扩容与缩容要点
- 场景 A:向卷组添加新磁盘后再扩 LV
- 新增虚拟磁盘 → 分区并识别(如 /dev/sdc1)。
- 扩展卷组:vgextend vg_data /dev/sdc1。
- 扩展逻辑卷:lvextend -l +100%Free /dev/vg_data/lv_data。
- 扩展文件系统:
- ext4:resize2fs /dev/vg_data/lv_data
- xfs:xfs_growfs /data
- 场景 B:仅增大已有虚拟磁盘的容量(整盘为 PV 的场景)
- 在虚拟化平台将虚拟磁盘容量调大 → 重启或重新扫描(如 echo 1 > /sys/class/scsi_device/…/rescan)。
- 扩展分区(如将 sdb1 扩至新容量,工具可用 parted resizepart)。
- 通知内核:partprobe /dev/sdb 或 partx -u /dev/sdb。
- 扩展 PV:pvresize /dev/sdb1。
- 扩展 LV 与文件系统(同上)。
- 缩容提示(高风险,务必先备份并卸载)
- 先缩减文件系统到目标大小(ext4 可离线缩减,xfs 不支持在线缩减),再 lvreduce,最后检查。
- 验证:df -h、lvs、vgs。
四 常见问题与排查
- 新盘不识别:确认已执行 partprobe/partx,或重启;检查虚拟机设置中磁盘已连接。
- 扩展后容量未生效:确认执行了对应文件系统的扩容命令(resize2fs/xfs_growfs)。
- LVM 命令不存在:在 CentOS/RHEL 上安装 lvm2(如 yum install -y lvm2)。
- 分区类型错误:使用 LVM 时确保分区类型为 8E(fdisk 中 t → 8E)。
- 多盘与扩展分区:创建 PV 时尽量使用独立主分区,避免包含 扩展分区 本身。
五 不使用 LVM 的简化做法
- 单盘单分区:
- 分区:fdisk /dev/sdb → n → w;识别:partprobe /dev/sdb。
- 格式化:mkfs.ext4 /dev/sdb1。
- 挂载:mkdir -p /data && mount /dev/sdb1 /data;/etc/fstab 添加:/dev/sdb1 /data ext4 defaults 0 0。
- 多盘合并挂载到同一目录(不建议生产):可用 mdadm 创建 RAID0/RAID1 后再格式化与挂载,或采用上层应用做条带/副本。