Mdadm RAID1: замена дисков на более емкие
Как-то встала задача увеличить объем зеркального массива на сервере с Debian без потери данных и без простоев. Простых и кратких инструкций в интернете нашел на тот момент не особо много, в основном на английском. Составил для себя на будущее свою, чем с вами и поделюсь сегодня. Может кому пригодится, всякое случается в практике сисадмина.
0. Посмотреть, какие диски каким именам в каталоге /dev соответствуют, и определиться, что будем менять:
lsscsi //простой список (годится, если все диски разных моделей)
lshw -class disk //подробно и с серийниками
1. Пометить каждый раздел RAID на первом заменяемом диске как извлеченный:
mdadm --manage /dev/mdX --fail /dev/sdYZ
mdadm --manage /dev/mdX --remove /dev/sdYZ
где X - номер массива, соответствующего диску
Y - буква заменяемого диска
Z - номер раздела RAID на этом диске, соответствующий массиву X
2. Заменить первый диск на новый.
3. Создать на новом диске разделы RAID, используя все свободное пространство кроме нескольких последних МБ. Пример:
parted -a optimal /dev/sdY
(parted) mklabel gpt //схема разметки GPT
(parted) mkpart primary 2048s 5999GB //создать раздел размером 5999 ГБ (не ГиБ!), начиная с 2048 сектора
(parted) set 1 raid on //пометить его тип как RAID
(parted) print //вывести список разделов диска для проверки
где Y - буква нового диска (внимание, не спутайте с другим, а то потеряете на нем данные!)
4. Добавить разделы нового диска в соответствующие массивы:
mdadm --manage /dev/mdX --add /dev/sdYZ
где X - номер массива
Y - буква нового диска
Z - номер раздела RAID на этом диске, соответствующий массиву X
5. Подождать окончания синхронизации. Проверка статуса:
cat /proc/mdstat
6. Повторить шаги 0-5 для второго заменяемого и второго нового дисков.
7. Увеличить соответствующие замененным дискам массивы:
mdadm --grow /dev/mdX --bitmap none
mdadm --grow /dev/mdX --size=max
{Подождать окончания синхронизации}
mdadm --grow /dev/mdX --bitmap internal
где X - номер массива
8. Увеличить файловые системы соответствующих из шага 7 массивов:
{остановить зависимые от массива сервисы}
umount /dev/mdX
fsck.ext4 -f /dev/mdX //проверка целостности ФС, для примера указан формат ext4
resize2fs /dev/mdX
mount /dev/mdX
{запустить сервисы}
где X - номер массива
Здравствуйте.
У меня в эксплуатации 5000 серверов.
Диски меняем каждый день. Меняем с увеличением объема не часто, но бывает и такое. Сервера от 2 до 72 дисков.
Инструкция глобально хорошая.
Замечания:
1. Отмонтировние избыточно. Не нужно это делать. В этом смысл такой замены - на ходу.
2. Проверки на шаге 0
ls -lah /dev/sd*
lsblk
smartctl -a /dev/sd?
3. Команды можно сократить
mdadm /dev/md? -f sd?
mdadm /dev/md? -r sd?
4. А ещё лучше диск на замену сдетачить перед заменой
echo 1 > /sys/block/sb?/device/delete
5. К шагам с
mdadm --grow /dev/mdX --bitmap none
Тоже вопросы. Непонятно зачем 3 шага, когда одного достаточно:
mdadm --grow /dev/mdX --size=max
Автор, если ты можешь работу в сфере эксплуатации - напиши мне. Тестовое задание: на живую, без остановки сервиса, сделать из однодисковой системы систему на raid10 на 4х дисках.