什么是“mount”

什么是“mount”

什么是“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:\IntelC:\Program FilesC:\UsersC:\Windows。这些目录可以包含另一层目录;例如 C:\Program Files\Oracle、等等。C:\Users\your_name

  • 但是如果你将光盘(CD 或 DVD)插入相应的驱动器,它就变成了D:。它还有一个根目录,, D:\以及通常像这样的下级目录D:\Install
  • 如果您还记得软盘(“软盘”),您会记得它们是磁盘A:(并且在真正古老的时代,您可以拥有第二张磁盘,自然被称为B:)。同样的模式也适用:根目录可以包含像和这样A:\的文件夹。A:\GAMESA:\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:ComputerComputer

Unix 有一种哲学其中包括概念 专心做好一件事(甚至连“Unix”这个名字源自前缀“un-”或“uni-”,意为“一”)因此,Unix 的设计者选择单身的文件系统目录树;你可能很熟悉它:

                                        /
                               ⋰ ⋰ ⋰  ⋮  ⋱ ⋱ ⋱
                         ⋰   ⋰   ⋰    ⋮    ⋱   ⋱   ⋱
                   ⋰     ⋰     ⋰      ⋮      ⋱     ⋱     ⋱
             ⋰       ⋰       ⋰        ⋮        ⋱       ⋱       ⋱
       ⋰         ⋰         ⋰          ⋮          ⋱         ⋱         ⋱
 ⋰           ⋰           ⋰            ⋮            ⋱            ⋱            ⋱
bin         dev          etc           home           mnt          tmp          usr    …
                                       ⋰                                       ⋰⋱
                                     ⋰                                       ⋰    ⋱
                                   ⋰                                       ⋰        ⋱
                              user48046                                   bin         lib

这样做的好处是,您(作为系统管理员)可以将所有内容放在一个分区中,或者放在/home一个分区和/usr另一个分区中,而您(作为用户)可以忘记它。您不需要知道哪个磁盘(分区)在哪个/usr分区上;无论如何,它都会出现在唯一的文件系统根目录 ( /) 下。轻微的缺点是您(作为高级用户)必须维持当您添加(和删除)存储组件时,此统一文件系统目录树将自动生成。当您插入 CD 或闪存驱动器时,它只是 下的一个条目/dev,您可能不应该过多地对其进行干扰。您可以对设备节点执行一些操作,例如运行fsckfdisk;或者可能将其配置为专用数据库存储设备(例如,用于 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(用于自动挂载)

相关内容