ฉันจะสร้าง mdadm ประกอบเองโดยอัตโนมัติหลังจากการบูตแต่ละครั้งได้อย่างไร


43

ผมประสบความสำเร็จในการสร้าง RAID (มิเรอร์) mdadmโดยใช้ อย่างไรก็ตามฉันต้องรันคำสั่งต่อไปนี้หลังจากบู๊ตแต่ละครั้ง:

mdadm --stop --scan // to stop /dev/md127 - I don't know where the number 127 even comes from
mdadm --assemble --scan // to start /dev/md0

ฉันทำอะไรผิด / เหตุใดฉันจึงต้องเรียกใช้คำสั่งเหล่านี้ตอนบูต วิธีที่ถูกต้องในการเริ่มต้น RAID อัตโนมัติด้วยการบู๊ตแต่ละครั้งคืออะไร?

คำตอบ:


36

หมายเหตุ: คุณต้องเข้าสู่ระบบด้วยรูท, หรือใช้sudoเพื่อทำสิ่งนี้ทั้งหมด ...

  • ใช้โปรแกรมแก้ไขรายการโปรดของคุณเพื่อสร้างหรือแก้ไขไฟล์/etc/mdadm/mdadm.confดังนี้:

หากไฟล์ไม่มีอยู่ให้วางสิ่งต่อไปนี้ลงในไฟล์ใหม่ที่ว่างเปล่า:

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

DEVICE partitions

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays
  • บันทึกไฟล์

  • รันคำสั่งต่อไปนี้เพื่อเพิ่มการอ้างอิงไปยังการกำหนดค่าอาร์เรย์ของคุณที่ท้ายไฟล์:

    mdadm - รายละเอียด - สแกน >> /etc/mdadm/mdadm.conf

สิ่งนี้ควรเพิ่มบรรทัดดังต่อไปนี้ที่ส่วนท้ายของ mdadm.conf:

ARRAY / dev / md0 level = raid5 num-devices = 3 metadata = 00.90 UUID = a44a52e4: 0211e47f: f15bce44: 817d167c

หากคำสั่ง mdadm เพิ่มสิ่งอื่นใดเหนือบรรทัด ARRAY ให้ลบออก ตัวอย่างเช่นบนหนึ่งในเครื่องของฉันคำสั่งจะส่งกลับ 'mdadm: รูปแบบข้อมูลเมตา 00.90 ไม่รู้จักไม่สนใจ' ก่อนแถว ARRAY

ตอนนี้อาเรย์ของคุณควรสร้างโดยอัตโนมัติเมื่อบูตและทำให้คุณสามารถเพิ่มรายการใน / etc / fstab เพื่อติดตั้ง (ถ้ายังไม่มีอยู่)


6
ฉันอาจจะเพิ่ม: คุณควรอัปเดต initramfs ของคุณด้วยupdate-initramfs -u
Pablo Montepagano

1
mdadm --detail --scan ไม่ได้พิมพ์อะไรบนระบบของฉันแม้ว่าฉันรู้แน่ ๆ ว่าฉันมีสองพาร์ติชันที่เป็นส่วนหนึ่งของ raid0 (มิเรอร์) คำแนะนำทั่วไปเกี่ยวกับเรื่องนี้ยินดีต้อนรับ
Lennart Rolland

1
@LennartRolland - ลองmdadm -Esแทน
slm

สิ่งนี้ไม่ได้ผลสำหรับฉันฉันต้องทำgrub-install /dev/sdaเพื่อให้มันใช้งานได้ (แทนที่ sda สำหรับสิ่งที่เหมาะสมสำหรับคุณ)
gorn

อีกวิธีหนึ่งคุณสามารถใช้ตัวเลือกเคอร์เนล: md.auto=1... ฉันไม่ได้ทดสอบอย่างละเอียด แต่จริง ๆ แล้วมันจะตรวจจับและประกอบมัน (หรืออย่างน้อยก็พยายามทำเช่นนั้น) แต่kernel.org/doc/html/v4.15/admin-guide/md.htmlนั้นค่อนข้างคลุมเครือ: เมื่อ md ถูกคอมไพล์ลงในเคอร์เนล (ไม่ใช่โมดูล) พาร์ติชั่นประเภท 0xfd จะถูกสแกนและประกอบโดยอัตโนมัติ ลงในอาร์เรย์ RAID [... ] ในฐานะของเคอร์เนล 2.6.9 เฉพาะไดรฟ์ที่มี superblock ประเภท 0 เท่านั้นที่สามารถตรวจสอบอัตโนมัติและทำงานในเวลาบูต และมันไม่ได้หมายถึง md.auto (หรืออะไรก็ตาม) ดังนั้นฉันจึงไม่แน่ใจ
Pryftan

