Книга: Linux программирование в примерах
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]
- 8.1. Монтирование и демонтирование файловых систем
- 7.1. Проверка типов термов
- Общая система типов
- Глава 1. Обзор Ruby
- Резервное копирование многофайловых баз данных
- Восстановление из резервных копий многофайловых баз данных
- Восстановление из резервной копии на системе-приемнике
- Совместимость клиентов и серверов различных версий
- Обзор основных причин повреждения базы данных
- Неисправности акустических систем
- Особенности системы защиты данных в InterBase
- Система безопасности InterBase