Про Linux и не только

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

Автор Linux code

Дата публикации 16 апреля 2020

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

 

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

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

В Linux путь к корневому каталогу — "/". Полные имена (пути) всех остальных каталогов получаются из "/", к которому дописываются справа имена последовательно вложенных друг в друга каталогов. Имена каталогов в пути также разделяются символом "/" ("слэш"). К примеру, запись /home обозначает каталог "home" в корневом каталоге ("/"), а /home/user — каталог "user" в каталоге "home" (который, в свою очередь, в корневом каталоге). Аналогичным образом составляются полные имена файлов.

Символьная ссылка

Это специальный файл в файловой системе, внутри которого есть только одна-две строки с указанием полного пути, который должен быть открыт при попытке обратиться к данной ссылке (файлу)

Файлы Initrd

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

Файлы устройств

В Linux устройством называется оборудование, которое подключается к системе в процессе загрузки ядра или в процессе работы системы. Эти устройства представляют методы для ввода или вывода информации. Например, жесткий диск – устройство для ввода (запись) и вывода (чтение), мышь – устройство ввода. Каждое движение или нажатие на кнопки мыши отправляет символ на устройство /dev/mouse, клавиатура – тоже устройство ввода. Большинство устройств в Linux представляют из себя файлы в особой файловой системе (исключение составляют сетевые карты).

Библиотеки

Как правило, для корректной работы большинства программ необходимы зависимости, которые называют библиотеками – набором файлов, к которым подключается программа.

Монтирование

Корневой каталог в Linux всегда только один, а все остальные каталоги в него вложены, т. е. для пользователя файловая система представляет собой единое целое. В действительности, разные части файловой системы могут находиться на совершенно разных устройствах: разных разделах жёсткого диска, на разнообразных съёмных носителях, даже на других компьютерах (с доступом через сеть). Для того, чтобы соорудить из этого хозяйства единое дерево с одним корнем, используется процедура монтирования.

Монтирование — это подключение в один из каталогов целой файловой системы, которая находится где-то на другом устройстве. Эту операцию можно представить как «прививание» ветки к дереву. Для монтирования необходим пустой каталог — он называется точкой монтирования. Точкой монтирования может служить любой каталог, никаких ограничений на этот счёт в Linux нет. При помощи специальной команды (mount) мы объявляем, что в данном каталоге (пока пустом) нужно отображать содержимое такого-то устройства. После этой операции в каталоге (точке монтирования) появятся все те файлы и каталоги, которые находятся на соответствующем устройстве. В результате пользователь может даже и не знать, на каком устройстве какие файлы располагаются.

Подключённую таким образом («смонтированную») файловую систему можно в любой момент отключить — размонтировать (для этого имеется специальная команда umount), после чего тот каталог, куда она была смонтирована, снова окажется пустым.

Одно из устройств для Linux является самым важным — это корневая файловая система (root filesystem). Именно к ней затем будут подключаться (монтироваться) все остальные файловые системы на других устройствах. Обратите внимание, что корневая файловая система тоже монтируется, но только не к другой файловой системе, а к «самой Linux», причём точкой монтирования служит «/» (корневой каталог). Поэтому при загрузке системы прежде всего монтируется корневая файловая система, а при останове она размонтируется (в последнюю очередь).

Пользователю обычно не требуется выполнять монтирование и размонтирование вручную: при загрузке системы будут смонтированы все устройства, на которых хранятся части файловой системы, а при останове (перед выключением) системы все они будут размонтированы. Файловые системы на съёмных носителях (лазерных дисках, дискетах и пр.) также монтируются и размонтируются автоматически — либо при подключении носителя, либо при обращении к соответствующему каталогу.

Двоичный (бинарный) файл

В широком смысле: последовательность произвольных байтов. Название связано с тем, что байты состоят из бит, то есть двоичных (англ. binary) цифр.

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

Исполняемый файл

Исполняемый файл (англ. executable file, также выполняемый, реже исполнимый, выполнимый) — файл, содержащий программу в виде, в котором она может быть исполнена компьютером. Перед исполнением программа загружается в память, и выполняются некоторые подготовительные операции (настройка окружения, загрузка библиотек). В Windows такие файлы имеют расширение .exe

Стандартные каталоги. FHS

FHS (англ. Filesystem Hierarchy Standard, "стандарт иерархии файловой системы") — стандарт, унифицирующий местонахождение файлов и каталогов с общим назначением в файловой системе UNIX. На данный момент большинство UNIX-подобных систем в той или иной степени следует этим правилам.

В корневом каталоге Linux-системы обычно находятся только подкаталоги со стандартными именами. Более того, не только имена, но и тип данных, которые могут попасть в тот или иной каталог, также регламентированы стандартом. Этот стандарт довольно последовательно соблюдается во всех Linux-системах: так, в любой Linux вы всегда найдёте каталоги /etc, /home, /usr/bin и т. п. и сможете довольно точно предсказать, что именно в них находится.

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

/ - Корень первичной иерархии и Корневой каталог, содержащий всю иерархию файловой системы (слеш).

/bin – Основные утилиты, необходимые как в однопользовательском режиме, так и при обычной работе всем пользователям (пример: cat, ls, cp, tail, ps), исполняемые файлы , а также символьные ссылки на исполняемые файлы.

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

/boot – конфигурационные файлы загрузчика GRUB, образы ядра (по умолчанию хранятся последние три), файлы _Initrd_.

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

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

/home – домашние каталоги всех пользователей, зарегистрированых в системе. Часто размещается на отдельном разделе.каталоги. В домашних каталогах пользователей хранятся пользовательские файлы, а также пользовательские настройки различных программ. Каждый пользователь имеет свой уникальный каталог для своих файлов. Этот каталог называется Домашним каталогом пользователя и обозначается /home/Имя_Пользователя. Такое разделение пользовательских данных и файлов операционной системы упрощает их сохранение и повышает надежность самой операционной системы.

/lib – Основные библиотеки и модули ядра, необходимые для работы программ из /bin и /sbin.

/lost+found – этот каталог нужен для хранения испорченных файлов при проблемах с файловой системой, которые были восстановлены после, например, некорректного размонтирования файловой системы. Это очень ценный каталог, удалить его не получится (он всё равно снова появится).

/misc – может содержать все что угодно.

/media - точки монтирования для сменных носителей, таких как CD-ROM, DVD-ROM (впервые описано в FHS-2.3)

/mnt – точки монтирования. В современных дистрибутивах Linux этот процесс обычно происходит автоматически. При этом в каталогах /mnt или /media создается подкаталог, имя которого совпадает с именем монтируемого тома.

/opt – дополнительное программное обеспечение, здесь обычно размещаются установленные программы, имеющие большой дисковый объем, или вспомогательные пакеты, например

/proc - каталог псевдофайловой системы procfs, которая используется для предоставления информации о процессах (по-другому это виртуальная файловая система, которая обеспечивает связь с ядром и монтируется в каталогу /proc). Он существует только во время работы системы в оперативной памяти компьютера. Каталог представляет интерес и с точки зрения безопасности. Многие из утилит, выводящие информацию о системе (например, команда ps), берут свои исходные данные именно из этого каталога.

/root - каталог пользователя root.

/run – хранение данных, которые были запущены приложениями.

Сюда входят:

  • Идентификаторы процессов PID (каждый запущенный в среде Linux процесс имеет свой уникальный идентификатор – по-другому это адрес (в числовом виде) процесса, с которым будут взаимодействовать другие запущенные процессы во время работы)
  • Информация о межпроцессорном взаимодействии (обмен данными между запущенными процессами)
  • Заблокированные файлы (если в процессе работы приложение или не запускается, или работает нестабильно? это может означать, что некоторые файлы этого приложения заблокированы другими процессами и происходит это тогда, когда сразу несколько приложений пытаются использовать один общий ресурс); – ну и другие данные, необходимые во время работы.

/sbin - набор утилит для системного администрирования, содержит исполняемые файлы, необходимые для загрузки системы и ее восстановления в различных щекотливых ситуациях. Запускать эти утилиты имеет право только root.

/tmp - временные файлы. Linux, в отличие от Windows, следит за чистотой и регулярно очищает этот каталог.

/usr – пользовательские программы, документацию, исходные коды программ и ядра. По размеру это один из самых больших каталогов файловой системы. В этот каталог устанавливаются практически все программы. И его можно сравнить с каталогом Program Files в Windows.

/var - переменные файлы (variable), которые подвергаются наиболее частому изменению. Например, кэши различных программ; файлы блокировки для недопустимости одновременного использования одной программы несколькими пользователями; файлы системных журналов; временные файлы (при выключении компьютера содержимое очищается); информация о различных программах; общая информация о состоянии системы с момента последней загрузки, входа в систему и т.д.; очередь печати, факсов, а также входящие почтовые ящики пользователей и т.д.

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

Разметка жесткого дистка

На жёстком диске компьютера хранятся данные, которые используются по-разному. Одни составляют операционную систему или нужны ей для работы, другие нужны пользователю, он их создаёт сам или откуда-то получает. Некоторые данные нужны временно, например, только на время работы программы, другие предназначены для «вечного» хранения. Есть такие данные, которые может изменить только человек, и такие, которые система сама создаёт или модифицирует в процессе работы. Наконец, есть такие данные, которые могут храниться на одном компьютере, а использоваться на нескольких (например, по локальной сети), и такие, которые предназначены только для данного компьютера.

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

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

Корневая файловая система

С корневой файловой системы начинает расти всё дерево файлов Linux. Точкой монтирования для корневой файловой системы служит «/» — корневой каталог. Можно поместить все данные (влючая пользовательские файлы) на один раздел — это как раз тот случай, когда для Linux потребуется всего два раздела. Для повышения эффективности и надёжости некоторые ветви дерева файлов можно выносить на другие разделы. Поскольку для файловой системы Linux не важно, каким образом части дерева каталогов расположены на разделах дисков, у вас есть возможность использовать каждый из имеющихся разделов диска под любой каталог файловой системы. В этом случае раздел с корневым каталогом будет служить точкой монтирования для остальных файловых систем.

Область подкачки

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

Благодаря этому вполне может сложиться ситуация, когда используется больше оперативной памяти, чем её есть в действительности: если не вся заказанная память используется одновременно, что позволяет системе откачивать некоторые области. В Linux принято размещать область подкачки на отдельном разделе, что позволяет увеличить скорость доступа к данным и уменьшить риск повреждения ценных данных на основных разделах.

Дополнительно выделяемые разделы:

/boot

Область подкачки (swap)

/home

 

Источник