如何理解Linux文件系统中的 挂载 的概念?

2021-01-09  本文已影响0人  tracy_668

使用 df -h 命令, 如下, 最后一列会显示 挂载点, 心存疑惑的我, 一直在想这个挂载点是什么意思?

$ df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 5.8G     0  5.8G    0% /dev
tmpfs                    5.8G     0  5.8G    0% /dev/shm
tmpfs                    5.8G   12M  5.8G    1% /run
tmpfs                    5.8G     0  5.8G    0% /sys/fs/cgroup
/dev/mapper/centos-root   50G   24G   27G   47% /
/dev/mapper/centos-home   74G  473M   73G    1% /home
/dev/sda1               1014M  193M  822M   19% /boot
cm_processes             5.8G  1.9M  5.8G    1% /run/cloudera-scm-agent/process
tmpfs                    1.2G     0  1.2G    0% /run/user/0

Emmmm, 什么挂载点? 是不是只有 Linux 系统有 挂载点? 挂载是什么概念?

我们知道, 在计算机系统中, 文件是存储在不同的路径下的, 同时计算机可能会拥有多个磁盘设备,或者是多个磁盘分区, 那么如何确定哪个路径对应那个具体的磁盘或者分区呢? 这就是挂载的目的.
用一句话来说, 区分不同的逻辑路径对应不同的物理设备的机制就叫做挂载.

计算机存储文件是通过文件系统来进行存储的, 而文件是存储在磁盘上的, 一个磁盘最终要服务于计算机,能够被计算机存储文件需要进行如下几步:
1: 对磁盘进行分区.
2: 在不同的分区上创建文件系统.
3: 把这个文件系统挂载在某一个目录下.
经过如上三步后, 计算机便可以在磁盘的某个分区里面存储文件.

经过上面的解释后, 我们在来看看一开始的那个 df -h 命令后的输出, 我们可以看到, 每一个挂载点都有一个对应的文件系统, 看到没? 这其实就可以理解为一个磁盘的分区, 既然是分区, 理所当然的会有分区容量, 所以我们看到第二列是容量信息.

那么问题来了, 那么一开始的那个文件系统是哪里来的呢? 是的, 这是Linux系统在启动的时候就会有一个系统文件系统, 其挂载在 “/” 目录下面, 然后之后便会有其他的一些路径啊,磁盘分区啊, 我们就可以选择某一个路径对其进行挂载, 一旦当某一个路径被挂载之后, 那么这个路径下的文件就会存储在这个分区中.

提问者插入了新硬盘,分了新磁盘区sdb1。它现在还不属于/。

.我们虽然可以在一些图形桌面系统里找到他的位置,浏览管理里面的文件,但在命令行却不知怎么访问它的目录,比如无法使用cd或者ls。也无法在编程时指定一个目录对它操作。

这时提问者使用了 mount /dev/sdb1 ~/Share/ ,把新硬盘的区sdb1挂载到工作目录的/Share/文件夹下,之后访问这个/Share/文件夹就相当于访问这个硬盘2的sdb1分区了。对/Share/的任何操作,都相当于对sdb1里文件的操作。

所以Linux下,mount挂载的作用,就是将一个设备(通常是存储设备)挂接到一个已存在的目录上。访问这个目录就是访问该存储设备。

linux操作系统将所有的设备都看作文件,它将整个计算机的资源都整合成一个大的文件目录。我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上,然后通过访问这个目录来访问存储设备。挂载就是把设备放在一个目录下,让系统知道怎么管理这个设备里的文件,了解这个存储设备的可读写特性之类的过程。

我们不是有/dev/sdb1 吗,直接对它操作不就行了?这不是它的目录吗?

这不是它的目录。虽然/dev是个目录,但/dev/sdb1不是目录。可以发现ls/dev/sdb1无法执行。/dev/sdb1,是一个类似指针的东西,指向这个分区的原始数据块。mount前,系统并不知道这个数据块哪部分数据代表文件,如何对它们操作。

插入CD,系统其实自动执行了 mount /dev/cdrom /media/cdrom。所以可以直接在/media/cdrom中对CD中的内容进行管理。

上一篇下一篇

猜你喜欢

热点阅读