亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種worm追加寫判斷方法及存儲設備的制作方法

文檔序號:6512726閱讀:190來源:國知局
一種worm追加寫判斷方法及存儲設備的制作方法
【專利摘要】本發(fā)明實施例提供了一種WORM追加寫判斷方法及存儲設備,涉及通信領域,可以更加準確地判斷對WORM文件的寫操作是否是追加寫。所述方法具體包括:獲得本次寫操作的起始指針位置;接收用戶設備發(fā)送的寫WRITE指令,所述WRITE指令中攜帶有本次寫操作的數據大小;根據所述WRITE指令識別所述本次寫操作的寫入范圍;檢測WORM文件的保護范圍和所述本次寫操作的寫入范圍是否有交集;若檢測到有交集,則檢測所述本次寫操作與所述WORM文件在交集部分的數據是否一樣;若是,則判斷所述本次寫操作是追加寫;若不是,則判斷所述本次寫操作是修改寫。
【專利說明】—種WORM追加寫判斷方法及存儲設備
【技術領域】
[0001]本發(fā)明涉及通信領域,尤其涉及一種WORM (Write once Read many,單寫多讀)追加寫判斷方法及存儲設備。
【背景技術】
[0002]WORM是一種只能單次寫入但允許多次讀取的數據存儲方式,能有效避免數據被意外刪除、重寫或更改。因此,許多企業(yè)單位依賴WORM存儲來存儲關鍵數據,防止關鍵數據遭到更改或刪除。以WORM形式保存的文件(即WORM文件)不能被改寫,因此認為WORM文件的保護范圍是[0,原始文件大小]。對WORM文件的操作主要有修改寫和追加寫,修改寫指的是某次寫操作要修改WORM文件保護范圍之內的數據,對于WORM文件修改寫是不允許的;追加寫指的是某次寫操作要寫入的數據在WORM文件保護范圍之外,對于WORM文件追加寫是允許的。
[0003]用戶設備在向存儲設備的文件系統(tǒng)寫入數據時,會先向所述存儲設備的文件系統(tǒng)發(fā)送OPEN指令,通知所述存儲設備的文件系統(tǒng)準備進行數據寫入,然后在接收到用戶設備發(fā)送的WRITE指令后,就可以在判斷出本次寫操作是對WORM文件的追加寫時將本次寫操作的數據寫入WORM文件中。
[0004]現有技術判斷本次寫操作是否為追加寫的方法主要有兩種。一種是根據文件打開標識來判斷,用戶設備發(fā)送的OPEN指令中攜帶有文件打開標識。如果該文件打開標識攜帶了追加寫標識,則存儲設備的文件系統(tǒng)就會判斷出本次寫操作為追加寫操作,否則,就認為是修改寫,不允許本次寫操作。但是,在應用本方法時,有的網絡協(xié)議如NFS(Network FileSystem,網絡文件系統(tǒng))V3中存儲設備上的客戶端會對OPEN指令中攜帶的文件打開標識進行轉換,不會將文件打開標識下發(fā)到存儲設備的服務端,存儲設備的服務端在寫文件時就無法判斷此次寫操作是否是追加寫,導致存儲設備的服務端不會按照追加寫模式寫文件。
[0005]另一種方法是根據文件指針位置來判斷,存儲設備的文件系統(tǒng)接收到WRITE指令后會從調度后當前文件指針位置開始寫入,如果當前文件指針位置在先前寫入的WORM文件的保護范圍內,就認為是修改寫,否則就是追加寫。如果存儲設備的文件系統(tǒng)在進行的兩次寫操作時,都沒有進行文件指針調度,則兩次寫操作都會從文件初始位置開始寫入,此時,若第二次寫入的內容包含第一次寫入的內容,則第二次寫操作實際上是追加寫,但是存儲設備的文件系統(tǒng)檢測出第二次寫操作的指針在第一次寫入的WORM文件的保護范圍內,因此錯誤地將第二次寫操作判斷為修改寫,無法準確判斷出第二次寫操作為追加寫,導致寫操作無法進行。

【發(fā)明內容】

