ให้ Btrfs ทำทุกอย่าง
สำหรับสิ่งหนึ่ง Btrfs มีรหัสมิเรอร์แบบบูรณาการของตัวเองซึ่งฉลาดกว่า madm
แน่นอนหากดิสก์ล้มเหลวอย่างหนักในคู่มิเรอร์ใน madm raid10 คุณสามารถแทนที่ดิสก์ที่ไม่ดีและดำเนินชีวิตของคุณต่อไปได้ (แม้ว่าจะเป็นคำสั่งชุดคำสั่งเชลล์ที่ซับซ้อน) ปัญหาคือถ้าดิสก์ของคุณล้มเหลวเล็กน้อยอย่างนุ่มนวล: หากบล็อกสองสามชิ้นให้บิตผิดกลับแทนที่จะให้รหัสข้อผิดพลาดที่เหมาะสมสำหรับบล็อกที่ไม่ดีจากนั้นเมื่ออ่านข้อมูลคุณจะสุ่มรับข้อมูลที่ไม่ดี Btrfs ฉลาดกว่านั้นมันจะตรวจสอบข้อมูลทุกบิต บอกตามตรงฉันไม่รู้ว่าถูกต้องหรือไม่ที่จะพูดว่า "ทุกโหนด BTree" หรือ "ทุกบล็อค" แต่ประเด็นก็คือเมื่อมันอ่านข้อมูลบางส่วนจากอาร์เรย์ที่ทำมิเรอร์แล้วมันจะตรวจสอบการตรวจสอบก่อนส่งคืนให้คุณ กระบวนการของผู้ใช้ หากการตรวจสอบไม่ตรงกันมันจะตรวจสอบมิเรอร์อื่นในอาร์เรย์ก่อนและถ้านั่นให้การตรวจสอบที่ถูกต้อง
วิกิ Btrfs ระบุคำถามของคุณโดยเฉพาะ :
หาก Btrfs ต้องพึ่งพาอุปกรณ์ทำแผนที่หรือ MD สำหรับการทำมิรเรอร์จะไม่สามารถแก้ไขการตรวจสอบความล้มเหลวด้วยการตรวจสอบสำเนาที่ทำมิเรอร์ เลเยอร์ที่ต่ำกว่าไม่รู้จัก checksum หรือ granularity ของบล็อกของระบบไฟล์ดังนั้นพวกเขาจึงไม่สามารถตรวจสอบข้อมูลที่พวกเขากลับมาได้
ในที่สุดแม้ว่าจะไม่มีข้อได้เปรียบมากมายเวิร์กโฟลว์บรรทัดคำสั่งสำหรับจัดการกับอุปกรณ์ Btrfs ที่ถูกลบหรือเพิ่มนั้นง่ายมาก ฉันไม่แน่ใจด้วยซ้ำว่าฉันจะได้รับคำสั่งเชลล์ของระบบไฟล์ที่ลดระดับลงแล้วติดตั้งแล้ว - ของคุณถูกต้อง แต่สำหรับ Btrfs มันมีการบันทึกไว้อย่างชัดเจนในหน้าอุปกรณ์หลาย ๆ หน้าเป็น:
mount -o degraded /dev/sdb /mnt
btrfs device delete missing /mnt
ณ จุดนี้หากคุณมีพื้นที่เพียงพอในดิสก์ที่เหลืออยู่คุณสามารถทำได้btrfs rebalance
และทำได้เสมอ ไม่จำเป็นต้องเปลี่ยนกระจกเพราะคุณต้องทำกับ madm! และถ้าคุณต้องการแทนที่คุณสามารถทำได้btrfs device add
ก่อน