Tim*_*Tim 2 mount block-device
对设备使用命令 mount 时,我想知道以下问题:
感谢致敬!
(您没有指定您的操作系统。我假设它是 GNU/Linux 的某种变体,一般概念也适用于其他 UNIX;细节可能不会。)
基本上,您必须知道哪个设备文件名对应于哪个设备。
此信息的来源是
Linux 内核文档、udev
配置文件(查看/etc/udev
)和
MAKEDEV
脚本。
正确的解释在这里更长:Linux 内核通过一对数字识别设备,称为“主要”和“次要”设备号。任何具有您的 CD-ROM 设备主要和次要编号的设备文件都将被内核视为该 CD-ROM 设备;所以你可以创建(见mknod
命令)一个 CD-ROM 设备/my/cdrom
并使用它;同样,您可以为任何设备使用任何您喜欢的命名约定。但是,如此多的系统软件依赖于按名称查找设备,因此从“标准”更改设备名称的工作量太大。
系统上使用的实际设备名称部分是历史的结果(例如,磁盘驱动器的名称/dev/sdX
和/dev/hdX
名称 - 有人在时代开始时开始使用这些名称并且名称被卡住了),部分是开发某些设备的人之间达成的协议的结果系统的低级部分(主要是内核、libC 和 udev)。
是的,mount不会为您创建该目录。
您看到 CD、U 盘和其他设备的挂载点自动出现的原因/media
是某个守护进程为您创建了它。(在运行 GNOME 桌面的 GNU/Linux 上,大致如下:插入 CD,创建挂载目录,挂载 CD 并可能打开文件管理器窗口。几乎所有内容都可以更改,具体取决于确切的Linux 版本和发行版。)
但是在命令行上,您必须自己创建挂载点。
如果您的意思是“如何使 CD 的内容出现在文件系统的各个位置”,那么是的,您可以使用称为“绑定安装”的功能来实现。
绑定挂载可以“复制”出现在文件系统的另一个不相交部分中的文件系统上的任何目录。例如,您可以给出以下命令:
mount --bind /var/tmp /mnt
Run Code Online (Sandbox Code Playgroud)
这会将 的内容复制/var/tmp
到目录中/mnt
:如果您创建一个文件/var/tmp/foo
,您将看到相同的文件显示为/mnt/foo
.
您可以在以下位置找到有关mount
及其操作的更多信息:
设备文件是您告诉挂载要访问的设备或其他位置的方式。所以它无法猜测。¹
有几种不同类型的文件系统,你可以安装。对于磁盘支持的文件系统(通常会想到的第一种),该设备是一个块设备。它的名称通常是/dev/something
,其中something
部分编码要使用的磁盘驱动程序,如果该驱动程序管理多个磁盘,则使用哪个特定磁盘,以及访问磁盘的哪个部分(如果相关)。不同的 Unix 变体有不同的方式来指定设备。官方参考是您的 unix 变体的设备驱动程序手册页,通常是第 4 节:AIX、FreeBSD、Linux、Mac OS X (第 4 节)、MINIX、NetBSD、OpenBSD、Solaris 11,Unix 第 6 版。, Unix 第 8 版。, ...
在 Linux 上,这里有一些其他方法可以了解设备名称和指定设备的替代方法。其中一些在其他 unix 变体下具有类似物。
/proc/partitions
,有一个磁盘、磁盘分区、逻辑卷和其他块设备的列表。并非所有这些都有文件系统。/dev/mapper
.mount
命令接受文件系统标签和 UUID 代替设备名称,指定为LABEL=foo
或UUID=1234…
代替/dev/something
。/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
。还有一些文件系统不是来自磁盘文件。例如,对于NFS或Samba等远程文件系统,设备名称指定机器名称和该机器上的路径或共享名称(例如machinename:/shared/directory
)。
许多桌面系统安排在插入新设备时发出通知,并自动安装可识别的文件系统。
¹
但是,您可以mount
通过在/etc/fstab
.
该mount
命令要求目录(挂载点)存在。自动挂载系统通常会根据需要在进行实际挂载之前创建目录(并在卸载后删除目录)。
并非所有的 unice 都可以在本地的多个地方挂载相同的文件系统。在 Linux 下,这可以通过bind mount 来实现。在大多数unice 上 ,您可以为此使用bindfs FUSE文件系统。