До основного вмісту

Заміна диска в RAID-масиві без зупинки сервера

Виділені сервери · 24.09.2026
Ілюстрація до статті «Заміна диска в RAID-масиві без зупинки сервера»

Заміна диска в RAID-масиві без зупинки сервера

Порядок такий: знайти збійний накопичувач і його серійний номер, позначити його як faulty та вивести з масиву, попросити дата-центр замінити диск у корзині, скопіювати на новий диск таблицю розділів, додати розділи до масиву і дочекатися ребілду. Сервер при цьому не вимикається, якщо корзина підтримує гарячу заміну, а масив надлишковий.

  • Перед заявкою в дата-центр зафіксуйте серійний номер диска: слоти в корзині не збігаються з іменами /dev/sdX.
  • Новий накопичувач додають не цілком, а розділами — з тією самою розміткою, що на вцілілому диску.
  • Після ребілду завантажувального масиву обов'язково ставлять завантажувач на новий диск, інакше сервер не підніметься при наступній відмові.
  • На апаратному контролері те саме робить storcli, а розмітку контролер копіює автоматично.

Крок 1. Знайти диск і зняти серійний номер

У /proc/mdstat накопичувач, що випав, позначений символом підкреслення замість U і суфіксом (F). Ім'я пристрою після перезавантаження може змінитися, тому опорна величина — серійний номер.

# стан масивів
cat /proc/mdstat
mdadm --detail /dev/md0 2>&1 | grep -E 'State|Number|Failed|removed'

# серійні номери та моделі всіх дисків
lsblk -o NAME,SIZE,SERIAL,MODEL
smartctl -i /dev/sdb 2>&1 | grep -E 'Serial|Device Model'

Якщо диск ще живий, але вже сиплеться, ви побачите це за атрибутами SMART до того, як масив його викине; як їх читати, описано у статті про SMART-діагностику дисків сервера.

Крок 2. Вивести диск із масиву

Масив сам позначає диск збійним при помилці запису, але під час планової заміни це роблять руками. Диск виводять із кожного масиву, у якому беруть участь його розділи.

# позначити збійним і прибрати з масиву
mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm --manage /dev/md0 --remove /dev/sdb1

# якщо розділів кілька, повторити для кожного масиву
mdadm --manage /dev/md1 --fail /dev/sdb2
mdadm --manage /dev/md1 --remove /dev/sdb2

# стерти метадані, щоб диск не намагався повернутися в масив
mdadm --zero-superblock /dev/sdb1

Крок 3. Фізична заміна

На виділених серверах ZevsHost накопичувач міняє чергова зміна майданчика за заявкою. У заявці зазначайте модель, серійний номер виведеного диска і підтвердження, що він уже видалений із масиву програмно. Інженерові треба розуміти, який саме диск виймати: імена /dev/sdX йому не видні.

Крок 4. Розмітити новий диск

Новий накопичувач приходить порожнім. Розмітку копіюють із вцілілого диска: для GPT — утилітою sgdisk, для MBR — через sfdisk. Після копіювання GPT новому диску обов'язково видають власний GUID, інакше система побачить два диски з однаковим ідентифікатором.

# дізнатися тип таблиці розділів
fdisk -l /dev/sda 2>&1 | grep -i 'Disklabel type'

# GPT: копія розмітки sda -> sdb і новий GUID
sgdisk --replicate=/dev/sdb /dev/sda
sgdisk --randomize-guids /dev/sdb

# MBR: копія розмітки
sfdisk -d /dev/sda | sfdisk /dev/sdb

Крок 5. Повернути диск у масив і дочекатися ребілду

# додати розділи до відповідних масивів
mdadm --manage /dev/md0 --add /dev/sdb1
mdadm --manage /dev/md1 --add /dev/sdb2

# стежити за прогресом
cat /proc/mdstat
mdadm --detail /dev/md0 2>&1 | grep -E 'Rebuild Status|State'

# підняти швидкість ребілду на час вікна (KB/s)
echo 50000 > /proc/sys/dev/raid/speed_limit_min
echo 400000 > /proc/sys/dev/raid/speed_limit_max

Час відновлення залежить від типу накопичувача і рівня масиву. Нижче — орієнтири для диска на 1 TB при помірному навантаженні; подробиці про самі рівні зібрані у статті про RAID 0, 1, 5 і 10.

КонфігураціяЩо робить системаОрієнтир за часомРизик у вікні
RAID 1, 2×NVMe 1 TBкопіює вміст дзеркаладесятки хвилинвідмова другого диска
RAID 10, 4×NVMe 1 TBкопіює одну парудесятки хвилинвідмова парного диска
RAID 5, 6×HDDчитає всі диски і рахує парністьвід 10 годиндруга відмова і помилки читання

Крок 6. Завантажувач на новому диску

Масив не містить завантажувального сектора: він живе поза розділами md. Новий диск після ребілду зберігає дані, але завантажитися з нього система не зможе, доки ви не поставите завантажувач руками.

# BIOS-режим, Debian/Ubuntu
grub-install /dev/sdb
update-grub

# BIOS-режим, RHEL, AlmaLinux, Rocky
grub2-install /dev/sdb
grub2-mkconfig -o /boot/grub2/grub.cfg

# UEFI: скопіювати розділ ESP на новий диск
dd if=/dev/sda1 of=/dev/sdb1 bs=1M status=progress
efibootmgr -v

Дві помилки на цьому кроці коштують простою. Перша — додати до масиву весь диск (/dev/sdb) замість розділу: масив збереться, але розмітки на диску не буде, і сервер із нього не стартує. Друга — не поставити завантажувач: поки живий перший диск, усе працює, а при його відмові машина йде в «no bootable device». Перевіряйте результат до того, як закриєте задачу: cat /proc/mdstat показує всі пристрої як [UU] без символів підкреслення і без рядка recovery, lsblk показує на новому диску ті самі розділи, що на старому, а efibootmgr -v чи grub-install відпрацювали без помилок. Реалізацію масиву, якщо вона апаратна, перевіряють через утиліту контролера.

Коротко

  • Спершу серійний номер, потім заявка: за /dev/sdX інженер диск не знайде.
  • Диск виводять із кожного масиву, де були його розділи, і обнуляють суперблок.
  • Розмітку копіюють із вцілілого диска, для GPT додатково міняють GUID.
  • Ребілд стартує одразу після --add; швидкість регулюють параметри speed_limit.
  • Завантажувач на новому диску ставлять вручну і перевіряють до закриття задачі.
← Назад до бази знань Поставити питання підтримці