Linux 挂载群辉硬盘
版权声明:署名-非商业性使用-相同方式共享
@@ Tags: Synology;Btrfs
@@ Date: 2026-01-18
@@ Note:
Linux 系统中挂载 Synology Btrfs 文件系统
zero@ubuntu-2404-x64:/mnt$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 38G 0 part
└─ubuntu--vg-ubuntu--lv 252:0 0 19G 0 lvm /
sdb 8:16 0 465.8G 0 disk # 这是我的群辉磁盘
├─sdb1 8:17 0 8G 0 part
│ └─md125 9:125 0 0B 0 md
├─sdb2 8:18 0 2G 0 part
│ └─md126 9:126 0 0B 0 md
└─sdb3 8:19 0 455.5G 0 part
└─md127 9:127 0 455.5G 0 raid1
├─vg3-syno_vg_reserved_area 252:1 0 12M 0 lvm
└─vg3-volume_3 252:2 0 455G 0 lvm
zero@ubuntu-2404-x64:~$ cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md127 : active raid1 sdb3[0]
477662208 blocks super 1.2 [1/1] [U]
md125 : inactive sdb1[29](S)
8387584 blocks super 1.2
md126 : inactive sdb2[29](S)
2096128 blocks super 1.2
unused devices: <none>
zero@ubuntu-2404-x64:~$ sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
ubuntu-lv ubuntu-vg -wi-ao---- <19.00g
zero@ubuntu-2404-x64:~$ sudo mdadm --detail /dev/md127
/dev/md127:
Version : 1.2
Creation Time : Tue Jul 2 22:41:46 2024
Raid Level : raid1
Array Size : 477662208 (455.53 GiB 489.13 GB)
Used Dev Size : 477662208 (455.53 GiB 489.13 GB)
Raid Devices : 1
Total Devices : 1
Persistence : Superblock is persistent
Update Time : Thu Jan 8 23:56:44 2026
State : clean, FAILED
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Number Major Minor RaidDevice State
0 8 19 0 active sync missing
在高版本的内核中直接挂载群晖 Btrfs 卷很可能会失败:
$ sudo mount -t btrfs -o ro /dev/vg3/volume_3 /mnt/syno-btrfs
mount: /mnt/syno-btrfs: can't read superblock on /dev/mapper/vg3-volume_3.
dmesg(1) may have more information after failed mount system call.
原因是:
Synology在BTRFS文件系统中使用了自定义的标志位(flags)
从Linux 5.4-rc1开始,内核添加了严格的BTRFS根标志检查(commit 259ee7754b67),拒绝挂载含有不支持标志的文件系统。
这个检查被反向移植到Ubuntu LTS版本(包括4.15内核),导致官方Synology恢复指南失效。
解决方案:
使用特定内核版本
- Ubuntu Bionic(18.04) + 内核 4.15.0-108
- Ubuntu Xenial(16.04) + 内核 4.15.0-107
操作步骤
下载安装 Ubuntu Bionic(18.04)版本, 开始安装服务器版本, 但安装过程总是出现错误, 转而安装了 desktop 版本.
sudo apt install linux-image-4.15.0-108-genericsudo reboot- 重启时,在Grub引导界面(可能需要按 Shift 或 Esc 键唤出)选择 “Advanced options for Ubuntu”,然后找到并启动你刚安装的 4.15 内核
- 确定物理连接情况:
sudo lsblk -f sudo apt install -y btrfs-progs mdadm lvm2sudo mdadm --assemble --scan- 这一步如果失败, 可能需要先停止现有的md设备
- 检查md设备
cat /proc/mdstat - 再次执行:
sudo mdadm --assemble --scan --detail
- 检查md设备
- 到了这一步, 在桌面版系统上, 可以通过文件浏览器自动挂载到
/media/<user>/目录下
- 这一步如果失败, 可能需要先停止现有的md设备
sudo vgscan --mknodessudo vgchange -aysudo lvssudo mount -o ro,rescue=all /dev/你的磁盘分区 /mnt/recovery- 或者用
-o ro,rescue=usebackuproot选项
- 或者用
安全的移除设备
- 首先卸载文件系统
sudo umount /dev/你的磁盘分区sudo umount /dev/sdb*
- 停止LVM逻辑卷, 如果使用LVM逻辑卷
sudo vgchange -an vg1
- 停止md设备, 如果使用mdadm
sudo mdadm --stop /dev/md*
- 确保没有进程占用设备
sudo lsof | grep /dev/sdbsudo fuser -mv /dev/sdb*
- 刷新并移除设备
sudo syncsudo blockdev --flushbufs /dev/sdb
或者(推荐)
# 查看设备信息
udisksctl status
# 卸载并弹出(会自动执行所有必要步骤)
udisksctl unmount -b /dev/sdb*
udisksctl power-off -b /dev/sdb
原因分析
群辉断电后, 出现 Btrfs 磁盘可以读取目录, 但不能读取内容。
- 将磁盘挂载到 Windows 后, 通过 winhex 可以正常打开, 并可以拷贝磁盘数据建立磁盘镜像。
- 通过 Ubuntu 挂载后, 也是可以访问目录, 但不能拷贝文件(出现io无响应)。
- 该磁盘作为下载磁盘,断电时可能正在写入数据(少量数据)。
这是 典型的 Btrfs 在异常断电后出现的“逻辑一致性破坏 + 读路径差异”问题:
断电导致“全盘”或全局性问题,而不是仅仅影响正在写入的单个文件,主要是因为 Btrfs是一个“写时复制”(CoW)的、日志式元数据文件系统。
简单来说,一次断电可能同时破坏了用于描述全盘文件布局的“地图”(元数据),以及文件系统记录自己变更的“笔记本”(日志)
解决方案
能识别到卷的基础上, 不挂载文件系统, 执行 btrfs restore
btrfs restore -v [-i -s] /dev/sdX /path/to/backup/
常用参数:
-v
显示正在恢复的文件-vv
显示 inode、extent、block 级别信息-i
交互式: 遇到错误时, 询问是否跳过-s
跳过错误-x
跳过 xattr / ACL / SELinux label(救命参数)
挂载 ext4
挂载流程基本与 Btrfs 相同, 磁盘结构基本相同, 唯一区别就是卷的文件系统不同。
sdb 8:16 0 465.8G 0 disk
├─sdb1 8:17 0 8G 0 part
│ └─md125 9:125 0 8G 0 raid1
├─sdb2 8:18 0 2G 0 part
│ └─md126 9:126 0 2G 0 raid1
└─sdb3 8:19 0 455.5G 0 part
└─md127 9:127 0 455.5G 0 raid1
├─vg1-syno_vg_reserved_area 253:0 0 12M 0 lvm
└─vg1-volume_1 253:1 0 455G 0 lvm /mnt/g
Comments ()