Файловые системы Windows. Выбираем лучшую. Файловая система. Основные понятия

Виды файловых систем

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

Файловая система по-простому говоря, это система, которая служит для хранения файлов и папок на жестком диске или на другом носителе, флешке, телефоне, камере и т.д. А так же для упорядочивании файлов и папок: перемещения их, копирования, переименования. Так что за все ваши файлы отвечает эта система, вот почему она так важна.

Если выбрать неправильно файловую систему ваш компьютер может некорректно работать, зависать, виснуть, медленно поступать информация, а ещё хуже возможна порча данных. Это хорошо если не системных, а то появится синий экран. А ещё самое главное что если ваш компьютер будет тормозить по этой причине, никакие чистки от мусора как вручную так и программами не помогут!

Виды файловых систем?

Многие файловые системы ушли уже в прошлое, а какие-то держатся на последнем издыхании, т.к. современные технологии растут и растут с каждым днем и вот уже на подходе совсем новая файловая система за которой может и будущее! Давайте посмотрим с чего все начилось.

Fat 12

Fat — file allocation table в переводе таблица размещения файлов. Сначала файловая система была 12 разрядной, использовала максимум 4096 кластеров.  Разрабатывалась она очень давно, ещё в времена DOS и использовалась для дискет и небольших накопителей объемом до 16 мб. Но на замену пришла более усовершенствованная fat16.

Fat 16

Эта файловая система содержала уже 65525 и поддерживала диски размеров 4.2 Гб, в то время это было роскошью и по этому на то время она хорошо справлялась. Но размер файла не мог превышать 2гб, да и по экономичности не самый лучший вариант, чем больше объем файла, тем больше кластер занимает места. По этому объем более 512 мб использовать не выгодно. В таблице показано сколько занимает размер сектора в зависимости от величины носителя.

виды файловых систем

Хоть на то время система и справлялась, но в дальнейшем появился ряд недостатков:

1. Нельзя работать с жесткими дисками более 8 Гб.

2. Нельзя создавать файлы более 2 Гб.

3. Корневая папка не может содержать более 512 элементов.

4. Невозможность работать с разделами дисков более 2 Гб.

Fat 32

Современные технологии не стоят на месте и со временем и системы fat 16 стало не хватать и на замену пришлаfat 32. Эта система уже могла поддерживать диски размером до 2 терабайт (2048 гигабайт) и уже экономично использовать дисковое пространство за счет кластеров меньшего размера. Из плюсов ещё то что нет ограничений по использованию файлов в корневой папке и более надежна по сравнению с предыдущими версиями. Но самый большой минус для настоящего времени, то что файлы могут повреждаться и хорошо что это не приведет к синему экрану. И второй главный минус, что сейчас файлы превышают размер более 4 Гб, а система не поддерживает больший объем одного файла. Что зачастую возникают вопросы у пользователей почему я не могу скачать фильм размером в 7гб, хотя на диске свободно 100гб, вот и вся проблема.

По этому минусов и здесь хватает:

1. Файлы объемом более 4 Гб система, не поддерживает.

2. Система подвержена фрагментации файлов из-за чего система начинает тормозить.

3. Подвержена повреждением файлов.

4. На настоящий момент уже существуют диски более 2 Тб.

NTFS

И вот на замену пришла новая системаntfs (New Technology File System) что в переводе файловая системановой технологии, в которой убраны ряд недостатков, но и минусов хватает. Эта система является последней утвержденной, не считая новой, о которой я расскажу чуть ниже. Система появилась ещё в 90х годах, а утверждена в 2001 году при выходе windows xp и используется по сей день. Файловая система поддерживает диски размером до 18 Тб, круто да? И при фрагментации файлов скорость теряется не так заметно. Безопасность уже достигла хороших высот, при сбое, повреждение информации маловероятна.

Минусы и здесь будут:

1. Потребляемость оперативной памяти, если у вас оперативной памяти меньше 64 мб, то ставить не рекомендуется.

2. При остатке 10% свободного места на жестком диске система начинает заметно тормозить.

3. Работа с малым объемом накопителя может быть затруднена.

Новая ReFS

Совсем новая файловая система ReFS (Resilient File System) в переводе отказоустойчивая файловая система, разработанная для новой операционной системы Windows, за которой может быть и будущее! Со слов разработчиков система должна быть необыкновенно надежной и в скором после доработки, будет поддерживаться на остальных операционных системах. Вот таблица, различий:

ремонт
Как видно, новая система поддерживает большие объемы дискового пространства, так и большее количество символов в пути и имени файла. Система обещает быть более безопасной в которой должно быть минимум сбоев из-за новой архитектуры и другим способом записи журнала. Пока видны конечно одни плюсы, но на сколько это правда пока не известно. После полного утверждения возможно появится и ряд минусов. Но пока это остается ещё загадкой. Будем надеяться что новая файловая система принесет нам только положительные ощущения от неё.

