RAID0 แทนที่จะเป็น RAID1 หรือ 5 นี่มันบ้าหรือเปล่า


14

ฉันกำลังพิจารณาใช้การตั้งค่า RAID0 สำหรับหนึ่งในกลุ่มเซิร์ฟเวอร์ SQL ของเรา ฉันจะร่างสถานการณ์และกำลังหาสาเหตุที่อาจเป็นความคิดที่ไม่ดี นอกจากนี้ถ้าคนที่คุณใช้เคสเอกสารสีขาวหรือเอกสารอื่น ๆ คุณสามารถชี้ให้ฉันเห็นในหัวข้อนี้ได้

เรามี 3 เซิร์ฟเวอร์ใน 2 ดาต้าเซ็นเตอร์ซึ่งเป็นส่วนหนึ่งของคลัสเตอร์ SQL พวกเขากำลังเรียกใช้ SQL Server ทั้งหมดในกลุ่มความพร้อมใช้งาน ตัวหลักมีแบบจำลองอยู่ข้าง ๆ และอีกตัวในดาต้าเซ็นเตอร์อื่น พวกเขากำลังเรียกใช้การจำลองแบบซิงโครนัสกับ failover อัตโนมัติ ไดรฟ์ทั้งหมดเป็น SSD ระดับองค์กร พวกเขาจะใช้ SQL Server 2017 หรือ 2019

ฉันคิดว่ามันจะมีประโยชน์หลายอย่างในการใช้งาน RAID0 ในอาร์เรย์มากกว่าวิธีอื่น ๆ หากมีข้อเสียจริง ข้อเสียเชิงลบที่ฉันเห็นอยู่ในขณะนี้คือการขาดความซ้ำซ้อนบนเซิร์ฟเวอร์หลักดังนั้นจึงไม่สามารถเพิ่มได้ ในฐานะที่เป็นข้อดี:

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

  2. มันลดโอกาสของความล้มเหลวโดยรวมต่อกำลังการผลิต TB เนื่องจากเราไม่ต้องการพาริตีหรือมิรเรอร์ไดร์ฟเราจึงลดจำนวนไดรฟ์ต่ออาเรย์ เมื่อมีไดรฟ์น้อยลงโอกาสในการเกิดความล้มเหลวก็จะน้อยลง

  3. มันถูกกว่า. ต้องการไดรฟ์น้อยลงสำหรับความจุที่ต้องการของเราลดค่าใช้จ่ายอย่างเห็นได้ชัด

ฉันรู้ว่านี่ไม่ใช่ความคิดทางธุรกิจทั่วไป แต่มีบางสิ่งที่ฉันไม่ได้พิจารณาใช่ไหม ฉันจะรักการป้อนข้อมูลใด ๆ ทั้งโปรหรือต่อต้าน

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

ระบบปฏิบัติการอยู่ในไดรฟ์ที่ทำมิรเรอร์แยกต่างหากดังนั้นเซิร์ฟเวอร์ควรจะอยู่ต่อ หนึ่งในไดรฟ์เหล่านั้นสามารถเปลี่ยนได้และทำมิรเรอร์อีกครั้ง มันมีขนาดเล็กและไม่มีไฟล์ฐานข้อมูลอื่นใดนอกจากฐานข้อมูลของมัน ฉันนึกภาพไม่ออกว่าใช้เวลานานกว่านาที หากหนึ่งในอาร์เรย์ของข้อมูลล้มเหลวเราจะเปลี่ยนไดรฟ์สร้างอาร์เรย์เรียกคืนและซิงค์กับ AG อีกครั้ง จากประสบการณ์ส่วนตัวของฉันการกู้คืนเร็วกว่าไดรฟ์ RAID5 ที่สร้างใหม่ ฉันไม่เคยมีความล้มเหลวของ RAID1 ดังนั้นฉันจึงไม่รู้ว่าการสร้างใหม่นั้นจะเร็วขึ้นหรือไม่ การคืนค่าจะมาจากการสำรองข้อมูลและย้อนไปข้างหน้าเพื่อให้ตรงกับหลักดังนั้นการเพิ่มโหลดบนเซิร์ฟเวอร์หลักควรจะน้อยมากเพียงการซิงค์บันทึกสองสามนาทีสุดท้ายกับเรพลิกาที่กู้คืนมา


1
การอภิปรายเกี่ยวกับคำถามนี้ได้รับการย้ายไปแชท
พอลไวท์ 9

คำตอบ:


19

มีสิ่งสำคัญอย่างหนึ่งที่ฉันคิดว่าคุณขาดการประเมิน:

คุณวางแผนจะกู้คืนอย่างไร?

เมื่อ raid5 หายไปไดรฟ์จะทำงานในสถานะเสื่อมโทรมจนกว่าจะกู้คืนโดยอัตโนมัติ (อย่างน้อยถ้าคุณมีมือร้อน)

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

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

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


16

ควรพิจารณาถึงความล้มเหลวของไดรฟ์ด้วย

ลองนึกภาพหนึ่งวินาทีว่าไดรฟ์ของเราในแต่ละวันมีอัตราความล้มเหลว 1/1000 ลองนึกภาพว่าเรามีไดรฟ์ 20 ตัวในสามอาร์เรย์ของเรา

โอกาสของความล้มเหลวของไดรฟ์เดียวในอาเรย์จึงเท่ากับ 20/1000 = 1/50 โอกาสที่ไดรฟ์สองตัวที่ล้มเหลวภายในอาเรย์เดียวกันนั้นมีบางอย่างใกล้เคียงกับ 20/1000 * 20/1000 / 2 = 200/1000000 = 1/5000 ดังนั้นการเปลี่ยนจาก RAID 0 เป็น RAID 5 เรามีโอกาสน้อยที่จะฆ่าหนึ่งในอาร์เรย์ของเรา

ดังนั้นเราสามารถใช้เวลานี้ต่อไป - ถ้าโอกาสของการล้มเหลวของอาร์เรย์ในหนึ่งวันคือ 1/50 ดังนั้นโอกาสของการล้มเหลวสองอาร์เรย์ในหนึ่งวันคือ 1 / (50 * 50) = 1/2500 โอกาสของความล้มเหลวของอาร์เรย์ RAID 0 สองชุดที่เหมือนกันนั้นสองครั้งเท่ากับความล้มเหลวของอาร์เรย์ RAID 5 หนึ่งชุดโดยสมมติว่าดิสก์ชุดเดียวกัน การเพิ่มโอกาสในการล้มเหลวของเอ็กซ์โปเนนเชียลควรเกี่ยวข้องกับคุณเพราะมันจะเพิ่มโอกาสที่อาร์เรย์มากกว่าหนึ่งรายการล้มเหลวในครั้งเดียว

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

รายการอื่นที่ควรทราบคือโอกาสที่เกิดความล้มเหลวของไดรฟ์สามารถเพิ่มขึ้นได้โดยใช้ SSD ที่ผลิตภายในชุดเดียวกัน (โรงงานเดียวกันในเวลาเดียวกัน) หากคุณไม่ระวังคุณสามารถลงเอยด้วย 3 โหนดทั้งหมดที่ลงไปเนื่องจากปัญหานี้

คำเตือน:การคำนวณข้างต้นได้ง่ายขึ้น - พวกเขายังค่อนข้างแม่นยำ


การสนทนาในคำตอบนี้ได้รับการย้ายไปแชท
Paul White 9

13

ฉันคิดว่ามันจะมีประโยชน์หลายอย่างในการใช้งาน RAID0 ในอาร์เรย์มากกว่าวิธีอื่น ๆ หากมีข้อเสียจริง

นี่คือการกำหนดค่าทั่วไปที่ค่อนข้างสวยเมื่อเรียกใช้ AGs กับไดรฟ์จัดเก็บข้อมูลภายใน / ต่อพ่วงโดยตรง โดยเฉพาะอย่างยิ่งกับ NVMe หรืออุปกรณ์เก็บข้อมูลแฟลชแบบ PCI อื่น ๆ

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


2

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

หมายเหตุเกี่ยวกับปัญหาด้านประสิทธิภาพ: หากคุณใช้ Enterprise Class SSD การคำนวณ RAID ของคุณนั้นเป็นคอขวดที่คุณต้องปรับปรุงหรือไม่

ใช้มืออาชีพ 3 คนของคุณฉันไม่คิดว่าคุณจะคิดให้ดีพอ:

  1. SQL จะล้มเหลวทันทีหรือไม่ สิ่งที่จะทำให้เกิดความล้มเหลวในการเรียกโดยอัตโนมัติ? เซิร์ฟเวอร์จะใช้งานออฟไลน์ทันทีที่มีคนเจอหรือไม่ เกิดอะไรขึ้นถ้ามันเป็นเซกเตอร์เสียบนดิสก์เดียว ถ้า SQL ไม่ตีเซกเตอร์เสียมันจะล้มเหลวหรือไม่ ฉันไม่แน่ใจ 100%

  2. มันลดโอกาสของความล้มเหลวโดยรวมต่อกำลังการผลิต TB หรือไม่ ความคิดของคุณดูเหมือนจะเป็นดิสก์ที่น้อยลงหมายถึงจุดล้มเหลวน้อยลง แต่ฉันไม่คิดว่าถูกต้อง อัตราต่อรองของความล้มเหลว 1 ดิสก์ยังคงเหมือนเดิมหากคุณมี 1 ดิสก์หรือ 10 ดิสก์ (หรือ 100 ดิสก์) แต่ด้วย RAID 0 ก็หมายความว่ามันเป็นความล้มเหลวที่รุนแรง

  3. SSD ตัวใดตัวหนึ่งราคาแพงเกินกว่าที่คุณจะได้รับ RAID5 หรือไม่? ฉันได้รับวิธีที่ RAID1 หรือ 1 + 0 สามารถเพิ่มงบประมาณได้ แต่มีดิสก์เพิ่มเติม 1 แผ่น

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

