简单讲解Linux的文件系统及相关的挂载命令

08-16

  Linux文件系统

  和windows的C盘D盘E盘的概念一样,这个“文件系统”或者叫“组织体系”是软件级别的,是linux系统“内在”的体系,就像你脑子里的一个“想法”,并无需依赖于任何的实际一样。

  :idea: linux的系统组织方式是——整个系统从根开始,按树形目录依次向下逐渐扩大,分类存放不同用途的文件,/读作“斜线”,英文slash;当其写作一个路径时,第一个/表示根,即root,其他的/表示路径分割符,但都读作“斜线”或“slash”。

  OK,现在让我们把“理想”变成“现实”吧!

  :idea: 系统启动时,首先有一个分区被挂载到了/,可以理解为该分区被分配了/这个奇怪“盘符”(注意,在windows里,这个符号被用做命令参数引导符号,而反斜线,英文backslash作为路径分割符,习惯不同而已,就像英国行车靠左一样,没啥可奇怪的)。

  这个被挂载为/的分区,就叫做根分区(不管它是主分区还是逻辑分区),它从此开始在整儿linux系统里具有了特殊的地位,因为整儿电脑里的所有硬盘,包括其上的所有其他分区,不管是主分区、逻辑分区,都将以这个“根分区”为主干,开始构造linux大树,并最终成为这颗树上的一个分支或树叶。整个linux的系统结构里,有且只有一个root(根分区),不可能有第二个(其实,任何一个分区,都可以挂载为/,windows分区也可以。只不过挂载根分区的目的是启动系统,如果/下面没有linux内核及其所需的系统文件的话,将无法引导系统而已。所以这个根分区并不神秘)。

  :idea: 你的其他分区只能被继续挂载到/(根分区)下的某个目录里,比如“/mnt”或者“/media”或者“/什么什么”目录,看你喜欢喽。挂载好之后,当你向这个目录读写数据的时候,其实是在向被挂载到该目录的另一个分区读写数据。多个分区在同一个时候只能被挂载到多个不同的目录,比如“/mnt/a”、“/media/123”或者“/home/anywhere”,任何一个处于/之下的目录,都可以用来作为挂载其他分区的“平台”,当然系统需要的目录可不要用哈,你自己新建你自己的用吧。

  挂载好之后,你硬盘里的数据,就可以通过类似/path/to/anywhere这样的方式找到;如果没有挂载就找不到喽。

  用一个庸俗的比喻来说,“/”相当于c:,而“/etc、/bin、/sbin、/lib”这些目录大概相当于c:windows和c:program files,“/home”相当于c:Documents and Settings,而当你把第二分区挂载到“/mnt/partition2”的时候,这个目录就相当于d:了

  mount

  mount 用于挂载一个文件系统,需要 root 用户执行。一个磁盘可分为若干个分区,在分区上面可以创建文件系统,而挂载点则是提供一个访问的入口,将一个分区的文件系统挂载到某个目录中,称这个目录为挂载点,并且可以通过这个挂载点访问该文件系统中的内容。

  例如一块硬盘在 Linux 中表示为 /dev/sda 那么它上面的分区应该表示为 /dev/sda1 、/dev/sda2 。

  # mount ### 输出系统目前的挂载信息

  # mount /dev/sda1 /mnt ### 将 sda1 挂载到 /mnt 中

  # cd /mnt ### 直接通过 /mnt 访问内容

  # mount -o remount,rw /mnt ### 重新挂载 sda1 到 /mnt 并设置为 可读写

  # mount -a ### 挂载 fstab 文件配置好的文件系统

  umount

  umount 与 mount 相反,是卸载一个挂载点,即取消该入口。

  # umount /mnt ### 卸载 /mnt 这个挂载点的文件系统

  # umount -a ### 卸载所有已挂载的文件系统