Основные современные ФС

1. FAT32 — замена FAT16

К середине 90-х годов возможностей ФС FAT16 для передовых дисковых накопителей того времени стало не хватать. Главным образом, виной этому послужило ограничение на максимальный размер тома равный 2ГБ (при максимальном размере кластера в 64КБ). Продолжение увеличения размера кластера (очевидный подход к решению этой проблемы) вело к неудовлетворительному увеличению размера слэка. Другое решение состояло в переходе от 16-разрядной ФС к 32-разрядной, что и было сделано фирмой Microsoft, включившей новую ФС FAT32 в состав ОС Windows 95 OSR 2 в 1996 году.

Для сохранения совместимости со старыми программами структура FAT32 претерпела минимальные изменение относительно FAT16. Главные отличия от предыдущих версий FAT состоят в следующем. Блок начальной загрузки на разделах с FAT32 был увеличен до 2 секторов и включает в себя резервную копию загрузочного сектора, что позволяет системе быть более устойчивой к возможным сбоям на диске. Объем, занимаемый таблицей размещения файлов, увеличился, поскольку теперь каждая запись в ней занимает 32 байта, и общее число кластеров на разделе FAT32 составляет 228 (в 32-битном слове учитываются только 28 разрядов). Соответственно, выросло и количество зарезервированных секторов.

Кроме повышения максимального размера тома до 4ТБ и максимального размера файла до 4ГБ, FAT32 вносит ряд необходимых усовершенствований в структуру корневого каталога, который больше не располагается в определенном месте. Вместо этого в блоке BPB хранится указатель на начальный кластер корневого каталога. В результате снимается ранее существовавшее ограничение на число записей в корневом каталоге. Кроме того, для учета свободных кластеров, в зарезервированной области на разделе FAT32 имеется сектор, содержащий число свободных кластеров и номер самого последнего использованного кластера. Это позволяет системе при выделении следующего кластера не перечитывать заново всю таблицу размещения файла.

Помимо перечисленных нововведений, в FAT32 существует множество унаследованных от FAT16 ограничений. Например, максимальная длина пути к файлу не должна превышать 260 символов, в то время как 255 из них может занимать имя файла.

2. HPFS — (High Performance File System) – новое решение/упор на скорость

Другой подход к решению проблем FAT16 демонстрирует ФС HPFS, разработанная специалистами Microsoft и IBM на основе опыта IBM по созданию файловых систем MVS, VM/CMS и виртуального метода доступа. Впервые HPFS появилась в 1988 году (на 8 лет раньше FAT32) как основа реализации ОС OS/2 1.2.

Диск в HPFS делится на сектора фиксированного размера (512 байт в текущей реализации, при этом номер сектора или их количество кодируются во внутренних структурах как 4-байтовое беззнаковое целое, что позволяет адресовать диски размером до (232 — 1) * 512 = 2ТБ).

В начале диска расположены несколько управляющих блоков:

  1. Загрузочный сектор DOS-овского вида (boot sector).
  2. SuperBlock содержит информацию о геометрии диска, указатели на битмапы свободного пространства, указатель на корневой каталог, размер дисковой полосы, номер полосы с каталогами, указатель на список сбойных блоков и т. п.
  3. SpareBlock содержит указатели на пул HOTFIX-areas, пул Fault-Tolerance областей, пул блоков для операций на почти переполненном диске и другие указатели, флаги и дескрипторы.
  4. Область начальной загрузки.
  5. Область секторов используемых (временно) для выполнения операций требующих дополнительную дисковую память. Эта область например, иногда задействуется при переименовании файла на заполненном диске.
  6. Другие области.

Для того чтобы определить, свободен ли сектор, HPFS использует битмапы, в которых каждый бит соответствует одному сектору. Если бит содержит 1 (соответственно 0), то это означает, что сектор занят (соответственно свободен). Если бы на весь диск был только один битмап, то для его подкачки приходилось бы перемещать головки чтения/записи в среднем через половину диска. Чтобы избежать этого, HPFS разбивает диск на «полосы» (bands) длиной по 8 мегабайт и хранит битмапы свободных секторов в начале или конце каждой полосы. При этом битмапы соседних полос располагаются рядом.

Расстояние между двумя битмапами равно 16MB. Размер полосы (8MB) может быть изменён в следующих версиях HPFS, так как на него нет прямых завязок. Размер битмапа равен 2K (8MB/512/8 = 2K).

Полоса, находящаяся в центре диска, используется для хранения каталогов. Эта полоса называется Directory Band. Однако, если она будет полностью заполнена, HPFS начнёт располагать каталоги файлов в других полосах.

