MDADM 块值

MDADM 块值

我有一个由两个 SSD 组成的 RAID 10 阵列,在 Linux 上使用 mdadm,

我创建了它

mdadm --create --verbose --level=10 --metadata=1.2 --chunk=512 --raid-devices=2 --layout=f2 /dev/md/MyRAID10Array /dev/nvme0n1p3 /dev/nvme1n1p3

但我想知道为什么当我查看数组时,我得到的块大小是 65536kb?我还认为 --chunk=512 可能太大了。

来自 cat /proc/mdstat

md127 : active raid10 nvme1n1p3[1] nvme0n1p3[0]
      942664704 blocks super 1.2 512K chunks 2 far-copies [2/2] [UU]
      [=====>...............]  resync = 29.5% (278703616/942664704) finish=55.2min speed=200170K/sec
      bitmap: 6/8 pages [24KB], 65536KB chunk

答案1

根据 mdadm wiki,https://raid.wiki.kernel.org/index.php/Mdstat,您在那里看到的是位图块,而不是数组块。根据上面两行的消息,数组块的大小是 512K,正如您设置的那样。虽然 wiki 没有完全清楚位图块值的含义,但它确实说“内存中的位图使用每个位图块的 16 位来计算对该块的所有正在进行的写入,因此它实际上比磁盘上的位图大 16 倍。”“位图块”实际上可能是内存中一个“页面”位图的大小。您的数组仅报告了 8 页位图,其中 6 页已加载到内存中;一旦您的重新同步完成,位图的页面计数应该会下降。

答案2

chunk定义 RAID 阵列元素条带(即:数据块有多大)。从手册页:

-c, --chunk=
              Specify chunk size in kilobytes.  The default when
              creating an array is 512KB.

mdstat第二行证实了这一点:

942664704 blocks super 1.2 *512K chunks* 2 far-copies [2/2] [UU]

数据块不同于位图块,定义每个位图的位所覆盖的活动区域。这类块要大得多 - 在您的例子中为 64MB:

bitmap: 6/8 pages [24KB], *65536KB chunk*

一般来说,对于 RAID1/10,您不需要调整这些参数。但是,请记住,默认值是针对旋转介质 (HDD) 而不是快速 SSD 进行优化的,因此,如果您愿意,可以尝试使用较小的数据块(即:8-64K)。不过,我不会费心调整位图。

相关内容