认识EXT2文件系统
Linux最传统的磁盘文件系统(filesystem)使用的是EXT2格式
为什么需要分文件系统格式:
每种操作系统使用的文件系统格式都不一样
如:windows98 使用 FAT或FAT16
windows2000 使用 NTFS
Linux则使用Ext2(Linux second extended file system, ext2fs)
注意:windows操作系统不能识别Linux的Ext2文件系统。
Linux除了ext2格式,还有其他新的技术如LVM、磁盘阵列(software raid)
#
文件系统分两部份的数据
权限与属性放置到 inode 中
实际数据则放置到 data block 区块中
另外,还有一个超级区块 (superblock) 会记录整个文件系统的整体信息,包括 inode 与 block 的总量、使用量、剩余量等。
#
*Linux的EXT2文件系统(inode)
Ext2 文件系统在格式化是区分多个区块群组(block group)
1.文件系统最前面是启动扇区(boot sector),安装启动管理程序
2.启动扇区之后跟着一组组的区块群组(block group)
3.每个区块群组又分为六块储存信息:
*Superblock、
*文件系统描述、
*区块对应表、
*inode对应表、
*inode table、
*data block
#
*data block(数据区块)
数据区块存放文件内容数据,Ext2文件系统中支持block大小为1K,2K和4K三种,在格式化时block的大小就固定了
block的的大小差异,会影响文件系统能支持最大磁盘容量和最大单一文件容量,如下:
Block 大小 | 1KB | 2KB | 2KB |
---|---|---|---|
最大单一文件限制 | 16GB | 256GB | 2TB |
最大文件系统总容量 | 2TB | 8TB | 16TB |
Ext2文件系统的block基本限制如下:
原则上,block 的大小与数量在格式化完就不能够再改变了(除非重新格式化);
每个 block 内最多只能够放置一个文件的数据;
承上,如果文件大于 block 的大小,则一个文件会占用多个 block 数量;
承上,若文件小于 block ,则该 block 的剩余容量就不能够再被使用了(磁盘空间会浪费)。
*inode table(inode表格)
inode记录的文件数据内容:
-该文件的存取模式(read/write/excute);
-该文件的拥有者与群组(owner/group);
-该文件的容量;
-该文件创建或状态改变的时间(ctime);
-最近一次的读取时间(atime);
-最近修改的时间(mtime);
-定义文件特性的旗标(flag),如 SetUID...;
-该文件真正内容的指向 (pointer);
inode 的数量与大小也是在格式化时就已经固定了,除此之外还有一下特点:
1.每个 inode 大小均固定为 128 bytes;
2.每个文件都仅会占用一个 inode 而已;
3.承上,因此文件系统能够创建的文件数量与 inode 的数量有关;
4.系统读取文件时需要先找到 inode,并分析 inode 所
5.记录的权限与用户是否符合,若符合才能够开始实际读取 block 的内容。
*Superblock(超级区块)
Superblock 是记录整个 filesystem 相关信息的地方, 没有 Superblock ,就没有这个 filesystem 了。
主要记录信息:
1.block 与 inode 的总量;
2.未使用与已使用的 inode / block 数量;
3.block 与 inode 的大小 (block 为 1, 2, 4K,inode 为 128 bytes);
4.filesystem 的挂载时间、最近一次写入数据的时间、最近一次检验磁盘 (fsck) 的时间等文件系统的相关信息;
5.一个 valid bit 数值,若此文件系统已被挂载,则 valid bit 为 0 ,若未被挂载,则 valid bit 为 1 。
*Filesystem Description(文件系统描述说明)
这个区段可以描述每个 block group 的开始与结束的 block 号码,以及说明每个区段 (superblock, bitmap, inodemap, data block) 分别介于哪一个 block 号码之间。这部份也能够用 dumpe2fs 来观察的。
*block bitmap (区块对照表)
block bitmap时专门记录 未使用 的block,当需要使用时候可以快速找到空的block来使用;当友文件删除时,也会将该block标记为空
*inode bitmap (inode 对照表)
这个其实与 block bitmap 是类似的功能,只是 block bitmap 记录的是使用与未使用的 block 号码, 至于 inode bitmap 则是记录使用与未使用的 inode 号码
#
dumpe2fs
每个区段与 superblock 的信息都可以使用 dumpe2fs 这个命令来查询
方法:dumpe2fs [-bh] 装置文件名
选项与参数:
-b :列出保留为坏轨的部分(一般用不到吧!?)
-h :仅列出 superblock 的数据,不会列出其他的区段内容!
如:
[root@node1 ~]# dumpe2fs /dev/hdc2