论文部分内容阅读
摘要:智能网络磁盘(Intelligent Network Disk,IND)存储系统被定义为以数据为中心的,由多个同构型的智能化、微型化、网络化存储单元IND组成的新型网络存储系统。文章从IND的特性出发,对FAT文件系统进行分析研究,设计了一种精简的、能满足IND需要的、基于FAT24的类FAT文件系统INDFS(IND File System)。
关键词:存储系统;IND;嵌入式系统;文件系统;FAT24
引言
全球信息化,带来了数据量的爆炸式增长和数据流的急速膨胀,刺激了计算机网络技术的快速发展,也推动了网络存储技术的发展。从DAS、NAS到SAN和IP-SAN,存储架构实现了以服务器为中心到以数据为中心的转化。
DAS存储设备寄生在相应的服务器里,完全以服务器为中心;所有的客户请求和响应、控制流和数据流都必须经过服务器,服务器成为I/O的瓶颈。基于将控制流和数据流分开的思想,NAS将存储器直接连到网络上,不再挂在服务器后端,服务器仅起控制管理的作用,从而减轻了服务器的工作负载,使系统的整体性能得到提高;但随着文件请求增加到一定程度,服务器的性能会显著地下降,而且服务器的存在必然会有单点故障问题。SAN提供了数据块传输、可伸缩的虚拟存储和远程备份,但由于其昂贵的价格,只有小部分的高端应用采用SANt2J。我们尝试用智能化、网络化、微型化的存储单元建立一种以数据为中心的较低成本的存储体系,即本文要研究的智能网络磁盘(Intelligent Network Disk,IND)存储系统。
1、关子智能网络磁盘IND及其文件系统INDFS
智能网络磁盘IND存储单元是具有IDE接口、高速以太网接口的嵌入式系统。该系统装有嵌入式实时操作系统,运行分布式、智能化的存储管理软件,挂接廉价的IDE大容量硬盘,所有直接接入网络的存储单元形成一个逻辑上完全为一体的,能实现快速存取的、具有数据容错和负载均衡功能的文件服务器集群。由IND作为基本单元组成的存储系统就是IND存储系统,其存储体系结构见图1所示,IND单元结构如图2所示。
存储系统提供网络数据和文件服务,其中操作系统的选择和文件系统的定制是至关重要的。鉴于IND被定义为一个精简的较低成本的嵌入式系统,我们为IND选择了由Micriμm公司提供的,性能优良、源码公开、科研免费的实时操作系统内核uC/OS-II。Micriμm公司还提供了uC/FS,供uC/OS-II用户扩展文件系统用。uC/FS是一种基于FA732的类FAT文件系统,但需要付费。考虑到本系统的特点和进行科学研究的需要,我们决定开发自己的文件系统。该文件系统应该具有以下特性:能够存取当前流行的大容量IDE硬盘;可以实现多层次文件目录结构;能可靠快速访问磁盘文件;能兼容FAT文件系统;结构精简,能有效地利用嵌入式系统有限的系统资源。这样一种用于IND的文件系统笔者称之为INDFS。
2、基于FAT24的INDFS的提出
考虑到INDFS要能兼容FAT文件系统,笔者提出了一种基于24位FAT表(FAT24)的INDFS。
2.1关于FAT文件系统
FAT文件系统的基础是FAT(File Allocation Table,文件分配表),它在管理磁盘时,将逻辑盘的数据区划分为一个个簇(Cluster),作为磁盘文件分配的基本单位。簇由2n个连续的扇区组成,簇的大小一般依据磁盘的容量和FAT的类型而定。表1列出了不同容量下FAT32逻辑盘卷簇的大小和数目。簇依次编号,即得簇号。将簇号作为纪录编号,簇的状态作为纪录内容,组成一个反映整个磁盘簇分配和占用情况的一维表格,即FAT表。使用12位编号,即得FAT12,同理可得到FAT16、FAT32。某文件在磁盘上的存储分配情况反映在FAT表中是一个簇号单向链表,访问该文件只需记住文件存储的首簇号即可。而目录被视为特殊文件,目录表中保存了各文件或下一级目录的首簇号。当加载某个逻辑磁盘时,其FAT表也被载入内存,某一文件目录表在访问时也被载入内存,这样可以非常方便地实现对磁盘文件目录的读写。FAT文件系统就是这样一个以FAT为基础的、支持多级文件目录的文件系统。
2.2 FAT12、FAT16不适于IND大容量硬盘
FAT12是为容量仅为几百K的软磁盘提出来的,FAT16也只能管理最大2GB的硬盘分区,现主要用于存储容量较小的可移动存储媒介。它们不能满足IND所使用的当前流行的大容量IDE硬盘的要求。
2.3 FAT32存在巨大的信息冗余不适于资源受限的IND
(1)FAT32存在巨大的信息冗余
通过对不同容量的FAT卷的分析可知,32位FAT表有巨大的信息冗佘。表1所示为不同容量的逻辑硬盘使用WIN98或WIN2000,WINXP格式化成FAT32卷后的簇容量及簇数目。
从表1可看出,随着硬盘容量的剧增,簇也变大,而簇数目却保持在220221之间,即使卷容量为128GB时,簇数目也仅为222。222个簇,意味着只需要22个二进制位就可表达了,而32位FAT表最多可以表达222簇,以每簇4KB计,就可以映射16TB的卷。事实上,FAT32仅用了28位表示簇号(高4位为0),即便如此,相对于22位仍有巨大信息冗余。
(2)在资源有限的嵌入式系统,FAT32难以发挥其优越性
FAT32比较FA716有很多的优越性,它能支持更大容量的硬盘,比FAT16能有效地利用磁盘空间。但是FAT32占用的系统资源要多得多。一方面,32位FAT表与16位FAT表即使有同样数目的簇,FAT32表的大小也是FAT16表的两倍;另一方面,簇数的增多,也会使FAT32变得庞大。若使用全部的32位表示簇,最多簇数目为232,仅FAT表就将达到4*232=16GB。我们不敢想象将16GB的FAT表读入内存,也不敢想象在16GB的FAT表中搜索FAT表项。这样,我们对FAT32在运用过程中仅使用28位表示簇,在表1中使簇数目保持在220-222之间就容易理解了。由此可见,FAT32的性能没有得到最大程度地发挥,尤其在系统资源较为紧张时。既然这样,我们为什么不把FAT的位数降低呢?
2.4建立基于24位FAT表的INDFS
通过上述对FAT文件系统及FAT卷簇数目的分析,我们受到了启发:应该建立基于24位FAT表(FAT24)的INDFS。
FAT24与FAT12、FAT16、FAT32相对应,就是用24个二 进制位表示簇序号,将逻辑磁盘中所有簇的存储分配情况映射到一个以簇号作为纪录号的一维表中,形成FAT24表。INDFS可以被设计成一个以FAT24为基础的类FAT文件系统。该文件系统能较好地满足INDFS的功能特性。
(1)基于FA724的INDFS易于实现与FAT文件系统的兼容。由于INDFS源于FAT文件系统,且都以FAT为基础,因此易于实现与FAT16、FAT32的兼容。
(2)基于FAT24的INDFS能满足IND对大容量硬盘管理的需求。若以每簇16KB计,使用22位表示簇,则可映射16*222=64GB的卷,使用多个卷,物理磁盘容量则可达128GB以上。IND使用廉价的、流行的IDE接口硬盘,这些硬盘的存储容量一般也是在80GB-200GB左右,更多容量的存储需求可通过使用多个IND来解决。
(3)基于FAT24的INDFS比FAT32结构精简,能有效地利用系统资源,适于IND之类的嵌入式系统。FAT表降低8位,仅FAT表大小就可缩减四分之一,与之相关联的文件目录表、文件操作等数据结构都要简化,因此从总体上可以较大幅度地降低内存等系统资源的占用。虽然,基于FAT24的INDFS,面对32位系统架构,算法设计略复杂些,但对于IND这样一个资源受限的嵌入式系统来说,内存的节约在性能上的提升应该是主要的。
3、基于FAT24的INDFS的设计
基于FA724的INDFS的设计包括逻辑结构设计、主要数据结构描述和基本算法设计。
3.1 INDFS的逻辑结构设计
在uC/OS-II操作系统的调度下,INDFS承上支持智能化网络存取应用软件或其他存储管理应用程序,启下通过存储设备驱动程序管理大容量存储设备(这里是IDE硬盘),完成文件的存取工作。其逻辑结构可以用图3来表示。
在图3中,虚线框内为INDFS的基本结构。其中文件管理和目录管理两大模块为上层提供所有与操作文件和目录相关的函数(API),文件目录表管理和文件分配表管理两个模块维护着INDFS两个最基本的也是最重要数据结构:文件目录表FDT和文件分配表FAT,逻辑磁盘模块是INDFS的载体,它定义了逻辑磁盘的基本参数,使INDFS可以管理多个逻辑盘,高速缓存(CATHE)用于提高读写磁盘的速度。此外,格式化实用程序完成]HDFS磁盘卷的初始化工作,底层驱动程序实现INDFS与]DE大容量存储设备的通讯。
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文
关键词:存储系统;IND;嵌入式系统;文件系统;FAT24
引言
全球信息化,带来了数据量的爆炸式增长和数据流的急速膨胀,刺激了计算机网络技术的快速发展,也推动了网络存储技术的发展。从DAS、NAS到SAN和IP-SAN,存储架构实现了以服务器为中心到以数据为中心的转化。
DAS存储设备寄生在相应的服务器里,完全以服务器为中心;所有的客户请求和响应、控制流和数据流都必须经过服务器,服务器成为I/O的瓶颈。基于将控制流和数据流分开的思想,NAS将存储器直接连到网络上,不再挂在服务器后端,服务器仅起控制管理的作用,从而减轻了服务器的工作负载,使系统的整体性能得到提高;但随着文件请求增加到一定程度,服务器的性能会显著地下降,而且服务器的存在必然会有单点故障问题。SAN提供了数据块传输、可伸缩的虚拟存储和远程备份,但由于其昂贵的价格,只有小部分的高端应用采用SANt2J。我们尝试用智能化、网络化、微型化的存储单元建立一种以数据为中心的较低成本的存储体系,即本文要研究的智能网络磁盘(Intelligent Network Disk,IND)存储系统。
1、关子智能网络磁盘IND及其文件系统INDFS
智能网络磁盘IND存储单元是具有IDE接口、高速以太网接口的嵌入式系统。该系统装有嵌入式实时操作系统,运行分布式、智能化的存储管理软件,挂接廉价的IDE大容量硬盘,所有直接接入网络的存储单元形成一个逻辑上完全为一体的,能实现快速存取的、具有数据容错和负载均衡功能的文件服务器集群。由IND作为基本单元组成的存储系统就是IND存储系统,其存储体系结构见图1所示,IND单元结构如图2所示。
存储系统提供网络数据和文件服务,其中操作系统的选择和文件系统的定制是至关重要的。鉴于IND被定义为一个精简的较低成本的嵌入式系统,我们为IND选择了由Micriμm公司提供的,性能优良、源码公开、科研免费的实时操作系统内核uC/OS-II。Micriμm公司还提供了uC/FS,供uC/OS-II用户扩展文件系统用。uC/FS是一种基于FA732的类FAT文件系统,但需要付费。考虑到本系统的特点和进行科学研究的需要,我们决定开发自己的文件系统。该文件系统应该具有以下特性:能够存取当前流行的大容量IDE硬盘;可以实现多层次文件目录结构;能可靠快速访问磁盘文件;能兼容FAT文件系统;结构精简,能有效地利用嵌入式系统有限的系统资源。这样一种用于IND的文件系统笔者称之为INDFS。
2、基于FAT24的INDFS的提出
考虑到INDFS要能兼容FAT文件系统,笔者提出了一种基于24位FAT表(FAT24)的INDFS。
2.1关于FAT文件系统
FAT文件系统的基础是FAT(File Allocation Table,文件分配表),它在管理磁盘时,将逻辑盘的数据区划分为一个个簇(Cluster),作为磁盘文件分配的基本单位。簇由2n个连续的扇区组成,簇的大小一般依据磁盘的容量和FAT的类型而定。表1列出了不同容量下FAT32逻辑盘卷簇的大小和数目。簇依次编号,即得簇号。将簇号作为纪录编号,簇的状态作为纪录内容,组成一个反映整个磁盘簇分配和占用情况的一维表格,即FAT表。使用12位编号,即得FAT12,同理可得到FAT16、FAT32。某文件在磁盘上的存储分配情况反映在FAT表中是一个簇号单向链表,访问该文件只需记住文件存储的首簇号即可。而目录被视为特殊文件,目录表中保存了各文件或下一级目录的首簇号。当加载某个逻辑磁盘时,其FAT表也被载入内存,某一文件目录表在访问时也被载入内存,这样可以非常方便地实现对磁盘文件目录的读写。FAT文件系统就是这样一个以FAT为基础的、支持多级文件目录的文件系统。
2.2 FAT12、FAT16不适于IND大容量硬盘
FAT12是为容量仅为几百K的软磁盘提出来的,FAT16也只能管理最大2GB的硬盘分区,现主要用于存储容量较小的可移动存储媒介。它们不能满足IND所使用的当前流行的大容量IDE硬盘的要求。
2.3 FAT32存在巨大的信息冗余不适于资源受限的IND
(1)FAT32存在巨大的信息冗余
通过对不同容量的FAT卷的分析可知,32位FAT表有巨大的信息冗佘。表1所示为不同容量的逻辑硬盘使用WIN98或WIN2000,WINXP格式化成FAT32卷后的簇容量及簇数目。
从表1可看出,随着硬盘容量的剧增,簇也变大,而簇数目却保持在220221之间,即使卷容量为128GB时,簇数目也仅为222。222个簇,意味着只需要22个二进制位就可表达了,而32位FAT表最多可以表达222簇,以每簇4KB计,就可以映射16TB的卷。事实上,FAT32仅用了28位表示簇号(高4位为0),即便如此,相对于22位仍有巨大信息冗余。
(2)在资源有限的嵌入式系统,FAT32难以发挥其优越性
FAT32比较FA716有很多的优越性,它能支持更大容量的硬盘,比FAT16能有效地利用磁盘空间。但是FAT32占用的系统资源要多得多。一方面,32位FAT表与16位FAT表即使有同样数目的簇,FAT32表的大小也是FAT16表的两倍;另一方面,簇数的增多,也会使FAT32变得庞大。若使用全部的32位表示簇,最多簇数目为232,仅FAT表就将达到4*232=16GB。我们不敢想象将16GB的FAT表读入内存,也不敢想象在16GB的FAT表中搜索FAT表项。这样,我们对FAT32在运用过程中仅使用28位表示簇,在表1中使簇数目保持在220-222之间就容易理解了。由此可见,FAT32的性能没有得到最大程度地发挥,尤其在系统资源较为紧张时。既然这样,我们为什么不把FAT的位数降低呢?
2.4建立基于24位FAT表的INDFS
通过上述对FAT文件系统及FAT卷簇数目的分析,我们受到了启发:应该建立基于24位FAT表(FAT24)的INDFS。
FAT24与FAT12、FAT16、FAT32相对应,就是用24个二 进制位表示簇序号,将逻辑磁盘中所有簇的存储分配情况映射到一个以簇号作为纪录号的一维表中,形成FAT24表。INDFS可以被设计成一个以FAT24为基础的类FAT文件系统。该文件系统能较好地满足INDFS的功能特性。
(1)基于FA724的INDFS易于实现与FAT文件系统的兼容。由于INDFS源于FAT文件系统,且都以FAT为基础,因此易于实现与FAT16、FAT32的兼容。
(2)基于FAT24的INDFS能满足IND对大容量硬盘管理的需求。若以每簇16KB计,使用22位表示簇,则可映射16*222=64GB的卷,使用多个卷,物理磁盘容量则可达128GB以上。IND使用廉价的、流行的IDE接口硬盘,这些硬盘的存储容量一般也是在80GB-200GB左右,更多容量的存储需求可通过使用多个IND来解决。
(3)基于FAT24的INDFS比FAT32结构精简,能有效地利用系统资源,适于IND之类的嵌入式系统。FAT表降低8位,仅FAT表大小就可缩减四分之一,与之相关联的文件目录表、文件操作等数据结构都要简化,因此从总体上可以较大幅度地降低内存等系统资源的占用。虽然,基于FAT24的INDFS,面对32位系统架构,算法设计略复杂些,但对于IND这样一个资源受限的嵌入式系统来说,内存的节约在性能上的提升应该是主要的。
3、基于FAT24的INDFS的设计
基于FA724的INDFS的设计包括逻辑结构设计、主要数据结构描述和基本算法设计。
3.1 INDFS的逻辑结构设计
在uC/OS-II操作系统的调度下,INDFS承上支持智能化网络存取应用软件或其他存储管理应用程序,启下通过存储设备驱动程序管理大容量存储设备(这里是IDE硬盘),完成文件的存取工作。其逻辑结构可以用图3来表示。
在图3中,虚线框内为INDFS的基本结构。其中文件管理和目录管理两大模块为上层提供所有与操作文件和目录相关的函数(API),文件目录表管理和文件分配表管理两个模块维护着INDFS两个最基本的也是最重要数据结构:文件目录表FDT和文件分配表FAT,逻辑磁盘模块是INDFS的载体,它定义了逻辑磁盘的基本参数,使INDFS可以管理多个逻辑盘,高速缓存(CATHE)用于提高读写磁盘的速度。此外,格式化实用程序完成]HDFS磁盘卷的初始化工作,底层驱动程序实现INDFS与]DE大容量存储设备的通讯。
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文