Сообщение файловая система в oc linux

Обновлено: 02.07.2024

Одним из наиболее важных компонентов в ОС Linux является файловая система. В данном разделе будут рассмотрены понятие файловой системы и ее предназначение; иерархия файловой системы ОС Linux; типы файлов ОС Linux. Остальные вопросы, касающиеся администрирования файловой системы, более подробно будут рассмотрены в модуле 3.

Предназначение файловой системы

В ОС Linux, как и в любой другой ОС семейства UNIX, любой объект является файлом, хранящимся на файловой системе. Файловая система представляет собой некоторое устройство (например, жесткий диск), отформатированное для хранения файлов. Файловые системы могут находиться на жестких дисках, гибких дисках, CD-ROM или других носителях, которые позволяют осуществлять произвольный или последовательный доступ к данным.

Условно файловую систему ОС Linux можно разделить на следующие компоненты.

Пространство имен - методы именования объектов файловой системы и их иерархическая организация.

Программный интерфейс приложения (API) - набор системных вызовов и библиотек, предназначенных для управления объектами файловой системы.

Модель безопасности - содержит в себе общую схему защиты, разделения прав доступа к объектам и совместного использования объектов.

Техническая реализация - программный код, связывающий логические модели файловой системы с аппаратным обеспечением.

Основными задачами файловой системы являются:

упорядочивание хранимых данных;

простой и быстрый доступ к хранимым данным;

обеспечение целостности хранимых данных.

Точный формат и способы хранения файлов в ОС Linux не имеют значения, так как система обеспечивает общий интерфейс для всех распознаваемых ею типов файловых систем. В ОС Linux файловой системой, устанавливаемой по умолчанию, является ext3fs. При доступе к любой файловой системе из ОС Linux данные представляются в виде иерархии каталогов с находящимися в них файлами вместе с идентификаторами владельцев и групп, битами прав доступа и прочими атрибутами.

Иерархия файловой системы

Иерархия каталогов файловой системы ОС Linux соответствует общепринятому в мире UNIX стандарту Filesystem Hierarchy System (FHS). Основное преимущество данного стандарта заключается в том, что определенные типы файлов расположены в соответствующих каталогах.

Например, большинство конфигурационных файлов располагается в каталоге /etc, а файлы журналов различных сервисов располагаются в каталоге /var/log.

Описание каталогов файловой системы ОС Linux


Каталоги /bin, /usr/bin, /usr/locl/bin, /sbin, /usr/sbin и /usr/local/sbin содержат установленные в системе команды. При работе в системе под обычным пользователем, вам будут доступны только команды каталогов /bin, /usr/bin и /usr/locl/bin, так как в стандарте FHS определено, что в каталогах sbin должны содержаться только административные команды.


Рисунок 1.2.Структура каталогов ОС Linux

Основным каталогом файловой системы ОС Linux является корневой каталог /. Ниже корневого каталога располагаются все остальные каталоги, созданные на локальной дисковой подсистеме или подмонтированные с внешних устройств. Процедура монтирования файловой системы означает связывание каталога существующей файловой системы, называемого точкой монтирования, с корневым каталогом новой файловой системы.

Монтирование файловой системы к точке монтирования осуществляется при помощи команды mount. В следующем листинге приведен пример монтирования DVD привода, содержащего дистрибутив ОС RedHatEnterpriseLinux 5.

mount: block device /dev/hdc is write-protected, mounting read-only

В результате выполнения команды mount система вывела информацию о том, что блочное устройство (в данном случае DVD привод) было смонтировано в режиме чтения.

Список смонтированных файловых систем хранится в файле /etc/fstab. Благодаря этому возможны автоматическая проверка целостности файловой системы при помощи команды fsck и монтирование файловых систем на этапе начальной загрузки, а также выполнение сокращенных команд наподобие mount /var/spool. Информация, содержащаяся в этом файле, отражает расположения файловых систем на диске. Подробнее файл /etc/fstab будет рассмотрен в модуле 3.

Для того, чтобы узнать какие устройства подмонтированы к системе в данный момент необходимо выполнить команду mount без параметров. В следующем листинге приведен пример определения подмонтированных устройств.

proc on /ргос type proc (rw)

sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) /dev/hdc on /mnt type iso9660 (ro)

Как видим, в выводе команды mount последовательно отображается подмонтированное устройство, точка монтирования, тип файловой системы и дополнительные опции монтирования.

Типы файлов

При работе с ОС Linux важно понимать, что любой объект ОС является файлом. Это ключевая особенность ОС Linux по сравнению с операционными системами семейства Windows.

Файлы различаются как по своей структуре, так и по своему предназначению. В ОС Linux определены семь типов файлов:

регулярные файлы (обычные файлы);

файлы блочных устройств;

файлы символьных устройств.

