ภาค mdadm และ 4k (รูปแบบขั้นสูง)


10

มีคำถามมากมายเกี่ยวกับ Serverfault เกี่ยวกับการจัดเรียงดิสก์เซกเตอร์ 4k แต่สิ่งหนึ่งที่ยังไม่ชัดเจนสำหรับฉัน

ฉันจัดแนว RAID1 + LVM สำเร็จแล้ว หนึ่งในสิ่งที่ฉันทำคือใช้ mdadm superblock รุ่น 1.0 (ซึ่งเก็บ superblock ที่ท้ายดิสก์)

manpage กล่าวสิ่งนี้:

เวอร์ชันย่อยที่แตกต่างกันจะจัดเก็บซุปเปอร์บล็อกในสถานที่ต่าง ๆ บนอุปกรณ์ไม่ว่าจะเป็นที่ส่วนท้าย (สำหรับ 1.0) ที่จุดเริ่มต้น (สำหรับ 1.1) หรือ 4K จากจุดเริ่มต้น (สำหรับ 1.2) "1" เทียบเท่ากับ "1.0" "default" เทียบเท่ากับ "1.2"

เป็นเวอร์ชั่น 1.2 ซึ่งเป็นค่าเริ่มต้นสำหรับไดรฟ์เซ็กเตอร์ 4k หรือไม่? วิธีที่ฉันเห็นมันไม่ใช่เพราะ 4k จากจุดเริ่มต้น + ความยาวของ superblock นั้นไม่ใช่ความหลากหลายของ 4k (superblock นั้นยาวประมาณ 200 ไบต์ถ้าจำได้ถูกต้อง)

ความเข้าใจใด ๆ เกี่ยวกับเรื่องนี้ยินดีต้อนรับ

แก้ไข:

ด้านล่างตอบว่า mdadm superblock 1.1 และ 1.2 มีความหมายสำหรับการจัดตำแหน่ง 4k ฉันเพิ่งสร้างการโจมตีทั้งอุปกรณ์ด้วย:

mdadm --create /dev/md4 -l 1 -n 2 /dev/sdb /dev/sdd

จากนั้นฉันจะเพิ่มปริมาณตรรกะ:

vgcreate universe2 /dev/md4

อาร์เรย์กำลังซิงค์ที่ 16 MB / s:

md4 : active raid1 sdd[1] sdb[0]
      1465137424 blocks super 1.2 [2/2] [UU]
      [>....................]  resync =  0.8% (13100352/1465137424) finish=1471.6min speed=16443K/sec

ดังนั้นฉันจึงสงสัยว่ามันจัดเรียงอย่างเหมาะสม

(ดิสก์คือ 1.5 TB WD EARS ฉันมีไว้ในเดสก์ท็อปพีซีและมีการซิงค์ที่ประมาณ 80 MB / s)

Edit2:

นี่คือ - เอาต์พุตเอาท์พุต:

# mdadm --examine /dev/sdb
/dev/sdb:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 79843828:7d939cce:1c8f0b32:cf339870
           Name : brick:4  (local to host brick)
  Creation Time : Sat Jul  9 10:47:33 2011
     Raid Level : raid1
   Raid Devices : 2

 Avail Dev Size : 2930275120 (1397.26 GiB 1500.30 GB)
     Array Size : 2930274848 (1397.26 GiB 1500.30 GB)
  Used Dev Size : 2930274848 (1397.26 GiB 1500.30 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : active
    Device UUID : dd2e3b5f:33214b96:1cb88169:25deb050

    Update Time : Sat Jul  9 10:49:06 2011
       Checksum : 4f7cd785 - correct
         Events : 1


   Device Role : Active device 0
   Array State : AA ('A' == active, '.' == missing)

ออฟเซ็ตข้อมูลคือ 2048 ส่วนซึ่งสามารถหารด้วย 8 ได้ดังนั้นใคร ๆ ก็คิดว่าใช้ได้ กลุ่มวอลุ่มมีขนาดขอบเขตทางกายภาพเท่ากับ 4 MiB ซึ่งสามารถหารด้วย 8 แต่นั่นก็ไม่สำคัญเพราะ resync ไม่เกี่ยวข้องกับอุปกรณ์ที่มี

การแก้ไขอื่น: ดูเหมือนจะไม่เป็นปัญหาการจัดตำแหน่ง เนื่องจาก hdparm -t แสดงความเร็วการอ่านต่ำมากสำหรับหนึ่งในดิสก์ (30 MB / s) อย่างอื่นไม่เหมาะสม

แก้ไข 2: ฉันไม่เคยจำที่จะปรับปรุงโพสต์นี้เมื่อฉันพบคำตอบ ทุกอย่างอยู่ในแนวเดียวกัน ดิสก์แผ่นหนึ่งหัก เห็นได้ชัดว่ามันอยู่บนขาสุดท้ายของมันและแม้กระทั่งที่ยากจนในบางจุด ดิสก์ทดแทนทำงานได้ดี

คำตอบ:


13

ใช่มันถูกสร้างขึ้นสำหรับการจัดตำแหน่งเซกเตอร์ 4k

ด้วย superblock 1.1 และ 1.2 พื้นที่สงวนไว้ที่จุดเริ่มต้นของแต่ละดิสก์เพื่อที่ superblock จะไม่ถูกเหยียบย่ำ รหัสการสร้าง superblock บังคับให้พื้นที่ที่สงวนไว้นี้เป็น 4kB หลายเท่า การอ่านแบบฟิสิคัลทั้งหมดจะถูกชดเชยจากจุดสิ้นสุดของพื้นที่สงวนนี้ไม่ใช่จากส่วนท้ายของซุปเปอร์บล็อก นี่จึงรักษาการจัดตำแหน่งสำหรับขนาดเซกเตอร์ใด ๆ ที่แบ่งเท่า ๆ กันเป็น 4kB

หากคุณสนใจนี่คือหลักฐานจากซอร์สโค้ด mdadm ( super1.c):

/* force 4K alignment */
reserved &= ~7ULL;
sb->data_offset = __cpu_to_le64(reserved);

และdata_offsetพารามิเตอร์นี้ถูกใช้โดยรหัส RAID1 ในเคอร์เนลเพื่อชดเชยการอ่านทางกายภาพเช่นในเส้นทางการอ่าน:

read_bio->bi_sector = r1_bio->sector + mirror->rdev->data_offset

หากทั้ง 1.1 และ 1.2 เหมาะสำหรับการจัดแนว 4k แล้วเวอร์ชั่น 1.2 เหมาะสำหรับอะไร? ฉันหมายความว่าทำไมฉันถึงต้องการให้ superblock เริ่มต้น 4k จากจุดเริ่มต้น?
Halfgaar

2
มันคือจุดเริ่มต้นของดิสก์ที่สามารถจองบล็อกการบูตได้ทำให้สามารถใช้ดิสก์เป็นดิสก์สำหรับบูตได้
Tom Shaw

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