2.3 KiB
2.3 KiB
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. 预防措施
-
启用 Btrfs 异步写入: 在
/etc/fstab中添加async选项 -
定期检查与平衡:
sudo btrfs scrub start /path/to/存储空间2
sudo btrfs balance start -dusage=50 -musage=50 /path/to/存储空间2
- 考虑使用 RAID1:
sudo btrfs device add /dev/sdY /path/to/存储空间2
sudo btrfs balance start -dconvert=raid1 -mconvert=raid1 /path/to/存储空间2
- 启用 COW 禁用: 对 Docker 存储目录禁用写入时复制:
sudo chattr +C /path/to/存储空间2/docker
如果上述方法仍无法修复,您可能需要考虑从备份恢复数据或联系专业数据恢复服务。