[0006]本發(fā)明的實施例提供一種WORM追加寫判斷方法及存儲設備,可以更加準確地判斷對WORM文件的寫操作是否是追加寫。
[0007]為達到上述目的,本發(fā)明的實施例采用如下技術方案:[0008]第一方面,公開了一種WORM追加寫判斷方法,包括:
[0009]獲得本次寫操作的起始指針位置;
[0010]接收用戶設備發(fā)送的寫WRITE指令,所述WRITE指令中攜帶有本次寫操作的數據大小;
[0011]根據所述WRITE指令識別所述本次寫操作的寫入范圍,其中,所述寫操作的寫入范圍是大于等于所述本次寫操作的起始指針位置值,小于等于所述本次寫操作的起始指針位置值加上所述本次寫操作的數據大?。?br> [0012]檢測WORM文件的保護范圍和所述本次寫操作的寫入范圍是否有交集;
[0013]若檢測到有交集,則檢測所述本次寫操作與所述WORM文件在交集部分的數據是
否一樣;
[0014]若一樣,則判斷所述本次寫操作是追加寫;若不一樣,則判斷所述本次寫操作是修改寫。
[0015]結合第一方面,在第一種可能的實現方式中,所述方法還包括:
[0016]若檢測到沒有交集,則判斷所述本次寫操作是追加寫。
[0017]結合第一方面或第一方面的第一種可能的實現方式,在第二種可能的實現方式中,所述獲得本次寫操作的起始指針位置之前,所述方法還包括:
[0018]獲得所述用戶設備發(fā)送的打開OPEN指令,所述OPEN指令中攜帶有文件打開標識;
[0019]則,所述獲得本次寫操作的起始指針位置,包括:
[0020]若所述文件打開標識中攜帶有追加寫標識,則獲得的本次寫操作的起始指針位置為所述WORM文件的結束位置。
[0021]結合第一方面的第二種可能的實現方式,在第三種可能的實現方式中,若所述文件打開標識中沒有攜帶追加寫標識,則獲得的本次寫操作的起始指針位置為所述WORM文件的起始位置。
[0022]結合第一方面的第二種可能的實現方式,在第四種可能的實現方式中,所述接收所述用戶設備發(fā)送的OPEN指令之后,若所述文件打開標識中沒有攜帶追加寫標識,則所述方法還包括:
[0023]接收所述用戶設備發(fā)送的SEEK指令,所述SEEK指令中攜帶有目標指針位置;
[0024]則,獲得的本次寫操作的起始指針位置為所述SEEK指令中的所述目標指針位置。
[0025]結合第一方面的第二種可能的實現方式,在第五種可能的實現方式中,所述接收所述用戶設備發(fā)送的OPEN指令之后,若所述文件打開標識中攜帶有追加寫標識但被轉化掉的情況下,所述方法還包括:
[0026]接收所述用戶設備發(fā)送的SEEK指令,所述SEEK指令中攜帶有所述WORM文件的結束位置;
[0027]則,獲得的本次寫操作的起始指針位置為所述SEEK指令中的所述WORM文件的結
束位置。
[0028]結合第一方面、第一方面的第一種可能的實現方式、第一方面的第二種可能的實現方式、第一方面的第三種可能的實現方式、第一方面的第四種可能的實現方式或第一方面的第五種可能的實現方式,在第六種可能的實現方式中,在判斷所述本次寫操作是追加寫之后,所述方法還包括:
[0029]從所述本次寫操作的起始指針位置處,寫入所述本次寫操作的數據。
[0030]第二方面,公開了ー種存儲設備,包括:
[0031]獲得單元,用于獲得本次寫操作的起始指針位置;
[0032]接收單元,用于接收用戶設備發(fā)送的寫WRITE指令,所述WRITE指令中攜帶有本次寫操作的數據大??;
[0033]識別單元,用于根據所述接收単元接收的WRITE指令識別所述本次寫操作的寫入范圍,其中,所述寫操作的寫入范圍是大于等于所述本次寫操作的起始指針位置值,小于等于所述本次寫操作的起始指針位置值加上所述本次寫操作的數據大??;
[0034]檢測單元,用于檢測WORM文件的保護范圍和所述識別単元識別出的本次寫操作的寫入范圍是否有交集;
[0035]所述檢測單元還用干,在檢測到有交集后,檢測所述本次寫操作與所述WORM文件在交集部分的數據是否一祥;
[0036]判斷単元,用于在所述檢測単元檢測到所述本次寫操作與所述WORM文件在交集部分的數據ー樣時,判斷所述本次寫操作是追加寫;在所述檢測単元檢測到所述本次寫操作與所述WORM文件在交集部分的數據不一樣時,判斷所述本次寫操作是修改寫。
[0037]結合第二方面,在第一種可能的實現方式中,所述判斷單元還用于,在所述檢測單元檢測到沒有交集時,判斷所述本次寫操作是追加寫。
[0038]結合第二方面、第二方面的第一種可能的實現方式,在第二種可能的實現方式中,所述獲得単元還用于,在獲得本次寫操作的起始指針位置之前,獲得所述用戶設備發(fā)送的打開OPEN指令,所述OPEN指令中攜帯有文件打開標識;
[0039]所述獲得単元具體用于,在所述文件打開標識中攜帯有追加寫標識時,獲得本次寫操作的起始指針位置為所述WORM文件的結束位置。
[0040]結合第二方面,在第三種可能的實現方式中,在所述文件打開標識中沒有攜帯追加寫標識時,所述獲得單元獲得的本次寫操作的起始指針位置為所述WORM文件的起始位

