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号