发明内容
本发明实施例提供一种分区表信息备份方法,用以解决现有技术中的缺陷,保证分区表信息的准确性和完整性。
本发明实施例还提供一种分区表信息备份装置,用以解决现有技术中的缺陷,保证分区表信息的准确性和完整性。
本发明实施例还提供一种存储系统,用以解决现有技术中的缺陷,保证分区表信息的准确性和完整性。
本发明实施例提供一种分区表信息备份方法,包括:
获取与逻辑单元号LUN设备的分区表相关的输入输出I/O数据流;
根据所述LUN设备的分区格式,获取所述LUN设备的当前分区表信息;
判断当前分区表信息与前次备份的分区表信息是否相同,如果是,返回执行所述获取与LUN设备的分区表相关的I/O数据流的步骤,否则,备份当前分区表信息并记录时间戳。
本发明实施例还提供一种分区表信息备份装置,包括:
监控模块,用于获取与逻辑单元号LUN设备的分区表相关的输入输出I/O数据流后控制获取模块开启;
获取模块,用于根据所述LUN设备的分区格式,获取所述LUN设备的当前分区表信息;
判断模块,用于判断当前分区表信息与前次备份的分区表信息是否相同,如果是,控制所述监控模块重新获取与LUN设备的分区表相关的I/O数据流;否则,控制备份模块备份当前分区表信息并记录时间戳;
备份模块,用于备份当前分区表信息并记录时间戳。
本发明实施例还提供一种存储系统,包括:
存储控制器,用于将磁盘介质映射为一个以上逻辑单元号LUN设备;
磁盘介质,用于存储所述一个以上LUN设备的数据和分区表信息;
分区表信息备份装置,用于获取与所述LUN设备的分区表相关的输入输出I/O数据流;根据所述LUN设备的分区格式,获取所述LUN设备的当前分区表信息;判断当前分区表信息与前次备份的分区表信息是否相同,如果是,重新获取与所述LUN设备的分区表相关的I/O数据流,否则,备份当前分区表信息并记录时间戳。
由上述技术方案可知,本发明通过对LUN设备的分区表相关的I/O数据流进行监控,当获取到上述I/O数据流时,根据LUN设备的分区格式获取该LUN设备的当前分区表信息并判断当前分区表信息与前次备份的分区表信息是否相同,当不相同时,备份当前分区表信息并记录时间戳。因为在监测到I/O数据流时对分区表信息进行备份,因此每当分区表信息发生变化时均会执行备份操作,从而能够保证分区表信息的准确性和完整性。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例一的分区表信息备份方法的流程图。如图1所示,该方法包括以下过程。
步骤101:获取与LUN设备的分区表相关的输入输出(Input/Output,简称I/O)数据流。
步骤102:根据LUN设备的分区格式,获取该LUN设备的当前分区表信息。
步骤103:判断当前分区表信息与前次备份的分区表信息是否相同,如果是,返回步骤101,否则,执行步骤104。
步骤104:备份当前分区表信息并记录时间戳。
在本发明实施例一中,通过对LUN设备的分区表相关的I/O数据流进行监控,当获取到上述I/O数据流时,根据LUN设备的分区格式获取该LUN设备的当前分区表信息并判断当前分区表信息与前次备份的分区表信息是否相同,当不相同时,备份当前分区表信息并记录时间戳。因为在监测到I/O数据流时对分区表信息进行备份,因此每当分区表信息发生变化时均会执行备份操作,从而能够保证分区表信息的准确性和完整性。
图2为本发明实施例二的分区表信息备份方法的流程图。如图2所示,该方法包括以下过程。
步骤201:存储控制器存储LUN设备的分区表对应的逻辑块寻址(Logical Block Addressing,简称LBA)地址。
在本步骤中,采用LBA记录表存储LUN设备的分区表对应的LBA地址。具体地,在每一个LUN设备初始化以后,生成一个对于该LUN设备的LBA记录表,该记录表中的LBA地址仅包括该LUN设备的第一个扇区的地址。一种较佳的实施方式是,可以将上述LBA记录表存储在磁盘冗余阵列的系统磁盘中,也可以将上述LBA记录表存储在存储控制器自身的缓存中。
步骤202:存储控制器获取与LUN设备的分区表相关的I/O数据流。
在本步骤中,存储控制器获取与LUN设备的分区表相关的I/O数据流的具体方法包括:存储控制器获取存储的LUN设备的分区表对应的LBA地址的I/O数据流。由于存储控制器用于向磁盘写入I/O数据流,因此存储控制器能够对针对上述LBA地址的I/O数据流进行监控,当监控到上述LBA地址发生了I/O数据流的写入时,通过执行以下步骤203启动分区表备份过程。
步骤203:存储控制器根据LUN设备的分区格式,获取LUN设备的当前分区表信息。
在本步骤中,存储控制器根据需要进行备份的LUN设备所采用的分区格式,获取当前该分区格式所规定的分区表扇区中的信息,该信息即为该LUN设备的当前分区表信息。本发明的分区信息表备份方法具体可以应用于对多种操作系统的分区表信息备份,例如:微软视窗操作系统(MicroSoft Windows)、Linux操作系统、苹果公司的操作系统(Apple Mac OS)、SUN公司的操作系统(Solaris)等,也可以应用于对多种分区文件系统进行文件系统重要结构信息备份,例如:新技术文件系统(New Technology File System,简称NTFS)和文档分配表(File Allocation Table,简称FAT)文件系统的DOS引导记录(DOS Boot Record,简称DBR)结构、NTFS文件系统的主文件表(Master File Table,简称$MFT)和FAT16/32文件系统中的FAT表、第三代扩展文件系统(Third extended file system,简称Ext3)/XFS等文件系统的超级块、逻辑卷管理(Logical Volume Manager,简称LVM)和Veritas公司卷管理(Veritas Volume Manager,简称VxVM)卷的元数据等。在本步骤中,只要根据备份方法应用的系统的具体分区格式,获取该格式规定的分区表扇区中的信息即可。在本发明实施例二中,仅以常用的Windows和Linux系统为例,由于在上述两种系统中,LUN设备采用的分区格式包括:主引导记录(Master Boot Record,简称MBR)分区格式和全球唯一标识符分区格式(Globally Unique Identifier Partition Table Format,简称GPT)分区格式,因此,本步骤具体可以包括以下过程。
首先,存储控制器判断LUN设备的分区表属于MBR分区格式或GPT分区格式。
然后,如果是MBR分区格式,则通过分析一个以上分区表项获取第一指定扇区,记录第一指定扇区的当前分区表信息。具体方法为:判断一个以上分区表项是否均为空。如果是,该一个以上分区表项都为空,则直接执行以下步骤204。否则,该一个以上分区表项不都为空,则判断一个以上分区表项是否包括扩展分区,由于MBR分区格式的扩展分区在该分区表项的04H位置的标识符为0x0F或0x05,因此判断一个以上分区表项是否包括扩展分区的具体方法为:判断一个以上分区表项中是否包括标识符为0x0F或0x05的分区表项。如果一个以上分区表项中包括标识符为0x0F或0x05的分区表项,说明包括扩展分区,则第一指定扇区包括扩展引导记录(Extended Boot Record,简称EBR)扇区和MBR扇区,记录EBR扇区和MBR扇区的当前分区表信息。如果一个以上分区表项中不包括标识符为0x0F或0x05的分区表项,说明不包括扩展分区,则第一指定扇区只包括MBR扇区,记录MBR扇区的当前分区表信息。
如果是GPT分区格式,则记录第二指定扇区的当前分区表信息。具体地,GPT分区格式的分区表项的格式及长度固定,第二指定扇区包括LUN设备的最前34个扇区与最后33个扇区,则记录LUN设备的最前34个扇区与最后33个扇区的当前分区表信息,其中,所述LUN设备的最前34个扇区,例如,可以是LUN设备的0~33号扇区。
步骤204:存储控制器判断当前分区表信息与前次备份的分区表信息是否相同,如果是,返回步骤202;否则,执行步骤205和步骤206。其中,步骤205和步骤206的执行顺序可以互换或同时执行。
步骤205:存储控制器备份当前分区表信息并记录时间戳。
在本步骤中,一种较佳的实施方式是,存储控制器可以将当前分区表信息备份在磁盘冗余阵列的系统磁盘中,也可以将当前分区表信息备份在存储控制器自身的缓存中。该时间戳记录当前时间。
步骤206:存储控制器根据当前分区表信息更新存储的LUN设备的分区表对应的LBA地址。
在本步骤中,在步骤201中生成的LBA记录表中更新存储上述第一指定扇区和第二指定扇区的LBA地址。
步骤207:存储控制器根据备份的分区表信息恢复LUN设备的数据。
在本步骤中,可以根据备份的分区表信息,采用任何数据恢复方法,对LUN设备进行数据恢复。一种较佳的实施方式是,本步骤具体包括以下过程。
第一步,根据时间戳获取备份的分区表信息。具体地,在需要进行数据恢复时,根据时间戳从一个以上备份的分区表信息中选择用于数据恢复的备份的分区表信息。
第二步,对LUN设备进行快照,获取LUN设备快照数据。具体地,在需要进行数据恢复时,对此时的LUN设备进行快照,获取LUN设备快照数据。
上述第一步与第二步的执行顺行可以互换或同时执行。
第三步,根据获取的备份的分区表信息恢复LUN设备快照数据,获取LUN设备快照恢复数据。具体地,根据获取的备份的分区表信息对应的扇区的LBA地址,将该分区表信息还原到LUN设备快照数据的对应的LBA地址上。
第四步,判断LUN设备快照恢复数据是否正确,如果是,向LUN设备中存储LUN设备快照恢复数据;否则,返回执行第一步。具体地,将LUN设备快照恢复数据映射到主机,通过主机检查LUN设备快照恢复数据,判断LUN设备快照恢复数据是否正确。如果正确,向LUN设备中存储LUN设备快照恢复数据,实现数据成功恢复。如果不正确,返回执行第一步,选择其它时间戳对应的备份的分区表信息,通过重复上述步骤重新尝试数据恢复,直到数据成功恢复。
例如,当发现数据存储错误或数据丢失而需要进行数据恢复时,首先根据发现数据存储错误或数据丢失的当前时刻,选择距离当前时刻最近的时间戳,获取该时间戳对应的备份的分区表信息。同时,可以在发现数据存储错误或数据丢失的当前时刻对LUN设备进行快照,获取LUN设备快照数据。根据上述备份的分区表信息恢复LUN设备快照数据,如果获取的LUN设备快照恢复数据是数据存储错误或数据丢失前的正确数据,则存储该LUN设备快照恢复数据。如果该LUN设备快照恢复数据不是数据存储错误或数据丢失前的正确数据,则选择该时间戳的前一个时间戳进行数据恢复,如果仍不能得到数据存储错误或数据丢失前的正确数据,则再向前选择一个时间戳,直到恢复到数据存储错误或数据丢失前的正确数据为止。
在本发明实施例二中,不仅通过监测I/O数据流来监控分区表信息的变化,每当分区表信息发生变化时均会执行备份操作,从而能够保证分区表信息的准确性和完整性。并且,对于MBR分区格式和GPT分区格式分别采用不同的备份方式,进一步提高了分区表信息备份过程的处理速度。并且,在发生数据丢失或错误时,可以根据时间戳选择合适的备份的分区表信息,通过将备份的分区表信息恢复到数据恢复时的LUN设备快照数据,对分区表进行恢复,进一步保证了分区表信息的准确性和完整性。
图3为本发明实施例三的分区表信息备份装置的结构示意图。一种较佳的实施方式是,该装置设置于存储控制器中。如图3所示,该装置至少包括:监控模块31、获取模块32、判断模块33和备份模块34。其中,获取模块32包括:格式判断单元321、MBR获取单元322和GPT获取单元323。进一步地,分区表信息备份装置还可以包括:LBA记录模块35和恢复模块36。
其中,LBA记录模块35存储LUN设备的分区表对应的LBA地址。进一步地,LBA记录模块35在判断模块33的控制下,根据当前分区表信息更新存储的LUN设备的分区表对应的LBA地址。
监控模块31监控与LUN设备的分区表相关的I/O数据流,当获取到与LUN设备的分区表相关的I/O数据流后,控制获取模块32开启。具体地,监控模块31监控并获取LBA记录模块35存储的LUN设备的分区表对应的LBA地址的I/O数据流。
获取模块32根据LUN设备的分区格式,获取LUN设备的当前分区表信息并传送到判断模块33。具体地,获取模块32包括:格式判断单元321、MBR获取单元322和GPT获取单元323。其中,格式判断单元321判断LUN设备的分区表属于MBR分区格式或GPT分区格式,如果是MBR分区格式,则开启MBR获取单元322;如果是GPT分区格式,则开启GPT获取单元323。MBR获取单元322通过分析一个以上分区表项获取第一指定扇区,记录第一指定扇区的当前分区表信息。GPT获取单元323记录第二指定扇区的当前分区表信息。具体地,MBR获取单元322判断一个以上分区表项是否均为空;如果是,通知判断模块33判断当前分区表信息与前次备份的分区表信息是否相同;否则,判断一个以上分区表项是否包括扩展分区;如果是,记录EBR扇区和MBR扇区的当前分区表信息;否则,记录MBR扇区的当前分区表信息。具体地,GPT获取单元323记录LUN设备的最前34个扇区与最后33个扇区的当前分区表信息,其中,所述LUN设备的最前34个扇区,例如,可以是LUN设备的0~33号扇区。
判断模块33判断当前分区表信息与前次备份的分区表信息是否相同,如果是,控制监控模块31重新获取与LUN设备的分区表相关的I/O数据流;否则,控制备份模块34备份当前分区表信息并记录时间戳,并且,还可以进一步地控制LBA记录模块35根据当前分区表信息更新存储的LUN设备的分区表对应的LBA地址。
备份模块34备份当前分区表信息并记录时间戳。
恢复模块36根据备份的分区表信息恢复LUN设备的数据。具体地,恢复模块36根据时间戳获取备份的分区表信息,对LUN设备进行快照,获取LUN设备快照数据,根据获取的备份的分区表信息恢复LUN设备快照数据,获取LUN设备快照恢复数据,判断LUN设备快照恢复数据是否正确,如果是,向LUN设备中存储LUN设备快照恢复数据,否则,重新根据时间戳获取备份的分区表信息。
在本发明实施例三中,当监控模块获取到I/O数据流时,获取模块根据LUN设备的分区格式获取该LUN设备的当前分区表信息,判断模块判断当前分区表信息与前次备份的分区表信息是否相同,当不相同时,备份当前分区表信息并记录时间戳。因为在监测到I/O数据流时对分区表信息进行备份,因此每当分区表信息发生变化时均会执行备份操作,从而能够保证分区表信息的准确性和完整性。并且,在发生数据丢失或错误时,恢复模块可以根据时间戳选择合适的备份的分区表信息,并对数据恢复时刻的LUN设备存储的信息进行快照,将备份的分区表信息恢复到LUN设备快照数据,进一步保证了分区表信息的准确性和完整性。
图4为本发明实施例四的存储系统的结构示意图。如图4所示,该存储系统至少包括:存储控制器40、磁盘介质41和分区表信息备份装置42。
其中,存储控制器40将磁盘介质41映射为一个以上LUN设备,该一个以上LUN设备用于存储数据和分区表信息。
磁盘介质41作为存储的物理介质,用于存储所述一个以上LUN设备的数据和分区表信息。
分区表信息备份装置42获取与LUN设备的分区表相关的I/O数据流,根据LUN设备的分区格式,获取LUN设备的当前分区表信息,判断当前分区表信息与前次备份的分区表信息是否相同,如果是,重新获取与LUN设备的分区表相关的I/O数据流,否则,备份当前分区表信息并记录时间戳。进一步地,分区表信息备份装置42还用于根据备份的分区表信息恢复所述LUN设备的数据。
具体地,本发明实施例四中的存储系统可以是任何采用LUN映射方式的存储系统,例如,磁盘冗余阵列系统、虚拟智能存储系统等。
在本发明实施例四中,分区表信息备份装置在获取到I/O数据流时,根据LUN设备的分区格式获取该LUN设备的当前分区表信息,判断当前分区表信息与前次备份的分区表信息是否相同,当不相同时,备份当前分区表信息并记录时间戳。在监测到I/O数据流时对分区表信息进行备份,因此每当分区表信息发生变化时均会执行备份操作,从而能够保证分区表信息的准确性和完整性。
需要说明的是:对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。