Miklix

การเปลี่ยนไดรฟ์ที่ล้มเหลวในอาร์เรย์ mdadm บน Ubuntu

ที่ตีพิมพ์: 15 กุมภาพันธ์ 2025 เวลา 22 นาฬิกา 03 นาที 12 วินาที UTC
ปรับปรุงล่าสุด : 12 มกราคม 2026 เวลา 8 นาฬิกา 50 นาที 07 วินาที UTC

หากคุณกำลังเผชิญกับสถานการณ์ที่น่ากลัวอย่างการเกิดความล้มเหลวของฮาร์ดไดรฟ์ในอาร์เรย์ RAID mdadm บทความนี้จะอธิบายวิธีการเปลี่ยนฮาร์ดไดรฟ์อย่างถูกต้องบนระบบ Ubuntu


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

Replacing a Failed Drive in an mdadm Array on Ubuntu

ข้อมูลในโพสต์นี้อ้างอิงจาก Ubuntu 18.04 และเวอร์ชันของ mdadm ที่รวมอยู่ใน repository ของระบบ ซึ่ง ณ เวลาที่เขียนคือเวอร์ชัน 4.1-rc1 ข้อมูลนี้อาจใช้ได้หรือไม่ก็ได้กับเวอร์ชันอื่นๆ

เมื่อไม่นานมานี้ ฮาร์ดไดรฟ์ในเซิร์ฟเวอร์ไฟล์ที่บ้านของผมเสียกะทันหัน ซึ่งประกอบด้วยฮาร์ดไดรฟ์เก้าตัวในรูปแบบ RAID-6 ของ mdadm นั่นเป็นเรื่องน่ากลัวเสมอ แต่โชคดีที่ผมสามารถหาฮาร์ดไดรฟ์สำรองมาเปลี่ยนได้อย่างรวดเร็วและได้รับสินค้าในวันถัดไป ทำให้ผมสามารถเริ่มทำการกู้คืนระบบได้

ยอมรับว่าตอนแรกผมงกไปหน่อย มีฮาร์ดไดรฟ์สำหรับ NAS เพียงสองตัว (Seagate IronWolf) ส่วนที่เหลือเป็นฮาร์ดไดรฟ์สำหรับเดสก์ท็อป (Seagate Barracuda) และไม่น่าแปลกใจเลยที่ฮาร์ดไดรฟ์เดสก์ท็อปตัวหนึ่งเสีย (หลังจากใช้งานมาเกือบสามปี) มันเสียสนิทเลย หลังจากย้ายมันไปใส่เคส USB สำหรับเดสก์ท็อปแล้ว สิ่งที่ได้ยินก็มีแค่เสียงคลิกที่น่าขนลุก และทั้ง Ubuntu 20.04 และ Windows 10 ก็ตรวจไม่พบมัน

เอาล่ะ มาถึงส่วนที่จะเปลี่ยนกันแล้ว (และใช่ ฮาร์ดไดรฟ์ใหม่ที่ผมซื้อมาคือ IronWolf บทเรียนราคาแพงเลยทีเดียว) – การที่ฮาร์ดไดรฟ์เสียในอาร์เรย์ที่กำลังทำงานอยู่นั้นน่ากลัวอยู่แล้ว แต่จะน่ากลัวยิ่งกว่าถ้าคุณไม่รู้ขั้นตอนที่ถูกต้องในการเปลี่ยนมัน นี่ไม่ใช่ครั้งแรกที่ผมต้องเปลี่ยนฮาร์ดไดรฟ์ที่เสียในอาร์เรย์ mdadm แต่โชคดีที่มันเกิดขึ้นไม่บ่อยนัก ผมจึงมักจะต้องค้นหาคำสั่งที่ถูกต้องอยู่เสมอ ครั้งนี้ผมเลยตัดสินใจทำคู่มือเล็กๆ ของตัวเองไว้สำหรับการอ้างอิงในอนาคต

