说明:本文档为本人本次扩容操作的复盘记录,仅适用于本人当前的硬件环境(单盘飞牛 OS、系统盘为 SATA SSD、单盘 RAID1 结构),不保证通用。
一、材料准备
表格
| 序号 | 物品 | 用途说明 |
|---|---|---|
| 1 | 飞牛 OS NAS 主机 | 完好运行的设备,原配置:120G SSD 系统盘 + 1T HDD 数据盘 |
| 2 | 960G SATA SSD 新系统盘 | 本次扩容目标盘 |
| 3 | USB 硬盘盒 | 用于在 Live 环境下连接新系统盘 |
| 4 | U 盘(≥4G) | 制作 Ubuntu Live 启动镜像 |
| 5 | Ventoy 工具 | 制作多系统启动 U 盘,本次使用 Ubuntu 22.04 LTS 镜像 |
二、前期准备:制作 Ubuntu Live 启动 U 盘
- 用 Ventoy 工具格式化 U 盘,制作启动引导盘。
- 下载 Ubuntu 22.04 LTS 桌面版 ISO 镜像,放入 Ventoy 分区。
- 将 U 盘插入 NAS 主机,开机从 U 盘启动,在 Ventoy 菜单中选择 Ubuntu 镜像,进入
Try Ubuntu(试用模式)。
三、Live 环境下的整盘克隆与分区扩容(关键避坑步骤)
1. 查看磁盘信息,确认盘符
在 Ubuntu 终端执行命令,确认所有磁盘的盘符,避免克隆时写错源 / 目标盘:
bash
运行
lsblk
本次操作中,各盘符对应如下:
/dev/sda:原 1T 机械数据盘/dev/sdb:原 120G SSD 系统盘(源盘)/dev/sdc:Ubuntu Live 启动 U 盘/dev/sdd:960G 新系统盘(目标盘,通过硬盘盒连接)
2. 使用dd命令整盘克隆
⚠️ 核心注意点:dd命令写错盘符会直接清空目标盘数据,务必确认盘符无误!
bash
运行
# 格式:dd if=源盘 of=目标盘 bs=4M status=progress conv=noerror,sync
dd if=/dev/sdb of=/dev/sdd bs=4M status=progress conv=noerror,sync
if:指定源盘(原 120G 系统盘/dev/sdb)of:指定目标盘(960G 新系统盘/dev/sdd)bs=4M:设置读写块大小,提升克隆速度status=progress:实时显示克隆进度conv=noerror,sync:遇到错误时继续克隆,避免中途中断
3. 克隆后关键操作:扩展系统盘第三分区(避坑点!)
克隆完成后,新盘的分区表仍停留在原 120G 盘的大小,第三分区(/dev/sdd3,对应飞牛 OS 的存储空间 2)后面存在大量未分配空间。如果直接重启,会导致系统无法识别新盘的全部空间,甚至启动失败。
必须先在 Live 环境下扩展/dev/sdd3分区,覆盖所有未分配空间:
查看分区结构,确认
/dev/sdd3的分区号和类型:
bash
运行
parted /dev/sdd print使用
parted扩展分区(或用 GParted 图形工具操作):
bash
运行
# 进入分区工具 parted /dev/sdd # 选择第三分区(根据print输出确认分区号) resizepart 3 100% # 退出并保存 quit扩展完成后,
lsblk中
/dev/sdd3的大小应显示为接近 960G(扣除前两个小分区的占用)。
parted修改后如图
4. 关闭 Live 环境,替换新盘
完成以上操作后,直接关机,拔出 U 盘和硬盘盒中的新盘,将新系统盘安装到 NAS 主机的 SATA 接口上,替换原 120G 系统盘。
四、第一次重启:成功进入系统,但存储空间 2 被锁死在 55G
现象
新盘替换后,系统正常启动,能识别到系统盘,但飞牛 OS 后台中,原系统盘对应的存储空间2总容量仅显示 55.2G,与旧盘大小一致,无法使用新盘的 800 多 G 空间。
原因分析
飞牛 OS 系统盘默认对数据分区(sda3)创建了单盘 RAID1(/dev/md0),再基于 RAID 设备创建 LVM 逻辑卷,最后格式化为 Btrfs 文件系统。克隆后,RAID 设备、LVM 逻辑卷、Btrfs 文件系统三层的大小都停留在旧盘的 55G,导致容量无法识别。
五、三层扩容:解决存储空间 2 容量锁定问题
1. 远程 SSH 登录 NAS 主机
使用 SSH 工具连接飞牛 OS,以root用户登录。
2. 关键步骤 1:扩展 RAID1 设备/dev/md0
单盘 RAID 设备需要先扩展自身大小,才能让后续 LVM 识别到全部空间:
bash
运行
# 查看RAID设备状态,确认md0的成员盘为sda3
cat /proc/mdstat
# 扩展md0到成员盘的最大可用空间
sudo mdadm --grow /dev/md0 --size=max
执行成功的标志:终端输出component size of /dev/md0 has been set to xxxxxK。
cat /proc/mdstat 结果如图
3. 关键步骤 2:扩展 LVM 物理卷(PV)
让 LVM 识别扩容后的 RAID 设备/dev/md0:
bash
运行
# 扩展物理卷
sudo pvresize /dev/md0
执行成功的标志:终端输出Physical volume "/dev/md0" changed。
4. 关键步骤 3:扩展 LVM 逻辑卷(LV)
将物理卷的全部空闲空间分配给数据卷对应的逻辑卷:
bash
运行
# 先查看逻辑卷名称(根据lsblk输出确认)
lsblk /dev/md0
# 扩展逻辑卷(替换为你的实际逻辑卷名称)
sudo lvextend -l +100%FREE /dev/mapper/trim_0d0d3931_0e0d_4a85_a2e0_0af20f3b8ed5-0
执行成功的标志:终端输出Logical volume ... successfully resized,并显示容量从 55G 扩展到 830G 左右。
5. 关键步骤 4:扩展 Btrfs 文件系统
让文件系统识别逻辑卷的新容量:
bash
运行
# 扩展/vol2挂载点的文件系统到最大
sudo btrfs filesystem resize max /vol2
六、扩容验证
执行以下命令确认扩容结果:
bash
运行
# 查看/vol2的实际容量
df -h /vol2
# 查看RAID设备大小
lsblk /dev/md0
正常情况下,df -h /vol2会显示总容量约 800G(扣除系统占用),飞牛 OS 手机 APP / 网页后台的存储空间2容量会同步更新。
这几步扩容操作和最终验证如图
七、本次操作踩坑总结 & 避坑指南
表格
| 序号 | 踩坑点 | 错误做法 | 正确处理方式 |
|---|---|---|---|
| 1 | 克隆后直接替换新盘启动 | 整盘克隆后未扩展分区,直接重启 NAS | 必须在 Live 环境下,先扩展系统盘第三分区,覆盖所有未分配空间,再替换启动 |
| 2 | 误删 RAID 元数据 | 为解决启动问题,手动删除了 RAID 元数据,导致数据卷无法识别 | 单盘 RAID 是飞牛 OS 默认结构,不要随意删除元数据,应通过mdadm --grow扩展 RAID 设备 |
| 3 | 跳过 RAID 层直接操作 LVM | 直接对/dev/sda3执行pvresize,提示device is an md component |
必须按顺序:先扩 RAID(md0)→ 再扩 LVM PV → 再扩 LV → 最后扩 Btrfs |
| 4 | 误以为 LVM 已经是最大容量 | 直接执行lvextend提示New size matches existing size |
先执行mdadm --grow和pvresize,让 LVM 识别到 RAID 设备的全部空间,再执行lvextend |
八、后续优化建议(可选)
单盘环境下的 RAID1 无冗余意义,仅会增加扩容复杂度。若后续不想再被 RAID 折腾,可在备份数据后移除单盘 RAID1 结构,让 LVM 直接运行在分区上,简化后续扩容流程。