Для чего нужен (raid-controller-) BBU?

Мне интересно, какова цель BBU. Мое первое понимание состояло в том, что он позволяет кешу записывать данные на диск во время сбоя питания. Но в некоторых спецификациях говорится, что BBU может хранить свои данные до 72 часов. Я ожидаю, что данные будут записаны на диск в течение миллисекунд (учитывая, что диск все еще имеет питание).

Так должен ли BBU защищать не только кеш, но и весь диск на несколько секунд? Разве это не было бы еще более безопасно, потому что данные кеша записываются на диск вместо того, чтобы быть в кеше и снова ждать включения питания? Примерно через секунду диск может быть выключен.

7 ответов

Решение

Он не питает диски, он просто хранит данные в кеше (в данном случае) до 72 часов, пока вы не вернете машину в рабочее состояние. Когда вы включаете питание машины, она записывает содержимое кеша обратно на диски.

Все, что он делает, это защищает от сбоя питания. Если (по какой-либо причине) аппарат теряет питание, не сбрасывая чистые данные на диск, батарея поддерживает содержимое кеша до тех пор, пока вы не сможете перезагрузить машину.

Это не ИБП для дисков, поскольку диски могут находиться во внешнем дисковом массиве или даже в другой силовой цепи. Даже ИБП может выйти из строя.

Это работает так:

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

Поэтому синхронная запись не кэшируется. Он блокирует приложение до его завершения. Этот тип операции, очевидно, медленнее, чем кэшированная запись, которая сохраняет данные в памяти ОС до тех пор, пока диск не будет достаточно простаивать, а затем записывает данные.

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

Как известно, RAID-контроллеры работают медленно с записью RAID-5, поэтому это становится проблемой, если ваше прикладное программное обеспечение использует много синхронных записей. По этой причине контроллеры RAID-5 оснащены собственными кэшами.

Контроллер RAID вместо этого записывает данные в свой кэш и ЛОЖЕТ ОС, сообщая ему, что он записал данные на диск, тогда как на самом деле данные все еще находятся в кэше RAID.

Но что, если питание было потеряно, пока данные все еще находились в буфере контроллера RAID? На ваших дисках были бы наполовину записанные и, возможно, противоречивые данные.

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

Компромисс заключается в следующем: контроллер RAID по-прежнему принадлежит ОС, в которой он записал данные на диск, но для защиты этих важных данных в случае сбоя питания контроллер RAID имеет аккумулятор, который поддерживает кэш-память в течение некоторого времени до тех пор, пока питание не будет отключено. восстановлены.

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

Все счастливы.

Вот почему RAID-контроллеры обычно не позволяют включать кэш записи, если у вас нет функционального и заряженного аккумулятора.

Стоит отметить, что некоторые новые дисковые контроллеры теперь поставляются с высокоскоростным флеш-кэшем, который хранит данные гораздо дольше, чем обычные 72 часа, и зачастую он также намного больше (~1 ГБ). Если вам нужны детали детали, дайте мне знать.

Думайте о том, что кэш BBU добавляет уровень защиты, аналогичный тому, который обеспечивается журнальной файловой системой. Это делается для того, чтобы транзакции, в данном случае простые записи, могли быть завершены, если они были прерваны при сбое питания. Как только пропадет питание, контроллер не сможет продолжать запись, поскольку это приведет к совершенно непредсказуемым результатам. Вместо этого он хранит данные так долго, как может, и завершит их запись, если / когда питание возобновится. Чего он не делает, так это действует как ИБП для приводов.

Необходимо приобрести батарею за 100 долларов, особенно на сервере БД, даже несмотря на то, что сбои питания случаются редко. Даже если у вас включены транзакции, и ваш сервер теряет питание до того, как эти изменения покинут кеш и сохранятся на диске, у вас останется неполный запрос или поврежденные данные.

Карта RAID может иметь 1 ГБ кэш-памяти; даже если он обычно не используется для кэша записи, можно предположить, что он будет хранить довольно длинную очередь неписанных данных.

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

Если бы не было BBU, сбой электропитания под нагрузкой имел бы катастрофические результаты с записью, что карта RAID обещала быть там потерянной (как в случае файловой системы, у вас могут быть ссылки на новый файл или каталог, но отсутствие говорит файл или каталог, даже если файловая система специально создала новый файл перед любыми ссылками на него, чтобы избежать этого), требуя восстановления из резервных копий или просто надеясь, что ваши данные не слишком испорчены. Еще хуже, если кто-то удалил секретный файл, а кто-то другой создал общедоступный файл, может случиться так, что часть содержимого секретного файла окажется в общедоступном файле. Как только вы нарушите предположения, на которых основана файловая система, все станет возможным.

Предполагать, что ИБП гарантирует бесперебойное питание, наивно; Что делать, если машина выходит из строя и вам нужно выдернуть шнур питания, или кто-то споткнется о него

Потребительские диски SATA (и твердотельные накопители) иногда также кэшируют синхронные записи, но их кеши намного меньше, и потребительское использование менее требовательно, поэтому они обычно могут сойти с рук.

Современные RAID-контроллеры также имеют флэш-память, в которую они копируют содержимое кэша записи в случае сбоя питания, поэтому батарея не должна работать более нескольких секунд.

Если ваш сервер выходит из строя, зависает или кто-то тянет за кабель питания, BBU защитит вас от поврежденных или потерянных данных, если вы используете write-cache. Использование USV только защищает вас от сбоя питания.

Если вы не хотите использовать write-cache, вам не нужен BBU.

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