在 Ubuntu 18.04 的系统上,有一个 Btrfs 卷安装为/home
.它突然不由自主地切换到只读模式。文件中fstab
有以下内容:
UUID=56b07769-992f-4c55-b620-c35d399a4c55 /home btrfs defaults,subvol=@home 0 2
df
将此卷报告为/dev/sda2
设备:
/dev/sda2 2,8T 2,1T 686G 76% /home
日志报告了两个扇区的问题,这很糟糕,但可能不是灾难性的:
$ dmesg
[...]
[255987.491752] sd 2:0:0:0: [sda] tag#0 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[255987.491754] sd 2:0:0:0: [sda] tag#0 CDB: Read(16) 88 00 00 00 00 00 00 05 f8 80 00 00 00 08 00 00
[255987.491755] print_req_error: I/O error, dev sda, sector 391296
[255987.491758] Buffer I/O error on dev sda2, logical block 16, async page read
[255995.569797] sd 2:0:0:0: [sda] tag#0 FAILED Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[255995.569800] sd 2:0:0:0: [sda] tag#0 CDB: Read(16) 88 00 00 00 00 00 3f e9 2f 80 00 00 00 20 00 00
[255995.569801] print_req_error: I/O error, dev sda, sector 1072246656
[255995.569806] BTRFS error (device sda2): bdev /dev/sda2 errs: wr 5, rd 3371, flush 1, corrupt 0, gen 0
第一反应是以读/写模式重新挂载卷,但这导致了错误:
$ sudo mount -o remount,rw /home
mount: /home: mount point not mounted or bad option.
然后我尝试检查卷的运行状况,但令人惊讶的是,btrfs
无法识别该卷:
$ sudo btrfs check --force -p /dev/sda2
WARNING: filesystem mounted, continuing because of --force
No valid Btrfs found on /dev/sda2
ERROR: cannot open file system
还有什么办法可以标记这些坏扇区并以读写模式重新挂载该卷?
答案1
- 关闭你的系统。
- 使用 Linux 发行版从 USB 记忆棒(或任何其他实时介质)启动
- 启动后安装用于搞乱 btrfs 的工具。 (我假设您的 USB 棒也是 ubuntu):
sudo apt install btrfs-progs
在 Ubuntu 20 或sudo apt install btrfs-tools
更旧的系统上。 (它将安装在内存中) - 安装工具来在硬件级别上处理磁盘:
sudo apt install smartmontools
- 将磁盘挂载为只读:(
mkdir /mnt/baddisk && mount -o ro /dev/sdb1 /mnt/baddisk
您sdb1
的情况可能会有所不同) - 备份您的数据:
rsync -Havz /mnt/baddisk someothersystem:/dataofbuggydisk/
现在才可以玩。
- 用于
smartctl -a /dev/sdb
查看重新分配是否实际上仍然是一种选择。重新分配将由磁盘本身而不是 btrfs 进行低级别处理。
如果磁盘不能做到这一点,你肯定也无法做到这一点。 - 如果需要的话,你可以尝试一下
btrfs rescue
和btrfs check
。但如果只有几个坏扇区,则可能不需要这样做。常规的 Ubuntu 配置可确保文件系统始终处于最佳状态。
通常,您唯一应该担心的是 SMART 告诉您有关该磁盘的信息。smartctl
时常检查一下。(现在 Ubuntu 可能也会为你执行此操作,并在必要时警告你,但我不确定这一点,为了安全起见,也可以手动执行此操作。)
编辑:我刚刚注意到您提到 Ubuntu 将您的磁盘置于只读模式。当它决定这样做时,你就会遇到真正的问题。这通常只会发生在以下情况:
- 系统非正常关闭,但你没有提及,所以情况可能并非如此
- 您遇到低级(磁盘,而不是文件系统)问题。
我强烈建议不要再使用该磁盘。理论上,当然可以恢复文件系统并继续使用该磁盘一段时间,但是您将要迟早会遇到大问题...