文件系统:
Linux提供了层次结构的目录和文件,文件系统将磁盘划分为每1024(或512)个字节为一组的块。编号从0到整个磁盘空间的最大块数
当我们使用ls -来查看时,我们发现,除了看到文件名,还能看到文件元数据
- 每行包含7列:模式,硬链接数,文件所有者,组,大小,最后修改事件,文件名
- ls -l读取存储咋磁盘上的文件信息,任何显示出来
- 除了用这个方式来读取,还可以用一个stat命令能够看到更多的信息
ionde:
为了能够解释清楚inode我们先简单了解一下文件系统
- 超级块:存放文件系统本身的结构信息;数据块还有多少未被使用,属性区还有多少未被使用
- i节点:存放文件属性,如文件大小,所有者,最近修改时间等
- 数据区:存放文件内容。磁盘上所有块的大小都相同,如果文件所包含了超过一个块的内容,则文件内容存放再多个磁盘块中,并把磁盘块的分配情况记录再文件的i节点中的磁盘序列表中
创建一个文件失败的原因:
- 数据区满了
- inode满了
- 位图满了(可能小)
将属性与数据分开存放的想法看起来简单,但是实际上是如何工作的呢?我们通过touch一个新文件来看看如何工作
创建一个新文件主要有以下4个操作:
- 存储属性:内核先找到一个空闲的i节点(这里是1049405),内核把文件信息记录到其中
- 存储数据:该文件需要存储再三个磁盘块,内核找到了三个空闲快,分别是300,500,800.将内核缓冲区的第一块数据复制到300,下一块复制到500,以此类推
- 记录分配情况:文件内容按300,500,800存放。内核在index上的磁盘分布区记录了上述块列表
- 添加到文件名目录:新文件名是abc,Linux如何在当前的,别中记录这个文件?内核将入口(263466,abc)添加到目录文件。文件名和inode之间的对应关系将文件名和文件的内容及属性连接起来