Перейти к основному содержанию

Windows — меняем NVMe диски динамического массива на лету

Windows Server

Снова большая задача на несколько дней. У нас имеется динамический зеркальный массив в Windows Server 2016, собранный из двух одинаковых NVMe дисков. Объём массива около 3 ТБ и используется под 1С. Естественно, места стало не хватать. Были закуплены два других NVMe диска на 6 ТБ. Нужно перенести динамический массив на новые диски.

Проблема в том, что сервер, на котором всё это работает, поддерживает установку только двух NVMe дисков, все слоты заняты. Нам придётся по очереди заменить диски в массиве и расширить его.

Вторая проблема состоит в том, что сервер нельзя отключать, и 1С нельзя останавливать. Всё как мы любим. Удалось договориться о возможной кратковременной остановке служб, не более 5 минут.

Disk Management (Управление дисками), здесь можно посмотреть на наш массив.

win

Диск D: находится на двух физических NVMe дисках:

NVMe диск WD Ultrastar DC SN840 3.2TB — 0TS1876

Состояние массива Healthy.

Забегая вперёд. Мне удалось без остановки сервисов заменить диски на двух таких серверах, но есть нюанс, о котором будет рассказано далее. Шансы обойтись без остановки сервисов: 50/50, это связано с одной неприятной особенностью динамических массивов, которая мне непонятна, неприятна и просто вредна.

Диск D: свободен на 49%, но это только потому, что часть баз данных я смог перенести временно на соседний сервер.

Пришли новые диски:

Intel SSD 6.4 ТБ U.2 — SSDPF2KE064T1

intel

Подготовка к замене первого диска

Перед тем как извлекать диск, нужно разобрать наш динамический массив.

win

Нажимаем правой копкой на любой из дисков D:, не имеет значения на какой. Выбираем Break Mirrored Volume.

win

Нас предупреждают, что после этого процесса данные на дисках перестанут быть идентичны. Yes.

win

Наш динамический зеркальный массив перестал быть массивом и разбился на два отдельных динамических диска, один из них остался диском D:, а второй теперь стал E:.

И вот этот момент мне совсем не понравился. Распределение букв у дисков происходит случайным образом и не зависит от того, на каком диске вы нажали правой кнопкой, когда разбирали массив. Я несколько раз пробовал разбирать зеркало на одном и том же массиве: каждый раз обозначение дисков происходило случайным образом. Это настолько дебильная недоработка, что использовать динамические зеркальные массивы в критических средах становится просто невозможно.

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

win

Диск E: нам не нужен.

win

Нажимаем правой кнопкой на том E:, Delete Volume...

win

Данные на диске E: будут удалены, но они нам и не нужны. Yes.

win

На Disk 0 теперь неразмеченная область, этот физический диск мы будем менять первым.

Перед нами возникает вторая трудность, нам нужно узнать серийный номер того диска, который будем извлекать, а именно серийный номер Disk 0. К сожалению, стандартными средствами операционной системы я не смог узнать серийник, пришлось воспользоваться сторонним ПО.

win

CrystalDiskInfo

win

Нужный диск так и отмечен Disk 0, записываем серийный номер A07B8F5A.

win

Windows Server 2016 поддерживает горячее извлечение дисков. В трее нажимаем соответствующую кнопку и даём команду на извлечение диска. Не перепутайте с диском D:, модель та же, но он подписан. Eject.

win

Нам сообщают, что устройство может быть извлечено.

И вот тут снова какой-то косяк. Диск остался в режиме Online, а это нехорошо. Непонятно, почему диск не отключился, придётся поработать руками.

win

Нажимаем правой кнопкой на Disk 0 и переводим его в Offline.

win

Disk 0 в статусе Offline. Теперь можно извлекать диск.

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

Приезжаю в ЦОД с новым диском. Возникает вопрос, что вытаскивать?

nvme

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

Почти во всех серверах и СХД есть механизм, позволяющий "подсветить диск". Где-то это реализовано в веб-интерфейсе для управления сервером (IMM, iLO, IPMI, и прочих BMC). Где-то есть возможность включить подсветку через команду CLI.

В последних серверах Supermicro в web-интерфейсе управления IPMI для управления NVMe дисками имеется отдельный раздел Server Health → Storage Monitoring. Во вкладке Physical View как раз можно посмотреть список имеющихся дисков и информацию о них: модель, производителя, серийный номер, температуру и пр. Дополнительно имеется возможность выполнить ряд операций с этими дисками. Мы просто находим нужный диск по серийному номеру и подсвечиваем его.

