อธิบาย md's raid10, f2


14

ฉันรู้ว่า RAID ส่วนใหญ่ทำงานอย่างไร แต่ฉันสะดุดใน โหมดraid10, f2 ที่แนะนำในขณะที่ทำการค้นคว้าซอฟต์แวร์ linux ฉันไม่เข้าใจจริงๆว่ามันทำงานอย่างไรกับดิสก์ 2 หรือ 3 แผ่น บางคนสามารถอธิบายให้ฉันได้ไหม หรือชี้ให้ฉันเป็นบทความที่ดีจริง ๆ ที่อธิบายได้อย่างไร

คำตอบ:


17

จริง ๆ แล้วฉันคิดว่าWikipediaอธิบายได้ดีกว่าเอกสารจริง นี่คือข้อความจากบทความ

ซอฟต์แวร์เคอร์เนล Linux ไดรเวอร์ RAID (เรียกว่า md สำหรับ "หลายอุปกรณ์") สามารถใช้เพื่อสร้างอาร์เรย์ RAID 1 + 0 แบบคลาสสิก แต่ยัง (ตั้งแต่รุ่น 2.6.9) เป็นระดับเดียว [4] พร้อมกับส่วนขยายที่น่าสนใจ [ 5] เลย์เอาต์มาตรฐาน "ใกล้" ซึ่งแต่ละอันถูกทำซ้ำ n ครั้งในอาเรย์แถบ k-way เทียบเท่ากับการจัดเรียง RAID-10 มาตรฐาน แต่ไม่ต้องการเอ็นที่แบ่ง k ตัวอย่างเช่นโครงร่าง n2 บนไดรฟ์ 2, 3 และ 4 จะมีลักษณะดังนี้:

2 drives         3 drives            4 drives
--------         ----------        --------------
A1  A1           A1  A1  A2        A1  A1  A2  A2
A2  A2           A2  A3  A3        A3  A3  A4  A4
A3  A3           A4  A4  A5        A5  A5  A6  A6
A4  A4           A5  A6  A6        A7  A7  A8  A8
..  ..           ..  ..  ..        ..  ..  ..  ..

ตัวอย่าง 4 ไดรฟ์นั้นเหมือนกับอาร์เรย์ RAID-1 + 0 มาตรฐานในขณะที่ตัวอย่าง 3 ไดรฟ์นั้นเป็นการใช้งานซอฟต์แวร์ของ RAID-1E ตัวอย่าง 2 ไดรฟ์เทียบเท่า RAID 1 ไดร์เวอร์ยังรองรับเลย์เอาต์ "ไกล" ซึ่งไดรฟ์ทั้งหมดแบ่งออกเป็นส่วน f ชิ้นส่วนทั้งหมดซ้ำแล้วซ้ำอีกในแต่ละส่วน แต่ชดเชยด้วยอุปกรณ์เดียว ตัวอย่างเช่นรูปแบบ f2 ในอาร์เรย์ 2 และ 3 ไดรฟ์จะมีลักษณะดังนี้:

2 drives             3 drives
--------             --------------
A1  A2               A1   A2   A3
A3  A4               A4   A5   A6
A5  A6               A7   A8   A9
..  ..               ..   ..   ..
A2  A1               A3   A1   A2
A4  A3               A6   A4   A5
A6  A5               A9   A7   A8
..  ..               ..   ..   ..

สิ่งนี้ถูกออกแบบมาสำหรับการสตริปประสิทธิภาพของอาเรย์แบบมิเรอร์ การอ่านตามลำดับสามารถเป็นแถบได้เช่นเดียวกับใน RAID-0 การอ่านแบบสุ่มจะค่อนข้างเร็วกว่า (อาจ 10-20% เนื่องจากการใช้เซกเตอร์ด้านนอกที่เร็วกว่าของดิสก์และเวลาค้นหาเฉลี่ยน้อยกว่า) การจู่โจมที่มิร์เรอร์อื่น ๆ เลย์เอาต์ทำงานได้ดีสำหรับระบบที่การอ่านบ่อยครั้งกว่าที่เขียนซึ่งเป็นสถานการณ์ที่พบบ่อยมากในหลาย ๆ ระบบ 1 / f แรกของแต่ละไดรฟ์คืออาร์เรย์ RAID-0 มาตรฐาน ดังนั้นคุณจะได้รับประสิทธิภาพการสตริปในชุดที่ทำมิเรอร์เพียง 2 ไดรฟ์ ตัวเลือกทั้งใกล้และไกลสามารถนำมาใช้ได้ในเวลาเดียวกัน ชิ้นในแต่ละส่วนจะถูกชดเชยด้วยอุปกรณ์ n ตัวอย่างเช่นโครงร่าง n2 f2 จัดเก็บ 2 × 2 = 4 สำเนาของแต่ละส่วนดังนั้นต้องใช้ไดรฟ์อย่างน้อย 4 ตัว:

