Btrfs 支持在线扩容、缩容、换盘与 RAID 模式转换;本篇主要介绍在 RAID 0/RAID 1/RAID 10/RAID 6 拓扑下创建文件系统、加盘、换盘、缩容及常用运维操作。
1. Btrfs 配置
- single:单副本,无冗余,单盘或可多盘聚合。
- raid0:条带,无冗余,等价 RAID 0。
- raid1:镜像,至少 2 块盘,等价 RAID 1。
- raid10:条带 + 镜像,至少 4 块盘,等价 RAID 10。
- raid5:单校验,至少 3 块盘,允许 1 块盘故障,等价 RAID 5。
- raid6:双校验,至少 4 块盘,允许 2 块盘故障,等价 RAID 6。
数据与元数据可分别设置配置档(如 -d raid10 -m raid1),元数据一般用更高冗余。
常用概念:
- degraded:降级,有设备缺失但可读(甚至可写,取决于 profile)。
- balance:在设备间重新分布数据块,以满足新 profile 或新设备;加盘、改 RAID 后常需 balance。
- replace:在线用新盘替换旧盘,无需卸载,数据会拷贝到新盘后移除旧盘。
2. RAID 0
2.1 创建 Btrfs 文件系统
- 使用多块盘创建 RAID 0(数据与元数据均为 raid0)
| |
- 挂载
可只指定一块盘,会识别到其他盘。
| |
- 查看设备使用情况
| |
| |
- 查看文件系统使用情况
| |
| |
- 查看空间
| |
| |
两块盘下,raid0 做条带,得盘率 100%。
2.2 加盘扩容
- 将新盘加入已挂载的文件系统
| |
-f 会强制覆盖已有的文件系统。
- 查看设备使用情况
| |
| |
- 执行 balance,使数据按 raid0 分布到所有设备
| |
命令会 hang 住,需要等待 balance 完成。可以另外开一个终端查看进度。
- 查看 balance 进度
| |
| |
- 查看设备使用情况
| |
| |
2.3 减盘缩容
raid0 无冗余,缩容需保证目标盘数下其他盘有足够空间容纳被移走盘上的数据。
- 移除一块盘
数据会自动迁到其余盘
| |
- 查看设备列表
| |
| |
3. RAID 1
3.1 创建 Btrfs 文件系统
- 移除已有的文件系统
| |
- 使用 2 块盘创建 RAID 1
| |
- 挂载
| |
- 查看设备使用情况
| |
- 查看空间
| |
| |
两块盘下,raid1 做镜像,得盘率 50%。
3.2 单盘替换
- 清空新盘
| |
- 用新盘替换旧盘
| |
- 查看替换进度
| |
| |
替换期间文件系统可正常读写。替换完成后,旧盘会从文件系统中移除。
- 若新盘比旧盘大,新空间会自动纳入可用空间
| |
| |
3.3 加盘扩容
- 清空新盘
| |
- 加两块盘后可转为 raid10
| |
- 查看设备使用情况
| |
| |
- 再 balance 为 raid10
| |
命令会 hang 住,需要等待 balance 完成。可以另外开一个终端查看进度。
- 查看 balance 进度
| |
| |
- 查看设备使用情况
| |
| |
3.4 减盘缩容
- 移除一块盘
| |
- 查看设备
| |
| |
4. RAID 10
4.1 创建 Btrfs 文件系统
- 移除已有的文件系统
| |
- 使用 4 块盘创建 RAID 10
| |
-f 会强制覆盖已有的文件系统。
- 挂载
| |
- 查看设备使用情况
| |
| |
- 查看空间
| |
| |
4 块盘下,raid10 为条带+镜像,得盘率 50%。
4.2 单盘替换
- 清空旧盘
| |
- 用新盘替换旧盘
| |
- 查看替换进度
| |
替换期间文件系统可正常使用。完成后旧盘自动移除,若新盘更大,空间自动扩展。
- 查看设备使用情况
| |
| |
4.3 加盘扩容
- 清空新盘
| |
- 将新盘加入文件系统
| |
- balance 数据到新盘
| |
- 查看 balance 进度
| |
- 查看设备使用情况
| |
| |
4.4 减盘缩容
需要保障移除盘之后,盘的数量不低于 RAID 的最低要求,并且剩余盘空间足够容纳被移走盘上的数据。
- 移除一块盘
| |
- 查看设备列表
| |
| |
5. RAID 6
5.1 创建 Btrfs 文件系统
- 移除已有的文件系统
| |
- 创建 RAID 6
至少 4 块盘。
| |
- 挂载
| |
- 查看设备与配置
| |
| |
- 查看空间
| |
| |
4 块盘 RAID 6 得盘率 50%(2 数据 + 2 校验)。
5.2 单盘替换
- 清空旧盘
| |
- 用新盘替换旧盘
| |
- 查看进度
| |
等待完成。
- 查看设备使用情况
| |
| |
5.3 加盘扩容
- 添加新盘
| |
- balance 数据到新盘
| |
| |
会出现一个警告,提示 RAID 5/6 不建议用于生产环境,数据不可靠。
- 查看设备使用情况
| |
| |
5.4 减盘缩容
- 移除一块盘
| |
移除设备时,没有出现 warning 提示。
- 查看设备使用情况
| |
| |
6. 降级与恢复
- 某块盘故障或被拔出时,文件系统可能处于 degraded 状态,仍可读(甚至可写,视 profile 而定)。
- 查看状态
| |
- 恢复方式:
- 换盘:用
btrfs replace start 旧盘 新盘 /mnt/btrfs在线替换。 - 移除盘:若不再使用该盘,可用
btrfs device remove 缺失设备(需在能识别到“缺失”的情况下,或先btrfs device add新盘再 balance/remove)。
- 换盘:用
- 替换或 balance 期间建议避免再掉盘,以加快恢复。
7. 备份与恢复
7.1 快照与恢复
- 创建快照
| |
创建的快照只包含元数据。
- 查看快照文件
| |
非常易用,快照直接以文件目录的形式可以被访问。
- 删除快照
| |
7.2 数据校验
- 校验文件系统数据
| |
- 查看校验进度
| |
| |
建议定期执行校验,发现静默错误(位翻转了而没有被发现)。
8. 生成测试数据
- 4M 顺序写
| |
用于生成测试数据。
- 计算文件的 MD5 值
| |
用于校验调整之后文件的完整性。
