Представьте, что я отформатировал корень с файловой системой ext3 в отдельном разделе, который существует на жестком диске SATA, а домашний каталог - в другом разделе btrfs, который существует на твердотельном диске Intel.
Я скачал файл из Интернета и временно сохранил его /tmp
(в корневой файловой системе), затем решил переместить его в свой домашний каталог (второй раздел).
Я чувствую болезненный процесс, который происходит в фоновом режиме, чтобы заставить такую простую mv
команду работать.
Итак, во-первых, возможно ли, чтобы root и home имели разные файловые системы? Во- вторых, предполагая , что ответ на предыдущий вопрос был «да», то как операционная система управляет всем , что переход от ext3
к , btrfs
а затем с использованием различных драйверов устройств для различных типов дисков (HDD и SSD)?
источник
Ответы:
Ответ - да, вы можете иметь любой каталог на любом устройстве с любой файловой системой, которую поддерживает ОС.
Так что вы можете иметь
/
/var
/home
/opt
и даже/home/afr0ck
на разных устройствах разные разделы, разные файловые системы.Не только вы, но это распространено. Например, всегда рекомендуется хранить
/var
и/home
на разных разделах, так/
как они, скорее всего, непреднамеренно потребляют дисковое пространство - если они заполняются, это не слишком сильно влияет на систему. Если они находятся в том же разделе, что и root, это может привести к остановке системы.И вы можете захотеть запускать разные каталоги на разных устройствах по соображениям скорости. И использовать разные файловые системы для разных целей. Например, возможно, ext4 - это то, что вам нужно для файлов ОС, поскольку они не сильно меняются, но вы можете использовать btrfs для / home, чтобы вы могли сохранять снимки для резервных копий. Это все решения, которые могут быть приняты каждым человеком для конкретного случая использования.
Часть пользовательского пространства ОС не должна понимать различные типы устройств и файловых систем. Все, что он делает, это просит ядро переместить файл, и ядро организует все оттуда. Таким образом,
mv
команда (например) не зависит от типа файловой системы и устройства. Ядро вызывает любые драйверы, необходимые для чтения и записи в разные разделы.источник
mv(1)
сначала пытаетсяrename(2)
файл. Затем он возвращается к копированию и удалению. Таким образом, попытка переименовать - вот какmv
выяснить, возможно ли это в FS-независимой манере. (rename(2)
всегда происходит сбой при перемещении между различными устройствами, независимо от того, используют ли они один и тот же драйвер файловой системы, @ afr0k.)mv
не выполняетrename(1)
команду fork / exec , она просто пытается выполнитьrename(2)
системный вызов. Там нет стандартнойrename
команды оболочки. В некоторых системах это команда переименования нескольких файлов из util-linux. Я не говорил о команде оболочки, просто как онаmv
работает внутри.Да, отдельные файловые системы (точки монтирования) могут быть разных типов файловых систем.
/proc
всегдаprocfs
файловая система и/sys
всегдаsysfs
. Временные файловые системы (иногда включающие/tmp
) часто бываютtmpfs
, и в настройках рабочей группы обычно домашние каталоги пользователя (и каталоги их рабочих продуктов) обычно являютсяnfs
или другими типами удаленных (сетевых / совместно используемых) файловых систем.Для ОС не существует специального управления. До определенного уровня, на уровне пользователя, все файловые системы выглядят одинаково, в том смысле, что
ls
список будет выглядеть примерно одинаково в любом каталоге. Помимо этого, файловые системы не взаимодействуют. Даже между двумя файловыми системами (разделами) на одном физическом диске одного типа файловой системы нет связи 1 . Например, перемещение файла из одной файловой системы (точки монтирования) в другую всегда включает в себя создание копии и удаление оригинала. Не имеет значения, если они являются разделами на разных дисках. Не имеет значения, является ли один из них HDD, а другой - SSD. Неважно, если одинext3
и одинbtrfs
, Не имеет значения, является ли он внутренним (внутри корпуса компьютера), а другой - внешним (несколько дюймов снаружи, подключенным кабелем) - или удаленным (доступ по сети).Говоря о сети, это немного аналогично
ssh
. Он читает с клавиатуры и отправляет введенные вами символы в сеть. Одновременно он читает из сети и отображает результаты на экране.Или подумайте так: представьте, что вы разговариваете по телефону, и вы посредничаете в разговоре между человеком на другом телефоне и другим человеком в комнате. Это не большое дело.
________
1, за исключением символических ссылок - но они могут пересекать границы файловой системы.
источник
/tmp
на tmpfs? Я также подумал, что это в значительной степени стандартная практика, так как вы всегда можете вставить материал/var/tmp
(хотя это не очищается при загрузке). Я не эксперт по кросс-дистрибутивам по умолчанию, просто Debian / Ubuntu и Arch. С этими плюсами RedHat, который охватывает большую часть установленных систем Linux (но не такую большую, как большая часть всех дистрибутивов).tmpfs
Linux в последнее время только в последние 5-7 лет или около того. например, Fedora обсуждала изменения в своей вики ~ 2012, и я считаю, что они были представлены в Debian Wheezy.