论文部分内容阅读
云存储是一种新的存储服务模式,运营商通过网络为客户提供存储资源和存储服务,具有安全、可靠、可扩展等特性。单机存储与云存储相比,具有难扩展、数据容易丢失损坏、且难迁移等不足,因此随着存储数据规模的不断扩大,为了满足人们持久存储和扩展存储的需求,有必要将数据存储到云存储平台上,特别是将传统应用程序的数据存储到云存储平台上去。在云存储系统中文件被分块冗余备份存储,这种情况下对文件随机写操作需要在所有数据块上执行,时间延迟比较大,但传统应用程序中随机读写操作比较频繁,因此传统应用程序直接对云存储系统中存储文件的读写延迟比较大,性能会受影响,而且现有云存储系统中存储数据的访问接口并不与传统文件系统的访问接口标准相兼容,传统应用程序还无法直接迁移至云存储系统中,即无法直接存取云存储系统中的数据。 本文为了解决这些问题,提出增加缓存系统来扩展云存储系统的方法,利用数据访问空间局限性和时间局限性的特点在本地客户端建立数据缓存,将许多对文件的读写操作从云存储端转移至客户端执行,从而减少客户端与云存储端的数据传输延迟,提高对云存储系统中存储文件随机读写的性能。基于这个方法,设计实现了一个云存储系统LabCloud。在存储端LabCloud使用GFS的开源实现CloudStore,CloudStore采用metaserver和chunkserver的分布式架构,文件被分块冗余存储在不同的chunkserver中;在客户端LabCloud使用设计实现的缓存系统CFS,CFS可以动态配置缓存方式,用户可以选择基于文件式的磁盘缓存,或者选择基于数据块的内存缓存,或者选择混合磁盘缓存和内存缓存的混合缓存方式。传统的磁盘缓存中文件的全部或文件部分数据块被缓存在客户端磁盘中,不同于这种传统磁盘缓存方式,借鉴文件洞的原理本文设计出一种文件式的磁盘缓存方式。在文件式的磁盘缓存方式中,每一个被打开的云存储文件在本地客户端都对应一个缓存文件,云存储文件中部分数据被缓存在对应的缓存文件中,缓存文件中有效区域的数据与云存储文件数据保持一致,而缓存文件中无效区域大部分为文件洞,并不占有实际磁盘空间。这种缓存方式能节省磁盘空间并且方便管理。内存缓存比磁盘缓存速度更快,在某些场合更具优势。CFS同时设计基于数据块的内存缓存方法来缓存云存储文件的数据,从而有效避免下载整个大文件,减少磁盘IO,节省时间和带宽。混合缓存模式则同时利用磁盘缓存和内存缓存的优势,同时弥补两者的不足。CFS兼容POSIX文件系统接口,可以透明地挂载到客户端文件系统上,传统应用程序无需修改即可运行在CFS上,同时存取云存储系统中的数据。对LabCloud系统测试的实验结果表明LabCloud能满足一般传统应用程序移植的要求,对云存储系统中存储文件的随机读写性能也得到提高。