first commit
This commit is contained in:
@@ -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
|
||||
```
|
||||
|
||||
如果上述方法仍无法修复,您可能需要考虑从备份恢复数据或联系专业数据恢复服务。
|
||||
Reference in New Issue
Block a user