Файлы и каталоги в HPFS базируются на фундаментальном объекте, называемом FNode. Каждая FNode занимает один сектор и всегда располагается в HPFS поблизости от своего файла или каталога (обычно непосредственно перед файлом или каталогом). FNode содержит длину и первые 15 символов имени файла, статистику по доступу к файлу, внутреннюю информацию, расширенные атрибуты и ACL (или только часть, если они очень большие), ассоциативную информацию о расположении и подчинении файла и т. д.

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

С точки зрения размещения файлы, каталоги и их расширенные атрибуты (если они не помещаются в FNode) рассматриваются HPFS как наборы экстентов. Экстент — это кусок файла, лежащий в последовательных секторах. Каждый экстент описывается двумя числами: номером первого сектора и длиной (в секторах). Два последовательных экстента всегда объединяются HPFS в один. Минимальный размер экстента — один сектор. Так как расстояние между соседними битмапами свободных секторов равно 16MB, то и размер максимального экстента равен 16MB. Если файл состоит из восьми или менее экстентов, то его описание целиком хранится в FNode.

Если файл состоит более чем из восьми экстентов (реальные файлы состоят из 1-3 экстентов), то его описание может занимать несколько секторов, расположенных поближе к файлу, при этом эти сектора содержат не список, а прошитое сбалансированное дерево экстентов (B±Tree). Дерево построено так, что его разбалансировка никогда не превышает 1/3 по объёму, и оно не отличается от оптимального более чем на один уровень. Корень дерева находится в FNode, причём может содержать до 12 элементов. Каждый дополнительный сектор, представляющий собой ветку дерева, содержит до 60 элементов, а лист — 40 элементов. Таким образом, двухуровневая структура блоков размещения может хранить информацию о 480 секторах, что позволяет работать с файлами размером до 7.68ГБ. На практике размер файла не может превышать 2ГБ, что обусловлено реализацией СУФ.

При создании/расширении файлов HPFS пытается минимизировать количество экстентов, используя для этого статистику, битмапы свободных секторов и другую информацию. Например, HPFS старается условно резервировать хотя бы 4 килобайта места в конце файлов, которые растут. Другой прием: расположение конкурентно растущих файлов или файлов, открытых разными цепочками или процессами, в разных полосах диска.

Каталоги в HPFS, как и в FAT, образуют древовидную структуру. Но при этом внутри каталога HPFS строит сбалансированное дерево (B-Tree) на основе имён файлов для быстрого поиска файла по имени внутри каталога. Так, если каталог содержит 4096 файлов, FAT будет читать в среднем 64 сектора для поиска файла внутри каталога, а HPFS 2-4 сектора.

Размер блока, в терминах которых выделяются каталоги, равен 2KB в текущей версии HPFS. Размер записи, описывающей файл, зависит от размера имени файла. Если имя занимает 13 байтов (8.3), то 2-килобайтовый блок вмещает 41 описатель файлов. Блоки прошиты списком (как и описатели экстентов) для облегчения последовательного обхода.

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

Расширенные атрибуты и их разновидность ACL HPFS хранит в FNode. Если они не влезают в FNode, HPFS хранит из почти как файл, построив для этого B±Tree.

3. NTFS (New Technology File System) – надежность/безопасность