Определить тип файла можно с помощью команды Is -Id. Первый символ в строке вывода обозначает тип файла. В следующем листинге выдается информация о файле

brw-rw------ 1 root disk 22, 0 Dec 22 13:30 /dev/hdc

К регулярным файлам относятся бинарные файлы, библиотеки, текстовые файлы и файлы различных приложений. ОС Linux не накладывает никаких ограничений на структуру данных файлов. К их содержимому возможен как последовательный, так и прямой доступ.

Файлы данного типа хранят именованные ссылки на другие файлы. Имя файла, находящегося в каталоге, в действительности хранится в родительском каталоге, а не в самом файле.

В ОС Linux принято различать символические и жесткие ссылки, каждая из которых имеет особенное значение.

Символическая ссылка позволяет вместо имени файла указывать его псевдоним. В процессе поиска файла по символическим ссылкам, ядро извлекает хранящиеся в них имена. Жёсткая ссылка является прямой, т.е. указывает непосредственно на индексный дескриптор файла, тогда как символическая ссылка указывает на файл по его имени. Файл, адресуемый символической ссылкой, и сама ссылка представляют собой разные объекты файловой системы.

Символические ссылки могут содержать произвольное имя, т.е. в них разрешается указывать на файлы, хранящиеся в других файловых системах и даже на несуществующие файлы. Жесткие ссылки не могут указывать на файл, находящийся в другой файловой системе.

ОС Linux подсчитывает количество ссылок на каждый файл и при удалении файла не освобождает блоки данных до тех пор, пока не будет удалена последняя ссылка на него.

Сокет - это специальный тип файла, используемый процессами для взаимодействия друг с другом. Установленные посредством сокетов соединения позволяют процессам взаимодействовать, не подвергаясь влиянию других процессов. В ОС Linux выделяется несколько видов сокетов, использование которых предполагает наличие сетевой инфраструктуры. Локальные сокеты доступны только на локальном компьютере, обращение к ним осуществляется через специальные объекты файловой системы, а не через сетевые порты. Такие сокеты принято называть сокетами домена UNIX (UNIXdomainsocket). Помимо локальных сокетов существуют сетевые сокеты, позволяющие процессам обмениваться данными по сети.

Несмотря на то, что другие процессы распознают файлы сокетов как элементы каталога, только процессы, между которыми установлено соответствующее соединение, могут осуществлять чтение и запись файлов сокета. С локальными сокетами работают различные сервисы ОС Linux - CUPS, XWindow и Syslog.

Именованные каналы ( FIFO)

Файлы данного типа подобны сокетам, поскольку тоже используются для взаимодействия между процессами, однако в отличие от сокетов в именованных каналах данные передаются только в одном направлении.

Файлы блочных и символьных устройств

Файлы блочных и символьных устройств позволяют приложениям получать доступ к аппаратным средствам и периферийному оборудованию системы. На этапе конфигурирования к ядру ОС Linux динамически подгружаются необходимые модули, предназначенные для управления аппаратными средствами системы. За управление конкретным устройством отвечает специальный модуль, называемый драйвером устройства.

Драйверы устройств образуют стандартный интерфейс взаимодействия, который воспринимается пользователем как набор обычных файлов. Получив запрос к файлу символьного или блочного устройства, ядро передает данный запрос соответствующему драйверу. Файлы блочных и символьных устройств сами по себе не являются драйверами. Их можно рассматривать как шлюзы, через которые драйвер принимает запросы на выполнение предусмотренных операций.

Файлы символьных устройств не используют буферизацию в процессе операций ввода-вывода. Все операции ввода-вывода осуществляются немедленно по мере поступления. К символьным устройствам относятся виртуальные терминалы, модемы и другие устройства, не поддерживающие произвольный доступ к данным.

Файлы блочных устройств обрабатываются драйверами, которые осуществляют ввод-вывод данных цельными блоками. В данном случае, на уровне ядра выполняется буферизация данных ввода-вывода. К блочным устройствам относятся такие устройства как жесткие диски, DVD приводы, модули памяти, а так же все остальные устройства, поддерживающие произвольный доступ к данным.

Файлы блочных и символьных устройств характеризуются двумя номерами: старшим (major) и младшим (minor). Старший номер устройства позволяет ядру определить, к какому драйверу относится файл, а младший номер идентифицирует конкретное физическое устройство.

Просмотреть номера файлов устройств можно, используя команду Is:

brw-г-------- 1 root disk 8, 0 Dec 22 13:30 sda

brw-r-------- 1 root disk 8, 2 Dec 22 13:30 sda2

brw-rw------- 1 root disk 22, 0 Dec 22 13:30 hdc

crw-rw--------- 1 root root 4, 0 Dec 22 16:29 ttyO

crw--w--------- 1 root tty 4, 1 Dec 23 00:05 ttyl

