作业八
|Last edited: 2024-12-5

一、总结Linux的虚拟文件系统VFS。

1、什么是VFS?
虚拟文件系统(VFS)是建立在具体文件系统与操作系统之间的一个抽象层。使得不管使用哪种具体文件系统,在操作系统看来,都可以使用相同的文件系统调用接口,将其包装成系统调用,对文件进行操作。
 
2、Linux中的VFS
从宏观角度看,Linux的文件系统可以分为三层:
1)操作系统有关文件系统的系统调用(System-call )
2)虚拟文件系统VFS
3)具体挂载到VFS上的各种具体文件系统(可以同时有多个具体文件系统挂载到VFS上)
用户对于文件的操作具体流程为:
API/库函数(write()、read()等)—> 系统调用(sys_write()、sys_read())等 —> VFS提供的文件操作接口 —> 具体文件系统的文件操作 —> 物理存储设备执行相关操作
 
为了给操作系统提供一个统一的文件模型,Linux的VFS定义了四种对象,分别是:超级块(superblock)、i节点(Inode)、目录项(directory entry)、文件(file)
超级块:当文件系统挂载后,超级块会读取具体文件系统的超级块中的信息并常驻内存,部分字段是动态产生的。其中存储的一般是有关该文件系统的一些基本信息,如:根目录位置、i节点起始位置等等。同时,Linux内部的super_operations结构体中定义了有关超级块的一系列操作。
inode节点:i节点全称为索引节点,在文件系统中,每个文件会对应一个inode节点,节点中存储了有关该文件的元数据。同时,VFS中的inode节点与磁盘中具体的inode节点也存在一对一的映射关系。同样,Linux内部的inode_operations结构体中定义了有关inode节点的一系列操作。
目录项:目录项提供了名字空间到inode节点之间的映射关系,其与inode节点结合起来,提供了用户检索文件存储位置的高效方法,一切的查找均从根目录开始。Linux内部的dentry_operations定义了有关目录项的一系列操作。
文件:VFS中的file存储的并不是具体的文件数据,而是“打开文件表”,其中记录了一些对于系统正在操作的文件相关的一些信息,如文件的打开模式,读写位置等等。Linux内部的file_operations定义了有关文件的一系列操作。
对于用户而言,文件描述符对应一个打开文件表(也就是文件对象),文件对象指向一个目录项,目录项中存储了该文件对应的inode节点,从而通过inode节点对磁盘上的信息进行操作。
 

二、总结RAID技术

在磁盘运行过程中,由于多种原因,存储的数据可能会出现错误,其中的一些错误可能会对整个磁盘系统造成灾难性影响,所以我们需要对磁盘进行校正、纠错的技术。
RAID(Redundant Arrays of Independent Disks 独立磁盘冗余阵列)技术不仅提供了高容错、高可靠性存储方法,还提高了文件系统的性能。
性能提高:RAID0 通过数据条带化(分成多个块),并行读取/写入多块磁盘,以提高数据传输率。
安全性提高:
RAID有多种方式提高磁盘的安全性。
1)RAID 1 镜像:将文件复制一份存在另一块磁盘中,这种方法数据的安全性最好,但磁盘利用率只有50%
2)RAID 2 海明码校验:一些磁盘存储数据,另一些磁盘存储对应数据的海明码,在读取数据时,数据和海明码可以并行读取并进行判断,但缺点仍是存储效率较低
3)RAID 3/4 交错字节/块奇偶校验:将数据按照字节/块为单位进行划分,并设置独立的磁盘专门存储校验信息,通过将颗粒度放大,提高了存储效率,并且能够取得比较好的检错效果。
4)RAID 5 交错块分布式奇偶校验,RAID 3/4的问题也很明显,只要存储校验位的磁盘损坏,那么整个系统的校验技术就失效了,RAID 5将奇偶校验位存储在不同的磁盘,提高了读取效率,也提高了数据的可靠性。
5)RAID 6 交错块双重分布式奇偶校验,在RAID5的基础上设置双重校验码,进一步提高了安全性,但是也同时降低了写入效率。
6)RAID 7 最优化异步高I/O速率及高数据传输率,它结合了 RAID 5 和 RAID 1 的优点,同时引入了 缓存机制 和 独立的写入缓存 来提高性能,它使用专用的缓存磁盘,所有的写操作首先写入到缓存中,然后在后台将数据异步地写入到实际的磁盘阵列中。这减少了写入延迟,提高了写入性能。 在多种RAID中,我们还可以使用RAID嵌套,进一步提高数据的性能与可靠性,如RAID0+1与RAID1+0。
 
 
 
 
Loading...