分区和挂载(点)
Windows
在windows下,分区是有明显的界限的,就比如这样:
在“此电脑”中的C盘、D盘、E盘等,都是分区。一般情况下,系统安装在C盘,其他分区一般用来存放资料,但是linux下的分区和windows不同。
Linux——分区就是文件夹
其实这么说并不准确,因为Linux下“分区”的概念是比较模糊的。
Linux是以树的结构存储文件的。不管你的电脑中有几块硬盘(即便没有),也不管硬盘分了几个区,Linux都会给你整出来个根目录,也就是上图中最顶层的“/”。一旦你安装了Linux,它就会在根目录下创建几个文件夹,这些文件夹的名字是“root”、“home”、“dev”等等。路径分别是“/root”、“/home”、“/dev”等。
众所周知,存储文件需要硬盘。Linux这波操作光搞了个目录,但是与硬盘和分区没有任何关系,那么这些文件夹和之后要写入的文件存在哪里啊?这就引入了Linux下“挂载”的概念。
分区就是个文件夹!
在linux下,你可以像windows一样创建分区,但是并不像windows一样,创建完就给你显示在“此电脑”中(默认是这样的,也可以设置不显示)。但是在Linux下,要想使用一个分区,必须先要挂载。
前面说过,Linux下的根目录里是要存东西的,要想存东西,就要有硬盘。所以Linux的做法是:将根目录下的某一部分(也有可能是全部)与分区建立对应关系。
打个比方,打开你的文件管理器,在里面的地址栏中输入“/”,然后在空白区域右击,选择“属性”。
然后你应该可以看到挂载点和挂载的分区。其中,分区并不像Windows那样以盘符表示,而是一个文件。关于这个文件的意义,我们以后再说。
而这个挂载点就是根目录“/”,也就是说,根目录下的所有文件,都存在了这个分区里?
其实并不是这样的,这个分区只是和根目录建立了一个对应关系,并不代表根目录中所有文件都存在了这个分区中。
再举个例子,插上你的U盘,如果你用的是KDE、GNOME这样的桌面环境,应该可以通过简单的动动鼠标,进入这个U盘。
而这时,点击文件管理器中的地址栏,你会得到一个路径,就像这样:
然后,在根目录下,按照这个目录,打开这个文件夹。
比如,我的是“/run/media/archer/7BD2-F1FA/”,于是我现在根目录下找到“run”文件夹,打开,再找到“media”文件夹,打开,在找到并打开“archer”文件夹(我的用户名),然后打开“7BD2-F1FA”文件夹。
然后,你就会发现:
这不就是我U盘里的东西吗
在页面的空白处,右击,点击“属性”。“挂载点”那一栏写的就是你刚才打开的文件夹的路径,而“挂载自”一栏也是 /dev 目录下的一个文件,sd**代表这是一个分区。
这时,你可能就会发现:
这个U盘(准确地说是这个分区)就是一个文件夹!!
没错,分区本身,在Linux下是一个在 /dev 目录下的文件,你可以把它挂载到目录树的一个文件夹下,你才可以访问这个分区中的文件。
这个实验也表明了,Linux下的挂载点是可以嵌套的。你可以将任何一个分区挂载到任何一个目录(除了根目录必须作为一个挂载点挂载磁盘),这就为Linux的文件管理提供了无限的可能。比如说,我的Linux目录树是这样的:
至于我为什么要把 /home 文件夹里的内容存到一个单独的分区里,这个以后再说。
在Linux下如何查看我的分区情况
Linux下,有一个分区工具叫做 fdisk ,你可以以root用户运行以下命令查看分区情况:
# fdisk -l
就像这样:
其中"nvme"开头的是NVMe协议的硬盘(一般是固态),而sd开头的是通过SATA、SCSI、USB这些接口传输数据的存储设备,loop开头一般是光盘。