Бесплатная миграция IT-инфраструктуры в облако

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

Команда Timeweb Cloud
Команда Timeweb Cloud
Наши инженеры, технические писатели, редакторы и маркетологи
18 февраля 2022 г.
12104
14 минут чтения
Средний рейтинг статьи: 3.6

Структура И Типы Файловых Систем В Linux (1)

Файловая система Linux — древовидная (tree-shared) сложная структура, начинающаяся с корня. Она состоит из каталогов (директорий - directory), подкаталогов (subdirectory). Каждый файл и файловая система взаимосвязаны между собой. Эта структура соответствует типичной схеме, предложенной FHS — стандарт, поддерживаемый System Linux Foundation.

Особенности файловых систем

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

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

Разделена такая системная оболочка на два сегмента: meta-данные (имя файла, дата создания, размер) и пользовательские данные.

Ваш компьютер использует эту файловую систему для определения расположения файлов в вашем хранилище.

К примеру, основные файловые системы Windows: файловая система NTFS, файловая система FAT и FAT32. В файловой системе NTFS поддерживаются три типа ссылок на файлы: жесткие связи, точки соединения и символьные ссылки (NTFS Links). Структура NTFS — одна из самых удачных и сложных на данный момент. Каждый кластер на носителе имеет запись в таблице FAT. Записи указывают на назначение частей файла кластеру. Каждая запись файла конкатенируется с другими записями файла, начиная с первого кластера. Поскольку первая система распределения FAT могла обрабатывать только восьмибуквенные имена файлов, существовали некоторые ограничения, которые были сняты в FAT16, а затем в FAT32.

Для Linux существует множество различных файловых систем. Пользователь может узнать это самостоятельно, задавая команды в терминале.

Какие существуют типы файловых систем Linux?

Виды файловых систем, предлагаемых при установке ОС на базе Linux:

  • Ext;
  • Ext2;
  • Ext3;
  • Ext4;
  • JFS;
  • XFS;
  • Btrfs;
  • Swap.

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

Ext — extended (расширенная) file system. Она была предложена в 1992 году и считается одной из первых.

Ее функциональность была разработана частично на основе файловой системы UNIX. Начальная цель — выйти за рамки файловой системы, использовавшейся до нее (MINIX), и преодолеть ее ограничения. Сегодня практически не используется.

Ext2 — «вторая расширенная система». Известна с 1993 года. Она была разработана как аналог предыдущей файловой системы.

В ней были реализованы инновации в рамках объема памяти, изменена общая производительность.Она позволяет хранить до 2 ТБ данных. Как и ext, она малоперспективная, поэтому ее следует избегать.

Ext3 — третья расширенная файловая система. Ее предложили в 2001 году. Превосходит предыдущую тем, что является журналируемой. Журналируемая (journaling) ФС — это система, которая записывает в отдельный журнал изменения (обновления) файлов и данных до того, как эти действия были завершены.

В этой файловой системе используется алгоритм, позволяющий восстановить файлы после перезагрузки.

Ext4 Linux — fourth extended system (четвертая версия расширенных систем). Ее создали в 2006 году. Она преодолела многочисленные ограничения, которые были в третьей версии. И сегодня широко используется и является файловой системой по умолчанию в большинстве дистрибутивов Linux.

Хотя она, возможно, не самая передовая, она достаточно надежна и стабильна, поэтому находит повсеместное применение среди обширного списка Unix систем.

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

Классификация альтернативных файловых систем

JFS — была создана компанией IBM в 1990 году. Название JFS — акроним, означающий Journaling File System. Она легко восстанавливает данные после сбоя питания и довольно надежна. Более того, она потребляет меньше процессорной мощности, чем другие файловые системы.

XFS — высокопроизводительная файловая система. Она была создана компанией Silicon Graphics. Изначально предназначалась для их ОС «IRIX», но позже была передана Linux. Сегодня также встречается XFS Windows.

Созданная в 1990 году, XFS — это 64-битная высокопроизводительная журналируемая (journaling) системная оболочка. Она хорошо работает с файлами большого объема, но не особенно с файлами меньшего размера.

Btrfs — альтернативная файловая система, предложенная фирмой Oracle в 2009 году. Она считается конкурирующей файловой системой с Ext4, хотя, по общему мнению, последняя представляет собой лучшую версию (быстрее передает данные, обеспечивает большую стабильность). Однако в Btrfs есть несколько уникальных преимуществ. В целом она обладает отличной производительностью.

Типы файлов Linux

Выделяют такие типы файлов Linux:

  • обычные (regular file);
  • именованный канал (named pipe);
  • файл для туннелей, устройств (device file);
  • soft link (символическая ссылка);
  • директории (каталоги);
  • сокет (socket);
  • дверь (door).

Типы файлов

 

Назначение

Обычные файлы

Хранение символьных и двоичных данных

Каталоги

d

Организация доступа к файлам

Символьные ссылки

l

Предоставление доступа к файлам, расположенных на любых носителях

Блочные устройства

b

Предоставление интерфейса для взаимодействия с аппаратным обеспечением компьютера

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

c

Каналы

p

Организация взаимодействия процессов в операционной системе

Сокеты

s

Каталог (directory) — файл, содержащий другие организованные структуры данных (директории), который обеспечивает указатели на них. Играет роль папки в картотеке (группирует связанные файлы). Но если папки содержат только файлы, то директории могут содержать дополнительные каталоги (subdirectories).

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

Отдельно создают жесткие ссылки. Жесткая (hard) ссылка указывает на фактические данные в файле аналогично, как и в regular file. Помимо имени, нет никакой разницы между оригинальным файлом и жесткой ссылкой, указывающей на те же данные. Оба файла представляют собой обычные файлы. Отличить жесткую ссылку от любого другого обычного файла можно только по количеству ссылок, которые есть у каждого из них. Количество ссылок отображается во втором поле листинга ls -l. Если это число >1, то значит, что существуют дополнительные жесткие ссылки на данные.

Все физические устройства, которые использует Linux, представлены файлами устройств. Файлы устройств (device file) классифицируют как специальные символы или специальные блоки. Специальные символьные файлы представляют устройства, которые взаимодействуют с Linux посимвольно. Принтеры — пример такого устройства. Файлы block-special — это жесткие и гибкие диски, а также CD-ROM, взаимодействующие с ОС, используя блоки данных.

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

Директории ОС Linux

Структура каталогов Linux имеет вид tree-shared (разветвленная). Важно выделить один момент, характерный только для Unix-схожих систем. Эти ОС стремятся к простоте и рассматривают каждый объект как последовательность байтов. Для Unix эти последовательности представлены в виде файлов.

В отличие от ОС Windows, которая имеет несколько корней, файловая система Линукс допускает лишь один корень. Корневой каталог является местом, где находятся все остальные директории и файлы ОС (обозначается прямой косой чертой).

Вся структура папок Linux представлена в едином каталоге, именуемым корневым (root directory).

Основные каталоги, входящие в root directory

/home

Это home directory (домашняя директория). Разделы Linux — многопользовательская оболочка, поэтому отдельному пользователю назначается отдельный объект в системе, доступный исключительно ему и суперпользователю.

/bin и /sbin

bin — сокращенно от binary. Здесь ОС хранит основные программные коды. Бинарные файлы — исполняемые организованные структуры данных, содержащие откомпилированный исходный код.

sbin — сокращенно от system binary. Эта директория зарезервирована для ПО, необходимого для регенерации, загрузки и отката.

/opt

opt — «необязательный». Это место, где хранятся инсталлированные вручную приложения и программы.

/usr

usr — Unix System Resources. Директория принадлежит пользовательским приложениям в отличие от /bin или /sbin, которые принадлежат приложениям, включенным в систему.

Подкаталоги /usr

/usr/bin — большинство двоичных программ.

/usr/include — заголовочные организованные структуры данных, необходимые для компиляции исходного кода.

/usr/sbin — подкаталоги, предназначенные для задач, выполняющихся многократно.

/usr/lib — libraries (библиотеки)

/usr/src — исходные тексты ядра, header files (файлы заголовков).

/usr/share — это разделяемые от архитектуры файлы (документы, иконки, шрифты).

Изначально этот каталог предназначался для всего, что связано с пользователем, но со временем он потерял свое значение и теперь это место для ПО и данных, используемых пользователем.

/lib /lib32 /lib64

lib — библиотека (library). Это директории библиотечных файлов. Library files — программы, используемые совместно другими приложениями. 

/boot

Это статический загрузчик, который содержит исполняемый файл ядра (kernel) и прочие файлы (configuration files), необходимые для запуска ПК.

/sys

Это место, где пользователь (user) взаимодействует с ядром (kernel). Его рассматривают его как путь к ядру со структурой, заданной заранее. В директорию примонтирована виртуальная файловая система sysfs. Это интерфейс ядра для доступа к данным подключённых устройств

/tmp

Здесь хранят temporary files (временные структуры данных), необходимые приложениям во время сеанса работы.

/dev

Здесь находятся special files (файлы устройств). С их помощью ПО взаимодействует с периферией. Разделяют special files на символьные и блочные. Второе устройство (block device) — то, которое выполняет ввод/вывод информационных данных в виде блоков (к примеру, SSD диск), а символьное устройство (symbol device) выполняет ввод/вывод информации в виде символов (например, клавиатура).

/proc

proc — это не что иное, как процесс. В этом каталоге содержатся псевдофайлы (pseudofiles), содержащие сведения о системных ресурсах.

/run

В директорию монтируется виртуальная файловая система tmpfs для хранения файлов, связанных с выполняющимися процессами. Здесь хранятся сведения о времени выполнения оперативной памяти. Эти файлы хранятся в оперативной памяти и по завершению сеанса исчезают.

/root

Это каталог для super user (администратор) — домашняя директория пользователя root.

/srv

Это service catalog (служебная директория). Если вы используете web-сервер, то можно хранить в этой папке данные для конкретной веб-страницы.

Файловая система и пути хранения данных на физическом диске

