Linux文件系统分析之二(超级块,i节点位图和逻辑块位图)
2015-11-01 15:15
1966 查看
第二个扇区和第一个扇区一样属于引导块,这里就不列举出其内容了,这里的一块是两个扇区即1024B。接下来的一块就是大名鼎鼎的超级块了。其内容如下:
00000400h: E0 01 A0 05 01 00 01 00 13 00 00 00 00 1C 08 10 ; ??............
00000410h: 7F 13 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ...............
00000420h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000430h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000440h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000450h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000460h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
后面一直到该磁盘块结束的地方全部都是0:
000007f0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
下面列出这个超级块的结构:
struct super_block{
unsigned short s_ninodes; i节点数(1E0=480)
unsigned short s_nzones; 逻辑块数(5A0=1440刚好是软盘的容量)
unsigned short s_imap_blocks; i节点位图所占用的数据块数(1块)
unsigned short s_zmap_blocks; 逻辑块位图所占用的数据块数(1块)
unsigned short s_firstdatazone; 第一个数据逻辑块号(13H=19块)
unsigned short s_log_zone_size; log(数据块数/逻辑块)
unsigned long s_max_size; 文件最大长度
unsigned short s_magic; 文件系统魔数(137F)
...//后面的成员仅出现在内存中,不列举出来。
这个superblock的信息就这么多,它表示该文件系统有480个i节点,逻辑块数是1440,每块是1024B,所以总容量就是软盘容量了。i节点位图和逻辑块位图都只占用一个数据块。第一个数据块块号是19号,这里存放的是"/"根文件了,等会儿就可以看到了。
接下来的一个磁盘块就是所谓的i节点位图块了,这已经是第3个磁盘块了。
00000800h: FF FF FF FF FF FF DD FF 7F 01 00 00 00 00 00 00 ; ???????.......
00000810h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000820h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000830h: 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF ; ............????
00000840h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
00000850h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
00000860h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
后面一直到该磁盘块结束的地方全部都是1:
00000bf0h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
这里到00000830h行0结束的地方,总共有60个字节,即480位,与超级块中的i节点数480吻合。这480个位中,为1的表示i节点在用,为0的表示空闲。
逻辑块位图的原理和i节点位图一模一样,这里省略其分析。到此已经分析完了4个磁盘块。
00000400h: E0 01 A0 05 01 00 01 00 13 00 00 00 00 1C 08 10 ; ??............
00000410h: 7F 13 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ...............
00000420h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000430h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000440h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000450h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000460h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
后面一直到该磁盘块结束的地方全部都是0:
000007f0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
下面列出这个超级块的结构:
struct super_block{
unsigned short s_ninodes; i节点数(1E0=480)
unsigned short s_nzones; 逻辑块数(5A0=1440刚好是软盘的容量)
unsigned short s_imap_blocks; i节点位图所占用的数据块数(1块)
unsigned short s_zmap_blocks; 逻辑块位图所占用的数据块数(1块)
unsigned short s_firstdatazone; 第一个数据逻辑块号(13H=19块)
unsigned short s_log_zone_size; log(数据块数/逻辑块)
unsigned long s_max_size; 文件最大长度
unsigned short s_magic; 文件系统魔数(137F)
...//后面的成员仅出现在内存中,不列举出来。
这个superblock的信息就这么多,它表示该文件系统有480个i节点,逻辑块数是1440,每块是1024B,所以总容量就是软盘容量了。i节点位图和逻辑块位图都只占用一个数据块。第一个数据块块号是19号,这里存放的是"/"根文件了,等会儿就可以看到了。
接下来的一个磁盘块就是所谓的i节点位图块了,这已经是第3个磁盘块了。
00000800h: FF FF FF FF FF FF DD FF 7F 01 00 00 00 00 00 00 ; ???????.......
00000810h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000820h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000830h: 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF ; ............????
00000840h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
00000850h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
00000860h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
后面一直到该磁盘块结束的地方全部都是1:
00000bf0h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; ????????????????
这里到00000830h行0结束的地方,总共有60个字节,即480位,与超级块中的i节点数480吻合。这480个位中,为1的表示i节点在用,为0的表示空闲。
逻辑块位图的原理和i节点位图一模一样,这里省略其分析。到此已经分析完了4个磁盘块。
相关文章推荐
- Linux文件系统分析之一(工具与方法)
- linux 常用基础命令 mkdir 详细介绍
- GCOV简易使用
- How To:配置Linux iSCSI客户端
- Linux编辑器vi使用方法详细介绍
- CentOS 6.5下安装MySQL 5.6.21
- Linux战地日记—Vi查找字符串
- Xmanager Enterprise Linking VM Redhat Linux AS4.7 X64–Server Configuration
- CentOS 6.5 源码安装gcc-5.2.0
- linux修改系统和硬件时间
- Linux文件管理常用命令
- Linux性能检测命令 - vmstat
- linux c学习笔记——消息队列
- 一个介绍linux的博客
- 【Linux 内核】文件系统(概念篇)
- Linux下*.tar.gz文件解压缩命令
- CentOS下安装Scala(事例为Scala2.11.7) 2015
- 【转载】Linux下makefile详解--跟我一起写 Makefile
- linux yum源更新
- linux笔记:压缩解压命令gzip,gunzip,tar,zip,unzip,bzip2,bunzip2