Большинство SSD имеют кэш для обеспечения высокой скорости записи. Но что происходит, когда я выключаю компьютер с полным кешем? Этот кеш непостоянен? Как быстро обрабатывается и сохраняется кеш? Нужно ли мне подождать несколько секунд, прежде чем выключить компьютер после передачи большого количества данных? Нужна ли мне защита от потери питания, чтобы избежать потери данных?
Во время управляемого завершения работы ОС / файловая система сбрасывает все ожидающие записи в стабильное хранилище, создавая окончательный барьер записи (например, ATA FLUSH), чтобы убедиться, что в энергозависимом кэше записи не осталось данных. Для этого может потребоваться некоторое время, но вам не нужно ничего делать: просто дождитесь завершения операции (и отключения системы).
Но что происходит во время неожиданный выключение, например сразу после отключения электроэнергии? На потребительских SSD без кеша записи с защитой от потери мощности вы потеряете все несинхронизированное содержимое кеша. Чтобы избежать потери кэшированных данных, пользователю / ОС необходимо явно синхронизировать и сбрасывать важные, но ожидающие данные (например, запись в базу данных или обновление журнала файловой системы) с помощью примитива sync + барьер (например, sync и fsync () в Linux).
На корпоративных твердотельных накопителях, которые имеют конденсаторную кэш-память обратной записи с защитой от потери мощности, внезапный сбой питания не приведет к потере данных. В зависимости от типа / прошивки накопителя этот защищенный кэш можно экспортировать как с обратной записью, так и со сквозной записью:
в первом случае (обратная запись) ОС продолжит посылать барьеры записи и сбросы кеша, но накопитель просто проигнорирует их, если встроенный контроллер не обнаружит некоторые проблемы со схемой защиты от потери мощности. Этот режим работы требует несколько более высоких накладных расходов (из-за барьера, создаваемого ОС), но позволяет диску динамически переключаться между фактическими режимами обратной / обратной записи + сброса / записи на основе внутренних счетчиков работоспособности;
во втором случае (сквозная запись) ОС избегает посылки каких-либо барьеров записи. Это приводит к большей производительности (из-за меньших накладных расходов ОС), но если электронный привод обнаруживает какие-либо проблемы, он может переключиться только на "полную" запись, если любой запись считается важной и сразу же записывается на физический носитель.
Да, файловая система откладывает завершение работы до того момента, когда ее собственный «ленивый писатель» сбрасывает все записи в постоянное хранилище. Однако, если вы нажмете «выключить», все данные в кеше будут потеряны. Очевидно.