Score:3

บูต RAID1 ที่ใช้ซอฟต์แวร์อย่างเหมาะสมด้วยไดรฟ์ที่หายไปหรือล้มเหลวอย่างไม่ถูกต้อง

ธง gf

ดร. มีวิธีการบูต RAID1 ที่ใช้ซอฟต์แวร์อย่างถูกต้องด้วยไดรฟ์ที่หายไปหรือล้มเหลว (ซึ่งผู้ใช้ไม่ได้ล้มเหลวก่อน) หรือไม่

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

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

แม้ว่าฉันจะยอมรับกับสิ่งที่เป็นไปไม่ได้ แต่บางอย่างเกี่ยวกับเรื่องนี้ก็ไม่ได้สงบลงง่ายๆ ฉันกำลังดูว่ามีใครมีปัญหานี้หรือมีวิธีแก้ไขปัญหานี้ไหม

สภาพแวดล้อมของฉัน:

ฉันมีเมนบอร์ดรุ่นเก่าที่ไม่รองรับ UEFI ดังนั้นฉันจึงต้องบูตโหมดดั้งเดิม/MBR
ระบบปฏิบัติการ:

แมว / etc / redhat-release
Red Hat Enterprise Linux Workstation รีลีส 7.6 (Maipo)

เคอร์เนล:

ไม่มีชื่อ âr
3.10.0-957.el7.x86_64

mdadm:

mdadm เวอร์ชัน
mdadm â v4.1-rc1 2018-03-22

RAID ของฉันคือ RAID1 ในสามไดรฟ์ (sda,sdb,sdc) และมี 4 พาร์ทิชัน

md1 - /บูต
md2 - /โฮม
md3 - /
md4 - สลับ

ฉันได้ติดตั้ง grub บนพาร์ติชันทั้งหมดและตรวจสอบให้แน่ใจว่าพาร์ติชันสำหรับเริ่มระบบทั้งหมดมีแฟล็กสำหรับบูต fdisk /dev/sd[a,b,c] ทั้งหมดแสดง * ในฟิลด์บูตถัดจากพาร์ติชันที่เหมาะสม
-- และ --
ติดตั้ง grub2 /dev/sd[a,b,c] (เป็นคำสั่งแยกต่างหากพร้อมผลลัพธ์ âติดตั้งสำเร็จแล้วâ)

จำลองปัญหา:

  1. ปิดระบบโดยที่ไดร์ฟทั้งหมดถูกกำหนดให้กับ RAID และ RAID จะทำงานอย่างเต็มที่
  2. ถอดฮาร์ดไดรฟ์ออก
  3. ระบบไฟขึ้น

ผล: ระบบจะบูตผ่านด้วง Gdm จะพยายามแสดงหน้าจอการเข้าสู่ระบบ แต่หลังจากนั้นประมาณ 20 วินาที หน้าจอจะไม่ทำงานและไปที่คอนโซลฉุกเฉิน มีชิ้นส่วนจำนวนมากที่ขาดหายไปจากระบบ “ปกติ” ตัวอย่างเช่น; /boot และ /etc ไม่มีอยู่ ดูเหมือนจะไม่มีข้อความเคอร์เนลแพนิคหรือปัญหาใดๆ ปรากฏขึ้น dmesg.

อีกครั้ง ที่สำคัญคือ; ต้องประกอบ RAID ให้สมบูรณ์ ปิดเครื่องและถอดไดรฟ์ออก หากคุณทำไดรฟ์ล้มเหลวและถอดออกจาก RAID อย่างถูกต้อง คุณก็สามารถบู๊ตได้โดยไม่ต้องมีไดรฟ์

ตัวอย่าง:
mdadm --manage /dev/md[1,2,3,4] --fail /dev/sda[1,2,3,4] (เป็นคำสั่งแยกต่างหาก)
mdadm --manage /dev/md[1,2,3,4] --remove /dev/sda[1,2,3,4] (เป็นคำสั่งแยกต่างหาก)

ฉันรู้ว่าสิ่งนี้ดูเหมือนเล็กน้อย แต่ฉันยังไม่พบวิธีแก้ปัญหาที่ได้ผลในการบูทระบบด้วย RAID1 ที่ลดประสิทธิภาพลง คุณอาจคิดว่านี่ควรเป็นปัญหาง่ายๆ ด้วยวิธีง่ายๆ แต่ดูเหมือนจะไม่เป็นเช่นนั้น

ความช่วยเหลือ ข้อมูล หรือคำแนะนำใด ๆ ที่จะได้รับการชื่นชมอย่างมาก

