单个设备上的 btrfs raid1 和 btrfs -m dup -d dup 有什么区别

Art*_*yom 8 btrfs raid1

我已经在多个设备上使用 btrfs 大约两年了。

我计划在具有不可靠扇区的 HDD(单盘)上测试一些 btrfs 配置。硬盘上的十几个扇区有时无法读取。

这些设置中的数据完整性和整体读写速度是否有任何差异:

1 TB HDD
-1 TB btrfs partition created with `mkfs.btrfs -d dup -m dup /dev/sda1`

1 TB HDD
-500 GB partition
-500 GB partition
--500 GB btrfs Raid 1 `mkfs.btrfs -m raid1 -d raid1 /dev/sda1 /dev/sda2`
Run Code Online (Sandbox Code Playgroud)

Mik*_*nen 6

我建议使用该变体,dup而不是在同一设备上放置多个分区并突袭它们。raid 变体很糟糕,因为 raid 要求在访问数据时读取两个副本(这对于正常的多设备 raid 很有用,因为如果任一设备速度更快,则数据会更快可用)。对于单个设备旋转设备,这会导致读取头在不同分区之间跳跃,因此如果队列中有多个请求(通常情况),您最终会得到非常糟糕的性能。增加队列深度和 CFQ 调度程序可以稍微减少总体延迟,但最好避免这种混乱。

dup变体应该足够理智,通常只能读取一个副本,并且仅在扇区不可读时才回退到另一个副本。

我不确定dup实施情况,但我猜这dup不会将副本 1/2 设备远离第一个副本,因此dup可能也会提高写入性能。对于单设备 raid,写入性能也会很差,因为一​​个逻辑写入操作需要写入物理旋转设备上的两个位置,并且差异始终是 1/2 设备,因此您最终会得到一种实际上实现整体的算法旋转设备的最坏情况行为。


Ále*_*lex 0

聚会迟到了,但无论如何。我想知道同样的问题,在我读到的人(关于 dup)中:

“例如,SSD 驱动器可以在内部将块重新映射到单个副本,从而对它们进行重复数据删除。这否定了增加冗余(原文如此)的目的,并且只是浪费空间”

也许 raid1 可以避免(或不能)这种担忧。