отношения между именем устройства и точкой подключения

5

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

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

    
задан mathmaniage 14.12.2017 в 04:50
источник

1 ответ

5

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, GUI позволяет автоматически монтировать (в прошлом это был Unity, теперь GNOME, но в любом случае, который должен по-прежнему управляться та же схема GSettings ). Это, в свою очередь, взаимодействует с системой UDisks2 , которая затем монтирует ваш USB или жесткий диск в папку /media ; другими словами, есть программное обеспечение, которое автоматически связывает ваш USB-накопитель с точкой монтирования.

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

Заключение

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

    
ответ дан Sergiy Kolodyazhnyy 16.12.2017 в 10:43
источник