В 1993 году фирма Microsoft выпусила новую ФС для семейства ОС NT. При проектировании NTFS особое внимание внимание было уделено следующим характеристикам:

  • надежность. Высокопроизводительные компьютеры и системы совместного пользования (серверы) должны обладать повышенной надежностью, которая является ключевым элементом структуры и поведения NTFS. Одним из способов увеличения надежности является введение механизма транзакций, при котором осуществляется журналирование файловых операций. При журналировании файловых операций СУФ фиксирует в специальном служебном файле происходящие изменения. В начале операции, связанной с изменением файловой структуры, делается соответствующая пометка. Если во время операций над файлами происходит какой-нибудь сбой, то упомянутая отметка о начале операции остается указанной как незавершенная. При выполнении процедуры проверки целостности ФС после перезагрузки машины эти незавершенные операции будут отменены и файлы будут приведены к исходному состоянию. Если же операция изменения данных в файлах завершается нормальным образом, то в служебном файле поддержки журналирования операция отмечается как завершенная;
  • безопасность. NTFS поддерживает объектную модель безопасности NT и рассматривает все тома, каталоги и файлы как самостоятельные объекты. NTFS обеспечивает безопасность на уровне файлов; это означает, что права доступа к томам, каталогам и файлам могут зависеть от учетной записи пользователя и тех групп, к которым он принадлежит. Каждый раз, когда пользователь обращается к объекту ФС, его права доступа проверяются по списку разрешений данного объекта. Если пользователь обладает достаточным уровнем прав, его запрос удовлетворяется; в противном случае запрос отклоняется. Эта модель безопасности применяется как при локальной регистрации пользователей на компьютерах, так и при удаленных сетевых запросах;

    Стандартные разрешения NTFS Соответствующие им комбинации индивидуальных
    разрешений NTFS
    Для каталогов Для файлов
    No access (нет доступа) Нет никаких разрешений Нет никаких разрешений
    List (просмотр) Read, eXecute Нет никаких разрешений
    Read (чтение) Read, eXecute Read, eXecute
    Add (добавление) Write, eXecute Нет никаких разрешений
    Add & Read (чтение и добавление) Read, Write, eXecute Read, eXecute
    Change (изменение) Read, Write, eXecute, Delete Read, Write, eXecute, Delete
    Full Control (полный доступ) Все разрешения Все разрешения

  • прозрачное сжатие/шифрование. Система NTFS обладает встроенными средствами сжатия и шифрования, которые можно применять к отдельным файлам, целым каталогам и даже томам (и в последствии отменять или назначать их по своему усмотрению);
  • поддержка POSIX (Portable operating system for computing environments). Поскольку правительство США требовало, чтобы все закупаемые им системы хотя бы в минимальной степени соответствовали стандарту POSIX, такая возможность была предусмотрена и в NTFS. К числу базовых средств ФС POSIX относится необязательное использование имен файлов с учетом регистра, хранение времени последнего обращения к файлу и механизм так называемых «жестких ссылок» — альтернативных имен, позволяющих ссылаться на один и тот же файл по двум и более именам;
  • расширенная функциональность. NTFS проектировалась с учетом возможного расширения. В ней были воплощены многие дополнительные возможности — усовершенствованная отказоустойчивость, эмуляция других ФС, параллельная обработка потоков данных и создание файловых атрибутов, определяемых пользователем.

NTFS превосходно справляется с обработкой больших массивов данных и достаточно хорошо проявляет себя при работе с томами объемом от 300-400 Мбайт и выше. Максимально возможные размеры тома и файла составляют 16ЭБ (220ТБ). Количество файлов в каталогах не ограничено. В основу структуры каталогов NTFS заложено B-Tree.

Как и многие другие системы, NTFS делит все полезное дисковое пространство тома на кластеры — блоки данных, адресуемые как единицы данных. NTFS поддерживает размеры кластеров от 512Б до 64КБ; стандартом же считается кластер размером 2 или 4 КБ.

M
F
T
З
о
н
а
M
F
T
   Зона для размещения   
файлов и каталогов
К
о
п
и
я
   Зона для размещения   
 файлов и каталогов 

Структура тома NTFS
Все дисковое пространство в NTFS делится на две неравные части. Первые 12% диска отводятся под так называемую MFT-зону — пространство, которое может занимать, увеличиваясь в размере, главный служебный метафайл MFT. MFT (matrer file table) — это специальный файл, главная системная структура данных, которая и позволяет определять местонахождение всех остальных файлов. MFT поделен на записи фиксированного размера 1КБ (минимум 1КБ и максимум 4КБ), и каждая запись соответствует какому-либо файлу (в общем смысле этого слова). Первые 16 файлов носят служебный характер и недоступны ОС — они называются метафайлами, причем самый первый метафайл — сам MFT. Эти 16 элементов MFT — единственная часть диска, имеющая строго фиксированное положение. Копия первых 16 записей хранится в середине тома для надежности.

Каждый из упомянутых первых 16 файлов NTFS отвечает за какой-либо аспект работы системы и находится в корневом каталоге NTFS-тома. Все они начинаются с символа «$».

Имя
метафайла
Назначение метафайла
$MFT Сам Master File Table
$MFTmirr Копия первых 16 записей MFT
$LogFile Файл поддержки журналирования
$Volume Служебная информация — метка тома, версия ФС и т.д.
$AttrDef Список стандартных атрибутов на томе
$. Корневой каталог
$Bitmap Карта свободного места тома
$Boot Загрузочный сектор (если раздел загрузочный)
$Quota Файл, в котором записаны права пользователей на использование
дискового пространства (этот файл начал работать лишь
в Windows 2000 с системой NTFS 5.0)
$UpCase Файл — таблица соответствия заглавных и прописных букв в
именах файлов. В NTFS имена файлов записываются в Unicode
и искать большие и маленькие эквиваленты в данном случае
– нетривиальная задача

Метафайлы NTFS
Каждый файл в NTFS представлен с помощью потоков (streams), то есть у него нет как таковых «просто данных», а есть «потоки». Для правильного понимания потока дотаточно указать, что один из потоков и носит привычный нам смысл — данные файла. Но большинство атрибутов файла — тоже потоки. Таким образом, получается, что базовая сущность у файла одна — номер в MFT, а все остальное, включая и его потоки, — опционально.

