#linux #hdd #raid
Есть программный RAID5 собранный через mdadm (linux raid). И есть необходимость заменить один из пока ещё исправных томов массива на новый диск. Обычно это делается через отметку старого диска как неисправного и добавление нового диска с восстановлением массива: mdadm /dev/md0 -f /dev/sdd1 mdadm /dev/md0 -r /dev/sdd1 mdadm /dev/md0 --add /dev/sdc1 Но перестраивается массив довольно долго и подвержен риску потерять весь массив при ошибке какого-то ещё диска. Возможно ли как-то использовать исправный старый том во время добавления нового и так минимизировать риск для массива?
Ответы
Ответ 1
По мотивам ответа на unix.SO, такая возможность была добавлена в ядро linux в версии 3.2 (релиз начала 2012 года) и сопутствующие опции появились в mdadm версии 3.3 (релиз в 2013 год был). Поэтому если у вас достаточно свежее ПО, то необходимо добавить новый диск в массив (добавится как spare): mdadm /dev/md0 --add /dev/sdc1 И запросить выполнить замену диска командой: mdadm /dev/md0 --replace /dev/sdd1 --with /dev/sdc1 Эта команда запросит замену диска sdd на sdc. Параметр with необязателен, если его не указать - то будет использован любой spare диск. После этой команды начнётся долгий процесс записи данных на новый диск, после того как новый том будет синхронизирован - он автоматически заменит собой старый. Старый диск sdd при этом будет отмечен как failed и его необходимо будет удалить из массива как обычно: mdadm /dev/md0 -r /dev/sdd1 Если у вас есть только подходящее ядро 3.2+, но старая версия mdadm - то вы можете выполнить такие же операции напрямую через sysfs псевдосистему, сначала добавив новый spare диск mdadm /dev/md0 --add /dev/sdc1 Затем запросить замену: echo want_replacement > /sys/block/md0/md/dev-sdd1/state В общем-то именно это и делает mdadm, потому итог будет таким же: старый диск во время синхронизации нового диска будет работать как обычно, затем станет failed. А вот если ядро более старое - то тогда печально и что-то однозначно удачное предложить сложно. Указанный способ поддерживается для RAID4/5/6 и RAID10. Поддержки RAID1 нет по той простой причине, что в RAID1 уже существенно более давно можно свободно налету менять число дисков в массиве. То есть вместо операции замены одного диска можно расширить массив с двух дисков до трёх, дождаться штатного перестроения, удалить старый диск и сменить число дисков в массиве обратно до 2. Так всё время сохраняются минимум 2 копии данных.Ответ 2
Если например у вашего raid5 три диска попробуйте добавить четвёртый, одновременно реорганизовать в raid6. Так как у raid6 безопасность предоставляет два сбойных диска можете спокойно пить кофе. Добавляем в raid5 запасной диск: > mdadm --add /dev/md0 /dev/sdc Реорганизуемся в raid6: >mdadm --grow /dev/md0 --level=6 --raid-devices=4 --backup-file=/root/raid5backup Далее удаляем один подозрительный диск: mdadm /dev/md0 -f /dev/sdd1 mdadm /dev/md0 -r /dev/sdd1 И возвращаемся назад в raid5 : >mdadm --grow /dev/md0 --level=5 --raid-devices=3 --backup-file=/root/raid5backup Файл для безопасного копирования /root/raid5backup небольшого размера должен находится физически НЕ в данном массиве.
Комментариев нет:
Отправить комментарий