Что такое журналируемая файловая система?

Каждая операционная система использует свою собственную файловую систему для хранения данных. Windows использует NTFS, macOS использует APFS, а большинство дистрибутивов Linux используют Ext4. Хотя эти файловые системы принципиально отличаются друг от друга, одна функция, которая присутствует во всех этих файловых системах, — это ведение журнала.
Давайте подробнее рассмотрим журналируемые файловые системы и то, как они влияют на повседневные вычисления.
Что такое ведение журнала?
Представьте, что каждый файл на компьютере — это уникальный каталог библиотечных журналов, периодических изданий или документов. Каждый новый номер, добавляемый в каталог, немного изменяет его информацию. Вместо того чтобы искать запись по всей библиотеке, вам нужно только проверить соответствующий каталог.
Ведение журнала в файловых системах работает очень похоже. Его задача — отслеживать изменения, еще не зафиксированные в файловой системе. Даже после любых сбоев или неожиданных выключений вы все равно можете получить доступ к последней версии файла с меньшей вероятностью его повреждения.

Термин «журнал» происходит от аналогии с дневником. Любые изменения, которые вы записываете в записи дневника, хранятся с указанием даты и времени. Подобным образом ведение журнала позволяет всем обновлениям файла храниться в непрерывной области диска.
Эти обновления не обязательно должны располагаться физически рядом друг с другом: на самом деле записи журнала разбросаны по всему диску. Но вместо случайного доступа к ним они доступны в последовательности, похожей на записи в дневнике, что в тысячи раз быстрее.

Ведение журнала экономит много времени на извлечение данных из файлов, благодаря непрерывным выделениям памяти.
Определения
В зависимости от операционной системы существуют различные виды записей журнала, о которых мы расскажем ниже. Прежде чем мы это сделаем, нам необходимо уточнить несколько числовых терминов.
Тебибайты (TiB): мы все знаем, сколько составляет гигабайт. Тебибайт (TiB) равен 1024 (= 210) гигабайтам. TiB — это одна из стандартных единиц для выражения больших значений в файловом хранилище. Также 1 TiB = 1.09951 терабайта (TB).
Пебибайт (PiB): пебибайт (PiB) равен 1024 TiB или около миллиона гигабайт — это действительно очень большое значение.
Кластеры: кластеры данных — это наименьшая единица дискового пространства, которую можно использовать для хранения файла. Он может составлять от 512 байт для одного сектора до 64 КБ для 128 секторов.
1. NTFS
Файловая система нового поколения (NTFS) является стандартной системой ведения журнала Microsoft для Windows и Windows Server. Она использует журналы и информацию о контрольных точках для восстановления стабильных значений файловой системы после перезапуска.
NTFS поддерживает большие объемы данных: для размера кластера 4 КБ она может разместить 16 TiB данных. Для размера кластера 64 КБ (максимальный) это означает 256 TiB данных при максимальном размере файла 256 TiB.
В настоящее время NTFS исправляет любые повреждения файлов онлайн через то, что известно как «самовосстанавливающийся NTFS». Пользователи Windows 10, возможно, помнят о простоях из-за Chkdsk, что раньше беспокоило старые версии Windows. В последнем обновлении самовосстанавливающегося NTFS проблема была решена онлайн, и простоя не происходит.
Также читайте: FAT32 против exFAT против NTFS: В чем разница?
2. Ext
Расширенная файловая система (ext) была журналируемой системой Linux с самого начала. Она была вдохновлена Unix File System (UFS) и прошла три других итерации с момента своего появления в начале 90-х.
- ext2: изначально использовавшаяся в Debian и Red Hat Linux, ext2 все еще используется в флеш-носителях, таких как SD-карты и USB-накопители. Она может разместить от 2 до 32 TiB данных при максимальном размере кластера 8 КБ.
- ext3: как третья расширенная файловая система, ext3 использовалась с Linux, BSD и ReactOS. Ограничения по размеру аналогичны ext2.
- ext4: последняя версия расширенной файловой системы, она используется Google для файлового хранилища, BSD, PowerPC и большинством современных дистрибутивов Linux. Ограничения по размеру равны 1024 PiB или около миллиона TiB. Максимальный размер кластера составляет 64 КБ.
ext4 использует контрольные суммы в журнале для повышения надежности, так как может безопасно избежать ожидания дискового ввода-вывода во время ведения журнала и немного улучшить производительность диска.
3. APFS
Файловая система Apple (APFS) используется в macOS High Sierra, iOS 10.3 и более поздних версиях, а также в нескольких других системах. Она поддерживает до 8000 PiB (263 байт), что примерно в восемь раз больше, чем ext4.

Основные возможности APFS многочисленны: они включают создание «снимков», что похоже на ксерокопию системы в определенный момент времени. Как и NTFS, она использует контрольные суммы для обеспечения целостности данных и защищает от системных сбоев, используя подход, называемый «копирование при записи». APFS использует полное шифрование диска.
Заключение
Ведение журнала в файловых системах — это базовая страховка от системных сбоев и неожиданных выключений. Записывая изменения в журнал быстро, мы можем гарантировать, что все изменения во файлах записаны и не потеряны во время отключения питания или сбоев компьютера.
Существует множество журналируемых файловых систем, помимо обсуждаемых здесь. Oracle, VMware, BSD, Cisco, Solaris и многие другие имеют свои собственные проприетарные единицы журнала.