Блочное устройство ведения журнала - 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]
Источники
- ^ «Linux Journalling API». Документация ядра Linux.
- ^ а б c d Кедар Совани (20 июня 2006 г.). "Linux: блочное устройство ведения журнала". KernelTrap. Архивировано из оригинал на 2007-09-26.
- ^ Стивен С. Твиди (май 1998 г.). «Журналирование файловой системы Linux ext2fs» (PDF). Материалы 4-й ежегодной выставки LinuxExpo, Дарем, Северная Каролина. Получено 2007-06-23.
- ^ Минмин Цао (9 августа 2006 г.). "Разветвление файловой системы ext4 и JBD2" (Список рассылки). Список рассылки ядра Linux.
- ^ «Linux 2.6.28». kernelnewbies.org. 2008.
- ^ Корбет, Джонатан. "rm -r fs / ext3". LWN.net.
Этот Linux -связанная статья является заглушка. Вы можете помочь Википедии расширяя это. |