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

10

Представьте, что я отформатировал корень с файловой системой ext3 в отдельном разделе, который существует на жестком диске SATA, а домашний каталог - в другом разделе btrfs, который существует на твердотельном диске Intel.

Я скачал файл из Интернета и временно сохранил его /tmp(в корневой файловой системе), затем решил переместить его в свой домашний каталог (второй раздел).

Я чувствую болезненный процесс, который происходит в фоновом режиме, чтобы заставить такую ​​простую mvкоманду работать.

Итак, во-первых, возможно ли, чтобы root и home имели разные файловые системы? Во- вторых, предполагая , что ответ на предыдущий вопрос был «да», то как операционная система управляет всем , что переход от ext3к , btrfsа затем с использованием различных драйверов устройств для различных типов дисков (HDD и SSD)?

Карим Манауй
источник
3
Это сделано со слоями. Уровень файловой системы встроен в слой блочных устройств. Вы можете использовать любую подходящую файловую систему на уровне файловой системы. Вы можете использовать любое подходящее блочное устройство на этом уровне блочных устройств. Каждая точка монтирования может иметь собственную файловую систему и устройство.
опилки
@sawdust, это очень интересная вещь, на которую вы указали, уровень файловой системы и уровень блочных устройств. Как они связаны? Любые чтения будут полезны.
Карим Манауй
Я не очень разбираюсь в файловых системах, но я полагаю, что процесс копирования не будет отличаться от копирования файлов на внешний диск FAT32
Blaine
Почему вы все еще используете ext3 в 2017 году, когда так просто перейти на ext4?
Дэвид Фёрстер

Ответы:

25

Ответ - да, вы можете иметь любой каталог на любом устройстве с любой файловой системой, которую поддерживает ОС.

Так что вы можете иметь / /var /home /optи даже /home/afr0ckна разных устройствах разные разделы, разные файловые системы.

Не только вы, но это распространено. Например, всегда рекомендуется хранить /varи /homeна разных разделах, так /как они, скорее всего, непреднамеренно потребляют дисковое пространство - если они заполняются, это не слишком сильно влияет на систему. Если они находятся в том же разделе, что и root, это может привести к остановке системы.

И вы можете захотеть запускать разные каталоги на разных устройствах по соображениям скорости. И использовать разные файловые системы для разных целей. Например, возможно, ext4 - это то, что вам нужно для файлов ОС, поскольку они не сильно меняются, но вы можете использовать btrfs для / home, чтобы вы могли сохранять снимки для резервных копий. Это все решения, которые могут быть приняты каждым человеком для конкретного случая использования.

Часть пользовательского пространства ОС не должна понимать различные типы устройств и файловых систем. Все, что он делает, это просит ядро ​​переместить файл, и ядро ​​организует все оттуда. Таким образом, mvкоманда (например) не зависит от типа файловой системы и устройства. Ядро вызывает любые драйверы, необходимые для чтения и записи в разные разделы.

Павел
источник
7
Полезно указать, что mv(1)сначала пытается rename(2)файл. Затем он возвращается к копированию и удалению. Таким образом, попытка переименовать - вот как mvвыяснить, возможно ли это в FS-независимой манере. ( rename(2)всегда происходит сбой при перемещении между различными устройствами, независимо от того, используют ли они один и тот же драйвер файловой системы, @ afr0k.)
Питер Кордес
1
@PeterCordes да, я не знал, что переименование было чем-то особенным. Я всегда использовал mv для переименования вещей.
5
@stanri: mvне выполняет rename(1)команду fork / exec , она просто пытается выполнить rename(2)системный вызов. Там нет стандартной renameкоманды оболочки. В некоторых системах это команда переименования нескольких файлов из util-linux. Я не говорил о команде оболочки, просто как она mvработает внутри.
Питер Кордес
Даже / usr может находиться в другом разделе, поэтому некоторые действительно важные вещи находятся в / bin / lib и / sbin - все ли установщики будут поддерживать это другой вопрос.
rackandboneman
7

Да, отдельные файловые системы (точки монтирования) могут быть разных типов файловых систем.  /procвсегда procfsфайловая система и /sysвсегда sysfs. Временные файловые системы (иногда включающие /tmp) часто бывают tmpfs, и в настройках рабочей группы обычно домашние каталоги пользователя (и каталоги их рабочих продуктов) обычно являются nfsили другими типами удаленных (сетевых / совместно используемых) файловых систем.

Для ОС не существует специального управления. До определенного уровня, на уровне пользователя, все файловые системы выглядят одинаково, в том смысле, что lsсписок будет выглядеть примерно одинаково в любом каталоге. Помимо этого, файловые системы не взаимодействуют. Даже между двумя файловыми системами (разделами) на одном физическом диске одного типа файловой системы нет связи 1 . Например, перемещение файла из одной файловой системы (точки монтирования) в другую всегда включает в себя создание копии и удаление оригинала. Не имеет значения, если они являются разделами на разных дисках. Не имеет значения, является ли один из них HDD, а другой - SSD. Неважно, если один ext3и одинbtrfs, Не имеет значения, является ли он внутренним (внутри корпуса компьютера), а другой - внешним (несколько дюймов снаружи, подключенным кабелем) - или удаленным (доступ по сети).

Говоря о сети, это немного аналогично ssh. Он читает с клавиатуры и отправляет введенные вами символы в сеть. Одновременно он читает из сети и отображает результаты на экране.

Или подумайте так: представьте, что вы разговариваете по телефону, и вы посредничаете в разговоре между человеком на другом телефоне и другим человеком в комнате. Это не большое дело.
________
1, за исключением символических ссылок - но они могут пересекать границы файловой системы.

G-Man говорит: «Восстанови Монику»
источник
1
Я в основном согласен с вашим ответом, но на самом деле / ​​tmp не является типичным для tmpfs (хотя может быть установлен таким образом на некоторых дистрибутивах) - обычно он не находится в корневом разделе и очищается при загрузке. Дистрибутивы Ubuntu и Redhat используют / dev / shm в качестве tmpfs,
davidgo
Я был сбит с толку. Я обновил свой ответ.
G-Man говорит «Восстановить Монику»
1
@davidgo: Какие дистрибутивы Linux не используются по умолчанию /tmpна tmpfs? Я также подумал, что это в значительной степени стандартная практика, так как вы всегда можете вставить материал /var/tmp(хотя это не очищается при загрузке). Я не эксперт по кросс-дистрибутивам по умолчанию, просто Debian / Ubuntu и Arch. С этими плюсами RedHat, который охватывает большую часть установленных систем Linux (но не такую ​​большую, как большая часть всех дистрибутивов).
Питер Кордес
(игнорируя встроенные системы) Я регулярно использую Centos и Ubuntu - оба используют диск для / tmp. - Я почти уверен, что это означает, что Debian, Redhat и Mint будут следовать одному соглашению. У моего устройства Android нет / tmp
davidgo
2
@PeterCordes Появление tmpfsLinux в последнее время только в последние 5-7 лет или около того. например, Fedora обсуждала изменения в своей вики ~ 2012, и я считаю, что они были представлены в Debian Wheezy.
Боб