Файловая система Linux
Аннотация: Основные понятия: корневой каталог, точка монтирования, домашний каталог, типы файлов. Обычные файлы. Каталоги. Файлы устройств. Команды. Навигация по файловой системе: команды cd, pushd, popd, pwd. Создание, удаление и копирование файлов. Команды touch, rm, cp. Операции с каталогами. Команды mkdir и rmdir. Важнейшие каталоги файловой системы Linux.
Ход занятия
1. Файловая система Linux, в отличие от операционных систем семейства Windows не разделена по томам (дискам, устройствам), а имеет единую древовидную структуру, в основе которой лежит корневой каталог. Корневой каталог — это уровень файловой системы, выше которого по дереву каталогов подняться невозможно. В Linux корневой каталог обозначается как / (именно / — слэш, а не \ — обратный слэш). Система позволяет устанавливать много корневых каталогов. Так например для некоторого пользователя ftp /home будет корневым каталогом и при обращении к клиенту ftp на смену каталога на корневой пользователь будет попадать в /home .
Возникает вопрос, а как тогда разные физические устройства участвуют в формировании единой файловой системы? Сделаем небольшой экскурс в историю. В то время, когда создавалась ОС Unix, устройства – накопители информации представляли собой ящик размером с письменный стол и назывались магнитными барабанами. В то время не было необходимости подключать и отключать его по нескольку раз в час. Поэтому не был выработан и механизм быстрой смены. Для подключения любого устройства к файловой системе используется так называемая точка монтирования – каталог, все вложенные уровни которого являются файловой системой на устройстве-носителе. Например, при монтировании дискеты обычно используется каталог /media/floppy . То есть, все каталоги и файлы, находящиеся внутри /media/floppy на самом деле содержатся на дискете, вставленной в дисковод компьютера. Для подключения, или монтирования, устройств используется специальная команда , которую мы изучим на следующих занятиях. Таким образом подключаются и сетевые файловые системы, то есть такие системы, которые реально находятся где-то на сервере в сети, однако различий в работе с ними пользователь не ощущает и видит сетевые файлы и каталоги, как если бы они были расположены на локальном компьютере.
Есть у файловой системы Linux и еще одна особенность: пользователям в ней выделяется домашний каталог – специальный каталог, необходимый для хранения пользователем своих личных данных. При входе пользователя в систему, он сразу оказывается в своем домашнем каталоге. Обычно права доступа к домашнему каталогу с консоли пользователя выставлены таким образом, что доступ к каталогу запрещен всем кроме владельца и администратора.
2. В файловой системе Линукс различают несколько типов файлов. Понятие «файл» включает в себя также и интерфейсы работы с периферийными устройствами, и каналы, позволяющие разным процессам в системе обмениваться данными.
[student@ns lesson_2]$ ls -l total 40 -rwxr-xr-x 1 root root 2872 Aug 27 2001 arch -rw-rw-rw- 1 root root 612 Jun 25 2001 chain.b brw-rw---- 1 root disk 3, 1 Feb 3 15:38 hda1 drwxrwxrwx 2 root root 32768 Feb 3 15:38 ida
Основные типы устройств:
Структура и типы файловых систем в Linux
Файловая система (file system, ФС) — важная составляющая любой операционной системы (ОС), отвечающая за организацию, хранение, чтение, запись файлов. От ФС зависит физическая и логическая структура файлов, политика создания и управления ими, максимальный размер файла и длина его имени. Linux поддерживает множество разных file system, включая FAT, FAT32, NTFS из Windows. Но использовать рекомендуем «родные» системы: Ext3, Ext4, ReiserFS, XFS, Btrfs и пр. Особенно если вы намерены работать с облачной инфраструктурой.
Организация файловой системы Linux
Linux позволяет установить отдельную ФС для каждого раздела. Выбранная система определяет, как быстро будет выполняться работа с файлами, запись и чтение информации. Как в оперативной памяти будет храниться информация (и будет ли она вообще храниться), каким образом можно вносить изменения в конфигурацию ядра ОС — это тоже зависит от ФС.
File system Linux — пространство раздела, состоящее из кратных размеру сектора блоков. Обмен данными производится через VFS или с помощью драйверов. VFS (virtual file system) — это слой абстракции, необходимый для взаимодействия между ядром и софтом. VFS позволяет не думать о специфике работы той или иной ФС. Драйверы ФС обеспечивают взаимодействие между оборудованием (железом) и приложениями.
File system Linux организована следующим образом
Такая архитектура позволяет обеспечивать поддержку добавляемой ФС без вмешательства в ядро ОС. Ядро Linux поддерживает более 100 типов файловых систем, причём не только современных, но и старых. Чтобы увидеть список ФС, поддерживаемых ядром, откройте /proc/filesystems.
Структура и иерархия файловой системы Linux
В Linux имеется своя особая структура каталогов, политика распределения файлов конфигурации, исполняемых и временных файлов. Здесь работает логика, отличная от Windows.
Ключевое отличие в том, что обычно в линуксе программа не сохраняется в одной папке. Она распределяется по корневой файловой системе. По сути, file system в Linux начинается с директории «/» (которая называется корнем — от слова root) и разрастается в директории /sbin, /dev, /lib, /log, /boot и т.д. Получается древовидная иерархическая структура, в которой абсолютный путь к любой сущности начинается с корневой директории. Если файл лежит в /home/user/work, то структура каталогов идет по цепочке root->home->user->work.
Иерархичность линуксовых систем часто определяется стандартом FHS, который описывает, какая информация должна находится в том или ином месте «дерева». Ещё одной особенностью линкусовой файловой системы является её целостность. Это значит, что любые изменения, вносимые в файл, не влияют на другие файлы, которые не связаны с ним. Командой fsck вы можете проверить целостность ФС в Linux.
Типы ФС Linux
Пользователи могут использовать одну или несколько файловых систем, зашитых в линуксовый дистрибутив. Так как от них зависит метод работы с файлами, конфигурацией ядра и особенности хранения информации в оперативной памяти, то выбирать file system нужно исходя из текущих задач, учитывая сильные и слабые стороны доступных ФС.
Выделяют два типа таких систем, журналируемые и не журналируемые. Определить тип можно при помощи команды file -s. ФС первого типа ведут логи, фиксируя в отдельном файле информацию о действиях пользователя и план проверки системы. За счёт логирования система получается более устойчивой к сбоям. ФС второго типа не имеют логов. Они обладают хорошим быстродействием, но более уязвимы, так как не обеспечивают сохранность данных.
Если вы работали с линуксом, то file system из списка ниже вам наверняка знакомы:
Особые файловые системы
Можно привести и другие разновидности файловых систем. Например, линуксоидам известны специальные ФС. Они используются для обеспечения доступа пользователю или приложениям к настройкам ядра ОС. Среди специальных файловых систем выделяют:
- tmpfs. Записывает данные в оперативную память, создавая блочное устройство требуемого размера, которое затем подключают к папке.
- procfs. Отвечает за хранение информации о системных процессах и ядре.
- sysfs. Управляет настройками ядра ОС.
Бывают ситуации, когда наличие ФС в ядре системы не требуется. В этом случае можно использовать модуль FUSE (filesystem in userspace), который создаёт виртуальную файловую систему. Существует несколько видов виртуальных ФС с разным функционалом:
- EncFS. Шифрует файлы и сохраняет их в выбранную директорию.
- Aufs. Объединяет несколько file system в одну. Умеет делать то же самое с папками.
- NFS. Может удалённо монтировать ФС.
- ZFS. Создана для операционной системы Solaris. Отсутствие фрагментации, управление снапшотами, меняющийся размер блоков обеспечивают высокий уровень привлекательности этой ФС.
Отметим, что в этой статье даются базовые сведения о файловых системах Linux, а типов ФС существует намного больше. Если вам требуется более детальная информация о типах ФС и их отличиях, рекомендуем обратиться к документации.