7

ฉันรู้ว่านี่เป็นคำถามที่เก่ากว่า แต่ฉันมีเวลาที่น่าผิดหวังกับ Ubuntu Server รุ่น 32.0 รุ่น 32 บิต

การทำงานmdadm --detail --scan >> /etc/mdadm/mdadm.confต่อท้ายบรรทัด

ARRAY / dev / md0 metadata = 1.2 name = ubuntu: 0 UUID = a8a570c6: 96f61865: 05abe131: 5c2e2f7e

หลังจากรีบูตฉันไม่สามารถเห็น / dev / md0 เรียกใช้mdadm --detail --scanอีกครั้ง (โดยไม่ใส่ผลลัพธ์ลงในไฟล์) ฉันจะเห็น

ARRAY / dev / md / ubuntu: 0 metadata = 1.2 name = ubuntu: 0 UUID = a8a570c6: 96f61865: 05abe131: 5c2e2f7e

และการติดตั้งด้วยตนเอง/dev/md/ubuntu:0จะใช้งานได้ ในท้ายที่สุดนั่นคือสิ่งที่ฉันใส่ในไฟล์ fstab ด้วย

ฉันไม่แน่ใจว่าสิ่งที่ฉันทำผิดถ้าเป็นเช่นนี้ใน Ubuntu 12.04 หรือว่านี่เป็นวิธีปฏิบัติที่ไม่ดี แค่อยากจะแบ่งปันสิ่งที่ได้ผลกับฉัน


ปัญหาเดียวกันที่นี่ ไม่แน่ใจว่ามันเป็นปัญหาหรือไม่ ..
Christophe De Troyer

3

บน Debian wheezy ต้องมีอีกหนึ่งขั้นตอน: ในautostart/etc/default/mdadmชุดจากเท็จเป็นจริง

#AUTOSTART:
# ควร mdadm เริ่มต้นอาร์เรย์ที่ระบุไว้ใน /etc/mdadm/mdadm.conf โดยอัตโนมัติ
# ระหว่างบู๊ต
AUTOSTART = true

นอกจากนี้ฉันต้องใช้mdadm -Es >>/etc/mdadm/mdadm.confแทน--scanตัวเลือกเพราะมันไม่ได้ผลสำหรับฉัน


3
sudo mdadm -Es >> /etc/mdadm/mdadm.conf

ตอนนี้แก้ไขบรรทัดที่เพิ่มเข้าไปใน /etc/mdadm/mdadm.conf ด้วยวิธีต่อไปนี้ ลบทุกอย่างยกเว้นส่วนพื้นฐาน มันควรมีลักษณะเช่น

ARRAY /dev/md5 UUID=031cea92:50a7a28c:6b077fe7:8817092a
ARRAY /dev/md6 UUID=53454954:4044eb66:9169d1ed:40905643

หมายเหตุ: คุณสามารถเลือก X ใน mdX เพื่อความสะดวกของคุณ

รีบูตตอนนี้

sudo update-initramfs -u
sudo reboot

แก้ไข: คำสั่งถูกแก้ไข


ฉันเขียน thi เพราะคำตอบของ Linker3000 ไม่ได้ผลสำหรับฉัน
สาบาน

3

ฉันมีปัญหานี้กับ Raspberry Pi 2 ที่รัน Raspbian GNU / Linux 8 (เจสซี) ฉันมีอาเรย์ RAID /dev/sda1และ/dev/sdb1ไม่สามารถประกอบตอนบู๊ตได้ ฉันมี/etc/mdadm/mdadm.confไฟล์ในรายการของฉัน

ARRAY /dev/md/0  metadata=1.2 UUID=53454954:4044eb66:9169d1ed:40905643 name=raspberrypi:0 

