Полный цикл в digital

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

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

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

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

Стандартные файловые системы Linux:

  • Ext (первая расширенная система). Она была предложена в 1992 году и считается одной из первых. Ее функциональность была разработана частично на основе файловой системы UNIX. Начальная цель — выйти за рамки файловой системы, использовавшейся до нее (MINIX), и преодолеть ее ограничения. Сегодня практически не используется.
  • Ext2 (вторая расширенная система). Известна с 1993 года. Она была разработана как аналог предыдущей файловой системы. В ней были реализованы инновации в рамках объема памяти, изменена общая производительность.Она позволяет хранить до 2 ТБ данных. Как и ext, она малоперспективная, поэтому ее следует избегать.
  • Ext3 (третья расширенная файловая система). Ее предложили в 2001 году. Превосходит предыдущую тем, что является журналируемой. Журналируемая (journaling) ФС — это система, которая записывает в отдельный журнал изменения (обновления) файлов и данных до того, как эти действия были завершены. В этой файловой системе используется алгоритм, позволяющий восстановить файлы после перезагрузки.
  • Ext4 (четвертая версия расширенных систем). Ее создали в 2006 году. Она преодолела многочисленные ограничения, которые были в третьей версии. И сегодня широко используется и является файловой системой по умолчанию в большинстве дистрибутивов Linux. Хотя она, возможно, не самая передовая, она достаточно надежна и стабильна, поэтому находит повсеместное применение среди обширного списка Unix систем. Поэтому, если вам не очень хочется ломать голову над плюсами и минусами всех многочисленных файловых систем, которые вы можете выбрать, специалисты рекомендуют остановиться на этой системе.

Альтернативные файловые системы Linux:

  • JFS была создана компанией IBM в 1990 году. Название JFS — акроним, означающий Journaling File System. Она легко восстанавливает данные после сбоя питания и довольно надежна. Более того, она потребляет меньше процессорной мощности, чем другие файловые системы.
  • XFS высокопроизводительная файловая система. Она была создана компанией Silicon Graphics. Изначально предназначалась для их ОС «IRIX», но позже была передана Linux. Сегодня также встречается XFS Windows. Созданная в 1990 году, XFS — это 64-битная высокопроизводительная журналируемая (journaling) системная оболочка. Она хорошо работает с файлами большого объема, но не особенно с файлами меньшего размера.
  • Btrfs альтернативная файловая система, предложенная фирмой Oracle в 2009 году. Она считается конкурирующей файловой системой с Ext4, хотя, по общему мнению, последняя представляет собой лучшую версию (быстрее передает данные, обеспечивает большую стабильность). Однако в Btrfs есть несколько уникальных преимуществ. В целом она обладает отличной производительностью.
  • Swap.

Типы файлов Linux

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

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

  1. Обычные файлы, - хранение символьных и двоичных данных, подробнее
  2. Каталоги, d организация доступа к файлам, подробнее
  3. Ссылки, l предоставление доступа к файлам, расположенных на любых носителях, подробнее
  4. Блочные файлы, b предоставление интерфейса для взаимодействия с аппаратным обеспечением компьютера, подробнее
  5. Символьные файлы, c предоставление интерфейса для взаимодействия с аппаратным обеспечением компьютера, подробнее
  6. Каналы, p организация взаимодействия процессов в операционной системе, подробнее
  7. Сокеты, s организация взаимодействия процессов в операционной системе, подробнее

Файлы

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

  • Текстовые файлы
  • Исполняемые файлы
  • Файлы изображений
  • Файлы архивов
  • Файлы библиотек программ
  • Другие подобные типы

Утилита ls обозначает файлы -, выберем все файлы из каталога /bin:

ls -l /bin/ | grep "^-"

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

Посмотреть форматы файлов linux можно с помощью утилиты file:

file /bin/tar

Система сообщила что это исполняемый файл, а теперь посмотрим обычный, текстовый:

file /etc/passwd

Утилита умеет распознавать все известные форматы файлов. Чтобы узнать вывести все доступные форматы файлов linux наберите:

file -l

Каталоги или directory

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

Утилита ls обозначает каталоги буквой d, выберем все каталоги из каталога /dev:

ls -l /dev/ | grep "^d"

Ссылки

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

Жесткая, hard ссылка указывает на фактические данные в файле аналогично, как и в regular file. Помимо имени, нет никакой разницы между оригинальным файлом и жесткой ссылкой, указывающей на те же данные.

Утилита ls обозначает ссылки буквой l, выберем все ссылки из каталога /dev:

ls -l /dev/ | grep "^l"

Блочные файлы

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

Утилита ls обозначает блочные файлы буквой b, выберем все блочные файлы из каталога /dev:

ls -l /dev/ | grep "^b"

Символьные файлы

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

Утилита ls обозначает символьные файлы буквой c, выберем все символьные файлы из каталога /dev:

ls -l /dev/ | grep "^c"

Каналы или туннели

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

Утилита ls обозначает туннели буквой p, выберем все туннели из каталога /dev:

ls -l /dev/ | grep "^p"

Чтобы создать именованный тоннель вы можете использовать утилиту mkfifo:

mkfifo pipe1
echo "test test test" > pipe1

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

while read line ;do echo "Data: '$line' "; done

Файлы сокетов

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

Утилита ls обозначает сокеты буквой s, выберем все сокеты из каталога /dev:

ls -l /dev/ | grep "^s"

Создать сокет можно с помощью функции socket() на языке программирования Си, чтение и запись выполняется системными вызовами read() и write(). Но нам сейчас не нужно писать реальную программу, будет достаточно немного поиграться. Поэтому воспользуемся утилитой nc. Создаем Unix сокет:

nc -lU socket.sock

Подключаемся к нему из другой консоли:

nc -U socket.sock

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

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

/ - корень

Это главный каталог в системе Linux. По сути, это и есть файловая система Linux. Здесь нет дисков или чего-то подобного, как в Windows. Вместо этого, адреса всех файлов начинаются с корня, а дополнительные разделы, флешки или оптические диски подключаются в папки корневого каталога.

Только пользователь root имеет право читать и изменять файлы в этом каталоге. Обратите внимание, что у пользователя root домашний каталог /root, но не сам /.

/bin - бинарные файлы пользователя

Этот каталог содержит исполняемые файлы. Здесь расположены программы, которые можно использовать в однопользовательском режиме или режиме восстановления. Одним словом, те утилиты, которые могут использоваться пока еще не подключен каталог /usr/. Это такие общие команды, как cat, ls, tail, ps и т д.

/sbin - системные исполняемые файлы

Так же как и /bin, содержит двоичные исполняемые файлы, которые доступны на ранних этапах загрузки, когда не примонтирован каталог /usr. Но здесь находятся программы, которые можно выполнять только с правами суперпользователя. Это разные утилиты для обслуживания системы. Например, iptables, reboot, fdisk, ifconfig,swapon и т д.

/etc - конфигурационные файлы

В этой папке содержатся конфигурационные файлы всех программ, установленных в системе. Кроме конфигурационных файлов, в системе инициализации Init Scripts, здесь находятся скрипты запуска и завершения системных демонов, монтирования файловых систем и автозагрузки программ. Структура каталогов linux в этой папке может быть немного запутанной, но предназначение всех их - настройка и конфигурация.

/dev - файлы устройств

В Linux все, в том числе внешние устройства являются файлами. Таким образом, все подключенные флешки, клавиатуры, микрофоны, камеры - это просто файлы в каталоге /dev/. Этот каталог содержит не совсем обычную файловую систему. Структура файловой системы Linux и содержащиеся в папке /dev файлы инициализируются при загрузке системы, сервисом udev. Выполняется сканирование всех подключенных устройств и создание для них специальных файлов. Это такие устройства, как: /dev/sda, /dev/sr0, /dev/tty1, /dev/usbmon0 и т д.

/proc - информация о процессах

