ฉันควรรันฐานข้อมูลออกจากการกำหนดค่า RAID 5 หรือไม่


13

ฉันได้ยินมาว่าประสิทธิภาพการเขียนของ RAID 5 สามารถทำให้ตกใจได้ในบางครั้ง ในขณะที่ฉันต้องการความซ้ำซ้อนที่ให้ฉันไม่ต้องการเสียสละเวลาแทรก / ปรับปรุงฐานข้อมูลของฉัน

นี่คือสิ่งที่ฉันควรกังวลเกี่ยวกับและถ้าเป็นเช่นนั้นสิ่งที่จะเป็นคำแนะนำในการได้รับซ้ำซ้อนกับการเขียนที่ดี?


1
DB ไหน Oracle + RAID 5 เคยเป็น no-no ไม่แน่ใจว่านี่เป็นกรณีนี้หรือไม่
cagcowboy

ในตัวอย่างนี้ฐานข้อมูลทำงานบน MySql และ MSSQL
Scott Saad

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

คำตอบ:


23

แนะนำให้ใช้ RAID 10 เนื่องจาก I / O นั้นสุ่ม นี่คือตัวอย่าง การคำนวณนั้นง่ายขึ้นเล็กน้อย แต่เป็นตัวแทนที่น่ารัก

สมมติว่าคุณมีอาร์เรย์ 6 ไดรฟ์และไดรฟ์ของคุณสามารถทำ 100 I / Os ต่อวินาที (IOPS) หากคุณอ่าน 100% ทั้งหกไดรฟ์จะถูกใช้และคุณจะมีประมาณ 600 IOPS สำหรับทั้ง RAID 10 และ RAID 5

สถานการณ์กรณีที่เลวร้ายที่สุดคือการเขียน 100% ในสถานการณ์สมมตินั้นประสิทธิภาพของ RAID 10 จะถูกลดลงครึ่งหนึ่ง (เนื่องจากการเขียนแต่ละครั้งไปที่ไดรฟ์สองตัว) ดังนั้นจะได้รับ 300 IOPS RAID-5 จะแปลงการเขียนแต่ละรายการเป็นสองครั้งตามด้วยการเขียนสองครั้งดังนั้นมันจะได้รับ 1/4 ประสิทธิภาพหรือประมาณ 150 IOPS นั่นเป็นเพลงฮิตที่ค่อนข้างใหญ่

รูปแบบการอ่าน / เขียนที่แท้จริงของคุณจะอยู่ในระหว่างสุดขั้วทั้งสอง แต่นี่คือเหตุผลว่าทำไม RAID 10 จึงแนะนำให้ใช้กับฐานข้อมูล

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


22

ฐานข้อมูลการทำธุรกรรม

RAID-5ค่อนข้างช้าในการเขียนเนื่องจากคอนโทรลเลอร์จำเป็นต้องโหลดข้อมูลเพียงพอเพื่อคำนวณพาริตีใหม่บนการเขียน การดำเนินการเขียนจะต้องมีการทำงานของดิสก์อย่างน้อยสี่รายการ:

  • การอ่านในบล็อกพาริตี

  • การอ่านในบล็อกเก่า (สมมติว่ามันไม่ได้อยู่ในแคช) เพื่อ XOR ค่ากับ parity block

  • การเขียนบล็อกพาริตีใหม่ (บล็อกพาริตี้เก่าบล็อกข้อมูลเก่า XOR บล็อกข้อมูลใหม่ XOR)

  • กำลังเขียนบล็อคข้อมูลใหม่

หากระบบไม่ได้ใช้การแคชการเขียนกลับหมายความว่า opiation เหล่านี้ทั้งหมดอยู่ในเส้นทางที่สำคัญสำหรับการทำให้ I / O สมบูรณ์ บ่อยครั้งนี่เป็นกรณีที่มีการเขียนฐานข้อมูล - ในความเป็นจริงแล้ว Microsoft (ตัวอย่าง) มีโปรแกรมการรับรองสำหรับอุปกรณ์ SAN สำหรับใช้กับเซิร์ฟเวอร์ SQL ที่ต้องการให้ผู้ขายรับประกันพฤติกรรมนี้ บางครั้งอุปกรณ์ RAID-5 รุ่นเก่าไม่ได้ใช้การเพิ่มประสิทธิภาพนี้และต้องคำนวณความเท่าเทียมกันใหม่จากแถบทั้งหมด