Имя файла в NTFS, в отличие от FAT и HPFS, может содержать любые символы, включая полный набор национальных алфавитов, так как данные представлены в Unicode — 16-битном представлении, которое дает 65535 разных символов. Максимальная длина имени файла в NTFS — 255 символов.

4. ext2 (Second Extended File System) – стандарт в мире Linux

На заре развития Linux использовала файловую систему Minix. Эта файловая система была довольно стабильна, но имела жесткое ограничение в 64МБ на раздел. Так же присутствовало ограничение имени файла: оно составляло 14 символов. Эти и не только ограничения повлекли появление в апреле 1992 года «расширенной файловой системы» (extended file system), решавшей 2 главные проблемы Minix. Новая файловая система расширила ограничения на размер файла до 2ГБ и установила предельную длину файла в 255 символов. Но она все равно имела проблемы: не было поддержки раздельного доступа, временных меток модификации данных.

Решением всех проблем стала новая файловая система, разработанная в январе 1993 года. В ext2 были сразу реализованы соответствующие стандарту POSIX списки контроля доступа ACL и расширенные атрибуты файлов.

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

Все типы файлов имеют символьные имена. В иерархически организованных файловых системах обычно используются три типа имен — файлов: простые, составные и относительные. Не является исключением и «вторая расширенная файловая система». Ограничения на простое имя состоят в том, что его длина не должна превышать 255 символов, а также в имени не должны присутствовать символ NUL и ‘/’. Полное имя представляет собой цепочку простых символьных имен всех каталогов, через которые проходит путь от корня до данного файла. В файловой системе ext2 файл может входить в несколько каталогов, а значит, иметь несколько полных имен; здесь справедливо соответствие «один файл — много полных имен». Однако, полное имя однозначно определяет файл.

Атрибутами файловой системы ext2 являются:

  • Тип и права доступа к файлу;
  • Владелец, группа;
  • Информация о разрешенных операциях доступа к файлу;
  • Времена создания, последнего доступа, последнего изменения и время последнего удаления;
  • текущий размер файла;
  • тип файла;
    • обычный файл;
    • каталог;
    • файл байт-ориентированного устройства;
    • файл блочно-ориентированного устройства;
    • сокет;
    • именованный канал;
    • символическая ссылка;
  • число блоков, занимаемых файлом;
  • ACL
  • другие

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

Как и в любой файловой системе UNIX, в составе ext2 можно выделить следующие составляющие:

  • блоки и группы блоков;
  • индексный дескриптор;
  • суперблок.

Всё пространство раздела диска разбивается на блоки фиксированного размера, кратные размеру сектора — 1024, 2048 и 4096 байт. Размер блока указывается при создании файловой системы на разделе диска. Меньший размер блока позволяет экономить место на жестком диске, но также ограничивает максимальный размер файловой системы. Все блоки имеют порядковые номера. С целью уменьшения фрагментации и количества перемещений головок жесткого диска при чтении больших массивов данных блоки объединяются в группы блоков.

Суперблок (Superblock)
Описания группы блоков (Group Descriptors)
Битовая карта блоков (Block Bitmap)
Битовая карта индексных дескрипторов (Inode Bitmap)
Таблица индексных дескрипторов (Inode Table)
Данные (Data)

Обобщенная структурная схема ФС ext2
Базовым понятием файловой системы является индексный дескриптор (информационный узел), information node, или inode. Это специальная структура, которая содержит информацию об атрибутах и физическом расположении файла.

Каждая группа блоков имеет одинаковое строение. Суперблок — основной элемент файловой системы ext2. Он содержит общую информацию о файловой системе:

  • общее число блоков и индексных дескрипторов в файловой системе;
  • число свободных блоков и индексных дескрипторов в файловой системе;
  • размер блока файловой системы;
  • количество блоков и индексных дескрипторов в группе;
  • размер индексного дескриптора;
  • идентификатор файловой системы;

От целостности суперблока напрямую зависит работоспособность файловой системы. Операционная система создает несколько резервных копий суперблока для возможности его восстановления в случае повреждения. Описание группы блоков, представляет собой массив, содержащий общую информацию обо всех блоках раздела. Битовая карта блоков — это структура, каждый бит которой показывает, отведен ли соответствующий ему блок какому-либо файлу. Если бит равен 1, то блок занят. Аналогичную функцию выполняет битовая карта индексных дескрипторов, показывая какие именно индексные дескрипторы заняты, а какие нет.

Все оставшееся место, обозначенное в таблице, как данные, отводится для хранения файлов.

