我想在 mdadm raid1 设置中使用两个 3 TB 驱动器(使用 Debian Sequeeze)。
这些驱动器使用 4k 硬件扇区,而不是传统的 512 字节扇区。
我有点困惑,因为一方面内核报告:
$ cat /sys/block/sdb/queue/hw_sector_size
512
但另一方面fdisk
报道称:
# fdisk -l /dev/sdb
Disk /dev/sdb: 3000.6 GB, 3000592982016 bytes
255 heads, 63 sectors/track, 364801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
因此,内核似乎知道驱动器使用 4k 扇区。
手册mdadm
页关于块大小和 raid1 有点神秘:
-c, --chunk= Specify chunk size of kibibytes. The default when creating an array is 512KB. To ensure compatibility with earlier versions, the default when Building and array with no persistent metadata is 64KB. This is only meaningful for RAID0, RAID4, RAID5, RAID6, and RAID10.
为什么对raid1没有意义?
查看/proc/mdstat
,raid1设备md8有2930265424个块,即
3000591794176/2930265424/2 = 512
那么是否mdadm
使用 512 字节的块大小? (/2因为它是双向镜像)
块大小与块大小是不同的概念吗?
试图让mdadm
解释一个装置:
# mdadm -E /dev/sdb -v -v
Avail Dev Size : 5860531120 (2794.52 GiB 3000.59 GB)
Array Size : 5860530848 (2794.52 GiB 3000.59 GB)
在哪里
3000591794176/5860530848 = 512
mkfs.xfs
在 md 设备上默认情况下,它会报告:
sectsz=512
bsize=4096
我通过调用纠正了这个问题mkfs.xfs -s size=4096 /dev/md8
编辑:经过一番测试,我注意到以下几点:
看起来初始重新同步是使用 128k 的块大小(而不是 512 字节)完成的:
md: resync of RAID array md8
md: minimum _guaranteed_ speed: 1000 KB/sec/disk.
md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for resync.
md: using 128k window, over a total of 2930265424 blocks.
显示的速度/proc/mdstat
对于该块大小是一致的(对于 512 字节,预计性能会受到影响):
[>....................] resync = 3.0% (90510912/2930265424) finish=381.1min speed=124166K/sec
(例如,当禁用写入缓存时,显示的速度立即降至 18m/sec)
除此之外,下面/sys
实际上还有一些更相关的文件hw_sector_size
:
# cat /sys/block/sdb/queue/physical_block_size
4096
# cat /sys/block/sdb/queue/logical_block_size
512
这意味着驱动器不会向内核谎报其 4k 扇区大小,并且内核具有一些 4k 扇区支持(如fstab -l
建议的输出)。
谷歌搜索了一下,发现了一些关于 WD 磁盘的报告,这些报告没有报告 4k 大小 - 幸运的是,这个 3 TB WD 磁盘没有这样做 - 也许 WD 修复了当前磁盘的固件。
答案1
块大小不适用于 raid1,因为没有条带化;本质上整个磁盘就是一个块。简而言之,您无需担心 4k 物理扇区大小。 mdadm 的最新版本使用来自内核的信息来确保数据的开头与 4kb 边界对齐。只需确保您使用的是 1.x 元数据格式。