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


13

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

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


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

Ответы:


17

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

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

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


1
Таким образом, отличие от ИБП для дисков заключается в том, что он предназначен для сценария, когда диски не находятся в одной цепи питания? Во всех других случаях (контроллер и диски в одной цепи) ИБП будет лучше? Я все же предпочел бы, чтобы последние команды записывались на диск вместо ожидания в кеше во время сбоя питания.
танкасиус

Так что покупайте ИБП для своего сервера! BBU не имеет достаточно мощности для запуска массива дисков. Это дает вам достаточно большое окно, чтобы вы могли восстановить питание и сохранить изменения. Большинство отключений очень короткие, и большинству людей не нужны дополнительные расходы на ИБП для не жизненно важных машин.
JamesRyan

1
Все, что делает BBU - это сохраняет данные в кеше, пока вы не перезагрузите компьютер. Контроллер знает, что было записано на диск (диск сигнализирует о завершении операции). Все, что не было сброшено на диск, сохраняется до перезагрузки машины.
ConcernedOfTunbridgeWells

13

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

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

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

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

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

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

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

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

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

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

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

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


Я бы спросил о местонахождении контроллера. Это часть материнской платы или встроенная в жесткий диск?
Валентин Тихомиров

Кроме того, я хотел бы знать, как ОС может отправлять proper shutdownзапрос, если RAID ложится на него при выдаче сброса?
Валентин Тихомиров

@ValentinTihomirov Нет такой вещи, как properили improperвыключение. ОС выдает сигнал выключения питания, а БП - после того, как питание отключается. Когда питание отключено, энергозависимая память и все ее содержимое потеряны!
PF4Public

4

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


Спасибо за информацию, но я не являюсь
системным администратором

3

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


Но когда у меня есть ИБП для дисков + контроллер - зачем мне BBU? Только для scneario, где ИБП тоже выходит из строя?
танкасиус

Хороший вопрос. Если вы знаете, что сервер ВСЕГДА будет корректно выключен, то я также не убежден в необходимости BBU.
Джон Гарденье

2
BBU обычно часто используется для конфигурации с обратной записью. Некоторые RAID-контроллеры не поддерживают обратную запись без BBU. Тем не менее, я думаю, что это плохая идея предположить, что ваш сервер всегда будет правильно отключен.
ConcernedOfTunbridgeWells

2

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


1

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

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


1

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

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

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.