Для теста обновлю прошивку Smart Array P420i на сервере HPE DL380p G8.
Читать далее «Обновление прошивки Smart Array P420i»Архивы меток:RAID
Настройка программного RAID1 на работающей системе Ubuntu
Приведу пример миграции работающей системы Ubuntu на программный RAID1.
В процессе необходимо будет выполнить две перезагрузки.
Первым делом переключимся на root пользователя если еще не под ним:
sudo -i
Посмотрим список дисков и разделов:
fdisk -l fdisk -l | grep '/dev/sd' lsblk -o NAME,UUID
Предположим что в системе используется один диск, например /dev/sda и имеет один основной раздел /dev/sda1.
Для теста установил чистый Ubuntu Server 18.04, диск так был размечен по умолчанию, swap был файлом на этом же разделе.
Чтобы создать рейд, подключим еще один диск такого же размера, он будет называться /dev/sdb.
Читать далее «Настройка программного RAID1 на работающей системе Ubuntu»
Решение предупреждения «mismatch_cnt is not 0 on /dev/md*»
Заменил однажды нерабочий диск в программном RAID1, добавил его в рейд, он успешно синхронизировался, установил GRUB.
Через некоторое время получил email сообщение:
Subject: Cron <root@server> /usr/sbin/raid-check WARNING: mismatch_cnt is not 0 on /dev/md2
В моем случае raid-check обнаружил что счетчик mismatch_cnt не равняется 0 для /dev/md2, а это может говорить о том что на диске возможно есть битые сектора, либо его просто нужно пересинхронизировать. Так как я установил GRUB после добавления диска в рейд, то это скорее и является причиной.
Пример просмотра счётчиков всех массивов:
cat /sys/block/md*/md/mismatch_cnt
Или каждого по очереди:
cat /sys/block/md0/md/mismatch_cnt cat /sys/block/md1/md/mismatch_cnt cat /sys/block/md2/md/mismatch_cnt
Просмотр состояния рейдов:
cat /sys/block/md*/md/sync_action
Если mismatch_cnt не равно 0 для какого либо массива, то можно попробовать его ресинхронизировать:
echo 'repair' >/sys/block/md2/md/sync_action
И проверить:
echo 'check' >/sys/block/md2/md/sync_action
Если понадобится отменить действие:
echo 'idle' >/sys/block/md2/md/sync_action
Посмотрим статус синхронизации и прочие данные массива:
cat /proc/mdstat
Если ошибки появляются из-за плохого диска, рекомендую посмотреть SMART и проверить его как я писал в этих статьях:
Диагностика HDD используя smartmontools
Тест диска в Linux на наличие ошибок и битых секторов
Смотрите также:
Решение проблемы с выпавшими дисками mdadm
Решение проблемы с выпавшими дисками mdadm
Получил сегодня от одного из серверов на Hetzner три email сообщения с информацией о рейдах md0, md1, md2:
DegradedArray event on /dev/md/0:example.com
This is an automatically generated mail message from mdadm
running on example.com
A DegradedArray event had been detected on md device /dev/md/0.
Faithfully yours, etc.
P.S. The /proc/mdstat file currently contains the following:
Personalities : [raid6] [raid5] [raid4] [raid1]
md2 : active raid6 sdb3[1] sdd3[3]
208218112 blocks super 1.0 level 6, 512k chunk, algorithm 2 [4/2] [_U_U]
md1 : active raid1 sdb2[1] sdd2[3]
524224 blocks super 1.0 [4/2] [_U_U]
md0 : active raid1 sdb1[1] sdd1[3]
12582784 blocks super 1.0 [4/2] [_U_U]
unused devices:
Посмотрел информацию о RAID и дисках:
cat /proc/mdstat cat /proc/partitions mdadm --detail /dev/md0 mdadm --detail /dev/md1 mdadm --detail /dev/md2 fdisk -l | grep '/dev/sd' fdisk -l | less
Собрался отправить тикет в техподдержку и запланировать замену выпавших SSD дисков.
Записал SMART информацию о выпавших дисках в файлы, там же был их серийный номер:
smartctl -x /dev/sda > sda.log smartctl -x /dev/sdc > sdc.log
Удалить диски из рейда если что можно так:
mdadm /dev/md0 -r /dev/sda1 mdadm /dev/md1 -r /dev/sda2 mdadm /dev/md2 -r /dev/sda3 mdadm /dev/md0 -r /dev/sdc1 mdadm /dev/md1 -r /dev/sdc2 mdadm /dev/md2 -r /dev/sdc3
Если какой-то раздел диска отображается как рабочий, а диск нужно извлечь, то сначала помечаем раздел не рабочим и потом удаляем, например если /dev/sda1, /dev/sda2 выпали, а /dev/sda3 работает:
mdadm /dev/md0 -f /dev/sda3 mdadm /dev/md0 -r /dev/sda3
В моем случае, посмотрев информацию о выпавших дисках обнаружил что они целые и рабочие, даже лучше активных.
Посмотрел разделы дисков:
fdisk /dev/sda p q fdisk /dev/sdc p q
Они были размечены одинаково как и прежде:
Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00015e3f
Device Boot Start End Blocks Id System
/dev/sda1 1 1567 12582912+ fd Linux raid autodetect
/dev/sda2 1567 1633 524288+ fd Linux raid autodetect
/dev/sda3 1633 14594 104109528+ fd Linux raid autodetect
Поэтому поочередно дождавшись синхронизации каждого вернул эти диски обратно в рейд:
mdadm /dev/md0 -a /dev/sda1 mdadm /dev/md1 -a /dev/sda2 mdadm /dev/md2 -a /dev/sda3 mdadm /dev/md0 -a /dev/sdc1 mdadm /dev/md1 -a /dev/sdc2 mdadm /dev/md2 -a /dev/sdc3
По окончании команда cat /proc/mdstat уже отображалась с [UUUU].
Если диски заменили новыми, то их нужно разбить аналогично установленным.
Пример разметки диска /dev/sdb аналогично /dev/sda с MBR:
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Пример разметки /dev/sdb с GTP и назначения диску случайного UUID:
sgdisk -R /dev/sdb /dev/sda sgdisk -G /dev/sdb
Также на новоустановленный диск необходимо установить загрузчик:
grub-install --version grub-install /dev/sdb update-grub
Либо через меню grub (hd0 это /dev/sda, hd0,1 — /dev/sda2):
cat /boot/grub/device.map grub device (hd0) /dev/sda root (hd0,1) setup (hd0) quit
Если установка grub выполняется из загрузочного диска, то нужно посмотреть список разделов и выполнить монтирование, например если RAID не используется:
ls /dev/[hsv]d[a-z]*[0-9]* mount /dev/sda3 /mnt
Если используется программный RAID:
ls /dev/md* mount /dev/md2 /mnt
Либо LVM:
ls /dev/mapper/* mount /dev/mapper/vg0-root /mnt
И выполнить chroot:
chroot-prepare /mnt chroot /mnt
После монтирования можно восстанавливать GRUB как я писал выше.
Смотрите также другие мои статьи:
Как я делал заявку в Hetzner на замену диска в рейде
Решение ошибки «md: kicking non-fresh sda1 from array»
Решение предупреждения «mismatch_cnt is not 0 on /dev/md*»
mdadm — утилита управления программными RAID массивами
Описание типов RAID
Диагностика HDD используя smartmontools
Восстановление GRUB Linux
Создание RAID при установке Ubuntu
На тесте при установке Ubuntu Server 14.04 LTS создам программный RAID1.
Замечу что, при создании RAID будет автоматически использоваться mdadm.
Подключу к серверу два одинаковых диска (аналогично можно попробовать создать RAID на виртуальной машине например созданной в VirtualBox).
mdadm — утилита управления программными RAID массивами
Рекомендую прочитать мою статью Описание типов RAID.
Установить mdadm в Ubuntu можно командой:
Читать далее «mdadm — утилита управления программными RAID массивами»Описание типов RAID
Массивы RAID необходимы для повышения надежности хранения данных и для увеличения скорости работы с дисками путем объединения нескольких дисков в один большой. RAID массивы могут быть как аппаратные, аппаратно-программные так и программные.
Читать далее «Описание типов RAID»