[0041]結合第二方面,在第四種可能的實現方式中,所述接收単元還用于,在所述獲得單元獲得所述用戶設備發(fā)送的OPEN指令之后,在所述文件打開標識中沒有攜帯追加寫標識時,接收所述用戶設備發(fā)送的SEEK指令,所述SEEK指令中攜帯有目標指針位置;
[0042]則,所述獲得単元具體用于,從接收單元接收的SEEK指令中獲得本次寫操作的起始指針位置,所述本次寫操作的起始指針位置為所述目標指針位置。
[0043]結合第二方面,在第五種可能的實現方式中,所述接收単元還用于,在所述獲得單元獲得所述用戶設備發(fā)送的OPEN指令之后,在所述文件打開標識中攜帯有追加寫標識但被轉化掉的情況下,接收所述用戶設備發(fā)送的SEEK指令,所述SEEK指令中攜帶有所述WORM文件的結束位置;
[0044]則,所述獲得単元具體用于,從接收單元接收的SEEK指令中獲得本次寫操作的起始指針位置,所述本次寫操作的起始指針位置為所述WORM文件的結束位置。
[0045]結合第一方面、第一方面的第一種可能的實現方式、第一方面的第二種可能的實現方式、第一方面的第三種可能的實現方式、第一方面的第四種可能的實現方式或第一方面的第五種可能的實現方式,在第六種可能的實現方式中,還包括寫入單元;
[0046]所述寫入單元,用于在所述判斷單元判斷所述本次寫操作是追加寫之后,從所述獲得單元獲得的本次寫操作的起始指針位置處,寫入所述本次寫操作的數據。
[0047]本發(fā)明實施例提供的WORM追加寫判斷方法和存儲設備,根據獲得的本次寫操作的起始指針位置和本次寫操作的數據大小,獲得本次寫操作的寫入范圍,然后檢測WORM文件的保護范圍和本次寫操作的寫入范圍是否有交集,若有交集,則檢測所述本次寫操作與所述WORM文件在交集部分的數據是否一樣,若一樣,則判斷本次寫操作為追加寫,否則判斷本次寫操作為修改寫,這樣,在追加寫標識被轉換掉的情況下,本發(fā)明實施例提供的方法可以根據本次寫操作的起始指針位置判斷本次寫操作是否為追加寫,在沒有追加寫標識,且本次寫操作的寫入范圍與所述WORM文件的保護范圍有交集的情況下,本發(fā)明實施例提供的方法可以根據兩者在交集部分的數據是否一樣,來準確地判斷對WORM文件的寫操作是否是追加寫,故本發(fā)明實施例提供的方法就可以在各種場景下更加準確地判斷對WORM文件的寫操作是否是追加寫。
【專利附圖】

