使用命令 mount 的问题

Tim*_*Tim 2 mount block-device

对设备使用命令 mount 时,我想知道以下问题:

  1. 既然设备文件是挂载的参数,那么一般情况下如何知道设备的设备文件是什么?
  2. 如果设备安装到的目录尚不存在,我是否必须提前创建该目录?我看到有人说这是必需的,但是我的名为“mycd”的 CD 会自动挂载到 /media/mycd,而 /media/mycd 事先并不存在。
  3. 一个设备可以挂载到多个地方而不需要卸载吗?

感谢致敬!

Ric*_*rri 6

(您没有指定您的操作系统。我假设它是 GNU/Linux 的某种变体,一般概念也适用于其他 UNIX;细节可能不会。)

1. 一般如何知道设备的设备文件是什么?

基本上,您必须知道哪个设备文件名对应于哪个设备。

此信息的来源是 Linux 内核文档udev配置文件(查看/etc/udev)和 MAKEDEV脚本。

正确的解释在这里更长:Linux 内核通过一对数字识别设备,称为“主要”和“次要”设备号。任何具有您的 CD-ROM 设备主要和次要编号的设备文件都将被内核视为该 CD-ROM 设备;所以你可以创建(见mknod命令)一个 CD-ROM 设备/my/cdrom并使用它;同样,您可以为任何设备使用任何您喜欢的命名约定。但是,如此多的系统软件依赖于按名称查找设备,因此从“标准”更改设备名称的工作量太大。

系统上使用的实际设备名称部分是历史的结果(例如,磁盘驱动器的名称/dev/sdX/dev/hdX名称 - 有人在时代开始时开始使用这些名称并且名称被卡住了),部分是开发某些设备的人之间达成的协议的结果系统的低级部分(主要是内核、libC 和 udev)。

2. 是否需要提前创建设备挂载的目录?

是的,mount不会为您创建该目录。

您看到 CD、U 盘和其他设备的挂载点自动出现的原因/media是某个守护进程为您创建了它。(在运行 GNOME 桌面的 GNU/Linux 上,大致如下:插入 CD,创建挂载目录,挂载 CD 并可能打开文件管理器窗口。几乎所有内容都可以更改,具体取决于确切的Linux 版本和发行版。)

但是在命令行上,您必须自己创建挂载点。

3. 一个设备可以挂载到几个地方,不用卸载吗?

如果您的意思是“如何使 CD 的内容出现在文件系统的各个位置”,那么是的,您可以使用称为“绑定安装”的功能来实现。

绑定挂载可以“复制”出现在文件系统的另一个不相交部分中的文件系统上的任何目录。例如,您可以给出以下命令:

mount --bind /var/tmp /mnt
Run Code Online (Sandbox Code Playgroud)

这会将 的内容复制/var/tmp到目录中/mnt:如果您创建一个文件/var/tmp/foo,您将看到相同的文件显示为/mnt/foo.

进一步阅读

您可以在以下位置找到有关mount及其操作的更多信息:


Gil*_*il' 5

设备文件是您告诉挂载要访问的设备或其他位置的方式。所以它无法猜测。¹

几种不同类型的文件系统,你可以安装。对于磁盘支持的文件系统(通常会想到的第一种),该设备是一个块设备。它的名称通常是/dev/something,其中something部分编码要使用的磁盘驱动程序,如果该驱动程序管理多个磁盘,则使用哪个特定磁盘,以及访问磁盘的哪个部分(如果相关)。不同的 Unix 变体有不同的方式来指定设备。官方参考是您的 unix 变体的设备驱动程序手册页,通常是第 4 节:AIXFreeBSDLinuxMac OS X (第 4 节)MINIXNetBSDOpenBSDSolaris 11Unix 第 6 版。, Unix 第 8 版。, ...

在 Linux 上,这里有一些其他方法可以了解设备名称和指定设备的替代方法。其中一些在其他 unix 变体下具有类似物。

  • 在 中/proc/partitions,有一个磁盘、磁盘分区、逻辑卷和其他块设备的列表。并非所有这些都有文件系统。
  • 所有逻辑卷/dev/mapper.
  • mount命令接受文件系统标签和 UUID 代替设备名称,指定为LABEL=fooUUID=1234…代替/dev/something
  • 当设备插入系统时,udev会为其分配一个设备名称。
  • 大多数 Linux 发行版(通过 udev)在/dev/disk. 这些是相同设备的备用名称。例如在机器上,我在写这一点,设备主机我家的文件系统(这是一个LVM逻辑卷)是不同访问/dev/dm-7/dev/disk/by-id/dm-name-VolumeGroupName-LogicalVolumeName/dev/disk/by-id/dm-uuid-LVM-LongStringOfDigitsAndLetters/dev/disk/by-label/\x2fhome/dev/disk/by-uuid/SomeUUID

还有一些文件系统不是来自磁盘文件。例如,对于NFSSamba等远程文件系统,设备名称指定机器名称和该机器上的路径或共享名称(例如machinename:/shared/directory)。

许多桌面系统安排在插入新设备时发出通知,并自动安装可识别的文件系统。

¹ 但是,您可以mount通过在/etc/fstab.


mount命令要求目录(挂载点)存在。自动挂载系统通常会根据需要在进行实际挂载之前创建目录(并在卸载后删除目录)。


并非所有的 unice 都可以在本地的多个地方挂载相同的文件系统。在 Linux 下,这可以通过bind mount 来实现。在大多数unice 上 ,您可以为此使用bindfs FUSE文件系统。