超级块 i节点 数据块 目录块 间接块
来源:互联网 发布:java统计网页访问量 编辑:程序博客网 时间:2024/04/28 20:18
超级块 i节点 数据块 目录块 间接块
发布时间:2010-5-27 来源:济南清华万博
一、物理磁盘到文件系统
文件系统是用来存储文件内容、文件属性、和目录。这些类型的数据如何存储在磁盘块上的呢?unix/linux使用了一个简单的方法。如图所示.
它将磁盘块分为三个部分:
1)
2)
3)
二、创建一个文件的过程
我们现在知道文件的内容和属性是分开存放的,那么又是如何管理它们的呢。现在我们以创建一个文件为例来讲解。在命令行输入命令:
$ who > userlist
当完成这个命令时。文件系统中增加了一个存放命令who输出内容的新文件,那么这整个过程到底是怎么回事呢?
文件有属性和内容,内核将文件内容存放在数据区,文件属性存放在i-节点,文件名存放在目录。图2显示了创建一个文件的例子,假如这个新文件要3个存储块来存放内容。
四个步骤如下:
1)
2)
3)
4)
三、创建一个目录的过程
前面说了创建一个文件的大概过程,那么创建一个目录时又是怎么回事呢?
我们知道,目录其实也是文件,只是它的内容比较特殊:包含文件名字列表,列表一般包含两个部分:i-节点号和文件名。所以它的创建过程和文件创建过程一样,只是第二步写的内容不同。一个目录创建时至少包括两个链接:“.”,“..”
我们可以通过系统命令来查看目录的内容:
上图的结果是文件名和对应的i-节点号,其中“.”表示是当前目录。而“..”是当前目录的父目录。但也有特殊情况:我们查看要目录的情况:
[root@localhost ~]# ls -i1a /
1310721 backup
我们发现“.”和“..”都指向i-节点2.实际上当用mkfs创建一个文件系统时,mkfs会将根目录的父目录指向自己
四、理解链接
五、如果有大文件如何实现
文件内容的分配情况是必须记录在i-节点的磁盘序号列表里的。但是i-节点只包含一个最多含有13个项的分配链表,如果分配的数据块超过13个块时怎么办?
Linux用到一个间接块来解决此问题.比如我们要记录14个块的编号,可以把前面10个记录在i-节点的磁盘序号列表里。另外4个编号放在一个数据块中。在i-节点的第11项里记录存放编号的数据块的指针,通过这个指针就能找到余下的4个数据块的编号,这个用来存放编号的数据就叫间接块。道理就和某些货物放在架上而把剩下的放在仓库里,并打个标签记下在仓库中具体位置的编号一样。
但当间接块也存满了时我们还可以再开第二个间接块,甚至3、4、5。。。更多额外块。但内核并不会把这些块记录在文件的i-节点的第12、13项里。而是开辟一个新的块的来存放这些间接块的列表,并在i-节点的第12项存放这一新额外块的编号。这存放着那个存储着第2、3、4、及后继额外块的编号的块的编号,这个块称为二级间接块.
同理当二级间接块饱和时还可以开辟第三级。
作者:郭宾然
- 超级块 i节点 数据块 目录块 间接块
- 超级块 i节点 数据块 目录块 间接块
- 超级块 i节点 数据块 目录块 间接块
- 超级块 i节点 数据块 目录块 间接块(转)
- 引导块,超级快,i节点表
- 超级块
- 块
- 块
- 块
- 超级块与索引节点
- 超级块与索引节点
- 目录、目录项、超级块、索引节点、文件
- ext2读取并产生间接块和数据块
- Linux文件系统分析之二(超级块,i节点位图和逻辑块位图)
- 数据块
- 数据块
- 块数据I/O操作
- linux内核注释v0.11-超级块、inode索引节点和磁盘块(逻辑块)
- 利用JAVA写一段上传文件程序(模拟Ftp客户端)
- JAVA 入门(一) 基础知识规范
- CentOS6.2启用文本模式安装
- Cocos2d宏的数学解释
- ipa解包,还原ipa里的png图片资源
- 超级块 i节点 数据块 目录块 间接块
- Windows Server2008 R2下安装Oracle 10g Checking installer requirements...
- Magento copy custom option module(自定义选项复制插件)
- Java 入门(二)数据类型 运算符 表达式 -------程序设计的静态基础
- 基于Spring框架应用的权限控制系统的研究和实现
- ORA-12505, TNS:listener does not currently know of SID given in connect desc
- System.gc()与Object.finalize()的区别
- Core Data学习(一) 基本使用
- Java 入门(三) 流程控制 -----程序设计的动态基础