crw-------------- 1 rootroot 5, 1 Dec 22 16:43 console

Из данного листинга видно, что блочному устройству sda2 соответствует старший номер 8 (номер драйвера) и младший номер 2 (номер устройства). Номер драйвера 8 в ОС Linux соответствует драйверу SCSI дисков sd. Младший номер устройства 2 является порядковым номером данного устройства, т.е, по сути, файл /dev/sda2 представляет второй раздел, созданный на жестком диске SCSIsda.

Информацию о старших и младших номерах, используемых конкретным драйвером устройства, можно найти в четвертом разделе справочного руководства man для данного драйвера.

Основные команды управления файлами

Длина имени файла в ОС Linux зависит от типа файловой системы, на которой располагается данный файл. На файловой системе ext3, используемой в ОС Linux по умолчанию, максимальная длина имени файла не может превышать 255 символов.

Следующие команды являются базовыми для проведения повседневных операций администрирования ОС. К таким командам относятся команды, позволяющие просматривать, копировать, перемещать, переименовывать и удалять файлы.

Структура и типы файловых систем в Linux

Ядро операционной системы Linux содержит целый набор предустановленных файловых систем, каждая из которых помогает пользователю успешно решать стоящие перед ним задачи.

В зависимости от того, что необходимо, — быстродействие, высокая гарантия восстановления данных или производительность, можно выбрать стандартную файловую систему для конкретного раздела, специальную или виртуальную. Разобрались, как устроены файловые системы Linux, чем они отличаются и в каких случаях применяются.

Файловые системы в операционной системе Linux. Базовые понятия

ОС Linux предоставляет выбор еще на стадии установки: в ядро системы встроены разные файловые системы (ФС). При этом пользователь должен выбрать ту, что отвечает его требованиям и задачам. Перед теми, кто использует Windows, такой вопрос не стоит — эту ОС можно установить только на NTFS. Отличается от Windows и иерархическое устройство самих ФС, и структура каталогов.

Linux поддерживает деление жесткого диска на разделы. Для подсчета и определения физических границ используется специальная таблица разделов — GPT или MBR. Она содержит метку и номер раздела, а также адреса физического расположения точек начала и конца раздела.

Организация файловой системы Linux

От выбора файловой системы зависят:

  • скорость работы с файлами;
  • их сохранность;
  • скорость записи;
  • размер файлов.

Тип ФС также определяет, будут ли данные храниться в оперативной памяти (ОП) и как именно пользователь сможет изменить конфигурацию ядра.

Файловая система (ФС) — архитектура хранения данных, которые могут находиться в разделах жесткого диска и ОП. Выдает пользователю доступ к конфигурации ядра. Определяет, какую структуру принимают файлы в каждом из разделов, создает правила для их генерации, а также управляет файлами в соответствии с особенностями каждой конкретной ФС.

ФС Linux — пространство раздела, поделенное на блоки определенного размера. Он определяется кратностью размеру сектора. Соответственно, это могут быть 1024, 2048, 4096 или 8120 байт. Важно помнить, что размер каждого блока известен изначально, ограничен максимальным размером ФС и зависит от требований, которые выдвигает пользователь к каждому из блоков.

Список файловых систем, которые поддерживаются ядром, находится в файле /proc/filesystems:

Структура и иерархия файловой системы. Структура каталога

ФС также характерно понятие целостности: в такой системе изменения, внесенные в один файл, не приведут к изменению другого файла, не связанного с первым. У всех данных есть собственная физическая память. В Linux целостность ФС проверяется специальной командой — fsck.

Типы файлов условно можно разделить на несколько групп. Некоторые из них такие же, как и в ОС Windows, — текстовые документы, медиа и изображения. Отличия начинаются с каталогов, которые являются отдельным типом файлов. Жесткие диски относят к блочным устройствам. Принтеры — к символьным. Отдельную группу составляют символические ссылки, о которых речь пойдет ниже. К типам файлов относится каналы межпроцессного взаимодействия — PIPE (FIFO), а также гнезда (разъемы центрального процессора).

Тип файла определяется с помощью команды ls (параметр -l).

При монтировании происходит ассоциирование каталога с устройством, содержащим ФС (драйвер). Соответствующая ссылка на устройство передается драйверу. Именно он и определяет ФС. Если процедура завершается успешно, ядро заносит информацию (каким драйвером обслуживаются и где расположены файлы и каталоги) в таблицу монтирования. Она находится в файле /proc/mounts.

Данные о каждом файле содержит Inode — специфичный для UNIX-систем индексный дескриптор, хранящий различную метаинформацию (владелец файла, последнее время обращения, размер и так далее).

Когда файл (каталог) перемещается в другую ФС, его Inode тоже создается заново. И только потом удаляется исходный (в рамках той же системы меняется только путь файла). Также отметим, что файл (каталог) существует до того момента, пока хранится информация о его имени или пути к нему. После удаления всей информации блоки, отведенные под файл, становятся свободными (для выделения под другой файл).

Еще одна особенность Linux: существование сразу двух типов ссылок. Во-первых, жесткая ссылка (Hard-Link), которая представляет собой один из путей файла (команда ls -li). Во-вторых, символьная ссылка (Symbolic link) — это файл UNIX с текстовой строкой с путем к оригинальному файлу.

Общая информация о ФС хранится в суперблоке. Сюда относится суммарное число блоков и Inode, число свободных блоков, их размеры и так далее. Важно, чтобы суперблок сохранял свою целостность, поскольку от этого зависит стабильность и работоспособность системы в целом. В ОС создается сразу несколько копий, чтобы можно было восстановить всю необходимую информацию.


Еще одна особенность: устройства монтируются по идентификатору. Это, в свою очередь, помогает не перенастраивать файл конфигурации, когда пользователь меняет блочное устройство.

Команды для работы с файлами в Linux

КомандаЧто делает
lsПросматривает содержимое
текущего каталога
touch file_name Создает файл file_name
mkdir directory_name Создает директорию directory_name
cat file_name Показывает содержимое файла
file_name в терминале
less file_nameОбеспечивает просмотр файла
с помощью скроллинга
rm file_name Удаляет файл file_name
rm -rУдаляет рекурсивно все файлы
из директории
rmdir directoryУдаляет папку directory, которая
находится в текущей папке
ln -s /home/user/directory_name/ /home/user/test/Создает жесткие и символические
ссылки на файлы или папки. Для
создания символической
ссылки используется опция -s
pwdВыводит каталога, в котором
находится пользователь
which programВыводит каталог, в котором
установлена программа
mcЗапускает полнофункциональный
файловый менеджер
с псевдографическим
интерфейсом на основе ncurses.
Требуется установка mc в Ubuntu
cd directory_nameПереходит в директорию
directory_name
cp file_name directory_name Копирует file_name в директорию
directory_name
nanoИнициирует запуск простейшего
текстового редактора командной
строки Linux
mv file_name directory_nameПеремещает file_name в директорию
directory_name
mv old_name new_nameПереименовывает файл/директориюold_name в new_name
locate file_nameВыполняет быстрый поиск файла
chmod 644 file_nameИзменяет права доступа к файлу или каталогу

Типы файловых систем Linux. Какая из файловых систем используется ядром Linux

Как уже говорилось ранее, в Linux несколько предустановленных и доступных ФС. В зависимости от выбора пользователя будут меняться методы работы с файлами, обращения к конфигурации ядра и способы хранения данных в ОП. В зависимости от целей и задач пользователя (а также достоинств и недостатков самих ФС) можно выбрать любую файловую систему, доступную в дистрибутиве ОС.

Список основных файловых систем:

ФС может являться корневой в различных разделах, Linux позволяет использовать разные системы одновременно.

Ext2, Ext3, Ext4

Первая группа ФС — Extended Filesystem (Ext2, Ext3, Ext4) — является стандартом для Linux. Как следствие, это самые распространенные системы. Они редко обновляются, но зато стабильны. Ext2 создавалась специально под Linux (изначально Extended Filesystem делали еще под Minix).

Эта группа ФС поддерживает наибольшее количество доступных функций из всех, предложенных на рынке. Ext3 (2001 г.) стала еще более стабильной, чем ее предшественница, за счет использования журналирования, а версия Ext3 (2006 г.) популярна и среди современных пользователей. Среди улучшений: увеличение максимального размера раздела до 1 Эксабайта.

Два типа файловых систем

Журналируемые — данный тип ФС сохраняет историю действий пользователя, а также план проверки системы в специальном файле. Особенности: устойчивость к сбоям и сохранение целостности информации.

Не журналируемые — не предусматривают хранение логов. Особенности: работают быстрее, но не гарантируют сохранность данных.

Чтобы узнать тип ФС, существует команда file -s.

Журналируемая ФС — первая альтернатива для ФС группы Ext. Ее разработали в IBM специально для операционной системы AIX UNIX. Главные плюсы этой системы: стабильность и минимальные требования для работы. Разработчики JFS ставили перед собой цель создать ФС, которая бы эффективно работала на многопроцессорных компьютерах. Кроме того, эта система также относится к журналируемым ФС. Но есть и очевидные недостатки. Если случится непредвиденный сбой в работе системы, ФС может использовать версии файлов, которые уже устарели. Причина заключается в том, что журнал сохраняет только метаданные.

ReiserFS

