linux目录与挂载点


            peter@initroot:/$ df -h
            peter@initroot:/$ lsblk
          

1.目录树与磁盘分区的关系

回到顶部

在安装linux之前需要合理规划磁盘分区。假设我们将磁盘分为三个主分区,在windows下分别对应C盘、D盘和E盘。
而在linux下设备是以文件的形式存在的,假设磁盘设备文件为/dev/sda,那么三个主分区的设备文件分别对应为/dev/sda1、/dev/sda2和/dev/sda3。 我们在windows下可以很容易的访问磁盘分区,一般访问路径为C:\dir、D:\dir、E:\dir。那么在linux下该如何访问这三个磁盘分区呢? 在linux下,我们也是以目录路径的形式访问磁盘分区,但是和windows不同的是,linux目录是以根目录/为起点的树状结构,称为目录树。
在访问磁盘分区之前需要先将磁盘分区挂到这棵树上,称为挂载。而可以挂载设备的目录称为挂载点
通过mount命令我们可以将/dev/sda1挂载到/根目录下,/dev/sda2挂载到/home目录下,/dev/sda3挂载到/boot目录下:
mount /dev/sda1 /
mount /dev/sda2 /home
mount /dev/sda3 /boot
这样我们访问根目录就相当于访问windows下的C盘,访问/home目录就相当于访问D盘,访问/boot目录就相当于访问E盘。
通过lsblk命令可以观察磁盘分区和挂载点分配情况。
这里需要注意不是所有目录都适合作为挂载点使用的,比如根目录下的/etc、/bin、/dev、/lib、/sbin,这些目录都不能作为挂载点使用,需要和/根目录放在同一个分区中。
当然我们不能每次都通过mount命令手动挂载设备,况且根目录必须在linux启动的时候就挂载好。
正确的做法是将磁盘分区和挂载点信息写到/etc/fstab配置文件中,这样每次linux启动的时候就会自动挂载磁盘分区了。 根目录因为在系统启动的时候就必须挂载,所以/etc/fstab文件中必须有根目录的挂载信息。 在安装linux的时候,安装程序会要求我们对磁盘进行分区和分配挂载点,所以最好在安装linux之前,就根据实际情况合理规划好磁盘分区和挂载点分配。

Linux目录树和挂载点

回到顶部

在安装linux之前,首先需要对磁盘进行分区规划。在对磁盘进行分区规划之前,先了解一下linux的目录树和文件系统。
目录树结构(directory tree)
Linux内所有的数据都是以文件的形式存在,通过路径的形式访问文件。所有文件的访问路径构成了linux的目录树结构。 目录树结构(directory tree)以根目录(root directory)为起始点,向下呈现分支状的目录结构。根目录的表示方法为一条斜线/。 目录树的呈现方式如下图所示: linux磁盘组成 图 目录树相关性示意图 上图长方形为目录, 波浪形为文件。所有的文件都存在目录内,目录内还可以有目录和文件。目录的父目录向上一直追溯到根目录。 例如要读取mydata文件时,系统先由根目录开始,找到home目录,最后找到dmtsai文件, 最终的文件路径名为/home/dmtsai/mydata。
我们通过文件路径访问磁盘文件,磁盘文件是放在磁盘分区中的,那么目录树和磁盘分区是如何联系的呢? 不同于windows系统中的cdef盘符结构,windows将不同的分区挂载到不同的盘符下。 而linux是将磁盘分区挂载到目录树上,被挂载的目录称为挂载点。分区被挂载到哪个目录,我们就可以通过该目录访问这个分区了。 例如我们可以将在windows中标记为C盘的分区挂载到根/目录下,那么该分区中的文件就可以通过/目录访问了。 有朋友会问,所有的文件不都是通过根目录访问的吗?是的,只是通过/目录访问的文件并不一定是在这个分区内。 例如我们可以再将在windows中标记为D盘的分区挂载在/home目录下,这样访问/home目录中的文件就是访问D盘的分区了。 所有的文件访问都是从根目录开始,整个Linux系统最重要的就是根目录,因此根目录一定要挂载到某个分区。 其他的目录则可根据用户的需求挂载到不同的分区。我们以下图来作为一个说明:
linux磁盘组成 图 目录树与分区之间的关系
windows中也是挂载的概念! 左侧为一个硬盘的两个分区,partition 1在windows中可能识别为C盘,也可以说被挂载到C盘,而在linux下我们将其挂载到根目录, partition 2在windows中可能被挂载到D盘,而在linux下被挂载到/home目录。 读写/home目录中的文件其实就是在读写partition 2中的数据。不在/home目录中的文件就是在partition 1中了!
判断某个文件在哪个partition下是很简单的,通过反向追踪即可。 以上图为例, 想要知道/home/initroot/test这个文件在哪个partition时,由test-->initroot-->home-->/, 看那个进入点先被查到那就是使用的进入点了。所以test使用的是/home这个进入点而不是/!
假设windows下的光驱被挂载到F盘,而Linux下的光驱默认被挂载到/media/cdrom目录中。 加入要访问光盘中的文件myfile.txt,那么myfile.txt文件在windows和linux的路径名分别是: Windows: F:\myfile.txt
Linux: /media/cdrom/myfile.txt
也可以将光驱挂载到/mnt目录下,那么myfile.txt文件的路径就会变成: /mnt/myfile.txt
如果你理解了这些文件路径名的意义,表示你已经知道挂载的意义了! 初次接触Linux时,这里最容易搞混,因为与Windows的分区盘符完全不一样!
在linux启动后,除了根目录,我们可以通过mount命令手动更改分区的挂载点。还可以通过fsdisk或者gdisk命令重新对磁盘进行分区。 linux在启动的时候就会自动把磁盘分区挂载到相应的目录挂载点。例如上面硬盘的两个分区分别被挂载到/目录和/home目录下, 这种对应关系是在什么时候设置的呢? 除了在linux启动后通过修改配置文件/etc/fstab来设置自动挂载的分区和挂载点外, 另一个重要的途径就是在安装的时候就规划好磁盘分区和挂载点,这也是linux安装的重点和难点。 事实上目前大部分主流linux发行版在安装的时候,为了减少初学者的安装难度,都会采用默认的安装方式。 用户可以先不用关注磁盘分区和挂载点的分配,只需要一直按下一步,linux就会按照默认的方式对磁盘进行分区和挂载点分配。 这种方式适用于大部分环境,也非常适合初学者!但是在实际的企业生产环境中, 默认的磁盘分区和挂载点分配可能并不适合所有的需求,很多时候需要使用自定义Custom安装模式, 在很多Linux distribution中也会把自定义安装模式称为专家Expert模式!
在真正安装linux之前,需要根据自己的实际需求好好规划一下磁盘的分区和挂载点分配! 以上介绍的linux安装必备的基础知识都是linux中的重要概念,后面还会单独分章节深入讨论。

2.挂载点的意义 (mount point)

回到顶部

我们将硬盘的某个分区格式化为某个文件系统后,还需要将文件系统挂载到目录树上的某个目录中才能够使用。 把文件系统与目录建立连接的过程称为挂载,被挂载的目录称为挂载点,挂载点必须是目录。 在安装linux之前需要合理规划磁盘分区。假设我们将磁盘分为三个主分区,在windows下分别对应C盘、D盘和E盘。
而在linux下设备是以文件的形式存在的,假设磁盘设备文件为/dev/sda,那么三个主分区的设备文件分别对应为/dev/sda1、/dev/sda2和/dev/sda3。 我们在windows下可以很容易的访问磁盘分区,一般访问路径为C:\dir、D:\dir、E:\dir。那么在linux下该如何访问这三个磁盘分区呢? 在linux下,我们也是以目录路径的形式访问磁盘分区,但是和windows不同的是,linux目录是以根目录/为起点的树状结构,称为目录树。
在访问磁盘分区之前需要先将磁盘分区挂到这棵树上,称为挂载。而可以挂载设备的目录称为挂载点
通过mount命令我们可以将/dev/sda1挂载到/根目录下,/dev/sda2挂载到/home目录下,/dev/sda3挂载到/boot目录下:
mount /dev/sda1 /
mount /dev/sda2 /home
mount /dev/sda3 /boot
这样我们访问根目录就相当于访问windows下的C盘,访问/home目录就相当于访问D盘,访问/boot目录就相当于访问E盘。
通过lsblk命令可以观察磁盘分区和挂载点分配情况。
这里需要注意不是所有目录都适合作为挂载点使用的,比如根目录下的/etc、/bin、/dev、/lib、/sbin,这些目录都不能作为挂载点使用,需要和/根目录放在同一个分区中。
当然我们不能每次都通过mount命令手动挂载设备,况且根目录必须在linux启动的时候就挂载好。
正确的做法是将磁盘分区和挂载点信息写到/etc/fstab配置文件中,这样每次linux启动的时候就会自动挂载磁盘分区了。 根目录因为在系统启动的时候就必须挂载,所以/etc/fstab文件中必须有根目录的挂载信息。 在安装linux的时候,安装程序会要求我们对磁盘进行分区和分配挂载点,所以最好在安装linux之前,就根据实际情况合理规划好磁盘分区和挂载点分配。

相关阅读:
linux基础
linux怎么学
计算机启动过程详解
磁盘构造和磁盘分区
什么是linux shell
什么是linux shell环境变量
linux shell环境配置文件解析
initroot编辑整理,转载请注明www.initroot.com

100次点赞 100次阅读