提醒
本教程是自己在折腾过程中的一些个人经验总结,仅供参考。不足之处也请批评指正。在参考时请结合自己机器的实际情况予以调整,如因操作不当造成的数据丢失,恕不负责,请谅解。
引子
我之前购入的四盘位U-NAS hs401p自带的eMMC为16G,安装完一些应用后,剩余的空间在1G以下,经常担心存储空间被爆无法进入web界面。所以开始考虑能不能把eMMC系统迁移复制到其他媒介,一劳永逸地解决空间不足的问题。这个思路来自于之前折腾arm盒子学到的经验,很多arm盒子的原系统都是写在了自带的eMMC硬盘,而原系统的备份,包括写入系统,基本要借助dd命令。
可能有人会问,为什么还继续用U-NAS系统。我实在不想再折腾了,数据基本定型了,懒得再大费周章地换来换去。
工具
用到的工具:
- 存储媒介 (无需提前格式化,但如果有重要资料请提前备份好)
- 如果主板有m.2硬盘位,可以考虑把系统迁移到一块nvme硬盘上,哪怕是一块几十块钱的128G的固态硬盘都够用了。
- 如果不想浪m.2硬盘位,还想让m.2硬盘作为系统缓存或者存储空间,也可以考虑把系统转移到U盘。或者还有一个思路,主板内部还有2个9pin的USB转接口,利用其中1个转接口来转接一个msata硬盘,长时间使用总感觉msata硬盘更可靠(只是个人想法)。虽然是usb2.0接口,但日常使用应该对读写速度要求不会太高。
- HDMI线 主要用来连接U-NAS和显示设备,用来调整BIOS设置。
- 键盘 承接前一个工具,主要用来调整BIOS设置。
- 软件 SSH工具,比如:puTTY、finalshell、MobaXterm等都可以。
步骤(以刷至m.2固态硬盘为例 )
为了确保万无一失,在进行以下操作时,还是把数据硬盘从硬盘笼取出来。
复制系统
- 确保系统迁移的目标存储媒介已经插在U-NAS上,并正常开机从默认的eMMC启动系统。ps.如果准备写入U盘,在U-NAS开机状态时插入也是OK的。
- 查看硬盘名称
用SSH工具连接U-NAS,可以先用lsblk命令查看当前的硬盘设备及对应的名称
lsblk
现在能看到的就两块:一块自带的eMMC,对应名称是
mmcblk0
;另一块就是迁移的目标固态硬盘:nvme0n1
,而且可以看到我这块固态硬盘下面有7个分区:从nvme0n1p1
到nvme0n1p7
。
- 删除目标存储媒介的分区
- 输入以下命令,会进入fdisk工具的操作界面
fdisk /dev/nvme0n1
- 输入
p
会显示当前硬盘的具体信息 - 下一步输入
d
(即delete删除的意思),会提示准备删除分区的代号(直接按回车则代表输入的是最大数字的代号),因为我准备把整块固态都作为系统盘,所以在这里把分区全部删除。 - 于是依次从7删到1:重复输入
d
,再接着按回车的动作…… - 全部删除后,输入
w
,这代表准备写入和保存新的分区,也代表将格式化这块固态硬盘。按回车执行。
- 通过dd命令将eMMC中系统复制到固态硬盘
dd if=/dev/mmcblk0 of=/dev/nvme0n1 bs=4M
注意:if
后面跟的是eMMC硬盘的设备名称,of
后面跟的是目标固态硬盘的设备名称,不要搞反了。
复制的过程会持续一段时间,完成后会有提示
- 再用
lsblk
命令查看硬盘信息
可以看到固态硬盘里现在是分区,两个分区的大小和上面eMMC分区是一模一样的。
但nvme0n1p2
(也就是根分区)的大小还是14G,这一部分也是用来安装软件用的空间,目前还差为这块分区的空间进行扩容。
扩容固态硬盘的根分区空间
- 把固态硬盘剩余空间分配给
nvme0n1p2
(根分区),依然通过fdisk
工具
fdisk /dev/nvme0n1
- 输入
p
,查看固态硬盘的具体分区信息,nvme0n1p2
是准备进行扩容的分区
-
输入
d
删除nvme0n1p2
-
输入
n
创建新分区,再输入2
,确定新分区大小,直接回车的话即即分配剩余所有空间
-
输入
n
(即NO)保留原分区的信息
输入
w
写入写入完成后,再次用
fdisk
查看完成后的硬盘信息
fdisk /dev/nvmeon1
输入p
查看信息,已经不是最开始迁移完成后的14G了
屏蔽eMMC 从固态硬盘启动系统
- 这个时候可以关机,准备重新启动U-NAS
重启前给U-NAS连好显示器和键盘,准备调整BIOS,按开机电源后,狂按键盘的del键,进入BIOS界面。 - 来到
Chipset
这一项,选择最后一项
- 选择
SCC
开头的这一项,禁用eMMC
,按F4保存退出
最后一步,为根分区扩容
- 前面的操作目前还差最后一步,用btrfs命令扩容
btrfs filesystem resize max /
resize
后也可以把max换成具体的数字比如: +100G
- 完成后可以重启U-NAS系统,在web管理界面验证一下是否扩容成功。
如果出现系统日志报错
btrfsck --repair /dev/nvme0n1p2
最后
在前面用dd
命令复制迁移之前,也可以用dd
命令把eMMC
中的系统打包出来,留做备份。