Bagaimana cara agar perangkat RAID tidak aktif bekerja kembali?

30

Setelah boot, perangkat RAID1 saya ( /dev/md_d0*) kadang-kadang masuk dalam keadaan lucu dan saya tidak bisa memasangnya.

* Awalnya saya buat /dev/md0tetapi entah bagaimana berubah menjadi /dev/md_d0.

# mount /opt
mount: wrong fs type, bad option, bad superblock on /dev/md_d0,
       missing codepage or helper program, or other error
       (could this be the IDE device where you in fact use
       ide-scsi so that sr0 or sda or so is needed?)
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

Perangkat RAID tampaknya tidak aktif, entah bagaimana:

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] 
                [raid4] [raid10] 
md_d0 : inactive sda4[0](S)
      241095104 blocks

# mdadm --detail /dev/md_d0
mdadm: md device /dev/md_d0 does not appear to be active.

Pertanyaannya adalah, bagaimana cara mengaktifkan perangkat lagi (menggunakan mdmadm, saya kira)?

(Lain kali tidak apa-apa (aktif) setelah boot, dan saya dapat me-mount secara manual tanpa masalah. Tapi itu tetap tidak akan me-mount secara otomatis walaupun saya memilikinya di /etc/fstab:

/dev/md_d0        /opt           ext4    defaults        0       0

Jadi pertanyaan bonus: apa yang harus saya lakukan untuk membuat perangkat RAID secara otomatis dipasang pada /optsaat boot? )

Ini adalah workstation Ubuntu 9,10. Info latar belakang tentang pengaturan RAID saya dalam pertanyaan ini .

Sunting : Penampilan saya /etc/mdadm/mdadm.confseperti ini. Saya tidak pernah menyentuh file ini, setidaknya dengan tangan.

# by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
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 <my mail address>

# definitions of existing MD arrays

# This file was auto-generated on Wed, 27 Jan 2010 17:14:36 +0200

Pada /proc/partitionsentri terakhir md_d0setidaknya sekarang, setelah reboot, ketika perangkat aktif kembali. (Saya tidak yakin apakah itu akan sama ketika tidak aktif.)

Resolusi : seperti yang disarankan Jimmy Hedman , saya mengambil output dari mdadm --examine --scan:

ARRAY /dev/md0 level=raid1 num-devices=2 UUID=de8fbd92[...]

dan menambahkannya /etc/mdadm/mdadm.conf, yang tampaknya telah memperbaiki masalah utama. Setelah berubah /etc/fstabuntuk menggunakan /dev/md0lagi (bukan /dev/md_d0), perangkat RAID juga akan dipasang secara otomatis!

Jonik
sumber

Jawaban:

25

Untuk pertanyaan bonus Anda:

mdadm --examine --scan >> /etc/mdadm/mdadm.conf
Jimmy Hedman
sumber
2
Ok, mdadm --examine --scandiproduksi ARRAY /dev/md0 level=raid1 num-devices=2 UUID=...(Perhatikan md0 bukan md_d0!) Saya menempatkan bahwa dalam file mdadm.conf (manual, karena beberapa masalah dengan sudo dan >>( "ijin ditolak"), dan sudo yang diperlukan) dan juga diperbarui fstab untuk digunakan md0 (bukan md_d0) lagi. Sekarang saya sepertinya tidak mengalami masalah "tidak aktif" lagi dan perangkat RAID dipasang secara otomatis di / opt saat booting. Jadi terima kasih!
Jonik
3
Alasan Anda mengalami masalah sudo ... >> mdadm.confadalah karena shell membuka file yang dialihkan sebelum sudo berjalan. Perintah su -c '.... >> mdadm.conf'harus bekerja.
Mei
10

Saya telah menemukan bahwa saya harus menambahkan array secara manual /etc/mdadm/mdadm.confuntuk membuat Linux me-mount-nya saat reboot. Kalau tidak, saya mendapatkan apa yang Anda miliki di sini - md_d1perangkat yang tidak aktif dll.

Conf-file akan terlihat seperti di bawah ini - yaitu satu- ARRAYline untuk setiap perangkat md. Dalam kasus saya, array baru tidak ada dalam file ini, tetapi jika Anda mencantumkannya, ini mungkin bukan perbaikan untuk masalah Anda.

# definitions of existing MD arrays
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=f10f5f96:106599e0:a2f56e56:f5d3ad6d
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=aa591bbe:bbbec94d:a2f56e56:f5d3ad6d

Tambahkan satu array per md-perangkat, dan tambahkan setelah komentar yang disertakan di atas, atau jika tidak ada komentar seperti itu, di akhir file. Anda mendapatkan UUID dengan melakukan sudo mdadm -E --scan:

$ sudo mdadm -E --scan
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=f10f5f96:106599e0:a2f56e56:f5d3ad6d
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=aa591bbe:bbbec94d:a2f56e56:f5d3ad6d

Seperti yang Anda lihat, Anda bisa menyalin output dari hasil pindaian ke dalam file.

