Btrfs 和 ZFS 文件系统常用命令与配置
一、Btrfs (B-Tree File System)
Btrfs Wiki:Btrfs - Arch Linux 中文维基
1. 基本介绍
Btrfs 是 Linux 原生的现代文件系统,具有以下特点:
- 写时复制(CoW):数据修改时不会覆盖原有数据
- 内置 RAID 支持:支持 RAID 0/1/5/6/10
- 子卷(Subvolume):可创建独立的子卷进行管理
- 快照(Snapshot):快速创建文件系统快照
- 透明压缩:支持 zstd/lzo 压缩算法
- 数据校验:自动检测数据损坏
2. 常用命令
# 创建 Btrfs 文件系统
mkfs.btrfs /dev/sdX
# 创建带 RAID1 的 Btrfs
mkfs.btrfs -m raid1 -d raid1 /dev/sdX /dev/sdY
# 启用压缩(zstd 算法)
mount -o compress=zstd /dev/sdX /mnt
# 启用空间缓存(提升性能)
mount -o space_cache=v2 /dev/sdX /mnt
# 创建子卷
btrfs subvolume create /mnt/subvol1
# 列出子卷
btrfs subvolume list /mnt
# 删除子卷
btrfs subvolume delete /mnt/subvol1
# 创建快照
btrfs subvolume snapshot /mnt/subvol1 /mnt/snapshots/snap1
# 回滚到快照
btrfs subvolume set-default /mnt/snapshots/snap1 /mnt
# 平衡文件系统(重新分配数据)
btrfs balance start /mnt
# 检查文件系统
btrfs scrub start /mnt
二、ZFS (Zettabyte File System)
ZFS 官方中文文档:Oracle Solaris ZFS 文件系统
1. 基本介绍
- 存储池(Zpool):整合多个物理设备
- 数据集(Dataset):类似子卷的概念
- ARC 缓存:自适应替换缓存算法
- 数据完整性:端到端校验和
- ZIL 和 SLOG:提升同步写入性能
- 原生加密:支持 AES-256 加密
2. 常用命令
# 创建存储池
zpool create poolname mirror /dev/sdX /dev/sdY
# 添加盘到存储池
zpool add poolname /dev/sdZ
# 查看存储池状态
zpool status -v
# 创建 ZFS 文件系统
zfs create poolname/dataset1
# 设置压缩算法
zfs set compression=lz4 poolname/dataset1
# 设置配额
zfs set quota=10G poolname/dataset1
# 创建快照
zfs snapshot poolname/dataset1@snap1
# 回滚快照
zfs rollback poolname/dataset1@snap1
# 克隆快照
zfs clone poolname/dataset1@snap1 poolname/clone1
# 设置记录日志设备(SLOG)
zpool add poolname log /dev/sdL
# 设置缓存设备(L2ARC)
zpool add poolname cache /dev/sdC
# 检查数据完整性
zpool scrub poolname
# 恢复损坏的文件
zfs send poolname/dataset1@snap1 | zfs receive poolname/recovered
三、Btrfs vs ZFS 对比
特性 Btrfs ZFS
原生支持 Linux 跨平台
RAID5/6 实验性 成熟
压缩算法 zstd, lzo lz4, gzip, zstd
加密 需要上层工具 原生支持
内存占用 较低 较高(需调优)
社区支持 Linux 内核维护 OpenZFS 社区
适用场景 桌面/轻量服务器 企业级存储
四、使用建议
1. 桌面用户:推荐 Btrfs,集成度好,内核原生支持
2. NAS/企业存储:推荐 ZFS,功能更完善,稳定性高
3. 关键数据:无论选择哪种,都应配置 RAID1/10 和定期快照

浙公网安备 33010602011771号