Эта ФС разработана под руководством Ганса Райзера и названа в честь него. Подходит исключительно под Linux, чаще всего ее используют в качестве возможной замены Ext3. Главные особенности: увеличенная производительность и более широкие возможности. Изменяющийся размер блока дает пользователю возможность объединять небольшие файлы в один блок, таким образом удается избежать фрагментации и повысить качество работы ФС в целом. Размер разделов можно менять прямо в процессе работы, однако эта ФС может показать нестабильные результаты и потерять данные, например, при отключении энергии.

Еще одна журналируемая ФС. Однако, в отличие от аналогов, в логи записывает исключительно те изменения, которые претерпевают метаданные. Разработана для ОС в Silicon Graphics. Важные особенности: быстро работает с файлами сравнительно большого размера, умеет выделять место в отложенном режиме, а также менять размеры разделов в процессе работы. Часто встречается в дистрибутивах на основе Red Hat. Минусы: нельзя уменьшить размер разделов, сложно восстанавливать данные и можно потерять информацию при отключении питания.

Btrfs

Flash-Friendly File System входит в состав ядра ОС Linux и предназначена для использования с хранилищем на основе флеш-памяти. Разработчик — корпорация Samsung. F2FS разбивает носитель на части, которые снова делятся, и так далее. Эти миниатюрные зоны используются вместо повторного использования одних и тех же размеченных участков.

OpenZFS

OpenZFS — ветвь ZFS, о которой мы пишем ниже). Разработчик — компания Sun для ОС Solaris. В 2016 году Ubuntu включила ее поддержку по умолчанию. Главные плюсы: защита от повреждения данных, поддержка больших файлов и автоматическое восстановление.

Традиционные для Windows ФС NTFS, FAT, HFS применяются в Linux, но пользователь не сможет установить в такие разделы корень, поскольку структура этих ФС для этого не приспособлена.

Специальные файловые системы

Для решения задач, связанных с предоставлением доступа пользователю или программам к настройкам ядру ОС, используются так называемые специальные файловые системы. Ядро использует несколько типов специальных ФС:

  • tmpfs — записывает файлы в ОП. Для этого создается блочное устройство определенного объема, после чего оно подключается к папке.
  • procfs — хранит данные о системных процессах и ядре.
  • sysfs — изменяет настройки ядра ОС.

Виртуальные файловые системы: EncFS, Aufs, NFS и ZFS

Если пользователю необходимо решить задачи, которые не требуют непременного наличия ФС в ядре, применяется модуль FUSE (filesystem in userspace). Он создает ФС в пространстве пользователя. Виртуальные ФС, как правило, поддерживают шифрование и сетевое администрирование. Сегодня на рынке существует целый спектр виртуальных ФС для ряда задач:

Что такое файловая система Linux? Простое Руководство

Linux - это операционная система с открытым исходным кодом, который подходит как для новичков, так и для опытных пользователей, на основе потребности каждого из них. Опытные пользователи рано или поздно задаются вопросом о файловой системе Linux, дабы понять как работает и как устроена данная структура знаменитой ОС.

Что такое файловая система Linux?

Файловая система - это логическая коллекция файлов на разделе или диске. Раздел представляет собой контейнер для информации и при желании может охватывать весь жесткий диск. Все в Unix считается файлом, включая физические устройства, такие как DVD-диски, USB-устройства и дисководы.

Файловая система Linux или любая файловая система, как правило, представляет собой слой под операционной системой, который обрабатывает и размещает хранимые вами файлы.

файловая система Linux

Даже если вы найдете какой-либо неподдерживаемый тип файловой системы, вы даже можете скачать программное обеспечение, которое сможет работать с ней.

Итак, поговорим о типах файловых систем Linux.

Типы файловых систем Linux

Когда вы попытаетесь установить Linux, вы увидите, что Linux предлагает множество файловых систем, подобных этим:

Ext, Ext2, Ext3, Ext4, JFS, XFS, btrfs и swap

Так что же это за файловые системы, которые предлагает Linux?

  • Ext : старый и больше не используется из-за ограничений.
  • Ext2 : первая файловая система Linux, которая позволяет 2 терабайта данных.
  • Ext3 : пришел из Ext2, но с обновлениями и обратной совместимостью. Единственная проблема в том, что серверы не используют такую ​​файловую систему, потому что эта файловая система не поддерживает восстановление файлов или моментальные снимки дисков.
  • Ext4 : быстрее и позволяет обработать большие файлы со значительной скоростью. Это очень хороший вариант для дисков SSD, и при попытке установить любой дистрибутив Linux вы замечаете, что это файловая система по умолчанию, предлагаемая Linux.
  • JFS : старая файловая система, созданная IBM. В отчетах говорится, что он очень хорошо работает с маленькими и большими файлами, но потерпел неудачу и портил файлы после длительного использования.
  • XFS : старая файловая система, которая медленно работает с маленькими файлами.
  • Btrfs: сделан компанией Oracle. Он как и Ext не стабилен в некоторых дистрибутивах Linux и у него хорошая производительность.

