Files
StudyDiary/02-学习笔记/修复 Btrfs 文件系统错误并恢复 Docker 运行.md
2026-07-23 20:36:13 +08:00

2.3 KiB
Raw Permalink Blame History

title, created, source, tags
title created source tags
2026-05-31 Cherry Studio

修复 Btrfs 文件系统错误并恢复 Docker 运行(飞牛系统)

当 Btrfs 文件系统因断电变为只读时,您需要按照以下步骤修复:

1. 卸载文件系统(如果已挂载)

sudo umount /path/to/存储空间2

2. 运行 Btrfs 文件系统修复

基本修复(尝试正常恢复)

sudo btrfs check --readonly /dev/sdX2  # 先只读检查,替换为实际设备名

如果发现错误需要修复

sudo btrfs check --repair /dev/sdX2

注意--repair 选项有一定风险,建议先备份重要数据。它会尝试自动修复文件系统结构错误。

3. 高级修复选项(如果基本修复无效)

重置日志(log tree

sudo btrfs rescue zero-log /dev/sdX2

清除损坏的树(谨慎使用)

sudo btrfs rescue clear-ino-cache /dev/sdX2
sudo btrfs rescue fix-device-size /dev/sdX2

4. 重新挂载文件系统

sudo mount -t btrfs -o compress-force=zstd,noatime,space_cache=v2 /dev/sdX2 /path/to/存储空间2

5. 恢复 Docker 服务

sudo systemctl restart docker

检查容器状态

docker ps -a

尝试启动容器

docker start $(docker ps -aq)

6. 如果仍有问题

重建 Btrfs 空间缓存

sudo btrfs filesystem resize max /path/to/存储空间2

检查并修复子卷

sudo btrfs subvolume list /path/to/存储空间2
sudo btrfs subvolume sync /path/to/存储空间2

7. 预防措施

  1. 启用 Btrfs 异步写入/etc/fstab中添加async选项

  2. 定期检查与平衡

sudo btrfs scrub start /path/to/存储空间2
sudo btrfs balance start -dusage=50 -musage=50 /path/to/存储空间2
  1. 考虑使用 RAID1
sudo btrfs device add /dev/sdY /path/to/存储空间2
sudo btrfs balance start -dconvert=raid1 -mconvert=raid1 /path/to/存储空间2
  1. 启用 COW 禁用: 对 Docker 存储目录禁用写入时复制:
sudo chattr +C /path/to/存储空间2/docker

如果上述方法仍无法修复,您可能需要考虑从备份恢复数据或联系专业数据恢复服务。