发明名称 SAN系统中虚拟化智能控制器的实现方法
摘要 SAN系统中虚拟化智能控制器的实现方法属于存储区域网络领域。本发明的特征在于:在SAN中的数据通路上引入虚拟化智能控制器,从而把SAN系统划分成两个独立的子系统:设备SAN和主机SAN。其中设备SAN负责存储资源的组织、管理,而主机SAN只需关注于存储资源的使用即可。虚拟化智能控制器居于两者之间,是设备SAN和主机SAN联系的纽带,它能够管理各种各样的存储设备,并能够对异构的主机SAN提供统一的存储资源视图,从而简化存储资源的管理。另外虚拟化智能控制器的访问控制管理提供了对IO请求权限的验证功能,防止非法的操作导致的数据损失。它非常适合异构的应用服务器环境下对异构的存储资源的管理进行有效的管理,为日益复杂的存储管理问题提供了一种有效的解决方法。
申请公布号 CN100347692C 申请公布日期 2007.11.07
申请号 CN200510011825.4 申请日期 2005.05.31
申请人 清华大学 发明人 舒继武;薛巍;章宏灿;王迪;郑纬民
分类号 G06F13/14(2006.01);G06F12/00(2006.01) 主分类号 G06F13/14(2006.01)
代理机构 代理人
主权项 1.SAN系统中虚拟化智能控制器的实现方法,其特征在于:所述的虚拟化智能控制器添加在存储区域网络即SAN系统的应用服务器和存储设备之间,它是一个或多个用通用计算机实现的虚拟化智能控制器,简称VIC;所述的一个或多个VIC把SAN系统划分为主机SAN和存储设备SAN两个部分,其中主机SAN连接着应用服务器和VIC,此时VIC充当的是存储资源的角色;存储设备SAN连接着VIC和各类存储设备,此时VIC的作用是管理存储资源;所述的VIC包含以下三个层次:<img file="C2005100118250002C1.GIF" wi="29" he="37" />访问控制管理层:该层负责接收从应用服务器发送过来的IO请求,对各请求的执行权限进行检查,并把有操作权限的IO请求发送到下面所述的存储虚拟化层;所述的访问控制管理层在内存中维护着一张设备访问权限表,该表的每个条目记录着VD Number即虚拟设备号,Access Bitmap即访问位图,Privilege Bitmap即权限位图,其中Access Bitmap和Privilege Bitmap是两个等长的机器数,记录着相应设备的访问控制信息,AccessBitmap中序号从低位算起的每个比特都代表着一台服务器能否访问该设备:所在位是“1”表示允许访问,所在位是“0”表示拒绝访问;Privilege Bitmap中序号从低位算起的每一个比特代表能访问该设备的服务器的具体操作权限;在Privilege Bitmap中,序号从低位算起的每一位与Access Bitmap中序号从低位算起的每一位是相对应的,AccessBitmap和Privilege Bitmap对应位的组合确定一台服务器的访问控制信息;所述访问控制信息包含着三种访问模式:访问位和权限位都是“0”,表示拒绝访问;访问位和权限位都是“1”,表示具有读写权限;访问位为“1”,权限位为“0”,表示具有读权限;每当应用服务器加载启动器模式的光纤驱动程序时,它就通过主机SAN网络向VIC的设备访问权限表查询有哪些虚拟设备对它“可见”,然后再把这些“可见”的网络虚拟设备添加到应用服务器的SCSI设备链表中;<img file="C2005100118250002C2.GIF" wi="30" he="35" />存储虚拟化层:该层实现存储虚拟化管理的功能,并能够对接收到的IO请求的地址信息进行转换,使其能够在实际物理设备上执行;该存储虚拟化层包含有:√虚拟设备管理模块:该模块在内存中为每一个虚拟设备维护着一张虚拟设备信息表,该表包含有如下数据项:VD_Name即虚拟设备名称,lun即IO请求所对应的虚拟设备号,UUID即全局唯一的设备标识符,Type即虚拟设备类型,Capacity即虚拟设备容量,Space_list即虚拟设备存储空间构成表;所述的Space_list是一个PhysicalSegment即物理段,简称为PS的链表,每个PS记录着如下的几个数据项:PD_ID,Offset,Length,用以表示一段在同一个物理设备上连续的存储空间,其中PD_ID表示物理设备的序号;Offset表示该段空间的起始偏移;Length是该段存储空间的大小;√地址映射模块:该模块把所述访问控制管理层发送过来的虚拟IO请求转化成一个或多个能够在物理设备上实际执行的SCSI命令;所述虚拟设备IO请求的地址信息结构是一个lun、offset、length的三元组,其中lun表示该IO请求对应的虚拟设备号,offset是该请求的偏移,length表示该请求的数据大小;所述地址映射模块的具体地址映射过程依次如下:一、找到虚拟设备号为lun的VD;二、根据VD的类型和offset,确定该IO请求的偏移即起始地址所在的PS;三、通过各虚拟请求的length字段确定物理请求的个数和各个对应物理请求的数据大小;四、形成多个能在物理设备上实际执行的SCSI命令;√元数据管理模块:该模块记录有包括系统中物理设备、虚拟设备和访问控制信息在内的系统信息,这些信息都保存在两个SCSI硬盘上,统称为元数据磁盘,其中一个是主元数据盘,另一个是次元数据盘,两者形成备份关系;元数据信息中有一个标记,可以为WRITE_COMPLETE即元数据完整或NOT_COMPLETE即元数据不完整,用以标记元数据是否完整;将元数据从物理磁盘导入内存的具体过程按如下步骤进行:a、扫描系统中所有的物理磁盘,找到所述两个元数据盘;b、完整性判断:若主元数据盘的标记是NOT_COMPLETE标记,而次元数据盘的标记是WRITE_COMPLETE,则主元数据盘的元数据信息是不完整的,用次元数据盘的数据来覆盖主元数据盘的数据;若主元数据盘的信息是WRITE_COMPLETE,而次元数据盘的是NOT_COMPLETE,则在写次元数据盘的时候出错,用主元数据盘的数据来覆盖次元数据盘的元数据;若主、次两个元数据盘的标记都是WRITE_COMPLETE,则表示两个元数据盘的数据都是完整的;c、有效性判断:把主元数据盘上的元数据导入内存,检查元数据信息中的物理设备信息,即对比能够扫描到的物理设备的UUID和元数据信息中的UUID列表,从而判断一个物理设备能否能够被重新使用;若元数据信息的UUID列表中的物理设备未扫描到,VIC把该物理设备的信息以及错误信息写入日志,并从元数据信息中删除该物理设备的信息以及其他相关信息;<img file="C2005100118250003C1.GIF" wi="31" he="39" />物理设备管理层,该层执行存储虚拟化层发送过来的SCSI命令,同时也负责物理设备的检测和抽象;所述SCSI命令的执行通过调用Linux系统的SCSI中间层驱动中的scsi_do_req函数完成;而物理设备的检测和抽象按以下步骤依次实现:a、VIC启动时,扫描系统的SCSI设备链表;b、每扫描到一个存储设备,建立相应的物理设备结构;c、为每一个设备分配一个UUID;d、VIC把该设备的存储空间按照固定大小的块进行划分,并把这些空间添加进存储虚拟化的存储池中;本发明所述的SAN系统中虚拟化智能控制器的实现方法依次含有以下步骤:步骤1:虚拟化智能控制器通过SAN网络接口接收从应用服务器发送过来的IO请求,并把请求转发给访问控制管理层;步骤2:访问控制管理层从IO请求中解析出所要执行的操作以及相应的设备信息,并同设备访问权限表中的信息进行比较,判断是否允许执行该操作;若与访问权限信息不符,则直接返回;若该IO请求有操作权限,就转发给存储虚拟化层;步骤3:存储虚拟化层根据虚拟设备的信息,对IO请求的地址信息进行分析,产生能在物理存储设备上直接执行的SCSI命令,并把这些命令发送给物理设备管理层;步骤4:物理设备管理层执行SCSI命令,并把执行结果返回给主机SAN网络接口;步骤5:主机SAN网络接口把IO请求的执行结果发送给相应的应用服务器。
地址 100084北京市北京100084-82信箱