Skip to content

Btrfs 使用指南

约 486 字大约 2 分钟

Linux

2026-05-08

安装

不需要单独“安装” Btrfs,因为它已经集成在 Debian 12 的 Linux 内核中了。 虽然内核支持读写,但需要用户态工具来执行创建、压缩、快照等管理操作。

sudo apt update
sudo apt install btrfs-progs

为什么推荐安装 btrfs-progs?

  • mkfs.btrfs: 创建新的 Btrfs 分区。
  • btrfs subvolume: 管理子卷(这是 Btrfs 的精髓)。
  • btrfs filesystem show: 查看磁盘空间的真实使用情况(普通的 df -h 对 Btrfs 不太准)。
  • btrfs scrub: 检查和修复数据错误。

格式化

sudo mkfs.btrfs -L MY_STORAGE -f /dev/sdb1

创建卷

临时挂载父卷

mount /dev/sdb1 /mnt/temp_root

创建数据子卷

sudo btrfs subvolume create /mnt/temp_root/@data

使用 @ 前缀是一种约定俗成的习惯,而非系统层面的强制要求。

卸载临时挂载点

sudo umount /mnt/temp_root

@data 子卷挂载

sudo mount -o subvol=@data,compress=zstd /dev/sdb1 /mnt/sd2

快照

创建快照存储子卷

sudo btrfs subvolume create /mnt/temp_root/@snapshots

创建快照

先临时挂载父卷以便操作快照

sudo mount /dev/sdb1 /mnt/btrfs_admin
sudo btrfs subvolume snapshot /mnt/btrfs_admin/@data /mnt/btrfs_admin/@snapshots/@data_backup_$(date +%Y%m%d)

回滚

删除旧子卷(或重命名) 用快照“克隆”一个新的

mv /mnt/tmp/@data /mnt/tmp/@data-old
btrfs subvolume snapshot /mnt/tmp/@snapshots/data-2026-05-03 /mnt/tmp/@data

如果快照是只读,自动变成可写子卷

btrfs subvolume delete /mnt/tmp/@data-old

删除子卷/快照

btrfs subvolume delete /mnt/btrfs_admin/@snapshots/@data_backup_20260504
  • rm -rf 挂载点会尝试删除这个目录里的所有文件和子目录,但它不会删除子卷本身,子卷的“结构”仍然存在,只是里面的数据被清空了,子卷元数据仍存在。
  • 子卷必须没有被挂载(或者你是在其父文件系统中操作)
  • 不能有快照依赖(否则会失败)

查看状态

## 查看子卷列表
sudo btrfs subvolume list /my_data
## 查看磁盘空间利用率(Btrfs 专用)
sudo btrfs filesystem usage /my_data
## 当前挂载详情
mount | grep btrfs

更新日志

2026/9/10 16:18
查看所有更新日志
  • 4a047-new article于