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