Мне интересно, какова цель BBU. Мое первое понимание заключалось в том, что он позволяет кешу записывать данные на диск во время сбоя питания. Но в некоторых спецификациях указано, что BBU может хранить данные до 72 часов. Я ожидал, что данные будут записаны на диск за миллисекунды (учитывая, что на диске еще есть питание).
Так должен ли BBU защищать не только кеш, но и весь диск в течение нескольких секунд? Разве это не было бы еще безопаснее, потому что данные кеша записываются на диск, а не находятся в кеше и снова ждут питания? Примерно через секунду диск может выключиться.
Он не питает диски, он просто хранит данные в кеше (в данном случае) до 72 часов, пока вы не вернете машину в рабочее состояние. Когда вы включите машину, она запишет содержимое кеша обратно на диски.
Все, что он делает, - это защита от отключения электроэнергии. Если (по какой-то причине) машина теряет питание без чистой сброса данных на диск, батарея поддерживает содержимое кэша до тех пор, пока вы не сможете перезапустить машину.
Это не ИБП для дисков, поскольку диски могут быть во внешнем массиве дисков или даже в другой цепи питания. Даже ИБП мог выйти из строя.
Это работает так:
В большинстве операционных систем есть системный вызов, который позволяет выполнять так называемую «синхронную запись». Это означает, что во время операции записи, если запись завершена, то гарантируется, что она была зафиксирована на диске.
Таким образом, синхронная запись не кэшируется. Он блокирует приложение до его завершения. Очевидно, что такая операция медленнее, чем кэшированная запись, при которой данные хранятся в памяти ОС до тех пор, пока диск не станет достаточно свободным, а затем записываются данные.
Некоторое критически важное программное обеспечение, такое как программное обеспечение базы данных, выполняет синхронную запись для критических данных, поскольку наполовину записанное обновление в случае потери питания может нанести ущерб целостности базы данных.
Контроллеры RAID, как известно, работают медленно с записью RAID-5, поэтому это становится проблемой, если ваше прикладное программное обеспечение использует много синхронных операций записи. По этой причине контроллеры RAID-5 оснащены собственными кэшами.
Что делает RAID-контроллер, так это то, что он записывает данные в свой кеш вместо этого и ЛЕЖИТ ОС, сообщая ей, что он зафиксировал данные на диске, тогда как данные фактически все еще находятся в кеш-памяти RAID.
Но что, если питание пропадало, когда данные все еще находились в буфере RAID-контроллера? На ваших дисках будут наполовину записанные и, вероятно, несовместимые данные.
Вы можете сказать, что такое поведение противоречит цели синхронной записи ... если бы было нормально иметь кэшированную запись, тогда программное обеспечение приложения вообще не запрашивало бы синхронную запись.
Компромисс заключается в следующем: RAID-контроллер по-прежнему лжет ОС, что он передал данные на диск, но для защиты этих важных данных в случае сбоя питания в RAID-контроллере есть батарея, которая поддерживает кеш-память в течение некоторого времени, пока не будет отключено питание. восстановлен.
Таким образом, после того, как питание восстановится, а диски раскрутятся и инициализируются, контроллер все еще имеет эти данные в своем кэше благодаря батарее и может завершить запись транзакции на диск.
Все счастливы.
Вот почему контроллеры RAID обычно не позволяют включить кеш записи, если у вас нет исправного и заряженного аккумуляторного блока.
Стоит отметить, что некоторые новые контроллеры дисков теперь поставляются с высокоскоростным флеш-кешем, который хранит данные намного дольше, чем обычные 72 часа, часто он намного больше (~ 1 ГБ). Если вам нужны детали, дайте мне знать.
Думайте об этом кэше BBU как о добавлении уровня защиты, аналогичного тому, который обеспечивает журналируемая файловая система. Он нужен для того, чтобы транзакции, в данном случае простые записи, могли быть завершены, если они были прерваны из-за сбоя питания. После отключения питания контроллер не может продолжать запись, так как это приведет к совершенно непредсказуемым результатам. Вместо этого он хранит данные столько, сколько может, и закончит их запись, если / когда питание возобновится. Чего он не делает, так это работы как ИБП для приводов.
Получение этой батареи за 100 долларов является обязательным, особенно на сервере БД, хотя сбои в подаче электроэнергии случаются редко. Даже если у вас включены транзакции, и ваш сервер теряет мощность до того, как эти изменения покинут кеш и будут сохранены на диске, вы останетесь с неполным запросом или поврежденными данными.
Если ваш сервер выходит из строя, зависает или кто-то дергает за кабель питания, BBU защитит вас от поврежденных или потерянных данных, если вы используете кэш записи. Использование USV защищает вас только от отключения электроэнергии.
Если вы не хотите использовать кэш записи, вам не нужен BBU.
Карта RAID может иметь 1 ГБ кеш-памяти; хотя обычно он не используется полностью для кэша записи, можно предположить, что он будет хранить довольно длинную очередь незаписанных данных.
Файловые системы и базы данных предполагают, что их синхронная запись не переупорядочивается даже в случае сбоя питания. Обычно синхронная запись возвращается только после того, как данные будут на диске, но это относительно медленно. Карты RAID повышают производительность, группируя записи меньшего размера вместе и переупорядочивая их, чтобы они были менее случайными.
Если бы не было BBU, сбой питания под нагрузкой имел бы катастрофические результаты, поскольку записи, которые обещала карта RAID, были потеряны (например, в случае файловой системы, у вас могут быть ссылки на новый файл или каталог, но не указано файл или каталог, даже если файловая система специально создала новый файл перед любыми ссылками на него, чтобы избежать этого), требуя восстановления из резервных копий или просто надеясь, что ваши данные не слишком сильно испорчены. Хуже того, если кто-то удалил секретный файл, а кто-то другой создал файл, доступный для чтения, может случиться так, что часть содержимого секретного файла будет найдена в файле, доступном для чтения. Как только вы сломаете предположения, на которых построена файловая система, все станет возможным.
Наивно предполагать, что ИБП гарантирует бесперебойное питание; что, если машина выйдет из строя, и вам нужно выдернуть шнур питания, или кто-то споткнется о нее?
Потребительские диски SATA (и твердотельные накопители) иногда также кэшируют синхронную запись, но их кеши намного меньше, а их использование потребителями менее требовательно, поэтому им обычно это удается.
Современные RAID-контроллеры также имеют флэш-память, на которую они копируют содержимое кэша записи в случае сбоя питания, поэтому заряда батареи не требуется более чем на несколько секунд.