RAID-10มีกระจกเงาสำหรับไดรฟ์ทุกตัวและไม่จำเป็นต้องอ่านข้อมูลเพิ่มเติมเพื่อคำนวณพาริตี ซึ่งหมายความว่าการเขียนต้องการ I / O ทางกายภาพน้อยกว่ามาก

RAID-50อยู่ที่ไหนสักแห่งที่อยู่ตรงกลางโดยที่โวลุ่มจะแบ่งออกเป็นโวลุ่ม RAID-5 หลายอัน บน RAID-50 ที่ทำจากกลุ่มสไทรพ์ในรูปแบบ 3 + 1 การเขียนจะสร้างที่การร้องขอดิสก์ I / O เพิ่มเติมสามตัว หากคุณรู้สึกว่าเอียงมากคุณสามารถดู RAID-5 และ RAID-10 เป็นกรณีพิเศษของ RAID-50 RAID-50 ส่วนใหญ่จะใช้เพื่อให้ไดรฟ์ข้อมูลขนาดใหญ่ทั่วดิสก์ทางกายภาพจำนวนมาก

รูปแบบพาริตี้อื่น ๆ เช่น RAID-6 (รูปแบบพาริตี้ที่มีดิสก์ซ้ำซ้อนสองชุดต่อชุด) ยังมีอยู่ดิสก์ที่ทันสมัยมีขนาดใหญ่พอที่ rebulding อาร์เรย์อาจใช้เวลานาน - นานพอที่จะเสี่ยงต่อความล้มเหลวของดิสก์ที่สองในระหว่าง สร้างใหม่ค่อนข้างสำคัญ RAID-6 ช่วยลดความเสี่ยงนี้โดยการมีดิสก์พาริตี้ที่สองซึ่งต้องใช้ดิสก์ที่ล้มเหลวสามครั้งเพื่อทำให้ข้อมูลสูญหาย เคล็ดลับที่คล้ายกับแบบแผน RAID-50 สามารถนำมาใช้เพื่อสร้างอาร์เรย์ RAID-60

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

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

ท่อน

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

ระบบที่อ่านยากและไฟล์เซิร์ฟเวอร์

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

ในอดีตการประหยัดค่าใช้จ่ายในดิสก์อาจมีความสำคัญ แต่ตอนนี้มีแนวโน้มที่จะมีปัญหาน้อยลง

แคชการเขียนกลับและ RAID-5

ใน SAN หรือคอนโทรลเลอร์ RAID ภายในที่มีแคชแบตเตอรี่สำรองคุณอาจสามารถเปิดใช้งานการแคช 'เขียนกลับ' แคชนี้เขียนและส่งคืนการควบคุมแอปพลิเคชัน I / O รายงานโดยคอนโทรลเลอร์เมื่อเสร็จสมบูรณ์ อย่างไรก็ตามไม่จำเป็นต้องเขียนข้อมูลลงดิสก์ทันที สิ่งอำนวยความสะดวกนี้ช่วยให้การดำเนินการอ่าน / เขียนของพาริตี้ RAID-5 นั้นได้รับการปรับให้เหมาะสมที่สุดและสามารถทำให้ประสิทธิภาพการเขียนลดลงสำหรับโวลุ่ม RAID-5x

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

สรุป

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

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


แคชการเขียนกลับ: หากคุณซื้อคอนโทรลเลอร์ RAID ด้วยแคชการเขียนสำรองข้อมูล "แบตเตอรี่สำรอง" ซึ่งดูเหมือนว่าแบตเตอรี่จะไม่รวมอยู่ด้วย ตรวจสอบให้แน่ใจว่าคุณได้รับซัพพลายเออร์ของคุณเพื่อรวมหนึ่ง
David Hicks

