一点一滴学Linux

    返回首页    发表留言
本文作者:李德强
          第一节 文件树
 
 

        Linux的设计理念是“一切皆文件”。也就是说,在Linux的世界里,面向使用者的资源都是一个一个的文件。比如硬盘、光驱、显示器以及硬盘中的文件夹和文件都被Linux统一的识别为“文件”。只不过这个文件各自都有自己的类型和用途。那么Linux是如何将这些资源合理的整合并向使用者提供安全稳定的服务的呢?答案很简单,就是Linux将所有可识别的资源(包括外设)做为特殊的文件,并挂载到相应文件树的指定节点上去。那么Linux文件树又是什么呢?我们一起来再来看一下:

        假如我们的计算机上有4块IDE接口硬盘,那么它们则被Linux识别为hda、hdb、hdc和hdd这4个IDE硬盘文件被挂载(关于挂载我们将在下一节介绍)到/dev目录下,如果每一块硬盘各自有着不同的分区,则使用数字为其做编号。1~4为主分区,5及其以上的编号为扩展分区,例如hda这块硬盘上有4个分区,两个主分区和两个扩展分区,那么它们则被Linux识别为hda1、hda2、hda5、hda6以此类推。而对于SATA接口的硬盘则被Linux识别为sda、sdb、sdc、sdd等文件,并挂载到/dev目录下,它们各自的分区也同样被编号为sda1、sda2、sdb1、sdb2、sdc1、sdc2等。需要说明的是对于硬盘的分区表如果是msdos类型则只能有4个主分区,其它为扩展分区,而对于gpt类型的分区表则可以分个主分区,也就是物理分区。关于分区表的内容这里只作简单的说明,并不深入学习。对于IDE接口硬盘和SATA类型的硬盘在被Linux识别后则被表示为以下文件:

  • /dev/hda:IDE Primary Master

    • /dev/hda1:主分区

    • /dev/hda2:主分区

    • /dev/hda5:扩展分区

    • /dev/hda6:扩展分区

  • /dev/hdb:IDE Primary Slave

    • /dev/hdb1:主分区

    • /dev/hdb2:主分区

    • /dev/hdb5:扩展分区

    • /dev/hdb6:扩展分区

  • /dev/sda:SATA port0

    • /dev/sda1:主分区

    • /dev/sda2:主分区

    • /dev/sda5:扩展分区

    • /dev/sda6:扩展分区

  • /dev/sdb:SATA port1

    • /dev/sdb1:主分区

    • /dev/sdb2:主分区

    • /dev/sdb5:扩展分区

    • /dev/sdb6:扩展分区

        而我们在安装Linux时,对硬盘进行自动分区内容为/、/home和swap,它们则作为为系统特殊分区在/dev/mapper目录下:

  • /dev/mapper/fedora-root

  • /dev/mapper/fedora-home

  • /dev/mapper/fedora-swap

        我们可以打开Fedora的Terminal,也就是终端程序,在里面输入以下命令查看hd硬盘设备和sd设备,以及系统分区:

$ls /dev/hd*
ls: cannot access /dev/hd*: No such file or directory
$ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2
$ls /dev/mapper/
control  fedora-home  fedora-root  fedora-swap

        Linux在启动时会自动识别fedora-root根分区,并将其作为文件系统文件树的根节点“/”。然后会根据/etc/fstab分区表文件读入相应的分区信息并将其挂载到相应的节点上。/etc/fstab文件是一个配置文件,并且是一个受保护文件,只有root用户才有权限修改它的内容,其他用户只能查看。它里面记录了我们这台计算机中的存储设备以什么方式挂载到系统的文件树中。这是一个非常重要的文件,Linux系统需要根据它的内容构建我们的存储资源。我们可以通过cat命令来查看其内容:

$cat /etc/fstab
#device-spec             mount-point fs-type options      dump  pass
/dev/mapper/fedora-root  /           ext4    defaults     1     1
UUID=e8b76-4d9c696dbe52  /boot       ext4    defaults     1     2
/dev/mapper/fedora-home  /home       ext4    defaults     1     2
/dev/mapper/fedora-swap  swap        swap    defaults     0     0

        我们来看一下fstab文件中各项配置的含义:

  • device-spec:设备规格设备名称、标签、UUID或其他方式指定的分区或数据源。

  • mount-point:挂载点,也就是上面我们称作文件树的某一个节点,如:/、/home、/boot等。

  • fs-type:设备或磁盘分区类型,比如ext2、ext3、ext4、swap、smbfs、vfat、ntfs等。

  • options:挂载选项是指此设备或分区的挂载方式,比如:是否自动安装在系统启动,用户是否可以安装或访问,是否可能被写入或读取,的大小等。

  • dump:转储程序,0表示文件系统将不自动备份,1表示自动备份。

  • pass:fsck程序是否检查错误,0表示不检查,1表示检查。

        从fstab文件里我们可以看出,我们有3个磁盘分区被挂载到了文件树上,叶子节点分别是/、/boot、/home。那么我们的系统文件树则如下图:

        同时我们也可以使用df命令来查看分区挂载情况:

$df -lh
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/fedora-root   38G  3.0G   34G   9% /
devtmpfs                 991M     0  991M   0% /dev
tmpfs                   1001M   68K 1001M   1% /dev/shm
tmpfs                   1001M  736K 1001M   1% /run
tmpfs                   1001M     0 1001M   0% /sys/fs/cgroup
tmpfs                   1001M   44K 1001M   1% /tmp
/dev/sda1                477M  131M  318M  30% /boot
/dev/mapper/fedora-home   19G   45M   18G   1% /home
tmpfs                    201M  4.0K  201M   1% /run/user/989
tmpfs                    201M  8.0K  201M   1% /run/user/1000

        对于devtmpfs、tmpfs类型的文件系统我们暂时先不理会。可以看到/dev/mapper/fedora-root被挂载到了/上,/dev/mapper/fedora-home被挂载到了/home上,而/dev/sda1被挂载到了/boot上。当然,当你熟悉了Linux文件系统之后,也可以根据自己的喜好,将你的硬盘分为多个分区,并分别挂载到不用的目录上,例如:

Filesystem               Size  Used Avail Use% Mounted on        
/dev/sda1                1.9G  239M  1.6G  14% /boot
/dev/sda5                 50G   66M   47G   1% /data        
/dev/sda6                173G   96G   78G  56% /data/tool
/dev/sda7                 98G   69G   30G  71% /data/work
/dev/sda8                 190G  27G   161G 10% /data/media
/dev/sda9                 60G   24G   33G  42% /data/media/pic
/dev/sda10                92G   18G   71G  14% /data/media/movie
/dev/sda11                128G  55G   74G  39% /data/work/music

        Linux除了使用/etc/fstab配置文件来挂载文件系统之外,还有一种办法来临时挂载文件系统到文件树上,就是使用mount命令。在下一节我们将一起学习如何使用它。

    返回首页    返回顶部
  看不清?点击刷新

 

  Copyright © 2015-2023 问渠网 辽ICP备15013245号