Система адресации данных — это одна из самых существенных составных частей файловой системы. Именно система адресации позволяет находить нужный файл среди множества как пустых, так и занятых блоков на диске. Файловая система ext2 использует следующую схему адресации блоков файла. Для хранения адреса файла выделено 15 полей, каждое из которых состоит из 4 байт. Если размер файла меньше или равен 12 блоков, то номера этих кластеров непосредственно перечисляются в первых двенадцати полях адреса. Если размер файла превышает 12 блоков, то следующее 13-е поле содержит адрес кластера, в котором могут быть расположены номера следующих блоков файла. Таким образом, 13-й элемент адреса используется для косвенной адресации. При максимальном размере блока равном 4096 байт, 13-й элемент, может содержать до 1024 номеров следующих кластеров данных файла. Если размер файла превышает 12+1024 блоков, то используется 14-е поле, в котором находится номер блока, содержащего 1024 номеров блоков, каждый из которых хранят 1024 номеров блоков данных файла. Здесь применяется уже двойная косвенная адресация. И наконец, если файл включает более 12+1024+10242 = 1049612 блоков, то используется последнее 15-е поле для тройной косвенной адресации.

Таким образом, описанная выше система адресации, позволяет при максимальном размере блока 4 Кб иметь файлы размера до 2 терабайт.

ext2 достаточно быстра для того, что бы служить эталоном в тестах производительности ФС, но не является журналируемой, и это её главный недостаток. Развитием ext2 стала журналируемая файловая система ext3, полностью совместимая с ext2.

5. ReiserFS (Reiser3) – попытка расширить горизонты ext2(3)

ReiserFS — журналируемая ФС, разработанная специально для Linux компанией Namesys под руководством Ганса Рейзера(Hans Reiser) в 2001 году. Обычно под словом ReiserFS понимают третью версию (последняя — 3.6.19), а четвёртую, появившуюся в 2004 году, называют Reiser4. В настоящий момент разработка Reiser3 прекращена, чтобы сконцентрироваться на её преемнике.

В настоящее время ReiserFS поддерживается только для GNU/Linux, но может быть в будущем перенесена на другие платформы. Появившись в Linux версии 2.4.1, она стала первой журналируемой ФС включенной в ядро. ReiserFS — стандартная ФС для дистрибутивов Slackware, SuSE, Xandros, Yoper, Linspire и Kurumin Linux.

ReiserFS задумывалась как замена ext2, для этого она должна была быть лучше во всех отношениях, начиная с производительности и кончая надежностью и безопасностью. Действительно, ReiserFS демонстрирует обилие возможностей современных ФС:

  • tail packing: упаковка нескольких небольших файлов в один блок во избежание фрагментации и потери диского пространства. Из-за сильной потери производительности Namesys рекомендует отключить эту возможность на чувствительных к ресурсам машинах;
  • delayed allocation: записываемая информация сразу не сбрасывается на жесткий диск, а хранится в памяти настолько долго, насколько это возможно. Это уменьшает фрагментацию данных и позволяет достичь преобразования большого числа случайных обращений к диску в малое число последовательных (Reiser4);
  • transparent compression/encryption: сжатие и шифрование данных проводится на уровне ФС (Reiser4).

При работе с файлами меньше 4k, с включенной функцией tail packing превосходит по производительности ext2 и ext3 в 10—15 раз. ReiserFS это прекрасное решение для серверов Usenet, кэширующих HTTP прокси-серверов, почтовых серверов и в других местах, где критична скорость работы с малыми файлами. По заявлениям Namesys, Reiser4 в 2 раза превосходит по производительности ext2 при обычной работе.

Тем не менее, ReiserFS имеет много недостатков, которые не дают ей заменить ext2:

  • Reiser3 может быть повреждена в результате перестройки дерева во время проверки fsck (file system check). Перестройка дерева нужна только, если метаданные очень сильно повреждены;
  • версии ReiserFS, включённые в ядро Linux младше версии 2.4.10, признаны нестабильными компанией Namesys и не рекомендованы для промышленного использования, особенно в связке с NFS;
  • неизвестно способа дефрагментации, помимо полного дампа ФС и последующего восстановления (хотя имеется переупаковщик для ReiserFS v4, который заботится о фрагментации файлов);
  • максимальный размер тома и файла равны соответственно 16ТБ и 8ТБ.

6. UFS (Unix File System) – ext2 под BSD

UFS — ФС, сделанная «по образу и подобию» ext2, для ОС 4.4BSD в 1994 году. UFS считается основной в FreeBSD, OpenBSD и NetBSD, также поддержка этой файловой системы имеется в операционных системах Linux и Solaris. В 2002 году вместе с ОС FreeBSD5.0 была выпущена ФС UFS2, реализовавшая многие возможности современных ФС и увеличившая максимальный размер тома/файла с 256ТБ/256ТБ в UFS до 1YiB/32ПБ соответственно.

