Mdadm: различия между версиями

Материал из ALT Linux Wiki
Строка 35: Строка 35:




= Изменение hostname и рэйды v.1.2 =
= Изменение hostname =


Грузимся с Live CD, режим восстановления (например с Server Light)
Грузимся с Live CD, режим восстановления (например с Server Light)
Рэйды соберутся с именами md121,md122 и т.д. т.к. hostname = localhost and != <старому имени>
Рэйды соберутся с именами md121,md122 и т.д. т.к. hostname = localhost and != старое_имя
 
Останавливаем все рэйды
Останавливаем все рэйды


Строка 47: Строка 48:
</pre>
</pre>


собираем рэйды со старым hostname
Cобираем рэйды со старым именем:
<pre>
<pre>
mdadm -A --homehost=<старое имя> --scan
mdadm -A --homehost=старое_имя --scan
cat /proc/mdadm (смотрим, что все собралось)
</pre>
Cмотрим, что все собралось:
<pre>
cat /proc/mdadm
</pre>
</pre>


Подготавливаемся к переименованию
Подготавливаемся к переименованию.
Добавляем информацию в /etc/mdadm.conf
<pre>
<pre>
echo "HOMEHOST <system>" >> /etc/mdadm.conf
echo "HOMEHOST новое_имя" >> /etc/mdadm.conf
mdadm -D --scan >> /etc/mdadm.conf
mdadm -D --scan >> /etc/mdadm.conf
<pre>
cat /etc/mdadm.conf
MAILADDR root@localhost
PROGRAM /sbin/mdadm-syslog-events
DEVICE partitions
HOMEHOST новое_имя
ARRAY /dev/md/0 metadata=0.90 UUID=edd10aa9:b2be5d13:bfe78010:bc810f04
ARRAY /dev/md/1 metadata=1.2 name=<старое_имя>:1 UUID=137c3ff2:9aefae7b:ee71cb74:442e0b4e
</pre>
</pre>
</pre>
В рейдах версии 0.9 информация о homehost хранится в UUID рэйда.
Необходимо из /etc/mdadm.conf удалить параметр UUID и добавить информацию о всех устройствах которые используются в рэйдах
В редах версии 1.2 информация о homehost храниться в name.
Необходимо просто удалить параметра name.
После изменений должно выглядеть примерно так:
<pre>
<pre>
cat /etc/mdadm.conf
cat /etc/mdadm.conf
Строка 63: Строка 85:
PROGRAM /sbin/mdadm-syslog-events
PROGRAM /sbin/mdadm-syslog-events
DEVICE partitions
DEVICE partitions
HOMEHOST <system>
HOMEHOST новое_имя


ARRAY /dev/md1 metadata=1.2 name=<старое имя>:1 UUID=137c3ff2:9aefae7b:ee71cb74:442e0b4e
ARRAY /dev/md/0 metadata=0.90 devices=/dev/sdb
ARRAY /dev/md2 metadata=1.2 name=<старое имя>:2 UUID=aa131b47:7493ade5:55b53715:6676cc2d
ARRAY /dev/md/1 metadata=1.2 UUID=137c3ff2:9aefae7b:ee71cb74:442e0b4e
</pre>
</pre>


Cобираем рэйды под новое имя сервера
Cобираем рэйды версии 0.9 под новое имя:
<pre>
mdadm -S /dev/md0
mdadm --verbose -A /dev/md0 --update=uuid --scan
</pre>


Cобираем рэйды версии 1.2 под новое имя:
<pre>
<pre>
hostname <новое имя сервера>
mdadm -S /dev/md1
mdadm -S md1
mdadm --verbose -A /dev/md1 --update=name --scan
mdadm --verbose -A /dev/md1 --update=homehost --scan
mdadm -S md2
mdadm --verbose -A /dev/md2 --update=homehost --scan
</pre>
</pre>


проверяем
Проверяем
Для версии 0.9
<pre>
  mdadm -D /dev/md0
</pre>
должно содержать
<pre>
  ...
UUID : f09038d2:80fbe89e:e76927ce:3fd4fe03 (local to host новое_имя)
  ...
</pre>


Для версии 1.2
<pre>
   mdadm -D /dev/md1
   mdadm -D /dev/md1
 
</pre>
должно содержать
должно содержать
<pre>
   ...
   ...
   Name : <новое имя сервера>:1  (local to host <новое имя сервера>)
   Name : новое_имя:1  (local to host новое_имя)
   ...
   ...
</pre>
Если всё так, то mdadm уже по супрблокам сможет определить какое устаройство в каком масиве.
<pre>
mdadm -S /dev/md0
mdadm -S /dev/md1
mdadm -A --homehost=новое_имя --scan
cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb2[0]
      194496 blocks [2/1] [U_]
     
md1 : active raid1 sdb3[0]
      34147200 blocks super 1.2 [2/1] [U_]
</pre>   
Если hostname будет новое_имя, т.е. уже на реальной машине, определение будет проходить полностью автоматически:
<pre>
mdadm -A --scan
</pre>
Если в реальном рабочем mdadm.conf были данные об этих массивах, но со старым_именем, то его необходимо изменить. Внести в него данные из выхлопа:
<pre>
mdadm -D --scan
</pre>
который уже будет содержать новые данные.