บางคนทำบางคนทำไม่ได้ ฉันมีของ Adaptec 2200 ค่อนข้างน้อยซึ่งไม่ได้มาพร้อมกับแบตเตอรี่ บางคนมาพร้อมกับพวกเขาตามมาตรฐาน
ConcOfOfTunbridgeWells

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

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

3

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

นอกจากนี้หากแอปพลิเคชันของคุณสำคัญต่อสถานะการออนไลน์ฉันอาจแนะนำให้มีเซิร์ฟเวอร์ฐานข้อมูลสองตัวที่มีการจำลองแบบแทน master-master หรือ hot spare หรืออะไรก็ตาม RAID ช่วยได้เฉพาะกับความล้มเหลวของดิสก์ แต่มีอีกมากที่อาจผิดพลาดในเซิร์ฟเวอร์ :)


3

ขึ้นอยู่กับว่าคุณเขียนไปมากแค่ไหน

หากเป็น "แอพพลิเคชั่นบนเว็บ" ที่มีน้ำหนักเบาคุณไม่น่าจะเห็นประสิทธิภาพการทำงานของ RAID5

หากคุณกำลังสร้างคลังข้อมูลแบบหลาย GB ด้วย ETL ขนาดใหญ่บัฟเฟอร์การเขียนบน RAID 5 จะล้นอย่างรวดเร็วและตรงไปที่ "ประสิทธิภาพการเขียนต่ำ" ของ RAID 5

การเขียน RAID5 ทุกครั้งจะทำให้เกิดการเขียนอย่างน้อย 3 ครั้ง (รวมถึงการคำนวณ CRC) เมื่อบัฟเฟอร์แล้วสิ่งนี้จะดีและรวดเร็ว (การระเบิดสั้น ๆ ของกิจกรรม - การอัปเดตและการแทรกระเบียนเดียว) หากนี่คือการเขียนที่ยั่งยืน (การแทรก / อัปเดตจำนวนมาก) จะมีการสังเกตเห็น

มันเป็นความสมดุลระหว่างประสิทธิภาพและพื้นที่ RAID 10 (มิเรอร์ของไดรฟ์สไทรพ์) ให้ทั้งประสิทธิภาพและความยืดหยุ่น แต่ลดความสามารถลง 50%

RAID5 ให้ความจุที่สูงขึ้นประสิทธิภาพการอ่านที่ดี แต่ประสิทธิภาพการเขียนที่แย่ (ใหญ่)


2

RAID 1 นั่นคือคำตอบสุดท้ายของฉัน

เหตุผล:

คู่ที่ทำมิเรอร์จะให้ความซ้ำซ้อนที่เพียงพอสำหรับดิสก์ที่ล้มเหลวและ RAID ยังคงทำงานกับดิสก์สุดท้าย

คู่ที่ทำมิเรอร์จะให้ประสิทธิภาพ I / O ที่สูงขึ้นสำหรับการอ่านถ้าคุณวางข้อมูลและดัชนีของคุณอย่างระมัดระวัง ... [คำใบ้: ใช้ปริมาณที่แยกต่างหากสำหรับข้อมูลและดัชนี] คุณสามารถเพิ่มประสิทธิภาพการทำงานได้มากขึ้นด้วยการพิมพ์สองด้านของคอนโทรลเลอร์


ทำไมไม่ RAID 1 + 0
Brian Knoblauch


2

คำตอบสั้น ๆ : ไม่