(ตัวเลขของคุณจะแตกต่างกันดูคำตอบอื่น ๆ เกี่ยวกับวิธีรับสิ่งนี้)

ฉันมี/etc/fstabไฟล์ในรายการของฉัน

/dev/md0        /data           ext4    defaults          0       0

(และ/dataแน่นอนมีอยู่จริง)

เช่นเดียวกับ OP ฉันสามารถรวบรวมและติดตั้งอาร์เรย์ RAID ด้วยมือหลังการบู๊ต แต่ฉันไม่สามารถทำให้มันเกิดขึ้นโดยอัตโนมัติในระหว่างการบู๊ตแม้จะตั้งค่าไว้อย่างถูกต้อง

ฉันสามารถแก้ไขปัญหาได้ดังนี้ ฉันตรวจสอบสคริปต์ที่/etc/init.d/mdadm-raidและแทรกบรรทัดของรหัสการแก้ปัญหา

ls /dev > /home/pi/devices.txt

รีบูทและตรวจสอบไฟล์นี้ฉันได้เรียนรู้ว่าอุปกรณ์/dev/sdaและ/dev/sdbมีอยู่ในขณะที่การmdadm-raidเริ่มต้นเกิดขึ้น แต่พาร์ติชัน/dev/sda1และ/dev/sdb1หายไป ฉันแก้ไข/etc/init.d/mdadm-raidไฟล์และแทรกบรรทัด

partprobe

หลังส่วนหัว (เช่นหลังจาก### END INIT INFOแต่ก่อนที่สคริปต์จะเริ่มต้น) นี่เป็นสาเหตุที่ตรวจพบพาร์ติชันและmdadm-raidสคริปต์จึงสามารถรวบรวมอาร์เรย์ RAID เพื่อแก้ไขปัญหา หวังว่านี่จะช่วยใครซักคน!


0

ฉันได้ต่อสู้กับสิ่งนี้ใน Raspbian โดยใช้ HDD USB ภายนอกสองตัวบน Raspberry Pi ฉันต้องยุ่งกับลำดับการเริ่มต้นของการบริการเพื่อให้แน่ใจว่า mdadm-raid เริ่มต้นหลังจากไดรฟ์ USB ได้รับการยอมรับโดย udev แต่ก่อน checkfs.sh (ซึ่งตรวจสอบระบบแฟ้มในเวลาบูต) หาก mdadm-raid เริ่มเร็วเกินไปก็ไม่สามารถใช้งานไดรฟ์ได้ดังนั้นจึงไม่มีการประกอบอาร์เรย์ นั่นหมายความว่า fsck ล้มเหลวในภายหลังและกระบวนการบู๊ตหลุดจากการบำรุงรักษาพร้อมท์ (เพราะต้องใช้อาเรย์การโจมตีสำหรับบริการอื่น ๆ )

การแก้ไขการพึ่งพาการบูตเพื่อเริ่ม mdadm-raid หลังจาก checkroot.sh แต่ก่อนที่จะ checkfs.sh และทำงานupdate-rc.d mdadm-raid defaultsตามด้วยupdate-initramfs -uv -k `uname -r`(หมายเหตุ backticks รอบ ๆuname) แก้ไขมัน (ในที่สุด) สำหรับฉันแล้ว YMMV


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

Raspbian รุ่นนี้เป็นรุ่นอะไร? ฉันว่ามันทำงานได้ดีใน Wheezy แต่การอัพเกรดไปที่ Jessie ทำให้ชุดประกอบแตกขณะบู๊ต
nwaltham

0

ฉันลองด้วย

mdadm --create /dev/md/abcdef ...

ฉันเห็นซอฟต์ลิงค์ยัง/dev/md/abcdefคงมีอยู่ในการรีบูตเครื่องและหากจำเป็นต้องเข้าถึงอุปกรณ์ผ่านซอฟต์ลิงค์

มันเป็นทางออกที่ยอมรับได้หรือไม่?


0

มีราสเบอร์รี่ Pi 3 เพิ่มrootdelay=5การ/boot/cmdline.txtแก้ไขปัญหานี้ให้ฉัน

เครดิตไปที่นี่

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