Основным недостатком UFS является то, что журналирование так и не было в ней реализовано.

7. XFS – ext2 под IRIX

Аналогично UFS, при создании ФС XFS разработчики (фирма SGI) ориентировались на опыт ФС ext2. Выпущенная в 1994 году XFS также известна как система, обладающая лучшим журналированием среди современных ФС. Интересная особенность этой ФС (которую одни считают недостатком, а другие преимуществом) состоит в том, что удаленные в XFS файлы практически невосстановимы.

8. HFS Plus – ФС для Mac OS

HFS+ или HFS Plus — ФС, разработанная фирмой Apple в 1998 году (Mac OS 8.1) для замены HFS (Hierarchical File System) как основной ФС, используемой на компьютерах Macintosh.

HFS Plus — улучшенная версия HFS, поддерживающая файлы большего размера (ограничения составляют 16ЭБ на максимальный размер файла и тома) и использующая символы Unicode (вместо Mac OS Roman) в именах файлов.

Типичный раздел HFS Plus характеризуется 7-ю структурами:

  1. В секторах 0 и 1 раздела находятся блоки загрузки (boot blocks), также в разделе есть копии этих секторов.
  2. В секторе 2 находится заголовок раздела (Volume Header), содержащий широкое разнообразие данных о самом разделе: размер, дату и время создания, положение других структур раздела. Заголовок раздела всегда находится в одном и том же месте.
  3. Файл размещения (Allocation File), каждый бит которого соответствует, занятому блоки или свободному блоку. Ноль означает, что блок свободен, единица означает, что блок занят. Файл размещения хранится как обычный файл. Он не занимает специально зарезервированное место в начале диска, может изменяться в размерах и состоять из нескольких фрагментов.
  4. Файл каталогов (Catalog File) представляет собой B-Tree, хранящее записи о всех файлах и директориях, хранящихся на разделе. Запись в файле каталогов занимает 4КБ в Mac OS и 8КБ в Mac OS X.
  5. Файл переполнения экстентов (Extents Overflow File) также представляет собой B-Tree, хранящее записи об экстентах. Каждая запись файла каталогов может хранить информацию о 8-ми экстентах, при превышении этого числа используется файл переполнения экстентов. Информация об испорченных блоках также хранится в этом файле. Размер одной записи об экстенте равен 1КБ в Mac OS и 4КБ в Mac OS X.
  6. Файл аттрибутов (Attributes File) — нововведение HFS Plus относительно HFS, которое также представляет собой B-tree.
  7. Файл запуска (Startup File) спроектирован для ОС помимо Mac OS, не имеющих поддержки HFS и HFS+.

HFS+ поддерживает шифрование на уровне ФС, но не предоставляет возможностей сжатия.

9. Fossil – ФС для Plan 9

Fossil — ФС, созданная фирмой Bell Labs в 2003 году и устанавливаемая в ОС Plan 9 по умолчанию. Fossil идеально подходит для частого архивирования данных благодаря технологии «снимков» (snapshots). «Снимки» или копии данных, создающиеся по команде или автоматически, хранятся на диске, пока это позволяет объем свободного места.

10. ZFS (Zettabyte File System) – нет ограничениям!

ZFS — ФС, созданная фирмой Sun Microsystems в 2004 году для использования в ОС Solaris. Основной целью разработчиков ZFS было создание ФС, ограничения которой никогда не будут достигнуты на практике, поэтому ФС сделали 128-битной (это означает, что в ней может хранится в 18 квинтильонов раз больше информации, чем в 64-битных ФС). Руководитель проекта, Бонвик, так выразился по поводу ограничений ZFS: «Чтобы превысить ограничения 128-битной ФС потребуется хранилище, большее по размерам, чем Земля, и энергия, необходимая для того, чтобы осушить океаны».

Некоторые теоретические ограничения ZFS:

  • 16ЭБ — максимальный размер ФС;
  • 16ЭБ — максимальный размер файла;
  • 16ЭБ — максимальный размер любого атрибута;
  • 256 — количество атрибутов файла;
  • 256 — количество файлов в директории.

Пример, иллюстрирующий, как велики эти числа: если 1000 файлов будут создаваться каждую секунду, потребуется 9000 лет для достижения предела.
Тем не менее существующие реализации ZFS имеют недостатки: с ZFS нельзя загружать ОС (не предусмотрена поддержка boot), в ФС не хватает шифрования.

11. NFS (Network File System) – Сетевая ФС

NFS — это протокол, первоначально разработанный фирмой Sun Microsystems в 1984 году и описанный в следующих RFC: 1094, 1813 и 3530 (отменяет 3010). NFS представляет собой распределенную ФС, позволяющую компьютеру получать доступ к файлам через сеть.