В моей модели сервера была проблема, диск не хотел подсвечиваться, решение в отдельной статье:

Supermicro — подсвечиваем NVMe диск

win

Находим по серийному номеру нужный диск.

win

И подсвечиваем, Blink.

Диск замигал, теперь мы знаем его местоположение.

В выпадающем списке Available Actions выбираем Eject, выделяем галкой нужный диск и нажимаем Apply. Но есть один нюанс, кнопка не активна, не нажимается, не работает. Проблема та же самая, что и с подсветкой, решаем её.

Supermicro — извлекаем NVMe диск

nvme

Eject. Yes.

nvme

Индикатор диска станет зелёным, можно извлекать.

? Индикация дисков

? solid on — диск установлен
? blinking — I/O активность

? solid on — сбой
? blinking 1 Гц — перестроение
? blinking 2+1 1 Гц — hot spare
? blinking 1 на 5 сек — drive power on
? blinking 4 Гц — идентификация ?

? solid on — можно извлечь

? blinking 1 Гц — внимание, не извлекать

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

win

Disk 0 пропал в системе.

win

Ждём 5 минут, перекручиваем салазки на новый диск и вставляем его.

win

Убеждаемся что диск отобразился в веб-интерфейсе IPMI. Если диска там нет и на вставленном диске продолжает гореть зелёный светодиод, то снова извлекаем диск и вставляем через пару минут. У меня такое случалось на одном из серверов.

win

В оснастке управления дисками появляется новый Disk 0 уже побольше объёмом.

win

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

win

Поскольку диск больше 2 ТБ, то выбираем GPT. OK.

win

Диск инициализирован.

win

Теперь нам нужно заново создать зеркальный динамический массив. Нажимаем правой кнопкой на диск D:, Add Mirror...

win

Выбираем Disk 0. Add Mirror.

win

Данная операция сконвертирует Disk 0 в динамический. Yes.

win

Создаётся RAID1 зеркальный массив. Но данные, естественно, не синхронизированы. Запускается процедура синхронизации, побежали проценты. Процесс занимает некоторое время, достаточно продолжительное. Disk 0 помечен восклицательным знаком, поскольку данные на нём не совпадают с основным диском.

win

После окончания синхронизации у нас снова программный RAID1 массив из двух дисков.

Первый диск заменён, пол дела сделано.

Подготовка к замене второго диска

И снова нам нужно разобрать наш динамический массив.

win

Нажимаем правой копкой на любой из дисков D:, не имеет значения на какой. Выбираем Break Mirrored Volume.

win

Нас предупреждают, что после этого процесса данные на дисках перестанут быть идентичны. Yes.

win

Наш динамический зеркальный массив перестал быть массивом и разбился на два отдельных динамических диска, один из них остался диском D:, а второй теперь стал E:. Но мне не повезло, диском D: стал тот диск, который я планировал извлечь.

win

Заново собираю массив.

win

Во второй раз ткнул правой кнопкой на другой диск, хотя это и не имеет значения. И теперь мне повезло, диск D: остался на уже заменённом диске.

Теперь все действия нужно повторить для Disk 1.

win

Удаляем ненужный диск E:, извлекаем Disk 1. На этот раз диск сам ушёл в Offline.

Замена второго диска

Беру диск, еду в ЦОД.

win

В вуб-интерфейсе IPMEI извлекаем диск, Eject. Нам уже не нужен серийный номер, так как диски уже не спутать.

win

Вытаскиваю диск из сервера. Диск пропадает из системы. Все сервисы продолжают работать нормально.

win

Перекручиваю салазки на новый диск и вставляю его в слот.

win

Диск отобразился в системе.

win

Инициализируем его.

win

GPT. OK.

win

Оба физических диска заменены. Дальше всё просто:

  1. Расширяем массив на весь Disk 0.
  2. Делаем зеркальный массив, добавляя Disk 1.

Windows — расширение динамического зеркального массива

win

И мы с вами без простоя на лету заменили два NVMe диска на сервере и расширили массив.

P.S.

При замене NVMe дисков ни один пользователь 1С не пострадал.

 

Похожие материалы

Zabbix шаблон для мониторинга RAID контроллеров Intel RSTe и VROC в Windows

Делюсь полезным шаблоном для мониторинга программных RAID контроллеров Intel RST (Rapid Storage Technology), Intel RSTe (Intel Rapid Enterprise), Intel VROC (Virtual RAID on CPU).