A1  A1  A2  A2        A1  A1  A2  A2  A3
A3  A3  A4  A4        A3  A4  A4  A5  A5
A5  A5  A6  A6        A6  A6  A7  A7  A8
A7  A7  A8  A8        A8  A9  A9  A10 A10
..  ..  ..  ..        ..  ..  ..  ..  ..
A2  A2  A1  A1        A2  A3  A1  A1  A2
A4  A4  A3  A3        A5  A5  A3  A4  A4
A6  A6  A5  A5        A7  A8  A6  A6  A7
A8  A8  A7  A7        A10 A10 A8  A9  A9
..  ..  ..  ..        ..  ..  ..  ..  ..

ในฐานะของ Linux 2.6.18 ไดรเวอร์ยังสนับสนุนโครงร่างออฟเซ็ตที่แถบซ้ำแต่ละครั้ง ตัวอย่างเช่นเค้าโครง o2 ในอาร์เรย์ 2 และ 3 ไดรฟ์มีการจัดวางเป็น:

2 drives       3 drives
--------       --------
A1  A2         A1  A2  A3
A2  A1         A3  A1  A2
A3  A4         A4  A5  A6
A4  A3         A6  A4  A5
A5  A6         A7  A8  A9
A6  A5         A9  A7  A8
..  ..         ..  ..  ..

หมายเหตุ: k คือจำนวนไดรฟ์ n #, f # และ o # เป็นพารามิเตอร์ในตัวเลือก mdadm --layout Linux ยังสามารถสร้างการกำหนดค่า RAID มาตรฐานอื่น ๆ โดยใช้ไดรเวอร์ md (0, 1, 4, 5, 6)


6

จากสิ่งที่ฉันอ่านอาเรย์f2 RAID10 เก็บอย่างน้อย 2 สำเนาของแต่ละบล็อกและพวกเขาเก็บห่างจากกัน

นี่คือส่วนที่เกี่ยวข้องจากหน้าคน

mdadm (8)

-p, --layout = ตัวเลือกนี้กำหนดรายละเอียดที่ละเอียดของเค้าโครงข้อมูลสำหรับ raid5 และ raid10 arrays
...
ในที่สุดตัวเลือกโครงร่างสำหรับ RAID10 เป็นหนึ่งใน 'n', 'o' หรือ 'p' ตามด้วยตัวอักษรขนาดเล็ก จำนวน. ค่าเริ่มต้นคือ 'n2'

สำเนา 'ใกล้' สัญญาณ n สำเนาหลายชุดของ data block หนึ่งชุดมีความคล้ายคลึงกันในอุปกรณ์ต่างกัน

o สำเนา 'offset' ของสัญญาณ แทนที่จะมีการทำสำเนาภายในแถบทั้งแถบจะถูกทำซ้ำ แต่ถูกหมุนโดยอุปกรณ์หนึ่งชิ้นดังนั้นบล็อกที่ซ้ำกันจะอยู่ในอุปกรณ์ที่แตกต่างกัน ดังนั้นสำเนาที่ตามมาของบล็อกอยู่ในไดรฟ์ถัดไป

สำเนาสัญญาณ ' ไกล ' (หลายสำเนามีออฟเซ็ตแตกต่างกันมาก) ดู md (4) สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ 'ใกล้' และ 'ไกล'

MD (4)

RAID10 มีการผสมผสานของ RAID1 และ RAID0 และบางครั้งเรียกว่า RAID1 + 0 datablock ทุกครั้งมีการทำซ้ำหลายครั้งและคอลเลกชันที่เป็นผลลัพธ์ของ datablocks จะกระจายไปทั่วไดรฟ์หลายตัว เมื่อกำหนดค่าอาร์เรย์ RAID10 จำเป็นต้องระบุจำนวนแบบจำลองของแต่ละบล็อคข้อมูลที่จำเป็น (โดยปกติจะเป็น 2) และแบบจำลองควรเป็น 'ใกล้', 'offset' หรือ 'ไกล' (โปรดทราบว่าเลย์เอาต์ 'ออฟเซ็ต' มีให้ตั้งแต่ 2.6.18 เท่านั้น)

