攻城狮在路上(叁)Linux(十七)--- linux磁盘与文件管理概述
一、复习知识点:
1、扇区是最小的物理存储单位,大小为512bytes。
2、扇区组成一个圆,成为柱面,柱面是分区的最小单位。
3、第一个扇区很重要,因为包含了MBR(446字节)和分区表(64字节)
4、分区的柱面范围记录在分区表中,分区表最多有4条分区记录。
5、所以最多是3个主分区+一个扩展分区,然后扩展分区再分出逻辑分区。
6、主分区和逻辑分区可以格式化,扩展分区不可以格式。
二、认识EXT2文件系统:
如今的技术LVM可以把一个分区分为多个文件系统,也可以把多个分区合并为一个文件系统。
这里仅介绍EXT2文件系统的通用概念:
inode:存放权限和属性,以及block号码,一个文件占用一个。
block:存放实际的数据,一个文件占用一个或多个。
super block:存放文件系统的整体信息,inode/block总量、使用量等。
文件系统一经格式化,inode与block的数量与大小就固定了。
三、linux下的EXT2文件系统:
EXT2文件系统在格式化时会分为多个快组(block group),每个快组都有独立的inode(若干)/block(若干)/super block(一个或0个)。示例如下图:
1、文件系统最前面有一个启动扇区,这个启动扇区可以安装引导装载程序,可以用于制作多重引导的环境。
2、super block中存储的内容: dumpe2fs 设备名 <==查看文件系统信息,里面有很多信息就是super block中 的信息。
①记录inode/block的数量。
②未使用与使用的inode/block数量。
③inode与block的大小(inode固定为128字节,block可以为1K/2K/4K)
④文件系统的挂载时间、最后一次写入时间、最后一个磁盘检查时间等等
⑤validbit记录是否已经挂载,0或1.
说明:每个快组中都会包含super block,但是一般只是用第一个快组的super block,其余的作为备份。一个文件系统应该仅有一个super block。
3、文件系统描述:
用于描述当前组块的起始block号码,以及每个区段(super block、块对应表、inode对应表、inode table 、data block等)分别介于哪个block号码之间。
4、block bitmap(块对应表):用于记录哪些block为空,哪些已经存储了数据。
5、inode bitmap(inode对应表):用于记录哪些inode为空,哪些已经使用。
6、inode table:存放的是若干个inode,每个inode大小为128字节。
A、inode首先会记录文件的属性和权限,以及实际数据存放在哪些block中。
B、inode记录一个block号码需要占用4个字节,因此128个字节可能不够用,所以它又分为了12个直接、一个间接、一个双间接、一个三间接。如下图:
四、与目录树的关系:文件和目录如何记录数据?
1、目录:
A、ext2会分配一个inode和若干个block给目录。(目录的block一般不是用于保存文件的实际数据)
B、inode记录目录的权限和属性,并记录block的指向。
C、block记录目录下的文件名、文件名对用的inode,相当于记录了很多键值对。
D、可以使用ls -i 来查看目录下文件占用的inode。
2、文件:
A、新建文件时,会分配一个inode,根据文件大小分配若干个block。
B、注意,当文件过大,所需要的block很多时,inode仅靠12个直接指向就无法满足要求了,此时或许就需要间接、双间接、三间接了。
3、目录树读取的步骤:(需要明确inode中不会记录文件名)
A、首先判断目录的权限,通过目录的inode来判断,是否有读取和执行权限。
B、若目录权限符合要求,通过inode找的目录对应的block号码。
C、读取上面找到的目录block号码,在键值对中查找下级文件名,比如 etc/,找的etc/对应的inode。
D、如果还是目录,重复上面的步骤。
E、若是文件,通过上一步找到的inode,判断权限,若有权限,读取对应的block即可。
五、EXT2/EXT3文件的访问和日志文件系统的功能:
1、首先讲一下新增文件的步骤:
A、先确定用户对目录拥有w和x权限。
B、根据inode对应表查找可用的inode号码,写入权限和属性。
C、根据block对应表查找可用的block号码,写入数据,并更新inode的block指向。
D、将inode与block数据同步更新到inode对应表和block对应表中。
E、更新super block数据。
2、上述步骤若遇到系统突然中断,就有可能出现数据不一致的状态。
A、早期ext2会根据文件系统是否挂载以及state来判断是否进行一致性检查,但是这种检查需要搜寻整个文件系统,很耗时。
B、日志系统就是为了解决上面所说的问题。
3、日志文件系统:
在文件系统中,规划处一个块,专门用于记录写入或修改文件的步骤。
A、当出现问题时,只需要检查日志,定位修复即可。
B、Ext3是EXT2的升级版本,带有日志功能。
C、EXT2的特点:可利用性、数据完整性、速度以及易于转换。
4、通过dumpe2fs 命令可以查看super block中包含的以下信息:
Journal inode: 8
Journal backup: inode blocks
Journal size : 128M
六、linux文件系统的操作:
如果在修改文件时频繁的进行磁盘读写,效率就会很慢,因此linux采用异步处理的方式:
A、一个文件被加载到内存中,被设置为clean。
B、当文件数据有变动,被设置为dirty。
C、系统会定时将dirty数据写回到磁盘,保存一致性。
D、可以使用sync命令手动强制写入磁盘。
E、正常关机时,关机命令会调用sync命令。
F、非正常关机时,重启会进行磁盘检验,甚至会导致文件系统的损毁。
七、挂载点(mount point)的意义:
将文件系统与目录树结合的操作称为挂载。
八、其他linux支持的文件系统与VFS:
ls -l /lib/modules/$( uname -r )/kernel/fs; <==查看linux支持哪些文件系统
cat /proc/filesystems; <== 查看目前已经加载到内存的文件系统。
VFS功能用来管理所有的文件系统,统一读取,不需要额外设置。