Назад | Перейти на главную страницу

Сценарий оболочки для отслеживания завершения сборки RAID

Как я могу приостановить выполнение моего сценария оболочки после вызова следующей команды, пока массив raid не будет собран? Насколько я понимаю, это асинхронный процесс, и состояние массива рейдов необходимо опросить.

mdadm --create -l10 -n4 / dev / md0 / dev / xvdh *

Редактировать сб, 27 октября, 17:03:42 CDT 2012:

Хотя это правда, что вы можете работать с массивом RAID 10 до того, как он завершит повторную синхронизацию, я решил, что в любом случае отвечу на вопрос о том, как приостановить процесс повторной синхронизации.

Вот как вы приостанавливаете скрипт для процесса повторной синхронизации (IMO / AFAIK / и т. Д.):

# Add this where you want to pause...
while [ -n "$(mdadm --detail /dev/md0 | grep -ioE 'State :.*resyncing')" ]; do
    sleep 1
done

Чтобы использовать приведенный выше пример, весь сценарий будет следующим:

mdadm --create -l10 -n4 /dev/md0 /dev/xvdh*

while [ -n "$(mdadm --detail /dev/md0 | grep -ioE 'State :.*resyncing')" ]; do
    sleep 1
done

mke2fs -t ext4 -F /dev/md0

Обратите внимание, что приведенный выше сценарий не протестирован и может содержать ошибки.

Поскольку вы создаете новый RAID 10, вы можете сразу начать использовать массив. Первоначальная повторная синхронизация будет продолжена в фоновом режиме. Вам нужно только дождаться его завершения, если вы строите массив RAID 5 (и это хорошая идея и для RAID 6).

Видеть Первоначальное создание массива в Linux RAID Wiki для получения дополнительной информации.