您的位置:首页 > 运维架构 > Linux

Linux学习第三篇--Linux的文件系统

2017-08-04 00:00 148 查看

重点

对于Linux系统来说,无论是程序或者配置亦或是其他的组件,都是一个文件!

和java的一切皆对象相似,linux一切皆文件.

硬件装置在linux中的文件名

上文已经说过,在linux中一切皆文件,自然硬件设备对于linux系统来说也是文件.

在linux系统中,硬件设备及其对应的文件名称
IDE硬盘(太老了,我初中的时候好像就不用了.)/dev/hd[a-d]
U盘/dev/sd[a-p]
软盘机(这个才是标准的老古董)/dev/fd[0-1]
打印机
25针: /dev/lp[0-2]
USB: /dev/usb/lp[0-15]
鼠标USB: /dev/usb/mouse[0-15]
PS2: /dev/psaux
当前CDROM/DVDROM(这东西也不多了吧)/dev/cdrom
当前的鼠标/dev/mouse
磁带机IDE: /dev/ht0
SCSI: /dev/st0


其实,个人感觉上面的东西没有死记硬背的需要,在使用过程中慢慢的就会记得了.

硬盘的构成及分区

在上篇博客中有描述硬盘的构造.

硬盘是由磁盘,机械手臂,读取头和主轴马达构成的,数据实质上卸载磁盘上面的,而磁盘又可以分为扇区和磁柱,每个扇区的大小为512bytes,

磁盘的构造类似于下图:



事实上,在整个磁盘中最重要的第一个扇区,

第一个扇区主要记录了两个重要的信息:

1.主要启动记录去(Master Boot Record,MBR):安装开机管理程序的地方,大小为446bytes,

2.分割表(partition table):记录磁盘分割状态,大小为63bytes.

MBR是一个非常重要的地方,他负责存放系统的启动引导程序,当系统开机时会主动读取这个区块的内容,因此系统才知道在哪里其如何开机.

那么,计算机又是如何去识别这个系统的呢?

在上一篇博客中,提到过两个名词,CMOS和BIOS,其中CMOS负责记录各项硬件的参数,而BIOS则是主板中一个软件,而BIOS就是计算机系统启动时主动执行的程序.

当BIOS启动之后,他会开始计算机的硬件设备,他会根据使用者的设定去寻找可开机的硬盘,然后在该硬盘的MBR寻找开机管理程序,然后BIOS执行完毕,MBR内部的开机管理程序开始加载系统.

那么开机管理程序能够做什么呢?

首先,我们了解到MBR的大小非常小,只有446bytes.所以这个开机管理程序必须要十分精巧.

这个开机管理程序主要需要实现以下功能:

1.提供选单,让用户可以选择不同的开机项目,而这正是多系统引导.

2.加载系统核心程序:指向可开机的程序区段开始加载操作系统.

3.如果,没有使用当前操作系统,那么将启动其他核心程序再次重复这一工作.

也正因为第三点,所以我们才能够实现双系统功能,那么双系统功能具体是如何实现的呢?这又要涉及到MBR的另一个功能,分割表.

分割表的大小只有64bytes,比MBR还要小很多,分割表的主要功能就是进行硬盘分区.

我们了解到硬盘的最小单位是扇区,而可分割的最小单位是磁柱(多个扇区构成),再上图中,我们标注了开始磁柱(图中写错了)和结束磁柱,

这样我们就可以根据磁柱号码的方式进行分区.每个分区使用一对16进制来表示,即每个分区需要占用16字节,因此分区表中最多存放四组数据.

对于这四组数据来说分为主分区(Windos的活动分区),和扩展分区(windows的非活动分区),

如果将硬盘分区后,那么显示在linux文件系统中,则会在原本的文件名称后面,加上分区编号,比如/dev/sd1代表的就是当前硬盘的第一个分区.

按照刚才所说,一个分区表最多只能存放四笔记录,那么难道硬盘只能分四个区吗?

当然不是.除了主分区和扩展分区外,我们还可以进行逻辑分区.

那么逻辑分区又是如何实现的呢?

逻辑分区本质上是借助于扩展分区实现,在扩展分区中提供额外的分区表进行逻辑分区.但是需要注意的是,因为逻辑分区是依赖于扩展分区的,所以逻辑分区的范围因处于扩展分区之内.也因此,扩展分区表是不能够删除的.因为一旦删除分区表,该扩展分区的所有数据将会丢失.

同时还需要注意,分区编号的1-4是保留给主分区和扩展分区的,因此逻辑分区的编号是从5开始的,因此可能会出现下面这种情况:

/dev/sd1

/dev/sd2

/dev/sd5

借助于MBR和分区表,我们就可以实现了双系统这种喜闻乐见的功能:

假设我们安装了windows和linux两个操作系统,windows安装在盘1中,linux安装在盘2中.那么当我们开机时,BIOS加载盘1的MBR,提供了一个系统的选单,其中windos指向本盘,而linux则指向2盘.那么当我们选择2盘的时候,开机工作将会由2盘的核心程序加载.这样就能够实现多系统引导了.

Linux的目录树及分区

在本篇博客中提及过,linux中一切皆文件这个概念,那么linux中的文件是如何显示的呢?

在linux中,文件显示特别像一棵树-->目录树架构.即以根目录为主(根节点),然后向下呈分支状发散(子节点).

我们可以在windows和linux中使用tree命令来查看,系统的目录树.



上图就是我本机(windos系统)的目录树,和windos相似,linux的目录树以[/]作为根节点,其余所有的节点都是根据[/]衍生出来的.

比如,我们如果需要使用一个文件/home/demo/test.log,那么如何去查找呢?

我们将会进入根节点[/],然后在他的子节点中寻找home节点,然后进入/home节点,然后在home子节点中寻找demo节点,进入demo节点,寻找到test.log节点(文件).

至于目录树又是如何同文件系统关联在一起的,又要牵扯到一个新名词--->挂载!

所谓的挂载呢,就是讲一个目录,作为文件系统的进入点,然后将磁盘分区槽放置到该节点(目录)下,然后,进入该目录实际上就是进入了该分区槽.

因为linux中最重要的就是根目录即[/],因此根目录是必须挂载分割槽的!

至于其他的目录,那么我们可以随意的挂载,随心情~

类似于,我们在windows中,打开计算机,就可以看到CDEF盘,我们就可以把计算机当做linux中[/]节点,而CDEF则相当于分区槽.

那么 ,在实际中我们中应该如何对linux系统进行分区呢?

首先,我们要分割出/,这是其他分区槽的挂载点.

然后分割出swap区,作为内存交换的存储,至于其他的我们还可以根据自己的需求分割出\boot,\root,\home,\tem\usr等分区槽.

具体如何分区,还要依据我们的需求来确定.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