文章
2026/10/30
群晖dsm6升级7系统分区md0空间不足 不扩容升系统到dsm7.4 在爆炸时拯救设置数据
2026-10-30

因为我的硬盘是一直带着数据升级和迁移的,从arm的猫盘到现在的n100,从dsm6升级dsm7系统分区只有2.4G,这很容易就会导致升级系统的时候空间不够,安装系统在56%报错 文件可能已损毁,甚至像我这样直接升炸了(当然我修好了),建议看完整篇文章再开始操作

准备#

首先你需要开ssh,用登录web的账户直接登录,然后切换到root,这里输入的还是你web的登录密码,一行行运行

Terminal window
sudo -i
cd /

或者你已经炸了,在安装向导,这时可以直接telnet,用户名root没有密码,并且需要手动挂载系统分区,你可以先看一下系统有没有帮你自动挂好

Terminal window
df -h

如果你看到里面有个 tmpData ,说明已经挂载好了,如果没有,你需要手动挂载

Terminal window
mkdir /tmpData
mount /dev/md0 /tmpData
cd /tmpData

最简单的,删日志#

群晖好像悄咪咪的打包日志不知道要传到哪里去,这很大,而且还是隐藏文件夹,我的615M,可惜我炸了才发现

Terminal window
rm -rf .log.junior

还有系统日志,没那个大,但也可以删一下

Terminal window
rm -rf var/log
rm -rf var/logbak

进阶,手动释放安装程序#

这个操作需要在安装向导下进行,如果是黑群晖,在启动菜单中选择 reinstall 那个就可以直接进入
进入之后按上方 准备 的内容把分区挂载好
群晖的系统更新不是直接安装的,而是先下载到 @autoupdate 文件夹, 然后再释放到 upd@te 文件夹,然重启的时候自动安装
为什么我知道呢,看到下一条的时候你就会知道了

首先先下载更新包,打开群晖的官网找到你的nas型号,复制下载的url,比如SA6400,在Download按钮上右键复制链接

Terminal window
cd /tmp
curl -O https://global.synologydownload.com/download/DSM/release/7.4.1/90080/DSM_SA6400_90080.pat?model=SA6400&bays=12&dsm_version=7.4.1&build_number=90080
synoupgrade --patch DSM_SA6400_90080.pat /tmpData
reboot

看一下如果没有什么明显的错误,reboot 重启后就会直接更新到新系统

硬核,重装系统并保留数据#

因为我以为他是直接安装的,我把 /usr/bin 和 /usr/lib 都删了,发现重启后安装失败了,变成了 设置数据损毁 ,但是实际上这时候系统盘就只剩数据没有系统文件了
那这或许是件好事,这样就能获取到干净的备份了
还是一样,需要在安装向导下进行,按准备挂载好

Terminal window
rm -rf usr/bin
rm -rf usr/lib
cd ..
umount -fl tmpData

这时候去web上直接更新,空间肯定是够的,也肯定会成功重启,重启完也肯定会失败的(设置数据损毁),这时候登录telnet,你会发现 tmpData已经挂载好了,那开始备份

Terminal window
cd /tmpData
tar -zcvf /tmp/backup.tgz .
cd ..
umount -fl tmpData

这个时候已经备份好了数据,但是是备份在内存上的,为了安全着想,需要备份一下

启动一个咩FileServer,直接上传到电脑上,记得换成你电脑的ip

Terminal window
curl -T /tmp/backup.tgz http://192.168.1.123:10000/dav/backup.tgz

如果你不慎失误,这样从电脑把文件下回来

Terminal window
curl -O http://192.168.1.123:10000/dav/backup.tgz -o /tmp/backup.tgz

或者你可以找个u盘插上,挂载一下u盘(fdisk -l 看一下u盘的设备名,比如sda1),然后把备份拷贝到u盘上

Terminal window
mkdir /sparkle
mount /dev/sda1 /sparkle
cp /tmp/backup.tgz /sparkle
sync
umount -fl /sparkle

备份好了就可以开始重装了,到web页面上跟着步骤重装,进度条20%的时候运行这个命令(因为他会格式化系统分区,所以运行早了没用)

Terminal window
cd /tmpData
tar -xzvf /tmp/backup.tgz

如果你在cd的时候报错,那说明还没格式化好,但必须在55%之情进行还原操作,因为后面会自动重启,这个操作数据不会丢失,设置也不会丢失,但是如果你在系统里装了比如opkg,这得重新装

这里有些注意事项,如果你备份的包太大了,想删掉一些文件不还原,这时候可以在tmp里建一个文件夹解压一下
但是需要注意的是,复制到系统分区的时候必须使用 cp -a,否则会导致文件权限丢失,导致系统出现很多奇怪的问题,如果你已经 cp -r 那你得再重装一次了(就是在安装向导选择第二个,保留文件,删除设置)

Terminal window
mkdir /tmp/restore
cd /tmp/restore
tar -xzvf /tmp/backup.tgz
# 在这里去删掉一些文件,然后把剩下的复制过去
cp -a /tmp/restore/* /tmpData

如果咩咩的文章对您有帮助,您可以 请我喝牛奶