Блочное устройство ведения журнала - Journaling block device

JBD, или же журналирующее блочное устройство, является типовым блочным устройством ведение журнала слой в Ядро Linux написано Стивен Твиди из Красная шляпа. JBD не зависит от файловой системы. ext3, ext4 и OCFS2 как известно, используют JBD.[1][2]

JBD существует в двух версиях: JBD и JBD2. JBD был создан с помощью ext3 в 1998 году.[3] JBD2 был разветвлен из JBD в 2006 году с ext4 с целью поддержки 64-битного (в отличие от только 32-битного в JBD) номера блока. В результате максимальный размер тома в ext4 увеличен до 1 EiB по сравнению с 16 TiB в ext3 (при условии 4 блока KiB).[4] JBD2 обратно совместим. OCFS2, начиная с Linux 2.6.28, использует JBD2.[5] Старый JBD был удален с помощью специального драйвера ext3 в Linux 4.3 (2015).[6]

Структуры JBD

Атомная ручка

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

Сделка

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

Сделка имеет несколько состояний:[2]

  • Выполняется - это означает, что транзакция все еще жива и может принимать больше дескрипторов
  • Заблокировано - новые ручки не принимаются, но существующие еще не закончены
  • Flush - транзакция завершена и записывается в журнал
  • Фиксация - транзакция записывается в журнал, и теперь изменения применяются к файловой системе
  • Завершено - транзакция полностью записана в журнал и на блочное устройство. Его можно удалить из журнала.

Восстановление

Основываясь на состояниях транзакции, JBD может определить, какие транзакции необходимо воспроизвести (или повторно применить) к файловой системе.[2]

Источники

  1. ^ «Linux Journalling API». Документация ядра Linux.
  2. ^ а б c d Кедар Совани (20 июня 2006 г.). "Linux: блочное устройство ведения журнала". KernelTrap. Архивировано из оригинал на 2007-09-26.
  3. ^ Стивен С. Твиди (май 1998 г.). «Журналирование файловой системы Linux ext2fs» (PDF). Материалы 4-й ежегодной выставки LinuxExpo, Дарем, Северная Каролина. Получено 2007-06-23.
  4. ^ Минмин Цао (9 августа 2006 г.). "Разветвление файловой системы ext4 и JBD2" (Список рассылки). Список рассылки ядра Linux.
  5. ^ «Linux 2.6.28». kernelnewbies.org. 2008.
  6. ^ Корбет, Джонатан. "rm -r fs / ext3". LWN.net.