收起左侧

我也来分享一下飞牛OS更换数据盘,无损数据迁移以及扩容全过程

12
回复
1537
查看
[ 复制链接 ]

4

主题

1

回帖

0

牛值

江湖小虾

2025-4-28 21:22:49 显示全部楼层 阅读模式

前几天,朋友的飞牛nas要更换一块数据盘,想达到不迁移数据,无损扩容的目的,我给更换完了之后发现一些朋友依然在问更换过程,论坛上的攻略很多,我把我的也发出来,给大家多一个参考选择。

先说背景:

朋友的机器只装了两块硬盘:
一个nvme的1tb固态,用来装飞牛系统,系统盘容量200g,剩下的容量格式化成了存储空间1;
一块4tb的西部数据机械盘,为存储空间2,用来存数据。
朋友现在想把4tb的盘换掉,换成一块14tb的机械盘,需要数据无损迁移。
我知道大家怎么想,放心,肯定不能在飞牛的文件管理里面操作,因为那块4t机械盘里不仅仅有朋友的个人数据,还有飞牛的各种应用数据和docker容器数据,所以要无损迁移,必须全盘拷贝。
先登录网页端,在存储空间管理里面看到有系统分区和两个存储空间,名为存储空间1和存储空间2,都是basic模式,btrfs文件系统。其中,系统分区和存储空间1都在nvme固态硬盘上,存储空间2是一块4tb的机械硬盘,容量为3.7t。
我们现在要换这块机械盘,换成14t的新盘,接下来正式开始:
先把新硬盘连接到飞牛,内置或者外接硬盘盒都行。
这时候不要挂载硬盘,也就是不要在飞牛网页端操作我们新连接的硬盘。
然后以root用户登录飞牛ssh,这一步不会的话就不要继续了,因为这个文章可能不太适合你,数据一旦弄丢不是闹着玩的。

先输入命令查看硬盘列表:

fdisk -u -l
回车之后我这里输出的信息如下:

root@mhfnnas:~# fdisk -u -l
Disk /dev/nvme0n1: 953.87 GiB, 1024209543168 bytes, 2000409264 sectors
Disk model: KINGSTON SKC3000S1024G
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: CCBEC5AD-7B9D-4942-A5BA-9EED282693D2
Device             Start        End    Sectors   Size Type
/dev/nvme0n1p1      2048     194559     192512    94M EFI System
/dev/nvme0n1p2    194560  419430399  419235840 199.9G Linux filesystem
/dev/nvme0n1p3 419430400 2000408575 1580978176 753.9G Linux filesystemDisk /dev/md0: 753.74 GiB, 809325559808 bytes, 1580713984 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/trim_04fc21a4_0a47_4747_9109_a9fc75cd0a15-0: 753.74 GiB, 809324511232 bytes, 1580711936 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/sda: 3.7 TiB, 4093648084992 bytes, 7995406416 sectors
Disk model: WDC WD40EZAZ-00SF3B0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 1A3B5C7D-89EF-4A1B-B2C3-D4E5F6A7B8C9Device     Start        End    Sectors  Size Type
/dev/sda1   2048 7995406351 7995404304  3.7T Linux RAIDDisk /dev/md1: 3.7 TiB, 4093632824320 bytes, 7995376600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytesDisk /dev/mapper/trim_8b197470_0435_419c_94f5_a8b4b1eb8adc-0: 3.7 TiB, 4093632802816 bytes, 7995376568 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytesDisk /dev/sdb: 12.73 TiB, 14000519643136 bytes, 27344764928 sectors
Disk model: WUH721414ALN6L0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 66C7A3B9-87CF-48A7-B8F6-B28CDA399354
root@mhfnnas:~#

输出的信息很多,不用眼花缭乱,我整理一下:
首先,/dev/nvme0n1是系统盘,容量为953g;
/dev/sda是数据盘,容量为3.7tb。
系统盘我们不操作,所以关于系统盘的资料,包括后面的md0和逻辑卷那串很长的十六进制名字我们可以忽略。
主要看/dev/sda,容量为3.7tb这块硬盘。
首先,有个/dev/sda1分区,这个分区是受到lvm管理的,什么是lvm你可以先不用理会。
但要记住两个东西,后面有个Linux RAID阵列,名为/dev/md1,最后,逻辑卷名字为/dev/mapper/trim_8b197470_0435_419c_94f5_a8b4b1eb8adc-0。
这俩记住,后面有用,当然,千万不要照抄,每个人的分区情况不一样,我之所以写这么多,就是这个道理,先找个记事本之类的把上面查到的两个属于你的值记录下来。
然后,后面有个/dev/sdb硬盘,这个硬盘就是新连接的硬盘,这个例子里的容量为12.73tb,记住这个磁盘路径。
接下来该dd了,为了防止终端意外断开,我们先要在dd之前用screen命令建立一个新会话,以让dd命令在会话里运行,这样断开也不怕了。
先输入命令安装screen
apt-get update && apt-get install -y screen
回车等一会儿就装完了。装完之后直接输入命令建立一个会话,名称随意,我这里用xk:
screen -S xk
回车之后进入了新会话。
好了,现在可以进行dd了,把/dev/sda全盘拷贝到/dev/sdb上去,命令如下:
dd if=/dev/sda of=/dev/sdb bs=4k status=progress conv=sync,noerror
回车之后就是漫长的等待,可以关闭终端窗口,如果想看进度的话可以重新登录终端,输入以下命令回车,恢复上面例子中的xk会话查看:
screen -r xk
经过了漫长的六个小时,数据终于拷贝完毕。
接下来关闭飞牛,拔掉旧硬盘,把新硬盘装上去,开机。
我们惊奇的发现已经识别了新的硬盘为存储空间2,但是容量依然是3.7tb,这是因为dd命令是扇区拷贝,所以分区表什么的都拷贝过来了,当然还是原来的大小。