คำตอบยาว: นอกจากคุณจะมีฐานข้อมูลขนาดเล็กมากหรือมีความต้องการน้อยที่สุดไม่ การดึงข้อมูลเป็นหนักขึ้นอยู่กับดิสก์ I / O การดำเนินงานต่อวินาทีและค่าใช้จ่ายของสตริปจะกินค่าการเข้าถึงดิสก์ของคุณอยู่ตลอดเวลาโดยเฉพาะอย่างยิ่งกับแบบสอบถามวิ่งยาว ฐานข้อมูลส่วนใหญ่ทำงานบนการตั้งค่าสไตล์ RAID 10 หรือด้วยโวลุ่มเฉพาะที่เก็บพาร์ติชันของข้อมูล ใช่ RAID 10 จะเสียค่าใช้จ่ายในการเขียน แต่ประสิทธิภาพการอ่านของคุณ (ที่มีการติดตั้งขวา) จะไปทางขึ้น


1

คำแนะนำในการรับความซ้ำซ้อนกับประสิทธิภาพการเขียนที่ดีจะเป็นอย่างไร

แคชการเขียนกลับขนาดใหญ่ เพิ่ม RAM บนคอนโทรลเลอร์ RAID ฮาร์ดแวร์ของคุณหรือ RAM ที่มีให้สำหรับโซลูชัน RAID ซอฟต์แวร์ของคุณ (เช่นสำหรับ MDADM ของ Linux เพิ่ม RAM ของระบบ, ลูกโป่ง MDADM เพื่อใช้ RAM ระบบที่ไม่ได้ใช้เป็นแคชเขียน) คำแนะนำนี้มีไว้สำหรับค่าที่กำหนดเป็น "ใหญ่" - ถ้าคุณมักจะ (5% ของเวลา?) เขียนข้อมูลด้วยอัตราที่เร็วพอที่จะเติมแคชการเขียนไม่ว่าจะมีขนาดใหญ่เท่าใด


1

จริงๆแล้วมันเกี่ยวกับการแยกไฟล์ข้อมูลของคุณไฟล์บันทึกจากไฟล์ OS ของคุณ บันทึกการเขียนข้อมูลตามลำดับจะมีการอ่านแบบสุ่มจำนวนมากและการเขียนแบบสุ่มบางส่วน

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

Raid 1 - การมิเรอร์นั้นยอดเยี่ยมสำหรับไฟล์บันทึก Raid 10 นั้นดีสำหรับไฟล์ข้อมูลของคุณ นอกจากนี้ยังมีมูลค่าการดูที่การแยก TempbDB และการสำรองข้อมูลไปยังไดรฟ์ที่แยกต่างหาก การเพิ่มกลุ่มไฟล์เป็นอีกวิธีหนึ่งในการเพิ่มประสิทธิภาพ เมื่อพูดถึง SAN นี่ไม่ชัดเจนนัก ขึ้นอยู่กับว่าคุณกำลังสร้างการกำหนดค่าการจู่โจมเฉพาะสำหรับแต่ละ LUN หรืออาศัยจำนวนสปินเดิล


0

ด้วยจิตวิญญาณของบทความบล็อก StackOverflow เมื่อเร็ว ๆ นี้ที่บอกว่าเราไม่ควรนำเสนอคำตอบที่มีอยู่บนอินเทอร์เน็ตอีกครั้งฉันชี้ให้คุณเห็นสิ่งนี้

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


0

การรันฐานข้อมูลนอก RAID5 นั้นเป็นความผิดพลาด ฉันเห็นว่ามันทำในสองกรณีเท่านั้น - ฐานข้อมูลที่ได้รับการออกแบบมาอย่างดีซึ่งมีการอ่านมากโดยมีการเขียนเพียงไม่กี่ครั้งและฐานข้อมูลที่ "พื้นที่สิ้นเปลือง" เนื่องจาก RAID5 ไม่สามารถทำงานได้ทางการเมือง

RAID5 จะทำลายประสิทธิภาพการทำธุรกรรม

นอกจากนี้หากคุณกำลังพิจารณา RAID5 ดูว่าคุณสามารถทำให้ RAID6 ทำงานได้หรือไม่ ความน่าเชื่อถือทางทฤษฎีนั้นดีกว่ามากแม้ว่าความเชื่อถือในโลกแห่งความเป็นจริงมักจะแย่ลงเนื่องจากการใช้งานที่ยังไม่บรรลุนิติภาวะ

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