Как система RAID1 определяет, какой диск использовать в качестве источника и какой диск использовать в качестве места назначения при зеркалировании?
Предположим, например, следующий сценарий: создается массив RAID1 с двумя дисками A и B. A заменяется диском C, который добавляется к массиву. Со временем файлы изменяются. Теперь B удален, а A снова вставлен.
Будет ли система RAID1 осознавать, что A и C не синхронизированы? И что C более актуально, чем A? А если нет, есть ли безопасный способ избежать немедленного запуска процесса зеркалирования при вставке диска A?
РЕДАКТИРОВАТЬ: Я должен прояснить, что в моем сценарии я предполагаю, что A не потерпел неудачу, когда он был удален, и поэтому, насколько я понимаю, соседние A и C являются "грязными", когда система RAID1 должна решить, какой путь зеркалировать между ними . (И я предполагал, что растровые изображения не используются, но я понимаю, что это может иметь значение.)
Что происходит, так это то, что два диска записываются в тандеме и читаются как взаимозаменяемые. Это система с несколькими мастерами, и от этого происходит повышение производительности чтения за счет зеркалирования.
Когда один том становится неисправным, массив называется degraded
. Затем вы добавляете новый диск; RAID-контроллер знает, что этот диск не содержит своей части тома (это dirty
), и массив начинает копирование данных, которые он должен хранить на нем, из другого места в массиве (этот процесс называется rebuilding
); для RAID 1 есть только одно другое место для его копирования. После завершения перестройки новый том clean
, и система снова является отказоустойчивой и мультимастерной (normal
).
Если другой исходный диск будет удален или выйдет из строя до завершения восстановления, произойдет потеря данных (если он был удален, но не мертв, это легко восстановить). Однако, если он будет удален после завершения перестройки и добавлен новый диск, массив пройдет точно такой же процесс: от деградации до восстановления до нормального состояния.
Это немного упрощено, хотя представляет собой подавляющее большинство случаев, когда диски выходят из строя или удаляются и добавляются иным образом. Также обычно возможно, что части тома будут помечены, например, как грязные.
Вы говорите о программном зеркале, использующем mdadm
. Вы не писали, используете ли вы растровое изображение или нет. Я предполагаю, что вы используете растровое изображение (в противном случае полное повторное зеркальное отображение будет запускаться с первого блока всякий раз, когда диск теряется / повторно подключается / что-то еще).
В случае растрового изображения эти растровые изображения будут храниться на каждом диске - либо как внутреннее растровое изображение на самом зеркальном диске, либо на внешнем растровом изображении (если вы его указали) - опять же, это на диск.
Теперь это также ответ на ваш вопрос: вначале все биты помечены как «грязные», то есть их необходимо повторно синхронизировать. Каждый бит представляет собой блок на физическом диске. Так что статус этих растровых изображений имеет значение.
Вы видите статус этих растровых изображений с помощью cat /proc/mdstat
.
Имейте в виду, что создание растровых изображений не является стандартной операцией, если вы создаете зеркала. Вы можете изменить это позже с помощью mdadm --grow
.
если он был включен в любой момент с одного диска. обычно на диске есть что-то вроде счетчика записи. так что он возьмет того, кто выше, в качестве мастера.
Таким образом, если вы вытащите диск A на неделю, но продолжите работать с диском B, за это время у него были бы записи и счетчик записи выше. и тогда это будет хозяин.
Некоторые контроллеры будут основывать это на том, что было при последней загрузке. если диск отсутствовал в течение недели, то он появляется снова, теперь он считается рассинхронизированным.
Если вы удалите оба диска одновременно, то, что он будет делать, будет зависеть от контроллера. Скорее всего, просто покажите внешний массив, который вы можете импортировать.