Score:1

สร้าง RAID5 ใหม่ด้วยเซกเตอร์ที่แก้ไขไม่ได้บนดิสก์หลายตัว

ธง cn

ระบบซอฟต์แวร์ RAID5 (mdadm) ของฉันประกอบด้วยดิสก์ห้าแผ่นเมื่อเร็ว ๆ นี้ ฉันได้รับข้อผิดพลาด I/O เมื่ออ่านไฟล์บางไฟล์ ไฟล์อื่น ๆ ส่วนใหญ่ยังคงสามารถอ่านได้

ตอนแรกฉันวางแผนที่จะค้นหาว่าดิสก์ใดเสีย (โดยใช้ smartctl) และแทนที่ดิสก์ที่ล้มเหลวอย่างรวดเร็วเพื่อสร้างอาร์เรย์ใหม่ก่อนที่ดิสก์อื่นจะล้มเหลวเช่นกัน อย่างไรก็ตาม smartctl แสดงให้เห็นว่า สาม ดิสก์มีข้อผิดพลาดที่ไม่สามารถแก้ไขได้

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

หรือความจริงที่ว่าฉันมีข้อผิดพลาด I/O บ่งชี้ว่าพาริตีสูญหายและเซกเตอร์เดียวกันบนดิสก์หลายแผ่นไม่สามารถอ่านได้? มีวิธีใดบ้างที่จะทราบว่ามีเซ็กเตอร์ที่ล้มเหลวตัดกันหรือไม่ และข้อมูลจึงสูญหายไปอย่างถาวรหรือไม่

Michael Hampton avatar
cz flag
ดูเหมือนว่าคุณไม่มีข้อมูลสำรอง นั่นควรมีความสำคัญสูงสุดของคุณ
Nikita Kipriyanov avatar
za flag
@CIA แนวคิดหลังของ dd นั้นดึงดูด แต่น่าสงสัย เมื่อบล็อกไม่สามารถอ่านได้ MD จะเห็นสิ่งนี้และกู้คืนข้อมูลที่ถูกต้องจากดิสก์อื่น ในทางกลับกัน `dd` จะเติมช่องว่างนี้ด้วยเลขศูนย์ และบล็อกจะสามารถอ่านได้จากอุปกรณ์ใหม่ และเลเยอร์ RAID จะไม่รู้ว่าสิ่งใดดีกว่าที่จะกู้คืน ซึ่งจะนำไปสู่การเสียหายของข้อมูล // นอกจากนี้ คุณไม่จำเป็นต้องลงทุนในซอฟต์แวร์ "เพื่อช่วยระบุวิธีการตั้งค่าบล็อก" ซอฟต์แวร์นี้เรียกว่า `mdadm` ซึ่งจะบอกคุณว่าคุณถามถูกต้องหรือไม่ และเอกสารและแหล่งที่มาของเคอร์เนล Linux จะอธิบายคำตอบอย่างละเอียด
Score:3
ธง ru

ขั้นตอนมาตรฐานคือ:

  1. มีสิ่งที่ดีและทันสมัยอยู่เสมอ การสำรองข้อมูล (สำเนาอิสระอย่างน้อยสองฉบับในที่ต่างๆ กัน อย่างน้อยในสื่อต่างๆ)
  2. อย่างต่อเนื่อง เฝ้าสังเกต RAID ของคุณสำหรับปัญหา RAID นั้นไร้ค่าเมื่อปล่อยให้ข้อผิดพลาดสะสม
  3. ขัด ดิสก์อย่างน้อยเดือนละครั้ง สิ่งนี้จะหลีกเลี่ยงข้อผิดพลาดที่จะสะสมและป้องกันการสร้างใหม่
  4. พิจารณา การโจมตี 6 ด้วยดิสก์สำรองสองแผ่น

ดูเหมือนคุณไม่ได้จริงจังกับเรื่องนี้ พยายามกู้คืนสิ่งที่ยังคงอยู่ ตอนนี้. การพยายามสร้างอาร์เรย์ที่เกือบล้มเหลวอาจทำให้เกิดความเสียหายมากกว่าที่คุณคาดไว้

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

