截至目前,实现方法依赖的Raid-Stripe-Tree仍属于Experimental(实验特性),若您的环境包含重要数据,不建议使用该方法,而是使用单盘Btrfs Zoned或F2FS模式
对于希望仅单盘存储的用户,请参阅如下文章

WD HC620 14TB在非飞牛OS(Debian)下的使用方法与挂载至Windows – 白のblog

在开始之前,请准备好2块WD HC620硬盘,并准备好安装了Debian 13的机器。

编译Linux内核

如果挂载HC620的机器CPU较弱/磁盘空间不足,建议通过其余机器进行编译,并通过scp等方法传送kernel与headers debian package。

Raid-Stripe-Tree属于实验特性,在本文使用的Debian 13 Linux 6.12 Kernel中,其受"CONFIG_BTRFS_DEBUG"控制。Debian默认内核未开启该Feature,因此需要手动编译Linux内核以开启支持。

下载Linux 源代码

首先,在机器中以root身份运行如下指令(通过sudo -i 或 su -)

apt install linux-config-6.12 linux-source-6.12
ls /boot/config-*

随后,运行如下指令以准备编译目录和配置

mkdir -p ~/btrfs-rst-kernel
cd ~/btrfs-rst-kernel
cp /boot/config-$(uname -r) .config

运行如下指令,解压Linux源代码

tar -xf /usr/src/linux-source-6.12.tar.xz

配置Btrfs_Debug特性

完成后进入目录并复制Config,以及保留一份config untouched。

cd linux-source-6.12
cp ../.config .config
cp .config .config.debian-original
head -5 Makefile

确认内核版本信息。

在此之后,通过如下指令开启btrfs_debug,以准备支持Raid-Stripe-Tree

make olddefconfig
scripts/config --enable BTRFS_DEBUG
scripts/config --set-str LOCALVERSION "-btrfs-rst"
scripts/config --disable LOCALVERSION_AUTO
make olddefconfig

编译内核

随后,运行如下指令开始编译内核

apt install   build-essential   debhelper   bc   bison   flex   libssl-dev   libelf-dev   libncurses-dev   dwarves   fakeroot   rsync   xz-utils   dpkg-dev -y
make prepare
make -s kernelrelease
make -j$(nproc) bindeb-pkg 2>&1 | tee ../kernel-build.log

安装内核

完成后,运行如下指令可以看到编译好的内核image和headers

cd ../
ls

如果是在本机编译,使用apt安装image与header即可。如果位于另一主机,则通过scp等方式将deb包发送至对应机器,并安装。

sudo apt install ./linux-image-6.12.105-btrfs-rst_6.12.105-1_amd64.deb ./linux-headers-6.12.105-btrfs-rst_6.12.105-1_amd64.deb

安装完成后,重启主机。重启后,使用如下指令确认内核版本。

uname -r

随后,通过如下指令验证特性支持(输出Raid_Stripe_Tree即可)

sudo modprobe btrfs
ls /sys/fs/btrfs/features/ | grep raid_stripe_tree

编译btrfs-progs

除了编译内核,我们还需要编译userspace的btrfs-progs,以支持Raid-Stripe-Tree特性

配置环境与下载源码

首先安装相关package。

sudo apt update && sudo apt install -y \
  asciidoc \
  autoconf \
  automake \
  build-essential \
  libacl1-dev \
  libblkid-dev \
  libext2fs-dev \
  libjson-c-dev \
  liblzo2-dev \
  libmount-dev \
  libtool \
  libudev-dev \
  libuuid1 \
  libzstd-dev \
  pkgconf \
  python3-dev \
  python3-setuptools \
  python3-sphinx \
  python3-sphinx-rtd-theme \
  uuid-dev \
  xmlto \
  zlib1g-dev

随后,编辑sources.list,以启用deb-src源码支持

sudo nano /etc/apt/sources.list

随后运行

sudo apt update
mkdir -p ~/btrfs-rst-src
cd ~/btrfs-rst-src/
apt source btrfs-progs

如果 apt source btrfs-progs 下载到的不是 7.1 或更高版本,需要启用对应 backports source,或直接从 upstream 获取 7.1 source。

配置实验特性并编译

随后,进入源码文件夹

cd ~/btrfs-rst-src/btrfs-progs-7.1
./autogen.sh
./configure --help | grep -i experimental
./configure --enable-experimental
make -j$(nproc)

确认特性

编译完成后,运行如下指令确认Raid-Stripe-Tree特性(同时关注+EXPERIMENTAL和+ZONED)

./mkfs.btrfs --version
./btrfs --version
./mkfs.btrfs -O list-all | grep -i -E 'raid|stripe'

完成后,可以进入下一流程。

格式化并挂载硬盘

确认硬盘身份

使用如下指令,确认是否能正确识别硬盘

lsblk -d -o NAME,MODEL,SERIAL,SIZE,ZONED

运行如下指令,并确保运行后没有输出。/dev/sdx需根据上图实际情况调整(Zoned处显示host-managed的设备Name),并记录备用。

findmnt -S /dev/sdX
findmnt -S /dev/sdY

确认硬盘Zone Geometry

运行如下指令,确定2个设备的Zone Size一致

cat /sys/block/sdX/queue/chunk_sectors
cat /sys/block/sdY/queue/chunk_sectors

sudo blkzone report /dev/sdX | grep -n -m1 SEQ_WRITE_REQUIRED
sudo blkzone report /dev/sdY | grep -n -m1 SEQ_WRITE_REQUIRED

创建Btrfs Zoned RAID1 with Raid-Stripe-Tree

确保位于自行编译的btrfs-progs的路径中,并确认btrfs-progs版本

cd ~/btrfs-rst-src/btrfs-progs-7.1
./mkfs.btrfs --version

根据前文确定

然后运行如下指令创建RAID1。并记录创建时的UUID(图中画白线处)以备后续使用。在支持Experimental的btrfs-progs中,为Zoned FS创建RAID1时会自动应用Raid-Stripe-Tree,无需额外指定-O raid-stripe-tree。

sudo ./mkfs.btrfs \
    -f \
    -L ColdBak \
    -O zoned \
    -d raid1 \
    -m raid1 \
    /dev/sdX /dev/sdY

创建成功后,创建挂载点并尝试挂载

sudo mkdir -p /mnt/ColdBak
sudo mount /dev/sdX /mnt/ColdBak
findmnt /mnt/ColdBak
sudo ./btrfs filesystem show /mnt/ColdBak
sudo ./btrfs filesystem usage /mnt/ColdBak

实现开机自动挂载

使用如下指令打开fstab

sudo nano /etc/fstab

将下面内容添加到文件最后一行,将 <你的UUID> 替换为 mkfs 输出中的 UUID,并删除尖括号。

UUID=<你的UUID>   /mnt/ColdBak  btrfs  defaults  0  0

在保存并退出编辑器后,运行如下指令

sudo systemctl daemon-reload
sudo umount /mnt/ColdBak
sudo mount -a
findmnt /mnt/ColdBak

如果显示上图,则代表fstab配置基本正确。可重启验证是否实现开机自动挂载。

此作者没有提供个人介绍。
最后更新于 2026-08-29