Какие точки монтирования существуют в типичной системе Linux?

32

У меня есть 2 вопроса.

  1. Во время установки Linux мы указываем пространство памяти для 2 точек монтирования - root и swap. Существуют ли другие точки монтирования, созданные без уведомления пользователей?
  2. Верно ли это утверждение: «монтирование включается в образ только при работе с разными разделами. То есть вы не можете смонтировать, скажем, / proc, если это не другой раздел»?
Джон
источник
1
+1 к названию вопроса! Если бы все новички так невинно спросили ...
Калеб
Хаха, именно мои мысли тоже! +1.
Boehj
2
@ Джон: Задавать два вопроса в одном не рекомендуется. Поскольку теперь есть ответы, которые охватывают оба вопроса, я полагаю, что мы позволим им сдвинуться с места, но в следующий раз, пожалуйста, задавайте отдельные вопросы отдельно. Ваша трудность в поиске хорошего заголовка (нет, ваш заголовок не был хорошим резюме вашего вопроса) был из-за попытки объединить несколько вопросов в один.
Жиль "ТАК - перестать быть злым"

Ответы:

47

За вашими вопросами стоят неправильные представления.

  1. Своп не установлен.
  2. Монтаж не ограничен перегородками.

Перегородки

Раздел является slice¹ дискового пространства , который , посвященный конкретной цели. Вот некоторые общие цели для разделов.

  • Файловая система , то есть файлы организованы в виде дерева каталогов и хранятся в формате , например, ext2, ext3, FFS, FAT, NTFS, ...
  • Пространство подкачки, т.е. дисковое пространство, используемое для подкачки (и хранения изображений гибернации ).
  • Прямой доступ к приложению. Некоторые базы данных хранят свои данные непосредственно в разделе, а не в файловой системе, чтобы получить небольшую производительность. (Файловая система в любом случае является своего рода базой данных.)
  • Контейнер для других разделов. Например, PC расширенный раздел или диск ломтика содержащие разделы BSD, или LVM физического объема ( в конечном счете , содержащий логические тома , которые сами по себе могут быть рассмотрены разделы), ...

Файловые

Файловые системы представляют информацию в иерархической структуре. Вот некоторые распространенные виды файловых систем:

  • Дисковые файловые системы, такие как ext2, ext3, FFS, FAT, NTFS,…
    • Поддержка не обязательно должна быть непосредственно на разделе диска, как показано выше. Например, это может быть логический том LVM или монтирование цикла .
  • Поддерживаемые памятью файловые системы, такие как Solaris и Linux tmpfs .
  • Файловые системы, которые представляют информацию из ядра, например, procи sysfsв Linux.
  • Сетевые файловые системы, такие как NFS , Samba ,…
  • Файловые системы, поддерживаемые приложениями, из которых FUSE имеет большую коллекцию . Файловые системы, поддерживаемые приложениями, могут делать практически все, что угодно: сделать так, чтобы FTP-сервер отображался как файловая система, дать альтернативное представление о файловой системе, где имена файлов нечувствительны к регистру или преобразованы в другую кодировку, показать содержимое архива, как если бы оно было каталогами,…

монтаж

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

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

  • Например, корневая файловая система монтируется во время загрузки (перед тем, как ядро ​​запускает какой-либо процесс²) в /каталог.
  • Файловая система proc, в которой смонтированы некоторые варианты Unix, такие как Solaris и Linux, предоставляют информацию о процессах /proc, чтобы /proc/42/environобозначить файл /42/environв файловой системе proc, который (по крайней мере в Linux) содержит представление среды процесса, доступное только для чтения. номер 42
  • Если у вас есть отдельная файловая система, например, for /home, то /home/john/myfile.txtобозначает файл, путь которого находится /john/myfile.txtв корне домашней файловой системы.

В Linux одна и та же файловая система может быть доступна по нескольким путям благодаря bind mounts .

