一、都有哪几种文件系统?
简单介绍几种Linux支持的文件系统:NFS、MINIX、MS-DOS和ext2,日志文件系统:ext3、JFS和ReiserFS,同时还有加密文件系统(CFS)和虚拟文件系统(/proc)。
二、一次文件的读取过程:
用户通过输入vim fileA来打开文件,系统内部的操作是:
a、通过文件名找到文件的inode号;
b、通过inode号获取inode信息;
c、 根据文件信息找到存储文件的数据块,读取数据块中的文件的具体内容。
文件存储结构示意图:
inode也是存储在磁盘上的,磁盘格式化的时候系统会自动将磁盘分为两部分:数据区和inode区。每个inode节点的大小一般是128字节或者256字节,inode的个数一般在格式化的时候已经设定,一般是每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%。
产看每个inode节点的大小的命令:
sudo dumpe2fs -h /dev/hda | grep "Inode size"
三、文件是以怎样的形式保存的?
一个文件是由目录项、inode和数据块组成:
- 目录项:包括文件名和inode节点号
- inode:文件索引节点,包含文件的基础信息和数据块的指针
- 数据块:真正存储文件内容的磁盘上的区域
1、inode:
文件存储在磁盘上,磁盘的最小存储单位是‘扇区(sector)’,每个扇区的大小为512byte。多个扇区组成一个‘块(block)’,操作系统在读取文件的时候是以‘块’为单位进行读取的,‘块’的大小一般是在4kb。这些关于文件的元信息需要通过索引节点(inode)来进行管理。
inode包含的具体内容
- Blocks:文件数据block的位置
- Access:文件上次打开的时间
- Modify:文件上一次变动的时间
- Change:inode上一次变动的时间
- Links:硬链接数
- Size:文件字节数
- Inode:inode号,唯一标识一个inode
- Device:
Access:
查看某个文件的inode的信息的命令:
stat fileA #stat命令有许多参数都代表的不同含义
四、文件系统组件的主要体系结构
用户空间、内核空间:
用户空间包含一些应用程序(User application,例如,文件系统的使用者)和 GNU C 库(glibc),它们为文件系统调用(打开、读取、写和关闭)提供用户接口。
系统调用接口(System call interface)的作用就像是交换器,它将系统调用从用户空间发送到内核空间中的适当端点。
VFS是底层文件系统的主要接口,这个组件会统一出接口供上面操作者使用,这个统一的接口向底层面对的是不同的文件系统,