设备名与挂载点的关系

设备名与挂载点的关系

即使我们有一个名为 eg 的设备,/dev/sdb1该设备的挂载点对于 eg 也是不同的/media/user/sth。现在我很困惑,也很好奇想知道实际设备名称和挂载点之间的关系,因为 和dev都是/media/user/sth系统上的两个不同的文件夹。

那么,为什么设备名称与文件夹相关联?

答案1

总结:因为/dev/文件系统和设备的挂载点关系很小,而且它们的用途不同。

/dev 文件系统的用途是什么?

去引用Gilles 的回答

/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,您可以向其中写入字节以与设备通信,尽管更实际的是使用screenbyobuPuTTY软件之类的东西。但就是这样 - 您无法以简单的方式真正查看设备上的文件。

什么是文件系统?

文件系统是数据在某种形式的存储设备上的组织方式。许多文件系统.如果您的硬盘来自 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将允许您查找特定设备的安装位置(我个人在 shell 提示符中使用它来了解我当前所在的磁盘驱动器)。

结论

这可能仍然没有太多意义,但这是可以理解的。我们只能说,这是一种惯例。不一定是 Unix 的事情,因为 Windows 就是这样的类似地,使用类似的术语。这只是计算机的构造方式,也是工程师多年前设计系统时所理解的。但是嘿 - 它有效,对吧?

相关内容