Score:2
ธง za
  1. คุณถูกต้องในกรณีที่ส่วนที่อ่านไม่ได้ "ไม่ตัดกัน" เช่น อยู่ในแถบที่แตกต่างกัน MD RAID อาจ กู้คืนข้อมูลโดยใช้ความเท่าเทียมกัน แต่อาจกระตุ้นการขับออกบางส่วนในระหว่างการพักฟื้น จากนั้นโอกาสจะลดลงอย่างมาก

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

  3. คุณอาจเริ่มต้นด้วยการโคลนไดรฟ์แต่ละเซกเตอร์ต่อเซกเตอร์เพื่อแทนที่ด้วย ddrescue (เช่น. ไม่ โดยใช้ขั้นตอนการกู้คืน MD RAID) นอกจากการคัดลอกผ่านข้อผิดพลาดแล้ว ยังสร้างสิ่งที่เรียกว่า a ไฟล์บันทึกซึ่งเป็นแผนที่เซกเตอร์เสีย เมื่อคุณลอกแบบมาทั้งสามแบบ คุณอาจเปรียบเทียบแผนที่เหล่านั้นและดูว่ามีจุดตัดหรือไม่ อย่าทิ้งแผนที่เหล่านี้อาจช่วยคุณได้ในระหว่างพักฟื้น

  4. อย่างไรก็ตาม RAID5 เป็นสัตว์ร้ายที่น่ารังเกียจมากในแง่ของการทิ้งขยะ มีอะไรผิดพลาด? หากเซกเตอร์ของไดรฟ์ของคุณไม่อ่านข้อผิดพลาด I/O แต่อย่างใด เลเยอร์ RAID จะกู้คืนข้อมูลนั้นจากดิสก์อื่น นั่นจะเป็นกรณีสำหรับดิสก์เก่า แต่ถ้าอ่านได้โดยไม่มีข้อผิดพลาด แต่ส่งคืนข้อมูลที่ไม่ถูกต้อง RAID จะไม่พยายามกู้คืนจากพาริตีและส่งคืนข้อมูลที่ไม่ถูกต้องแทน ddrescue จะเติมเซกเตอร์ที่อ่านไม่ได้ด้วยเลขศูนย์ ซึ่งจะถูกอ่านกลับหากคุณประกอบอาร์เรย์กับอุปกรณ์โคลนนี้ในภายหลัง ดังนั้นสิ่งนี้จะแปลเป็นการอ่านเลขศูนย์ (ข้อมูลที่เสียหาย) ซึ่งเป็นไปได้ที่จะกู้คืนข้อมูลต้นฉบับได้ RAID ไม่รับประกันข้อมูล ความซื่อสัตย์. และนี่คือปัญหาที่แท้จริงสำหรับทุกตัวแปร ยกเว้น RAID6 ซึ่งมี 2 parity syndromes หรือ RAID1 ที่มีมากกว่า 2 mirrors และคุณอาจเดาได้อยู่แล้วว่าปัญหานี้แสดงออกในลักษณะที่ก่อกวนมากที่สุดในกรณีของ RAID5 (มีการพิจารณาเพิ่มเติมเกี่ยวกับขนาดดิสก์สมัยใหม่และอัตราข้อผิดพลาดบิต)

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

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

  7. และตอนนี้คุณมีประสบการณ์อันล้ำค่านี้แล้ว อย่าโทษอาร์เรย์ ให้โทษตัวเอง เรียนรู้บทเรียนและจัดการให้ถูกต้อง:

  • คิดสามครั้งก่อนใช้ RAID5 จากนั้นพูดว่า "ไม่" และไปที่ระดับ RAID อื่น
  • ขัดถูอาร์เรย์เป็นประจำ ซึ่งหมายความว่า MD RAID จะอ่านและเปรียบเทียบข้อมูลบนไดรฟ์ และจะส่งเสียงเตือนหากมีสิ่งผิดปกติ (ไม่ตรงกัน บล็อกที่อ่านไม่ได้) จากนั้นคุณอาจเปลี่ยนไดร์ฟที่มีอาการเสียตั้งแต่เนิ่นๆ distros ที่ดีมีการกำหนดค่านี้ทันที (อย่างน้อย Debian)
  • ตรวจสอบดิสก์และอาร์เรย์เพื่อไม่ให้พลาดสัญญาณสำคัญของปัญหา
  • สุดท้ายนี้ ขอต้อนรับสู่คลับของผู้ดูแลระบบที่สำรองข้อมูลเป็นประจำ
