ОС Linux поддерживает огромное количество разнообразных файловых систем (Таблица 1. Список файловый систем). В каталоге fs/ дерева исходных кодов ядра находится более 60 подкаталогов, каждый из которых соответствует одной файловой системе. Кроме этого, существует интерфейс FUSE, обеспечивающий поддержку ещё большего количества файловых систем, реализованных не в пространстве ядра (kernel level), а в пространстве пользователя (user level).
Традиционно файловые системы разделяют на четыре класса:
§ Локальные файловые системы;
§ Сетевые файловые системы;
§ Кластерные файловые системы;
§ Файловые системы специального назначения.
К основным локальным файловым системам Linux относят:
§ ext2, ext3 и теперь ext4, которая с декабря 2008 года (ядро 2.6.28) считается стабильной;
§ XFS,
§ JFS,
§ Reiserfs и Reiser4.
Ведётся работа над файловой системой btrfs, которая, возможно, войдёт в число основных файловых систем Linux, но пока до этого ещё далеко.
Таблица 1. Список файловый систем
Тип ФС | Назначение |
minix | Файловая система minix — это первая файловая система, которая использовалась в Linux. Она имела массу недостатков: ограничения размера раздела жесткого диска 64 мегабайтами; длина имени файла была ограничена 30 символами и т. д. Она продолжает использоваться для дискет и RAM-дисков |
extfs | Еще одна из ранних версий файловой системы для Linux, расширение файловой системы minix. В настоящее время заменена файловой системой ext2 и уже не используются |
ext2fs | Вторая расширенная файловая система (second extended filesystem) была создана как расширение файловой системы extfs. ext2fs обеспечивает более высокую производительность (в части скорости и использования центрального процессора), поддерживаются длинные имена и большие размеры файлов |
xiaf | Файловая система Xiaf была создана на основе minix с целью обеспечения большей устойчивости и безопасности. Она обеспечивает выполнение основных функций файловой системы без излишней сложности |
msdos | Файловая система, используемая для разделов, сформатированных в MS-DOS и Windows. |
umsdos | Файловая система UMS-DOS является расширением файловой системы DOS, используемым под Linux. В ней добавлено использование длинных имен файлов, идентификаторы пользователя и группы (UID/GID), разрешения в стиле POSIX и специальные файлы (устройства, именованные каналы и т. д.) при этом совместимость с DOS не потеряна |
hpfs | Файловая система для разделов OS/2. В Linux обеспечивается только чтение из разделов hpfs |
proc | Это файловая система, которая используется для обращения к структурам данных ядра. Файлы этой системы не занимают дискового пространства. |
nfs | Сетевая файловая система, используемая для доступа к дискам, расположенным на удаленных компьютерах |
swap | Раздел или файл свопинга OC Linux |
sysv | Файловая система Unix Systen V. Она поддерживает файловые системы Xenix FS, SystemV/386 FS и Coherent FS |
iso9660 | Файловая система для монтирования CD-ROM, соответствующая стандарту ISO 9660 |
vfat | Файловая система FAT-32. Поддерживаются длинные имена файлов |
smb | то сетевая файловая система, которая поддерживает протокол SMB, используемый Windows, Windows NT и Lan Manager. Для того чтобы использовать эту файловую систему, надо иметь специальную программу монтирования smbmount |
ncpfs | Это сетевая файловая система, обеспечивающая поддержку протокола NCP, применяемого в Novell NetWare. Для того чтобы использовать эту файловую систему, надо тоже иметь специальную программу. |
К основным сетевым файловым системам в Linux относят:
|
|
|
|
§ NFS, основная сетевая файловая система в UNIX (в Linux поддерживается как NFSv3, так и NFSv4);
§ CIFS
Также можно выделить файловую систему AFS, поддержка которой в ядре Linux существенно развилась за последнее время.
Файловые системы отличаются:
§ функциональностью;
§ производительностью;
§ надёжностью;
§ эффективностью хранения данных.
Для улучшения этих и других характеристик в файловых системах используются различные подходы, решения и техники, в том числе:
§ журналирование;
§ транзакции;
§ снимки и версии файлов;
§ контрольные суммы файлов и метаданных;
§ шифрование данных;
§ подвыделение блоков (block suballocation);
§ различные меры для борьбы с фрагментацией.