下面扩容开始:

1、扩容分区
注意,因为已经更换了硬盘,所以上面例子中,原来新硬盘的路径/dev/sdb就变成了原来旧硬盘的路径/dev/sda,千万别搞错了。
接着,开始小心的输入命令:
fdisk /dev/sda
回车之后打开fdisk的命令行,这里严格按照我下面的顺序输入
先输入d回车,删除原来的sda1分区;
接着输入n回车建立新分区,一切都用默认,一路回车,其中会有个yes还是no的提示,是问你是否删除老分区签名的,输入n回车即可;
然后输入t回车指定分区类型,输入42回车以修改为Linux RAID;
最后按w回车保存上面的修改。
好了,分区就扩容成功了,可以再用fdisk -u -l确认一下,看到sda1成功扩容到12.7t了。

2、扩容 Linux RAID 阵列,也就是我上面例子里的/dev/md1
输入命令:
mdadm --grow /dev/md1 -z max
回车之后接着输入:
pvresize -v /dev/md1
回车之后不出意外的话,已经成功扩容linux raid阵列。

3、扩容lvm逻辑卷
就是上面例子里那个/dev/mapper/trim_8b197470_0435_419c_94f5_a8b4b1eb8adc-0。
输入命令:
lvextend -l +100%FREE /dev/mapper/trim_8b197470_0435_419c_94f5_a8b4b1eb8adc-0
回车,成功。

4、刷新lvm逻辑卷所在文件系统的容量,上例为存储空间2
输入命令:
btrfs filesystem resize max /vol2
回车之后,整个扩容大功告成。
好了,现在去网页端查看,存储空间2已经由原来的3.7TB扩容成了12.73TB,并且数据都在。
说两个注意事项:第一,一定一定要把我上面所有命令里的路径都替换成你自己的,否则后果不堪设想;第二,命令的输入大小写敏感,注意不要搞错了。
好了,尽情享受你的大空间吧。
最后,感谢论坛其他大佬的扩容攻略贴,让我学习了不少。

收藏
送赞 6
分享

4

主题

142

回帖

0

牛值

初出茅庐

2025-4-29 07:07:14 显示全部楼层

支持一个。小白还是适合文件管理,或者dg操作。

3

主题

27

回帖

0

牛值

江湖小虾

2025-4-29 09:21:36 显示全部楼层

支持下,非常详细的教程

2

主题

9

回帖

0

牛值

江湖小虾

2025-4-30 09:45:52 显示全部楼层

用类似Ghost或者DiskGunesi等软件直接全盘克隆的方式可行么?

Win的哪些工具对Linux不友好,会丢数据  详情 回复
2025-4-30 22:36

7

主题

43

回帖

0

牛值

初出茅庐

2025-4-30 11:55:34 显示全部楼层
早看见就好了,留个记号,以后换硬盘的时候再来看

0

主题

9

回帖

0

牛值

江湖小虾

2025-4-30 15:45:48 显示全部楼层

说不定哪天就用到了

0

主题

2

回帖

0

牛值

江湖小虾

2025-4-30 22:36:16 显示全部楼层
magicjacky 发表于 2025-4-30 09:45
用类似Ghost或者DiskGunesi等软件直接全盘克隆的方式可行么?

Win的哪些工具对Linux不友好,会丢数据

1

主题

3

回帖

0

牛值

江湖小虾

2025-5-1 09:39:38 显示全部楼层

正准备更换大容量硬盘。感谢分享。

只是使用小主机的硬盘可以更换3.5寸大硬盘,那个在虚拟机里的硬盘想无损保存文件,就不甚明了。继续学习中,感谢分享。

思路整理好后就开始着手更换硬盘。lol

0

主题

7

回帖

0

牛值

江湖小虾

马克 飞牛替换新硬盘

4

主题

17

回帖

0

牛值

fnOS系统内测组

收藏一下

4

主题

42

回帖

0

牛值

初出茅庐

飞牛没有一键转移功能吗 lol

0

主题

1

回帖

0

牛值

江湖小虾

系统盘迁移扩展就好

4

主题

1

回帖

0

牛值

江湖小虾

昨天 01:43 楼主 显示全部楼层

楼上提到ghost,这个工具几乎贯穿了我整个青春。

但是现在不要用了,尤其是linux文件系统,支持的不好。

diskgenius其实也不太保险,因为如果是单纯的linux文件系统还好,关键是lvm存储池不含糊,弄不好是真丢数据啊。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则