7

У меня есть том mdadm/lvm2 с 4 HD, которые я создал в Ubuntu 10.04. Я только что обновил компьютер до Ubuntu 10.10.

Я переделал команды mdadm, чтобы получить том и запустить том, сделал mdadm --detail --scan> /etc/mdadm/mdadm.conf, чтобы получить файл конфигурации.

Но теперь, каждый раз, когда я перезагружаюсь, он говорит мне, что объем не готов. /proc /mdstat говорит, что у меня всегда один диск тома "неактивен" как md_d127. Мне нужно остановить этот том и собрать все заново, чтобы он заработал.

Это то, что я получаю из mdadm --detail --scan и помещаю в /etc/mdadm/mdadm.conf:

ARRAY /dev/md127 level=raid5 num-devices=4 metadata=01.02 name=:r0 UUID=7610a895:a54fe65b:c9876d2a:67f4a179

И это мой /proc /mdstat при загрузке:

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md127 : inactive sdb1[2](S) sdd1[0](S) sda1[4](S)
      2930279595 blocks super 1.2

md_d127 : inactive sdc1[1](S)
      976759865 blocks super 1.2

unused devices: <none>

Мне нужно выполнить mdadm -S /dev /md_d127, mdadm -S /dev /md127, mdadm -A --scan, чтобы этот том снова заработал.

В чем дело? Этого не произошло с Ubuntu 10.04. Я действительно боюсь потери моих данных raid5 сейчас.

4 ответа4

3

Проблема в том, что обновленная версия mdadm опирается на mdadm.conf присутствующий в вашем initrd , который, вероятно, не является точным / полным. Чтобы проверить его содержимое, сделайте это:

gunzip -c /boot/initrd.img-2.6.38-11-generic | cpio -i --quiet --to-stdout etc/mdadm/mdadm.conf

Если он не содержит точных записей ARRAY, mdadm попытается использовать имя, настроенное в суперблоке, в качестве имени ссылки в /dev/md/ , что будет ссылаться на что-то вроде /dev/md127 . Это явно не соответствует предыдущему поведению.

Вместо непосредственного использования mdadm -Ds или mdadm -Es для генерации /etc/mdadm/mdadm.conf , вероятно, лучше использовать скрипт /usr/share/mdadm/mkconf :

sudo /usr/share/mdadm/mkconf force-generate /etc/mdadm/mdadm.conf

Самый важный шаг - перестроить ваши initramfs, чтобы включить обновленную конфигурацию:

sudo update-initramfs -u

На самом деле, благодаря волшебству в /usr/share/initramfs-tools/hooks/mdadm , /usr/share/mdadm/mkconf будет запускаться автоматически, если /etc/mdadm/mdadm.conf не существует или не содержит массивов. Если он существует и содержит только подмножество ваших активных массивов, для каждого отсутствующего массива отображается предупреждение, и вы должны вручную сгенерировать новый mdadm.conf .

2

Вы также можете проверить, что udev загружает mdadm.

Поищите /lib/udev/rules.d/85-mdadm.rules ; убедитесь, что он имеет что-то вроде этого:

\# This file causes block devices with Linux RAID (mdadm) signatures to
\# automatically cause mdadm to be run.
\# See udev(8) for syntax

SUBSYSTEM=="block", ACTION=="add|change", ENV{ID_FS_TYPE}=="linux_raid*", \
        RUN+="/sbin/mdadm --incremental $env{DEVNAME}"

Если нет, скопируйте это в /etc/udev/rules.d/85-mdadm.rules - ПРИМЕЧАНИЕ /etc NOT /lib .

1

Пожалуйста, отредактируйте это

metadata=01.02

с

metadata=1.02

Потому что результаты от

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

не совсем правильно.

1

Я прибегал к переформатированию всего массива. Это работает в Ubuntu 10.10.

sudo mdadm -C /dev/md0 -l 5 -n 4 -e 1.2 /dev/sd[bcde]1
sudo mdadm -Ds | sudo tee /etc/mdadm/mdadm.conf

sudo pvcreate /dev/md0
sudo vgcreate vg0 /dev/md0
sudo lvcreate vg0 --name lv0 --extents '100%FREE'

sudo mkfs.ext4 /dev/vg0/lv0

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .