Файловая система Linux
Операционные системы хранят данные на диске при помощи файловых систем. Классическая файловая система представляет данные в виде вложенных друг в друга каталогов (их ещё называют папками), в которых содержатся файлы 1 . Один из каталогов является «вершиной» файловой системы (а выражаясь технически — «корнем» 2 ), в нём содержатся (или из него растут) все остальные каталоги и файлы.
Если жёсткий диск разбит на разделы, то на каждом разделе организуется отдельная файловая система с собственным корнем и структурой каталогов (ведь разделы полностью изолированы друг от друга).
В Linux корневой каталог называется весьма лаконично — « / ». Полные имена (пути) всех остальных каталогов получаются из « / », к которому дописываются справа имена последовательно вложенных друг в друга каталогов. Имена каталогов в пути также разделяются символом « / » («слэш»). Например, запись /home обозначает каталог « home » в корневом каталоге (« / »), а /home/user — каталог « user » в каталоге « home » (который, в свою очередь, в корневом каталоге) 3 . Аналогичным образом составляются полные имена файлов.
Монтирование
Корневой каталог в Linux всегда только один, а все остальные каталоги в него вложены, т. е. для пользователя файловая система представляет собой единое целое 4 . В действительности, разные части файловой системы могут находиться на совершенно разных устройствах: разных разделах жёсткого диска, на разнообразных съёмных носителях (лазерных дисках, дискетах, флэш-картах), даже на других компьютерах (с доступом через сеть). Для того, чтобы соорудить из этого хозяйства единое дерево с одним корнем, используется процедура монтирования.
Монтирование — это подключение в один из каталогов целой файловой системы, которая находится где-то на другом устройстве. Эту операцию можно представить как «прививание» ветки к дереву. Для монтирования необходим пустой каталог — он называется точкой монтирования. Точкой монтирования может служить любой каталог, никаких ограничений на этот счёт в Linux нет. При помощи специальной команды ( mount ) мы объявляем, что в данном каталоге (пока пустом) нужно отображать содержимое такого-то устройства. После этой операции в каталоге (точке монтирования) появятся все те файлы и каталоги, которые находятся на соответствующем устройстве. В результате пользователь может даже и не знать, на каком устройстве какие файлы располагаются.
Подключённую таким образом («смонтированную») файловую систему можно в любой момент отключить — размонтировать (для этого имеется специальная команда umount ), после чего тот каталог, куда она была смонтирована, снова окажется пустым.
Одно из устройств для Linux является самым важным — это корневая файловая система (root filesystem). Именно к ней затем будут подключаться (монтироваться) все остальные файловые системы на других устройствах. Обратите внимание, что корневая файловая система тоже монтируется, но только не к другой файловой системе, а к «самой Linux», причём точкой монтирования служит « / » (корневой каталог). Поэтому при загрузке системы прежде всего монтируется корневая файловая система, а при останове она размонтируется (в последнюю очередь).
Пользователю обычно не требуется выполнять монтирование и размонтирование вручную: при загрузке системы будут смонтированы все устройства, на которых хранятся части файловой системы, а при останове (перед выключением) системы все они будут размонтированы. Файловые системы на съёмных носителях (лазерных дисках, дискетах и пр.) также монтируются и размонтируются автоматически — либо при подключении носителя, либо при обращении к соответствующему каталогу.
Стандартные каталоги
В корневом каталоге Linux-системы обычно находятся только подкаталоги со стандартными именами. Более того, не только имена, но и тип данных, которые могут попасть в тот или иной каталог, также регламентированы стандартом 5 . Этот стандарт довольно последовательно соблюдается во всех Linux-системах: так, в любой Linux вы всегда найдёте каталоги /etc , /home , /usr/bin и т. п. и сможете довольно точно предсказать, что именно в них находится.
Стандартное размещение файлов позволяет и человеку, и даже программе предсказать, где находится тот или иной компонент системы. Для человека это означает, что он сможет быстро сориентироваться в любой системе Linux (где файловая система организована в соответствии со стандартом) и найти то, что ему нужно. Для программ стандартное расположение файлов — это возможность организации автоматического взаимодействия между разными компонентами системы.
1Файл — область данных, имеющая собственное имя.
2Такой каталог называют корневым каталогом, поскольку он служит корнем дерева файловой системе (в математическом смысле слов «дерево» и «корень»).
3Весьма похожий способ записи полного пути используется в системах DOS и Windows, с той разницей, что корневой каталог обозначается литерой устройства с последующим двоеточием, а в качестве разделителя используется символ « \ » («обратный слэш»).
4Это отличается от технологии, применяемой в Windows или Amiga, где для каждого устройства, на котором есть файловая система, используется свой корневой каталог, обозначенный литерой, например « a », « c », « d » и т. д.
Linux.yaroslavl.ru
Наилучший путь понять “как это работает” это рассматривать на практическом примере, что мы и собираемся здесь сделать. Предположим вы только что приобрели новый жесткий диск и на нем нет никаких разделов. Ваш раздел Mandrake Linux полон до отказа и вместо того, чтобы начинать все сначала, вы решаете перенести целый раздел древовидной структуры на новый диск. Так как новый диск очень большой, вы решаете перенести самый большой каталог на него: /usr. Но сначала немного теории.
Принципы
Как мы уже отмечали в Руководство по Установке, каждый жесткий диск разделен на несколько разделов, каждый из которых содержит файловую систему. В то время как Windows назначает букву каждой из своих файловых систем (конечно только для тех, которые распознает), GNU/Linux имеет уникальную древовидную структуру файлов, и каждая файловая система примонтирована в одно местоположение в древовидной структуре.
Также как Windows необходим “C: drive”, GNU/Linux должна иметь возможность где-нибудь примонтировать корень (root) своей файловой системы (/), фактически в разделе, который содержит корневую файловую систему . Как только корень примонтирован, вы можете монтировать другие файловые системы древовидной структуры в различные точки монтирования. Любой каталог ниже корневой структуры может работать как точка монтирования. Обратите внимание, что вы можете монтировать одну и ту же файловую систему несколько раз.
Это дает большую гибкость конфигурации. В случае веб-сервера, например, обычное дело выделить целый раздел под каталог, в котором размещаются данные веб-сервера. В общем случае каталог, содержащий эти данные это /var/www. Следовательно, это может работать как точка монтирования раздела. Вы можете посмотреть в Рисунок 8.1. Еще не примонтированная файловая система и Рисунок 8.2. Файловая система теперь примонтирована ситуацию в системе до и после монтирования файловой системы.
Рисунок 8.1. Еще не примонтированная файловая система
Рисунок 8.2. Файловая система теперь примонтирована
Как вы себе можете представить, это дает множество преимуществ: древовидная структура всегда будет одинаковой, и это распространяется как на одну так и на множество файловых систем. [15] . Всегда можно физически перенести ключевую часть древовидной структуры на другой раздел, когда кончается дисковое пространство, что мы и собираемся сделать здесь.
Есть две вещи, которые вам надо знать о точках монтирования:
- каталог, который работает как точка монтирования должен существовать;
- и этот каталог предпочтительно должен быть пустым : если в каталоге, который выбран как точка монтирования, будут находиться файлы и подкаталоги, они просто будут “скрыты” вновь примонтированной файловой системой и не будут доступны до тех пор, пока вы не отмонтируете файловую систему.
[15] GNU/Linux может управлять 64 файловыми системами одновременно.
Пред. | Уровень выше | След. |
/etc: Конфигурационные Файлы | Начало | Разделение Жесткого Диска, Форматирование Разделов |
Смотрим точки монтирования в Linux
Известное отличие Linux от Windows заключется в предоставлении пользователям возможности прозрачно управлять монтированием разделов диска. В свою очередь жто дает право управлять гибким образом настроить структуру каталогов, использовать несколько файловых систем, где каждая будет выполнять свое предназначение.
Благодаря такой возможности, пользователь имеет возможность переустановить операционную систему и не потерять пользовательские файлы, обращаться к параметрам ядра с помощью каталогов /proc и /sys, а к блочным устройствам с помощью каталога /dev. В этой статье расскажем о точках монтирования, а также посмотрим их в Linux.
Точка монтирования — что это?
Для понимания термина точки монтирования достаточно ознакомиться с аналогией. Представим большое поле, на котором вы желаете высадить овощи. Но потребность есть не в одном, а нескольких сортах, например, картофеля. Чтобы реализовать задачу, поле необходимо поделить на участки, на каждом из них высадить нужный сорт. Когда приходит время собирать урожай, независимо от сорта, картошку следует выкопать и вывезти, а к полю идёт только одна дорога и вся полученная картошка будет вывезена именно по этой дороге. То есть тоже независимо от того, с какого участка был собран урожай.
Теперь перейдем ближе к делу. Допустим, у вас есть один объемный жесткий диск, на который надо записать данные. Фактически это и есть наше поле. Но нужна файловая система без журналирования для каталога /boot, отдельная файловая система для корня и для /home. Поэтому жесткий диск разбивается на разделы. Дальше эти разделы подлежат форматированию в нужную файловую систему. Как на примере различных сортов картофеля. Процесс монтирования это и есть дорога, по которой картофель вывозят с участка. На каком бы из разделов не находились данные, получить к ним доступ можно только с помощью корневого каталога /. Все разделы монтируются сюда, если не к самому корню, то в одну из папок. Такая папка и называется точкой монтирования и её содержимое во время монтирования заменяется на содержимое раздела.
Смотрим точки монтирования
Для просмотра точек монтирования необходимо использовать следующую команду:
С появлением snap и flatpack точки монтирования Linux засорены монтированием различных snap пакетов и их содержимого к файловой системе. Однако здесь можно разобрать и смонтированные жесткие диски. Чтобы отфильтровать только жесткие диски используйте программу grep:
Таким образом можно не просто посмотреть, но и настроить точки монтирования можно с помощью файла /etc/fstab.
Здесь перечислены все разделы диска, которые монтируются к системе.
Как посмотреть точки монтирования Linux
Одно из самых заметных отличий Linux от Windows, это то, что операционная система позволяет пользователям прозрачно управлять монтированием разделов диска. Это позволяет гибким образом настроить структуру каталогов, использовать несколько файловых систем, где каждая будет выполнять свое предназначение.
Благодаря такой возможности, вы можете переустановить операционную систему и не потерять пользовательские файлы, обращаться к параметрам ядра с помощью каталогов /proc и /sys, а к блочным устройствам с помощью каталога /dev. В этой статье мы разберемся что такое точки монтирования, а также как посмотреть точки монтирования в Linux.
Что такое точки монтирования в Linux?
Чтобы понять как тут всё происходит, давайте проведём аналогию. Допустим, у вас есть большое поле и вы на нём хотите посадить картошку. Но выращивать вы хотите несколько сортов. Поэтому вы делите поле на несколько участков и на каждом из них садите нужный сорт. Когда приходит время собирать урожай, независимо от сорта картошку надо выкопать и вывезти, а к полю идёт только одна дорога и вся полученная картошка будет вывезена именно по ней не зависимо от того, с какого участка она была собрана.
Допустим, у вас есть один большой жесткий диск, на который надо записать данные. Это наше поле. Но вам надо файловая система без журналирования для каталога /boot, отдельная файловая система для корня и для /home. Поэтому жесткий диск разбивается на разделы. Дальше эти разделы надо отформатировать в нужную файловую систему. Это аналогия сорта картошки. А монтирование — это аналогия дороги, по которой картошку вывозят с поля. На каком бы разделе диска или части оперативной памяти не располагались данные, получить к ним доступ вы сможете только с помощью корневого каталога /. Все разделы монтируются сюда, если не к самому корню, то в одну из папок. Такая папка и называется точкой монтирования и её содержимое во время монтирования заменяется на содержимое раздела.
Как посмотреть точки монтирования?
Для просмотра точек монтирования можно использовать команду mount. Её надо запустить без параметров:
С появлением технологии snap и flatpack, точки монтирования Linux слегка засорены монтированием различных snap пакетов и их содержимого к файловой системе, но всё же здесь можно разобрать и смонтированные жесткие диски. Чтобы отфильтровать только жесткие диски используйте утилиту grep:
mount | grep ^/dev
Не только посмотреть, но и настроить точки монтирования можно с помощью файла /etc/fstab. Здесь перечислены все разделы диска, которые монтируются к системе.
Более подробно о его настройке я писал в этой статье.
Выводы
Из этой статьи вы узнали что такое точки монтирования Linux, а также как их посмотреть и настроить. А что вы думаете по поводу них? Удобнее ли это чем в Windows? Напишите в комментариях!