Saya menjalankan desktop ubuntu 10,04 LTS, dan sejauh yang saya ingat perilaku ini berbeda dari versi server Ubuntu, namun sudah lama sekali saya membuat perangkat md-server saya, saya mungkin salah. Mungkin juga saya melewatkan beberapa opsi.

Lagi pula, menambahkan array di file conf tampaknya melakukan trik. Saya telah menjalankan raid 1 di atas dan raid 5 selama bertahun-tahun tanpa masalah.

Erik
sumber
1
Jadi pada dasarnya Anda mengatakan hal yang sama dengan jawaban yang saat ini diterima, hanya lebih secara verbal? :) Tetap saja, +1, posting pertama yang bagus.
Jonik
7

Peringatan: Pertama-tama izinkan saya mengatakan bahwa di bawah ini (karena penggunaan "- force") tampaknya berisiko bagi saya, dan jika Anda memiliki data yang tidak dapat dipulihkan, saya sarankan untuk membuat salinan partisi yang terlibat sebelum Anda mulai mencoba salah satu hal-hal di bawah ini. Namun, ini berhasil bagi saya.

Saya memiliki masalah yang sama, dengan array yang muncul sebagai tidak aktif, dan tidak ada yang saya lakukan termasuk "mdadm --examine --scan> /etc/mdadm.conf", seperti yang disarankan oleh orang lain di sini, membantu sama sekali.

Dalam kasus saya, ketika mencoba memulai array RAID-5 setelah penggantian drive, dikatakan bahwa itu kotor (via dmesg):

md/raid:md2: not clean -- starting background reconstruction
md/raid:md2: device sda4 operational as raid disk 0
md/raid:md2: device sdd4 operational as raid disk 3
md/raid:md2: device sdc4 operational as raid disk 2
md/raid:md2: device sde4 operational as raid disk 4
md/raid:md2: allocated 5334kB
md/raid:md2: cannot start dirty degraded array.

Menyebabkannya tidak aktif di /proc/mdstat:

md2 : inactive sda4[0] sdd4[3] sdc4[2] sde4[5]
      3888504544 blocks super 1.2

Saya memang menemukan bahwa semua perangkat memiliki kejadian yang sama pada mereka, kecuali drive yang saya ganti ( /dev/sdb4):

[root@nfs1 sr]# mdadm -E /dev/sd*4 | grep Event
mdadm: No md superblock detected on /dev/sdb4.
         Events : 8448
         Events : 8448
         Events : 8448
         Events : 8448

Namun, detail array menunjukkan bahwa perangkat itu memiliki 4 dari 5 perangkat yang tersedia:

[root@nfs1 sr]# mdadm --detail /dev/md2
/dev/md2:
[...]
   Raid Devices : 5
  Total Devices : 4
[...]
 Active Devices : 4
Working Devices : 4
[...]
    Number   Major   Minor   RaidDevice State
       0       8        4        0      inactive dirty  /dev/sda4
       2       8       36        2      inactive dirty  /dev/sdc4
       3       8       52        3      inactive dirty  /dev/sdd4
       5       8       68        4      inactive dirty  /dev/sde4

(Di atas adalah dari memori pada kolom "State", saya tidak dapat menemukannya di buffer scroll-back saya).

Saya dapat menyelesaikan ini dengan menghentikan array dan kemudian merakitnya kembali:

mdadm --stop /dev/md2
mdadm -A --force /dev/md2 /dev/sd[acde]4

Pada saat itu array sudah berjalan, berjalan dengan 4 dari 5 perangkat, dan saya dapat menambahkan perangkat pengganti dan sedang membangun kembali. Saya dapat mengakses sistem file tanpa masalah.

Sean Reifschneider
sumber
4

Saya mengalami masalah dengan Ubuntu 10,04 di mana kesalahan di FStab mencegah server untuk boot.

Saya menjalankan perintah ini sebagaimana disebutkan dalam solusi di atas:

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

Ini akan menambahkan hasil dari "mdadm --examine --scan" ke "/etc/mdadm/mdadm.conf"

Dalam kasus saya, ini adalah:

ARRAY /dev/md/0 metadata=1.2 UUID=2660925e:6d2c43a7:4b95519e:b6d110e7 name=localhost:0

Ini adalah fakeraid 0. Perintah saya di / etc / fstab untuk pemasangan secara otomatis adalah:

/dev/md0 /home/shared/BigDrive ext3 defaults,nobootwait,nofail 0 0

Yang penting di sini adalah Anda memiliki "nobootwait" dan "nofail". Nobootwait akan melewati pesan sistem apa pun yang mencegah Anda untuk boot. Dalam kasus saya, ini ada di server jauh jadi itu penting.

Semoga ini bisa membantu beberapa orang.

Nick Woodham
sumber
Inilah yang melakukannya untuk saya. Saya memiliki drive RAID saya terpasang melalui kartu SATA PCI express, jadi saya kira pada saat boot sistem belum dapat melihat drive tersebut.
Michael Robinson
2

Anda dapat mengaktifkan perangkat md Anda dengan

mdadm -A /dev/md_d0

