Мягкие обновления - Soft updates

Мягкие обновления это подход к поддержанию файловая система целостность метаданных в случае сбоя или отключения электроэнергии. Мягкие обновления работают путем отслеживания и обеспечения зависимостей между обновлениями метаданных файловой системы. Мягкие обновления - альтернатива более часто используемому подходу журнальные файловые системы.

Метод работы

Мягкие обновления допускают только асинхронные метаданные записывает, что не делает файловую систему на диске несогласованной или что единственное несоответствие, которое когда-либо происходит, - это утечка места для хранения (пространство, выделенное как выделенное, когда оно не используется каким-либо файлом). Это позволяет избежать выполнения упорядоченной синхронной записи метаданных путем временного «отката» любой части блока метаданных, которая зависит от другого потенциально не очищенного или частично откатываемого блока при его записи.

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

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

Мягкие обновления требуют периодической очистки метаданных в энергонезависимой памяти.

Реализации

FreeBSD поддерживает мягкие обновления для УФС файловая система[1] и они были включены по умолчанию во время установки в течение многих лет. Программные обновления включаются или отключаются вручную во время создания файловой системы с возможностью выбора newfs команда.[2] Они могут быть отключены или включены в любое время после этого с помощью параметра tunefs команда.[3] FreeBSD 9.0 представила дополнение к журналированию мягких обновлений с целью устранения фоновой fsck для сборки мусора после сбоя.[4][5] Однако включение ведения журнала в файловой системе с мягкими обновлениями отключает возможность создания моментальных снимков файловой системы.[6] Это может вызвать проблемы, когда файловые системы выгружаются с параметром -L, так как моментальные снимки используются для обеспечения согласованности файловой системы во время дампа.

OpenBSD поддерживает мягкие обновления для файловой системы FFS. Мягкие обновления включаются, когда файловая система монтируется с помощью параметра команды mount.[7]

NetBSD поддерживал программные обновления до выпуска 6.0 (2012 г.), когда он устарел в пользу WAPBL ведение журнала.[8]

Сравнение с журнальными файловыми системами

Ни ведение журнала, ни мягкие обновления не гарантируют, что никакие данные не будут потеряны, но они гарантируют, что файловая система остается согласованной.

Преимущество файловой системы с мягкими обновлениями состоит в том, что ее можно смонтировать сразу после сбоя, поскольку нет воспроизведения журнала.

Примечания

  • Гангер, Грегори Р .; Патт, Йель Н. (ноябрь 1994 г.). «Производительность обновления метаданных в файловых системах» (PDF). Материалы симпозиума USENIX по разработке и внедрению операционных систем (OSDI): 49–60.

внешняя ссылка

Рекомендации

  1. ^ МакКусик, Маршалл Кирк; Невилл-Нил, Джордж В. (2005). «8,6». Дизайн и реализация операционной системы FreeBSD. Эддисон-Уэсли. ISBN  978-0321968975.
  2. ^ "newfs (8)". FreeBSD. 2017-07-07. Получено 2019-02-02.
  3. ^ "tunefs (8)". FreeBSD. 2016-04-19. Получено 2019-02-02.
  4. ^ «Примечания к выпуску FreeBSD 9.0-RELEASE». FreeBSD. 2012-01-12. Получено 2019-02-02.
  5. ^ МакКусик, Маршалл Кирк; Роберсон, Джефф (23 января 2010 г.). "Журналируемые софт-обновления" (PDF). Получено 2019-02-02.
  6. ^ «Ошибка 195485 - [ufs] mksnap_ffs (8) не может создать моментальный снимок с включенными журналируемыми мягкими обновлениями». FreeBSD. 2014-11-28. Получено 2019-02-02.
  7. ^ "крепление (8)". OpenBSD. 2018-01-18. Получено 2019-02-02.
  8. ^ «Анонс NetBSD 6.0». NetBSD. 2012-10-17. Получено 2019-02-02.