Score:6
ธง ca

การบูทอาร์เรย์ MD RAID1 ที่ล้มเหลวนั้นเป็นไปได้อย่างแน่นอน - อย่างน้อยที่สุดหาก BIOS ข้ามดิสก์ที่ล้มเหลว (หากไม่ใช่ คุณสามารถบูตด้วยตนเองจากดิสก์ที่เหลือ)

สำหรับปัญหาเฉพาะของคุณ คุณอาจจะโดนสิ่งนี้ บั๊ก ข้อความที่ตัดตอนมา (แต่การอ่านรายงานข้อผิดพลาดทั้งหมดจะเป็นความคิดที่ดี):

สคริปต์ RHEL 7.6 dracut-iniqueue มีค่าเริ่มต้น 180 วินาที (เช่น กำหนดไว้ในตัวแปร RDRETRY) ซึ่งสูงกว่ารูท systemd บริการติดตั้ง (90 วินาที) สิ่งนี้สามารถนำไปสู่ระบบที่ไม่สามารถบู๊ตได้เมื่อ รูทอยู่ในอุปกรณ์ RAID1 ของซอฟต์แวร์ที่เสื่อมประสิทธิภาพ (ผู้ใช้ถูกทิ้งไปที่ เปลือกฉุกเฉิน) ดู https://bugzilla.redhat.com/show_bug.cgi?id=1451660# สำหรับตัวอย่างของ ปัญหา. โปรดทราบว่าสิ่งนี้จะเกิดขึ้นเมื่ออุปกรณ์ RAID คาดหวังเท่านั้น ตัวเองมีสุขภาพแข็งแรง แต่ก็พบว่า อาร์เรย์เสื่อมโทรมลงอย่างคาดไม่ถึง ระหว่างการบู๊ต

การผ่าน "rd.retry=30" ในเวลาบูตจะแก้ไขการบูตอาร์เรย์ที่ลดลง ปัญหาเนื่องจากอาร์เรย์ถูกบังคับให้เริ่มต้นก่อนรูท systemctl บริการเมานต์หมดเวลา ยิ่งไปกว่านั้น การหมดเวลา dracut rd.retry ที่ยาวนานคือ ไม่สอดคล้องกับ man page dracut.cmdline(7) ซึ่งระบุไว้ว่า หมดเวลาควรเป็น 30 วินาที

...

ข้อมูลเพิ่มเติม: ฉันติดตาม ปัญหาเกี่ยวกับวิธี mdadm --incremental, dracut timeout (rd.retry) และ การหมดเวลาเริ่มต้นของ systemctl โต้ตอบ:

  • mdadm --incremental จะไม่เริ่ม/รันอาร์เรย์ซึ่งพบว่าลดระดับโดยไม่คาดคิด
  • dracut ควรบังคับให้เริ่มอาร์เรย์หลังจากผ่านไป 2/3 ของค่าหมดเวลา ด้วยค่าเริ่มต้น RHEL ปัจจุบัน จำนวนนี้เป็น 180/3*2 = 120 วินาที
  • systemctl คาดว่าจะเมานต์ระบบไฟล์รูทได้สูงสุด 90 วินาที หากไม่สำเร็จ จะยกเลิกสคริปต์ dracut และปล่อยให้เป็นกรณีฉุกเฉิน เปลือก. ต่ำกว่าระยะหมดเวลา dracut ของ 90 หมายความว่า dracut ทำ ไม่มีโอกาสบังคับให้เริ่มอาร์เรย์ กำลังลดระยะหมดเวลา rd.retry (การตั้งค่าตามที่ man page แนะนำ) เปิดใช้งาน dracut เพื่อบังคับการเริ่มต้น อาร์เรย์ทำให้บริการ systemctl ประสบความสำเร็จ

เป็นข้อบกพร่อง ควร ได้รับการแก้ไขใน RHEL/CentOS 7 point releases ล่าสุด ฉันขอแนะนำอย่างยิ่งให้อัปเดตระบบของคุณหากทำได้ มิฉะนั้นให้ลองผ่าน rd.retry=30 เป็นตัวเลือกการบูตเคอร์เนล

Will Roberts avatar
gf flag
โชดันโชก. ขอขอบคุณ! นี่เป็นปัญหาอย่างแท้จริงและการเปลี่ยนการตั้งค่า md.raid บังคับให้ RAID สร้างใหม่ก่อนหมดเวลาและอนุญาตให้ระบบบูตได้อย่างถูกต้อง

โพสต์คำตอบ

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