Linux文件系统学习

Linux常见文件系统ext2(linux second extended file system)
Linux文件系统包含三个组成部分:inode、data block、super block。
super block:记录此文件系统的整体信息,包括inode/block的总量、使用量、剩余量、以及文件系统的格式与相关信息等
inode:记录文件的属性,一个文件占用一个inode,保存此文件的数据所在的block编号
data block:实际记录文件的内容,若文件过大,会占用多个block
启动扇区
block group1
block group2
block group3
block groupn
每个block group组织图
super block
文件系统描述(配置信息)(file system description)
块对应表(blcok bitmap)
inode对应表(inode bitmap)
inode table
data block

每一个data block只能够放置一个文件的数据。
在Ext2文件系统中所支持的data block大小有1KB、2KB、4KB三种。

inode包含的数据: 文件的访问模式、文件的所有者和组、文件的大小、ctime、atime、mtime、定义文件特性的标识,如SetUID等、文件真正内容的指向。
每个inode大小均固定为128bytes。
每个文件都只占用一个inode。
一个data block占用inode的4byte。

data block大小
1KB
2KB
4KB
最大单一文件限制
16GB
256GB
2TB
最大文件系统总容量
2TB
8TB
16TB
一个inode所能记录的data block数量是有限的,所以系统需要借助data block记录data block数量。
一个系统将一个inode分为12个直接、一个间接、一个双间接、一个三间接记录区。
直接:inode直接记录data block标号 。以1KB为例,12*1KB
间接:inode记录一个data block编号,data block记录更多的data block。以1KB为例,(1KB/4B)*1KB = 256KB
双间接:借助两层data block记录更多的data block。以1KB为例,(1KB/4B)*(1KB/4B)*1KB
三间接:借助三层data block记录更多的data block。以1KB为例,(1KB/4B)*(1KB/4B)*(1KB/4B)*1KB

一个文件系统应该仅有一个super block,在第一个block group中。其他的block group中也可能含有super block,主要作为第一个block group中的super block的备份。
file system description:描述每个block group的开始与结束的block号码,以及说明每个区段分别介于哪一个block号码之间。
block bitmap:记录block的使用状态。
inode bitmap:记录使用和未使用的inode号码。

对于目录:ext2会分配一个inode和至少一个data block给一个目录,其中inode记录该目录的相关权限和属性,并记录分配到的那块data block号码;而data block则记录在这个目录下的文件名和该文件名占用的inode 号码。
对于文件:ext2会分配一个inode和适合这个文件大小的data block数量给该文件。

在ext2下创建一个文件,系统的行为:
1、先确定用户对于想要增加文件的目录是否具有w和x的权限,如果有才能添加;
2、根据inode bitmap找到没有使用的inode号码,并将新文件的权限、属性写入;
3、根据block bitmap找到没有使用的block号码,并将实际数据写入block中,同时更新inode,使其记录存储数据的block;
4、同步更新inode bitmap和block bitmap,根据刚才使用的indoe和block,并更新super block的内容。

不管目录还是文件,都会有对应的inode和data block,inode记载权限相关;目录的data block记录目录下的文件名和该文件所占用的inode编号;对于文件而言,data block记录的是文件的内容。
读取文件的流程:
1、通过挂载点获取到根目录的inode,判断权限
2、读取根目录data block找到对应目录的inode和data block号码;
3、先读取目录的inode判断权限,如果有权限再读取data block内容;
4、重复2-3的内容,直到最后的文件和目录

一个文件,如果数据没有更改过,那么该数据就是clean的,否则是dirty的。

df:列出文件系统的整体磁盘使用量
du:评估文件系统的磁盘使用量

df [-ahikHTm] [目录或文件名]
-a:列出所有文件系统,包括系统特有的/proc等文件系统
-h:以GB、MB、KB等格式自行显示,单位系统自动决定
-i:不用硬盘容量,而已inode的数量来显示
-k:以KB为单位显示
-m:以MB为单位显示
-H:以1000位进位单位,而不是1024
-T:显示该分区的文件系统名称

du [-ahsSkm] [文件或目录名称]
-a:列出制定目录下的所有文件的大小,默认仅显示目录大小
-h:以GB、MB、KB等格式自行显示,单位系统自动决定
-s:仅列出总量,而不列出目录下每个目录各自的容量
-S:仅统计一层目录,而不统计子目录
-k:以KB为单位显示
-m:以MB为单位显示

df适合查看文件系统所占的大小和剩余容量,du适合查看目录和文件容量。

硬连接和符号连接
硬连接示意图
ln 源文件名 硬连接文件名
硬连接的限制:1、不能跨文件系统;2、不能连接到目录

符号连接示意图

ln -s 源文件名 符号连接文件名
当源文件删除后,符号连接也就打不开了。
符号连接的data block中存储的是源文件的完整路径。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值