связь между именем устройства и точкой монтирования

Даже если у нас есть устройство, например, /dev/sdb1 точка монтирования устройства отличается, например, от /media/user/sth. Теперь я сбит с толку и мне любопытно узнать, какова связь между фактическим именем устройства и точкой монтирования, потому что оба из dev и /media/user/sth представляют собой две разные папки в системе.

Итак, почему имя устройства связано с папкой?

5
задан 14 December 2017 в 06:56

1 ответ

TL; DR : поскольку файловая система /dev/ и точка монтирования устройства имеют очень минимальное отношение и различаются по своему назначению.

Какова цель файловой системы / dev?

Цитировать ответ Жиля :

Почти все файлы в / dev являются файлами устройств. В то время как при чтении и записи в обычный файл хранятся данные на диске или в другой файловой системе, доступ к файлу устройства связывается с драйвером в ядре, которое обычно, в свою очередь, связывается с частью аппаратного обеспечения (аппаратное устройство, отсюда и название).

Вы когда-нибудь слышали поговорку «все это файл в * nix»? Ну, вот как работает /dev файловая система - она ​​позволяет вам иметь «файл», представляющий конкретную часть оборудования, подключенного к вашему компьютеру. Если у вас подключена мышь, например, она будет отображаться как /dev/input/mouse0; если у вас подключен жесткий диск, он, скорее всего, будет отображаться как /dev/sd<LETTER><NUMBER> (и следует отметить, что обычно он используется для представления блочных устройств, которые позволяют считывать данные в блоках с некоторым количеством байтов и обычно использовать протокол SCSI, хотя для новых накопителей NVM может отображаться как /dev/nvme0n1).

И с такими устройствами можно взаимодействовать. Обычно люди делают резервные копии с dd if=/dev/sda1 of=/dev/sdc1 или чем-то длинным. Если у вас есть Arduino или Raspberry Pi, подключенные через последовательный порт, они будут отображаться как последовательные консоли /dev/ttyUSB0 или /dev/ttyACM0, и вы можете записывать в них байты для связи с устройством, хотя более практичным является использование чего-то вроде screen или byobu или PuTTY программного обеспечения. Но это все - вы не можете просто просматривать файлы на устройстве простым способом.

Что такое файловая система?

Файловая система - это способ организации данных на запоминающем устройстве некоторой формы. И есть много файловых систем . Если у вас есть жесткий диск от Mac, данные были организованы на этот диск с файловой системой HPFS или APFS; если он прибывает из Windows - это может использовать файловую систему NTFS; если это происходит из Linux - обычно это будет форма файловой системы ext; BSD или Solaris могут использовать zfs, и так далее, и так далее. Вы даже можете смонтировать ISO-файл резервной копии и связать его с папкой. Все они имеют свои преимущества, но основная идея заключается в том, что данные организованы определенным логическим образом и позволяют пользователю работать с отдельными файлами, а не с байтами или блоками данных. И общая черта состоит в том, что все файловые системы должны иметь точку монтирования, логический корень дерева файловых систем папок и файлов.

И вот тут-то и появляется /dev. На самом деле /dev - это виртуальная файловая система, смонтированная в папке /dev, в том смысле, что она существует только во время работы вашей машины; как только вы закроете, все в этом каталоге исчезнет. То же самое с каталогами /proc и /sys - представления процессов и физических устройств существуют только для времени работы системы. Вот почему вы не можете сделать /dev точкой монтирования для вашего USB-накопителя или жесткого диска - это уже точка монтирования для чего-то другого, и, кроме того, это нарушит иерархию файловой системы Unix стандарта.

Хотя можно создать каталог в /dev/my_mountpoint и смонтировать там жесткий диск (с правами root), но он избыточен и соответствует уже упомянутому стандарту иерархии файловой системы Unix.

Как связаны устройства и точки монтирования?

Мы могли бы сравнить веб-сайты и диски. С веб-сайтом у вас есть набор ссылок на определенные страницы. Но технически сайт представляет собой набор данных, хранящихся где-то на сервере. Та же идея здесь - /dev/sda1 может содержать данные и файлы, но точка монтирования позволяет вам логически взаимодействовать с этими вещами, и, зная путь к файлу, вы можете легко перейти к нему так же, как со ссылками на веб-сайте, к которому вы переходите страницы, которые вам нужны.

С технической точки зрения точка монтирования и устройство управляются несколькими файлами. /etc/fstab позволит вам указать устройство ( либо по ссылке /dev, либо по номеру UUID), а также к тому, где его монтировать во время загрузки. /etc/mtab, /proc/mounts, /proc/self/mountinfo и /proc/self/mountstats скажут вам, где устройства в настоящее время установлены. Теперь в Ubuntu графический интерфейс пользователя допускает автоматическое монтирование (в прошлом это был Unity, а теперь GNOME, но в любом случае этим все еще нужно было управлять с помощью той же схемы GSettings ). Это, в свою очередь, взаимодействует с системой UDisks2, которая затем подключает ваш USB или жесткий диск к папке /media; другими словами, имеется программное обеспечение, которое автоматически связывает ваш USB-накопитель с точкой монтирования.

Следует также отметить, что некоторые программы, такие как df, могут работать только на смонтированных файловых системах, т. Е. df покажет использование только для тех дисков и разделов, которые смонтированы. Напротив, во многих случаях желательно, чтобы файловая система была размонтирована для утилиты проверки файловой системы fsck или утилит parted / Gparted (поскольку они используются для изменения размера, а изменение размера смонтированного раздела может привести к потере данных). Такие утилиты, как findmnt, позволят вам найти, где монтируется конкретное устройство (которое я лично использую в своей подсказке оболочки, чтобы узнать, на каком дисководе я сейчас работаю).

Заключение

Вероятно, это все еще не имеет большого смысла, и это понятно. Скажем так, это конвенция. Не обязательно вещь Unix, потому что Windows делает это аналогичным образом , с похожей терминологией. Это просто то, как строятся компьютеры и что имело значение для инженеров, когда они проектировали системы много лет назад. Но эй - это работает, верно?

5
ответ дан 14 December 2017 в 06:56

Другие вопросы по тегам:

Похожие вопросы: