我想在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.
显示的速度via /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用当前磁盘修复了它们的固件。