在 ESXi 中扩容基于 Debian + mdadm + LVM + Btrfs 的 飞牛 NAS 数据盘
飞牛NAS 系统基于 Debian,部署在 ESXi 虚拟机中,数据盘的存储架构为:
-
单块虚拟磁盘
/dev/sdb1
(500G 起始); -
创建 mdadm RAID1;
-
上层使用 LVM;
-
文件系统为 Btrfs,挂载点为
/vol1
由于数据增长,需要将 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 的完整链路扩容。
建议操作前对虚拟机做快照,并确认每一步完成再继续下一步。