Монтиируем систему и вносим изменения в initrd
Монтиируем систему и вносим изменения в initrd

Версия от 08:18, 11 февраля 2015


Примеры использования mdadm

Отсканировать устройства и собрать массивы (после взлета с live CD)

 mdadm -A --scan

Переименовать /dev/md127 в /dev/md0

 mdadm --stop  /dev/md127 
 mdadm -A /dev/md0 --update=super-minor /dev/sda1 /dev/adb1 

Собрать массив в ручную

 mdadm -A /dev/md1 /dev/sd{a,b}1

Остановить массив

 mdadm /dev/md0 --stop
 

Заменить диск в массиве

 mdadm /dev/md0 --fail /dev/sda1
 mdadm /dev/md0 --remove /dev/sda1
 mdadm /dev/md0 --add /dev/sda1

Собрать raid1 с одним диском

Иногда при миграции на raid1 бывает нужно.

 mdadm -C --level=1 -e0.9 --raid-devices=2 /dev/sdb1 missing

Внимание: Если массив будет содержать /boot (в виде отдельной файловой системы, или в составе /), то версия метаданных должна быть 0.9.

Потом добавим второй

 mdadm /dev/md0 --add /dev/sda1


Изменение hostname

Грузимся с Live CD, режим восстановления (например с Server Light) Рэйды соберутся с именами md121,md122 и т.д. т.к. hostname = localhost and != старое_имя

Останавливаем все рэйды

mdadm -S /dev/md121
mdadm -S /dev/md122
...

Cобираем рэйды со старым именем:

mdadm -A --homehost=старое_имя --scan

Cмотрим, что все собралось:

cat /proc/mdadm

Подготавливаемся к переименованию. Добавляем информацию в /etc/mdadm.conf

echo "HOMEHOST новое_имя" >> /etc/mdadm.conf
mdadm -D --scan >> /etc/mdadm.conf
<pre>
cat /etc/mdadm.conf
MAILADDR root@localhost
PROGRAM /sbin/mdadm-syslog-events
DEVICE partitions
HOMEHOST новое_имя

ARRAY /dev/md/0 metadata=0.90 UUID=edd10aa9:b2be5d13:bfe78010:bc810f04
ARRAY /dev/md/1 metadata=1.2 name=<старое_имя>:1 UUID=137c3ff2:9aefae7b:ee71cb74:442e0b4e

В рейдах версии 0.9 информация о homehost хранится в UUID рэйда. Необходимо из /etc/mdadm.conf удалить параметр UUID и добавить информацию о всех устройствах которые используются в рэйдах В редах версии 1.2 информация о homehost храниться в name. Необходимо просто удалить параметра name. После изменений должно выглядеть примерно так:

cat /etc/mdadm.conf
MAILADDR root@localhost
PROGRAM /sbin/mdadm-syslog-events
DEVICE partitions
HOMEHOST новое_имя

ARRAY /dev/md/0 metadata=0.90 devices=/dev/sdb
ARRAY /dev/md/1 metadata=1.2 UUID=137c3ff2:9aefae7b:ee71cb74:442e0b4e

Cобираем рэйды версии 0.9 под новое имя:

mdadm -S /dev/md0
mdadm --verbose -A /dev/md0 --update=uuid --scan

Cобираем рэйды версии 1.2 под новое имя:

mdadm -S /dev/md1
mdadm --verbose -A /dev/md1 --update=name --scan

Проверяем

Для версии 0.9

   mdadm -D /dev/md0

должно содержать

  ...
UUID : f09038d2:80fbe89e:e76927ce:3fd4fe03 (local to host новое_имя)
  ...

Для версии 1.2

   mdadm -D /dev/md1

должно содержать

  ...
  Name : новое_имя:1  (local to host новое_имя)
  ...

Если всё так, то mdadm уже по супрблокам сможет определить какое устаройство в каком масиве.

mdadm -S /dev/md0
mdadm -S /dev/md1
mdadm -A --homehost=новое_имя --scan
cat /proc/mdstat
Personalities : [raid1] 
md0 : active raid1 sdb2[0]
      194496 blocks [2/1] [U_]
      
md1 : active raid1 sdb3[0]
      34147200 blocks super 1.2 [2/1] [U_]

Если hostname будет новое_имя, т.е. уже на реальной машине, определение будет проходить полностью автоматически:

mdadm -A --scan

Если в реальном рабочем mdadm.conf были данные об этих массивах, но со старым_именем, то его необходимо изменить. Внести в него данные из выхлопа:

mdadm -D --scan

который уже будет содержать новые данные.

Монтиируем систему и вносим изменения в initrd

mount-system
chroot /mnt/system1

Изменяем в /etc/sysconfig/network HOSTNAME=<новое имя сервера>

echo "homehost <system>" >> /etc/mdadm.conf
mdadm -D --scan >> /etc/mdadm.conf  (и в нем удаляем старые ARRAY)
make-initrd -k <версия ядра> (смотрим в ls -1 /lib/modules)

P.S. если корень на raid v1.2 то

apt-get install make-initrd-mdadm
cat /etc/initrd.mk
# trying to detect modules and features to access to root volume
AUTODETECT = all
FEATURES += mdadm