Замена отказавшего диска в корневой части ZFS

Вводные понятия

Этот документ служит руководством для администраторов и лиц, обладающих определенным уровнем знаний о вычислительных аппаратных платформах и концепциях хранения данных, таких как RAID. Если вы уже хорошо понимаете общий процесс отказа, вы можете перейти к разделам о замене диска и ремонте пула.

Степени многословия

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

Команда 'zpool status' предоставляет обзор состояния пула.

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

Командаfmadm faulty поможет нам определить, что именно вызвало сбой диска. fmadm также способен очистить временные сбои;

Команда fmdump предоставляет нам журнал событий сбоев за последние {n} дней.

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

Общий процесс отказа

Когда в системе происходит сбой диска, ZFS не является первым компонентом, который обнаруживает его и реагирует на него. Вместо этого происходит следующий общий порядок событий:

1. FMA (Fault Management Architecture) обнаруживает и регистрирует сбойный диск. FMA отслеживает и управляет аппаратными сбоями в системе.

2. Как только FMA обнаруживает сбойный диск, операционная система принимает меры и удаляет диск из системы.

3. Затем ZFS, надежная и масштабируемая файловая система, узнает об изменении состояния. ZFS обнаруживает, что диск был удален, и отвечает отказом устройства. Отказ устройства означает, что ZFS помечает диск как неисправный и принимает необходимые меры для поддержания целостности и доступности данных.

Этот общий процесс устранения сбоев гарантирует, что любые сбои дисков в системе будут быстро обнаружены, зарегистрированы и отреагированы соответствующими компонентами. Сначала FMA идентифицирует сбойный диск, затем операционная система удаляет его, и, наконец, ZFS реагирует на изменение состояния путем устранения неисправности устройства. Следуя этому порядку событий, система может эффективно справляться с отказами дисков и поддерживать общую стабильность и надежность инфраструктуры хранения.

Обратите внимание, что это общее описание процесса отказа и может отличаться в зависимости от конкретной реализации и конфигурации системы.

Как заменить диск

Высокоуровневый обзор замены отказавшего диска в корне ZFS

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

Пошаговое руководство по замене сбойного диска в корне ZFS

Предположим, на сервере есть 2 диска: /dev/sda и /dev/sdb.
Один из дисков вышел из строя, например /dev/sdb.
Необходимо заменить поврежденный диск.

Сначала определим наш пул с помощью команды:

zpool list

Перед заменой диска рекомендуется извлечь его из массива:

zpool detach rpool /dev/sdb

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

poweroff

Физически замените сбойный диск.

Определение таблицы разделов (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

Чтобы скопировать разметку GPT, выполните следующие действия:

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

sgdisk -R /dev/sdb /dev/sda

Присвойте диску новый случайный UUID:

sgdisk -G /dev/sdb

Копирование разметки MBR

Чтобы скопировать разметку MBR:

Примечание!
Здесь сначала пишется диск, с которого переносится разметка, а затем диск, на который она переносится.

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

Если разделы не видны в системе, можно перечитать таблицу разделов с помощью команды:

sfdisk -R /dev/sdb

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

После разметки диска необходимо установить на него загрузчик:

grub-install /dev/sdb

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

Укажите, какой диск мы собираемся заменить (в нашем случае это /dev/sdb3):

zpool replace rpool /dev/sdb3

Добавление диска в рейд:

zpool online rpool /dev/sdb3

Дождитесь окончания синхронизации массива:

zpool status

Заключение

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