承接昨天的学习内容,linux的ext2文件系统通常有两大组成部分:inode和block。
其中,若inode用于存储文件的限权;block用于存储文件的实际数据。
若文件小于block,则该block的剩余容量就不能够再被使用了,会造成磁盘空间的浪费。
inode table(inode 表格):
如前所述,inode的内容在记录文件的属性以及该文件实际数据是放置在哪几号block内。基本上,inode记录的文件数据至少有下面这些:
1 该文件的存取模式(限权);
2 该文件的拥有者和群组;
3 该文件的容量;
4 该文件建立或状态改变时间(ctime);
5 最近一次的读取时间(atime);
6 最近一次的修改时间(mtime);
7 定义文件特性的flag(隐藏属性,suid);
8 该文件真正内容的指向。
在ext2中,每个inode的大小均为128bytes,现在的ext4的inode大小可以定义为256bytes。
每个文件仅占用一个inode。如果文件过大,系统会产生间接记录区,双间接记录区,三间接记录区。前12个为直接记录。
假设一个block为1kb:
12个直接记录:12*1kb;
1个间接记录:256*1kb;
1个二间接记录:256 * 256 * 1kb;
1个三间接记录:256*256 × 256 ×1kb。
总共16gb。
superblock(超级区块):
superblock是记录整个filesystem相关信息的地方。
主要信息有:
1 block与inode的总量;
2 未使用/已使用的inode和block数量;
3 filesystem的挂载时间,最近一次的写入时间,最近一次磁盘检查的时间等;
一般来说,一个superblock的大小为1024bytes。
filesystem description:记录区段开始和结束的block号码。
block bitmap:记录空的block。
inode bitmap:记录空的inode。
dumpe2fs:查询ext家族superblock信息的指令。
blkid:输出目前系统有被格式化的装置。
文件系统与目录树的关系:
当我们在linux下的文件系统建立一个目录时,文件系统会分配一个inode与至少一块block给该目录;其中,inode记录该目录的相关限权和属性,并可记录分配到那块block号码,而block则是记录在这个目录下的文件名与该文件名占用的inode号码。