файловая система Linux

Каталоги файловой системы Linux

  • /bin : Где находятся основные команды Linux, такие как ls, mv и т.д.
  • /boot : где находится загрузчик и загрузочные файлы.
  • /dev : где все физические носители монтируются как USB и DVD.
  • /etc : содержит конфигурационные файлы установленных пакетов.
  • /home : где у каждого пользователя есть личная папка для размещения его собственных файлов и папок, например /home/itgap.
  • /lib : где расположены библиотеки установленных пакетов
  • /media : где расположены внешние устройства, такие как DVD и USB-флешки, которые смонтированы, и вы можете получить доступ к их файлам отсюда.
  • /mnt : Где вы монтируете сетевые папки и другие дистрибутивы подключенные через USB или DVD.
  • /opt : где расположены установленные программы, имеющие большой дисковый объем
  • /proc : эта необычный каталог для процессов, запущенных в системе, и вы можете получить к ним доступ и увидеть много информации о текущих процессах.
  • /root : домашний каталог для пользователя root.
  • /sbin : Как и /bin, но все файлы только для пользователя root.
  • /tmp : каталог временных файлов.
  • /usr : Содержит пользовательские программы. По размеру это один из самых больших каталогов файловой системы. В этот каталог устанавливаются практически все программы.
  • /var: Содержит системные журналы и другие переменные данные, которые подвергаются наиболее частому изменению.

Заключение

Хотя между дистрибутивами Linux есть небольшие различия, расположение их файловых систем, к счастью, сильно схоже. И лучший способ узнать файловую систему - изучить ее.

Лучший способ изучить файловую систему, это переходить из одного каталога в другой и осматривая каждую папку и файл. Вскоре вы узнаете как устроена файловая система 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. В файловой системе Линукс различают несколько типов файлов. Понятие "файл" включает в себя также и интерфейсы работы с периферийными устройствами, и каналы, позволяющие разным процессам в системе обмениваться данными.