Saya kira beberapa skrip startup dimulai terlalu cepat, sebelum salah satu anggota RAID ditemukan atau masalah serupa. Sebagai solusi cepat dan kotor, Anda harus dapat menambahkan baris ini ke /etc/rc.local:

mdadm -A /dev/md_d0 && mount /dev/md_d0

Edit: ternyata /etc/mdadm/mdadm.conf Anda masih berisi nama konfigurasi yang lama. Edit file ini dan ganti kejadian md0 dengan md_d0.

wazoox
sumber
Ok, pada kesempatan saat perangkat ini aktif setelah reboot, hanya mount /dev/md_d0di /etc/rc.localbekerja dengan baik. mdadm -A /dev/md_d0di sisi lain gagal dengan pesan kesalahan dalam kedua kasus (jadi saya tidak bisa menggunakannya sebelum &&operator itu). Lagi pula, setengah dari masalah tampaknya diselesaikan jadi +1 untuk itu.
Jonik
Sebenarnya mdadm.conf tidak mengandung nama konfigurasi apa pun, setidaknya secara langsung (itu merujuk pada /proc/partitionsmeskipun); lihat pertanyaan yang diedit. Saya tidak pernah menyentuh mdadm.conf - apa alat yang membuat otomatis itu?
Jonik
Sebagai catatan, hapus /etc/rc.localsolusinya karena sepertinya saya membuat semuanya berfungsi dengan baik: superuser.com/questions/117824/... :)
Jonik
2

Saya memiliki masalah yang sama ... server saya tidak dapat me-mount md2 setelah saya mengembangkan partisi perangkat yang terkait. Saat membaca utas ini, saya menemukan bahwa perangkat RAID MD2 memiliki UUID baru dan mesin mencoba menggunakan yang lama.

Seperti yang disarankan ... menggunakan output 'md2' dari

mdadm --examine --scan

Saya mengedit /etc/mdadm/mdadm.confdan mengganti baris UUID lama dengan satu output dari perintah di atas dan masalah saya hilang.

Peter Errity
sumber
2

Ketika Anda berpura-pura melakukan sesuatu dengan /dev/md[012346789}itu pergi ke /dev/md{126,127...}. /dev/md0terus dipasang di /dev/md126atau /dev/md127Anda harus:

umount /dev/md127 atau umount /dev/md126.

Ini bersifat sementara untuk memungkinkan Anda menjalankan perintah dan beberapa aplikasi tanpa menghentikan sistem Anda.

Vanderj68
sumber
1

md_d0 : inactive sda4[0](S)terlihat salah untuk array RAID1. Tampaknya menyarankan bahwa array tidak memiliki perangkat aktif dan satu perangkat cadangan (ditunjukkan oleh (S), Anda akan melihat (F) di sana untuk perangkat yang gagal dan tidak ada untuk perangkat OK / aktif) - untuk array RAID1 yang tidak 't menjalankan degradasi harus ada setidaknya dua perangkat OK / aktif (dan untuk array terdegradasi, setidaknya satu perangkat OK / aktif) dan Anda tidak dapat mengaktifkan array RAID1 tanpa ada perangkat gagal-cadangan tidak ada yang gagal (seperti suku cadang jangan berisi salinan data sampai mereka diaktifkan ketika drive lain gagal). Jika saya membaca /proc/mdstatoutput itu dengan benar, Anda tidak akan dapat mengaktifkan array dalam kondisi saat ini.

Apakah Anda memiliki drive fisik di mesin yang gagal spin-up? Apakah ls /dev/sd*daftar semua drive dan partisi yang biasanya Anda harapkan untuk melihat pada mesin itu?

David Spillett
sumber
Sepertinya saya tidak dapat mereproduksi situasi tidak aktif lagi, setelah mengikuti saran dalam jawaban Jimmy (sepertinya tetap setelah beberapa reboot) ... Yang bagus :) Terima kasih dalam hal apapun!
Jonik
Saya membawa pertanyaan tentang keadaan ini ke milis Linux RAID, dan mendapat tanggapan ini: spinics.net/lists/raid/msg61352.html
nh2
Seperti yang baru saja saya tulis di sini , echo active > /sys/block/md0/md/array_statebekerja untuk saya, menjadikan RAID saya tampil sebagai RAID1 dengan disk yang hilang lagi, bukan RAID0 dengan cadangan saja.
nh2
1

Cara sederhana untuk menjalankan array dengan asumsi tidak ada masalah perangkat keras dan Anda memiliki cukup drive / partisi untuk memulai array adalah sebagai berikut:

md20 : inactive sdf1[2](S)
      732442488 blocks super 1.2

 sudo mdadm --manage /dev/md20  --run

Bisa jadi karena alasan apa pun array baik-baik saja tetapi sesuatu mencegahnya dari memulai atau membangun. Dalam kasus saya ini karena mdadm tidak tahu nama array asli adalah md127 dan semua drive dicabut untuk array itu. Ketika memasang kembali saya harus merakit secara manual (mungkin bug di mana mdadm mengira array sudah aktif karena nama array luring yang offline).

Areeb Soo Yasir
sumber