mdadm raid1 和 4k 驅動器上的塊大小(或塊大小)?
我想在 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
在 md 設備上使用預設值
mkfs.xfs
,它會報告: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
建議的輸出)。Google搜尋一下導致了一些關於 WD 磁碟的報告,這些報告沒有報告 4k 大小 - 幸運的是這個 3 TB WD 磁碟沒有這樣做 - 也許 WD 用目前磁碟修復了他們的韌體。
塊大小不適用於 raid1,因為沒有條帶化;基本上整個磁碟是一個塊。簡而言之,您無需擔心 4k 物理扇區大小。最新版本的 mdadm 使用來自核心的資訊來確保數據的開頭與 4kb 邊界對齊。只要確保您使用的是 1.x 元數據格式。