CN103500092B - 一种worm追加写判断方法及存储设备 - Google Patents
一种worm追加写判断方法及存储设备 Download PDFInfo
- Publication number
- CN103500092B CN103500092B CN201310436864.3A CN201310436864A CN103500092B CN 103500092 B CN103500092 B CN 103500092B CN 201310436864 A CN201310436864 A CN 201310436864A CN 103500092 B CN103500092 B CN 103500092B
- Authority
- CN
- China
- Prior art keywords
- write operation
- write
- file
- instruction
- worm
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/12—Formatting, e.g. arrangement of data block or words on the record carriers
- G11B20/1217—Formatting, e.g. arrangement of data block or words on the record carriers on discs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/181—Append-only file systems, e.g. using logs or journals to store data providing write once read many [WORM] semantics
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B2020/10898—Overwriting or replacing recorded data
- G11B2020/10907—Overwriting or replacing recorded data using pseudo-overwriting, i.e. virtually or logically overwriting data on WORM media by remapping recorded blocks to alternate areas
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种WORM追加写判断方法及存储设备,涉及通信领域,可以更加准确地判断对WORM文件的写操作是否是追加写。所述方法具体包括:获得本次写操作的起始指针位置;接收用户设备发送的写WRITE指令,所述WRITE指令中携带有本次写操作的数据大小;根据所述WRITE指令识别所述本次写操作的写入范围;检测WORM文件的保护范围和所述本次写操作的写入范围是否有交集;若检测到有交集,则检测所述本次写操作与所述WORM文件在交集部分的数据是否一样;若是,则判断所述本次写操作是追加写;若不是,则判断所述本次写操作是修改写。
Description
技术领域
本发明涉及通信领域,尤其涉及一种WORM(Write once Read many,单写多读)追加写判断方法及存储设备。
背景技术
WORM是一种只能单次写入但允许多次读取的数据存储方式,能有效避免数据被意外删除、重写或更改。因此,许多企业单位依赖WORM存储来存储关键数据,防止关键数据遭到更改或删除。以WORM形式保存的文件(即WORM文件)不能被改写,因此认为WORM文件的保护范围是[0,原始文件大小]。对WORM文件的操作主要有修改写和追加写,修改写指的是某次写操作要修改WORM文件保护范围之内的数据,对于WORM文件修改写是不允许的;追加写指的是某次写操作要写入的数据在WORM文件保护范围之外,对于WORM文件追加写是允许的。
用户设备在向存储设备的文件系统写入数据时,会先向所述存储设备的文件系统发送OPEN指令,通知所述存储设备的文件系统准备进行数据写入,然后在接收到用户设备发送的WRITE指令后,就可以在判断出本次写操作是对WORM文件的追加写时将本次写操作的数据写入WORM文件中。
现有技术判断本次写操作是否为追加写的方法主要有两种。一种是根据文件打开标识来判断,用户设备发送的OPEN指令中携带有文件打开标识。如果该文件打开标识携带了追加写标识,则存储设备的文件系统就会判断出本次写操作为追加写操作,否则,就认为是修改写,不允许本次写操作。但是,在应用本方法时,有的网络协议如NFS(Network FileSystem,网络文件系统)V3中存储设备上的客户端会对OPEN指令中携带的文件打开标识进行转换,不会将文件打开标识下发到存储设备的服务端,存储设备的服务端在写文件时就无法判断此次写操作是否是追加写,导致存储设备的服务端不会按照追加写模式写文件。
另一种方法是根据文件指针位置来判断,存储设备的文件系统接收到WRITE指令后会从调度后当前文件指针位置开始写入,如果当前文件指针位置在先前写入的WORM文件的保护范围内,就认为是修改写,否则就是追加写。如果存储设备的文件系统在进行的两次写操作时,都没有进行文件指针调度,则两次写操作都会从文件初始位置开始写入,此时,若第二次写入的内容包含第一次写入的内容,则第二次写操作实际上是追加写,但是存储设备的文件系统检测出第二次写操作的指针在第一次写入的WORM文件的保护范围内,因此错误地将第二次写操作判断为修改写,无法准确判断出第二次写操作为追加写,导致写操作无法进行。
发明内容
本发明的实施例提供一种WORM追加写判断方法及存储设备,可以更加准确地判断对WORM文件的写操作是否是追加写。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,公开了一种WORM追加写判断方法,包括:
获得本次写操作的起始指针位置;
接收用户设备发送的写WRITE指令,所述WRITE指令中携带有本次写操作的数据大小;
根据所述WRITE指令识别所述本次写操作的写入范围,其中,所述写操作的写入范围是大于等于所述本次写操作的起始指针位置值,小于等于所述本次写操作的起始指针位置值加上所述本次写操作的数据大小;
检测WORM文件的保护范围和所述本次写操作的写入范围是否有交集;
若检测到有交集,则检测所述本次写操作与所述WORM文件在交集部分的数据是否一样;
若一样,则判断所述本次写操作是追加写;若不一样,则判断所述本次写操作是修改写。
结合第一方面,在第一种可能的实现方式中,所述方法还包括:
若检测到没有交集,则判断所述本次写操作是追加写。
结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述获得本次写操作的起始指针位置之前,所述方法还包括:
获得所述用户设备发送的打开OPEN指令,所述OPEN指令中携带有文件打开标识;
则,所述获得本次写操作的起始指针位置,包括:
若所述文件打开标识中携带有追加写标识,则获得的本次写操作的起始指针位置为所述WORM文件的结束位置。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,若所述文件打开标识中没有携带追加写标识,则获得的本次写操作的起始指针位置为所述WORM文件的起始位置。
结合第一方面的第二种可能的实现方式,在第四种可能的实现方式中,所述接收所述用户设备发送的OPEN指令之后,若所述文件打开标识中没有携带追加写标识,则所述方法还包括:
接收所述用户设备发送的SEEK指令,所述SEEK指令中携带有目标指针位置;
则,获得的本次写操作的起始指针位置为所述SEEK指令中的所述目标指针位置。
结合第一方面的第二种可能的实现方式,在第五种可能的实现方式中,所述接收所述用户设备发送的OPEN指令之后,若所述文件打开标识中携带有追加写标识但被转化掉的情况下,所述方法还包括:
接收所述用户设备发送的SEEK指令,所述SEEK指令中携带有所述WORM文件的结束位置;
则,获得的本次写操作的起始指针位置为所述SEEK指令中的所述WORM文件的结束位置。
结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式、第一方面的第四种可能的实现方式或第一方面的第五种可能的实现方式,在第六种可能的实现方式中,在判断所述本次写操作是追加写之后,所述方法还包括:
从所述本次写操作的起始指针位置处,写入所述本次写操作的数据。
第二方面,公开了一种存储设备,包括:
获得单元,用于获得本次写操作的起始指针位置;
接收单元,用于接收用户设备发送的写WRITE指令,所述WRITE指令中携带有本次写操作的数据大小;
识别单元,用于根据所述接收单元接收的WRITE指令识别所述本次写操作的写入范围,其中,所述写操作的写入范围是大于等于所述本次写操作的起始指针位置值,小于等于所述本次写操作的起始指针位置值加上所述本次写操作的数据大小;
检测单元,用于检测WORM文件的保护范围和所述识别单元识别出的本次写操作的写入范围是否有交集;
所述检测单元还用于,在检测到有交集后,检测所述本次写操作与所述WORM文件在交集部分的数据是否一样;
判断单元,用于在所述检测单元检测到所述本次写操作与所述WORM文件在交集部分的数据一样时,判断所述本次写操作是追加写;在所述检测单元检测到所述本次写操作与所述WORM文件在交集部分的数据不一样时,判断所述本次写操作是修改写。
结合第二方面,在第一种可能的实现方式中,所述判断单元还用于,在所述检测单元检测到没有交集时,判断所述本次写操作是追加写。
结合第二方面、第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述获得单元还用于,在获得本次写操作的起始指针位置之前,获得所述用户设备发送的打开OPEN指令,所述OPEN指令中携带有文件打开标识;
所述获得单元具体用于,在所述文件打开标识中携带有追加写标识时,获得本次写操作的起始指针位置为所述WORM文件的结束位置。
结合第二方面,在第三种可能的实现方式中,在所述文件打开标识中没有携带追加写标识时,所述获得单元获得的本次写操作的起始指针位置为所述WORM文件的起始位置
结合第二方面,在第四种可能的实现方式中,所述接收单元还用于,在所述获得单元获得所述用户设备发送的OPEN指令之后,在所述文件打开标识中没有携带追加写标识时,接收所述用户设备发送的SEEK指令,所述SEEK指令中携带有目标指针位置;
则,所述获得单元具体用于,从接收单元接收的SEEK指令中获得本次写操作的起始指针位置,所述本次写操作的起始指针位置为所述目标指针位置。
结合第二方面,在第五种可能的实现方式中,所述接收单元还用于,在所述获得单元获得所述用户设备发送的OPEN指令之后,在所述文件打开标识中携带有追加写标识但被转化掉的情况下,接收所述用户设备发送的SEEK指令,所述SEEK指令中携带有所述WORM文件的结束位置;
则,所述获得单元具体用于,从接收单元接收的SEEK指令中获得本次写操作的起始指针位置,所述本次写操作的起始指针位置为所述WORM文件的结束位置。
结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式、第一方面的第四种可能的实现方式或第一方面的第五种可能的实现方式,在第六种可能的实现方式中,还包括写入单元;
所述写入单元,用于在所述判断单元判断所述本次写操作是追加写之后,从所述获得单元获得的本次写操作的起始指针位置处,写入所述本次写操作的数据。
本发明实施例提供的WORM追加写判断方法和存储设备,根据获得的本次写操作的起始指针位置和本次写操作的数据大小,获得本次写操作的写入范围,然后检测WORM文件的保护范围和本次写操作的写入范围是否有交集,若有交集,则检测所述本次写操作与所述WORM文件在交集部分的数据是否一样,若一样,则判断本次写操作为追加写,否则判断本次写操作为修改写,这样,在追加写标识被转换掉的情况下,本发明实施例提供的方法可以根据本次写操作的起始指针位置判断本次写操作是否为追加写,在没有追加写标识,且本次写操作的写入范围与所述WORM文件的保护范围有交集的情况下,本发明实施例提供的方法可以根据两者在交集部分的数据是否一样,来准确地判断对WORM文件的写操作是否是追加写,故本发明实施例提供的方法就可以在各种场景下更加准确地判断对WORM文件的写操作是否是追加写。
附图说明
图1为本发明实施例1提供的一种WORM追加写判断方法流程示意图;
图2为本发明实施例2提供的一种WORM追加写判断方法流程示意图;
图3为本发明提供的一种WORM追加写过程示意图;
图4为本发明实施例3提供的一种存储设备的结构框图;
图5为本发明实施例3提供的另一种存储设备的结构框图;
图6为本发明实施例3提供的一种存储设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1:
本发明实施例提供了一种WORM追加写判断方法,如图1所示,所述方法包括以下步骤:
101、获得本次写操作的起始指针位置。
用户设备在向存储设备的文件系统写入数据时,会先向所述存储设备的文件系统发送OPEN指令,通知所述存储设备的文件系统准备进行数据写入。
在用户设备向存储设备发送的OPEN指令中有追加写标识的情况下,所述OPEN指令中携带有文件打开标识,所述文件打开标识中携带追加写标识,若因为在某些场景下(如在应用了NFS V3协议的场景下),所述文件打开标识中的追加写标识被存储设备的客户端转化,所述存储设备的服务端就不会接收到所述追加写标识,此时,所述存储设备的文件系统可以根据用户设备随后发送的,携带有所述本次写操作的起始指针位置的SEEK指令来获得所述本次写操作的起始指针位置,这时,用户设备发送的本次写操作的起始指针位置为WORM文件的结束位置。若在其他场景下该追加写标识未被转化,并发送给了所述存储设备的服务端,则所述存储设备会认为本次写操作为追加写,则存储设备的文件系统获得本次写操作的起始指针位置为所述WORM文件的结束位置。
在用户设备向存储设备发送的OPEN指令中没有追加写标识的情况下,若所述用户设备没有向所述存储设备发送SEEK指令,则本次写操作的起始指针位置为所述WORM文件的起始位置;若所述用户设备向所述存储设备发送SEEK指令,则本次写操作的起始指针位置为所述SEEK指令中携带的指针位置。
102、接收用户设备发送的WRITE指令,所述WRITE指令中携带有本次写操作的数据大小。
用户设备向存储设备的文件系统发送OPEN指令,通知所述存储设备的文件系统准备进行数据写入,可以向所述存储设备的文件系统发送SEEK指令,通知本次写操作的起始指针位置,也可以不发送SEEK指令,在这里,所述SEEK指令是根据用户的需要来发送的,在此不做限定。在此之后,所述用户设备就会向所述存储设备的文件系统发送WRITE指令,通知所述存储设备的文件系统开始进行数据写入,所述WRITE指令携带本次写操作的数据大小。
103、根据所述WRITE指令识别所述本次写操作的写入范围。
其中,所述写操作的写入范围是大于等于所述本次写操作的起始指针位置值,小于等于所述本次写操作的起始指针位置值加上所述本次写操作的数据大小。
104、检测WORM文件的保护范围和所述本次写操作的写入范围是否有交集。
所述WORM文件的存储方式是单写多读,不允许改变WORM文件的原有内容。用户设备对WORM文件的写操作分为修改写和追加写,其中追加写允许的,修改写是不允许的,故所述WORM文件的保护范围指的是大于等于0小于等于原始WORM文件的大小。
存储设备的文件系统可以检测WORM文件的保护范围和所述本次写操作的写入范围是否有交集,若检测到所述WORM文件的保护范围和所述本次写操作的写入范围有交集,则进行步骤105,若检测到所述WORM文件的保护范围和所述本次写操作的写入范围没有交集,则进行步骤106。
105、检测所述本次写操作与所述WORM文件在交集部分的数据是否一样。
若一样,则进行步骤106,若不一样,则进行步骤107。
106、判断所述本次写操作是追加写。
若检测到所述本次写操作与所述WORM文件在交集部分的数据一样,则判断本次写操是在原有WORM文件中的数据的基础上进行的追加写,允许执行本次写操作,所述存储设备的文件系统就可以写入所述本次写操作的数据。
107、判断所述本次写操作是修改写。
若检测到所述本次写操作与所述WORM文件在交集部分的数据不一样,则判断本次写操是对原有WORM文件中的数据的修改写,所述存储设备的文件系统不允许执行本次写操作。
在一些场景下,例如NFS V3协议,所述OPEN指令携带的追加写标识会被存储设备的客户端转化,本发明实施例提供的方法,可以获得本次写操作的起始指针位置为所述WORM文件的结束位置,这样存储设备的服务端就可以判断此次写操作为追加写;若某次写操作的起始指针位置为所述WORM文件的起始位置,且写入的内容包括WORM文件的原有内容,本发明实施例提供的方法,可以识别出WORM文件的保护范围和所述本次写操作的写入范围的交集就是[0,WORM文件原有内容的大小],进而检测出二者在交集部分的数据一样,就可以判断此次写操作为追加写。本发明实施例提供的WORM追加写判断方法,可以在各种场景下更加准确地判断对WORM文件的写操作是否是追加写。
实施例2:
本发明实施例提供了一种WORM追加写判断方法,如图2所示,所述方法包括以下步骤:
201、用户设备发送OPEN指令给存储设备,所述OPEN指令携带文件打开标识。
用户设备在向存储设备的文件系统写入数据时,会先向所述存储设备的文件系统发送OPEN指令,通知所述存储设备服务端的文件系统准备进行数据写入。所述OPEN指令中携带有文件打开标识,所述文件打开标识可能会携带追加写标识。但在某些场景下(如在应用了NFS V3协议的场景下),所述追加写标识会被存储设备的客户端转化,这样所述存储设备的服务端就不会接收到所述追加写标识。
202、获得本次写操作的起始指针位置。
在用户设备向存储设备发送的OPEN指令中有追加写标识的情况下,获得本次写操作包括两种情况:若所述追加写标识没有被转化,就可以获得本次写操作的起始指针位置为所述WORM文件的结束位置;若在某些场景下(如在应用了NFS V3协议的场景下),所述文件打开标识中的追加写标识被存储设备的客户端转化,这时就会接收所述用户设备发送的SEEK指令,所述SEEK指令中携带有所述WORM文件的结束位置,这样获得的本次写操作的起始指针位置为所述SEEK指令中的所述WORM文件的结束位置。
在用户设备向存储设备发送的OPEN指令中没有追加写标识的情况下,获得本次写操作包括两种情况:若所述用户设备没有发送SEEK指令调动指针,则获得本次写操作的起始指针位置为所述WORM文件的起始位置;若所述用户设备发送SEEK指令,所述SEEK指令中携带有目标指针位置,则获得本次写操作的起始指针位置为所述SEEK指令中的所述目标指针位置。
总之,通过用户设备发送的OPEN指令或者SEEK指令就可以获得本次写操作的起始指针位置。
203、接收用户设备发送的WRITE指令,所述WRITE指令中携带有本次写操作的数据大小。
当用户设备向所述存储设备服务端的文件系统发送的OPEN指令,或者,OPEN指令和SEEK指令后,就会向所述存储设备的文件系统发送WRITE指令,通知所述存储设备的文件系统开始进行数据写入,所述WRITE指令携带本次写操作的数据大小。
204、根据所述WRITE指令识别所述本次写操作的写入范围。
在这里,所述写操作的写入范围是大于等于所述本次写操作的起始指针位置值,小于等于所述本次写操作的起始指针位置值加上所述本次写操作的数据大小。接收到用户设备发送的WRITE指令后,就可以获得所述WRITE指令中携带的本次写操作的数据大小,然后结合步骤202所获得本次写操作的起始指针位置就可以得到本次写操作的写入范围。
示例的,如图3所示,本次写操作的文件指针是512,WRITE指令中携带的本次写操作的大小为1024字节,则本次写操作的写入范围是大于等于512小于等于512加上1024,即写入范围为[512,1536]。
205、检测WORM文件的保护范围和所述本次写操作的写入范围是否有交集。
这里,所述WORM文件的存储方式是单写多读,不允许改变WORM文件的原有内容。用户设备对WORM文件的写操作分为修改写和追加写,其中追加写是允许的,修改写是不允许的,故所述WORM文件的保护范围指的是大于等于0小于等于原始WORM文件的大小。
示例的,如图3所示,所述WORM文件的保护范围是[0,1024],而本次写操作的写入范围为[512,1536],故可以检测到WORM文件的保护范围和所述本次写操作的写入范围是有交集的,所以交集部分为[512,1024]。
若检测到有交集,则进行步骤206,若检测到没有交集,则进行步骤208。
206、检测所述本次写操作与所述WORM文件在交集部分的数据是否一样。
若一样,则进行步骤207,若不一样,则进行步骤208。
207、判断所述本次写操作是修改写。
若检测到所述本次写操作与所述WORM文件在交集部分的数据不一样,则判断本次写操是对原有WORM文件中的数据的修改写,所述存储设备不允许执行本次写操作。
208、判断所述本次写操作是追加写。
若检测到所述本次写操作与所述WORM文件在交集部分的数据一样,则判断本次写操是在原有WORM文件中的数据的基础上进行的追加写,允许执行本次写操作,所述存储设备的文件系统就可以写入所述本次写操作的数据。示例的,如图3所示,存储设备的文件系统检测出本次写操作和WORM文件保护范围的交集部分是B[512,1024],所述存储设备可以检测出所述WORM文件与本次写操作在B部分的数据一样,这样就可以判断出所述本次写操作是追加写。
209、从所述本次写操作的起始指针位置处,写入所述本次写操作的数据。
若所述存储设备判断出所述本次写操作是追加写时,所述存储设备服务端就会从所述本次写操作的起始指针位置处,写入所述本次写操作的数据,示例的,如图3所示,所述存储设备从512开始写入所述本次写操作的1024字节的数据B+C,最终得到本次写操作写入后的内容A+B+C,并未对原始内容A+B进行修改。
在一些场景下,例如NFS V3协议,所述OPEN指令携带的追加写标识会被存储设备的客户端转化,本发明实施例提供的方法,可以获得本次写操作的起始指针位置为所述WORM文件的结束位置,这样存储设备的服务端就可以判断此次写操作为追加写;若某次写操作的起始指针位置为所述WORM文件的起始位置,且写入的内容包括WORM文件的原有内容,本发明实施例提供的方法,可以识别出WORM文件的保护范围和所述本次写操作的写入范围的交集就是[0,WORM文件原有内容的大小],进而检测出二者在交集部分的数据一样,就可以判断此次写操作为追加写。本发明实施例提供的WORM追加写判断方法,可以在各种场景下更加准确地判断对WORM文件的写操作是否是追加写。
实施例3:
本发明实施例提供了一种存储设备,如图4所示,包括:获得单元401、接收单元402、识别单元403、检测单元404和判断单元405。
获得单元401,用于获得本次写操作的起始指针位置;接收单元402,用于接收用户设备发送的写WRITE指令,所述WRITE指令中携带有本次写操作的数据大小;识别单元403,用于根据所述接收单元402接收的WRITE指令识别所述本次写操作的写入范围,其中,所述写操作的写入范围是大于等于所述本次写操作的起始指针位置值,小于等于所述本次写操作的起始指针位置值加上所述本次写操作的数据大小;检测单元404,用于检测WORM文件的保护范围和所述识别单元403识别出的本次写操作的写入范围是否有交集;所述检测单元404还用于,在检测到有交集后,检测所述本次写操作与所述WORM文件在交集部分的数据是否一样;判断单元405,用于在所述检测单元404检测到所述本次写操作与所述WORM文件在交集部分的数据一样时,判断所述本次写操作是追加写;在所述检测单元404检测到所述本次写操作与所述WORM文件在交集部分的数据不一样时,判断所述本次写操作是修改写。
判断单元405还用于,在所述检测单元404检测到没有交集时,判断所述本次写操作是追加写。
所述获得单元401还用于,在所述获得单元401获得本次写操作的起始指针位置之前,获得所述用户设备发送的打开OPEN指令,所述OPEN指令中携带有文件打开标识;
所述获得单元401具体用于,在所述文件打开标识中携带有追加写标识时,获得本次写操作的起始指针位置为所述WORM文件的结束位置。
所述获得单元401具体用于,在所述文件打开标识中没有携带追加写标识时,获得本次写操作的起始指针位置为所述WORM文件的起始位置。
所述接收单元402还用于,在所述获得单元401获得所述用户设备发送的OPEN指令之后,在所述文件打开标识中没有携带追加写标识时,接收所述用户设备发送的SEEK指令,所述SEEK指令中携带有目标指针位置;
则,所述获得单元401具体用于,从接收单元402接收的SEEK指令中获得本次写操作的起始指针位置,所述SEEK指令中携带有目标指针位置。
可选的,如图5所示,还包括写入单元406,所述写入单元406用于在所述判断单元405判断所述本次写操作是追加写之后,从所述获得单元401获得的本次写操作的起始指针位置处,写入所述本次写操作的数据。
本发明实施例还提供了一种存储设备,如图6所示,包括:接收接口601,存储器602,处理器603,和磁盘604。当然,存储设备还可以包括基带处理部件、中射频处理部件、输入输出存储设备等通用部件,本发明实施例在此不做任何限制。其中,存储器603中存储一组程序代码,且处理器602用于调用存储器603中存储的程序代码,用于执行以下操作:
所述处理器603,用于获得本次写操作的起始指针位置所述处理器603通过接收接口601接收用户设备发送的写WRITE指令,所述WRITE指令中携带有本次写操作的数据大小;所述处理器603,还用于根据所述接收接口接收的WRITE指令识别所述本次写操作的写入范围,其中,所述写操作的写入范围是大于等于所述本次写操作的起始指针位置值,小于等于所述本次写操作的起始指针位置值加上所述本次写操作的数据大小;所述处理器603,还用于检测WORM文件的保护范围和所述处理器603识别出的本次写操作的写入范围是否有交集;所述处理器603还用于,在检测到有交集后,检测所述本次写操作与所述WORM文件在交集部分的数据是否一样;所述处理器603还用于,在所述检测单元检测到所述本次写操作与所述WORM文件在交集部分的数据一样时,判断所述本次写操作是追加写;在所述检测单元检测到所述本次写操作与所述WORM文件在交集部分的数据不一样时,判断所述本次写操作是修改写。磁盘604,用于在所述处理器603判断所述本次写操作是追加写之后,从所述处理器603获得的本次写操作在磁盘604上的起始指针位置处,在所述磁盘604上写入所述本次写操作的数据。
所述处理器603还用于,在所述处理器603检测到没有交集时,判断所述本次写操作是追加写。
所述处理器603还用于,在所述处理器603获得本次写操作的起始指针位置之前,获得所述用户设备发送的打开OPEN指令,所述OPEN指令中携带有文件打开标识;所述处理器603具体用于,在所述文件打开标识中携带有追加写标识时,获得本次写操作的起始指针位置为所述WORM文件的结束位置。
所述处理器603具体用于,在所述文件打开标识中没有携带追加写标识时,获得本次写操作的起始指针位置为所述WORM文件的起始位置。
所述处理器603还用于,在获得所述用户设备发送的OPEN指令之后,在所述文件打开标识中没有携带追加写标识时,通过所述接收接口601接收所述用户设备发送的SEEK指令,所述SEEK指令中携带有目标指针位置;则,所述处理器603具体用于,从接收接口601接收的SEEK指令中获得本次写操作的起始指针位置,所述本次写操作的起始指针位置为所述目标指针位置。
所述处理器603还用于,在获得所述用户设备发送的OPEN指令之后,在所述文件打开标识中携带有追加写标识但被转化掉的情况下,通过所述接收接口601接收所述用户设备发送的SEEK指令,所述SEEK指令中携带有所述WORM文件的结束位置;则,所述处理器603具体用于,从接收接口601接收的SEEK指令中获得本次写操作的起始指针位置,所述本次写操作的起始指针位置为所述WORM文件的结束位置。
本发明实施例提供的存储设备,根据获得的本次写操作的起始指针位置和本次写操作的数据大小,获得本次写操作的写入范围,然后检测WORM文件的保护范围和本次写操作的写入范围是否有交集,若有交集,则检测所述本次写操作与所述WORM文件在交集部分的数据是否一样,若一样,则判断本次写操作为追加写,否则判断本次写操作为修改写,这样,在追加写标识被转换掉的情况下,本发明实施例提供的方法可以根据本次写操作的起始指针位置判断本次写操作是否为追加写,在没有追加写标识,且本次写操作的写入范围与所述WORM文件的保护范围有交集的情况下,本发明实施例提供的方法可以根据两者在交集部分的数据是否一样,来准确地判断对WORM文件的写操作是否是追加写,故本发明实施例提供的方法就可以在各种场景下更加准确地判断对WORM文件的写操作是否是追加写。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (12)
1.一种单写多读WORM追加写判断方法,其特征在于,包括:
获得本次写操作的起始指针位置;
接收用户设备发送的写WRITE指令,所述WRITE指令中携带有本次写操作的数据大小;
根据所述WRITE指令识别所述本次写操作的写入范围,其中,所述写操作的写入范围是大于等于所述本次写操作的起始指针位置值,小于等于所述本次写操作的起始指针位置值加上所述本次写操作的数据大小;
检测WORM文件的保护范围和所述本次写操作的写入范围是否有交集;
若检测到有交集,则检测所述本次写操作与所述WORM文件在交集部分的数据是否一样;
若一样,则判断所述本次写操作是追加写;若不一样,则判断所述本次写操作是修改写;
若检测到没有交集,则判断所述本次写操作是追加写。
2.根据权利要求1所述的方法,其特征在于,所述获得本次写操作的起始指针位置之前,所述方法还包括:
获得所述用户设备发送的打开OPEN指令,所述OPEN指令中携带有文件打开标识;
则,所述获得本次写操作的起始指针位置,包括:
若所述文件打开标识中携带有追加写标识,则获得的本次写操作的起始指针位置为所述WORM文件的结束位置。
3.根据权利要求2所述的方法,其特征在于,若所述文件打开标识中没有携带追加写标识,则获得的本次写操作的起始指针位置为所述WORM文件的起始位置。
4.根据权利要求2所述的方法,其特征在于,所述获得所述用户设备发送的OPEN指令之后,若所述文件打开标识中没有携带追加写标识,则所述方法还包括:
接收所述用户设备发送的SEEK指令,所述SEEK指令中携带有目标指针位置;
则,获得的本次写操作的起始指针位置为所述SEEK指令中的所述目标指针位置。
5.根据权利要求2所述的方法,其特征在于,所述获得所述用户 设备发送的OPEN指令之后,在所述文件打开标识中携带有追加写标识但被转化掉的情况下,所述方法还包括:
接收所述用户设备发送的SEEK指令,所述SEEK指令中携带有所述WORM文件的结束位置;
则,获得的本次写操作的起始指针位置为所述SEEK指令中的所述WORM文件的结束位置。
6.根据权利要求1-5任意一项所述的方法,其特征在于,在判断所述本次写操作是追加写之后,所述方法还包括:
从所述本次写操作的起始指针位置处,写入所述本次写操作的数据。
7.一种存储设备,其特征在于,包括:
获得单元,用于获得本次写操作的起始指针位置;
接收单元,用于接收用户设备发送的写WRITE指令,所述WRITE指令中携带有本次写操作的数据大小;
识别单元,用于根据所述接收单元接收的WRITE指令识别所述本次写操作的写入范围,其中,所述写操作的写入范围是大于等于所述本次写操作的起始指针位置值,小于等于所述本次写操作的起始指针位置值加上所述本次写操作的数据大小;
检测单元,用于检测WORM文件的保护范围和所述识别单元识别出的本次写操作的写入范围是否有交集;
所述检测单元还用于,在检测到有交集后,检测所述本次写操作与所述WORM文件在交集部分的数据是否一样;
判断单元,用于在所述检测单元检测到所述本次写操作与所述WORM文件在交集部分的数据一样时,判断所述本次写操作是追加写;在所述检测单元检测到所述本次写操作与所述WORM文件在交集部分的数据不一样时,判断所述本次写操作是修改写;
所述判断单元还用于,在所述检测单元检测到没有交集时,判断所述本次写操作是追加写。
8.根据权利要求7所述的存储设备,其特征在于,所述获得单元还用于,在获得本次写操作的起始指针位置之前,获得所述用户设备发送的打开OPEN指令,所述OPEN指令中携带有文件打开标识;
所述获得单元具体用于,在所述文件打开标识中携带有追加写标识时,获得本次写操作的起始指针位置为所述WORM文件的结束位置。
9.根据权利要求8所述的存储设备,其特征在于,所述获得单元具体用于,在所述文件打开标识中没有携带追加写标识时,获得本次写操作的起始指针位置为所述WORM文件的起始位置。
10.根据权利要求8所述的存储设备,其特征在于,所述接收单元还用于,在所述获得单元获得所述用户设备发送的OPEN指令之后,在所述文件打开标识中没有携带追加写标识时,接收所述用户设备发送的SEEK指令,所述SEEK指令中携带有目标指针位置;
则,所述获得单元具体用于,从接收单元接收的SEEK指令中获得本次写操作的起始指针位置,所述本次写操作的起始指针位置为所述目标指针位置。
11.根据权利要求8所述的存储设备,其特征在于,所述接收单元还用于,在所述获得单元获得所述用户设备发送的OPEN指令之后,在所述文件打开标识中携带有追加写标识但被转化掉的情况下,接收所述用户设备发送的SEEK指令,所述SEEK指令中携带有所述WORM文件的结束位置;
则,所述获得单元具体用于,从接收单元接收的SEEK指令中获得本次写操作的起始指针位置,所述本次写操作的起始指针位置为所述WORM文件的结束位置。
12.根据权利要求7-11任意一项所述的存储设备,其特征在于,还包括写入单元;
所述写入单元,用于在所述判断单元判断所述本次写操作是追加写之后,从所述获得单元获得的本次写操作的起始指针位置处,写入所述本次写操作的数据。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310436864.3A CN103500092B (zh) | 2013-09-23 | 2013-09-23 | 一种worm追加写判断方法及存储设备 |
PCT/CN2014/083042 WO2015039496A1 (zh) | 2013-09-23 | 2014-07-25 | 一种worm追加写判断方法及存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310436864.3A CN103500092B (zh) | 2013-09-23 | 2013-09-23 | 一种worm追加写判断方法及存储设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103500092A CN103500092A (zh) | 2014-01-08 |
CN103500092B true CN103500092B (zh) | 2017-01-18 |
Family
ID=49865307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310436864.3A Active CN103500092B (zh) | 2013-09-23 | 2013-09-23 | 一种worm追加写判断方法及存储设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN103500092B (zh) |
WO (1) | WO2015039496A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103500092B (zh) * | 2013-09-23 | 2017-01-18 | 华为技术有限公司 | 一种worm追加写判断方法及存储设备 |
CN109492425B (zh) * | 2018-09-30 | 2021-12-28 | 南京中铁信息工程有限公司 | 一种在分布式文件系统上的worm一写多读技术应用方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101278289A (zh) * | 2005-10-05 | 2008-10-01 | 国际商业机器公司 | 提供对象以支持worm存储设备中的数据结构的系统和方法 |
CN102779180A (zh) * | 2012-06-29 | 2012-11-14 | 华为技术有限公司 | 数据存储系统的操作处理方法,数据存储系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7493454B2 (en) * | 2004-10-29 | 2009-02-17 | International Business Machines Corporation | Method for achieving reliable worm storage using WMRM storage |
US7631161B2 (en) * | 2005-10-21 | 2009-12-08 | International Business Machines Corporation | Apparatus, system, and method for writing data to protected partitions of storage media |
CN101996237A (zh) * | 2010-10-09 | 2011-03-30 | 成都市华为赛门铁克科技有限公司 | 存储区域网络设备的写命令处理方法、设备及系统 |
CN103500092B (zh) * | 2013-09-23 | 2017-01-18 | 华为技术有限公司 | 一种worm追加写判断方法及存储设备 |
-
2013
- 2013-09-23 CN CN201310436864.3A patent/CN103500092B/zh active Active
-
2014
- 2014-07-25 WO PCT/CN2014/083042 patent/WO2015039496A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101278289A (zh) * | 2005-10-05 | 2008-10-01 | 国际商业机器公司 | 提供对象以支持worm存储设备中的数据结构的系统和方法 |
CN102779180A (zh) * | 2012-06-29 | 2012-11-14 | 华为技术有限公司 | 数据存储系统的操作处理方法,数据存储系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2015039496A1 (zh) | 2015-03-26 |
CN103500092A (zh) | 2014-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3270619B1 (en) | Network connection control method and system for mobile terminal | |
CN107665306B (zh) | 一种检测非法文件注入的方法、装置、客户端及服务器 | |
CN104363271A (zh) | 文件断点续传方法及装置 | |
US10956383B2 (en) | Device backup and wipe | |
CN106354884A (zh) | 一种基于分布式文件系统的数据对象删除方法及装置 | |
CN104009964A (zh) | 网络链接检测方法和系统 | |
CN104580695B (zh) | Sim卡的掉卡恢复方法 | |
CN104751086A (zh) | 一种终端防盗方法 | |
CN109033313B (zh) | 一种应用usn实现全盘扫描功能的方法和终端设备 | |
CN106569913A (zh) | 终端备份数据的方法及装置 | |
CN103500092B (zh) | 一种worm追加写判断方法及存储设备 | |
CN104484484B (zh) | 清理缓存文件的方法及装置 | |
US20150079968A1 (en) | Information processing method and electronic device | |
CN104217471B (zh) | 一种加油统计方法及系统 | |
CN110851795B (zh) | 文件管理方法、装置、设备及可读存储介质 | |
CN105468974B (zh) | 一种文件访问方法、装置及移动终端 | |
CN107426270A (zh) | 一种车辆远程监控终端的数据断点续传方法 | |
CN109871685B (zh) | 一种rtf文件的解析方法及装置 | |
CN110944034A (zh) | 一种网页端断点续传方法、装置、电子设备及存储介质 | |
CN104021324A (zh) | 字迹安全校验的方法及装置 | |
CN106375455A (zh) | 一种数据传输方法及装置 | |
JP4962050B2 (ja) | 情報受け渡し装置、方法、プログラム及び記憶媒体 | |
CN103942043B (zh) | 一种管理移动终端桌面图标的方法及装置 | |
CN106657316A (zh) | 一种消息撤回方法及装置 | |
CN106802833A (zh) | 一种生产者消费者模式优化方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |