在 ESXi 中扩容基于 Debian + mdadm + LVM + Btrfs 的 飞牛 NAS 数据盘

飞牛NAS 系统基于 Debian,部署在 ESXi 虚拟机中,数据盘的存储架构为:

由于数据增长,需要将 500G 数据盘扩展至 800G。在 ESXi 中已完成虚拟磁盘扩容,但 NAS 内部并未自动识别剩余空间,需手动处理。

目标是不重启虚拟机、不破坏数据结构,完成全栈扩容。

1. 初始状态检查

首先确认当前磁盘结构及挂载情况:

lsblk
df -hT
mount

输出如下(节选):

sda       32G 系统盘
sdb      800G 数据盘(但 sdb1 仍为 500G)
├─sdb1   500G
│ └─md126   499.9G
│   └─lvm -> Btrfs -> /vol1 (挂载点)

Filesystem                          Type   Size  Used Avail Use% Mounted on
/dev/mapper/trim_...-0              btrfs  500G  369G  131G  74% /vol1

2. 修复 GPT 分区表并扩展分区

进入 parted,提示发现 GPT 表未使用完整磁盘空间:

parted /dev/sdb
(parted) print
Warning: Not all of the space available to /dev/sdb appears to be used...
Fix/Ignore? fix

执行修复并调整分区大小:

(parted) resizepart 1 100%
(parted) quit

同步内核分区表:

partprobe

3. 扩展 mdadm 阵列大小

mdadm --grow /dev/md126 --size=max

成功输出:

mdadm: component size of /dev/md126 has been set to 838727663K

确认:

cat /proc/mdstat

结果:

md126 : active raid1 sdb1[0]
      838727663 blocks super 1.2 [1/1] [U]

4. 扩展 LVM 物理卷与逻辑卷

调整 PV:

pvresize /dev/md126

输出:

1 physical volume(s) resized or updated

扩展逻辑卷:

lvextend -l +100%FREE /dev/mapper/trim_71e1bc4c_64dc_4947_81e8_c9f9f3c6627b-0

结果:

Size of logical volume ... changed from 499.87 GiB to 799.87 GiB

5. 扩展 Btrfs 文件系统

执行:

btrfs filesystem resize max /vol1

输出:

Resize device id 1 (...) from 499.87GiB to max

6. 最终验证

df -hT
lsblk

结果确认:

/dev/mapper/... btrfs 800G  369G  431G  47% /vol1
sdb
└─sdb1        800G
  └─md126     799.9G
    └─lvm     799.9G -> /vol1

结语

整个过程未重启系统,无中断数据服务,实现了 mdadm + LVM + Btrfs 的完整链路扩容。
建议操作前对虚拟机做快照,并确认每一步完成再继续下一步。

Table of Contents