Более чем за 20 лет были выпущены различные версии реализаций NFS.

Версия 1 использовалась только для экспериментальных целей внутри Sun Microsystems.

Версия 2 (RFC 1094, март 1989) изначально функционировала через UDP, что означало, что протокол был без сохранения состояний.

Версия 3 (RFC 1813, июнь 1995) добавила:

  • поддержку файлов больших 4ГБ по размеру (ФС стала 64-битной);
  • поддержку асинхронной записи на сервер для увеличения производительности;
  • дополнительные атрибуты файлов.

С введением 3-й версии NFS появилась поддержка TCP как транспортного уровня, что позволило сделать использование NFS в пределах WAN более осуществимым.

Версия 4 (RFC 3010, декабрь 2000; исправлено в RFC 3530, апрель 2003) включает в себя улучшения производительности, безопасности и представляет протокол с сохранением состояний. Версия 4 — первая версия, разработанная IETF после того, как Sun Microsystems передала ей права на разработку NFS протокола.

WebNFS — расширение 2-й и 3-й версий, которое позволяет интегрировать NFS в веб-браузеры и позволять работать через файерволы.

Что там с ZFS?

На сегодняшний день ZFS остается самой продвинутой файловой системой, аналогов которой нет не только в мире Open Source, но и в среде коммерческого ПО. Она быстра, надежна, имеет богатый функционал и невероятно проста в администрировании. Изначально созданная компанией Sun Microsystems (привет Oracle) для операционной системы Solaris и анонсированная в 2005 году, она сразу стала лакомым кусочком для пользователей и разработчиков других операционных систем. Однако далеко не всем из них удалось почувствовать ее вкус.

Первыми претендентами на включение кода ZFS в свою ОС стали, конечно же, линуксоиды, готовые тащить в ядро все, что не привинчено болтами. Но судьба (роль которой, скорее всего, сыграла сама Sun) распорядилась иначе. Код ZFS, как и всей операционной системы OpenSolaris, оказался защищен лицензией CDDL, которая накладывает серьезные ограничения на его использование и, более того, совершенно несовместима с лицензией GPLv2, используемой ядром Linux. Фактически это означает, что есть только три пути включения ZFS в ядро: нелегальный, который включает в себя перенос ZFS без соблюдения закона об авторском праве, юмористический, при котором код Linux лицензируется под CDDL, и титанический, когда огромная кодовая база ZFS переписывается под GPL, да еще и с обходом Sun’овских патентов.

В общем — не комильфо, поэтому единственный способ задействовать ZFS в Linux — это использовать ее порт на fuse (http://zfs-fuse.net), страдающий багами и низкой производитель ностью, которая в силу архитектурных особенностей ZFS вряд ли сможет повыситься без переноса хотя бы части кода в ядро. Компания Apple также планировала внедрение ZFS в Mac OS X и даже успела выпустить экспериментальный драйвер и внедрить поддержку чтения ZFS в версию 10.5 Leopard, однако в октябре 2009 года проект закрыли без объяснения причин. Учитывая то, что лицензия BSD, покрывающая код ядра Mac OS X, позволяла без проблем перенести ZFS в ОС от Apple с минимальными затратами, такой поступок можно объяснить либо давлением со стороны Sun, либо глобальными изменениями в планах самой Apple.

В апреле 2007 года Павел Якуб Давидек закончил портирование ZFS в FreeBSD. На протяжении двух лет код был помечен как экспериментальный, но после исправления ряда проблем разработчик объявил о стабилизации порта, и 15 октября прошлого года FreeBSD стала первой ОС после Solaris, готовой к промышленной эксплуатации ZFS. По состоянию на 11 января 2010 года восьмая ветка FreeBSD полностью поддерживает zpool v14 (текущая версия ZFS в OpenSolaris: zpool v16).

Работа по поддержке ZFS велась и разработчиками NetBSD. В рамках проекта Google Summer of Code 2007 был представлен начальный (но неработающий) порт файловой системы. Работа по доведению кода до ума продолжилась как часть Summer of Code 2009, и в августе 2009 года поддержка ZFS была добавлена в репозиторий NetBSD.

Небольшая часть кода ZFS открыта под GPL, благодаря чему удалось интегрировать его в загрузчик GRUB, который теперь умеет выполнять загрузку с ZFS-раздела.

Евгений Зобнин

Источники

  • https://AlexZsoft.ru/fajlovye-sistemy-2012-vybiraem-luchshuyu.html
  • http://cs.usu.edu.ru/study/presentfs.html
  • https://xakep.ru/2010/10/26/53643/

[свернуть]

Related Posts