什么是“mount”?我有一种直觉,它的意思是“使数据存储可访问”,但它到底是什么意思?请说明“磁盘可访问”和“磁盘已安装”的不同情况”。
答案1
好吧,让我们回到基础:
当您插入存储设备(例如闪存驱动器)时,Linux 内核会在 /dev 目录中为其创建一个特殊文件。您的所有设备都由其中一个文件表示。
当此设备未安装时,您无法访问/读取/写入它。它就像“待机”模式,已准备好使用,但尚未被使用。
挂载设备时,必须指定挂载点。对于使用 Windows 的用户来说,这是一个非常令人困惑的概念。在 Windows 中,每个存储设备都有自己的根目录。在 Linux 中,它们始终挂载在一个根目录中。
挂载存储设备基本上就是将其从“待机”模式“打开”。它可以通过指定的挂载点进行访问。
/mnt 目录的存在是为了让您能够将东西挂载到其中。在某些发行版(如 Ubuntu)中,还有一个 /media 目录,用于同样的目的。
答案2
为了简单起见,我将这个答案限制在常见的存储设备,如磁盘和闪存驱动器。
当你插入设备时,其驱动程序会将其作为设备节点访问,对于用户程序来说,它看起来像一个文件:例如/dev/sda
。现在磁盘是已经可访问。您可以读取和写入它。下面是一个示例,说明如何以十六进制+ASCII 格式查看其 MBR(前 512 个字节):
sudo head -c 512 /dev/sda | xxd -g1
但是如果你的设备上有文件,并且你想访问它们,这种低级的查看方式就不太令人满意了。你需要一个文件系统驱动程序。为此,您可以使用实用程序安装设备mount
。为了更明显,我将在以下命令中明确指定文件系统(假设我做出了正确的选择ext4
;如果没有,mount
将告诉您):
sudo mount /dev/sda1 /mnt/ -t ext4
此后,您的设备将以/mnt/
用户程序期望的格式显示:文件和目录 - 而不仅仅是普通的扇区。
你可能想知道为什么我在上面的命令中使用了sda1
而不是。这是因为在文件系统级别和普通扇区级别之间有一小层sda
分割,这里sda1
表示设备上的第一个分区sda
。
答案3
您对 Windows(或 — 呃! — DOS)有多熟悉?如果您对其中任何一个都已经超越了绝对新手的身份,那么您就会知道您的主系统辅助存储设备(硬盘或 SSD)称为C:
。 (为简单起见,我假设计算机只有一个辅助存储设备,并且只有一个分区。)根目录是C:\
,它包含其他目录,如C:\Intel
、C:\Program Files
、C:\Users
和C:\Windows
。这些目录可以包含另一层目录;例如
C:\Program Files\Oracle
、等等。C:\Users\your_name
- 但是如果你将光盘(CD 或 DVD)插入相应的驱动器,它就变成了
D:
。它还有一个根目录,,D:\
以及通常像这样的下级目录D:\Install
。 - 如果您还记得软盘(“软盘”),您会记得它们是磁盘
A:
(并且在真正古老的时代,您可以拥有第二张磁盘,自然被称为B:
)。同样的模式也适用:根目录可以包含像和这样A:\
的文件夹。A:\GAMES
A:\WORK
- 其他可移动驱动器(例如,USB 驱动器)的驱动器号超出
D
(可能F
),并且根目录F:\
可能包含类似的文件夹F:\Project1
。 - 如果您有网络驱动器,它们的驱动器号可能位于字母表末尾附近(可能
Z
),并且根目录Z:\
可能包含类似的文件夹Z:\Project2
。
因此,你的整个计算机的目录布局看起来是这样的:
A:\ C:\ D:\ F:\ Z:\
⋰ ⋱ ⋰ ⋰ ⋱ ⋱ ⋰ ⋰ ⋰
⋰ ⋱ ⋰ ⋰ ⋱ ⋱ ⋰ ⋰ ⋰
⋰ ⋱ ⋰ ⋰ ⋱ ⋱ ⋰ ⋰ ⋰
GAMES WORK Intel Program Files Users Windows Install Project1 Project2
⋰ ⋰
⋰ ⋰
⋰ ⋰
Oracle user480468
因此,原则上,您可以拥有最多 26 个独立的文件系统目录树,每个目录树都有自己的根目录。我认为这已经足够好了,尤其是现在 Windows 将它们全部绑定在Computer
(以前称为)超级文件夹中。(但话又说回来,看看在 以外的磁盘上安装程序或将用户目录移出My Computer
有多难。)请注意,这是一个伪文件夹 — 您无法在 中创建文件或目录。C:
C:
Computer
Computer
Unix 有一种哲学其中包括概念 专心做好一件事(甚至连“Unix”这个名字源自前缀“un-”或“uni-”,意为“一”)因此,Unix 的设计者选择单身的文件系统目录树;你可能很熟悉它:
/
⋰ ⋰ ⋰ ⋮ ⋱ ⋱ ⋱
⋰ ⋰ ⋰ ⋮ ⋱ ⋱ ⋱
⋰ ⋰ ⋰ ⋮ ⋱ ⋱ ⋱
⋰ ⋰ ⋰ ⋮ ⋱ ⋱ ⋱
⋰ ⋰ ⋰ ⋮ ⋱ ⋱ ⋱
⋰ ⋰ ⋰ ⋮ ⋱ ⋱ ⋱
bin dev etc home mnt tmp usr …
⋰ ⋰⋱
⋰ ⋰ ⋱
⋰ ⋰ ⋱
user48046 bin lib
这样做的好处是,您(作为系统管理员)可以将所有内容放在一个分区中,或者放在/home
一个分区和/usr
另一个分区中,而您(作为用户)可以忘记它。您不需要知道哪个磁盘(分区)在哪个/usr
分区上;无论如何,它都会出现在唯一的文件系统根目录 ( /
) 下。轻微的缺点是您(作为高级用户)必须维持当您添加(和删除)存储组件时,此统一文件系统目录树将自动生成。当您插入 CD 或闪存驱动器时,它只是 下的一个条目/dev
,您可能不应该过多地对其进行干扰。您可以对设备节点执行一些操作,例如运行fsck
或fdisk
;或者可能将其配置为专用数据库存储设备(例如,用于 Oracle) — 因为磁盘可访问。但你无法访问其中的文件(和目录),因为它们尚未进入文件系统 — 因为磁盘未安装。
总结
这就是mount
需要的地方。
mount
是附加的命令A文件系统(例如,在可移动设备上)这文件系统(以 开头的文件系统/
)。1您/mnt
会注意到目录下 有一个目录/
。通常,临时(可移动)文件系统存储设备会挂载到 下的目录中/mnt
;即,它们会附加到那里的文件系统。在某些系统上,某些设备会在检测到时自动挂载。但是,理论上,您可以挂载A文件系统任何地方在这
文件系统。___________
1吹毛求疵,
mount
是一个调用系统调用的程序mount()
,它附加A文件系统这文件系统。
答案4
当您“安装”某个东西时,您就将对其中包含的文件系统的访问权限置于根文件系统结构中。有效地为文件指定位置。这类似于 Windows 中的 C:/D: 驱动器标签。
将 /dev/sdb1 安装到 /mnt/disk1 会将设备中包含的所有文件和文件夹放入您可以访问的standard disk B partition 1
目录中。/mnt/disk1
现代系统有自动挂载驱动器的方法,就像 Windows 自动将驱动器挂载到驱动器号一样,但 Unix 中的位置挂载系统要灵活得多。卸载显然是从该位置删除对这些文件/文件夹的访问权限。您可以通过运行以下命令找出已挂载的文件系统:
mount
涉及部位:mount、umount、fstab(用于固定挂载)、udev、gvfs(用于自动挂载)