Hetzner - DokuWiki

Hot Swapping/ru

Inhaltsverzeichnis

Горячая замена

Горячая замена (hot-swapping) делает возможной замену жёстких дисков во время работы сервера, чтобы минимизировать время простоя в случае отказа жёсткого диска.

Совместимость

Некоторые из наших серверов поддерживают функцию горячей замены. На указанных ниже моделях возможна замена дисков во время работы системы:

  • DX
  • EX41(-SSD)
  • EX40 (в дата-центре 17*)
  • SX131
  • SX291

*Узнать расположение сервера можно в панели Robot: «Server overview» → «Main functions; server».

Важная информация

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

Процедура

Аппаратный RAID

Аппаратный RAID-контроллер позволяет нашим техникам производить горячую замену жёстких дисков независимо от операционной системы, если ваш сервер входит в список из раздела Совместимость. В настоящее время мы можем установить RAID-контроллеры Adaptec и LSI.

Подробную информацию об этих контроллерах вы найдёте в статьях:

Просьбу о замене жёстких дисков отправляйте в техническую поддержку как обычно, через форму запросов.

Ниже приведено несколько примеров процедуры горячей замены.

Предупреждение: Пожалуйста, обратите внимание, что это всего лишь примеры. Инструкции и в особенности команды должны быть адаптированы применительно к вашей системе!

Контроллер LSI

Этот пример для Debian 8.2 с массивом RAID-1 на двух SSD.

  • Потребуется утилита командной строки MegaCli64. Её можно скачать по ссылке http://download.hetzner.de/tools/LSI/tools/MegaCLI/8.07.10_MegaCLI_Linux.zip (RPM-пакет можно сконвертировать в deb-пакет при помощи команды «alien» и, затем, установить)
  • Утилита принимает параметры в разных нотациях: они не чувствительны к регистру и могут быть написаны с или без минусов.
  • Для упрощения процесса можно использовать alias:
alias megacli='/opt/MegaRAID/MegaCli/MegaCli64'

В этом примере сбойный SSD расположен в slot 0.

1) Узнать статус и серийный номер можно при помощи команды.

megacli pdlist a0 | grep -Ei 'enclosure|slot|firmware state|inquiry'

2) Если сбойный диск не в состоянии offline (firmware-state), то его надо перевести в это состояние.

megacli pdoffline physdrv[252:0] a0

3) Далее, надо пометить SSD как отсутствующий (missing).

megacli pdmarkmissing physdrv[252:0] a0

4) Затем, подготовить его к удалению.

megacli pdprprmv physdrv[252:0] a0

5) Теперь можно отправлять в поддержку запрос на замену.

6) После замены диска заново проверьте состояние.

megacli pdlist a0 | grep -Ei 'enclosure|slot|firmware state|inquiry'

7) Если процесс восстановления (recovery) не запустился самостоятельно, то его следует запустить вручную: Замена диска в массиве, если rebuild не начался автоматически.

Контроллер Adaptec

Этот пример для Debian 8.2 с массивом RAID-1 на двух жёсткими дисками.

  • потребуется утилита командной строки arcconf. Эту утилиту, а также необходимые C++ библиотеки можно найти на http://download.hetzner.de/tools/Adaptec/tools/

В этом примере сбойный диск расположен в slot 0.

1) Узнать статус и серийный номер можно при помощи команды.

arcconf getconfig 1 pd|egrep "Device #|State\>|Reported Location|Reported Channel|Serial|S.M.A.R.T. warnings"

2) Используйте эту команду если сбойный диск не помечен как «failed».

arcconf setstate 1 device 0 0 ddd

3) Теперь можно отправлять в поддержку запрос на замену.

4) После замены диска заново проверьте состояние.

arcconf getconfig 1 pd | egrep "Device #|State\>|Reported Location|Reported Channel|Serial|S.M.A.R.T. warnings"

5) Если процесс восстановления (recovery) не запустился самостоятельно, то его следует запустить вручную: Как при помощи arcconf запустить REBUILD для RAID, находящегося в состоянии DEGRADED?.

Программный RAID

Горячая замена теоретически возможна на SATA-контроллерах. Используемая операционная система должна определить изменение состояния контроллера при подключении нового диска. Для разных операционных систем и конфигураций инструкции по горячей замене разные. Ниже приведено несколько примеров.

