Bagaimana saya bisa membuat mdadm auto-assemble RAID setelah setiap boot?

43

Saya berhasil membuat RAID (mirroring) dengan memanfaatkan mdadm. Namun, saya harus menjalankan perintah berikut setelah setiap boot:

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

Apa yang saya lakukan salah / mengapa saya harus menjalankan perintah ini saat boot? Apa cara yang tepat untuk memulai RAID secara otomatis dengan setiap boot (kembali)?

BreakPhreak
sumber

Jawaban:

36

NB: Anda harus masuk sebagai root, atau menggunakan sudo untuk melakukan semua ini ...

  • Gunakan editor favorit Anda untuk membuat atau mengedit file /etc/mdadm/mdadm.conf sebagai berikut:

Jika file tersebut bahkan tidak ada, rekatkan yang berikut ke file baru yang kosong:

# 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
  • Simpan file

  • Jalankan perintah berikut untuk menambahkan referensi ke konfigurasi array Anda di akhir file:

    mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Ini harus menambahkan baris seperti berikut ke akhir mdadm.conf:

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

Jika perintah mdadm telah menambahkan hal-hal lain di atas garis ARRAY, hapus. Misalnya, di salah satu komputer saya, perintah mengembalikan 'mdadm: format metadata 00.90 tidak diketahui, diabaikan.' sebelum garis ARRAY.

Array Anda sekarang akan dibangun secara otomatis saat boot dan dengan demikian Anda dapat menambahkan entri ke / etc / fstab untuk memasangnya (jika belum ada di sana)

Linker3000
sumber
6
Saya mungkin akan menambahkan: Anda juga harus memperbarui initramfs Anda denganupdate-initramfs -u
Pablo Montepagano
1
mdadm --detail --scan tidak mencetak apa pun di sistem saya, walaupun saya tahu pasti bahwa saya memiliki dua partisi yang merupakan bagian dari raid0 (mirror). Semua saran umum tentang hal ini disambut baik.
Lennart Rolland
1
@LennartRolland - coba mdadm -Essebagai gantinya.
slm
ini tidak bekerja untuk saya, saya harus lakukan grub-install /dev/sdauntuk membuatnya bekerja (ganti sda untuk apa pun yang sesuai untuk Anda)
gorn
Atau Anda dapat menggunakan opsi kernel: md.auto=1... Saya belum benar-benar menguji ini secara menyeluruh tetapi seharusnya mendeteksi dan merakitnya (atau setidaknya mencoba untuk melakukannya). Tetapi kemudian kernel.org/doc/html/v4.15/admin-guide/md.html agak ambigu tentang hal itu: Ketika md dikompilasi ke dalam kernel (bukan sebagai modul), partisi tipe 0xfd dipindai dan secara otomatis dirakit ke dalam array RAID. [...] Pada kernel 2.6.9, hanya drive dengan superblock tipe 0 yang dapat terdeteksi secara otomatis dan dijalankan saat boot. Dan itu tidak merujuk ke md.auto (atau apa pun itu) jadi saya tidak yakin sekarang.
Pryftan
7

Saya menyadari ini adalah pertanyaan yang lebih lama, tetapi saya merasa frustasi dengan ini pada Ubuntu Server 12.04 versi 32-bit.

Menjalankan mdadm --detail --scan >> /etc/mdadm/mdadm.confmenambahkan garis

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

Setelah reboot saya tidak pernah bisa melihat / dev / md0. Menjalankan mdadm --detail --scanlagi (tanpa meletakkan hasilnya dalam file) saya akan melihat

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

dan pemasangan secara manual /dev/md/ubuntu:0akan berhasil. Pada akhirnya, itu juga yang saya taruh di file fstab.

Saya tidak yakin apa yang saya lakukan salah, apakah ini cara kerjanya di Ubuntu 12.04, atau apakah ini praktik yang buruk. Hanya ingin berbagi apa yang berhasil untuk saya.

Deplicator
sumber
Masalah yang sama disini. Tidak yakin apakah itu masalah, ..
Christophe De Troyer
3

Pada Debian, mengi, diperlukan satu langkah lagi: /etc/default/mdadmmengatur autostart dari false ke true

#AUTOSTART:
# harus mdadm memulai array yang terdaftar di /etc/mdadm/mdadm.conf secara otomatis
# saat boot?
AUTOSTART = true

Saya juga harus menggunakan mdadm -Es >>/etc/mdadm/mdadm.confbukan --scanopsi, karena itu tidak berhasil untuk saya.

Bogdan Hlevca
sumber
3
sudo mdadm -Es >> /etc/mdadm/mdadm.conf

Sekarang edit baris yang ditambahkan ke /etc/mdadm/mdadm.conf dengan cara berikut. Hapus semuanya, kecuali bagian dasar. Seharusnya terlihat seperti

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

Catatan: Anda dapat memilih X di mdX untuk kenyamanan Anda.

Sekarang reboot

sudo update-initramfs -u
sudo reboot

EDIT: perintah dikoreksi.

gorn
sumber
Saya menulis ini karena jawaban Linker3000 tidak bekerja untuk saya.
Gorn
3

Saya mengalami masalah ini pada Raspberry Pi 2 saya menjalankan Raspbian GNU / Linux 8 (jessie). Saya memiliki array RAID /dev/sda1dan /dev/sdb1yang gagal berkumpul saat boot. Saya punya di /etc/mdadm/mdadm.conffile saya entri

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

(nomor Anda akan berbeda; lihat jawaban lain tentang cara mendapatkan ini.)

Saya punya di /etc/fstabfile saya entri

/dev/md0        /data           ext4    defaults          0       0

(dan tentu saja /datamemang ada)

Seperti OP, saya bisa merakit dan me-mount array RAID dengan tangan setelah boot, tetapi saya tidak bisa mewujudkannya secara otomatis selama boot meskipun tampaknya pengaturannya sudah benar.

Saya bisa menyelesaikan masalah sebagai berikut. Saya menyelidiki skrip di /etc/init.d/mdadm-raiddan memasukkan sederet kode debug

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

Mem - boot ulang dan memeriksa file ini saya mengetahui bahwa perangkat /dev/sdadan /dev/sdbada pada saat mdadm-raidinisialisasi terjadi, tetapi partisi /dev/sda1dan /dev/sdb1hilang. Saya mengedit /etc/init.d/mdadm-raidfile dan memasukkan baris

partprobe

setelah header (yaitu setelah ### END INIT INFOtetapi sebelum skrip dimulai). Ini menyebabkan partisi terdeteksi dan mdadm-raidskrip mampu merakit array RAID, menyelesaikan masalah. Semoga ini bisa membantu seseorang!

Shaun Harker
sumber
0

Saya telah berjuang dengan ini pada Raspbian menggunakan beberapa HDD USB eksternal pada Raspberry Pi. Saya harus mengacaukan urutan awal layanan untuk memastikan bahwa mdadm-raid dimulai setelah drive USB dikenali oleh udev tetapi sebelum checkfs.sh (yang memeriksa filesystem pada saat boot). Jika mdadm-raid dimulai terlalu dini, drive tidak tersedia dan oleh karena itu array tidak dirakit. Itu berarti bahwa fsck kemudian gagal dan proses boot keluar ke prompt pemeliharaan (karena array raid diperlukan untuk layanan lain).

Memodifikasi dependensi boot untuk memulai mdadm-raid setelah checkroot.sh tetapi sebelum checkfs.sh dan berjalan update-rc.d mdadm-raid defaults, diikuti oleh update-initramfs -uv -k `uname -r`(catat backticks around uname) perbaiki (akhirnya). Bagi saya, bagaimanapun, YMMV.

Rodney
sumber
Perhatikan bahwa uname -r di atas seharusnya ada di tick-back tetapi saya tidak tahu bagaimana cara menghindarinya sehingga mereka dicetak di sini ...
Rodney
Versi raspbian manakah ini? Aku berhasil dengan baik pada Wheezy, tapi memperdagangkan Jessie merusak perakitan saat boot.
nwaltham
0

Saya mencoba

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

Saya melihat softlink yang ada /dev/md/abcdefsaat reboot dan jika perlu mengakses perangkat melalui soft link.

Apakah ini solusi yang dapat diterima?

dendam
sumber
0

Memiliki Raspberry Pi 3, menambahkan rootdelay=5untuk /boot/cmdline.txtmemecahkan masalah ini untuk saya.

Kreditnya ada di sini .

Petr Újezdský
sumber