Проще говоря, как работают журнальные файловые системы ext4?

Как работает файловая система журналирования и почему она не фрагментируется, как ntfs? Почему Windows не переключилась на файловую систему журналирования? Может кто-нибудь, пожалуйста, объясните мне это? Благодарю.

2 ответа

Решение

Мир ПК: Ubuntu Linux, день 16: EXT4 против NTFS

http://www.pcworld.com/businesscenter/article/230527/ubuntu_linux_day_16_ext4_vs_ntfs.html

Любая дискуссия вокруг "почему / почему нет" и "дефрагментация" должна включать Diskeeper (ранее Executive Software). Предлагать лицензию на ваш продукт Редмонду и обеспечить жизнеспособность вашей компании и / или продукта в течение двух лет - это в лучшем случае геркулесовое приключение.

Я постараюсь дать расширенный, но простой ответ, основываясь на доступных источниках:

Простое определение журналируемой файловой системы от PC World:

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

Немного подробнее из Википедии :

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

Например, удаление файла в файловой системе Unix включает три шага:

  1. Удаление его записи в каталоге.
  2. Выпуск инода в пул свободных инодов.
  3. Возврат всех дисковых блоков в пул свободных дисковых блоков.

Если сбой произойдет после шага 1 и до шага 2, будет потерянный индексный дескриптор и, следовательно, утечка памяти; если между шагами 2 и 3 происходит сбой, то блоки, ранее используемые файлом, не могут быть использованы для новых файлов, что эффективно снижает емкость файловой системы. Перестановка шагов тоже не помогает. (...)

(...)

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

Кроме того, использует некоторые другие техники для уменьшения фрагментации, а именно Extends и Delayedlocation (опять же из Википедии ):

Экстенты

Экстенты заменяют традиционную схему отображения блоков, используемую ext2 и ext3. Экстент — это диапазон смежных физических блоков, повышающий производительность при работе с большими файлами и уменьшающий фрагментацию. Один экстент в ext4 может отображать до 128 МБ непрерывного пространства с размером блока 4 КиБ. Непосредственно в inode может храниться четыре экстента. Когда в файле более четырех экстентов, остальные экстенты индексируются в дереве.

Отложенное распределение

ext4 использует технику повышения производительности, называемую выделением при сбросе, также известную как отложенное выделение. То есть ext4 откладывает выделение блоков до тех пор, пока данные не будут сброшены на диск; напротив, некоторые файловые системы выделяют блоки немедленно, даже когда данные попадают в кэш записи. Отложенное выделение повышает производительность и уменьшает фрагментацию за счет одновременного эффективного выделения больших объемов данных.

Я надеюсь, что это дает самые основы операций журналирования файловых систем и, в частности, некоторые ext4Детали.

Другие вопросы по тегам