Это работает так:
Большинство операционных систем имеют системный вызов, который позволяет так называемую «синхронную запись». Это означает, что во время операции записи, если запись завершена, гарантируется, что она была записана на диск.
Поэтому синхронная запись не кэшируется. Он блокирует приложение до его завершения. Этот тип операции, очевидно, медленнее, чем кэшированная запись, которая сохраняет данные в памяти ОС до тех пор, пока диск не будет достаточно проста, а затем записывает данные.
Некоторые критически важные программы, такие как программное обеспечение баз данных, выполняют синхронную запись для критических данных, потому что половинное обновление в случае потери питания может нанести ущерб целостности базы данных.
Как известно, RAID-контроллеры работают медленно с записью RAID-5, поэтому это становится проблемой, если ваше прикладное программное обеспечение использует много синхронных записей. По этой причине контроллеры RAID-5 оснащены собственными кешами.
Контроллер RAID вместо этого записывает данные в свой кэш и ЛОЖЕТ ОС, сообщая ему, что он записал данные на диск, тогда как на самом деле данные все еще находятся в кэше RAID.
Но что, если питание было потеряно, пока данные все еще находились в буфере RAID-контроллера? На ваших дисках были бы наполовину записанные и, возможно, противоречивые данные.
Вы можете сказать, что это поведение противоречит цели синхронной записи ... если было бы нормально иметь кэшированную запись, то прикладное программное обеспечение вообще не запрашивало бы синхронизированную запись.
Компромисс заключается в следующем: контроллер RAID по-прежнему принадлежит ОС, в которой он записал данные на диск, но для защиты этих важных данных в случае сбоя питания контроллер RAID имеет аккумулятор, который поддерживает кэш-память в течение некоторого времени до тех пор, пока питание не будет отключено. восстановлены.
Таким образом, после того, как питание возвращается, диски вращаются и инициализируются, контроллер все еще хранит эти данные в своем кэше благодаря батарее и может завершить запись вашей транзакции на диск.
Все счастливы.
Вот почему RAID-контроллеры обычно не позволяют включать кэш записи, если у вас нет функционального и заряженного аккумулятора.