user9517 avatar
cn flag
จุดสุดท้ายของคุณควรเป็นจุดแรกของคุณ
Nikita Kipriyanov avatar
za flag
คำถามไม่ใช่ "วิธีจัดการอาร์เรย์อย่างถูกต้อง" แต่เป็น "วิธีกู้คืนอาร์เรย์" ดังนั้นในทางเทคนิคแล้ว จุดสุดท้ายคือ *ปิดหัวข้อ* แต่มันมีประโยชน์นี่คือเหตุผลที่ฉันรวมไว้
user9517 avatar
cn flag
ไม่ใช่เรื่องเสียหายที่จะเสริมสร้างการฝึกฝนที่ดีแต่เนิ่นๆ และบ่อยครั้ง
Nikita Kipriyanov avatar
za flag
โอเค มันคือ *จุดสุดท้าย* จุดที่ดีที่สุดที่จะเสริมกำลัง ฉันกำลังพยายามช่วย ไม่ให้จบผู้ถาม ซึ่งอาจจะกำลังฉีกผมอยู่แล้วเพราะไม่ได้สำรองข้อมูล
cn flag
@NikitaKipriyanov เกี่ยวกับ p.1: ทำไม MD RAID ถึง 'เตะ' ไดรฟ์ระหว่างการกู้คืน 'เตะออก' หมายความว่าอย่างไรในแง่นี้? ฉันคาดหวังว่ามันจะง่ายกว่านี้มากในการแก้ปัญหา t.b.h. อย่างน้อยตราบเท่าที่เซกเตอร์เสียไม่ตัดกัน ฉันคิดว่าฉันสามารถ 1) สลับดิสก์ตัวแรกที่ล้มเหลว 2) สร้าง RAID ใหม่ และ 3) ทำขั้นตอนนี้ซ้ำทั้งสามครั้ง สมมติว่าฉันเปลี่ยนดิสก์ #1 มีโอกาสสูงมากที่ดิสก์ #2 จะถูก 'ไล่ออก' ในกระบวนการสร้าง RAID ใหม่หรือไม่
Nikita Kipriyanov avatar
za flag
1. MD RAID มีสถานะ "ล้มเหลว" ของดิสก์ เป็นสถานะเมื่อดิสก์ถูกนับเป็นส่วนหนึ่งของอาร์เรย์ แต่ไม่เข้าร่วมในการดำเนินการ I/O MD สามารถถ่ายโอนดิสก์เข้าสู่สถานะนี้ได้หากดิสก์ทำงาน "แย่เกินไป" เช่น ช้า (พลาดกำหนดเวลา) โยนข้อผิดพลาด I/O จำนวนมาก เป็นต้น 2. ในทางทฤษฎีแล้ว การทำเช่นนี้ "ง่าย" จะทำให้คุณสูญเสียโอกาสในการกู้คืนเซกเตอร์เสียทั้งหมดของดิสก์อื่นๆ ทั้งหมด เนื่องจากต้องใช้ข้อมูลที่อยู่ในเซกเตอร์ที่ใช้งานจริงของดิสก์ตัวเก่าตัวแรก ซึ่งคุณเปลี่ยนออก เพียงอย่างเดียวนี้จะไม่เป็นที่ยอมรับสำหรับฉัน แต่นี่ไม่ใช่ข้อแม้เพียงอย่างเดียว
Nikita Kipriyanov avatar
za flag
(2. ต่อ) ปัญหาหลักคือพฤติกรรมของกระบวนการ MD RAID resync เมื่อพบข้อผิดพลาด I/O ฉันไม่เคยผ่านขั้นตอนนี้สำหรับ RAID5 แต่ในกรณีของ RAID1 resync ฉันพบสิ่งต่อไปนี้: หากพบการบล็อกที่อ่านไม่ได้บนซอร์ส (ไดรฟ์เดียวที่มีสำเนาสมบูรณ์ในตอนนี้) มันจะรีสตาร์ทการซิงค์ใหม่จาก จุดเริ่มต้น. จากนั้นจะดำเนินต่อไปจนถึงบล็อกเสียแรกและเริ่มต้นใหม่อีกครั้ง ไม่เคยผ่านบล็อกแรกที่ไม่ดี ครั้งหนึ่งเราเคยแก้ไขปัญหานี้ด้วยการบังคับให้ทำการแมปเซกเตอร์เสียใหม่ (`hdparm -w` ถ้าฉันจำได้ อุ๊ย) นี่คือสาเหตุที่สถานการณ์ "ง่าย" ของคุณดูผิดไปอย่างสิ้นเชิงสำหรับฉัน
cn flag
ฉันเห็นประเด็นของคุณ: เมื่อลบดิสก์ที่ล้มเหลว #1 ฉันจะลบข้อมูลที่จำเป็นในการสร้างส่วนที่อ่านไม่ได้ของดิสก์ที่ล้มเหลว #2 ได้อย่างมีประสิทธิภาพ อย่างไรก็ตาม สมมติว่าฉัน _add_ ดิสก์ใหม่ไปยังอาร์เรย์ของฉัน ในทางทฤษฎีแล้วมันเป็นไปได้หรือไม่ที่จะเติมดิสก์นั้นด้วยข้อมูลที่ซ้ำซ้อน เพื่อให้ฉันสามารถสลับและสร้างดิสก์ที่ล้มเหลวขึ้นมาใหม่ทีละตัว มันเป็น 'เพียง' เรื่องของเครื่องมือที่ไม่มีให้ทำเช่นนั้น ฉันพลาดประเด็นไปอย่างสิ้นเชิงว่าทำไมสิ่งนี้ถึงเป็นไปไม่ได้โดยพื้นฐาน?
Nikita Kipriyanov avatar
za flag
ใช่ ไม่มีการแก้ไขอัตโนมัติสำหรับความล้มเหลวของดิสก์หลายตัว และไม่มีการบำรุงรักษาความสอดคล้องที่แท้จริง ดังที่ฉันอธิบายไว้ในหน้า 4 นั่นคือ RAID5 คุณควรทราบสิ่งนี้เมื่อคุณปรับใช้ ขั้นตอนที่ฉันอธิบายไว้ในหน้า 6 (การโคลนข้อมูลจากอาร์เรย์ที่ประกอบขึ้น) เป็นวิธีการแก้ปัญหาตามสมมติฐานในหน้า 1) หน้า 3 จำเป็นต้องได้รับการป้องกันจากกรณีที่เลวร้ายที่สุด เนื่องจากหน้า 6 โดยทั่วไปอาจเป็นการผ่าตัดที่ตึงเครียด

โพสต์คำตอบ

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