Различные файловые системы
Linux поддерживает несколько типов файловых систем. Наиболее важные из них рассмотрены ниже. minix
Считается самой старой и самой надежной файловой системой, но достаточно ограниченной в своих возможностях (у файлов отсутствуют некоторые временные параметры, длина имени файла ограничена 30-ю символами) и доступных объемах (максимум 64 Мб на одну файловую систему).
xia
Модифицированная версия системы minix, в которой увеличена максимальная длина имени файла и размер файловой системы, хотя она не pеализует никаких новых возможностей.
ext2
Наиболее богатая функциональными возможностями файловая система из семейства совместимых с Linux. На данный момент считается самой популярной системой. Она разработана с учетом совместимости с последующими версиями, поэтому для установки новой версии кода системы не требуется устанавливать ее заново.
ext
Предыдущая версия системы ext2, не совместима с последующими версиями. В настоящее время она очень редко включается в пакеты новых поставляемых систем, т.к. большинство пользователей сейчас пользуются системой ext2. В принципе уже есть и ext3, но она пока находится только в стадии бета-ьестирования.
В дополнение к рассмотренным выше, в Linux включена поддержка еще некоторых файловых систем для обеспечения обмена файлами между другими операционными системами. Эти файловые системы работают также, как и описанные выше, кроме того, что их функциональные возможности могут быть значительно ограничены по сравнению с возможностями, обычно предоставляемыми файловыми системами UNIX. msdos
Обеспечивается совместимость с системой MS-DOS (а также OS/2 и Windows NT) по файловым системам FAT12, FAT16, FAT32 и VFAT.
ntfs
Основная файловая система Windows NT.
usmdos
Расширяет возможности драйвера файловой системы MS-DOS для Linux таким образом, что при работе в Linux, имеется возможность работы с именами файлов нестандартной длины, просмотра прав доступа к файлу, ссылок, имени пользователя, которому принадлежит файл, а также оперирование с файлами устройств. Это позволяет использовать обычную систему MS-DOS, так, как если бы это была система Linux. Таким образом, исключается необходимость создания отдельного раздела для Linux.
iso9660
Стандартная файловая система для CD-ROM. Довольно популярное развитие стандарта CD-ROM, выполненное Rock Ridge'ем, которое обеспечивает автоматическую поддержку имен файлов нестандартной длины.
nfs
Сетевая файловая система, обеспечивающая разделение одной файловой системы между несколькими компьютерами для предоставления доступа к ее файлам со всех машин.
hpfs и hpfs386
Файловые системы OS/2.
hfs и hfs+
Файловые системы Apple MacOS.
dfs
Файловая система для дисков DVD.
sysv
Файловые системы SystemV/386, Coherent и Xenix.
Есть поддержка множества других файловых систем, например, Atari или Amiga. На текущий момент Linux поддерживает порядка 50 файловых систем. Такое возможно благодаря применению технологии IFS (Installable File System), которая позволяет подключать новые системы с помощью драйверов. Нечто подобное сейчас пытается сделать Windows NT, но ее успехи пока незначительны. Набор используемых файловых систем зависит от конкретной ситуации. Для Linux лучшим выбором является ext2. Если Вам нужна совместимость с другими системами, ее можно организовать.
Также существует файловая система proc, которая обычно доступна через каталог /proc. В действительности, она не является файловой системой, хотя по ее структуре сложно обнаружить разницу. Эта система позволяет получить доступ к определенным структурам данных ядра, к таким, как список процессов (process list, отсюда и название) или сведения об аппаратуре. Все эти структуры выглядят как файловая система из каталогов и обычных текстовых файлов и ими можно оперировать обычными средствами работы с файловой системой. Например, для получения списка всех процессов, используется следующая команда: $ ls -l /proc total 0 dr-xr-xr-x 4 root root 0 Jan 31 20:37 1 dr-xr-xr-x 4 liw users 0 Jan 31 20:37 63 dr-xr-xr-x 4 liw users 0 Jan 31 20:37 94 dr-xr-xr-x 4 liw users 0 Jan 31 20:37 95 dr-xr-xr-x 4 root users 0 Jan 31 20:37 98 dr-xr-xr-x 4 liw users 0 Jan 31 20:37 99 -r--r--r-- 1 root root 0 Jan 31 20:37 devices -r--r--r-- 1 root root 0 Jan 31 20:37 dma -r--r--r-- 1 root root 0 Jan 31 20:37 filesystems -r--r--r-- 1 root root 0 Jan 31 20:37 interrupts -r-------- 1 root root 8654848 Jan 31 20:37 kcore -r--r--r-- 1 root root 0 Jan 31 11:50 kmsg -r--r--r-- 1 root root 0 Jan 31 20:37 ksyms -r--r--r-- 1 root root 0 Jan 31 11:51 loadavg -r--r--r-- 1 root root 0 Jan 31 20:37 meminfo -r--r--r-- 1 root root 0 Jan 31 20:37 modules dr-xr-xr-x 2 root root 0 Jan 31 20:37 net dr-xr-xr-x 4 root root 0 Jan 31 20:37 self -r--r--r-- 1 root root 0 Jan 31 20:37 stat -r--r--r-- 1 root root 0 Jan 31 20:37 uptime -r--r--r-- 1 root root 0 Jan 31 20:37 version $ В действительности, должно быть еще несколько файлов, не соответствующих процессам, однако, этот пример немного укорочен. Вы будете удивлены когда поймете, сколько программ активно работают с данной файловой системой. При ее грамотном использовании можно написать программу для вывода практически любой системной информации, какая только есть. Причем, все данные доступны в виде обычного текста!
Хотя система /proc и называется файловой, ни одна ее часть не взаимодействует с диском. Она существует только в представлении ядра и при попытке обращения к какой-либо ее части, создается впечатление, что эта часть где-то существует, хотя в действительности это не так. Даже если существует файл /proc/kcore в несколько мегабайт размером, он не занимает места но диске.