ก่อนอื่นเลย เมื่อคุณได้รับอีเมลแจ้งเตือนความล้มเหลวจาก mdadm คุณต้องระบุว่าไดรฟ์ใดล้มเหลว แน่นอน มันจะแสดงชื่ออุปกรณ์ (ในกรณีของผมคือ /dev/sdf) แต่ก็อาจจะไม่ชัดเจนว่าไดรฟ์ทางกายภาพนั้นคือไดรฟ์ใดกันแน่ เพราะชื่ออุปกรณ์อาจเปลี่ยนแปลงได้เมื่อเครื่องบูตขึ้นมา

หากคุณไม่แน่ใจว่าอุปกรณ์ใดมีปัญหา คุณสามารถใช้คำสั่งต่อไปนี้เพื่อตรวจสอบได้ (แทนที่ /dev/md0 ด้วยชื่ออุปกรณ์ RAID ของคุณ):

mdadm -–query -–detail /dev/md0

อย่างที่กล่าวไปแล้ว ในกรณีของผมคือ /dev/sdf ดังนั้นเรามาดำเนินการต่อด้วยตัวนั้นกันเถอะ

จากนั้น คุณสามารถลองค้นหาหมายเลขประจำเครื่องของฮาร์ดไดรฟ์ที่เสียโดยใช้คำสั่งนี้:

smartctl -–all /dev/sdf | grep -i 'Serial'

(หากไม่พบ smartctl คุณต้องติดตั้งแพ็คเกจ smartmontools บน Ubuntu)

จากนั้นสามารถนำหมายเลขประจำเครื่องไปเปรียบเทียบกับหมายเลขประจำเครื่องบนฉลากที่ติดอยู่บนฮาร์ดไดรฟ์ เพื่อตรวจสอบว่าฮาร์ดไดรฟ์ตัวใดเสีย

แต่คราวนี้ผมโชคไม่ดีนัก ฮาร์ดไดรฟ์เสียสนิทและไม่ยอมแสดงข้อมูล SMART หรือข้อมูลอื่นๆ รวมถึงหมายเลขประจำเครื่องด้วย

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

ก่อนที่จะถอดฮาร์ดไดรฟ์ออก ควรแจ้งให้ mdadm ทราบถึงความตั้งใจนี้อย่างเป็นทางการ โดยใช้คำสั่งนี้ (แทนที่ชื่ออุปกรณ์ด้วยชื่ออุปกรณ์ของคุณเองตามความเหมาะสม):

mdadm -–manage /dev/md0 -–remove /dev/sdf1

หากดำเนินการสำเร็จ mdadm จะตอบกลับด้วยข้อความว่าได้ "ถอดไดรฟ์ออกขณะทำงาน" แล้ว ซึ่งอาจเป็นเพราะอุปกรณ์ RAID เสมือนกำลังทำงานอยู่ ณ ขณะนั้น

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

mdadm --manage /dev/md0 --fail /dev/sdf

หลังจากนั้น คุณจะสามารถลบอุปกรณ์ออกจากอาร์เรย์ได้โดยใช้คำสั่งก่อนหน้านี้

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

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

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

หลังจากบูตเครื่องด้วยฮาร์ดไดรฟ์ใหม่ที่ติดตั้งแล้ว ให้ใช้คำสั่ง lsblk หรือวิธีอื่น ๆ เพื่อระบุฮาร์ดไดรฟ์นั้น หากคุณไม่ได้เปลี่ยนแปลงอะไรอย่างอื่น ฮาร์ดไดรฟ์ใหม่ก็อาจจะมีชื่อเดียวกันกับฮาร์ดไดรฟ์ที่คุณเปลี่ยนไป (แต่ไม่จำเป็นเสมอไป) ในกรณีของผมก็เป็นเช่นนั้น ดังนั้นฮาร์ดไดรฟ์ใหม่จึงมีชื่อว่า /dev/sdf เช่นกัน

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

