8.1.2. Обзор различных типов файловых систем
8.1.2. Обзор различных типов файловых систем
ЗАМЕЧАНИЕ. Обсуждение в данном разделе специфично для Linux. Однако, у многих современных систем Unix также есть сходные особенности. Мы рекомендуем вам изучить документацию своей системы.
Исторически V7 Unix поддерживал лишь один тип файловой системы; вспомогательные данные и организация каталогов каждого из разделов были структурированы одним и тем же способом. 4.1 BSD использовал файловую систему с такой же как у V7 структурой, но с размером блока 1024 байта вместо 512 байтов. 4.2 BSD ввело «файловую систему BSD», которая разительно изменила расположение индексов и данных на диске и дала возможность использовать гораздо большие размеры блоков. (В общем, использование больших протяженных блоков данных обеспечивает лучшую производительность, особенно для чтения файлов.)
Вплоть до 4.3 BSD и System V Release 2 в начале и середине 1980-х системы Unix продолжали поддерживать один тип файловой системы. Для переключения компьютера от одной файловой системы на другую[77] приходилось сначала резервировать каждую файловую систему на среду архивирования (9-дорожечную ленту), обновлять систему, а затем восстанавливать данные.
В середине 1980-х Sun Microsystems разработала архитектуру ядра, которая сделала возможным использование нескольких архитектур файловой системы в одно и то же время. Этот проект был реализован в их операционной системе SunOS, сначала для поддержки сетевой файловой системы Sun (Network File System — NFS). Однако, как следствие, стало возможным также поддерживать несколько архитектур на диске. System V Release 3 использовала сходную архитектуру для поддержки удаленной файловой системы (Remote File System — RFS), но она продолжала поддерживать лишь одну архитектуру на диске.[78] (RFS никогда широко не использовалась и сейчас является лишь исторической сноской.)
Общий дизайн Sun стал популярным и широко реализовывался в коммерческих системах Unix, включая System V Release 4. Системы Linux и BSD используют разновидность этого дизайна для поддержки множества форматов файловых систем на диске. В частности, обычным для всех разновидностей Unix на платформе Intel x86 является возможность монтирования файловых систем MS-DOS/Windows FAT, включая поддержку длинных имен, а также форматированные в соответствии с ISO 9660 CD-ROM.
Linux имеет несколько собственных (т.е. размещаемых на диске) файловых систем. Наиболее популярными являются файловые системы ext2 и ext3. Однако, доступно значительно больше файловых систем. Сведения о большинстве из них вы можете найти в каталоге /usr/src/linux/Documentation/filesystems/ (если вы установили исходный код ядра). В табл. 8.1 перечислены имена различных файловых систем с кратким описанием каждой из них. Сокращение «RW» означает «чтение/запись», a «RO» означает «только чтение».
Таблица 8.1. Поддерживаемые ядром файловые системы Linux (ядро 2.4.x)
Имя Режим Описание afs RW Andrew File System (файловая система Andrew) adfs RW Acorn Advanced Disc Filing System (расширенная дисковая файловая система Acorn) affs RO, RW Amiga Fast File system (быстрая файловая система Amiga) Режим «только для чтения» в противоположность режиму «для записи и чтения» зависит от версии файловой системы autofs RW Файловая система для взаимодействия с демоном автоматического монтирования befs RO Файловая система BeOS. Помечена как программное обеспечение альфа. bfs RW SCO UnixWare Boot File system (загрузочная файловая система SCO Unix). binfmt-misc RW Специальная файловая система для запуска интерпретаторов компилированных файлов (например, файлов Java) efs RW Файловая система, разработанная для варианта Unix SGI, названного Irix coda RW Экспериментальная распределенная файловая система, разработанная в CMU[79] cramfs RO Небольшая файловая система для хранения файлов в постоянной памяти (ROM). devfs RW Способ динамического предоставления файлов для /dev (устарело). devpts RW Специальная файловая система для псевдотерминалов. ext2 RW Вторая расширенная файловая система. Файловая система по умолчанию для GNU/Linux, хотя некоторые дистрибутивы используют теперь ext3. ext3 RW Файловая система ext2 с журналированием hfs RW Hierarchical File System (иерархическая файловая система) Apple Mac OS. hpfs RW High Performance File System (высокопроизводительная файловая система) OS/2. intermezzo RW Экспериментальная распределенная файловая система для работы в отсоединенном от сети состоянии. См веб-сайт InterMezzo (http://www.inter-mezzo.org) jffs RW Journalled Flash File system (журналируемая файловая система с групповой записью/считыванием, для встроенных систем) jffs2 RW Journalled Flash File system 2 (тоже для встроенных систем) iso9660 RO Файловая система ISO 9660 для CD-ROM. Поддерживаются также расширения Rock Ridge, заставляющие выглядеть использующие их CD-ROM как нормальная файловая система (но только для чтения). jfs RW Journalled File System (журналируемая файловая система) IBM для Linux. ncp RW Протокол Novell NCP для NetWare; клиент удаленной файловой системы. ntfs RO Поддержка файловой системы NTFS Windows openpromfs RO Файловая система /proc для PROM на системах SPARC proc RW Доступ к информации о процессах и ядре qnx4 RW Файловая система QNX4 (небольшой операционной системы реального времени) ramfs RW Файловая система для создания RAM-дисков. reiserfs RW Развитая журналируемая файловая система romfs RO Файловая система для создания простых RAM-дисков только для чтения. smbfs RW Поддержка клиента для файловых систем SMB (разделяемых файлов Windows) sysv RW Файловые системы System V Release 2, Xenix, Minix и Coherent. coherent, minix и xenix являются псевдонимами tmpfs RW Файловая система электронного диска, поддерживающая динамический рост. udf RO Формат файловой системы UDF, используемый в DVD-ROM ufs RO, RW Быстрая файловая система BSD, на современных системах с доступом для чтения и записи. umsdos RW Расширение vfat, заставляющее выглядеть ее подобно файловой системе Unix usbfs RW Специальная файловая система для работы с устройствами USB. Первоначальным именем было usbdevfs, это имя до сих пор появляется, например, в выводе mount vfat RW Все варианты файловых систем FAT MS-DOS/Windows Компонентами являются msdos и fat vxfs RW Журналируемая файловая система Veritas VxFS. xfs RW Высокопроизводительная журналирующая файловая система, разработанная SGI для Linux. См веб-сайт XFS (http://oss.sgi.com/projects/xfs/)Не все из этих файловых систем поддерживаются командой mount; список поддерживаемых см. в mount(8).
Журналирование является методикой, впервые использованной в системах баз данных для увеличения производительности обновлений файлов таким образом, что восстановление файловой системы в случае аварии могло быть сделано быстро и правильно. В момент написания этого были доступны несколько различных журналируемых файловых систем, конкурирующих за продвижение в мире GNU/Linux. Одной из них является ext3; у нее преимущество обратной совместимости с существующими файловыми системами ext2, очень просто конвертировать файловые системы туда-сюда между этими двумя видами (См. tune2fs(8).) ReiserFS и XFS также имеют своих твердых сторонников.
Файловые системы fat, msdos, umsdos и vfat все разделяют общий исходный код. В общем, можно использовать vfat для монтирования разделов Windows FAT-32 (или другой FAT-xx), a umsdos, если нужно использовать раздел FAT в качестве корневой файловой системы для GNU/Linux.
Файловые системы Coherent, MINIX, первоначальной System V и Xenix все имеют сходные структуры на диске. Тип файловой системы sysv поддерживает все из них; четыре имени coherent, minix, sysv и xenix являются псевдонимами один для другого. Имена coherent и xenix в конечном счете будут удалены.
Быстрая файловая система BSD в течение нескольких лет успешно развилась. Файловая система ufs поддерживает операции чтения/записи для версий, начиная с 4.4 BSD, которая является основой для трех широко распространенных операционных систем BSD: FreeBSD, NetBSD и OpenBSD. Она поддерживает также операции чтения/записи для файловой системы Sun Solaris как для SPARC, так и для систем Intel x86. Первоначальный формат BSD и формат операционной системы NeXTStep поддерживаются в режиме только для чтения.
Обозначения «RO» для befs и ntfs означают, что файловые системы этих типов можно смонтировать и читать, но в них невозможно записать файлы или удалить из них файлы. (Со временем это может измениться; проверьте документацию своей системы.) Файловые системы cramfs, iso9660, romfs и udf отмечены «RO», поскольку лежащее в их основе средство по своей сути является устройством только для чтения.
Две файловые системы, которых больше не существует, это ext, которая была оригинальной расширенной файловой системой, и xiafs, которая расширяла оригинальную файловую систему MINIX для использования длинных имен и больших размеров файлов, xiafs и ext2 появились примерно в одно время, но ext2 в конечном счете стала доминирующей файловой системой.[80]