Замена SSD дисков в программном RAID массиве на Hetzner

Я арендую dedicated сервер в Hetzner. Конфигурация Intel Core i7-4770 / HDD2x SSD SATA 240 GB / RAM4x RAM 8192 MB DDR3. Однажды я получил системное сообщение от smartd daemon (они прилетают мне на почту) вида:

This message was generated by the smartd daemon running on:

host name: onlysites
DNS domain: ru

The following warning/error was logged by the smartd daemon:

Device: /dev/sdb [SAT], FAILED SMART self-check. BACK UP DATA NOW!

Device info:
Micron_1100_MTFDDAK256TBN, S/N:171619DDE590, WWN:5-00a075-119dde590, FW:M0MU031, 256 GB

For details see host’s SYSLOG.

You can also use the smartctl utility for further investigation.
The original message about this issue was sent at Thu Jan 21 23:03:52 2021 MSK
Another message will be sent in 24 hours if the problem persists.

Сразу стало понятно, что возникли какие-то проблемы с SSD дисками. Первым делом я написал в поддержку:

Received a SMART error message — please tell me what is the reason?

И сразу получил ответ:

Otherwise confirm us a downtime of approx. 30 minutes so we can do a brief drive check.

А затем:

We now checked this and both drives should be replaced soon.

/dev/sda  256 GB  171919DDE45D  43°C    23382 hours
   Sector size                    512n (512 log+phys)
   Percent_Lifetime_Remain        99      FAILING_NOW
   Current_Pending_Sector         0
   Error_Correction_Count         0
   Offline_Uncorrectable          0
   Raw_Read_Error_Rate            0
   Reallocate_NAND_Blk_Cnt        0
---------------------------------------
/dev/sdb  256 GB  171619DDE590  44°C    23728 hours
   Sector size                    512n (512 log+phys)
   Percent_Lifetime_Remain        100     FAILING_NOW
   Current_Pending_Sector         0
   Error_Correction_Count         0
   Offline_Uncorrectable          0
   Raw_Read_Error_Rate            2
   Reallocate_NAND_Blk_Cnt        1
---------------------------------------

We now booted the server back to the installed system.

Please backup your data if needed and confirm us the complete data loss of the server so that we can replace the drives.

Also schedule us an appointment in CET (Central European Time) for the replacement.

То есть при выработке в 23728 часов SSD начал сыпаться (Raw_Read_Error_Rate 2 и Reallocate_NAND_Blk_Cnt 1). Для меня все происходящее было неожиданностью, т.к. опыта замены дисков в RAID массиве я не имел.

Компания в последующей переписке всячески отказывалась брать на себя любого вида работы по синхронизации и переносу контента. Изначально я предполагал заплатить за это как за сервис, и не забивать себе голову. Но вся дальнейшая переписка вела к тому, что со своей стороны они могут только лишь поменять железо. Все программные настройки это моя зона ответственности.

> Can you make a complete full copy of all data when you was replace the
> drives?

I’m afraid we do not offer such services for our unmanaged dedicated root servers.

Я был настойчив. Немцы тоже.

We don’t provide any support regarding software, administration and troubleshooting for our dedicated servers, so I’m afraid we cannot help you with this. We simply setup the hardware and take care of the network connection. You have full root access so you are responsible for setting up the server.

You can try to find more information by using a search engine (like google). Alternatively, you can have a look in our wiki (http://wiki.hetzner.de/) for some general information or sign up for our forum (http://forum.hetzner.de) and post your questions there.

В итоге я сдался, и пошел читать инструкцию https://docs.hetzner.com/robot/dedicated-server/raid/exchanging-hard-disks-in-a-software-raid/

Из инструкции стало понятно, что алгоритмически, замена диска в программном RAID массиве сводится к выполнению следующих шагов:

1. Просмотр текущей конфигурации RAID массива

Здесь можно увидеть какой из SSD дисков выпал. Посмотреть это можно по флагам [UU]. Так [U_] или так [_U] будет означать, что один из дисков выпал из RAID массива. В моем случае никакой из дисков не является выпавшим, оба работают, просто начали осыпаться.

cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sda1[2] sdb1[1]
      16760832 blocks super 1.2 [2/2] [UU]
md2 : active raid1 sdb3[1] sda3[0]
      232624448 blocks super 1.2 [2/2] [UU]
      bitmap: 2/2 pages [8KB], 65536KB chunk
md1 : active raid1 sdb2[1] sda2[2]
      523712 blocks super 1.2 [2/2] [UU]
unused devices:<none>

2. Отключение диска перед заменой

mdadm /dev/md0 -r /dev/sdb1
mdadm /dev/md1 -r /dev/sdb2
mdadm /dev/md2 -r /dev/sdb3

В моем случае, диск не был выпавшим, и отключить его, на ходу, не удалось. Это сделал хостер при замене.

mdadm /dev/md0 -r /dev/sda1
mdadm: hot remove failed for /dev/sda1: Device or resource busy

3. Определение типа загрузочной записи

Тут был нюанс с определением типа загрузочной записи. Я использовал команду:

parted -l
Model: ATA Micron_1100_MTFD (scsi)
Disk /dev/sda: 256GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Значение msdos говорит о том, что в моем случае это MBR

4. Создание backup таблицы разделов (для последующего восстановления)

Создать backup (MBR или GPT):

sfdisk --dump /dev/sdb > sdb_parttable_mbr.bak
sgdisk --backup=sdb_parttable_gpt.bak /dev/sdb

5. Подачи заявки на замену дисков

25.01.2021 14:44, Support — Hetzner Online GmbH пишет:

Ok. Now I’m ready to proceed

But now, when I try this one, from instruction, I’ve got ‘hot remove failed’

> root@onlysites / # mdadm /dev/md0 -r /dev/sdb1
> mdadm: hot remove failed for /dev/sdb1: Device or resource busy

You do it when you was remove device or not?

First of all I need to change device /dev/sdb:

> /dev/sdb 256 GB 171619DDE590

Now I’ve got backup mbr, and ready to replacement.
Please do it as soon as possible and notify me of the execution. Thank you!

На что буквально через 10 минут получил ответ:

As requested, we have replaced the defective drive and booted the server into the installed system.

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

6. Восстановление backup таблицы разделов

Восстановить backup (MBR или GPT):

sfdisk /dev/sdb < sda_parttable_mbr.bak
sgdisk --load-backup=sdb_parttable_gpt.bak /dev/sdb

7. Подключение диска в RAID массив

mdadm /dev/md0 -a /dev/sdb1
mdadm /dev/md1 -a /dev/sdb2
mdadm /dev/md2 -a /dev/sdb3

После подключения диска, данные начали разливаться с первого диска. Это может занять продолжительное время. Следует ждать. Посмотреть статус можно таким образом:

cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sdb3[2] sda3[0]
      232624448 blocks super 1.2 [2/1] [U_]
      [======>.................]  recovery = 15.7% (36669696/232624448) finish=200.2min speed=16306K/sec
      bitmap: 2/2 pages [8KB], 65536KB chunk

md0 : active raid1 sdb1[3] sda1[2]
      16760832 blocks super 1.2 [2/2] [UU]

md1 : active raid1 sdb2[3] sda2[2]
      523712 blocks super 1.2 [2/2] [UU]

unused devices:<none>

8. Восстановление GRUB

Сначала определил свою версию GRUB

grub-install --version
grub-install (GRUB) 2.02~beta3-5+deb9u2

Так как я выполнял все действия на работающей системе, то мне было достаточно запустить grub-install на новом диске.

grub-install /dev/sdb

Скажем так, для меня разобраться в этой ситуации было испытанием. Я последовательно просил заменить сначала один, а затем второй диски. И два раза проделал все шаги описанного выше алгоритма. Данные автоматически, после включения нового диска в RAID массив, переливались то с одного, то с другого дисков. Реального простоя системы было всего 5-7 минут, которые потребовались на замену диска, хостеру.

В дополнение хочу отметить, что бесплатную замену, hetzner предлагает только на бу диски. Если требуется установка нового диска, то такая услуга стоит 41€

В итоге, после замены на бесплатные бу диски, hetzner поставил SSD с значением по SMART

Power_On_Hours 45458

В то время как на предыдущем моем SSD были примерно такие значения

Power_On_Hours 23432

То есть они поставили диск, который работал в два раза больше текущего моего диска. Как долго он проживет, не знаю. Буду наблюдать. Если что, теперь мне хотя бы известен алгоритм замены, и не страшно менять диски в программном RAID массиве!

Полезные ссылки: