Организация работы с двумя и более файловыми системами
Разработчики операционных систем стремятся обеспечить пользователя возможностью работать сразу с несколькими файловыми системами. В этом понимании файловая система состоит из многих составляющих, в число которых входят и файловые системы в традиционном понимании.
На верхнем уровне располагается так называемый переключатель файловых систем. Он обеспечивает интерфейс между запросами приложения и конкретной файловой системой, к которой обращается это приложение. Переключатель файловых систем преобразует запросы в формат, воспринимаемый следующим уровнем — уровнем файловых систем.
Каждый компонент уровня файловых систем выполнен в виде драйвера соответствующей файловой системы и поддерживает определенную организацию файловой системы. Переключатель является единственным модулем, который может обращаться к драйверу файловой системы. Приложение не может обращаться к нему напрямую. Каждый драйвер файловой системы в процессе собственной инициализации регистрируется у переключателя, передавая ему таблицу точек входа, которые будут использоваться при последующих обращениях к файловой системе.
Для выполнения своих функций драйверы файловых систем обращаются к подсистеме ввода-вывода, образующей следующий слой. Подсистема ввода-вывода — это составная часть файловой системы, которая отвечает за загрузку, инициализацию и управление всеми модулями низших уровней файловой системы. Обычно эти модули представляют собой драйверы портов, которые непосредственно занимаются работой с аппаратными средствами. Кроме этого подсистема ввода-вывода обеспечивает некоторый сервис драйверам файловой системы, что позволяет им осуществлять запросы к конкретным устройствам. Подсистема ввода-вывода должна постоянно присутствовать в памяти и организовывать совместную работу иерархии драйверов устройств. В эту иерархию могут входить драйверы устройств определенного типа (драйверы жестких дисков или накопителей на лентах), драйверы, поддерживаемые поставщиками (такие драйверы перехватывают запросы к блочным устройствам и могут частично изменить поведение существующего драйвера этого устройства, например, зашифровать данные), драйверы портов, которые управляют конкретными адаптерами.
Большое число уровней архитектуры файловой системы обеспечивает авторам драйверов устройств большую гибкость — драйвер может получить управление на любом этапе выполнения запроса — от вызова приложением функции, которая занимается работой с файлами, до того момента, когда работающий на самом низком уровне драйвер устройства начинает просматривать регистры контроллера. Многоуровневый механизм работы файловой системы реализован посредством цепочек вызова.
В ходе инициализации драйвер устройства может добавить себя к цепочке вызова некоторого устройства, определив при этом уровень последующего обращения. Подсистема ввода-вывода помещает адрес целевой функции в цепочку вызова устройства, используя заданный уровень для того, чтобы должным образом упорядочить цепочку. По мере выполнения запроса, подсистема ввода-вывода последовательно вызывает все функции, ранее помещенные в цепочку вызова.
Внесенная в цепочку вызова процедура драйвера может решить передать запрос дальше — в измененном или в неизмененном виде — на следующий уровень, или, если это возможно, процедура может удовлетворить запрос, не передавая его дальше по цепочке.
Монтирование файловой системы
Для подключения файловой системы к конкретному местоположению (точке монтирования) команда mount используется в следующей форме:
mount имя_устройства директория
После подключения точка монтирования становится корневой директорией смонтированной ФС. Например, смонтировать жесткий диск /dev/sdb1 в директорию /mnt/media можно следующим образом:
$ sudo mount /dev/sdb1 /mnt/media
Обычно при монтировании устройства с распространенной ФС, например, ext4 или xfs, команда mount автоматически определяет ее тип. Однако, некоторые ФС не распознаются. Их тип нужно указывать в явном виде. Для этого используется опция -t:
mount -t тип имя_устройства директория
Чтобы указать дополнительные опции монтирования, используется флаг -o:
mount -o опции_монтирования имя_устройства директория
Можно указать несколько опций, разделенных запятыми (после запятых не должно быть пробелов). Ниже предоставлены основные опции команды
-V — вывести версию утилиты;-h — вывести справку;-v — подробный режим;-a, —all — примонтировать все устройства, описанные в fstab;-F, —fork — создавать отдельный экземпляр mount для каждого отдельного раздела;-f, —fake — не выполнять никаких действий, а только посмотреть что собирается делать утилита;-n, —no-mtab — не записывать данные о монтировании в /etc/mtab;-l, —show-labels — добавить метку диска к точке монтирования;-c — использовать только абсолютные пути;-r, —read-only — монтировать раздел только для чтения;-w, —rw — монтировать для чтения и записи;-L, —label — монтировать раздел по метке;-U, —uuid — монтировать раздел по UUID;-T, —fstab — использовать альтернативный fstab;-B, —bind — монтировать локальную папку;-R, —rbind — перемонтировать локальную папку.
Полный список опций можно получить, выполнив команду man mount.
Что такое монтирование
Монтирование в Linux позволяет получить доступ к содержимому диска и организовать структуру файловой системы. С помощью монтирования также можно открыть для работы образ диска (например, созданного с помощью программы dd), а также открыть для доступа и редактирования самые разные файловые системы и образы дисков (например, образы дисков виртуальных машин); даже удалённые сетевые директории могут быть смонтированы, в результате чего они станут доступны как будто бы файлы на любом другом локальном хранилище.
Кроме того, что с помощью монтирования можно работать с образами дисков, правильные настройки монтирования необходимы для компьютера к которому подключается диск для криминалистического анализа — например, этот диск не должен автоматически монтироваться с правами записи (чтобы не быть испорченным).
В Linux есть такое понятие как «монтирование» диска. Чтобы получить доступ к файлам на этом диске, его нужно сначала смонтировать. Может возникнуть вопрос, зачем такие сложности? Монтирование это мощнейшая вещь, которая позволяет поразительно гибко настроить файловую систему!
Суть монтирования в том, что в файловой системе создаётся новая директория (обычная папка), допустим, это папка /mnt/disk_d. А затем командой mount указывается, что теперь, например, диск /dev/sda смонтирован в директорию /mnt/disk_d. После этого можно получить доступ к файлам диска /dev/sda открыв папку /mnt/disk_d в любом менеджере файлов:
С помощью такого подхода — когда любой диск может быть любой папкой в системе, можно делать очень гибкую настройку. Самый частый пример, встречающийся на практике: файлы пользователя хранятся в папке /home/имя_пользователя/, например, у меня это папка /home/mial/. При установке операционной системы я могу сделать так, что мой второй или третий диск (а не системный) будет смонтирован в точку /home/mial/. То есть вся операционная система будет располагаться на одном диске, а все мои пользовательские файлы — на другом. Что это даёт? В случае переустановки системы, я вновь настрою монтирование диска с моими файлами в папку /home/mial/ и в результате в новой, только что установленной системе, уже будут на месте все мои документы, фотографии и прочее!
Поскольку часто узким местом в мощных компьютерах является скорость чтения с диска, то на на серверах с высокой нагрузкой практикуется перенос файлов баз данных (например, /var/lib/mysql/ на другой диск), возможен перенос файлов сервера (/srv/http/) на третий диск, файлов логов (/var/log/httpd/) на ещё один диск и т. д. Это позволяет добиться того, что данные из баз данных считываются независимо от записи журналов, то есть пока выполняются операции чтения-записи для одного процесса, другому процессу не нужно ждать своей очереди — всё выполняется одновременно.
Ещё монтирование позволяет выбрать различные режимы, например, диск можно смонтировать в режиме «только чтение» — в результате с него можно будет просматривать файлы, но испортить этот диск невозможно.
В общем, несмотря на то, что монтирование является чем-то непривычным для пользователей Windows, это потрясающая функция! Причём ничего сложного в этом нет, если понять суть.
Метки файловой системы
Мы можем использовать опцию (метка) с чтобы узнать, какая метка, если таковая имеется, прикреплена к файловой системе. Метки являются не более чем произвольными именами. У них нет функционального назначения.
Мы используем опцию (type), чтобы запросить для создания отчетов только для файловых систем .
mount -l -t vfat
Вы найдете этикетку в квадратных скобках в конце списка. Ярлык для этого дисковода — NORTUN.
Мы можем получить доступ к дисководу гибких дисков через точку монтирования .
кд / минт
Ls
ls -l AMATCH.C
Дискета содержит файлы с исходным кодом на языке Си . Отметка даты одного файла показывает, что он был последний раз изменен в октябре 1992 года. Вероятно, он старше, чем многие наши читатели. (Излишне говорить, что значение NORTUN как ярлыка теряется в глубине веков.)
Если мы повторим нашу команду по чтобы вывести список файлов устройств sd, мы увидим, что теперь их два.
дф | grep / dev / sd
Наш дисковод гибких дисков выглядит так, как мы ожидали, в . Файловая система на дискете в дисководе смонтирована в .
Чтобы размонтировать дискету, мы используем и передаем ей файл устройства в качестве параметра.
sudo umount / dev / sdb
Основные функции файловых систем
Файловая система отвечает за оптимальное логическое распределение информационных данных на конкретном физическом носителе. Драйвер ФС организует взаимодействие между хранилищем, операционной системой и прикладным программным обеспечением. Правильный выбор файловой системы для конкретных пользовательских задач влияет на скорость обработки данных, принципы распределения и другие функциональные возможности, необходимые для стабильной работы любых компьютерных систем. Иными словами, это совокупность условий и правил, определяющих способ организации файлов на носителях информации.
Основными функциями файловой системы являются:
- размещение и упорядочивание на носителе данных в виде файлов;
- определение максимально поддерживаемого объема данных на носителе информации;
- создание, чтение и удаление файлов;
- назначение и изменение атрибутов файлов (размер, время создания и изменения, владелец и создатель файла, доступен только для чтения, скрытый файл, временный файл, архивный, исполняемый, максимальная длина имени файла и т.п.);
- определение структуры файла;
- поиск файлов;
- организация каталогов для логической организации файлов;
- защита файлов при системном сбое;
- защита файлов от несанкционированного доступа и изменения их содержимого.
Как увидеть точки монтирования
Для просмотра устройств и точек их монтирования, выполните команду:
findmnt --real
Эта команда отображает целевую точку монтирования (TARGET), исходное устройство (SOURCE), тип файловой системы (FSTYPE) и соответствующие параметры монтирования (OPTIONS) для каждой файловой системы, как показано на скриншоте. Подробности смотрите в статье «Команда findmnt для просмотра смонтированных файловых систем в Linux».
Команда findmnt без опций покажет больше данных:
findmnt
Но среди вывода будут различные виртуальные файловые системы, которые нужны не всегда.
Команда mount также может показывать список точек монтирования, но эта функция в ней поддерживается только для обратной совместимости. Тем не менее, для вывода смонтированных реальных файловых систем вы можете использовать команду:
mount | grep "^/dev"
А для показа всех точек монтирования, запустите команду следующим образом:
mount
Вы можете наблюдать процесс монтирования и размонтирования в реальном времени. К примеру, для отслеживания любых действий по монтированию и размонтированию в файловой системе используйте команду:
findmnt -p
4. Команда fdisk
Команда — это инструмент, предназначенный для манипулирования таблицей разделов диска, но его также можно использовать для просмотра информации . Мы можем использовать это в своих интересах, когда исследуем устройства на компьютере.
Мы будем использовать опцию (list) для вывода списка таблиц разделов. Поскольку вывод может быть очень длинным, мы передадим вывод из через . Поскольку может изменять таблицы разделов диска, мы должны использовать .
sudo fdisk -l
Прокручивая вы сможете идентифицировать аппаратные устройства. Вот запись для жесткого диска sda. Это физический жесткий диск объемом 10 ГБ.
Теперь, когда мы знаем личность одного из аппаратных устройств, мы можем попросить сообщать только об этом элементе.
sudo fdisk -l / dev / sda
Мы получаем вывод значительно уменьшенной длины.
Определения полей
/etc/fstab содержит следующие поля разделённые пробелами или tab:
<file system> <dir> <type> <options> <dump> <pass>
-
<file systems> — название накопителя (например: /dev/sda1).
-
<dir> — точка монтирования, куда монтировать <file system>.
-
<type> — тип файловой системы монтируемого устройства или раздела. Поддерживает много различных файловых систем, например: ext2, ext3, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap и auto. Тип ‘auto’ позволяет команде монтирования определить тип используемой файловой системы, полезно для съёмных устройств, таких как CD и DVD.
-
<options> — специальные опции для файловых систем. Некоторые опции относятся только к определённой файловой системе, наиболее распространённые варианты:
-
auto — файловая системы будет смонтирована автоматически при загрузке или после выполнения команды ‘mount -a’.
-
noauto — файловая система может быть смонтирована только вручную.
-
exec — разрешить исполнять бинарных файлов с этого раздела (по умолчанию).
-
noexec — запретить исполнять бинарные файлы с этой файловой системы.
-
ro — монтировать файловую систему только для чтения.
-
rw — монтировать файловую систему для чтения и записи.
-
sync — операции ввода/вывода должны выполняться синхронно.
-
async — операции ввода/вывода должны выполняться асинхронно.
-
flush — опция специфичная для FAT. To flush data more often, thus making copy dialogs or progress bars to stays up until things are on the disk.
-
discard — включает поддержку команды TRIM для SSD дисков.
-
user — разрешить любому пользователю монтировать файловую систему (с опциями noexec,nosuid,nodev если не указано иное).
-
nouser — только root может монтировать файловую систему (по умолчанию).
-
defaults — использовать настройки по умолчанию (эквивалентно rw,suid,dev,exec,auto,nouser,async).
-
suid — разрешать операции с битами suid и sgid. Восновном используемые, чтобы позволить пользователям выполнять бинарные файлы со временно повышенными привилегиями для выполнения определённой задачи.
-
nosuid — запретить операции с битами suid и sgid.
-
noatime — не обновлять информацию о времени доступа к файловой системе. Может повысить производительность.
-
nodiratime — не обновлять информацию о времени доступа к каталогам файловой системе. Может повысить производительность.
-
relatime — обновлять информацию о времени доступа по сравнению с временем последнего изменения. Время доступа обновляется только если предыдущее было больше текущего времени изменения (аналог noatime, только не создаёт проблемы для приложений которым нужно знать, если файл был прочитан с момента последнего изменения). Может повысить производительность.
-
-
<dump> — используется утилитой dump для того чтобы определить, когда делать резервную копию. После установки, dump проверяет эту запись и использует значение, чтобы решить, подключать ли файловую систему. Возможные значения 0 или 1. Если 0, dump игнорирует файловую систему, если 1, dump сделает резервную копию. У большинства пользователей dump не установлен, поэтому в поле <dump> следует задать 0.
-
<pass> fsck читает значение <pass> и определяет, в каком порядке должны быть проверены файловые системы. Возможные значения 0, 1, или 2. Файловая система root должна иметь наивысший приоритет, 1, все остальные файловые системы которые будут проверятся должны получить 2. Файловые систему с значением 0 в <pass> не будут проверяться утилитой fsck.
Формат строки
Каждая строка в файле /etc/fstab содержит следующие поля, разделенные пробелами или символами табуляции:
filesystem dir type options dump pass
filesystem
Физическое место размещения файловой системы, по которому определяется конкретный раздел или устройство хранения для монтирования.
type
Тип файловой системы. Поддерживается множество типов: ext2, ext3, ext4, btrfs, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap и auto. При выборе auto команда mount попытается определить реальный тип файловой системы самостоятельно. Это полезно для компакт-дисков (CD/DVD).
options
Параметры монтирования файловой системы. Подробнее смотрите на man странице mount
Обратите внимание, что некоторые параметры относятся к конкретным типам файловых систем.
Опция | Значение |
---|---|
auto | Файловая система монтируется при загрузке автоматически или после выполнения команды ‘mount -a’. |
noauto | Файловая система может быть смонтирована только вручную. |
exec | Позволяет исполнять бинарные файлы на разделе диска. Установлено по умолчанию. |
noexec | Бинарные файлы не выполняются. Использование опции на корневой системе приведёт к её неработоспособности. |
ro | Монтирует файловую систему только для чтения. |
rw | Монтирует файловую систему для чтения/записи. |
sync | Все операции ввода-вывода должны выполняться синхронно. |
async | Все операции ввода-вывода должны выполняться асинхронно. |
user | Разрешает любому пользователю монтировать файловую систему. Применяет опции noexec, nosuid, nodev, если они не переопределены. |
nouser | Только суперпользователь может монтировать файловую систему. Используется по умолчанию. |
defaults | Использовать значения по умолчанию. Соответствует набору rw, suid, dev, exec, auto, nouser, async. |
suid | Разрешить операции с suid и sgid битами. В основном используются, чтобы позволить пользователям выполнять бинарные файлы со временно приобретёнными привилегиями для выполнения определённой задачи. |
nosuid | Запрещает операции с suid и sgid битами. |
nodev | Данная опция предполагает, что на монтируемой файловой системе не будут созданы файлы устройств (/dev). Корневой каталог и целевая директория команды chroot всегда должны монтироваться с опцией dev или defaults. |
atime | Включает запись информации о последнем времени доступа (atime) при каждом чтении файла. Включено по умолчанию на Linux до v.2.6.29 включительно. |
noatime | Отключает запись информации о последнем времени доступа (atime) при каждом чтении файла. |
relatime | Включает запись информации о последнем времени доступа при чтении файла, если предыдущее время доступа (atime) меньше времени изменения файла (ctime). Включено по умолчанию на Linux начиная с v.2.6.30. |
acl | Включить обработку ACL для раздела |
dump
Используется утилитой dump для определения того, нужно ли создать резервную копию данных в файловой системе. Возможные значения: или 1. Если указано число 1, dump создаст резервную копию. У большинства пользователей утилита dump не установлена, поэтому им следует указывать 0 в этом поле.
pass
Используется программой fsck для определения того, нужно ли проверять целостность файловой системы. Возможные значения: , 1 или 2
Значение 1 следует указывать только для корневой файловой системы (с точкой монтирования ); для остальных ФС, которые вы хотите проверять, используйте значение 2, которое имеет менее высокий приоритет.Обратите внимание, что в случае btrfs следует всегда указывать , даже если эта файловая система используется в качестве корневой. Файловые системы, для которых в поле указано значение , не будут проверяться fsck.
Принципы организации файловых систем
Логическая организация файла
Описывает то, как выглядит файл для работающих с ним приложений. Файл рассматривается как набор записей. Выделяют следующие подходы к хранению файлов:
Набор записей переменной длины
Для любой записи тут в начале (конце) должна указываться длина.
Физическая организация файла
Описывает, как файл может размещаться на носителе. Выделяют следующие способы размещения:
Непрерывное размещение
Непрерывное размещение (подряд блок за блоком).
Достоинства:
- простота реализации
- скорость доступа (все данные подряд, поэтому не надо перемещать носитель головки).
Недостатки:
- фрагментация
- место на носителе распределяется неэффективно.
Связанный список блоков
Пространство разбивается на нужные разделы. В каждый блок помещается ссылка на следующий. В последнем блоке стоит метка, что он последний. Уходим от фрагментации, но теряем в производительности. Также в каждом блоке часть места расходуется на указатели.
Связанный список индексов
Популярным способом, используемым, например, в файловой системе FAT операционной системы MS-DOS, является использование связанного списка индексов. С каждым блоком связывается некоторый элемент — индекс. Индексы располагаются в отдельной области диска (в MS-DOS это таблица FAT). Если некоторый блок распределен некоторому файлу, то индекс этого блока содержит номер следующего блока данного файла. При такой физической организации сохраняются все достоинства предыдущего способа, но снимаются оба отмеченных недостатка: во-первых, для доступа к произвольному месту файла достаточно прочитать только блок индексов, отсчитать нужное количество блоков файла по цепочке и определить номер нужного блока, и, во-вторых, данные файла занимают блок целиком, а значит имеют объем, равный степени двойки.
Перечень номеров блоков
Для хранения адреса файла выделено 13 полей. Если размер файла меньше или равен 10 блокам, то номера этих блоков непосредственно перечислены в первых десяти полях адреса. Если размер файла больше 10 блоков, то следующее 11-е поле содержит адрес блока, в котором могут быть расположены еще 128 номеров следующих блоков файла. Если файл больше, чем 10+128 блоков, то используется 12-е поле, в котором находится номер блока, содержащего 128 номеров блоков, которые содержат по 128 номеров блоков данного файла. И, наконец, если файл больше 10+128+128*128, то используется последнее 13-е поле для тройной косвенной адресации, что позволяет задать адрес файла, имеющего размер максимум 10+ 128 + 128*128 + 128*128*128.
Работа с устройствами в Linux
Давайте проведем несколько экспериментов, которые помогут вам понять как работают устройства Linux и как ими управлять в этой операционной системе. Большинство дистрибутивов Linux имеют несколько виртуальных консолей, обычно от 1 до 7, которые могут использоваться для входа в сеанс командной оболочки. К этим виртуальным консолям можно получить доступ с помощью сочетаний клавиш Ctrl+Alt+Fn, например, Ctrl+Alt+F1 для первой консоли, Ctrl+Alt+F2 для второй и так далее.
Сейчас нажмите Ctrl+Alt+F2 для перехода во вторую консоль, в некоторых дистрибутивах, кроме запроса логина и пароля, будет выведена информация про активную TTY связанную с этой консолью. Но этой информации может и не быть. В данном случае консоль будет связана с устройством tty2.
Войдите от имени обычного пользователя, затем наберите такую команду, чтобы посмотреть номер устройства tty:
У меня вы видите устройство /dev/pts/0, это виртуальное устройство эмулятора терминала, но если вы будете выполнять задачу в tty2, то отобразиться именно она. Теперь давайте посмотрим список tty устройств с помощью команды ls:
Нас будут интересовать не все устройства, а только первые три. В этих устройствах нет ничего особенного, это обычные устройства символьного типа. Устройство tty2 подключено к консоли 2, устройство tty3 подключено к консоли 3.
Нажмите сочетание клавиш Ctrl+Alt+F3, чтобы переключиться в третью консоль, затем выполните команду:
Затем вернитесь во вторую консоль. Здесь вы увидите отправленную строку, Hello World. Все это можно повторить с помощью эмуляторов терминала в графическом интерфейсе, только здесь будут использоваться псевдо-терминальные устройства /dev/pts/*. Теперь попробуем отобразить содержимое файла fstab с помощью cat в другом терминале:
С помощью cat вы можете отправить файл непосредственно на принтер. Например, если устройство принтера /dev/usb/lp0, то для печати файла будет достаточно выполнить:
Каталог /dev/ содержит много интересных файлов устройств. Это интерфейсы доступа к аппаратному обеспечению и вам не нужно думать, что это, жесткий диск или экран. Например, вся оперативная память компьютера доступна в виде устройства /dev/mem. С помощью него вы можете иметь прямой доступ к памяти. Мы можем вывести содержимое памяти в терминал:
Утилита dd, в отличие от cat дает больше контроля над процессом и позволяет указать сколько данных нужно прочитать. Но не ко всей памяти вы можете получить доступ. В ядре встроена защита, поэтому обычно, вы можете читать память, только для своего процесса.
Также тут есть файлы, которые несвязанны ни с какими реальными устройствами, это null, zero, random и urandom. Устройство /dev/null может использоваться для перенаправления вывода команд, чтобы данные никуда не выводились. Устройство /dev/zero используется для получения строки, заполненной нулями.
Вы можете использовать ту же команду dd, чтобы попытаться вывести ряд символов с устройства /dev/null:
Обратите внимание, что ничего выведено не будет, потому что это устройство пусто, оно только принимает данные и никуда их не сохраняет. Устройства /dev/random и /dev/urandom позволяют получить случайные комбинации чисел или байт
Вы можете использовать такую команду, чтобы получить случайные байты информации:
Устройства /dev/random и /dev/urandom позволяют получить случайные комбинации чисел или байт. Вы можете использовать такую команду, чтобы получить случайные байты информации:
Для остановки нажмите Ctrl+C. Устройство urandom позволяет генерировать случайные последовательности независимые от предыдущего числа, в качестве источника энтропии используется нажатия клавиш и движения мыши.
Устройство /dev/zero позволяет получить строку, заполненную нулями. Для проверки используйте такую команду:
Обратите внимание, что восьмеричные нули и нули ASCII это не одно и то же
Общие понятия
Назначение файловой системы — обеспечение интерфейса к данным на накопителях. Цель — организация хранения и доступа.
Состав файловой системы
- Совокупность файлов.
- Набор структур данных управления (каталоги, дескрипторы, таблицы).
- Функции управления (создание объекта ФС, уничтожение, чтение, запись).
Каждый файл характеризуется своим уникальным именем. Чтобы упростить имена используются разрешения.
Для FAT16 правило 8.3: имя файла может состоять из 12 символов (8 — основная часть, и 3 символа расширения).
При копировании в файловой системе файлов производится преобразование имен.
Путь в файловой системе — для однозначной идентификации объекта.
Типы файлов
- Текстовые.
- Двоичные.
- Специальные (связанные с аппаратными устройствами).
- Файлы, через которые описываются каталоги (директор).
Атрибуты файлов
- Системные.
- Архивные.
- Только для чтения.
- Скрытые.
- Время создания
- Временные
Типы иерархической структуры
- Дерево: узлы — объекты файловой системы, показана их вложенность; корень — точка, в которой начинается файловая система.
- Сеть: в отличие от дерева один объект может присутствовать в разных директориях.
С понятием файловые системы связаны следующие технологии:
Автоматическое монтирование флешки в Linux
Популярные окружения рабочего стола выполняют монтирование флешки linux автоматически, как только она подключена к системе или по клику на ярлыке. Мы можем это реализовать с помощью службы udisks2.
Udisks — это служба dbus, позволяющая другим программам и пользователю взаимодействовать с udev. Мы можем получать сообщения о только что подключенных устройствах, выполнять их монтирование и отключение. Окружения рабочего стола используют именно этот сервис для монтирования устройств.
Мы тоже можем использовать его для ручного монтирования. Здесь даже есть несколько плюсов. Во-первых, мы можем монтировать без прав суперпользователя, во-вторых, не нужно создавать папку.
Для монтирования используется такая команда:
Здесь /dev/sdc1 — файл нашей флешки, а опция -b указывает, что нужно монтировать блочное устройство. Так же как и в mount здесь можно задать опции монтирования -o и файловую систему -t. Флешка будет примонтирована в папку /run/имя_пользователя/uuid-флешки/
Для размонтирования используется аналогичная команда:
Автоматическое монтирование usb флешки в linux можно настроить с помощью утилиты udiskie. Все новые подключенные флешки будут автоматически подключаться, после подключения устройства будет всплывать окно с предложением открыть файловый менеджер, а также значок, с помощью которого можно получить доступ к каждому из устройств.
Устанавливается утилита в Ubuntu командой:
Дальше остается запустить программу:
Теперь все подключаемые устройства будут автоматически монтироваться с помощью udisks. Рассмотрим что значат опции:
- -a — выполнять автоматическое монтирование
- -n — показывать всплывающее уведомление
- -t — показывать значок в трее.
FUSE
Filesystem in Userspace (FUSE) — модуль для ядер Unix-подобных операционных систем, позволяет разработчикам создавать новые типы файловых систем, доступные для монтирования пользователями без привилегий (прежде всего — виртуальных файловых систем); это достигается за счёт запуска кода файловой системы в пользовательском пространстве, в то время как модуль FUSE предоставляет связующее звено для актуальных интерфейсов ядра. C использованием средств FUSE разработаны, в частности, SSHFS, NTFS-3G, GlusterFS.
Доступна для Linux, FreeBSD, OpenBSD, NetBSD (as puffs), OpenSolaris, Minix 3, Android и macOS.
Синтаксис команды mount
Чаще всего такую процедуру выполняют специальные сервисы, входящие в состав оболочки системы. Случаются ситуации, когда они просто-напросто недоступны. Здесь потребуется выполнить задачу ручным методом. Пользователь самостоятельно задает опции для монтирования, вводит различные параметры.
Процесс использования утилиты подразумевает обаятельное применение всевозможных опций, каждая из которых выполняет свою функцию. К примеру, опция «-t» является необязательной, но дает возможность без особого труда задать файловую систему, которая в последующем будет использоваться. Нередко это оказывается весьма полезным.
Специальная опция «-о» позволяет предварительно прописать параметры, которые будут распространяться на монтирование. В синтаксис обаятельно включен адрес файл, по которому расположено само устройство, а также папка назначения.
Перед тем, как приступить к полноценному использованию утилиты «mount», рекомендуется максимально подробно изучить список опций. На самом деле их огромное множество, но чаще всего применяются:
- «-v». Отображение максимально подробного режима.
- «-a». Монтируются все требуемые устройства, которые предварительно прописаны в fstab
- «-F». Создается отдельный экземпляр утилиты для каждого из исследуемых разделов.
- «-n». Исключается вероятность записи информации о выполняемом монтировании в /etc/mtab.
- «-f». Исключается вероятность осуществления каких-либо действий. С помощью такой опции можно посмотреть перечень процедур, которые планирует выполнить утилита.
- «-l». Добавляется специальная метка на диск, которая приравнивается к точке монтирования.
- «-c». При выполнении команды не использовать относительные пути, а руководствоваться только абсолютными путями (пример – /etc/exim4) .
- «-r». Создаваемый раздел будет доступен лишь для чтения.
- «-w». Создаваемый раздел будет доступен как для чтения, так и для записи.
- «-L». Монтируется раздел с использованием метки.
- «-U». Монтируется раздел с использованием UUID.
- «-T». Появляется возможность применения альтернативного fstab
- «-B». Монтируется раздел в локальную папку
- «-R». Перемонтируется сама локальная папка.
- «-h». Вывести справочную информацию.
- «-V». Параметр покажет текущею версию утилиты.
Представленный выше список опций является неполным. Такие функции основные, чаще всего могут потребоваться пользователю операционной системы «Линукс» во время работы с утилитой «mount».