Я хочу прервать выполняющуюся операцию повторной синхронизации в программном рейде debian squeeze. (Это обычная запланированная повторная синхронизация сравнения. В этом случае массив raid остается чистым. Не путайте это с перестроением после сбоя и замены диска.)
Как остановить эту запланированную операцию повторной синхронизации во время ее работы? Другой массив рейдов - «отложенная повторная синхронизация», потому что все они проверяются в один и тот же день (в воскресенье вечером) одна за другой. Я хочу полностью прекратить повторную синхронизацию этой воскресной ночи.
[Редактировать: 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
Ночью я установлю высокое значение, чтобы можно было завершить повторную синхронизацию.
Этот обходной путь подходит для большинства ситуаций, тем не менее было бы интересно узнать, возможно ли то, что я спросил. Например, кажется, что невозможно увеличить массив, пока он выполняет повторную синхронизацию или повторную синхронизацию "в ожидании"]
Если ваш массив 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 = проверить / dev / md0
Не знаю, как отменить повторную синхронизацию, но расписание контролируется /etc/cron.d/mdadm
в системах Debian / Ubuntu.
Сценарий /usr/share/mdadm/checkarray
может пролить свет на другую часть вашего вопроса, поскольку именно это вызывает cron.
Если ваше устройство md - md0 и вы хотите остановить повторную синхронизацию записи:
echo "idle" > /sys/block/md0/md/sync_action
echo "idle" > /sys/block/md0/md/sync_action
Не работает, когда / sys / block / md * / md / sync_action имеет значение «повторная синхронизация» (в отличие от состояния «проверка» или «восстановление». Вы можете повторить «простоя» в файле sync_action, однако это не влияет на прогресс. Этот файл документации ядра Вот неправильно заявляет, что это будет работать, но у меня это никогда не работало:
«idle» остановит активную повторную синхронизацию / восстановление и т. д. Нет гарантии, что другая повторная синхронизация / восстановление не может быть запущена автоматически снова, хотя для этого потребуется какое-то событие.
Я знаю, что это пост 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 без каких-либо опасений. Если бы было любой действие после того, как это было отдельный (например, повторная синхронизация, перестройка или даже запись), тогда --assume-clean, вероятно, завершится ошибкой и немедленно запустит действие повторной синхронизации.
Изменение raid.speed_limit_min
и raid.speed_limit_max
это как-то плохая идея, потому что это влияет не только на скорость повторной синхронизации / восстановления, но и на нормальную скорость работы, и, вероятно, вы потеряете большую производительность, полученную при использовании RAID-массивов.