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

114 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: # 修复 Btrfs 文件系统错误并恢复 Docker 运行
created: 2026-05-31
source: Cherry Studio
tags:
---
# 修复 Btrfs 文件系统错误并恢复 Docker 运行(飞牛系统)
当 Btrfs 文件系统因断电变为只读时,您需要按照以下步骤修复:
## 1\. 卸载文件系统(如果已挂载)
```bash
sudo umount /path/to/存储空间2
```
## 2\. 运行 Btrfs 文件系统修复
### 基本修复(尝试正常恢复)
```bash
sudo btrfs check --readonly /dev/sdX2 # 先只读检查,替换为实际设备名
```
### 如果发现错误需要修复
```bash
sudo btrfs check --repair /dev/sdX2
```
**注意**`--repair` 选项有一定风险,建议先备份重要数据。它会尝试自动修复文件系统结构错误。
## 3\. 高级修复选项(如果基本修复无效)
### 重置日志(log tree
```bash
sudo btrfs rescue zero-log /dev/sdX2
```
### 清除损坏的树(谨慎使用)
```bash
sudo btrfs rescue clear-ino-cache /dev/sdX2
sudo btrfs rescue fix-device-size /dev/sdX2
```
## 4\. 重新挂载文件系统
```bash
sudo mount -t btrfs -o compress-force=zstd,noatime,space_cache=v2 /dev/sdX2 /path/to/存储空间2
```
## 5\. 恢复 Docker 服务
```bash
sudo systemctl restart docker
```
### 检查容器状态
```bash
docker ps -a
```
### 尝试启动容器
```bash
docker start $(docker ps -aq)
```
## 6\. 如果仍有问题
### 重建 Btrfs 空间缓存
```bash
sudo btrfs filesystem resize max /path/to/存储空间2
```
### 检查并修复子卷
```bash
sudo btrfs subvolume list /path/to/存储空间2
sudo btrfs subvolume sync /path/to/存储空间2
```
## 7\. 预防措施
1. **启用 Btrfs 异步写入**`/etc/fstab`中添加`async`选项
2. **定期检查与平衡**
```bash
sudo btrfs scrub start /path/to/存储空间2
sudo btrfs balance start -dusage=50 -musage=50 /path/to/存储空间2
```
3. **考虑使用 RAID1**
```bash
sudo btrfs device add /dev/sdY /path/to/存储空间2
sudo btrfs balance start -dconvert=raid1 -mconvert=raid1 /path/to/存储空间2
```
4. **启用 COW 禁用**: 对 Docker 存储目录禁用写入时复制:
```bash
sudo chattr +C /path/to/存储空间2/docker
```
如果上述方法仍无法修复,您可能需要考虑从备份恢复数据或联系专业数据恢复服务。