网络存储最新理念帮助你看见网络未来发展方向
网络硬盘技术不断发展的今天,我们是否关注过网络硬盘的发展?不知道大家是否了解网络硬盘的运营以及工作方式,但是我们在网盘如此发达的今天没有理由不去关注为了使网络硬盘为自己更好的服务,以下文章可能就会让你茅塞顿开。
基本思路是设计一种适应于iSCSI存储系统的缓存系统,利用一定的内存空间作为远程网络磁盘的缓存,使得部分I/O请求直接在缓存上完成,从而提高存储系统的性能。
以Linux系统为例,可以将缓存子系统设计成将内核模块直接加载到Linux内核中,在启动时根据不同的情况来申请一定空间的内存作为缓存使用。经常被读写的数据一般放入缓存,即本地内存中。带缓存系统的一个简单的结构如图1所示,其中的内存空间作为远端存储设备的一个数据缓冲区。
用作缓存的内存空间有3个部分:Head_InfoBitmap_TableBlockData。其中Head Info由多个信息块组成,每个信息块具有惟一的ID,每一个缓存中完成的I/O请求均对应其中的一项,其主要数据结构为:Addr_Cache表明请求的数据块在缓存中的地址,它是一个整数值,标明了从数据区地址开始偏移多少个数据块长度单位;Data_Len说明其长度;Status描述该数据块的状态;LBA是指逻辑块地址,即I/O命令的逻辑操作地址;Time表示该请求的时间。
缓存系统初始化时,根据设定的内存大小申请内存,分配上述3个部分的大小并且进行数据的初始化操作。当一个写操作被接收时,缓存系统根据操作的逻辑地址(LBA)在信息头区查找一个空闲的表项,它们之间通过哈希表技术来建立对应关系以加快查找速度。
缓存系统收到一个写操作请求时,首先通过其逻辑块地址查找哈希表。如果己经有该逻辑地址的表项,那么直接在其数据区中进行数据覆盖,同时将状态设为Dirty;否则得到一个空闲的表项,填充适当的控制信息,将数据写入缓存的数据区。如果整个表项已经用完,同步线程会进行同步工作,释放缓存数据区。如果写请求直接在缓存系统中执行完毕就能够返回,则不必占用IP网络资源,可以在很大程度上减少操作延迟。
缓存系统收到一个读操作请求时,同样首先通过其逻辑块地址查找哈希表。如果需要读取的数据恰好在缓存系统中,则可以直接从数据区中读取数据从而完成该读数据的操作;否则需要将该请求包装为iSCSI包,通过口网络到远端磁盘上读取数据。在数据访问局部性比较明显的应用中,该缓存系统能够较大程度改善存储系统性能。为了保证缓存系统和远端磁盘之间数据的一致性和数据的安全性,在缓存系统中,专门使用一个线程用于数据的同步操作。
By江西理工大学钟丽雯http://abc.wm23.com/wenzi
能力秀动态
■为期9年共举办18期的大学生网络营销能力秀活动已圆满结束(2009-2018)。能力秀——网络营销开始的地方!祝所有秀友前程似锦!向所有网络营销老师、所有支持能力秀活动的人员和机构、所有为能力秀活动付出辛勤努力的工作人员们表示衷心的感谢并致以崇高的敬意!