Каталоги в Linux сопоставляют имена организованных структур данных с их адресами на физическом диске. Для хранения метаинформации задан размер каталога Linux

В отдельных директориях файлы применяют inode (индексный узел). Этот узел хранит адрес блока диска и файловые атрибуты.

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

Директория в файловой системе — это inode, хранящий сведения обо всех именах организованных структур данных внутри него.

Еще одна вещь об инодах. Иноды уникальны, но имена, которые переадресовываются на эти узлы, не оригинальны. Именно поэтому inode отслеживает hard links (жесткие ссылки).

Архитектура Linux

Архитектура Linux состоит из аппаратного слоя, ядра, системной библиотеки, системы, утилит.

Image3

В верхней части находится пространство пользователя (user space). Здесь выполняются пользовательские приложения (user applications). Ниже этого слоя размещено пространство ядра (kernel space). Ядро ОС размещено в kernel space.

Существует также отдельный сборник подпрограмм GNU C Library (glibc). Эта библиотека — интерфейс вызовов ОС, соединяемый с ядром (kernel) и задает алгоритм перехода между ядром и user applications. Как user applications, так и ядро относят к особым адресным пространствам (такие пространства защищены от стороннего влияния). Каждый процесс user applications занимает свое личное виртуальное адресное пространство. Для ядра выделено единое адресное пространство.

Структура ядра — это три основных уровня. На первом уровне (top level) находится интерфейс вызовов, поступающих из системы, реализующий основные функции (запись файлов). Ниже интерфейса System Call Interface находится код ядра (объект с независимой архитектурой). Он является единым для разных архитектур, поддерживаемых данной ОС. Ниже расположен архитектурно-привязанный код, создающий Board Support Package. Этот код служит в качестве кода, специфичного для процессора и платформы данной архитектуры.

Архитектура Линукс рассматривается с разных позиций. Важная цель архитектурной декомпозиции — предоставить ее так, чтобы лучше понимать.

Ядро (kernel) выполняет такие задачи:

  • контроль за работой процессов — выявить, какие процессы использует центральный процессор (CPU), как долго и в какое время;
  • управление памятью (memory) — контролировать, сколько памяти используется для хранения, в каком месте и как долго;
  • драйверы устройств (device drivers) — интерпретатор между аппаратным обеспечением и процессами;
  • системные вызовы (system calls) — запросы на обслуживание от осуществляемых процессов.

Ядро невидимо для пользователя. Оно работает в своем собственном маленьком мире (kernel space). То, что видит пользователь (web-браузеры, файлы) известно как user space. Эти приложения взаимодействуют с ядром через System Call Interface (SCI).

Чтобы представить ядро в контексте, ОС Linux использует несколько уровней:

  1. Ядро Linux (operating system kernel) — ПО, находящееся в памяти и указывающее процессору (CPU), что делать.
  2. Аппаратное обеспечение (hardware) — физическая машина (основа ОС), состоящая из памяти (RAM) и процессора (CPU), а также устройств ввода/вывода (I/O), такие как устройства хранения, сети и графика. CPU проводит вычисления, чтение памяти и записывает данные в RAM.
  3. Пользовательские процессы (user processes) — запущенные программы, управляемые ядром. Эти процессы в общем составляют пользовательское пространство. User processes — это просто процессы. Ядро позволяет этим процессам и серверам взаимодействовать между собой (межпроцессное взаимодействие — IPC).

Код, выполняемый ОС, работает на процессорах в одном из двух режимов: kernel mode (режим ядра); user mode (режим пользователя). Код, выполняющийся в kernel mode отличается неограниченным доступ к аппаратному обеспечению. При этом user mode ограничивает доступ к памяти SCI и CPU. Подобное разделение применяют для памяти (kernel space, user space). Эти два компонента создают основу для проведения отдельных сложных операций, таких как разделение привилегий для безопасности, создание виртуальных машин.

Дистрибутив Linux

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

Linux свободно распространяется и может быть получена различными способами. Linux применяется различными пользователями и организациями, а также часто сочетается со свободным или несвободным программным обеспечением. Пакет такого типа содержит все ПО, необходимое для установки и работы. Подобрать подходящее программное обеспечение можно на сервисе timeweb.cloud.

Популярные разновидности Линукс (дистрибутивы):

  1. Red Hat;
  2. Ubuntu;
  3. Debian;
  4. CentOS;
  5. Arch Linux;
  6. Linux Mint;
  7. OpenSUSE;
  8. Manjaro;
  9. Cloud Linux;
  10. Gentoo.

Представленные виды Линукс могут быть использованы начинающими пользователями, системными администраторами, серверами. К примеру, неопытному пользователю подойдет файловая система Ubuntu, интерфейс которой легко освоить. Arch Linux подойдет для использования профессионалом, в которой предлагаются не все предустановленные пакеты сразу.

18 февраля 2022 г.
12104
14 минут чтения
Средний рейтинг статьи: 3.6
Комментарии 1
Артём
20.08.2024, 01:42

Спасибо, полезная статья)