Так же, современные ОС Linux совместимы с файловыми системами (ФС дальше), используемыми ОС Windows, такими как NTFS и FAT32, но применение данных ФС в Linux крайне не желательно по причине этого, что данные ФС разрабатывались под ОС Windows и поддержка Windows-разделов ядром Linux выполнена с помощью сторонних утилит/драйверов/модулей, что прикладывает некоторые ограничения (например, согласно проекту Linux-NTFS на сегментах с NTFS поддерживается практически только чтение (запись — только в существующие файлы без изменения их размера), так же ОС Linux не обладает возможности разграничивать права доступа к файлам на сегментах NTFS. Операционная система (ОС далее) Linux удерживает множество файловых систем, в настоящее время более широко используются: ext2, ext3,ext4, reiserfs. Данная ситуация со порой может поменяться.

  • Пространство имен — методы именования объектов и компании в виде единой иерархии
  • API — набор системных призывов для перемещения между объектами и управления ими
  • Методы сохранности — схема защиты, сокрытия и совместного использования объектен
  • Реализация — программный код, который связывает логические модификации с дисковой подсистемой

В повседневной работе вы даже не станете замечать, какую именно файловую систему теперь используете. От файловой системы зависит очень значительное, скорость работы с файлами, скорость записи и простонар размер файлов. Простейшие команды, например ls или cp, управление преимуществами доступа и др. — все это работает независимо от файловой системы. Абсолютно всем этим занимается файловая система. Также от устойчивости файловой системы будет зависеть сохранность ваших файлов.
Файловые системы Linux приноровлены для установки Linux и работы с ней. Чтобы на каждом разделе возможно было работать с файлами и каталогами, необходима файловая система. Мы имели возможность бы писать просто содержимое файлов на диск, но необходимо еще где-то хранить данные о папках, имена файлов, их габарит, адрес на жестком диске, атрибуты доступа.

К данным признакам относятся: скорость обработки внушительных по габариту файлов или большого количества сравнительно небольших файлов, результативность выполнения операций считывания и записи, нагрузка, показываемая на процессор, функция журналирования (меры, предпринимаемые после авантюристичного прекращения работы системы), функции квотирования (вероятность ограничить максимальное потребление памяти на пользователя), сопоставимость с NFS, дополнительные затраты энергии на управление системой, помощь дополнительных прав доступа (ACL), совместимость с SELinux и т. д. Файловые системы выделяются по признакам, представляющим интерес в первую очередь для многоопытных пользователей либо для тех, кто работает с сервером.

Устройство файловых систем ОС Linux

А сам по себя список inodes, соответствующих как существующим файлам, так и независимым блокам дискового раздела, и определяет границы файловой системы, то имеется сколько файлов может быть в ней создано. В данном разделе будет говориться о предметах, общих для абсолютно всех Linux. Все файлы в Linux физически состоят из 2 частей, реально локализованных в различных блоках атриторного накопителя, но обязательно находящихся в одном дисковом разделе, основном или логическом. Первая часть файла — его так называемые метаданные, какие содержат файловый дескриптор (это просто некое чудесное число), сведения о его атрибутах (принадлежности, правах доступа, времени изменения и т.д.), а также информацию о том, в каких блоках атриторного раздела (которые так и называются — блоки данных) физиологически размещено содержимое файла — те самые последовательности б, которые образуют доступный пользователю ASCII-текст или выполняемый модуль программы. Метаданные каждого файла вписаны в специальной области диска, называемой суперблоком, где образуют т.н. inodes (от information nodes — информативные узлы). Каждому существующему файлу соответствует собственный inode, и именно он однозначно идентифицируется файловым дескриптором.

Так вот, сущность процесса создания файловой системы на дисковом разделе (или, в осмысливании DOS/Windows, его форматирования) — в создании на нем суперблока (или, в некоторых файловых системах, многих его копий), списка inodes и отведении дискового места под блоки данных (а также загрузочного блока, о каком будет сказано ниже), а устройством этих атриторных областей определяются различия между файловыми системами разных типов. В результате на новом разделе образуется один-единственный файл — каталог корневого (для данной файловой системы) разоблачила (в некоторых случаях создается еще и каталог /lost+found, нужный для хранения нарушенных файлов).

Ответ прост: в Linux имя представляет собой атрибут не файла, но файловой системы (в 5-ом, логическом, понимании термина). Поэтому идущая от MacOS и деятельно используемая в Windows метафора каталога как папки с бумагами — в Linux только затемняет суть дела: тут это скорее именно каталожный ящик в библиотеке. Выясняет вопрос, почему такой, казалось бы неотъемлемый, свойство файла, как его имя, не обнаруживается ни в его метаданных, ни, тем более, среди его этих. Они представляют собой просто списки файловых дескрипторов идентификаторов и определенных им имен файлов. И для хранения имен файлов нужны файлы особого типа — каталоги (в Linux имеется и другие типы файлов, например, упомянутые реке файлы устройств).

Не смотря на столь простое механизм, роль каталогов в файловой системе Linux нелегко переоценить: имена файлов, через которые они врубаются в файловую систему (и через которые пользователь приобретает доступ к их содержимому), фигурируют только в составе каталога, к какому файл приписан — и больше нигде в системе. Только так осуществляется удаление файла командой rm или файловым клерком типа Midnoght Commander. Так что удаление имени файла (или подсправочника) из списка, представляющего собой данные его родительского каталога (какой, конечно, также имеет свой inode и файловый дескриптор, сваленный к каталогу, расположенному уровнем выше в иерархии файловой системы, и так дальше) равносильно тому, что метаданные файла становится недосягаемыми, а приписанные к его inode блоки данных помечаются как независимые.

Кроме того, в inode ее корневого каталога ставится т.н. бит чистого размонтирования (clean bit). Пока же рассмотрим характерные черты файловых систем, используемых в Linux’е. Обратный процесс — размонтирование, последствием чего является отсоединение от точки монтирования бревна смонтированной файловой системы. Из сказанного понятно, что для данного она со всем ее содержимым (суперблоком, списком inode, блоками этих) должна быть включена в состав какого-либо из имеющийся каталогов, называемого точкой монтирования. Именно это и сочиняет суть процесса монтирования. Впрочем, вопросам монтирования и размонтирования файловых систем станет посвящена специальная статья. Результат же для монтируемой файловой системы — в том, что ее крупнокорневой каталог (до сих пор безымянный) получает имя каталога — точки монтирования (mount point), содержание которого отныне составляет список имен ее файлов и подсправочников. Нас, однако, сейчас интересует прямо противоположное — делать файловую систему доступной.

Типы файловых систем в ОС Linux

Описание файловых систем в ОС Linux

Далее мы рассмотрим типы файловых систем Linux, вводя специальные файловые системы. В 2001 году вышла ext3, какая добавила еще больше стабильности благодаря использованию журналирования. В ней было привнесено много улучшений, в том числе увеличен максимальный габарит раздела до одного экзабайта. Она самая стабильная из абсолютно всех существующих, кодовая база изменяется очень крайне редко и эта файловая система содержит больше всего функций. В 2006 была отпущена версия ext4, которая используется во всех дистрибутивах Linux до нынешнего дня. Файловые системы в Linux используются не только для службы с файлами на диске, но и для хранения данных в оперативной памяти или доступа к конфигурации ядра во время службы системы. Версия ext2 была разработана уже именно для Linux и заполучила много улучшений. Ext2, Ext3, Ext4 или Extended Filesystem – это стандартная файловая система для Linux. Она была изобретена еще для Minix.

При разработке файловой системы ставилась мишень создать максимально эффективную файловую систему для мультипроцессорных компьютеров. Сейчас она используется там, где необходима высокая стабильность и наименьшее потребление ресурсов. Также как и ext, это журналируемая файловая система, но в журнальчике хранятся только метаданные, что может привести к применению старых версий файлов после сбоев. JFS или Journaled File System была изобретена в IBM для AIX UNIX и использовалась в качестве альтернативы для файловых систем ext.

Ранее ReiserFS применялась по умолчанию в SUSE Linux, но теперь разработчики перешли на Btrfs. Она была разработана под управлением Ганса Райзера и поддерживает только Linux. Из необыкновенностей можно отметить динамический размер блока, что дозволяет упаковывать несколько небольших файлов в один блок, что предупреждает фрагментацию и улучшает работу с небольшими файлами. Но минус в отдельной нестабильности и риске потери данных при отключении энергии. ReiserFS – была изобретена намного позже, в качестве альтернативы ext3 с улучшенной продуктивностью и расширенными возможностями. Еще одно преимущество – в возможности менять размеры разделов на лету.

Из преимуществ файловой системы возможно отметить высокую скорость работы с большими файлами, зарезервированное выделение места, увеличение разделов на лету и ничтожный размер служебной информации. Она изначально была уволена на файлы большого размера, и поддерживала диски до 2 Терабайт. XFS – это производительная файловая система, разработанная в Silicon Graphics для свой операционной системы еще в 2001 году.

Из недостатков – это неосуществимость уменьшения размера, сложность восстановления данных и риск утраты файлов при записи, если будет неожиданное отключение кормления, поскольку большинство данных находится в памяти. Она утилизируется по умолчанию в дистрибутивах на основе Red Hat. XFS – журналируемая файловая система, хотя в отличие от ext, в журнал записываются только изменения метаданных.

Но многочисленными пользователями файловая система Btrfs считается неустойчивой. Btrfs или B-Tree File System – это совершенно новоиспеченная файловая система, которая сосредоточена на отказоустойчивости, свободности администрирования и восстановления данных. Тем не менее, она уже используется как файловая система по умолчанию в OpenSUSE и SUSE Linux. Файловая система соединяет в себе очень много новых интересных способностей, таких как размещение на нескольких разделах, поддержка подтомов, модифицирование размера не лету, создание мгновенных снимков, а вдобавок высокая производительность.

Другие файловые системы, подобные как NTFS, FAT, HFS могут использоваться в Linux, но корневая файловая система linux на них не ставится, поскольку они для этого не предназначены.

Специальные файловые системы в ОС Linux

Ядро Linux утилизирует специальные файловые системы, чтобы предоставить доступ юзеру и программам к своим настройкам и информации. Наиболее довольно частенько вы будете сталкиваться с такими вариантами:

Довольно создать блочное устройство нужного размера, потом подключить его к папке, и вы можете писать файлы в эксплуатационную память. Файловая система tmpfs позволяет помещать любые пользовательские файлы в оперативной памяти ПК.

procfs — по умолчанию смонтирована в папку proc и включает всю информацию о запущенных в системе процессах, а также самый-самом ядре.

sysfs — с помощью этой файловой системы вы сможете задавать различные настройки ядра во время исполнения.

Виртуальные файловые системы в ОС Linux

Разработчики ядра досоздали модуль FUSE ( filesystem in userspace), который дозволяет создавать файловые системы в пространстве пользователя. К условным файловым системам можно отнести ФС для шифрования и сетные файловые системы.
EncFS — файловая система, какая шифрует все файлы и сохраняет их в зашифрованном виде в необходимую директорию. Не все файловые системы нужны в ядре. Имеется даже очень экзотические варианты, обратите вниманье на проект PIfs. Существуют некоторые решения, какие можно реализовать и в пространстве пользователя. Получить доступ к дешифрированным данным можно только примонтировав файловую систему.
Aufs (AnotherUnionFS) — дозволяет объединять несколько файловых систем (папок) в одну всеобщую.
NFS (Network Filesystem) — позволяет примонтировать файловую систему далёкого компьютера по сети.
Таких файловых систем весьма много, и мы не будем перечислять все их в данной статье.

Как узнать файловую систему в ОС Linux?

Оказывается, что команда file сможет дать много информации не только об обычных файлах, но и о файлах механизмов (вспомните, что в Linux всё есть файл). Иногда случается необходимо узнать файловую систему раздела диска в Linux. Установить файловую систему для смонтированных разделов можно с поддержкою команды df с ключем -T. Если же раздел не смонтирован, то выручит команда file с ключем -s, как указано выше. Пример, чтобы определить, какая файловая система на разделе /dev/sda1, накопите в командной строке команду file с ключем -s. Как это постоянно бывает в системах типа Linux/UNIX, спрашиваемый результат можно получить множеством способов.

Читайте также: