当使用命令挂载设备时,我想知道以下问题:
- 既然设备文件是挂载的一个参数,那么如何知道设备的设备文件一般是什么?
- 如果设备安装的目录尚不存在,我是否必须提前创建该目录?我看到据说这是必需的,但是我的名为“mycd”的 CD 被自动安装到 /media/mycd,而该 CD 事先并不存在。
- 一个设备可以安装到多个地方而不需要卸载吗?
感谢致敬!
答案1
(您没有指定您的操作系统。我假设它是 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. 是否需要提前创建设备挂载目录?
是的,山不会为您创建该目录。
您看到 CD、USB 记忆棒和其他设备的挂载点自动出现的原因/media
是某些守护进程已为您创建了该挂载点。 (在运行 GNOME 桌面的 GNU/Linux 上,大致流程如下:插入 CD,创建安装目录,安装 CD,并且可能打开文件管理器窗口。几乎所有内容都可以更改,具体取决于具体情况Linux 版本和发行版。)
但在命令行上,您必须自己创建挂载点。
3. 一个设备可以挂载到多个地方而不需要卸载吗?
如果您的意思是“如何使 CD 的内容出现在文件系统的各个位置”,那么是的,您可以使用称为“绑定安装”的功能来做到这一点。
绑定挂载可以将文件系统上的任何目录“复制”到文件系统的另一个不相交的部分中。例如,您可以发出命令:
mount --bind /var/tmp /mnt
这会将 的内容复制/var/tmp
到目录中/mnt
:如果您创建一个文件/var/tmp/foo
,您将看到与 相同的文件/mnt/foo
。
进一步阅读
您可以mount
在以下位置找到有关其操作的更多信息:
答案2
设备文件是您告诉挂载您想要访问的设备或其他位置的方式。所以它无法猜测。
有您可以挂载几种不同类型的文件系统。对于磁盘支持的文件系统(通常想到的第一种),该设备是块设备。它的名称通常是/dev/something
,其中该something
部分对要使用的磁盘驱动程序进行编码,如果该驱动程序管理多个磁盘,则使用哪个特定磁盘,以及要访问磁盘的哪一部分(如果相关)。不同的 UNIX 变体有不同的设备指定方式。官方参考是您的 UNIX 变体的设备驱动程序手册页,通常是第 4 部分:AIX,自由BSD,Linux,Mac OS X(第 4 节),迷你X,网络BSD,开放BSD,索拉里斯 11,Unix 第六版。,Unix 第 8 版。, …
在 Linux 上,以下是一些查找设备名称的其他方法以及指定设备的替代方法。其中一些在其他 UNIX 变体下有类似的东西。
- 在 中
/proc/partitions
,有磁盘、磁盘分区、逻辑卷和其他块设备的列表。并非所有这些都有文件系统。 - 全部逻辑卷在 中有一个条目
/dev/mapper
。 - 该
mount
命令接受文件系统标签和 UUID 来代替设备名称,指定为LABEL=foo
或UUID=1234…
代替/dev/something
。 - 当设备插入系统时,乌德夫为其分配一个设备名称。
- 大多数 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
还有一些文件系统不是来自磁盘文件。例如,对于远程文件系统,例如网络文件系统或者桑巴舞,设备名称指定机器名称以及该机器上的路径或共享名称(例如machinename:/shared/directory
)。
许多桌面系统都会在插入新设备时发出通知,并自动挂载可识别的文件系统。
1
但是,您可以通过mount
在/etc/fstab
。
该mount
命令要求目录(挂载点)存在。自动安装系统通常会在实际安装之前根据需要创建目录(并在卸载后删除该目录)。
并非所有 unice 都可以在多个地方本地挂载相同的文件系统。在 Linux 下,这可以通过绑定挂载。在大多数 unice 上,您可以使用绑定文件系统 保险丝文件系统。