ฉันมีปัญหาเดียวกันที่คนส่วนใหญ่มี: วิธีการสร้างโซลูชันการจัดเก็บข้อมูลส่วนบุคคลที่เชื่อถือได้ด้วยความจริงที่ว่า:
- ฮาร์ดไดรฟ์ล้มเหลวด้วยระเบียบที่น่ากลัว การสูญเสียไฟล์ไม่สามารถยอมรับได้
- ฉันจะซื้อ HDD ใหม่เป็นครั้งคราว ราคา / GB ที่ดีที่สุดย่อมแตกต่างจากการซื้อ HDD ครั้งล่าสุด
2 หมายความว่าเมื่อเวลาผ่านไปฉันมีคอลเลกชันของดิสก์ที่ต่างกัน ฉันต้องการใช้มันทั้งหมดและโดยทั่วไปแล้วดิสก์ที่ล้มเหลวจะถูกแทนที่ด้วยดิสก์ขนาดใหญ่กว่า
- ความสมบูรณ์ของข้อมูลและความน่าเชื่อถือมีความสำคัญต่อฉันมากกว่าความเร็ว
ดังนั้นหลังจากที่ต่อสู้กับปัญหานี้มาสองสามวัน (และในหัวของฉันมาหลายปี) ฉันเสนอวิธีแก้ไขปัญหาต่อไปนี้ ฉันจะอธิบายวิธีการแก้ปัญหาที่ฉันได้ทดสอบบนพื้นฐานของ linux ZFS ซึ่งมีอยู่ใน Ubuntu PPAแต่สามารถใช้ LVM, MD และ btrfs เพื่อให้บรรลุเป้าหมายเดียวกัน สำหรับสิ่งนี้ฉันจะใช้ RAID1 (ZFS mirror vdevs)
- เมื่อกำหนดชุดไดรฟ์ของคุณให้จัดกลุ่มดิสก์เหล่านั้นเป็นสองชุดเช่นความจุของแต่ละชุดจะใกล้เคียงกับชุดอื่นมากที่สุด
- แบ่งพาร์ติชันดิสก์ที่มีขนาดใหญ่กว่าซึ่งมีพาร์ติชันที่มีขนาดเท่ากันกับหนึ่งในดิสก์ที่มีขนาดเล็กกว่าในกลุ่มอื่น
- สร้างมิเรอร์ vdevs เพื่อให้แต่ละดิสก์มีมิเรอร์บนดิสก์อื่น
ตัวอย่างเช่นลองพิจารณาชุดดิสก์ของไดรฟ์ 2TB ใหม่ไดรฟ์ 750GB ที่เก่ากว่าไดรฟ์ 400GB 2 อันที่เก่ากว่าและไดรฟ์ 500GB ที่เก่ากว่าหนึ่งตัว การแบ่งพาร์ติชั่นที่มิร์เรอร์ที่เหมาะสมมีพื้นที่ใช้งาน 2TB และอธิบายไว้ในแผนภาพต่อไปนี้โดยที่ ':' แยกพาร์ติชั่นและ '|' แยกดิสก์:
+------------------------------------------------------------------+
| 2TB (sda1) : (sda2) : (sda3) : (sda4) |
+------------------------------------------------------------------+--+
| 750 GB (sdb) | 400 GB (sdc) | 400 GB (sdd) | 500 GB (sde1) :XX|
+---------------------------------------------------------------------+
สร้าง zpool ของคุณเป็น
zpool create archive mirror /dev/sda1 /dev/sdb mirror /dev/sda2 /dev/sdc mirror /dev/sda3 /dev/sdd mirror /dev/sda4 /dev/sde1
สิ่งนี้สร้าง vdevs ที่มิร์เรอร์ 4 อัน หากดิสก์ตัวใดตัวหนึ่งล้มเหลวสามารถเปลี่ยนได้ (ด้วยดิสก์ขนาดใดก็ได้) และแบ่งพาร์ติชันเพื่อสร้างพาร์ติชันที่หายไปใหม่ มันเป็นสิ่งสำคัญที่ ZFS vdevs สามารถเพิ่มไปยังสระว่ายน้ำแต่ไม่ได้เอาออก ดังนั้นหากเป็นไปได้เมื่อมีการซื้อไดรฟ์ใหม่คุณต้องการจัดเรียง vdev ที่มีอยู่ใหม่ สมมติว่าการซื้อครั้งต่อไปคือไดรฟ์ 3TB การกำหนดค่าที่ดีที่สุดของคุณคือ 3.5TB ที่ใช้งานได้ตามที่อธิบายไว้ในแผนภาพต่อไปนี้ ตอนนี้เป็น 5 vdev สิ่งนี้สามารถทำได้โดยการแบ่งพาร์ติชันที่เหมาะสมและล้มเหลวและแบ่งพาร์ติชันอย่างต่อเนื่อง
+--------------------------------------------------------------+-------------+
| 3 TB (sdf1) : (sdf2) : (sdf3) : (sdf4) | 500GB (sde) |
+--------------------------------------------------------------+-------------+-+
| 2TB (sda1) | 400GB (sdb) | 400GB (sdc) | 750GB (sdd1) : (sdd2) :X|
+------------------------------------------------------------------------------+
การดูแลรักษาการจับคู่ของไดรฟ์ที่ทำมิเรอร์นี้สามารถทำได้ด้วย LVM หรือด้วย MD RAID แนวคิดที่จะทำให้แน่ใจว่าแต่ละไดรฟ์นั้นมีไดรฟ์มิรเรอร์หรือพาร์ริชั่นอยู่เสมอ เนื่องจากทุกอย่างถูกสะท้อนเรามีอิสระที่จะล้มเหลวของไดรฟ์และจัดเรียงพาร์ติชันใหม่เมื่อมีการเพิ่มหรือลบไดรฟ์ การใช้ LVM หรือ MD เป็นไปได้ที่จะลบไดรฟ์และลดขนาดอาร์เรย์ถ้าต้องการด้วยค่าใช้จ่ายของเครื่องมือการกู้คืนที่ซับซ้อนน้อยกว่าใน ZFS เทียบกับ BTRFS
ความคิดเห็นใด ๆ เกี่ยวกับขั้นตอนนี้? สคริปต์ที่ดีสามารถจัดการกับการจัดสรรแบบไม่สูญเสียและจัดเรียงไดรฟ์ใหม่ได้ ความคิดเห็นใด ๆ เกี่ยวกับ LVM กับ MD เทียบกับ ZFS? ความคิดเห็นใด ๆ เกี่ยวกับประสิทธิภาพของอาร์เรย์ที่มีการแบ่งพาร์ติชันแปลก ๆ ? การจัดเรียงข้อมูลข้ามพาร์ติชั่นหลาย ๆ อันบนไดรฟ์เดียวกันจะทำให้เกิดการค้นหาส่วนหัวที่มากเกินไปและความล้มเหลวก่อนหน้าได้หรือไม่?
ผู้พัฒนา BTRFS: ทุกคนต้องการสิ่งนี้และ LVM หรือ MD นั้นไม่จำเป็นทางเทคนิค (และในความเห็นของฉันถือว่าเหมาะสมที่สุด) ทำให้ง่ายต่อการบำรุงรักษาอาเรย์ที่แตกต่างกันซ้ำซ้อนจะเป็นคุณสมบัตินักฆ่าสำหรับ btrfs มันแฮ็คกับ LVM / MD / ZFS เหมือนเดิม การย่อ resliver / resync ให้น้อยที่สุดนั้นเป็นที่ต้องการอย่างมาก
ใช่นี่เป็น Drobo ของคนจน ไม่ควรใช้ฮาร์ดแวร์เฉพาะสำหรับสิ่งนั้น ...