После
смены в массиве старых hdd Toshiba 3Tb на WD 4Tb возникла задача по
переносу данных. Действовать решил наиболее правильным и менее затратным
способом — поочерёдной замены дисков на новые и после замены обоих
расширение размера массива до максимального.
Сперва я подготовил оба диска к работе. Создание таблицы разделов gpt, в ней раздела, и
форматирование его в ext4. Где /sdc — обрабатываемый диск. Смотрите не перепутайте)
sudo parted /dev/sdc mklabel gpt
sudo parted -a optimal /dev/sdc mkpart primary 0% 100%
sudo mkfs.ext4 /dev/sdc1 -L R1
Если после формата диск автоматически смонтируется, перед добавлением его в RAID-массив надо размонтировать его обратно:
sudo parted /dev/sdd unit s p free # уточняю что sdd указан правильно.
sudo umount --verbose --all-targets /dev/sdd1
Итак
разделы sdd1 и sdc1 на новых дисках подготовлены. Первыми двумя
строками останавливаю один старый диск в массиве, выключаю ПК, меняю его
на новый, загружаюсь и выполняю третью строчку:
sudo mdadm --manage /dev/md0 --fail /dev/sdd1
sudo mdadm --manage /dev/md0 --remove /dev/sdd1
sudo mdadm --manage /dev/md0 --add /dev/sdd1
После этого система сама начнёт зеркалить на него копию с оставшегося второго старого диска. Понаблюдать за этим можно тут:
А так посмотреть подробный отчёт:
sudo mdadm --detail /dev/md0
Чтобы
не делать пустую работу дважды, я занялся изменением размера массива до
зеркалирования второго диска, чтобы зеркалился уже увеличенный массив.
Но позже я сначала отзеркалил, и лишь потом увеличивал уже два массива,
и не сказал бы, что это было настолько нестерпимо дольше в сравнении с
общим временем разворачивания.
Итак, после
получения зеркала на одном новом диске, последний старый вынимаем из ПК,
и ставим на его место новый. Если система не подхватила на лету
(изменился /dev/sd*) то добавляем вручную:
sudo mdadm --manage /dev/md0 --add /dev/sde1
Итак, в raid сейчас оба диска поменяны на новые большие по размеру, самое время увеличить размер массива до максимума:
sudo mdadm --grow /dev/md0 --size=max
Отклик в моём случае был такой: mdadm: component size of /dev/md0 has been set to 3906884608K
Теперь
массив md0 большой по размеру дисков, но сами разделы sdd и sde ещё
старого размера. Увеличить их можно как демонтировав, так и налету. Я
только выключил торрент-клиент, чтобы не тормозил обращениями к диску.
sudo resize2fs /dev/md0
Отклик такой: Filesystem at /dev/md0 is mounted on /mnt/R'lyeh; on-line resizingrequired
old_desc_blocks = 350, new_desc_blocks = 466
The filesystem on /dev/md0 is now 976721152 (4k) blocks long.
Recovery
aka spare rebuilding продлится примерно 5 часов на каждый диск.
Наблюдать этот процесс, а также засечь затраченное можно в dmesg:
[Ср фев 26 17:52:18 2020] md: recovery of RAID array md0
[Ср фев 26 23:32:03 2020] md: md0: recovery done.
Потрачено 5 часов 40 минут.
Замер времени на ресайзинг файловой системы:
sudo dmesg -T |grep -E 'md0.*resiz'
[Чт фев 27 00:25:52 2020] EXT4-fs (md0): resizing filesystem from 732532480 to 976721152 blocks
[Чт фев 27 00:29:21 2020] EXT4-fs (md0): resized filesystem to 976721152
обратите внимание на работу grep - ищется по двум словам md0 AND resiz
Периодически можно замерять температуру дисков:
sudo smartctl --all /dev/sdd | grep Temp | awk -F " " '{print $10}'
Всё, массив перенесён на новые диски и увеличен до их объёма.