磁盘存储的最小单位是扇区(sector),8个sector组成一个block,每个block大小为4k 操作系统读取磁盘时,以block为单位。
系统存储文件的数据,分为两种。元数据和数据块。同样,硬盘存储也在系统格式化的时候被分为两部分。分别存储元数据和数据块。
元数据是存储文件元信息的地方。这些元信息包括:文件创建者,文件所属组,文件权限信息,文件时间信息,文件类型(regular file,character special file,block special file,symbolic link 等等),文件大小,文件链接数,文件数据block的位置等等。除了文件名之外的所有信息都存储在这个元数据里面。
这些元数据可以通过命令stat查看。
操作系统并不使用文件名,而是通过inode来是被不同的文件。当读取文件时,系统通过文件名能够查找到该文件的inode,当文件被打开后,系统对文件的操作都是通过inode了,不再需要文件名了。所以元数据中不需要文件名。文件的文件名,就好像是操作系统之间的桥梁。
可得,该系统的inode大小为4k
文件夹的表结构信息。 目录也是一种文件,这个文件保存了很多的目录项(dirent),这些目录项里面存储有文件名和inode的对应关系。
如果只有只读权限,只能反问目录的目录项,获得文件的inode,并不能访问inode的所有相关信息。 如果有了执行权限,就可以获取inode的相关信息了。
查看inode的字节数
元数据存储在inode table中,每个文件的元数据条目,成为inode entry 不同的文件系统中,inode结构不同。以前曾经有过13指针的结构,现在常用在ext4文件系统中的是15指针的结构:
12个直接指针:每个指针指向4096k(1个block大小)的数据块,所指向内容大小:4k*12=48k
1个间接指针:该指针指向一个4096k大小的数据块,该数据块存储着指向内容数据块的指针,一共4k1024个(每个指针32位,所以每个指针占4个字节),共10244k=4M
1个2重间接指针:所指向内容大小:1024*4M=4G
1个三重间接指针:所指向内容大小:1024*4G=4T
数据块是存储具体文件内容的地方。数据块的访问是通过inode中的数据块指针访问的。
软链接的inode和源文件是不同的。但是软链接的文件名指向源文件的文件名,软链接文件通过源文件来获取inode,然后访问文件的具体内容。软链接相当于新建了一个文件,所以他们的inode是不同的。
软链接可以不在同一分区。
硬链接相当于文件的“别名”,硬链接与源文件在目录的目录项中存有相同的inode。指向某个inode的文件名数,就是硬链接数,每增加一个,会在ll时显示出来。 硬链接必须在同一个分区中,不能跨文件系统。
文件的删除,只是删除了目录项中,文件名、inode与存储块之间的关系,并不会直接清除掉存储块处的数据,所以数据删除后,是可能恢复的。如果想要删除掉存储块处的数据,只需要做一次大量的拷贝或者格式化该分区。
对于文件夹,可以创建软链接,但是不能够创建硬链接。
图中,/root/Downloads文件夹不能够建立硬链接,却有2个别称,这是因为/root/Downloads目录下面..这个链接的存在。 而/root文件夹有27个别称,这是因为/root下面的每个文件夹中,都有一个指向/root的别称/root/A/..
文件新建时,系统会自动给文件一个inode,来标识这个文件。 当文件读取时,会产生一个文件描述符:fd(file description)。
others: 超级块(superblock),占据1号物理块,作用于文件系统上,是文件系统的控制块。如果访问一个分区,首先要访问的是该分区的超级块。超级块的数据损毁后,整个磁盘都有可能坏,所以需要经常备份超级块。 `
原文地址:http://qing5jl.blog.51cto.com/10155131/1832576