FreeBSD下的内存文件系统

2009-05-13 13:06:38来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

FreeBSD下的内存文件系统
大多数操作系统,包括FreeBSD,通常使用磁盘来保存需要存储的数据。而操作系统采用文件的形式来保存数据,因此操作系统在磁盘上存储数据需要按照一定的格式进行,以便系统能够正确存储和访问文件,数据在磁盘上的组织格式被称为文件系统,不同的操作系统通常使用不同的数据组织格式,就是说使用不同的文件系统,例如FreeBSD使用UFS,而Linux使用Ext2FS等等。UFS是最古老和标准的Unix文件系统,但FreeBSD下对其进行了改进,主要目的是改善性能,改进后的文件系统也被称为FFS。
由于文件系统已经成为了操作系统访问外部磁盘数据的标准形式,操作系统很少直接访问磁盘获取数据。由于数据存储在实际应用中的重要意义,文件系统已经成为操作系统最基本的元素之一。进一步,多个操作系统可以通过同样的文件系统访问外部磁盘,而同一个操作系统也可以通过不同的文件系统访问不同的外部磁盘设备。这样一来,文件系统就成为了界于操作系统和外部磁盘设备之间的一个独立层次。
正是由于文件系统已经成为了独立的一个抽象层,因此可以在这个层次进行更为复杂的处理,例如不让文件系统从磁盘设备设备上读取数据,而是从网络上读取数据,就形成了网络文件系统,从内存中读取数据就形成了内存文件系统,对读取的数据进行加解密处理,就形成了加密文件系统,等等。
虚拟磁盘和内存文件系统  
虽然目前磁盘的容量、速度和可靠性基本上能满足绝大多数应用系统的要求,但是在某些情况下,使用磁盘存储数据仍然存在一些问题。一个例子是在嵌入式系统中,系统通常没有磁盘,数据通常存储在各种不可擦写或可擦写型半导体芯片中。另一个常遇到的例子是应用系统对于数据访问要求特别高的性能,由于磁盘是一种机械设备,读写的性能总是有限的,不能满足应用系统的需要。
在这些例子中,在面对需要解决的问题的时候,通常有一个隐含前提,就是不改动操作系统和应用程序本身。如果可以改动系统,那么,人们就可以针对具体的需要设计另外一套完整的系统,上述问题事实上也就并不存在了。但是这种做法并不现实,因为这将意味着将全部操作系统和应用系统都推倒重来。因此,为了解决这些极端的需求,最简单的方法是在内存中分配一个区域作为文件系统的数据存储区,而不是使用磁盘作为存储设备,这样既能够满足操作系统对文件系统的需求,也能够满足应用系统的特殊需要。
使用内存作为文件系统基本上有两种不同的选择方式,最简单的方式是将内存中的一个区域模拟一个磁盘分区,然后就可以在这个虚拟磁盘上按照现有的文件系统组织数据,因此就需要初始化文件系统、装载与卸载等标准文件系统操作。另一种方法为重新设计一套全新的文件系统,其中并不包含任何磁盘的概念,但在系统中表现为一个标准文件系统。明显的,重新设计一套文件系统需要更多的工作量,因此,绝大多数情况下,人们使用第一种虚拟磁盘的方法。但是,现有的文件系统,如UFS等,都是基于磁盘设备而设计的,因此很多概念,比如按磁盘块读取数据、缓冲、碎片等等,都是针对磁盘设备提出的,理论上基于内存的存储不需要这些概念,因而也不会出现这些概念需要解决的一些问题。
由于内存文件系统是使用内存来模拟磁盘操作,因此数据都是在内存之间传输,就可以得到比较高的读写性能。当然,使用内存文件系统,一旦系统重新启动,所有的内容也就不再存在了,因此只能用来保存临时性的数据。也是由于是使用内存来保存数据,缓冲实质上没有任何意义,传统文件系统中的异步”async”和同步”sync”这两种概念的意义也不大了。
虽然从本质上讲,内存文件系统根本不需要缓冲,直接访问就能达到最好的效率,但是很难做到这一点,尤其是由于目前都还是使用内存来模拟一个磁盘设备的情况,内存文件系统事实上还是经过了缓冲。从这个地方,也可以看出目前使用的内存文件系统的弊病,内存文件系统本身占据了一份内存,磁盘缓冲又会占据一份内存,这样就导致了内存的浪费。在系统有交换分区存在的条件下,一旦系统内存紧张,该文件系统中的有关数据也会被交换到具体的交换设备上,同样避免不了对磁盘的物理访问,达不到提高性能的目的。而且一旦包括交换空间在内的所有虚拟内存用光,系统就无法正常提供服务了,从而影响系统的稳定性。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:在FreeBSD上安装Linuxigd

下一篇:FreeBSD上使用tftpd 備份 cisco 路由器的設定檔