ฉันใช้ sgdisk เพื่อจุดประสงค์นี้ โดยคัดลอกตารางพาร์ติชั่นจาก /dev/sdc ไปยัง /dev/sdf โปรดตรวจสอบให้แน่ใจว่าได้เปลี่ยนชื่ออุปกรณ์ให้ตรงกับของคุณแล้ว

โปรดสังเกตลำดับตรงนี้: คุณต้องระบุไดรฟ์ "ปลายทาง" ก่อน! สำหรับผมแล้วมันอาจดูขัดกับสัญชาตญาณเล็กน้อย แต่ขอให้แน่ใจว่าทำถูกต้อง เพื่อป้องกันไม่ให้ไดรฟ์ในอาร์เรย์เสียอีก ;-)

sgdisk -R /dev/sdf /dev/sdc

จากนั้นเพื่อหลีกเลี่ยงความขัดแย้งของ UUID ให้สร้าง UUID ใหม่สำหรับไดรฟ์ใหม่:

sgdisk -G /dev/sdf

และในที่สุด ตอนนี้ก็ถึงเวลาที่จะเพิ่มฮาร์ดไดรฟ์ใหม่เข้าไปในอาร์เรย์และเริ่มกระบวนการกู้คืนระบบแล้ว! (โอเค จริงๆ แล้วมันไม่ใช่ปาร์ตี้หรอก มันเป็นกระบวนการที่ค่อนข้างช้าและน่ากังวล เพราะคุณไม่อยากให้ฮาร์ดไดรฟ์ตัวอื่นเสียอีกในตอนนี้ เบียร์อาจช่วยได้นะ)

อย่างไรก็ตาม ในการเพิ่มไดรฟ์ใหม่ลงในอาร์เรย์ ให้ใช้คำสั่งนี้ (อีกครั้ง โปรดตรวจสอบให้แน่ใจว่าได้เปลี่ยนชื่ออุปกรณ์เป็นชื่อของคุณเองให้ถูกต้อง):

mdadm -–manage /dev/md0 -–add /dev/sdf1

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

คุณสามารถติดตามดูได้ดังนี้:

watch cat /proc/mdstat

กระบวนการนี้อาจใช้เวลานานสักหน่อย บนเซิร์ฟเวอร์สเปคต่ำของผม (ซึ่งส่วนใหญ่ใช้ฮาร์ดแวร์ระดับผู้บริโภคและฮาร์ดไดรฟ์สำหรับเดสก์ท็อป) มันทำความเร็วได้ต่ำกว่า 100 MB/วินาที โปรดจำไว้ว่านี่คือ RAID-6 ดังนั้นจึงมีการคำนวณพาริตี้จำนวนมากในการสร้างใหม่ RAID-10 จะเร็วกว่ามาก เครื่องนี้ใช้ซีพียู AMD A10 9700E แบบควอดคอร์ (ตัว "E" หมายถึงเป็นรุ่นประหยัดพลังงานที่ลดความเร็วลง กล่าวคือไม่ได้เร็วมาก) เพื่อให้คุณได้เห็นภาพคร่าวๆ ว่าจะเกิดอะไรขึ้น ด้วยฮาร์ดไดรฟ์ 8 TB จำนวน 9 ตัวในระบบของผม การสร้างใหม่ทั้งหมดใช้เวลามากกว่า 24 ชั่วโมง

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

เมื่อเสร็จแล้ว ให้เพิ่มกลับเข้าไปในไฟล์ /etc/fstab ของคุณ รีบูตเครื่อง แล้วก็ใช้งานไฟล์ของคุณได้เลย :-)

แชร์บนบลูสกายแชร์บนเฟสบุ๊คแชร์บน LinkedInแชร์บน Tumblrแชร์บน Xแชร์บน LinkedInปักหมุดบน Pinterest

มิคเคล คริสเตนเซ่น

เกี่ยวกับผู้เขียน

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