วิธีการกู้คืนข้อมูลและสร้างซอฟต์แวร์ RAID ที่ล้มเหลวขึ้นมาใหม่ - ตอนที่ 8
ในบทความก่อนหน้าของซีรีส์ RAID นี้ คุณได้เปลี่ยนจากศูนย์เป็นฮีโร่ RAID เราได้ตรวจสอบการกำหนดค่า RAID ของซอฟต์แวร์หลายรายการ และอธิบายสิ่งสำคัญของแต่ละรายการ พร้อมด้วยเหตุผลว่าทำไมคุณถึงเลือกใช้งานอย่างใดอย่างหนึ่ง ขึ้นอยู่กับสถานการณ์เฉพาะของคุณ
ในคู่มือนี้ เราจะพูดถึงวิธีการสร้างอาร์เรย์ RAID ของซอฟต์แวร์ใหม่โดยไม่สูญเสียข้อมูลในกรณีที่ดิสก์เกิดความล้มเหลว เพื่อความกระชับ เราจะพิจารณาเฉพาะการตั้งค่า RAID 1 เท่านั้น แต่แนวคิดและคำสั่งจะมีผลกับทุกกรณีเหมือนกัน
สถานการณ์การทดสอบ RAID
ก่อนดำเนินการต่อ โปรดตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่าอาร์เรย์ RAID 1 ตามคำแนะนำที่ให้ไว้ในส่วนที่ 3 ของซีรี่ส์นี้: วิธีตั้งค่า RAID 1 (มิเรอร์) ใน Linux
รูปแบบเดียวในกรณีปัจจุบันของเราคือ:
1) CentOS (v7) เวอร์ชันอื่นที่ไม่ใช่เวอร์ชันที่ใช้ในบทความนั้น (v6.5) และ
2) ขนาดดิสก์ที่แตกต่างกันสำหรับ /dev/sdb และ /dev/sdc (แต่ละขนาด 8 GB)
นอกจากนี้ หากเปิดใช้งาน SELinux ในโหมดบังคับใช้ คุณจะต้องเพิ่มป้ายกำกับที่เกี่ยวข้องลงในไดเรกทอรีที่คุณจะต่อเชื่อมอุปกรณ์ RAID มิฉะนั้นคุณจะพบข้อความเตือนนี้ขณะพยายามติดตั้ง:
คุณสามารถแก้ไขได้ด้วยการเรียกใช้:
restorecon -R /mnt/raid1
การตั้งค่าการตรวจสอบ RAID
มีสาเหตุหลายประการที่ทำให้อุปกรณ์จัดเก็บข้อมูลล้มเหลว (แม้ว่า SSD จะลดโอกาสที่เหตุการณ์นี้จะเกิดขึ้นได้อย่างมากก็ตาม) แต่ไม่ว่าสาเหตุใด คุณสามารถมั่นใจได้ว่าปัญหาสามารถเกิดขึ้นได้ตลอดเวลา และคุณต้องเตรียมพร้อมที่จะเปลี่ยนอุปกรณ์ที่ล้มเหลว ส่วนหนึ่งและเพื่อให้แน่ใจว่าข้อมูลของคุณมีความพร้อมใช้งานและความสมบูรณ์
คำแนะนำก่อน. แม้ว่าคุณสามารถตรวจสอบ /proc/mdstat เพื่อตรวจสอบสถานะของ RAID ของคุณได้ ยังมีวิธีที่ดีกว่าและประหยัดเวลาซึ่งประกอบด้วยการรัน mdadm ในจอภาพ + สแกน โหมดซึ่งจะส่งการแจ้งเตือนทางอีเมลไปยังผู้รับที่กำหนดไว้ล่วงหน้า
หากต้องการตั้งค่านี้ ให้เพิ่มบรรทัดต่อไปนี้ใน /etc/mdadm.conf:
MAILADDR user@<domain or localhost>
ในกรณีของฉัน:
MAILADDR gacanepa@localhost
หากต้องการรัน mdadm ในโหมดมอนิเตอร์ + สแกน ให้เพิ่มรายการ crontab ต่อไปนี้เป็นรูท:
@reboot /sbin/mdadm --monitor --scan --oneshot
ตามค่าเริ่มต้น mdadm จะตรวจสอบอาร์เรย์ RAID ทุกๆ 60 วินาที และส่งการแจ้งเตือนหากพบปัญหา คุณสามารถแก้ไขลักษณะการทำงานนี้ได้โดยเพิ่มตัวเลือก --delay
ให้กับรายการ crontab ด้านบนพร้อมกับจำนวนวินาที (เช่น --delay
1800 หมายถึง 30 นาที)
สุดท้าย ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Mail User Agent (MUA) เช่น mutt หรือ mailx มิฉะนั้นคุณจะไม่ได้รับการแจ้งเตือนใดๆ
อีกสักครู่เราจะดูว่าการแจ้งเตือนที่ส่งโดย mdadm มีลักษณะอย่างไร
การจำลองและการเปลี่ยนอุปกรณ์จัดเก็บข้อมูล RAID ที่ล้มเหลว
เพื่อจำลองปัญหากับหนึ่งในอุปกรณ์จัดเก็บข้อมูลในอาร์เรย์ RAID เราจะใช้ตัวเลือก --manage
และ --set-faulty
ดังต่อไปนี้:
mdadm --manage --set-faulty /dev/md0 /dev/sdc1
ซึ่งจะส่งผลให้ /dev/sdc1 ถูกทำเครื่องหมายว่าผิดพลาด ดังที่เราเห็นใน /proc/mdstat:
ที่สำคัญกว่านั้น เรามาดูกันว่าเราได้รับการแจ้งเตือนทางอีเมลพร้อมคำเตือนเดียวกันหรือไม่:
ในกรณีนี้ คุณจะต้องถอดอุปกรณ์ออกจากอาร์เรย์ RAID ของซอฟต์แวร์:
mdadm /dev/md0 --remove /dev/sdc1
จากนั้น คุณสามารถถอดออกจากเครื่องได้จริงและแทนที่ด้วยชิ้นส่วนอะไหล่ (/dev/sdd ซึ่งพาร์ติชันประเภท fd ได้ถูกสร้างขึ้นก่อนหน้านี้):
mdadm --manage /dev/md0 --add /dev/sdd1
โชคดีสำหรับเราที่ระบบจะเริ่มสร้างอาร์เรย์ใหม่โดยอัตโนมัติด้วยส่วนที่เราเพิ่งเพิ่มเข้าไป เราสามารถทดสอบสิ่งนี้ได้โดยการทำเครื่องหมาย /dev/sdb1 ว่ามีข้อผิดพลาด จากนั้นลบออกจากอาร์เรย์ และตรวจสอบให้แน่ใจว่าไฟล์ tecmint.txt ยังคงเข้าถึงได้ที่ / mnt/raid1:
mdadm --detail /dev/md0
mount | grep raid1
ls -l /mnt/raid1 | grep tecmint
cat /mnt/raid1/tecmint.txt
ภาพด้านบนแสดงให้เห็นอย่างชัดเจนว่าหลังจากเพิ่ม /dev/sdd1 ลงในอาร์เรย์เพื่อแทนที่ /dev/sdc1 แล้ว ระบบจะทำการสร้างข้อมูลขึ้นใหม่โดยอัตโนมัติโดยไม่มีการแทรกแซง ในส่วนของเรา
แม้ว่าจะไม่จำเป็นอย่างเคร่งครัด แต่ก็เป็นความคิดที่ดีที่จะมีอุปกรณ์สำรองไว้ใกล้ตัว เพื่อให้กระบวนการเปลี่ยนอุปกรณ์ที่ชำรุดด้วยไดรฟ์ที่ดีสามารถทำได้ในพริบตา หากต้องการทำเช่นนั้น ให้เพิ่ม /dev/sdb1 และ /dev/sdc1 อีกครั้ง:
mdadm --manage /dev/md0 --add /dev/sdb1
mdadm --manage /dev/md0 --add /dev/sdc1
การกู้คืนจากการสูญเสียความซ้ำซ้อน
ตามที่อธิบายไว้ก่อนหน้านี้ mdadm จะสร้างข้อมูลใหม่โดยอัตโนมัติเมื่อดิสก์ตัวหนึ่งล้มเหลว แต่จะเกิดอะไรขึ้นถ้าดิสก์ 2 ตัวในอาเรย์ล้มเหลว มาจำลองสถานการณ์ดังกล่าวโดยทำเครื่องหมาย /dev/sdb1 และ /dev/sdd1 เป็นข้อผิดพลาด:
umount /mnt/raid1
mdadm --manage --set-faulty /dev/md0 /dev/sdb1
mdadm --stop /dev/md0
mdadm --manage --set-faulty /dev/md0 /dev/sdd1
ความพยายามที่จะสร้างอาร์เรย์ใหม่ในลักษณะเดียวกับที่สร้างขึ้นในขณะนี้ (หรือใช้ตัวเลือก --assume-clean
) อาจส่งผลให้ข้อมูลสูญหาย ดังนั้นจึงควรปล่อยไว้เป็นทางเลือกสุดท้าย
ลองกู้คืนข้อมูลจาก /dev/sdb1 ลงในพาร์ติชันดิสก์ที่คล้ายกัน (/dev/sde1 – โปรดทราบว่าการดำเนินการนี้ต้องการให้คุณสร้างพาร์ติชันของ พิมพ์ fd ใน /dev/sde ก่อนดำเนินการต่อ) โดยใช้ ddrescue:
ddrescue -r 2 /dev/sdb1 /dev/sde1
โปรดทราบว่าจนถึงจุดนี้ เรายังไม่ได้แตะ /dev/sdb หรือ /dev/sdd ซึ่งเป็นพาร์ติชันที่เป็นส่วนหนึ่งของอาร์เรย์ RAID
ตอนนี้เรามาสร้างอาร์เรย์ใหม่โดยใช้ /dev/sde1 และ /dev/sdf1:
mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sd[e-f]1
โปรดทราบว่าในสถานการณ์จริง โดยทั่วไปคุณจะใช้ชื่ออุปกรณ์เดียวกันกับอาเรย์ดั้งเดิม นั่นคือ /dev/sdb1 และ /dev/sdc1 หลังจาก ดิสก์ที่ล้มเหลวถูกแทนที่ด้วยอันใหม่
ในบทความนี้ ฉันได้เลือกใช้อุปกรณ์พิเศษเพื่อสร้างอาร์เรย์ใหม่ด้วยดิสก์ใหม่และเพื่อหลีกเลี่ยงความสับสนกับไดรฟ์เดิมที่ล้มเหลว
เมื่อถามว่าจะเขียนอาร์เรย์ต่อหรือไม่ ให้พิมพ์ Y แล้วกด Enter ควรเริ่มต้นอาร์เรย์และคุณควรจะสามารถดูความคืบหน้าได้ด้วย:
watch -n 1 cat /proc/mdstat
เมื่อกระบวนการเสร็จสิ้น คุณควรจะสามารถเข้าถึงเนื้อหาของ RAID ของคุณได้:
สรุป
ในบทความนี้ เราได้ทบทวนวิธีการกู้คืนจากความล้มเหลวของ RAID และการสูญเสียความซ้ำซ้อน อย่างไรก็ตาม คุณต้องจำไว้ว่าเทคโนโลยีนี้เป็นโซลูชันการจัดเก็บข้อมูล และไม่ได้แทนที่การสำรองข้อมูล
หลักการที่อธิบายไว้ในคู่มือนี้ใช้กับการตั้งค่า RAID ทั้งหมดเหมือนกัน เช่นเดียวกับแนวคิดที่เราจะกล่าวถึงในคำแนะนำถัดไปและขั้นสุดท้ายของซีรี่ส์นี้ (การจัดการ RAID)
หากคุณมีคำถามใดๆ เกี่ยวกับบทความนี้ โปรดแจ้งให้เราทราบโดยใช้แบบฟอร์มความคิดเห็นด้านล่าง เราหวังว่าจะได้ยินจากคุณ!