สามารถเปลี่ยนไดร์ฟ Btrfs ที่ล้มเหลวใน RAID-1 ได้หรือไม่


15

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

  1. สมมติว่าฉันสร้างระบบไฟล์ btrfs ใหม่โดยใช้คำสั่ง

    mkfs.btrfs -d raid1 /dev/sdb /dev/sdc
    
  2. สมมติว่าวันหนึ่ง/dev/sdcล้มเหลว มีความเป็นไปได้สองอย่าง: มันสามารถล้มเหลวได้ค่อย ๆ แสดงข้อผิดพลาดของ SMART - ในสถานการณ์นี้ฉันสามารถเพิ่มอุปกรณ์ใหม่ด้วยbtrfs device add /dev/sde /mnt; btrfs filesystem balance /mntแล้วเอาอุปกรณ์เก่าbtrfs device delete /dev/sdc /mntออก

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

    umount /mnt
    mount -o degraded /dev/sdb /mnt
    btrfs device add /dev/sdf /mnt 
    btrfs device delete missing /mnt
    

เห็นได้ชัดว่า unmount เป็นการดำเนินการที่ทำให้เกิดการหยุดชะงักดังนั้นจะมีการหยุดทำงาน - แอปพลิเคชันใด ๆ ที่ใช้ระบบไฟล์จะได้รับข้อผิดพลาด I / O แต่บทเรียนเหล่านี้บน btrfs นั้นดูล้าสมัยการพิจารณา btrfs อยู่ภายใต้การพัฒนาที่หนักหน่วง

คำถามคือ: พิจารณาสถานะปัจจุบันของ btrfs เป็นไปได้ไหมที่จะทำสิ่งนี้ทางออนไลน์เช่นไม่มีการถอดออก?

ถ้าไม่มีวิธีแก้ปัญหาเฉพาะซอฟต์แวร์ที่สามารถตอบสนองความต้องการนี้ได้หรือไม่


1
หากไดรฟ์ตัวหนึ่งติดไฟระบบส่วนที่เหลือของคุณก็อาจติดไฟได้เช่นกัน
Journeyman Geek

1
@ JourneymanGeek ตลกคุณ .. :) ฉันแค่อยากจะบอกให้ชัดเจนว่าฉันหมายถึงความล้มเหลวอย่างฉับพลันฉับพลันและไม่แน่นอน - ไดรฟ์ก็หยุดทำงาน นี่เป็นเรื่องผิดปกติฮาร์ดดิสก์มักจะล้มเหลวอย่างค่อยเป็นค่อยไปและด้วยการตรวจสอบที่มีประสิทธิภาพฉันสามารถแทนที่มันก่อนที่จะเกิดขึ้น แต่จะเกิดอะไรขึ้นถ้า ...
NothingsImpossible

2
ใน Linux 3.8 btrfs replace mountpoint old_disk new_diskถูกเพิ่ม
ไบรอัน

@Brian woow ... นั่นคือคำตอบ ฉัน googled สำหรับ "btrfs แทนที่" และสิ่งนี้แสดงให้เห็นถึงlwn.net/Articles/524589 มันคือ_exactly_สิ่งที่ฉันกำลังมองหา กรุณาโพสต์มันเป็นคำตอบเพื่อให้ฉันสามารถยอมรับได้
NothingsImpossible

คำตอบ:


11

ใน Linux 3.8 btrfs replace mountpoint old_disk new_diskได้รับการเพิ่ม หากคุณใช้เคอร์เนลเมื่อเร็ว ๆ นี้เคอร์เนลจะให้ฟังก์ชันการทำงานที่คุณต้องการ


4
สิ่งนี้จะเป็นbtrfs replace start /dev/old /dev/new /mountpoint( เริ่มเพิ่มแล้ว) man btrfs-replaceยังเห็น
basic6 6

1

การแก้ไขเล็ก ๆ , ไวยากรณ์ปัจจุบันคือ:

btrfs แทนที่ start OLDDEV NEWDEV MOUNTPOINT

ซึ่งภูมิหลัง

คุณสามารถตรวจสอบสถานะด้วย

btrfs แทนที่สถานะ MOUNTPOINT

ซึ่งจะแสดงสถานะการปรับปรุงอย่างต่อเนื่องของการดำเนินการแทนที่


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