发明名称 异构SAN环境中的海量存储资源按需分配的实现方法
摘要 异构SAN环境中的海量存储资源按需分配的实现方法属于存储区域网络领域,尤其涉及其中的存储虚拟化技术领域。本发明的特征在于针对SAN环境中异构的存储应用服务器和多样的存储设备,设计并实现了一个带外模式的存储虚拟化系统,并基于此系统,提出了一种基于写时分配和动态地址映射机制的海量存储资源按需分配的方法,它根据应用的实际需求来分配存储资源,动态扩展逻辑存储空间与物理存储空间的映射关系,有效提高存储资源的利用率和存储容量的可扩展性,降低存储设备的维护成本,实现即时的存储采购。
申请公布号 CN101997918A 申请公布日期 2011.03.30
申请号 CN201010543251.6 申请日期 2010.11.11
申请人 清华大学 发明人 舒继武;钱凯;易乐天
分类号 H04L29/08(2006.01)I 主分类号 H04L29/08(2006.01)I
代理机构 北京众合诚成知识产权代理有限公司 11246 代理人 朱琨
主权项 异构SAN环境中的海量存储资源按需分配的实现方法,其特征在于,依次含有以下几个步骤:步骤(1),构建一个带外模式下的存储虚拟化系统:所述带外模式下的存储虚拟化系统由客户端、元数据服务器以及存储设备组成,所述客户端和元数据服务器都通过主机总线适配器HBA连接到光纤存储区域网络SAN上,所述存储设备也通过光纤接口连接到所述光纤存储区域网络SAN上,所述元数据服务器和客户端之间通过以太网相连;步骤(2),步骤(1)中所述存储虚拟化系统初始化,其中:所述元数据服务器,设有:存储空间管理模块、元数据管理模块、元数据服务器主线程模块和通信模块,其中:存储空间管理模块,用于物理存储资源的组织和空闲存储空间的动态分配,采用写时分配机制,根据应用程序需求来动态、实时地分配物理存储空间,在存储资源中设有:物理卷、卷组以及逻辑卷三个层次,其中:物理卷PV,对应一个物理磁盘,被分成多个物理单元,卷组VG,由多个物理卷PV组成,每个卷组VG构成了一个存储池,在创建一个所述存储池时,按照应用需求设置:资源分配策略、包括但不限于线性分配策略和条带分配策略,存储块分配粒度、是扇区的整数倍,在一个存储池内,所述存储块分配粒度固定,在不同的存储池中则允许不相同,逻辑卷LV,是从所述卷组VG中划分出来分配给所述客户端使用的至少一个物理卷,所述逻辑卷被分成多个逻辑单元,所述元数据服务器需将已分配的逻辑卷导出给所述客户端,客户端创建对应于所述元数据服务器的逻辑卷的逻辑设备,所述元数据服务器的逻辑卷与所述逻辑设备一一对应,之后客户端能对所述逻辑设备进行读写操作,所述一个逻辑卷的每个逻辑单元被唯一地映射到所述一个物理卷的一个物理单元上,当一个存储设备加入到所述存储虚拟化系统中,所述存储空间管理模块便按照设定的存储块分配粒度对所述存储设备进行空间划分,加入到一个存储池中,所有的存储池构成了整个所述存储虚拟化系统的存储空间,当接收到元数据服务器主线程模块发送的所述逻辑卷的存储空间分配请求时,从存储池中动态分配一段空闲存储空间,并将分配结果回送给所述元数据服务器主线程模块,元数据管理模块,用于组织和维护所述逻辑卷的元数据信息,从所述元数据服务主线程模块接收元数据信息,以追加写的方式保存到元数据文件中,并将所述元数据文件保存到元数据磁盘的文件系统中,所述元数据文件以存储池目录/逻辑卷名的二级目录结构的方式来组织,所述元数据服务器主线程模块,设有元数据服务器主线程和缓存在内存中的逻辑地址和物理地址之间的映射表,起桥梁作用,负责调用所述存储空间管理模块来动态分配空闲存储空间,调用所述元数据管理模块更新元数据信息,与元数据服务器中的通信模块交互来获取映射请求报文和回复映射应答报文,所述映射请求报文包含所述逻辑设备的逻辑设备名、逻辑设备号和读写操作请求所对应的逻辑地址,所述映射应答报文包含所述逻辑设备的逻辑设备名、逻辑设备号、所述读写操作请求所对应的逻辑地址、映射到所述逻辑地址上的某一空闲物理存储空间所在的物理设备号和物理地址,所述元数据服务器中的通信模块,与客户端中的通信模块通信,获取客户端的所述逻辑设备的映射请求报文并转发到所述元数据服务器主线程模块中,最后从所述元数据服务器主线程模块中获取映射应答报文回复给客户端,客户端设有动态地址映射模块和通信模块,其中:动态地址映射模块,用于所述逻辑设备逻辑地址到物理地址的映射索引和映射关系的建立,设有所述逻辑地址和物理地址之间的映射表的副本,当接收到客户端对所述逻辑设备的读写操作请求时,在所述映射表副本中查找所述逻辑设备读写操作请求对应的逻辑地址的映射关系,所述映射关系包含所述逻辑地址、映射到所述逻辑地址上的某一空闲物理存储空间所在的物理设备号和物理地址,如果不存在,则需要通过客户端通信模块向元数据服务器发送所述映射请求报文来获取所述映射关系,最后根据所述映射关系中的逻辑地址所映射到的物理设备号和物理地址,将所述读写操作请求发送到对应的物理设备上,所述客户端中的通信模块,与所述元数据服务器中的通信模块通信,向所述元数据服务器中的通信模块发送所述逻辑设备的映射请求报文,并从所述元数据服务器中的通信模块中接收所述映射应答报文,最后将所述映射应答报文发送到所述动态地址映射模块中,步骤(3),所述客户端对所述逻辑设备进行数据写操作,步骤如下:步骤(3.1)客户端上的应用程序对所述逻辑设备发出数据写操作请求,步骤(3.2)所述动态地址映射模块在所述逻辑地址和物理地址之间的映射表副本中查找是否存在所述写操作请求所对应的逻辑地址的映射关系:步骤(3.2.1)若存在,转到步骤(3.11),步骤(3.2.2)若不存在,则通过所述客户端中的通信模块,向元数据服务器发送映射请求报文,其中包括所述逻辑设备的逻辑设备名、逻辑设备号和所述写操作请求所对应的逻辑地址,步骤(3.3)所述元数据服务器中的通信模块接收到映射请求报文后,向所述元数据服务器主线程模块转发所述映射请求报文,步骤(3.4)所述元数据服务器主线程模块在所述逻辑地址与物理地址的映射表中查找是否存在所述请求映射报文中逻辑地址的映射关系:步骤(3.4.1)若存在,转到步骤(3.8),步骤(3.4.2)若不存在,则调用所述存储空间管理模块,进行存储空间分配,步骤(3.5)所述存储空间管理模块判断所述存储池中是否存在能满足所述写操作请求大小的空闲存储空间:步骤(3.5.1)若存在,则分配一段可满足所述写操作请求大小的空闲存储空间,转到步骤(3.6),步骤(3.5.2)若不存在,则判断是否还存在未使用的物理磁盘:步骤(3.5.2.1)若存在,则向所述存储池中增加物理磁盘,在线扩展所述存储池的存储容量,转到步骤(3.5),步骤(3.5.2.2)若不存在,则形成一项空的映射关系,表示映射失败,转到步骤(3.8),步骤(3.6)将所述逻辑地址映射到所述空闲存储空间的物理地址上,形成一项映射关系,并插入到所述逻辑地址与物理地址的映射表中,步骤(3.7)所述元数据管理模块将所述映射关系更新到所述逻辑卷的元数据文件中,步骤(3.8)将所述映射关系封装到映射应答报文方式中回复给客户端,步骤(3.9)所述客户端中的通信模块接收到映射应答报文后,向所述动态地址映射模块转发所述映射应答报文,步骤(3.10)所述动态地址映射模块获得所述映射应答报文后,判断映射应答报文中映射关系是否为空:步骤(3.10.1)若为空,则此次写请求失败,返回,步骤(3.10.2)若不为空,则把映射关系插入到所述逻辑地址与物理地址的映射表副本中,步骤(3.11)根据映射关系中所述逻辑地址所对应的物理设备号和物理地址,将写请求中的数据发送到对应的物理设备上,返回;步骤(4)所述客户端对所述逻辑设备进行数据读操作,步骤如下:步骤(4.1)客户端上的应用程序对所述虚拟设备发出数据读操作请求,步骤(4.2)所述动态地址映射模块在所述逻辑地址和物理地址之间的映射表的副本中查找是否存在所述读操作请求所对应的逻辑地址的映射关系:步骤(4.2.1)若存在,转到步骤(4.8),步骤(4.2.2)若不存在,则通过所述客户端中的通信模块,向元数据服务器发送映射请求报文,其中包括所述逻辑设备的逻辑设备名、逻辑设备号和所述读操作请求所对应的逻辑地址,步骤(4.3)所述元数据服务器通信模块接收到映射请求报文后,向所述元数据服务器主线程模块转发所述映射请求报文,步骤(4.4)所述元数据服务器主线程模块在所述逻辑地址与物理地址的映射表中查找是否存在所述请求映射报文上逻辑地址的映射关系:步骤(4.4.1)若存在,转到步骤(4.5),步骤(4.4.2)若不存在,则形成一项空的映射关系,表示映射失败,步骤(4.5)将所述映射关系封装到映射应答报文方式中回复给客户端,步骤(4.6)所述客户端中的通信模块接收到映射应答报文后,向所述动态地址映射模块转发所述映射应答报文,步骤(4.7)所述动态地址映射模块获得所述映射应答报文后,判断映射应答报文中映射关系是否为空:步骤(4.7.1)若为空,则此次读请求失败,返回,步骤(4.7.2)若不为空,则把映射关系插入到所述逻辑地址与物理地址的映射表副本中,步骤(4.8)根据所述映射关系中该逻辑地址所对应的物理设备号和物理地址,从所对应的物理设备中读取所请求的数据,返回。
地址 100084 北京市100084-82信箱