Как прервать программную рейд ресинхронизацию?

Я хочу прервать текущую операцию повторной синхронизации в программном рейде 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" остановит активную повторную синхронизацию / восстановление и т. д. Нет никакой гарантии, что другая повторная синхронизация / восстановление может не запуститься автоматически снова, хотя для ее запуска потребуется какое-то событие.

http://www.mjmwired.net/kernel/Documentation/md.txt

Я хотел замедлить или приостановить процесс повторной синхронизации, чтобы сохранить некоторые операции ввода-вывода для резервного копирования некоторых данных на другой компьютер. Эта тема помогла мне, но я нашел другое решение.

На моем 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-массивов.

Другие вопросы по тегам