การย้าย ZFS Pool จาก RAIDZ1 ไปยัง RAIDZ2 จุดประกายการถอดถอนเรื่องความปลอดภัยในหมู่ผู้ชื่นชอบระบบจัดเก็บข้อมูล

ทีมชุมชน BigGo
การย้าย ZFS Pool จาก RAIDZ1 ไปยัง RAIDZ2 จุดประกายการถอดถอนเรื่องความปลอดภัยในหมู่ผู้ชื่นชอบระบบจัดเก็บข้อมูล

คู่มือโดยละเอียดเกี่ยวกับการย้าย storage pool ของ ZFS จากการตั้งค่า RAIDZ1 ไปยัง RAIDZ2 ได้สร้างการถกเถียงอย่างหนักในชุมชนระบบจัดเก็บข้อมูล โดยผู้ใช้งานมีการโต้เถียงกันเรื่องความปลอดภัยและความเป็นไปได้ของวิธีการย้ายข้อมูลต่างๆ

กระบวนการย้ายข้อมูลนี้เกี่ยวข้องกับการอัปเกรดจากระบบ RAIDZ1 แบบ single-parity (คล้ายกับ RAID5) ไปเป็นการตั้งค่า RAIDZ2 แบบ dual-parity (คล้ายกับ RAID6) ซึ่งสามารถรับมือกับการเสียหายของฮาร์ดดิสก์พร้อมกันได้สูงสุด 2 ตัว แทนที่จะเป็นเพียง 1 ตัว การอัปเกรดนี้ให้การป้องกันข้อมูลที่ดีกว่า แต่มาพร้อมกับความซับซ้อนที่เพิ่มขึ้นและความเสี่ยงที่อาจเกิดขึ้นระหว่างการเปลี่ยนแปลง

ตารางเปรียบเทียب RAIDZ

การกำหนดค่า จำนวนไดรฟ์ที่ต้องการ ไดรฟ์ Parity ความล้มเหลวของไดรฟ์ที่รองรับได้ ประสิทธิภาพการจัดเก็บ
RAIDZ1 อย่างน้อย 3 ตัว 1 ตัว ไดรฟ์เสีย 1 ตัว ~75% (3 ไดรฟ์)
RAIDZ2 อย่างน้อย 4 ตัว 2 ตัว ไดรฟ์เสีย 2 ตัว ~67% (4 ไดรฟ์)
RAIDZ3 อย่างน้อย 5 ตัว 3 ตัว ไดรฟ์เสีย 3 ตัว ~60% (5 ไดรฟ์)

วิธีการย้ายข้อมูลที่ถกเถียงกัน

แนวทางเดิมที่อธิบายไว้เกี่ยวข้องกับการทำให้ RAIDZ1 pool เสื่อมสภาพชั่วคราวโดยการถอดดิสก์หนึ่งตัวออกเพื่อสร้าง RAIDZ2 pool เริ่มต้น วิธีการนี้ช่วยให้ผู้ใช้สามารถย้ายข้อมูล 24TB ได้โดยไม่ต้องใช้พื้นที่จัดเก็บเพิ่มเติมมากมาย อย่างไรก็ตาม เทคนิคนี้ได้รับการวิพากษ์วิจารณ์อย่างรุนแรงจากสมาชิกในชุมชนที่โต้แย้งว่าสร้างช่วงเวลาความเสี่ยงที่ยอมรับไม่ได้

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

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

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

แนวทางทางเลือกที่ปลอดภัยกว่า

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

กลยุทธ์อื่นที่แนะนำคือการสร้าง RAIDZ2 pool ใหม่ด้วย fake disk ชั่วคราว คัดลอกข้อมูลในขณะที่ pool ทั้งสองยังคงทำงานอยู่ จากนั้นจึงเปลี่ยน fake disk ด้วยไดรฟ์จริงจาก pool เดิมหลังจากการย้ายข้อมูลสำเร็จแล้วเท่านั้น แนวทางนี้ให้การสำรองข้อมูลแบบคู่ระหว่างกระบวนการย้ายส่วนใหญ่

การเปรียบเทียบวิธีการ Migration

วิธี Degraded Migration

  • ต้นทุน: ไม่จำเป็นต้องมีไดรฟ์เพิ่มเติม
  • ความเสี่ยง: ไม่มีการสำรองข้อมูลระหว่าง migration
  • เวลา: ช่วงเวลา migration ประมาณ 6-8 ชั่วโมง
  • ความปลอดภัยของข้อมูล: พึ่งพาการสำรองข้อมูลเท่านั้น

วิธีการใช้ไดรฟ์เพิ่มเติม

  • ต้นทุน: ประมาณ 120 ดอลลาร์ สหรัฐ สำหรับไดรฟ์ 8TB
  • ความเสี่ยง: รักษาการสำรองข้อมูลแบบเต็มรูปแบบ
  • เวลา: ระยะเวลา migration ใกล้เคียงกัน
  • ความปลอดภัยของข้อมูล: ไม่มีสถานะ degraded

วิธี Dual Pool

  • ต้นทุน: ไดรฟ์เพิ่มเติมสำหรับ pool ใหม่
  • ความเสี่ยง: การสำรองข้อมูลแบบคู่ในช่วงส่วนใหญ่ของกระบวนการ
  • เวลา: ใช้เวลานานกว่าแต่ปลอดภัยกว่าในการ migration
  • ความปลอดภัยของข้อมูล: ระดับการป้องกันสูงสุด

ข้อพิจารณาด้านประสิทธิภาพและการปฏิบัติจริง

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

การใช้งาน ZFS สมัยใหม่มีข้อได้เปรียบเหนือ hardware RAID controller แบบดั้งเดิม ระบบให้ความสำคัญกับการดำเนินงานของผู้ใช้มากกว่ากระบวนการสร้างใหม่ และต้องการเพียงการกู้คืน data block จริงแทนที่จะสแกนพื้นผิวไดรฟ์ทั้งหมด การสร้างใหม่ทั่วไปของ RAIDZ2 pool ที่เต็ม 75% ด้วยไดรฟ์ 10x14TB จะเสร็จสิ้นในประมาณ 18 ชั่วโมง โดยมีอัตราความเร็วเฉลี่ย 160MB/s

การประเมินความเสี่ยงและแนวปฏิบัติที่ดีที่สุด

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

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

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

อ้างอิง: Migrating a ZFS pool from RAIDZ1 to RAIDZ2