Внимание! Ниже приведены лишь примеры команд. Инструкции и, в особенности, команды должны быть адаптированы для конкретной системы!

Linux

Информация и подробный пример доступны в статье Диски в программном RAID.

Windows

Важно: в Windows нельзя сделать горячую замену стартового Plex*. Из-за этого перед заменой потребуется загрузить систему с неповрежденного Plex. (*Microsoft использует термины plex/plexing для обозначения зеркалирования. Plex это часть зеркалированного тома.)

В примере ниже используется стандартная установка Windows Server 2012 R2 в режиме UEFI, с двумя дисками и зеркалированием. Сбойный диск 1 (вторичный plex). Система загружена с первичного plex.

1) Удалите жёсткий диск из RAID-массива.

В disk manager откройте контекстное меню тома C: и выберите «remove mirroring».

2) Определите серийный номер сбойного или рабочего диска при помощи diskid32.exe.

3) Теперь можно отправлять в поддержку запрос на горячую замену.

4) После замены диска запустите diskpart.

5) Подготовьте диск (настройте разделы) в соответствии с разделами рабочего диска.

  • Если новый диск не распознаётся, используйте:
DISKPART> rescan
  • Если сбойный диск имеет пометку M1 (missing), используйте:
DISKPART> select disk M1
DISKPART> delete disk
  • Сконвертируйте заменённый диск в динамический с использованием GPT.
  • Настройте и отформатируйте EFI-раздел и назначьте ему букву E.
  • Добавьте диск в зеркало к диску C и дождитесь, когда синхронизация закончится.
DISKPART> select disk 1
DISKPART> convert gpt
DISKPART> create partition efi size=200
DISKPART> format fs=fat32 quick
DISKPART> assign letter=e
DISKPART> convert dynamic
DISKPART> select volume c
DISKPART> add disk 1 wait
  • Назначьте EFI-разделу неповреждённого диска букву x.
DISKPART> select disk 0
DISKPART> select part 1
DISKPART> assign letter=x
DISKPART> exit

6) EFI-разделы и загрузчик

В примере назначены следующие буквы:
x: существующий EFI-раздел
e: новый EFI-раздел на заменённом диске

  • Далее мы рекомендуем сохранить содержимое BCD (в файл BCD_backup в текущей директории) для того чтобы не опасаясь производить изменения, и, при необходимости, отменить внесённые изменения при помощи bcdedit /import.
bcdedit /export BCD_backup
  • Теперь надо рекурсивно содержимое EFI-раздела за исключением памяти BCD и директории «System Volume Information».
robocopy x:\ e:\ * /e /copyall /dcopy:t /xf BCD.* /xd "System Volume Information"
  • После этого можно импортировать BCD на заменённый диск при помощи bcdedit.
bcdedit /export e:\EFI\Microsoft\Boot\BCD

В результате будет возможна загрузка с обоих plex-ов, используя любой из загрузчиков.

В некоторых случаях может потребоваться произвести дополнительные настройки BCD (например, при появлении неиспользуемых пунктов в меню). Дополнительная информация (о Windows Server 2012) доступна online и в документации:

http://download.microsoft.com/download/6/E/E/6EE26977-FAA0-41CC-8BDA-7A0C5E6EB9CC/Configuring%20Disk%20Mirroring%20for%20Windows%20Server%202012.docx

FreeBSD

gmirror + UFS

В примере используется FreeBSD, установленная на UFS с использованием gmirror и следующими массивами:

/dev/mirror/boot (ada0p1 + ada1p1)

/dev/mirror/swap (ada0p2 + ada1p2)

/dev/mirror/root (ada0p3 + ada1p3)

Сбойный диск: ada1.

1) Удалите сбойный диск из RAID-массива.

  • Проверьте состояние диска.
# gmirror status
  • При необходимости деактивируйте разделы сбойного диска.
# gmirror deactivate boot ada1p1
# gmirror deactivate swap ada1p2
# gmirror deactivate root ada1p3
  • Пометьте сбойный диск как «забытый».
# gmirror forget boot
# gmirror forget swap
# gmirror forget root

2) Узнайте серийный номер сбойного диска.

  • Это можно слделать при помощи утилиты smartctl, доступной в пакете smartmontools.
# smartctl -a /dev/ada1 |grep -i serial
  • Или при помощи camcontrol:
# camcontrol identify /dev/ada1 |grep -i serial

3) Теперь можно отправлять в поддержку запрос на горячую замену.

4) После замены диска скопируйте таблицу разделов с ada0 на ada1.

# gpart backup ada0 | gpart restore ada1

Обратите внимание: В FreeBSD 11 есть ошибка, препятствующая загрузке с нового диска после восстановления таблицы разделов. Если вы столкнулись с подобной проблемой, пожалуйста, обратитесь к информации, доступной на форуме FreeBSD: [1]

5) Добавьте разделы заменённого диска в gmirror.

# gmirror insert boot ada1p1
# gmirror insert swap ada1p2
# gmirror insert root ada1p3

6) Установите загрузочный код на замененный диск.

# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada1

ZFS

В примере используется FreeBSD 10.2, установленная на ZFS со следующими массивами:

/dev/mirror/boot (ada0p1 + ada1p1)

/dev/mirror/swap (ada0p2 + ada1p2)

ZFS-пул zroot с зеркалированием через gpt/root0 (GPT-метка ada0p3) и gpt/root1 (GPT-метка ada1p3)

Сбойный диск: ada0.

(Для двух зеркала gmirror (boot и swap) инструкции приведены выше.)

1) Если ZFS используется для зеркалирования, то перед запросом на горячую замену диска следует проверить состояние зеркала. Также может потребоваться проверить находятся ли разделы в состоянии offline (в этом примере: gpt/root0).

# zpool status
 pool: zroot
state: ONLINE
 scan: none requested
config:
       NAME           STATE     READ WRITE CKSUM
       zroot          ONLINE       0     0     0
         mirror-0     ONLINE       0     0     0
           gpt/root0  ONLINE       0     0     0
           gpt/root1  ONLINE       0     0     0
# zpool offline zroot gpt/root0
# zpool status
 pool: zroot
state: DEGRADED
status: One or more devices has been taken offline by the administrator.
       Sufficient replicas exist for the pool to continue functioning in a
       degraded state.
action: Online the device using 'zpool online' or replace the device with
       'zpool replace'.
 scan: none requested
config:
       NAME                     STATE     READ WRITE CKSUM
       zroot                    DEGRADED     0     0     0
         mirror-0               DEGRADED     0     0     0
           8894732708877724737  OFFLINE      0     0     0  was /dev/gpt/root0
           gpt/root1            ONLINE       0     0     0

# gmirror deactivate boot ada0p1
# gmirror deactivate swap ada0p2
# gmirror forget boot
# gmirror forget swap

2) Если, как в нашем примере, используются GPT-метки, то можно использовать gpart для того чтобы понять, какому диску принадлежат метки.

# gpart list | grep -Ei 'geom|label'
Geom name: ada0
label: boot0
label: swap0
label: root0
Geom name: ada1
label: boot1
label: swap1
label: root1

3) Узнайте серийный номер сбойного диска.

  • Это можно сделать при помощи утилиты smartctl, доступной в пакете smartmontools:
# smartctl -a /dev/ada0 |grep -i serial
  • Или при помощи camcontrol:
# camcontrol identify /dev/ada0 |grep -i serial

4) Теперь можно отправлять в поддержку запрос на горячую замену. Убедитесь, что вы предоставили нам серийный номер диска, который должен быть заменён. После замены диска надо мигрировать таблицу разделов при помощи gpart. Зеркала gmirror также потребуют восстановления. Кроме этого надо будет установить загрузочный код.

# gpart backup ada1 | gpart restore ada0
# gmirror insert boot ada0p1
# gmirror insert swap ada0p2
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0

5) Затем надо изменить GPT-метку ZFS-раздела заменённого диска (здесь это третий раздел ada0p3). В этом примере, gpt/root0:

# gpart modify -i 3 -l root0 ada0

6) Теперь можно заменить сбойную часть зеркала:

# zpool replace zroot gpt/root0
# zpool status -x
all pools are healthy

Подробная информация о настройке и администрированию файловой системы ZFS доступна в документации от Oracle: http://docs.oracle.com/cd/E19253-01/819-5461/



© 2018. Hetzner Online GmbH. Alle Rechte vorbehalten.