Связаться со мной:
3 заметки с тегом

raid1

2015   debian   grub   grub2   raid   raid1   ubuntu

Замена диска в програмном RAID1 в Linux

Оглавление:

    I. Удаление диска из массива
    II. Добавление диска в массив после замены
     1. Определение таблицы разделов(GPT или MBR) и перенос её на новый диск
     2. Добавление диска в массив
    III. Установка загрузчика

У нас есть сервер в котором 2 диска: /dev/sda и /dev/sdb. Эти диски собраны у нас в софтверный RAID1 с помощью mdadm. Один из дисков вышел из строя, в нашем случае это /dev/sdb.

I. Удаление диска из массива

Перед заменой диска желательно убрать диск из массива. Для начала проверим как размечен диск в массиве:

# cat /proc/mdstat 
Personalities : [raid1] [raid0] [raid6] [raid5] [raid4] 
md2 : active raid1 sda4[0] sdb4[1]
      1456504640 blocks super 1.2 [2/2] [UU]
      
md1 : active raid1 sda3[0] sdb3[1]
      7996352 blocks super 1.2 [2/2] [UU]
      
md0 : active raid1 sda2[0] sdb2[1]
      499392 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>

В данном случае массив собран так. Что md0 состоит из sda2 и sdb2, md1 из sda3 и sdb3, md2 из sda4 и sdb4. На этом сервере md0 это /boot, md1 — своп, md2 — корень. Убираем sdb из всех устройств.

# mdadm /dev/md0 --remove /dev/sdb2
# mdadm /dev/md1 --remove /dev/sdb3
# mdadm /dev/md2 --remove /dev/sdb4

Если разделы из массива не удаляются, это как в нашем случае. Mdadm не считает диск неисправным и использует его, и при удалении мы увидим ошибку, что устройство используется. В этом случае перед удалением помечаем диск как сбойный.

# mdadm /dev/md0 -f /dev/sdb2
# mdadm /dev/md1 -f /dev/sdb3
# mdadm /dev/md2 -f /dev/sdb4

А затем снова выполним команды по удалению разделов из массива. Все, мы удалили сбойный диск из массива. Теперь можем писать в датацентр запрос на замену диска.

II. Добавление диска в массив после замены

  1. Определение таблицы разделов(GPT или MBR) и перенос её на новый диск

После замены поврежденного диска нужно добавить новый диск в массив. Для этого надо определить какая у нас таблица разделов: GPT или MBR. Для этого будем использовать gdisk Установим gdisk:

# apt-get install gdisk -y

Выполняем:

# gdisk -l /dev/sda

Где /dev/sda — исправный диск находящийся в raid. В выводе будет примерно это для MBR:

Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present

И примерно это для GPT:

Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present

Перед добавлением диска в массив нам нужно на нем создать разделы в точности такие же как и  на sda. В зависимости от разметки диска это делается по разному.

Копирование разметки для GPT:

# sgdisk -R /dev/sdb /dev/sda

Здесь надо быть внимательным. Первым пишется диск на который копируется разметка, а вторым с которого копируют. Если перепутать их местами, то разметка на изначально исправном диске будет уничтожена.
Даем диску новый случайный UIDD:

# sgdisk -G /dev/sdb

Копирование разметки для MBR:

# sfdisk -d /dev/sda | sfdisk /dev/sdb

Здесь наоборот первым пишется диск с которого переносим разметку, а вторым на который переносим. Если разделы не видны в системе, то можно перечитать таблицу разделов командой:

# sfdisk -R /dev/sdb

  2. Добавление диска в массив

Когда мы создали разделы на /dev/sdb, то можно добавлять диск в массив.

# mdadm /dev/md0 -a /dev/sdb2
# mdadm /dev/md1 -a /dev/sdb3
# mdadm /dev/md2 -a /dev/sdb4

III. Установка загрузчика

После добавления диска в массив нужно установить на него загрузчик. Если сервер загружен в нормальном режиме, то это делается одной командой:

# grub-install /dev/sdb

Если сервер загружен в recovery или rescue, т.е с live cd, то установка загрузчика выглядит следующим образом.
Монтируем корневую файловую систему в  /mnt:

# mount /dev/md2 /mnt

Монтируем boot:

# mount /dev/md0 /mnt/boot

Монтируем /dev, /proc и /sys:

# mount --bind /dev /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys  /mnt/sys

Затем делаем chroot в примонтированную систему:

# chroot /mnt

И устанавливаем grub на sdb:

# grub-install /dev/sdb

Теперь можно попробовать загрузится в нормальный режим.

P.S. Если при установке загрузчика возникнет ошибка Could not find device for /boot/boot: not found or not a block device то вам сюда.

2014   debian   gdisk   GPT   mbr   mdadm   raid   raid1   ubuntu

Linux recovery system Server4You manual

Автор: Артем Авдонин

Для чего может потребоваться загрузка вашего сервера под linux recovery system? Очевидный ответ - для проведения диагностики и процедур восстановления работоспособности ОС. Что же из себя представляет сервер, загруженный в recovery? Это загруженный на Вашем сервере, по сети, образ linux. В нём уже установлены все основные утилиты, которые могут быть использованы при диагностике и восстановлении работоспособности сервера. И так, у нас есть сервер в вышеупомянутом датацентре, загруженный в recovery mode. Оглавление (постоянно обновляется)

  1. Запуск и монтирование корневой файловой системы
  2. Ошибки файловой системы
  3. Проблемы RAID
  4. Проблемы HDD
  5. Сброс правил firewall
  6. Доступ к данным на сервере
  7. Сброс root пароля
Подключаемся к серверу по ssh. В качестве имени пользователя указываем суперпользователя root, пароль указывается при отправке сервера в recovery mode.

1. Запуск и монтирование корневой файловой системы

В случае, если в системе используется RAID массив, начнём с его запуска:
~# mdadm --assemble --run /dev/md2
Эта команда запускает software RAID массив с меткой md2. На серверах s4y чаще всего md2 является rootfs (корневой файловой системой). Но не исключено, что искомым будем массив с меткой md1. Массив md0 - раздел /boot По выполнению команды вы должны увидеть:
mdadm: /dev/md2 has been started with 2 drives.
Это значит, что RAID успешно запущен. Проверим нормально ли собрался RAID:
~# cat /proc/mdstat

Personalities : [raid1] [raid0] [raid6] [raid5] [raid4]
md2 : active raid1 sdb4[0] sda4[1]
      1456634744 blocks super 1.2 [2/2] [UU]                     

unused devices: <none>
2/2 дисков добавлено в массив. Всё в порядке. В случае 1/2 или ошибок после ввода команды сборки массива обращайтесь в раздел Проблемы RAID. Монтируем md2 в любую удобную вам точку. В данном случае я понтирую файловую систему в точку /mnt:
~# mount /dev/md2 /mnt
Удостоверимся, что то, что мы примонтировали является rootfs нашего сервера:
~# ls /mnt
aquota.user dev initrd.img lib64 mnt root srv usr
bin etc lib lost+found opt sbin sys var
boot home lib32 media proc selinux tmp vmlinuz
Видим вполне стандартное дерево каталогов корневой файловой системы linux дистрибутива. Значит md2 является rootfs Вашего сервера. Если у Вас установлен шаблон без использования RAID, то нужно просто смонтировать /dev/sdaX, где X номер раздела с ОС. После монтирования файловой системы можно начинать работу по диагностике проблем ОС или работать с вашими файлами.

2. Ошибки файловой системы

Часто ОС не может загрузиться из за ошибок файловой системы. Что бы исключить или подтвердить и исправить данную проблему необходимо выполнить проверку файловой системы с помощью fsck. fsck должен выполняться на отмонтированной файловой системе. Выполните раздел 1 этого руководства, исключая монтирование fs. Запустите таким образом md0 и md2 (/boot и корневую fs). После того как массивы для проверки собраны выполняется fsck для md0 и md2:
~# fsck -y /dev/md2
fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
/dev/md2 has been mounted 22 times without being checked, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/md2: 68650/91045888 files (0.2% non-contiguous), 6396596/364158686 blocks
fsck, в данном случае, выполнился без ошибок.

3. Проблемы RAID

Не загружающийся сервер может быть вызван не собирающимся, повреждённым, "развалившимся" RAID. Как запустить RAID указано в первой главе этой статьи. Запустите все имеющиеся у вас массивы и проверьте статистику mdstat:
~# cat /proc/mdstat
~# cat /proc/mdstat
Personalities : [raid1] [raid0] [raid6] [raid5] [raid4]
md1 : active raid1 sdb3[0] sda3[1](F)
7999476 blocks super 1.2 [2/1] [U_]
md2 : active raid1 sdb4[0] sda4[1](F) 
1456634744 blocks super 1.2 [2/1] [U_]
md0 : active raid1 sdb2[0] sda2[1](F) 
499700 blocks super 1.2 [2/1] [U_]