【附圖說明】
[0048]圖1為本發(fā)明實施例1提供的一種WORM追加寫判斷方法流程示意圖;
[0049]圖2為本發(fā)明實施例2提供的一種WORM追加寫判斷方法流程示意圖;
[0050]圖3為本發(fā)明提供的一種WORM追加寫過程示意圖;
[0051]圖4為本發(fā)明實施例3提供的一種存儲設備的結構框圖;
[0052]圖5為本發(fā)明實施例3提供的另一種存儲設備的結構框圖;
[0053]圖6為本發(fā)明實施例3提供的一種存儲設備的結構框圖。
【具體實施方式】
[0054]下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0055]實施例1:
[0056]本發(fā)明實施例提供了一種WORM追加寫判斷方法,如圖1所示,所述方法包括以下步驟:
[0057]101、獲得本次寫操作的起始指針位置。
[0058]用戶設備在向存儲設備的文件系統(tǒng)寫入數據時,會先向所述存儲設備的文件系統(tǒng)發(fā)送OPEN指令,通知所述存儲設備的文件系統(tǒng)準備進行數據寫入。
[0059]在用戶設備向存儲設備發(fā)送的OPEN指令中有追加寫標識的情況下,所述OPEN指令中攜帶有文件打開標識,所述文件打開標識中攜帶追加寫標識,若因為在某些場景下(如在應用了 NFS V3協(xié)議的場景下),所述文件打開標識中的追加寫標識被存儲設備的客戶端轉化,所述存儲設備的服務端就不會接收到所述追加寫標識,此時,所述存儲設備的文件系統(tǒng)可以根據用戶設備隨后發(fā)送的,攜帶有所述本次寫操作的起始指針位置的SEEK指令來獲得所述本次寫操作的起始指針位置,這時,用戶設備發(fā)送的本次寫操作的起始指針位置為WORM文件的結束位置。若在其他場景下該追加寫標識未被轉化,并發(fā)送給了所述存儲設備的服務端,則所述存儲設備會認為本次寫操作為追加寫,則存儲設備的文件系統(tǒng)獲得本次寫操作的起始指針位置為所述WORM文件的結束位置。
[0060]在用戶設備向存儲設備發(fā)送的OPEN指令中沒有追加寫標識的情況下,若所述用戶設備沒有向所述存儲設備發(fā)送SEEK指令,則本次寫操作的起始指針位置為所述WORM文件的起始位置;若所述用戶設備向所述存儲設備發(fā)送SEEK指令,則本次寫操作的起始指針位置為所述SEEK指令中攜帶的指針位置。
[0061]102、接收用戶設備發(fā)送的WRITE指令,所述WRITE指令中攜帶有本次寫操作的數據大小。
[0062]用戶設備向存儲設備的文件系統(tǒng)發(fā)送OPEN指令,通知所述存儲設備的文件系統(tǒng)準備進行數據寫入,可以向所述存儲設備的文件系統(tǒng)發(fā)送SEEK指令,通知本次寫操作的起始指針位置,也可以不發(fā)送SEEK指令,在這里,所述SEEK指令是根據用戶的需要來發(fā)送的,在此不做限定。在此之后,所述用戶設備就會向所述存儲設備的文件系統(tǒng)發(fā)送WRITE指令,通知所述存儲設備的文件系統(tǒng)開始進行數據寫入,所述WRITE指令攜帶本次寫操作的數據大小。
[0063]103、根據所述WRITE指令識別所述本次寫操作的寫入范圍。
[0064]其中,所述寫操作的寫入范圍是大于等于所述本次寫操作的起始指針位置值,小于等于所述本次寫操作的起始指針位置值加上所述本次寫操作的數據大小。
[0065]104、檢測WORM文件的保護范圍和所述本次寫操作的寫入范圍是否有交集。
[0066]所述WORM文件的存儲方式是單寫多讀,不允許改變WORM文件的原有內容。用戶設備對WORM文件的寫操作分為修改寫和追加寫,其中追加寫允許的,修改寫是不允許的,故所述WORM文件的保護范圍指的是大于等于O小于等于原始WORM文件的大小。
[0067]存儲設備的文件系統(tǒng)可以檢測WORM文件的保護范圍和所述本次寫操作的寫入范圍是否有交集,若檢測到所述WORM文件的保護范圍和所述本次寫操作的寫入范圍有交集,則進行步驟105,若檢測到所述WORM文件的保護范圍和所述本次寫操作的寫入范圍沒有交集,則進行步驟106。
[0068]105、檢測所述本次寫操作與所述WORM文件在交集部分的數據是否一樣。
[0069]若一樣,則進行步驟106,若不一樣,則進行步驟107。
[0070]106、判斷所述本次寫操作是追加寫。
[0071]若檢測到所述本次寫操作與所述WORM文件在交集部分的數據一樣,則判斷本次寫操是在原有WORM文件中的數據的基礎上進行的追加寫,允許執(zhí)行本次寫操作,所述存儲設備的文件系統(tǒng)就可以寫入所述本次寫操作的數據。
[0072]107、判斷所述本次寫操作是修改寫。
[0073]若檢測到所述本次寫操作與所述WORM文件在交集部分的數據不一樣,則判斷本次寫操是對原有WORM文件中的數據的修改寫,所述存儲設備的文件系統(tǒng)不允許執(zhí)行本次
寫操作。
[0074]在一些場景下,例如NFS V3協(xié)議,所述OPEN指令攜帶的追加寫標識會被存儲設備的客戶端轉化,本發(fā)明實施例提供的方法,可以獲得本次寫操作的起始指針位置為所述WORM文件的結束位置,這樣存儲設備的服務端就可以判斷此次寫操作為追加寫;若某次寫操作的起始指針位置為所述WORM文件的起始位置,且寫入的內容包括WORM文件的原有內容,本發(fā)明實施例提供的方法,可以識別出WORM文件的保護范圍和所述本次寫操作的寫入范圍的交集就是[0,W0RM文件原有內容的大小],進而檢測出二者在交集部分的數據一祥,就可以判斷此次寫操作為追加寫。本發(fā)明實施例提供的WORM追加寫判斷方法,可以在各種場景下更加準確地判斷對WORM文件的寫操作是否是追加寫。
[0075]實施例2:
[0076]本發(fā)明實施例提供了ー種WORM追加寫判斷方法,如圖2所示,所述方法包括以下步驟:
[0077]201、用戶設備發(fā)送OPEN指令給存儲設備,所述OPEN指令攜帯文件打開標識。
[0078]用戶設備在向存儲設備的文件系統(tǒng)寫入數據時,會先向所述存儲設備的文件系統(tǒng)發(fā)送OPEN指令,通知所述存儲設備服務端的文件系統(tǒng)準備進行數據寫入。所述OPEN指令中攜帯有文件打開標識,所述文件打開標識可能會攜帯追加寫標識。但在某些場景下(如在應用了 NFS V3協(xié)議的場景下),所述追加寫標識會被存儲設備的客戶端轉化,這樣所述存儲設備的服務端就不會接收到所述追加寫標識。
[0079]202、獲得本次寫操作的起始指針位置。
[0080]在用戶設備向存儲設備發(fā)送的OPEN指令中有追加寫標識的情況下,獲得本次寫操作包括兩種情況:若所述追加寫標識沒有被轉化,就可以獲得本次寫操作的起始指針位置為所述WORM文件的結束位置;若在某些場景下(如在應用了 NFS V3協(xié)議的場景下),所述文件打開標識中的追加寫標識被存儲設備的客戶端轉化,這時就會接收所述用戶設備發(fā)送的SEEK指令,所述SEEK指令中攜帯有所述WORM文件的結束位置,這樣獲得的本次寫操作的起始指針位置為所述SEEK指令中的所述WORM文件的結束位置。
[0081]在用戶設備向存儲設備發(fā)送的OPEN指令中沒有追加寫標識的情況下,獲得本次寫操作包括兩種情況:若所述用戶設備沒有發(fā)送SEEK指令調動指針,則獲得本次寫操作的起始指針位置為所述WORM文件的起始位置;若所述用戶設備發(fā)送SEEK指令,所述SEEK指令中攜帯有目標指針位置,則獲得本次寫操作的起始指針位置為所述SEEK指令中的所述目標指針位置。
[0082]總之,通過用戶設備發(fā)送的OPEN指令或者SEEK指令就可以獲得本次寫操作的起始指針位置。
[0083]203、接收用戶設備發(fā)送的WRITE指令,所述WRITE指令中攜帯有本次寫操作的數據大小。
[0084]當用戶設備向所述存儲設備服務端的文件系統(tǒng)發(fā)送的OPEN指令,或者,OPEN指令和SEEK指令后,就會向所述存儲設備的文件系統(tǒng)發(fā)送WRITE指令,通知所述存儲設備的文件系統(tǒng)開始進行數據寫入,所述WRITE指令攜帯本次寫操作的數據大小。
[0085]204、根據所述WRITE指令識別所述本次寫操作的寫入范圍。
[0086]在這里,所述寫操作的寫入范圍是大于等于所述本次寫操作的起始指針位置值,小于等于所述本次寫操作的起始指針位置值加上所述本次寫操作的數據大小。接收到用戶設備發(fā)送的WRITE指令后,就可以獲得所述WRITE指令中攜帯的本次寫操作的數據大小,然后結合步驟202所獲得本次寫操作的起始指針位置就可以得到本次寫操作的寫入范圍。
[0087]示例的,如圖3所示,本次寫操作的文件指針是512,WRITE指令中攜帯的本次寫操作的大小為1024字節(jié),則本次寫操作的寫入范圍是大于等于512小于等于512加上1024,即寫入范圍為[512,1536]。
[0088]205、檢測WORM文件的保護范圍和所述本次寫操作的寫入范圍是否有交集。
[0089]這里,所述WORM文件的存儲方式是單寫多讀,不允許改變WORM文件的原有內容。用戶設備對WORM文件的寫操作分為修改寫和追加寫,其中追加寫是允許的,修改寫是不允許的,故所述WORM文件的保護范圍指的是大于等于O小于等于原始WORM文件的大小。
[0090]示例的,如圖3所示,所述WORM文件的保護范圍是[0,1024],而本次寫操作的寫入范圍為[512,1536],故可以檢測到WORM文件的保護范圍和所述本次寫操作的寫入范圍是有交集的,所以交集部分為[512,1024]。
[0091]若檢測到有交集,則進行步驟206,若檢測到沒有交集,則進行步驟208。
[0092]206、檢測所述本次寫操作與所述WORM文件在交集部分的數據是否一樣。
[0093]若一樣,則進行步驟207,若不一樣,則進行步驟208。
[0094]207、判斷所述本次寫操作是修改寫。
[0095]若檢測到所述本次寫操作與所述WORM文件在交集部分的數據不一樣,則判斷本次寫操是對原有WORM文件中的數據的修改寫,所述存儲設備不允許執(zhí)行本次寫操作。
[0096]208、判斷所述本次寫操作是追加寫。
[0097]若檢測到所述本次寫操作與所述WORM文件在交集部分的數據一樣,則判斷本次寫操是在原有WORM文件中的數據的基礎上進行的追加寫,允許執(zhí)行本次寫操作,所述存儲設備的文件系統(tǒng)就可以寫入所述本次寫操作的數據。示例的,如圖3所示,存儲設備的文件系統(tǒng)檢測出本次寫操作和WORM文件保護范圍的交集部分是B[512,1024],所述存儲設備可以檢測出所述WORM文件與本次寫操作在B部分的數據一樣,這樣就可以判斷出所述本次寫操作是追加寫。
[0098]209、從所述本次寫操作的起始指針位置處,寫入所述本次寫操作的數據。
[0099]若所述存儲設備判斷出所述本次寫操作是追加寫時,所述存儲設備服務端就會從所述本次寫操作的起始指針位置處,寫入所述本次寫操作的數據,示例的,如圖3所示,所述存儲設備從512開始寫入所述本次寫操作的1024字節(jié)的數據B+C,最終得到本次寫操作寫入后的內容A+B+C,并未對原始內容A+B進行修改。
[0100]在一些場景下,例如NFS V3協(xié)議,所述OPEN指令攜帶的追加寫標識會被存儲設備的客戶端轉化,本發(fā)明實施例提供的方法,可以獲得本次寫操作的起始指針位置為所述WORM文件的結束位置,這樣存儲設備的服務端就可以判斷此次寫操作為追加寫;若某次寫操作的起始指針位置為所述WORM文件的起始位置,且寫入的內容包括WORM文件的原有內容,本發(fā)明實施例提供的方法,可以識別出WORM文件的保護范圍和所述本次寫操作的寫入范圍的交集就是[0,W0RM文件原有內容的大小],進而檢測出二者在交集部分的數據一樣,就可以判斷此次寫操作為追加寫。本發(fā)明實施例提供的WORM追加寫判斷方法,可以在各種場景下更加準確地判斷對WORM文件的寫操作是否是追加寫。
[0101]實施例3:
[0102]本發(fā)明實施例提供了一種存儲設備,如圖4所示,包括:獲得單元401、接收單元402、識別單元403、檢測單元404和判斷單元405。
[0103]獲得單元401,用于獲得本次寫操作的起始指針位置;接收單元402,用于接收用戶設備發(fā)送的寫WRITE指令,所述WRITE指令中攜帶有本次寫操作的數據大小;識別單元403,用于根據所述接收單元402接收的WRITE指令識別所述本次寫操作的寫入范圍,其中,所述寫操作的寫入范圍是大于等于所述本次寫操作的起始指針位置值,小于等于所述本次寫操作的起始指針位置值加上所述本次寫操作的數據大小;檢測單元404,用于檢測WORM文件的保護范圍和所述識別單元403識別出的本次寫操作的寫入范圍是否有交集;所述檢測單元404還用于,在檢測到有交集后,檢測所述本次寫操作與所述WORM文件在交集部分的數據是否一樣;判斷單元405,用于在所述檢測單元404檢測到所述本次寫操作與所述WORM文件在交集部分的數據一樣時,判斷所述本次寫操作是追加寫;在所述檢測單元404檢測到所述本次寫操作與所述WORM文件在交集部分的數據不一樣時,判斷所述本次寫操作是修改寫。
[0104]判斷單元405還用于,在所述檢測單元404檢測到沒有交集時,判斷所述本次寫操作是追加寫。
[0105]所述獲得單元401還用于,在所述獲得單元401獲得本次寫操作的起始指針位置之前,獲得所述用戶設備發(fā)送的打開OPEN指令,所述OPEN指令中攜帶有文件打開標識;
[0106]所述獲得單元401具體用于,在所述文件打開標識中攜帶有追加寫標識時,獲得本次寫操作的起始指針位置為所述WORM文件的結束位置。
[0107]所述獲得單元401具體用于,在所述文件打開標識中沒有攜帶追加寫標識時,獲得本次寫操作的起始指針位置為所述WORM文件的起始位置。
[0108]所述接收單元402還用于,在所述獲得單元401獲得所述用戶設備發(fā)送的OPEN指令之后,在所述文件打開標識中沒有攜帶追加寫標識時,接收所述用戶設備發(fā)送的SEEK指令,所述SEEK指令中攜帶有目標指針位置;
[0109]則,所述獲得單元401具體用于,從接收單元402接收的SEEK指令中獲得本次寫操作的起始指針位置,所述SEEK指令中攜帶有目標指針位置。
[0110]可選的,如圖5所示,還包括寫入單元406,所述寫入單元406用于在所述判斷單元405判斷所述本次寫操作是追加寫之后,從所述獲得單元401獲得的本次寫操作的起始指針位置處,寫入所述本次寫操作的數據。
[0111]本發(fā)明實施例還提供了一種存儲設備,如圖6所示,包括:接收接口 601,存儲器602,處理器603,和磁盤604。當然,存儲設備還可以包括基帶處理部件、中射頻處理部件、輸入輸出存儲設備等通用部件,本發(fā)明實施例在此不做任何限制。其中,存儲器603中存儲一組程序代碼,且處理器602用于調用存儲器603中存儲的程序代碼,用于執(zhí)行以下操作:
[0112]所述處理器603,用于獲得本次寫操作的起始指針位置所述處理器603通過接收接口 601接收用戶設備發(fā)送的寫WRITE指令,所述WRITE指令中攜帶有本次寫操作的數據大?。凰鎏幚砥?03,還用于根據所述接收接口接收的WRITE指令識別所述本次寫操作的寫入范圍,其中,所述寫操作的寫入范圍是大于等于所述本次寫操作的起始指針位置值,小于等于所述本次寫操作的起始指針位置值加上所述本次寫操作的數據大??;所述處理器603,還用于檢測WORM文件的保護范圍和所述處理器603識別出的本次寫操作的寫入范圍是否有交集;所述處理器603還用于,在檢測到有交集后,檢測所述本次寫操作與所述WORM文件在交集部分的數據是否一樣;所述處理器603還用于,在所述檢測單元檢測到所述本次寫操作與所述WORM文件在交集部分的數據一樣時,判斷所述本次寫操作是追加寫;在所述檢測単元檢測到所述本次寫操作與所述WORM文件在交集部分的數據不一樣時,判斷所述本次寫操作是修改寫。磁盤604,用于在所述處理器603判斷所述本次寫操作是追加寫之后,從所述處理器603獲得的本次寫操作在磁盤604上的起始指針位置處,在所述磁盤604上寫入所述本次寫操作的數據。
[0113]所述處理器603還用于,在所述處理器603檢測到沒有交集時,判斷所述本次寫操作是追加寫。
[0114]所述處理器603還用干,在所述處理器603獲得本次寫操作的起始指針位置之前,獲得所述用戶設備發(fā)送的打開OPEN指令,所述OPEN指令中攜帯有文件打開標識;所述處理器603具體用于,在所述文件打開標識中攜帯有追加寫標識時,獲得本次寫操作的起始指針位置為所述WORM文件的結束位置。
[0115]所述處理器603具體用于,在所述文件打開標識中沒有攜帯追加寫標識時,獲得本次寫操作的起始指針位置為所述WORM文件的起始位置。
[0116]所述處理器603還用于,在獲得所述用戶設備發(fā)送的OPEN指令之后,在所述文件打開標識中沒有攜帯追加寫標識時,通過所述接收接ロ 601接收所述用戶設備發(fā)送的SEEK指令,所述SEEK指令中攜帯有目標指針位置;則,所述處理器603具體用干,從接收接ロ601接收的SEEK指令中獲得本次寫操作的起始指針位置,所述本次寫操作的起始指針位置為所述目標指針位置。
[0117]所述處理器603還用于,在獲得所述用戶設備發(fā)送的OPEN指令之后,在所述文件打開標識中攜帯有追加寫標識但被轉化掉的情況下,通過所述接收接ロ 601接收所述用戶設備發(fā)送的SEEK指令,所述SEEK指令中攜帯有所述WORM文件的結束位置;則,所述處理器603具體用于,從接收接ロ 601接收的SEEK指令中獲得本次寫操作的起始指針位置,所述本次寫操作的起始指針位置為所述WORM文件的結束位置。
[0118]本發(fā)明實施例提供的存儲設備,根據獲得的本次寫操作的起始指針位置和本次寫操作的數據大小,獲得本次寫操作的寫入范圍,然后檢測WORM文件的保護范圍和本次寫操作的寫入范圍是否有交集,若有交集,則檢測所述本次寫操作與所述WORM文件在交集部分的數據是否一祥,若一祥,則判斷本次寫操作為追加寫,否則判斷本次寫操作為修改寫,這樣,在追加寫標識被轉換掉的情況下,本發(fā)明實施例提供的方法可以根據本次寫操作的起始指針位置判斷本次寫操作是否為追加寫,在沒有追加寫標識,且本次寫操作的寫入范圍與所述WORM文件的保護范圍有交集的情況下,本發(fā)明實施例提供的方法可以根據兩者在交集部分的數據是否一祥,來準確地判斷對WORM文件的寫操作是否是追加寫,故本發(fā)明實施例提供的方法就可以在各種場景下更加準確地判斷對WORM文件的寫操作是否是追加與。
[0119]本領域普通技術人員可以理解:實現上述方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成,前述的程序可以存儲于ー計算機可讀取存儲介質中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質包括:R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質。
[0120]以上所述,僅為本發(fā)明的【具體實施方式】,但本發(fā)明的保護范圍并不局限于此,任何熟悉本【技術領域】的技術人員在本發(fā)明揭露的技術范圍內,可輕易想到變化或替換,都應涵蓋在本發(fā)明的保護范圍之內。因此,本發(fā)明的保護范圍應所述以權利要求的保護范圍為準。
【權利要求】
1.一種單寫多讀WORM追加寫判斷方法,其特征在于,包括: 獲得本次寫操作的起始指針位置; 接收用戶設備發(fā)送的寫WRITE指令,所述WRITE指令中攜帶有本次寫操作的數據大小; 根據所述WRITE指令識別所述本次寫操作的寫入范圍,其中,所述寫操作的寫入范圍是大于等于所述本次寫操作的起始指針位置值,小于等于所述本次寫操作的起始指針位置值加上所述本次寫操作的數據大?。? 檢測WORM文件的保護范圍和所述本次寫操作的寫入范圍是否有交集; 若檢測到有交集,則檢測所述本次寫操作與所述WORM文件在交集部分的數據是否一樣; 若一樣,則判斷所述本次寫操作是追加寫;若不一樣,則判斷所述本次寫操作是修改與O
2.根據權利要求1所述 的方法,其特征在于,所述方法還包括: 若檢測到沒有交集,則判斷所述本次寫操作是追加寫。
3.根據權利要求1或2所述的方法,其特征在于,所述獲得本次寫操作的起始指針位置之前,所述方法還包括: 獲得所述用戶設備發(fā)送的打開OPEN指令,所述OPEN指令中攜帶有文件打開標識; 貝U,所述獲得本次寫操作的起始指針位置,包括: 若所述文件打開標識中攜帶有追加寫標識,則獲得的本次寫操作的起始指針位置為所述WORM文件的結束位置。
4.根據權利要求3所述的方法,其特征在于,若所述文件打開標識中沒有攜帶追加寫標識,則獲得的本次寫操作的起始指針位置為所述WORM文件的起始位置。
5.根據權利要求3所述的方法,其特征在于,所述接收所述用戶設備發(fā)送的OPEN指令之后,若所述文件打開標識中沒有攜帶追加寫標識,則所述方法還包括: 接收所述用戶設備發(fā)送的SEEK指令,所述SEEK指令中攜帶有目標指針位置; 貝U,獲得的本次寫操作的起始指針位置為所述SEEK指令中的所述目標指針位置。
6.根據權利要求3所述的方法,其特征在于,所述獲得所述用戶設備發(fā)送的OPEN指令之后,在所述文件打開標識中攜帶有追加寫標識但被轉化掉的情況下,所述方法還包括: 接收所述用戶設備發(fā)送的SEEK指令,所述SEEK指令中攜帶有所述WORM文件的結束位置; 貝丨J,獲得的本次寫操作的起始指針位置為所述SEEK指令中的所述WORM文件的結束位置。
7.根據權利要求1-6任意一項所述的方法,其特征在于,在判斷所述本次寫操作是追加寫之后,所述方法還包括: 從所述本次寫操作的起始指針位置處,寫入所述本次寫操作的數據。
8.一種存儲設備,其特征在于,包括: 獲得單元,用于獲得本次寫操作的起始指針位置; 接收單元,用于接收用戶設備發(fā)送的寫WRITE指令,所述WRITE指令中攜帶有本次寫操作的數據大??;識別單元,用于根據所述接收単元接收的WRITE指令識別所述本次寫操作的寫入范圍,其中,所述寫操作的寫入范圍是大于等于所述本次寫操作的起始指針位置值,小于等于所述本次寫操作的起始指針位置值加上所述本次寫操作的數據大??; 檢測單元,用于檢測WORM文件的保護范圍和所述識別単元識別出的本次寫操作的寫入范圍是否有交集; 所述檢測単元還用于,在檢測到有交集后,檢測所述本次寫操作與所述WORM文件在交集部分的數據是否一祥; 判斷単元,用于在所述檢測単元檢測到所述本次寫操作與所述WORM文件在交集部分的數據ー樣時,判斷所述本次寫操作是追加寫;在所述檢測単元檢測到所述本次寫操作與所述WORM文件在交集部分的數據不一樣時,判斷所述本次寫操作是修改寫。
9.根據權利要求8所述的存儲設備,其特征在于,所述判斷単元還用于,在所述檢測單元檢測到沒有交集時,判斷所述本次寫操作是追加寫。
10.根據權利要求8或9所述的存儲設備,其特征在于,所述獲得単元還用于,在獲得本次寫操作的起始指針位置之前,獲得所述用戶設備發(fā)送的打開OPEN指令,所述OPEN指令中攜帯有文件打開標識; 所述獲得単元具體用于,在所述文件打開標識中攜帯有追加寫標識時,獲得本次寫操作的起始指針位置為所述WORM文件的結束位置。
11.根據權利要求10所述的存儲設備,其特征在于,所述獲得単元具體用于,在所述文件打開標識中沒有攜帯追加寫標識吋,獲得本次寫操作的起始指針位置為所述WORM文件的起始位置。
12.根據權利要求10所述的存儲`設備,其特征在于,所述接收単元還用于,在所述獲得單元獲得所述用戶設備發(fā)送的OPEN指令之后,在所述文件打開標識中沒有攜帯追加寫標識時,接收所述用戶設備發(fā)送的SEEK指令,所述SEEK指令中攜帯有目標指針位置; 貝U,所述獲得単元具體用于,從接收單元接收的SEEK指令中獲得本次寫操作的起始指針位置,所述本次寫操作的起始指針位置為所述目標指針位置。
13.根據權利要求10所述的存儲設備,其特征在于,所述接收単元還用于,在所述獲得單元獲得所述用戶設備發(fā)送的OPEN指令之后,在所述文件打開標識中攜帯有追加寫標識但被轉化掉的情況下,接收所述用戶設備發(fā)送的SEEK指令,所述SEEK指令中攜帯有所述WORM文件的結束位置; 貝U,所述獲得単元具體用于,從接收單元接收的SEEK指令中獲得本次寫操作的起始指針位置,所述本次寫操作的起始指針位置為所述WORM文件的結束位置。
14.根據權利要求8-13任意ー項所述的存儲設備,其特征在于,還包括寫入単元; 所述寫入単元,用于在所述判斷単元判斷所述本次寫操作是追加寫之后,從所述獲得單元獲得的本次寫操作的起始指針位置處,寫入所述本次寫操作的數據。
【文檔編號】G06F9/44GK103500092SQ201310436864
【公開日】2014年1月8日 申請日期:2013年9月23日 優(yōu)先權日:2013年9月23日
【發(fā)明者】仇鋒利, 彭勇, 宛涌 申請人:華為技術有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1