เหตุใด RAID 0 จึงไม่สามารถใช้พื้นที่ดิสก์ทั้งหมดในดิสก์ที่มีขนาดแตกต่างกันสองแผ่นได้


10

วิธีอ้างอิงบทความ Wikipedia เกี่ยวกับ RAID :

RAID 0 สามารถสร้างขึ้นได้ด้วยดิสก์ที่มีขนาดแตกต่างกัน แต่พื้นที่เก็บข้อมูลที่เพิ่มเข้าไปในอาร์เรย์โดยแต่ละดิสก์นั้น จำกัด อยู่ที่ขนาดของดิสก์ที่เล็กที่สุด ตัวอย่างเช่นหากดิสก์ 100 GB ถูกสไทรพ์พร้อมกับดิสก์ 350 GB ขนาดของอาร์เรย์จะเท่ากับ 200 GB (100 GB × 2)

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


ฉันไม่แน่ใจว่าสิ่งนี้จะทำงานได้กับการตรวจค้นฮาร์ดแวร์หรือการตรวจค้นซอฟต์แวร์เพื่อใช้ประโยชน์จากการตรวจค้น 0 ในขณะที่ใช้พื้นที่ว่างที่มีอยู่บนไดรฟ์สองขนาดที่แตกต่างกันเช่น 100GB และ 350GB คุณอาจลองสร้าง 3 พาร์ติชัน 100GB บนไดรฟ์ที่มีขนาดใหญ่กว่าและแบ่งพาร์ติชัน 100KB ในพาร์ติชันแรกและพาร์ติชัน 100GB 3 ตัวบนไดรฟ์ที่สอง RAID ระดับ 0 จะให้ 400 กิ๊กก์ให้คุณในขณะที่เพิ่มประสิทธิภาพการอ่าน / เขียน แต่อาจน้อยกว่าถ้าคุณไดรฟ์ 200GB สองตัว
Keith Reynolds

ปกติแล้วคุณไม่ต้องการทำสิ่งนี้เพื่อการสาธิตฉันตั้งค่า RAID0 โดยใช้แฟลชไดรฟ์ 1G และ 16G หนึ่งตัว ฉันสร้างพาร์ติชั่นเสริมสำหรับแต่ละดิสก์ จากนั้นฉันสร้างพาร์ติชั่น 981MB ในแต่ละไดร์ฟจนกว่ามันจะเต็ม แล้วฉันจะมาปล้นโดยใช้ 16 mdadm --create --verbose /dev/md0 --chunk=512 -l0 -n16 /dev/sdd5 /dev/sde5 /dev/sde6 /dev/sde7 /dev/sde8 /dev/sde9 /dev/sde10 /dev/sde11 /dev/sde12 /dev/sde13 /dev/sde14 /dev/sde15 /dev/sde16 /dev/sde17 /dev/sde18 /dev/sde19พาร์ทิชันที่มีคำสั่งบนลินุกซ์ ฉันลงเอยด้วยพื้นที่น้อยกว่าที่ฉันเพิ่งใช้ไดรฟ์ 16GB
Keith Reynolds

คำตอบ:


11

เหตุผลที่ขนาดถูก จำกัด ไว้ที่ขนาดของดิสก์ที่เล็กที่สุดนั้นเกี่ยวข้องกับความจริงที่ว่าสไทรพ์เขียน "สลับกัน" และต้องมีขนาดเท่ากัน

ในระบบดิสก์สองระบบสตริปคี่ทั้งหมดอยู่ในดิสก์เดียว เขียนสำรองระหว่างดิสก์คี่ / คู่ / คี่ / คู่ / ...

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


3

คุณสามารถใช้พื้นที่ที่เหลือ คุณสามารถสร้างโวลุ่มโดยใช้พื้นที่ที่เหลือหรือใช้เป็นส่วนหนึ่งของ RAID อื่น อย่างไรก็ตามการใช้พื้นที่พิเศษนี้จะลดประสิทธิภาพที่ RAID 0 มอบให้คุณเนื่องจากกระบวนการที่แตกต่างกันสองกระบวนการอาจพยายามเข้าถึงตัวควบคุมทางกายภาพและดิสก์เดียวกัน

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

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


นี่ไม่ได้อธิบายว่าทำไมมันไม่สามารถใช้ไดรฟ์ทั้งสองตัวในโวลุ่มเดียวได้ นอกจากนี้ส่วนโวลุ่มที่แยกจากกันจะไม่ทำให้เกิดปัญหาด้านประสิทธิภาพเลย - การควบคุม IO ดิสก์ในระดับต่ำจะถูกจัดการโดยการขัดจังหวะผ่าน disk.sys ดังนั้นการร้องขอการอ่าน / เขียนจะถูกไพพ์ไลน์ต่อไปและ Windows รองรับ IO ที่ทับซ้อนกัน
พหุนาม

ตกลงคุณอัปเดตยังไม่ได้อธิบาย ฉันคุ้นเคยกับวิธีการทำงานของการสตริป แต่ไม่ได้อธิบายว่าทำไมมันไม่สามารถไปที่โหมดดิสก์แผ่นเดียว (พร้อมประสิทธิภาพดิสก์แบบมาตรฐานเดียว) เมื่อดิสก์ขนาดเล็กเต็ม ขอบคุณสำหรับการกล่าวถึงปริมาณที่ครอบคลุมถึง - ซึ่งมีประโยชน์
พหุนาม

