mdadm raid1 และ chunksize (หรือ blockize) บนไดรฟ์ 4k เป็นอย่างไร


13

ฉันต้องการใช้ไดรฟ์ 3 TB สองตัวในการตั้งค่า mdadm raid1 (โดยใช้ 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.

ทำไมการบุก 1 ถึงไม่มีความหมาย?

มองไปที่/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นั้นสอดคล้องกันกับขนาดบล็อก (สำหรับ 512bytes ที่คาดว่าจะได้รับผลการทำงาน):

[>....................]  resync =  3.0% (90510912/2930265424) finish=381.1min speed=124166K/sec

(ตัวอย่างเช่นเมื่อปิดการใช้งานแคชการเขียนความเร็วที่แสดงจะลดลงทันทีถึง 18m / วินาที)

ภายใต้/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ข้อเสนอแนะ)

Googling นิดหน่อยส่งผลให้มีรายงานบางอย่างเกี่ยวกับดิสก์ WD ซึ่งไม่ได้รายงานขนาด 4k - โชคดีที่ดิสก์ 3 TB WD นี้ไม่ได้ทำเช่นนั้น - บางที WD อาจแก้ไขเฟิร์มแวร์ของตนด้วยดิสก์ปัจจุบัน

คำตอบ:


16

ขนาดก้อนใช้ไม่ได้กับ raid1 เพราะไม่มีการสตริป โดยพื้นฐานแล้วดิสก์ทั้งหมดเป็นชิ้นเดียว ในระยะสั้นคุณไม่จำเป็นต้องกังวลเกี่ยวกับขนาดเซกเตอร์กายภาพ 4k mdadm รุ่นล่าสุดใช้ข้อมูลจากเคอร์เนลเพื่อให้แน่ใจว่าการเริ่มต้นของข้อมูลนั้นถูกจัดตำแหน่งให้เป็นขอบเขต 4kb เพียงตรวจสอบให้แน่ใจว่าคุณใช้รูปแบบข้อมูลเมตา 1.x

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.