Это тоже не обычная файловая система, а виртуальная подсистема, динамически создаваемая ядром. Здесь содержится вся информация о запущенных процессах в реальном времени. По сути, это псевдофайловая система, содержащая подробную информацию о каждом процессе, его Pid, имя исполняемого файла, параметры запуска, доступ к оперативной памяти и так далее. Также здесь можно найти информацию об использовании системных ресурсов, например, /proc/cpuinfo, /proc/meminfo или /proc/uptime. Кроме файлов в этом каталоге есть большая структура папок linux, из которых можно узнать достаточно много информации о системе.

/var переменные файлы

Название каталога /var говорит само за себя, он должен содержать файлы, которые часто изменяются. Размер этих файлов постоянно увеличивается. Здесь содержатся файлы системных журналов, различные кеши, базы данных и так далее. Дальше рассмотрим назначение каталогов Linux в папке /var/.

/var/log - файлы логов

Здесь содержатся большинство файлов логов всех программ, установленных в операционной системе. У многих программ есть свои подкаталоги в этой папке, например, /var/log/apache - логи веб-сервера, /var/log/squid - файлы журналов кеширующего сервера squid. Если в системе что-либо сломалось, скорее всего, ответы вы найдете здесь.

/var/lib - базы данных

Еще один тип изменяемых файлов - это файлы баз данных, пакеты, сохраненные пакетным менеджером и т д.

/var/mail - почта

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

/var/spool - очереди

Изначально, эта папка отвечала за очереди печати на принтере и работу набора программ cups.

/var/lock - файлы блокировок

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

/var/run - PID процессов

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

/tmp - временные файлы

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

Файлы удаляются при каждой перезагрузке. Аналогом Windows является папка Windows\Temp, здесь тоже хранятся все временные файлы.

/usr - программы пользователя

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

/usr/bin/ - исполняемые файлы

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

/usr/sbin/

Содержит двоичные файлы программ для системного администрирования, которые нужно выполнять с правами суперпользователя. Например, таких как Gparted, sshd, useradd, userdel и т д.

/usr/lib/ - библиотеки

Содержит библиотеки для программ из /usr/bin или /usr/sbin.

/usr/local - файлы пользователя

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

/home - домашняя папка

В этой папке хранятся домашние каталоги всех пользователей. В них они могут хранить свои личные файлы, настройки программ и т д. Например, /home/sergiy и т д. Если сравнивать с Windows, то это ваша папка пользователя на диске C, но в отличии от WIndows, home как правило размещается на отдельном разделе, поэтому при переустановке системы все ваши данные и настройки программ сохранятся.

/boot - файлы загрузчика

Содержит все файлы, связанные с загрузчиком системы. Это ядро vmlinuz, образ initrd, а также файлы загрузчика, находящие в каталоге /boot/grub.

/lib системные библиотеки

Содержит файлы системных библиотек, которые используются исполняемыми файлами в каталогах /bin и /sbin.

Библиотеки имеют имена файлов с расширением *.so и начинаются с префикса lib*. Например, libncurses.so.5.7. Папка /lib64 в 64 битных системах содержит 64 битные версии библиотек из /lib. Эту папку можно сравнить с WIndows\system32, там тоже сгружены все библиотеки системы, только там они лежат смешанные с исполняемыми файлами, а здесь все отдельно.

/opt дополнительные программы

В эту папку устанавливаются проприетарные программы, игры или драйвера. Это программы созданные в виде отдельных исполняемых файлов самими производителями. Такие программы устанавливаются в под-каталоги /opt/, они очень похожи на программы Windows, все исполняемые файлы, библиотеки и файлы конфигурации находятся в одной папке.

/mnt монтирование

В этот каталог системные администраторы могут монтировать внешние или дополнительные файловые системы.

съемные носители

В этот каталог система монтирует все подключаемые внешние накопители - USB флешки, оптические диски и другие носители информации.

/srv сервер

В этом каталоге содержатся файлы серверов и сервисов. Например, могут содержаться файлы веб-сервера apache.

/run - процессы

Еще один каталог, содержащий PID файлы процессов, похожий на /var/run, но в отличие от него, он размещен в TMPFS, а поэтому после перезагрузки все файлы теряются.

/sys информация о системе

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

Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг