1 文件系统
1.1 索引式文件系统
在我安装的CENTOS7中使用的是ext4,是一种索引式文件系统。文件系统一开始会将硬盘分成很多的区块群组(包含大量的区块,这些区块一般是1K、2K、4K大小),并给每个区块分配了独一无二的区块号码,当文件需要写入时,会按照文件所需的大小分配给相应数量的区块,并且通过inode来记录文件的属性以及所使用的区块号码。当需要读取文件时,先读取inode查看是否有权限再访问对应的数据区块进行数据读取。inode所扮演的角色有些像指针。
这样每个群组会有非常多的区块和inode需要管理,这时候就需要超级区块来对文件系统的整体信息进行统一的管理,其中包含了inode数量,使用量以及文件系统的格式等等很多信息。总得来说每个群组包含以下几个内容
- 超级区块(第一个群组是主要的,其余如果有也是备份)
- 文件系统描述说明
- 区块对应表
- inode对应表
- inode table
- data table
现在的内存非常大,如果inode是一一对应关系的话,inode会占用非常大的空间,所以当inode所需要较多时,会采用类似多维阵列的方式通过设置多层间接关系来减少inode的使用空间。
当我们读取一个文件时,会经过以下流程:
- 读取根目录的inode查看是否有权限
- 根据inode的信息查找根目录的区块找下一目录的inode信息
- 查看是否有进入下一目录的权限
- 根据下一目录的inode信息查找到下一目录的区块,并查找下下目录的inode信息
- 重复2-4,直到找到文件,读出文件
我们写入文件的时候会分配inode和区块,并且写入完成后会将对应使用的信息更新到超级区块中,这时候如果出现掉电将会导致只有inode对照表和一些数据区块被写入,但是超级区块并没有更新,导致元数据的内容和实际的存放区域不一致,如果每次都要检查需要耗费大量的时间。这时候就萌生了日志式文件系统
1.2 日志式文件系统
所谓日志式文件系统是专门有一块区域用来记录写入和修改文件时的步骤,当出现数据记录的问题时,查找日志记录就可以直到哪个文件发生了问题。其中XFS文件系统就是日志式文件系统,xfs也有inode和区块只不过inode和区块是动态产生的。
xfs主要有下面三个部分:
- 数据区(和ext很像,有很多的存储区群组包括超级区块,inode,数据区块等)
- 文件系统活动区(日志区)
- 实时运行区
文件在建立时会现在实时运行区找到多个区块,将文件放到区块中,等到分配完毕后才会写入到数据区块和inode中。
2 文件系统操作
2.1 查看磁盘与目录容量
- df :查看文件系统的整体磁盘使用量
- du:查看文件系统的磁盘使用量(查看目录所占的磁盘空间)
2.2 硬连接与符号链接ln
ln 链接源文件 链接文件 硬连接
ln -c 链接源文件 链接文件 符号链接
注意链接文件是由ln创建,不能使用原有的文件做链接文件。由于一个目录有. .. /(等用于.指向自己) 三个目录,所有创建新目录时,新目录链接数为2,上一目录链接数加1。
硬连接:与源文件共用一个inode,相当于C++的起别名,既不会增加inode也不会消耗区块数量。
符号链接:等同于快捷方式,链接文件大小取决于源文件名字长度,是一个新文件占用inode与区块。
3 磁盘使用
磁盘使用必须经过:分区,格式化,挂载三个步骤。常用的命令gdisk/fdisk,mkfs,mount/umount。
此篇幅过于长需要用时查阅就好,重点需要注意文件的分区表格式运用对应的分区命令,不然系统会挂。。。(msdos是MBR格式。。。血的教训)。
一当需要卸载磁盘时,需要退出磁盘目录,再用umount进行卸载。