คำถามสุดท้ายของฉันจะอยู่ที่ประมาณเวลาสร้างใหม่ที่คุณพูดถึงจะเร็วกว่า คุณแน่ใจ 100% ว่าจะเร็วกว่านี้ไหม เร็วเท่าไหร่

การตั้งค่าเซิร์ฟเวอร์ Brent Ozarยังคงเป็นคู่มือของฉันสำหรับการตั้งค่าอินสแตนซ์ SQL ใหม่ จุดแรกของคู่มือนี้คือการตรวจสอบว่าคุณไม่ได้ใช้ RAID0 สำหรับไดรฟ์ใด ๆ

==== ==== UPDATE

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

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

พวกเขาเป็นกรณีขอบ แต่อาจจะ catestrophic ขึ้นอยู่กับสิ่งที่หายไปในช่วงเวลานั้น


เพิ่มไปยังจุดของคุณใน # 3 ถ้าค่าใช้จ่ายของดิสก์เสริม (หรือสาม) เป็นสิ่งที่ทำให้หรือแบ่งงบประมาณแล้วเงินจะมาแทนที่ที่ไหนเมื่อดิสก์ล้มเหลว?
CVn

@Greg ความจริงที่ว่าฉันอาจไม่ได้คิดทุกอย่างผ่านคือเหตุผลที่ฉันถามคำถามนี้ ฉันเดาว่าฉันจะบอกว่าฉันเห็นว่าฉันสามารถปรับปรุงประสิทธิภาพโดยรวมได้ที่ไหน เพื่อตอบคำถามของคุณ: 1. ใช่ ความล้มเหลวของอาเรย์จะทำให้ AG ล้มเหลวไปยังโหนดอื่นทันที เซกเตอร์ที่ไม่ดีขึ้นอยู่กับว่าเป็นข้อผิดพลาดบิตที่กู้คืนได้หรือไม่ แต่สิ่งนี้จะทำให้เกิดความล้มเหลวไม่ว่าดิสก์จะอยู่ในรูปแบบ RAID หรือไม่ 2. ดิสก์ที่น้อยลงจะลดโอกาสเกิดความล้มเหลวในอาเรย์ RAID0 จะเพิ่มโอกาสของความล้มเหลวของอาร์เรย์ 3. ไม่ประหยัดเงินเป็นพิเศษ
zsqlman

@Greg คำถามติดตามที่ดีและบางอย่างที่ฉันยังไม่ได้เนื้อออกเต็ม มีหลายระดับของการทำซ้ำซ้อนกับเซิร์ฟเวอร์ที่เพิ่มเป็นสามเท่า การกู้คืนฐานข้อมูลทั้งหมดสามารถเขียนสคริปต์ได้อย่างง่ายดาย หากโหนดล้มเหลวเราจะเตะแบบจำลองนั้นออกจาก AG เพื่อลบปัญหา Tlog backlog และแม้ว่าเราจะไม่ลบโหนดเราก็มีพื้นที่เหลือเฟือที่จะมีการเติบโตของบันทึกไม่กี่วัน เกี่ยวกับเวลาในการกู้คืนฉันมีจุดข้อมูลเพียงจุดเดียวและไม่มีฮาร์ดแวร์สำรองให้ทดสอบ เรามีความล้มเหลว 1 RAID เท่านั้นและใช้เวลาในการกู้คืนมากกว่า 2 วันและเราสามารถกู้คืนได้ภายใน 8 ชั่วโมง
zsqlman

@zsqlman - ฉันได้เพิ่มช่วงเวลาพิเศษของเวลาที่คุณอาจสูญเสียข้อมูลเนื่องจากคุณไม่มี RAID นอกจากนี้ตรรกะที่คุณใช้กับความล้มเหลวที่ลดลงฉันคิดว่ายังมีข้อบกพร่อง อัตราต่อรองของดิสก์หนึ่งล้มเหลวโดยมีดิสก์น้อยลงใน RAID เหมือนกับดิสก์ 1 ดิสก์ที่มีความซ้ำซ้อนใน RAID การลดจำนวนดิสก์ไม่ได้ช่วยลดความเสี่ยงของดิสก์หนึ่ง ๆ ที่ล้มเหลว - ดิสก์แต่ละแผ่นมีแนวโน้มที่จะล้มเหลวเช่นเดียวกับดิสก์อื่น ๆ
เกร็ก

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