first commit

This commit is contained in:
CrazyJasonwell
2026-07-23 20:36:13 +08:00
commit 513b68be8c
7915 changed files with 2642530 additions and 0 deletions
@@ -0,0 +1,114 @@
---
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
```
如果上述方法仍无法修复,您可能需要考虑从备份恢复数据或联系专业数据恢复服务。