WD HC620 14TB在非飞牛OS(Debian)下的使用方法与挂载至Windows – 白のblog
在开始之前,请准备好2块WD HC620硬盘,并准备好安装了Debian 13的机器。


编译Linux内核
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配置基本正确。可重启验证是否实现开机自动挂载。
Comments NOTHING