Типичные файловые системы Linux имеют много смонтированных файловых систем. (Это пример; разные дистрибутивы, версии и настройки приведут к монтированию разных файловых систем.)

  • /: корневая файловая система, смонтированная до того, как ядро ​​загрузит первый процесс. Загрузчик сообщает ядру, что использовать в качестве корневой файловой системы (обычно это раздел диска, но это может быть что-то еще, например, экспорт NFS).
  • /proc: файловая система proc , с информацией о процессах и ядре.
  • /sys: файловая система sysfs с информацией об аппаратных устройствах.
  • /dev: файловая система в памяти, где файлы устройств автоматически создаются udev на основе доступного оборудования.
  • /dev/pts: специальная файловая система, содержащая файлы устройств для запуска эмуляторов терминала .
  • /dev/shm: файловая система в памяти, используемая для внутренних целей стандартной библиотекой системы.
  • В зависимости от того, какие системные компоненты у вас запущены, вы можете увидеть другие файловые системы специального назначения, такие как binfmt_misc(используемые подсистемой ядра внешнего формата исполняемых файлов ), fusectl(используемые FUSE ), nfsd(используемые сервером ядра NFS),…
  • Любая файловая система, явно указанная в /etc/fstab(и не помеченная noauto), монтируется как часть процесса загрузки.
  • Любая файловая система, автоматически монтируемая HAL (или эквивалентной функциональностью) после вставки съемного устройства, такого как USB-ключ.
  • Любая файловая система явно смонтирована с помощью mountкоманды.

Speaking Неформально говоря здесь.
² Initrd и тому подобное выходят за рамки этого ответа.
³ Это не похоже на Windows, которая имеет отдельную иерархию для каждой файловой системы, например, c:или \\hostname\sharename.

Жиль "ТАК - перестань быть злым"
источник
5
+10 Жиль, где ты находишь время? Мой единственный комментарий заключается в том, что я должен дать людям немного расслабиться в вопросе подкачки, потому что это слишком странно, когда мой раздел подкачки указан в списке, /etc/fstabкогда его не нужно монтировать.
Калеб
безусловно, глупый вопрос ... но не могу остановиться. Вы сказали: «Монтирование связывает каталог с корнем файловой системы». Так где же находится каталог "/"?
Джон
2
@John: Совсем не глупый вопрос, слова «файловая система» и «корень» имеют здесь два разных значения: есть отдельные файловые системы (каждая со своим корнем), и есть вся иерархия каталогов (со своим корнем, /каталогом) , Я перефразировал эту часть своего ответа, надеюсь, теперь это должно быть понятнее.
Жиль "ТАК - перестань быть злым"
Этот ответ невероятно полезен - он энциклопедический. Я тоже хотел бы сделать +10 здесь. Потрясающий ответ.
Boehj
13
  1. В каждом дистрибутиве Linux есть собственная схема разделов по умолчанию; некоторые из них используют десятки разделов, некоторые только один. 3 и 4 - довольно распространенные механизмы (/ boot, /, swap и / home). Некоторые старые макеты часто содержали / var на отдельном разделе, а экстремальные системы и все в / var / * и / opt / * на отдельных разделах! Лучшее обобщение, которое я могу сделать в ответ на ваш вопрос, заключается в том, что в мире Unix ничего не делается без уведомления пользователей или возможности изменить это !
  2. Вы можете монтировать вещи, которые не являются разделами. Например, / proc обычно не является разделом, это псевдофайловая система, предоставляемая ядром, которая позволяет вам читать и записывать данные о запущенных процессах, как если бы они были файлами. Вы также можете монтировать файлы (например, ISO), как если бы они были дисками с использованием устройства обратной связи, связывать папки монтирования с другими местами и выполнять различные другие приемы ниндзя.
Калеб
источник
1
Все разделы, которые автоматически монтируются при загрузке, находятся в /etc/fstab. Если вы добавите раздел там, он будет там при следующей загрузке.
LawrenceC