Устройство блока журналирования
JBD , или журналируемое блочное устройство , представляет собой общий уровень журналирования блочных устройств в ядре Linux, написанный Стивеном Твиди из Red Hat . 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 ТиБ в ext3 (при условии, что блоки имеют размер 4 КиБ). [ 4 ] JBD2 обратно совместим. OCFS2, начиная с Linux 2.6.28, использует JBD2. [ 5 ] Старый JBD был удален с помощью специального драйвера ext3 в Linux 4.3 (2015). [ 6 ]
Структуры JBD
[ редактировать ]Атомная ручка
[ редактировать ]Атомный дескриптор — это, по сути, совокупность всех низкоуровневых изменений, которые происходят во время одного атомарного обновления высокого уровня в файловой системе. Атомарный дескриптор гарантирует, что обновление высокого уровня либо произойдет, либо нет, поскольку фактические изменения в файловой системе сбрасываются только после регистрации атомарного дескриптора в журнале. [ 2 ]
Сделка
[ редактировать ]В целях эффективности и производительности JBD группирует несколько атомарных дескрипторов в одну транзакцию, которая записывается в журнал по истечении фиксированного периода времени или в журнале не остается свободного места для ее размещения.
Транзакция имеет несколько состояний: [ 2 ]
- Выполняется — это означает, что транзакция все еще активна и может принимать больше дескрипторов.
- Заблокировано - новые ручки не принимаются, а существующие еще недоделаны
- Flush – транзакция завершена и записывается в журнал.
- Commit — транзакция записывается в журнал и теперь изменения применяются к файловой системе
- Завершено – транзакция полностью записана в журнал и блочное устройство. Его можно удалить из журнала.
Восстановление
[ редактировать ]На основании состояний транзакций JBD может определить, какие транзакции необходимо воспроизвести (или повторно применить) к файловой системе. [ 2 ]
Источники
[ редактировать ]- ^ «API журналирования Linux» . Документация ядра Linux .
- ^ Jump up to: а б с д Кедар Совани (20 июня 2006 г.). «Linux: устройство блокировки журналирования» . Ядерная ловушка . Архивировано из оригинала 26 сентября 2007 г.
- ^ Стивен С. Твиди (май 1998 г.). «Журналирование файловой системы ext2fs Linux» (PDF) . Материалы 4-й ежегодной LinuxExpo, Дарем, Северная Каролина . Проверено 23 июня 2007 г.
- ^ Минмин Цао (9 августа 2006 г.). «Разветвление файловой системы ext4 и JBD2» (список рассылки). Список рассылки ядра Linux.
- ^ «Линукс 2.6.28» . kernelnewbies.org . 2008.
- ^ Корбет, Джонатан. «rm -r фс/ext3» . LWN.net .