1
เพราะนั่นเป็นวิธีการทำงานของ RAID หากคุณต้องการจริงๆคุณสามารถ RAID 0 ได้แล้วสร้างโวลุ่มด้วยพื้นที่ว่างจากนั้นขยาย RAID และโวลุ่มเพิ่มเติม แต่ฉันไม่คิดว่าตัวควบคุม RAID ใด ๆ จะช่วยให้คุณทำเช่นนั้นได้ คุณสามารถทำได้ด้วยการรวมกันของฮาร์ดแวร์และซอฟต์แวร์ RAID
Keltari

1
-1 "นี่เป็นการเพิ่มประสิทธิภาพเนื่องจากไม่ต้องรอให้ดิสก์ก่อนหน้าอ่านหรือเขียนเสร็จ" อาจกล่าวได้ว่าฮาร์ดดิสก์สองขนาดที่แตกต่างกันใน RAID 0
Celeritas

2
@ โพลีโนเมียลนั่นไม่ใช่ RAID 0 คุณถามว่าทำไม RAID 0 ไม่สามารถใช้พื้นที่ดิสก์ทั้งหมดแล้วคุณตอบว่า "ทำไมมันถึงไม่ได้ ... " ไม่สามารถทำได้เพราะเป็น RAID 0 หากทำอย่างอื่นจะเป็นอย่างอื่น
David Schwartz

0

RAID เป็นมาตรฐานแบบหลอกที่อธิบายถึงวิธีการจัดเก็บข้อมูลบนอาเรย์ของดิสก์ มาตรฐานอธิบายวิธีการจัดเก็บข้อมูลได้สี่วิธี (ในทางเทคนิคมากกว่า แต่ส่วนใหญ่ไม่มีใครใส่ใจเรื่องอื่น ๆ ):

Raid-0: การสตริป แต่ละบล็อคข้อมูลจะถูกแบ่งระหว่างสมาชิกของอุปกรณ์ RAID แต่ละตัว ไม่มีความซ้ำซ้อนดังนั้นจึงเป็นเพียงอาร์เรย์ของดิสก์ราคาถูกเท่านั้นไม่ใช่อาร์เรย์ที่ซ้ำซ้อนของดิสก์ราคาถูก

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

Raid-5: Parity แต่ละบล็อคข้อมูลจะถูกแบ่งระหว่างสมาชิกของอุปกรณ์ RAID + ดิสก์หนึ่งตัวนั้นถูกใช้เพื่อพาริตี

Raid-6: Double Parity: เหมือนกับ Raid-5 แต่มีดิสก์สองพาริตี

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

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

เทคโนโลยีก่อนหน้าคือสิ่งต่างๆเช่นการทำแผนที่ปริมาณ (เช่น LVM หรือเทียบเท่ากับ windows) ซึ่งเป็นนามธรรมแนวคิดของการทำแผนที่บล็อกไปยังดิสก์ในระดับที่สูงขึ้น ด้วย LVM คุณสามารถขยายข้ามดิสก์ขยายพาร์ติชันมีพาร์ติชันที่ไม่ต่อเนื่องเป็นต้น การทำแผนที่ปริมาณไม่ใช่ RAID และแทนที่จะเพิ่มประสิทธิภาพเมื่อคุณเพิ่มดิสก์มันจะสุ่มเลือกที่จะเขียนไปยังดิสก์หนึ่งหรืออีกอันหนึ่งขึ้นอยู่กับว่าคุณอยู่ที่ไหนในระบบไฟล์ สิ่งนี้เรียกว่าสแปนและโดยทั่วไปแล้วจะดีกว่า RAID ถ้าคุณใช้ IOPS แทนประสิทธิภาพแบบดิบ


0
A RAID 0 can be created with disks of differing sizes, but the storage
space added to the array by each disk is limited to the size of the
smallest disk.

สิ่งนี้อาจเป็นจริงและจะเป็นจริงสำหรับการใช้งาน RAID0 ส่วนใหญ่ อย่างไรก็ตามไม่ใช่สำหรับทุกคน

มีเหตุผลสองประการในการใช้ RAID 0:

  1. ต่อดิสก์หลายแผ่นให้เป็นโวลุ่มเดียว
  2. ประสิทธิภาพ.

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

ในทางที่ไม่ใช้เทคนิค: คิดว่าดิสก์เป็นหนังสือสองเล่ม หนังสือเหล่านี้มีความเร็วในการเข้าถึง (อ่าน / เขียน) ที่ จำกัด ดังนั้นแทนที่จะเป็น 100 หน้าเราจึงจัดรูปแบบหนังสือสองเล่มใหม่ แต่จัดเรียงหน้าใหม่เพื่อให้ตัวเลขทั้งหมดถูกเขียนในหนังสือเล่มหนึ่งและตัวเลขคี่ทั้งหมดในหนังสือเล่มอื่น

ตอนนี้ 'R0 book' เล่มใหม่ของเรานั้นมีลักษณะเป็นเล่มเดียวที่มีจำนวนหน้าสองเท่าและเพิ่มความเร็วเป็นสองเท่า


ตัวเลือกที่ 1 สามารถทำได้ง่ายเหมือน 'กาวหนังสือย้อนหลัง' ในกรณีนี้คุณไม่มีความเร็วเพิ่มขึ้น แต่คุณสามารถกาวหนังสือที่มีจำนวนหน้าแตกต่างกัน ฉันดูเหมือนจะจำการใช้งาน 'RAID0' บางอย่างเช่นนั้นในช่วงปี 1990 แต่ไม่ใช่สิ่งที่คนส่วนใหญ่จะพิจารณาว่า 'RAID 0 ที่เหมาะสม'

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