• 浅谈Linux分区和挂载(点)


    分区和挂载(点)

    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的做法是:将根目录下的某一部分(也有可能是全部)与分区建立对应关系。

    打个比方,打开你的文件管理器,在里面的地址栏中输入“/”,然后在空白区域右击,选择“属性”。

    Screenshot_20200104_154532.png

    然后你应该可以看到挂载点和挂载的分区。其中,分区并不像Windows那样以盘符表示,而是一个文件。关于这个文件的意义,我们以后再说。

    Screenshot_20200104_153959.png

    而这个挂载点就是根目录“/”,也就是说,根目录下的所有文件,都存在了这个分区里?

    其实并不是这样的,这个分区只是和根目录建立了一个对应关系,并不代表根目录中所有文件都存在了这个分区中。

    再举个例子,插上你的U盘,如果你用的是KDE、GNOME这样的桌面环境,应该可以通过简单的动动鼠标,进入这个U盘。

    Screenshot_20200104_160153-1.png

    而这时,点击文件管理器中的地址栏,你会得到一个路径,就像这样:

    Screenshot_20200104_160310.png

    然后,在根目录下,按照这个目录,打开这个文件夹。

    比如,我的是“/run/media/archer/7BD2-F1FA/”,于是我现在根目录下找到“run”文件夹,打开,再找到“media”文件夹,打开,在找到并打开“archer”文件夹(我的用户名),然后打开“7BD2-F1FA”文件夹。

    然后,你就会发现:

    这不就是我U盘里的东西吗

    Screenshot_20200104_160941.png

    在页面的空白处,右击,点击“属性”。“挂载点”那一栏写的就是你刚才打开的文件夹的路径,而“挂载自”一栏也是 /dev 目录下的一个文件,sd**代表这是一个分区。

    这时,你可能就会发现:

    这个U盘(准确地说是这个分区)就是一个文件夹!!

    没错,分区本身,在Linux下是一个在 /dev 目录下的文件,你可以把它挂载到目录树的一个文件夹下,你才可以访问这个分区中的文件。

    这个实验也表明了,Linux下的挂载点是可以嵌套的。你可以将任何一个分区挂载到任何一个目录(除了根目录必须作为一个挂载点挂载磁盘),这就为Linux的文件管理提供了无限的可能。比如说,我的Linux目录树是这样的:

    003vPl7Rty6E8kZRlAEdc690_1.jpg

    至于我为什么要把 /home 文件夹里的内容存到一个单独的分区里,这个以后再说。

    在Linux下如何查看我的分区情况

    Linux下,有一个分区工具叫做 fdisk ,你可以以root用户运行以下命令查看分区情况:

    # fdisk -l
    

    就像这样:

    Screenshot_20200104_163440-1.png

    其中"nvme"开头的是NVMe协议的硬盘(一般是固态),而sd开头的是通过SATA、SCSI、USB这些接口传输数据的存储设备,loop开头一般是光盘。

  • 相关阅读:
    linux 虚拟机固定Ip地址
    艰难的K8s环境准备及集群安装kuberneters
    妙啊!动画还可以这样控制?
    shell删除变量中的字符(字符串替换)
    如何在shell的循环中实现字符串的拼接
    echo输出原始字符串中连续多个空格的方法
    std:;mutex 使用
    免费素材网站合集
    从华为转正到离职
    C++实现图的遍历和最短路径
  • 原文地址:https://www.cnblogs.com/dong628/p/12149581.html
Copyright © 2020-2023  润新知