เมื่อ ' ใกล้ ' replicas สำเนาหลายอันของก้อนที่กำหนดจะถูกวางเรียงกันตามแถบของอาร์เรย์ดังนั้นทั้งสองชุดของ datablock จะมีค่าเดียวกันในอุปกรณ์สองตัวที่อยู่ติดกัน

เมื่อมีการเลือกแบบจำลอง ' ไกล ' สำเนาหลายอันของก้อนที่กำหนดจะวางค่อนข้างห่างไกลกัน สำเนาแรกของบล็อคข้อมูลทั้งหมดจะถูกสตริปในส่วนแรก ๆ ของไดรฟ์ทั้งหมดใน RAID0 แบบแล้วสำเนาถัดไปของบล็อคทั้งหมดจะถูกสตริปในส่วนต่อมาของไดรฟ์ทั้งหมดตรวจสอบให้แน่ใจว่าสำเนาทั้งหมดของบล็อกที่กำหนด บนไดรฟ์ที่แตกต่างกัน

การจัดเรียง ' ไกล ' สามารถให้ประสิทธิภาพการอ่านตามลำดับเท่ากับอาร์เรย์ RAID0 แต่ด้วยต้นทุนของประสิทธิภาพการเขียนที่ลดลง

เมื่อเลือก 'ออฟเซ็ต' แบบจำลองสำเนาหลายอันของก้อนที่กำหนดจะถูกจัดวางบนไดรฟ์ต่อเนื่องและที่ออฟเซ็ตติดต่อกัน แต่ละแถบจะทำซ้ำอย่างมีประสิทธิภาพและสำเนาจะถูกชดเชยด้วยอุปกรณ์เดียว สิ่งนี้ควรให้ลักษณะการอ่านคล้ายกับ 'ไกล' หากใช้ขนาดก้อนใหญ่ที่เหมาะสม แต่ไม่มีการค้นหาการเขียนมากนัก

ควรสังเกตว่าจำนวนอุปกรณ์ในอาเรย์ RAID10 ไม่จำเป็นต้องมีจำนวนแบบจำลองของแต่ละบล็อคข้อมูลจำนวนมากต้องมีอุปกรณ์อย่างน้อยเท่ากับเรพลิคา

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


ดูเหมือนว่าออฟเซ็ตจะเป็นหนทางไป ...
xenoterracide

ฉันคิดว่าคำอธิบายที่ชัดเจนยิ่งขึ้นของวิกิพีเดียนั้นชัดเจนกว่า ... ดังนั้นฉันจึงโพสต์ไว้ที่นี่
xenoterracide

2

มันน่าสนใจและอธิบายได้ดี อย่างไรก็ตาม RAID1 ธรรมดายังมีคุณสมบัติอย่างน้อยในซอฟต์แวร์ Linux RAID เพื่อให้สามารถรักษาผู้อ่านหลายคนในแบบขนานที่ประสิทธิภาพที่ดีมาก:

ข้อมูลถูกอ่านจากอุปกรณ์ใด ๆ ไดรเวอร์พยายามแจกจ่ายคำขออ่านบนอุปกรณ์ทั้งหมดเพื่อเพิ่มประสิทธิภาพสูงสุด
[... ] ตามทฤษฎีแล้วการมี N-disk RAID1 จะอนุญาตให้เธรดที่เรียงตามลำดับ N อ่านจากดิสก์ทั้งหมด (ชาย 4 md ส่วน RAID1)

ดูเหมือน RAID10 ในเลย์เอาต์ที่ใกล้จะเหมาะสมกับพฤติกรรมนี้มากกว่า (เร่ง I / O แบบเธรดเดียวไม่เหมือนกับ RAID0 แต่ I / O แบบหลายเธรด) n2f2 ที่มี 4 ดิสก์คล้ายกับ RAID1 ที่มี 4 ดิสก์

เลย์เอาต์ n2 ที่มี 4 ดิสก์จะทำทั้งสองอย่าง: เพิ่มประสิทธิภาพการอ่านเป็นสองเท่าสำหรับเธรดเดี่ยวและเพิ่มประสิทธิภาพการอ่านสำหรับสองเธรดเป็นสองเท่า (หากมีการใช้งานตัวกำหนดเวลา Linux md RAID10 อย่างดีหนึ่งเธรดควรอ่านหนึ่งคู่ คู่อื่น ๆ )

ทั้งหมดขึ้นอยู่กับสิ่งที่คุณต้องการ! ฉันยังไม่ได้ทำการวัดประสิทธิภาพ

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