Как прервать программную рейд ресинхронизацию?
Я хочу прервать текущую операцию повторной синхронизации в программном рейде Debian Squeeze. (Это обычная запланированная повторная синхронизация при сравнении. Массив raid в этом случае остается чистым. Не путайте это с перестройкой после сбоя диска и его замены.)
Как остановить запланированную операцию повторной синхронизации во время ее работы? Другой массив raid - "reync pending", потому что все они проверяются в один и тот же день (воскресная ночь) один за другим. Я хочу полностью прекратить это воскресное ночное воссоздание.
[Редактировать: sudo kill -9 1010
не останавливает его, 1010 - это PID процесса md2_resync]
Я также хотел бы знать, как я могу контролировать интервалы между повторной синхронизацией и оставшееся время до следующей.
[Edit2: я сделал, чтобы повторная синхронизация прошла очень медленно, чтобы она больше не мешала:
sudo sysctl -w dev.raid.speed_limit_max=1000
взято с http://www.cyberciti.biz/tips/linux-raid-increase-resync-rebuild-speed.html
В течение ночи я верну ему высокое значение, чтобы повторная синхронизация могла завершиться.
Этот обходной путь подходит для большинства ситуаций, тем не менее, было бы интересно узнать, возможно ли то, что я спросил. Например, кажется, что невозможно увеличить массив во время повторной синхронизации или повторной синхронизации "в ожидании"]
9 ответов
Если ваш массив md0
затем echo "idle" > /sys/block/md0/md/sync_action
"idle" остановит активную повторную синхронизацию / восстановление и т. д. Нет никакой гарантии, что другая повторная синхронизация / восстановление может не запуститься автоматически снова, хотя для ее запуска потребуется какое-то событие.
Я хотел замедлить или приостановить процесс повторной синхронизации, чтобы сохранить некоторые операции ввода-вывода для резервного копирования некоторых данных на другой компьютер. Эта тема помогла мне, но я нашел другое решение.
На моем Debian Lenny:
echo "idle" > /sys/block/md0/md/sync_action
работает, но процесс повторной синхронизации немедленно перезапускается.checkarray -x --all
: работает, но результат тот же: процесс повторной синхронизации немедленно перезапускается.
Поэтому я использую этот метод: echo 0 > /proc/sys/dev/raid/speed_limit_max
Вы можете отменить повторную синхронизацию массива, используя следующую последовательность команд (как root):
echo frozen > /sys/block/md0/md/sync_action
echo none > /sys/block/md0/md/resync_start
echo idle > /sys/block/md0/md/sync_action
Обратите внимание, что это может оставить ваш массив в несогласованном состоянии. Не делайте этого, если вы не уверены, что массив находится в хорошем состоянии, и повторите синхронизацию позже.
(Кредит, где кредит должен: нашел это заклинание в этой теме.)
Как упоминалось выше, в системах Debian/Ubuntu /etc/cron.d/mdadm
Сценарий вызывает /usr/share/mdadm/checkarray
скрипт для инициирования повторной синхронизации проверок.
Этот скрипт имеет опцию для отмены всех запущенных проверок синхронизации:
/usr/share/mdadm/checkarray -x --all
Возможное решение для этого заняло немного, чтобы вникнуть в детали.
Моя система: CentOS 6.5 mdadm v3.3.2
Постоянные проверки каждую неделю, хотел приостановить один из них, RAID чист, проверка была вызвана через скрипт /etc/cron.d/raid-check, который запускается еженедельно.
Чтобы отменить проверку, вы используете функцию --misc --action. Предполагая, что RAID-устройством является /dev/md0, и это всего лишь еженедельная проверка целостности, а не сбой устройства, вы должны были бы от имени root:
mdadm --misc --action = idle /dev/md0
Кроме того, чтобы начать проверку согласованности
mdadm --misc --action=check /dev/md0
Не уверен в том, как отменить повторную синхронизацию, но расписание контролируется /etc/cron.d/mdadm
в системах Debian/Ubuntu.
Сценарий /usr/share/mdadm/checkarray
может пролить свет на другую часть вашего вопроса, так как это то, что называется Cron.
echo "idle" > /sys/block/md0/md/sync_action
Не работает, когда / sys / block / md * / md / sync_action имеет значение "resync" (в отличие от состояния "check" или "repair". Вы можете отобразить "idle" в файле sync_action, однако это не влияет на Прогресс. Этот файл документации ядра здесь неправильно утверждает, что он будет работать, но он никогда не работал для меня:
"idle" остановит активную повторную синхронизацию / восстановление и т. д. Нет никакой гарантии, что другая повторная синхронизация / восстановление может не запуститься автоматически снова, хотя для ее запуска потребуется какое-то событие.
Если ваше устройство md - md0, и вы хотите остановить повторную синхронизацию, напишите:
echo "idle" > /sys/block/md0/md/sync_action
Я знаю, что это пост за 4 года, но вы также можете сделать это (предполагая, что md0 в качестве массива и sdb4 в качестве ресинсингующего "диска"):
mdadm /dev/md0 --fail /dev/sdb4 && mdadm /dev/md0 --remove /dev/sdb4
Эта команда делает вид, что sdb4 является неисправным диском, и, следовательно, удаляет его из массива, останавливая повторную синхронизацию. Если во время действия resync-stop ошибки не было, эта команда также удалит sdb4 из массива md0. Если произошла какая-либо ошибка, диск остается в сбойном состоянии, но остается в массиве.
Если вы отказываете диск в любом месте mdadm
Вы установили это логически не удалось. Если массив был чистым (не поврежден), то диск остается согласованным и может быть добавлен с помощью параметра --add << disk >> --assume-clean без каких-либо опасений. Если после его отсоединения былокакое-либо действие (например, resync, rebuild или даже запись), то --assume-clean не выполнится и сразу же начнет действие reync.
изменения raid.speed_limit_min
а также raid.speed_limit_max
Это плохая идея, потому что она влияет не только на скорость повторной синхронизации / перестроения, но и на нормальную скорость работы, и, вероятно, вы потеряете большую производительность, полученную при использовании RAID-массивов.