unused devices: <none>
Если вывод выглядит примерно так (обратите внимание на (F) и [2/1]) - это значит, что массив не собран и не работает. (F) - обозначает пометка массива как fail. [2/1] обозначает, что только один диск массива работает. Нужно удалить из массива сбойные разделы и попробовать добавить их снова:
~# mdadm /dev/md1 -r /dev/sda3
mdadm: hot removed /dev/sda3 from /dev/md1
~# mdadm /dev/md0 -r /dev/sda2
mdadm: hot removed /dev/sda3 from /dev/md0
~# mdadm /dev/md2 -r /dev/sda4
mdadm: hot removed /dev/sda3 from /dev/md2
Добавляем:
~# mdadm /dev/md0 -a /dev/sda2
Мы можем увидеть несколько ошибок и среди них
mdadm: To make this a spare, use "mdadm --zero-superblock /dev/sda2" first.
Выполняем mdadm --zero-superblock /dev/sda2 и повторяем mdadm /dev/md0 -a /dev/sda2 для каждого удаляемого выше раздела. Проверим добавились ли разделы в массив:
~# cat /proc/mdstat
Personalities : [raid1] [raid0] [raid6] [raid5] [raid4]
md1 : active raid1 sda3[2] sdb3[0]
 7999476 blocks super 1.2 [2/1] [U_]
 resync=DELAYED

md2 : active raid1 sda4[2] sdb4[0]
1456634744 blocks super 1.2 [2/1] [U_]
[>....................] recovery = 0.1% (2332928/1456634744) finish=365.5min speed=66306K/sec
md0 : active raid1 sda2[2] sdb2[0]

499700 blocks super 1.2 [2/2] [UU]

unused devices: <none>
Значит RAID собирается нормально. Если на одном из этапов возникла ошибка, то стоит попробовать сначала пересоздать всю таблицу разделов, возможно её что-то покрошило. Если даже после этого RAID не собирается, то нужно проверить жёсткие диски.

4. Проблемы HDD

Не загружается сервер? Не собирается RAID? Проверим диски! Конкретная ситуация - RAID на сервере не собирается. Разделы диска sda помечены как сбойные. Нужно проверить состояние s.m.a.r.t.  этого диска.

smartctl -a /dev/sda

Из всего вывода нас интересует только серийный номер диска и таблица s.m.a.r.t :
Model Family: Seagate Barracuda LP
Device Model: ST31500541AS
Serial Number: 5XW2PTK4
Из таблицы интересуют только показатели, связанные с bad blocks:
5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       23
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       15
Если показатели в последнем столбце отличнны от 0, это признак нарушения поверхности диска и он подлежит замене. Если значения равны нулю, но диск в RAID добавить не удаётся (или не удаётся смонтировать, в случае с шаблоном без RAID), то нужно выполнить проверку диска на badblocks. Процедура потребует времени - от 3  до 6 часов.
~# badblocks -v /dev/sda
Checking blocks 0 to 1465138583
Checking for bad blocks (read-only test): 0.01% done, 0:02 elapsed. (0/0/0 errors)
Если во время проверки появились ошибки залогируйте их где-нибудь для передачи в техподдержку для замены диска.

5. Сброс правил firewall

Случайно сохранили некорректные правила iptables и установили на автозагрузку? Вам нужно примонтировать вашу файловую систему (раздел 1) и исправить/удалить правила из автозагрузки. Путь до файла будет другой: файл бывший /etc/rc.local будет /mnt/etc/rc.local

6. Доступ к данным

Нужно просто снять бекапы? Выполняйте все действия из раздела 1. После этого Вы можете подключиться к серверу по sftp любым клиентом, например WinSCP и забрать Ваши файлы. Они будут находиться в каталоге /mnt

7. Сброс пароля

Для того, что бы сбросить root пароль нужно выполнить все действия из раздела 1 и выполнить chroot на папке в которую примонтирована корневая файловая система, в данном случае это /mnt
root@servername:~# chroot /mnt
servername:/#
Теперь можно менять пароль root:
servername:/# passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
2013   badblocks   chroot   fsck   mdadm   mirror   mount   passwd   raid   raid1   recovery   s.m.a.r.t.   s4y   server4you   smart