将 SSD 添加到现有的基于 HDD 的 BTRFS 文件系统

将 SSD 添加到现有的基于 HDD 的 BTRFS 文件系统

我有一个 BTRFS 文件系统,带有各种大小的 HDD。我认为添加 SSD 可能允许 BTRFS 将其用作缓存层或只是另一个更快的驱动器(文档对此有点稀疏:https://btrfs.wiki.kernel.org/index.php/FAQ#Is_Btrfs_optimized_for_SSD.3F)。但是,当我运行 btrfs fi show /data 时,它显示 SSD 未使用:

Total devices 8 FS bytes used 4.29TiB

// SSD moved to the top of the list for easier reading
devid    9 size 223.57GiB used 0.00B path /dev/sda
devid    1 size 2.73TiB used 1.28TiB path /dev/sdb1
devid    5 size 0.00B used 356.00GiB path /dev/sdi1
devid    6 size 1.82TiB used 379.00GiB path /dev/sde1
devid    7 size 4.55TiB used 3.09TiB path /dev/sdh
devid    8 size 3.64TiB used 2.19TiB path /dev/sdc
devid   10 size 2.73TiB used 1.28TiB path /dev/sdf
devid   11 size 1.82TiB used 24.00GiB path /dev/sdg

另外,如果我运行 btrfs device use /data,它还会将 SSD 报告为未使用:

/dev/sda, ID: 9
Device size:           223.57GiB
Unallocated:           223.57GiB

所以我想我应该检查我的 fstab 挂载选项:

# Mount BTRFS array
UUID=587d228b-5dc3-44e6-b9d9-83df5682d50d       /data   btrfs   defaults,noatime,space_cache,discard    0       0

据我所知,这些都是相当标准的。

这是正常现象吗?我如何判断 BTRFS 是否确实在使用该驱动器? (我可能完全错了,BTRFS 甚至可能根本不支持这个用例)

答案1

仅将设备添加到 BTRFS 池不会自动将任何数据移动到其中,您必须将新数据写入池中,平衡器将决定将数据放在哪个设备上。
下一个块很可能是在新添加的设备上创建的,因为它的分配率为 0%(平衡器尝试平等地填充所有设备)。

如果你想让已经写入的数据再次经过平衡器,你需要使用btrfs balance命令

放在 SSD 上的所有数据都会比 HDD 上的数据更快,但没有适当的速度感知平衡,因此哪些数据快、哪些数据慢几乎是随机的,也无法手动控制。

相关内容