欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于使用wmrm存儲器實現可靠的worm存儲器的系統(tǒng)和方法

文檔序號:6758718閱讀:253來源:國知局
專利名稱:用于使用wmrm存儲器實現可靠的worm存儲器的系統(tǒng)和方法
技術領域
本發(fā)明涉及一種用于加強WMRM存儲器上的WORM屬性的新的存儲方法和系統(tǒng)。
背景技術
隨著關鍵數據被越發(fā)地以電子形式加以存儲,以防干擾方式可靠地存儲數據是至關重要的。此外,電子數據的不斷發(fā)展的子集(例如,電子郵件、瞬時消息、藥品開發(fā)記錄、病歷)遵守用于管理其長期保留和可利用性的規(guī)章。最近,大型公營公司的備受矚目的責任發(fā)布已經進一步導致諸如證券交易委員會(Securities and ExchangeCommission,SEC)之類的規(guī)范主體使他們的規(guī)章變得更嚴。舉例來說,SEC的新細則17a-4(Rule 17a-4)(2003年5月生效)規(guī)定了對電子郵件、附件、備忘錄以及瞬時消息傳送(messaging)連同常規(guī)電話會話的存儲要求。在許多這種規(guī)章中,關鍵的要求在于必須把數據可靠地存儲在不可擦除的、不可重寫的存儲器中,從而使得一旦寫入數據,它就無法被改變或改寫。與可以多次寫入的WMRM(多寫多讀,Write-Many Read-Many)存儲器相反,這種不可重寫的存儲器通常被稱為WORM(一寫多讀,Write-Once Read-Many)存儲器。
傳統(tǒng)上,WORM存儲器是通過使用光學手段在存儲介質(例如,WORM光盤、CD-R、DVD-R)中引起不可逆的改變來實現的。由于市場力量以及物理和/或技術限制,WORM光存儲器沒有得到非常大的改進,并且在性能和/或存儲密度方面不可能有非常大的改進。組織機構由此必須把他們的迅速增長的大量關鍵記錄存儲在越來越多的大量WORM光盤上。管理這么大量的盤是繁重的、耗時的、易于出錯的并且是昂貴的過程。更重要的是,與數據發(fā)現請求有關的記錄無法容易地被定位在這種系統(tǒng)中,并且無法以及時的方式來遞送。
WORM光存儲器的最近介紹的替代方式是WORM磁帶。所述WORM磁帶速度慢,并且不允許對數據的直接隨機存取。而是必須順序地附加并且讀取數據。雖然一次性寫入的(基準)數據有時被認為是很少讀取或者從不讀取,但是存在許多讀取性能出現問題的情況。此外,當數據的發(fā)現請求到達時,需要數據是易于訪問的,取決于應用以隨機或是順序方式進行訪問。
WORM光存儲器的另一替代方式是內容可尋址的存儲器(CAS)。CAS通過把數據存儲在由正在寫入的數據唯一確定的位置處來實現一次性寫入存儲器的效果。然而,這種系統(tǒng)需要新的存儲器接口,并且需要徹底改變應用程序和系統(tǒng)軟件來謹慎地跟蹤和管理寫入數據的位置。

發(fā)明內容
根據本發(fā)明,提供了一種用于確保存儲在可重寫存儲器上的數據不可改變的方法。所述方法包括把存儲器的選定的用戶可尋址塊初始化為可寫狀態(tài)。另外,所述方法包括接受將存儲在指定的用戶可尋址塊中的數據。所述方法還包括確定所指定的塊是否是可寫的。所述方法還包括把所接受的數據存儲至可重寫存儲器。此外,所述方法包括把指定塊的狀態(tài)設置為不可寫。在一個實施例中,與每個塊相關聯(lián)的可寫/不可寫狀態(tài)被編碼并且存儲在相應塊的內容中。在另一個實施例中,確定指定塊是否是可寫的、把所接受的數據存儲至可重寫存儲器并且把指定塊的狀態(tài)設置為不可寫的步驟被集成并且是不可分割的。


圖1是示出了在WMRM存儲器系統(tǒng)上提供WORM屬性的方法的流程圖。
圖2是示出了在WMRM存儲器系統(tǒng)上提供WORM屬性的方法的流程圖,其中狀態(tài)信息被編碼并且被存儲在數據中。
圖3是示出了把狀態(tài)測試和狀態(tài)更新機制與數據存儲操作集成以便只要成功地寫入數據就無法改寫它的方法的流程圖。
圖4A是示出了存儲位置以及將在該存儲位置存儲的已接收數據的先前內容的合成數學函數的采樣分解的圖。
圖4B是示出了存儲位置以及將在該存儲位置存儲的已接收數據的先前內容的合成數學函數的采樣實現方式的圖。
圖5A是示出了使用NAND門或者ALU運算的三輸入端多數門(majority gate)的圖。
圖5B是示出了使用AND/OR門或者ALU運算的三輸入端多數門(majority gate)的圖。
圖6是與三輸入端多數門相關聯(lián)的真值表。
圖7是舉例說明本發(fā)明的示例性實施例的圖。
具體實施例方式
將本發(fā)明主要作為用于使用WMRM存儲器來實現可靠的WORM存儲器的系統(tǒng)和方法來加以描述。在隨后的描述中,為了說明的目的,提出了很多具體細節(jié),以便提供對本發(fā)明的徹底的了解。然而,對于本領域中的普通技術人員來說顯然本發(fā)明可以在沒有這些具體細節(jié)的情況下來實施。
本領域技術人員將意識到的是,包括CPU、存儲器、I/O、程序存儲器、連接總線以及其它適當部件的諸如數據處理系統(tǒng)之類的設備可以被編程或者被設計成能夠易于本發(fā)明的實施。這種系統(tǒng)往往包括適當的程序裝置用于執(zhí)行本發(fā)明的操作。
諸如預先記錄的盤或者其它供數據處理系統(tǒng)使用的類似計算機程序產品的制造物可以包括存儲介質和記錄在其上的程序裝置,用于引導數據處理系統(tǒng)易于實施本發(fā)明的方法。這種設備和制造物也落入本發(fā)明的精神和范圍。
本發(fā)明提供了成本有效的WORM存儲器,其提供了高的存儲密度和良好的性能。本發(fā)明通過用于可靠地加強WMRM存儲器上的WORM屬性的系統(tǒng)和方法解決了這種需要,該系統(tǒng)和方法是快速的、密集的并且迅速改善的。
圖1是舉例說明用于在WMRM存儲器系統(tǒng)上提供WORM屬性的方法10的流程圖。在塊12,方法10開始。
在塊14,對存儲器系統(tǒng)的狀態(tài)進行初始化。所述初始化提供對存儲器系統(tǒng)狀態(tài)的初始化,以便使存儲器的每一塊是可寫的,或者使存儲器的某些指定塊是可寫的。
在塊16,接收要存儲在存儲器系統(tǒng)中的數據。
在塊18,對存儲器系統(tǒng)內的將要存儲數據的目標地址進行識別。
在塊20,就目標地址是否可寫進行判斷。如果不是,那么在塊22返回故障。如果是,那么在塊24,把所接收的數據寫入目標地址。
在塊26,向其寫入所接收數據的目標地址的狀態(tài)被更新為不可寫。
在塊28,返回用于確認成功寫入所接收數據的消息。
在塊30,方法10結束。
在一個實施例中,方法10還包括額外的步驟,借此將已更新的狀態(tài)和/或數據寫入讀回并且對其進行驗證以便確保已經成功地存儲了它們。如果檢測到偏差,那么系統(tǒng)重試相應的操作并且重新驗證是否已經成功執(zhí)行它們。預定次數的重試之后,所述系統(tǒng)返回寫入故障。
限制對狀態(tài)的直接訪問,以便一旦有一個塊處于不可寫狀態(tài),那么可以防止其狀態(tài)被變回到可寫。通常,狀態(tài)初始化只在工廠中被執(zhí)行一次。其后,可以用來更新所述狀態(tài)的唯一機制是在寫相應塊時將其改為不可寫。作為選擇,一個塊的狀態(tài)可以在某一持續(xù)時間內被鎖定。在一個實施例中,所述持續(xù)時間取決于所存儲數據的保留期。在下一段中,我們將描述用于可靠地保持存儲塊的狀態(tài)并且在執(zhí)行任何寫操作以前檢驗所述狀態(tài)的多種方法。應注意的是,在某些環(huán)境中,對仍未被寫入的塊的試圖讀取返回錯誤是合乎需要的。在這種環(huán)境中,就讀操作來檢查所請求的塊的狀態(tài),并且如果所述狀態(tài)是可寫的,則返回故障。在下文中,我們將集中描述寫操作。
外部不可重寫在一個實施例中,存儲塊的狀態(tài)被保存在被存儲數據之外。所述系統(tǒng)使用諸如列表、散列表或者位圖之類的數據結構來跟蹤哪些塊是可寫的(或者是不可寫的)。為了便于說明,使用了位圖,其中每一位對應于一個存儲塊,并且該位的值表明相應的存儲塊是否是可寫的。
所述位圖被存儲在存儲器系統(tǒng)中,通常存儲在非用戶可尋址部分中。為了減少狀態(tài)被破壞以及WORM屬性被阻止實現的可能性,所述系統(tǒng)保留所述位圖中各位的校驗和或者其它的數學函數,并且把它們安全地存儲在存儲器系統(tǒng)的非用戶可尋址部分中。對位圖以及校驗和的所有更新被寫入永久性存儲器。
當初始化時,位圖中的各位被設置為1,表明相應的塊是可寫的。為了檢驗存儲塊的狀態(tài),所述系統(tǒng)查看位圖中相應的位。此外,它還重新計算并且驗證相應的校驗和是有效的。在一個實施例中,只有當相應的位是1并且相應的校驗和是有效的時,所述塊才是可寫的。為了把存儲塊的狀態(tài)設置為不可寫,所述系統(tǒng)把相應的位設置為0并且更新相應的校驗和。
為了改善性能,所述位圖和校驗和是以分布式方式存儲在存儲器系統(tǒng)中的,以便使所述位與校驗和位于接近于它們的相應存儲塊的地方。例如,盤圓柱的最初少數扇區(qū)(塊)可用于存儲圓柱中其它扇區(qū)的位圖和相應的校驗和。如果所述盤支持稍微大于邏輯(用戶可尋址的)扇區(qū)大小(例如512字節(jié))的物理扇區(qū)大小(例如524字節(jié)),那么對應于每一邏輯扇區(qū)的位還可以被存儲在與邏輯扇區(qū)的數據內容相同的物理扇區(qū)中。
在此實施例中,通過獨立于數據的實際存儲器的機制加強了一次性寫入屬性。
集成狀態(tài)在另一個實施例中,存儲塊的狀態(tài)被編碼并且保存在正被存儲的數據中。因此,如果數據被成功地存儲,那么所述狀態(tài)用于確保數據不會被改寫。
圖2是舉例說明用于在WMRM存儲器系統(tǒng)上提供WORM屬性的方法40的流程圖,其中狀態(tài)信息被編碼并且存儲在數據中。在塊42,方法40開始。
在塊44,所述存儲器系統(tǒng)初始化存儲塊。所述初始化提供對存儲器系統(tǒng)狀態(tài)的初始化,以便存儲器的每一塊是可寫的,或者存儲器的某些指定塊是可寫的。
在塊46,所述存儲器系統(tǒng)接收將存儲在目標地址的數據。
在塊48,讀取目標地址的當前內容。
在塊50,對與目標地址當前內容相關聯(lián)的狀態(tài)信息進行解碼。
在塊52,就目標地址是否可寫做出確定。如果目標地址被確定為不可寫,那么在塊54,響應于寫入請求返回故障。如果目標地址被確定為可寫,那么在塊56,不可寫狀態(tài)信息被編碼在將存儲在目標地址的數據中。
在塊58,將包括所編碼的狀態(tài)信息的數據寫入目標地址。
在塊60,返回用于確認已經成功地寫入數據的消息。
在塊62,方法40結束。
在一個特定實施例中,所述初始化(參見塊40)是通過在將被初始化的存儲塊中存儲預定的位模式來執(zhí)行的,并且如果目標地址的當前內容包括預定的位模式,那么可以確定所述目標地址是可寫的。
此實施例的缺點在于預定的位模式無法以不可重寫的方式被存儲。解決方案在于檢測何時系統(tǒng)被要求存儲預定的位模式并且此后把數據改變?yōu)槠渌念A定位模式。例如,在法律文件中,空白頁不是被留下空白,而是被標記為“有意留下空白”。另一選項是僅僅讓預定的位模式是可重寫的。通過增大預定位模式的長度,它在數據流中被遇到的概率得以極大地降低。
例如,采用8字節(jié)預定位模式,那么在28×8=5.4×10-20中,預定位模式被遇到的概率只有1。
在另一個實施例中,所述初始化(參見塊40)是通過把預定位模式存儲在將被初始化的每一存儲塊內的預定位置來執(zhí)行的,并且如果目標地址的當前內容包括處于預定位置的預定位模式,那么可以確定所述目標地址是可寫的。
在又一個實施例中,由系統(tǒng)將存儲器的每一個用戶可尋址或者邏輯塊映射到存儲器的多個物理塊上,最好均位于獨立故障域中。例如,對應于邏輯塊的每個物理塊可以來自于獨立的盤或者盤陣列。所述系統(tǒng)使用相應物理塊的內容之間的關系來編碼邏輯塊的狀態(tài)。此外,所存儲的數據可以從任意一個相應物理塊中被檢索,由此極大地增加了系統(tǒng)的可靠性。在一個實施例中,存儲器的每一邏輯塊被映射到兩個物理塊上。
對所述系統(tǒng)進行初始化,以便使對應于一個邏輯塊的每對物理塊的內容滿足特定的數學關系式f。舉例來說,如果第一物理塊包含位模式x,那么第二物理塊往往包含x的邏輯非。當一個數據塊將被寫入邏輯塊時,所述系統(tǒng)讀取相應物理塊的當前內容。如果所述內容滿足預定的數學關系式f(例如,邏輯非),那么所述邏輯塊是可寫的。否則,所述邏輯塊是不可寫的。如果所述邏輯塊是可寫的,那么系統(tǒng)繼續(xù)將數據寫入兩個物理塊中。一般說來,數據的某些數學函數被寫入兩個物理塊的每個中,以便兩個物理塊中的數據都滿足不同于f的數學關系式。當邏輯塊將被讀取時,所述系統(tǒng)可以從相應物理塊的任一個中讀取。作為選擇,為了增加可靠性,從兩個物理塊讀取并且驗證兩個物理塊的內容滿足有效的關系式。
這種系統(tǒng)為存儲在系統(tǒng)中的任何數據無法被改寫提供了非常強大的保證,這是因為邏輯塊的可寫/不可寫狀態(tài)是通過存儲數據的實際動作來更新的。
集成狀態(tài)和測試圖3是舉例說明把狀態(tài)更新和狀態(tài)測試機制與數據存儲操作集成以便一旦成功地寫入數據就無法改寫它的方法70的流程圖。換言之,通過方法70,寫入數據的動作確保WORM屬性。在塊72,方法70開始。
在塊74,對存儲器系統(tǒng)的狀態(tài)進行初始化。所述初始化提供對存儲器系統(tǒng)狀態(tài)的初始化,以便存儲器的每一塊是可寫的,或者存儲器的某些指定塊是可寫的。
在塊76,所述存儲器系統(tǒng)接收將存儲的數據。
在塊78,讀取將要存儲所接收數據的目標地址的當前內容。
在塊80,對將存儲的數據和目標地址的當前內容(參見塊78)的數學函數進行計算。
在塊82,將所計算的數學函數寫入由目標地址標識的物理塊。
在塊84,方法70結束。
在一個實施例中,由系統(tǒng)將存儲器的每一個用戶可尋址或者邏輯塊映射到存儲器的多個物理塊上,最好均位于獨立故障域中。例如,對應于邏輯塊的每個物理塊可以來自于獨立的盤或者盤陣列。此外,所存儲的數據可以從任一相應物理塊中被檢索,由此極大地增加了系統(tǒng)的可靠性。
在一個特定實施例中,存儲器的每一邏輯塊被映射到兩個物理塊上。對所述系統(tǒng)進行初始化,以便使對應于一個邏輯塊的每對物理塊的內容滿足特定的數學關系式f。舉例來說,如果第一物理塊包含位模式x,那么第二物理塊往往包含x的邏輯非。
所述數學函數(參見塊80)可以是多級函數,例如包括先前內容的函數以及所接收的數據的進退函數(further function),如圖4A中舉例說明的那樣。所述數學函數可以依照軟件(使用ALU運算)或者硬件(使用邏輯門)來實現,如圖4B中的例子所示那樣。
在優(yōu)選的實施例中,所述數學函數是逐位多數邏輯決議(bit-wisemajority vote),它指的是所計算的值中的每一位只有當相應輸入位的大部分是1(0)時才會是1(0)。對所述系統(tǒng)進行初始化,以便使對應于一個邏輯塊的每組物理塊的內容的多數邏輯決議是0。當把每個邏輯塊映射到兩個物理塊時,這意味著系統(tǒng)被初始化,以便對應于一個邏輯塊的每對物理塊的內容滿足邏輯非。
所述多數邏輯決議很容易在軟件或硬件中實現,例如通過使用圖5A和圖5B中示出的門/ALU運算的組合,或者通過圖6中示出的用于實現真值表的查找表來實現。應注意的是,典型的實現方式往往對多個位(例如32位)并行執(zhí)行操作。
在一個實施例中,在把所計算的值寫入兩個物理塊(參見塊82)之后,所述系統(tǒng)讀回物理塊的內容以便驗證數據已經被成功地存儲。如果所述內容不同于將存儲的數據,那么系統(tǒng)返回寫入故障。否則,它確認已經成功地執(zhí)行了寫操作。
應注意的是,在此方法中,先前寫入的數據可以利用相同的值來重寫。即使重寫過程被中斷,所述系統(tǒng)也必須確保物理塊的內容是有效的。已知的方法是確保塊寫入操作是極其基本的(atomic)。
精細粒度WORM底層(underlying)存儲器允許重寫的事實意味著系統(tǒng)可以實際讀取早已寫入的塊,向其添加數據,然后再次寫入它。換言之,所述系統(tǒng)可以有效地實現以比底層存儲器的最小寫入單元更精細的粒度的一次性寫入屬性。此外,所述系統(tǒng)允許隨機塊被寫入。這些屬性使系統(tǒng)能存儲數據以及元數據,這通常要求數據被寫入連續(xù)的塊中,所述元數據用于依照比傳統(tǒng)光學WORM存儲器更加靈活的方式來描述數據。
為了支持這種精細粒度WORM,在外部不可重寫實施例中,所述系統(tǒng)以小于塊大小的粒度來保留可寫/不可寫位。例如,每8字節(jié)一位。在該情況下,只有其相應位表明它是可寫的,存儲器的給定8字節(jié)才能夠被寫入。在使用預定位模式來表明可寫性的實施例中,只有當其當前包含預定位模式時,存儲器的單元才能夠被寫入。所述WORM粒度在該情況下必須至少是所述位模式的大小。用于通過使用相應物理塊的內容之間的關系來保留存儲塊的可寫/不可寫狀態(tài)的實施例可以被擴展,而不會為實現處于任意精細粒度的一次性寫入屬性帶來額外成本。具體來講,對于存儲器的每一位而言,所述系統(tǒng)檢驗兩個副本中的相應位,以便查看它們是否服從于表明其可以被寫入的關系。在集成狀態(tài)和測試實施例中,所述系統(tǒng)僅僅對將被寫入的位執(zhí)行多數邏輯決議。
例如,假定所述系統(tǒng)接收如下寫入命令,寫入(目標塊地址A,數據D,偏移o,長度l)。它通過首先把對應于A的兩個物理塊的內容讀到D[1]和D[2]中,然后確定D[1]和D[2]中的相應字節(jié)之間的關系,以此來檢驗邏輯塊A的o(包含o在內)和o+l之間的字節(jié)的狀態(tài)。如果所有l(wèi)個字節(jié)都是可寫的,那么系統(tǒng)用D來替代D[1]和D[2]中的相應字節(jié),并且把D[1]和D[2]寫回到各個物理塊。否則,它返回故障。當接收到諸如讀取(目標塊地址A,數據D,偏移o,長度l)之類的讀取命令時,所述系統(tǒng)返回連續(xù)的不可寫字節(jié),以及這種字節(jié)的數目,所述字節(jié)起始于A+o并且在A+o+l以前結束。
這種擴展允許應用程序重復地并且逐漸地向存儲在WORM存儲器上的對象附加數據。這使應用程序能有效地以不可改變的方式來記錄事件,并且這是保留穩(wěn)固的核查蹤跡的關鍵,如某些規(guī)章所要求的那樣。如果應用程序在存儲器中保存最后的對象塊,那么每當其向所述對象附加數據時,它往往更便于簡單發(fā)布具有新長度的最后塊的寫操作。為了支持這種用途,如果在當前內容中的值與新值相同,那么當前系統(tǒng)往往進一步認為字節(jié)將是可寫的。
舉例來說,假定系統(tǒng)接收如下寫入命令,寫入(目標塊地址A,數據D,長度l)。它把對應于A的兩個物理塊的當前內容讀到D[1]和D[2]中。所述系統(tǒng)接下來計算D、D[1]和D[2]的前l(fā)個字節(jié)的數學函數(例如,逐位多數邏輯決議),并且把結果存回D[1]和D[2]的前l(fā)個字節(jié)中。接下來,所述系統(tǒng)把D[1]寫回到對應于A的第一物理塊,把D[2]寫回到第二物理塊。最后,所述系統(tǒng)讀回兩個物理塊的當前內容,并且驗證前l(fā)個字節(jié)和D相同。作為選擇,在系統(tǒng)執(zhí)行D[1]和D[2]的寫操作以前,它察看D[1]/D[2]的前l(fā)個字節(jié)是否和D的前l(fā)個字節(jié)相同。如果不是,所述系統(tǒng)返回故障。
應注意的是,精細粒度WORM提供了更新塊內隨機粒度的能力。簡單地把數據附加給一個塊是一個特例,其可以被優(yōu)化以便只需要少數狀態(tài)位。例如,當初始化系統(tǒng)時,可以把預定位模式寫入到每個塊的開始處。所述預定位模式標記可以附加數據的位置。當把數據寫入一個塊時,所述系統(tǒng)首先尋找預定位模式的位置。然后,它把新數據添加到該位置并且把所述位模式壓回。如果無法找到位模式,或者剩余空間對新數據而言不足,那么系統(tǒng)返回故障。
在描述精細粒度WORM的過程中,已經使用了讀/寫接口,用于明確指定數據的字節(jié)長度和/或偏移。顯而易見的是,這種信息可以被編碼為其它字段,尤其是在本發(fā)明將要使用現有塊接口實現對更是如此。例如,所述字節(jié)長度可以被編碼為塊的最后字。于是,全部塊請求必須被分解為兩個請求。作為選擇,可以如此來進行編碼,即只有當另一字段具有特定屬性時,最后的字才包含長度。舉例來說,如果塊地址的最高有效位沒有被使用,那么可以將其設置為1,以便表明長度位于所述塊的最后字中。如果現有接口具有塊計數,那么可以使用其最高有效位來表明長度位于所傳送數據的最后字中。如果塊計數非常大以至于它使用最高有效位,那么把請求分解為兩個。
可靠性如果存儲介質是可移動的,就像大部分光學WORM介質那樣,那么驅動器故障不會令數據丟失,這是因為所述介質可以被移除并且利用另一驅動器來讀取。然而,對于諸如硬盤之類的不可移動的存儲介質而言,盤故障意味著存儲在該盤上的數據丟失。防止因盤故障而造成數據丟失的普遍方法是使用RAID?;舅枷胧潜A羲鎯祿哪承┤哂嘈畔?,以便當盤發(fā)生故障時,可以通過使用其它盤上的數據和/或冗余信息來重構存儲在那些盤上的數據。
利用本發(fā)明,所述系統(tǒng)必須進一步確保保護塊的可寫/不可寫狀態(tài)以防止丟失。當把可寫/不可寫狀態(tài)作為數據存儲在底層存儲器中時,通過用于底層存儲器的標準RAID方案來保護它。當可寫/不可寫狀態(tài)取決于數據副本之間的數學關系式時,RAID方案可以被增強以便更好地保護所述狀態(tài)。
在一個實施例中,所述系統(tǒng)出自于這樣的工廠,該工廠被初始化以便使所有塊都是可寫的。系統(tǒng)被密封,以便沒有方法直接訪問底層WMRM存儲器或者直接對存儲塊的可寫/不可寫狀態(tài)進行操作。
在圖7中示出的示例性系統(tǒng)中,可以存在多個密封部件,其中每一密封部件包含一對盤,所述盤被初始化以便使得所述盤的其中一個包含另一盤的內容的邏輯非。所述密封部件按陣列形式布置,并且跨越所述部件將數據分條(stripe)。為了防止部件故障,計算糾錯碼并且將其存儲在所述陣列中的一個或多個附加部件上。為了便于說明,在此處的論述中,我們使用具有奇偶校驗(RAID-3)的位級條紋劃分。顯而易見的是,只要數據的所有條紋每次都被寫入,當依照其它方式跨越密封部件(例如,RAID4/5)來分送數據時,并且當使用其它糾錯碼(例如,里德-索羅蒙碼代碼,Reed-Solomon Code)時,就可以采用相同的思想。
在這種方案中,數據在每一密封部件內被鏡像,并且還通過RAID奇偶校驗來加以保護。當存在兩個盤都發(fā)生故障的兩個或更多密封部件時,數據往往才會丟失。所述可寫/不可寫狀態(tài)跨越陣列中所有部件被鏡像,并且往往在所有部件遭受至少一個盤發(fā)生故障時才會丟失。這種系統(tǒng)因此非常可靠,并且可以容許任何三個盤發(fā)生故障,并且容許最多n個盤發(fā)生故障,其中n是密封部件的數目。
失效部件的恢復過程操作如下。首先,對于每個將要被恢復的塊而言,從陣列中其它部件的每個中讀取相應塊。使用早先指定的接口,這往往意味著向每個其它部件發(fā)布命令讀取(目標塊地址A,數據D,長度l),其中A是將要被恢復的塊地址。其次,檢查從完全發(fā)揮功能的部件(沒有盤故障的部件)的每一個返回的長度l的一致性并且由l_來表示。第三,計算每個返回數據的相應前l(fā)_字節(jié)的XOR并且由D_表示。最后,通過命令寫入(目標塊地址A,計算的數據D_,長度l_)把所計算的數據寫入替代部件。
當一個部件中只有其中一個盤已經發(fā)生故障時,可以如下所述更加有效地執(zhí)行恢復過程。首先,從部分發(fā)生故障的部件中讀取將要被恢復的塊中的數據。其次,通過從完全發(fā)揮功能的部件讀取相應塊來確定所述塊的狀態(tài)。最后,把數據及其狀態(tài)寫入替代部件。使用上述接口,這往往涉及發(fā)布如下命令(1)到部分發(fā)生故障的部件的讀取(目標塊地址A,數據D_);(2)到完全發(fā)揮功能的部件的讀取(目標塊地址A,數據D,長度l_);以及(3)到替代部件的寫入(目標塊地址A,數據D_,長度l_。
應注意的是,當服務于讀取請求時,相應的奇偶校驗被讀取并且被重新計算以便驗證數據的完整性。在不需要驗證的環(huán)境下,奇偶校驗可以均勻地分布在陣列的所有部件當中,以便平衡每一部件上的工作量,如RAID-5中那樣。
雖然以上的討論集中于獨立地描述外部不可重寫性、集成狀態(tài)以及集成狀態(tài)和測試的各種實施例,但是應該理解的是,所述原理可依照組合形式加以應用以便實現更加穩(wěn)固的對數據改寫的保護措施。還應該理解的是,雖然以上的討論集中于硬盤,但是用于加強WMRM存儲器上的WORM屬性的相同原理可以在WMRM存儲器由其它存儲器設備/系統(tǒng)以及存儲器設備/系統(tǒng)的組合(例如陣列)組成時應用,所述其它存儲器設備/系統(tǒng)諸如是MRAM以及MEMS。
此外,雖然作為此處所示出并且詳細說明的用于使用WMRM存儲器實現可靠的WORM存儲器的特定系統(tǒng)和方法,完全能夠實現上述的發(fā)明目的,但是應該理解的是,它是本發(fā)明當前優(yōu)選的實施例,并且由此代表可通過本發(fā)明廣泛構想的主題,本發(fā)明的范圍完全包含本領域技術人員顯而易見的其它實施例,并且本發(fā)明的范圍因此僅由所附權利要求來限定,在權利要求中以單數限定的元件除非明確說明否則不意味著是“一個且僅有一個”的意思,而是指“一個或多個”。對于系統(tǒng)或方法而言,不需要解決本發(fā)明設法解決的每個問題,它將由當前的權利要求書來包含。此外,不管元件、部件或者方法步驟在權利要求書中是否明確講述,但是不打算使當前公開內容中的元件、部件或者方法步驟對公眾而言是專用的。此處缺少明確定義的情況下,權利要求項將會給出所有普通并且慣用的含義,這些是與本說明書和文件歷史不矛盾的。
權利要求
1.一種用于確保存儲在可重寫存儲器上的數據不可改變的方法,包括把存儲器的選定的用戶可尋址塊初始化為可寫狀態(tài);接受將存儲在指定的用戶可尋址塊中的數據;確定所指定的塊是否是可寫的;把所接受的數據存儲至可重寫存儲器;并且把指定塊的狀態(tài)設置為不可寫。
2.如權利要求1所述的方法,其中確定指定塊是否是可寫的步驟包括測試與指定塊相關聯(lián)的狀態(tài),并且如果指定塊中的至少一個是不可寫的,則返回錯誤。
3.如權利要求1所述的方法,其中與每一個用戶可尋址塊相關聯(lián)的狀態(tài)被編碼在那個塊的內容中,并且其中當在所述塊中存儲數據時,已編碼的狀態(tài)被自動地并且不可避免地改變?yōu)椴豢蓪憽?br> 4.如權利要求1所述的方法,其中把存儲器的選定的用戶可尋址塊初始化為可寫狀態(tài)的步驟包括在所選擇的塊中存儲預定位模式,并且其中確定指定塊是否可寫的步驟包括測試指定塊的內容是否包括預定位模式。
5.如權利要求1所述的方法,其中存儲器的每一個用戶可尋址塊被映射至可重寫存儲器的至少一個塊,并且把存儲器的選定的用戶可尋址塊初始化為可寫狀態(tài)的步驟包括把預定位模式存儲到可重寫存儲器的相應塊中,以便對于存儲器的每個選定的用戶可尋址塊而言,可重寫存儲器的相應塊的內容滿足預定的數學關系。
6.如權利要求5所述的方法,其中確定指定塊是否可寫的步驟包括測試可重寫存儲器的相應塊的內容是否滿足預定的數學關系。
7.如權利要求6所述的方法,其中所述數學關系是邏輯非。
8.如權利要求6所述的方法,其中確定指定塊是否可寫的步驟與在所述塊中存儲數據的實際操作被數學集成,以便如果塊的狀態(tài)是可寫的,那么數據只能被存儲在該塊中。
9.如權利要求8所述的方法,其中把所接受的數據存儲至可重寫存儲器的步驟包括讀取對應于指定塊的可重寫存儲器的塊的內容;執(zhí)行所讀取內容和所接受數據的數學函數;以及在對應于指定塊的可重寫存儲器的塊中存儲計算結果。
10.如權利要求9所述的方法,其中所述數學函數是多數邏輯決議。
11.如權利要求1所述的方法,其中按照小于所述塊的精細粒度保持所述狀態(tài),以便可以將數據附加到所述塊。
12.如權利要求1所述的方法,其中如果第一可重寫存儲器發(fā)生故障,那么在至少第二可重寫存儲器上對所述塊的內容和狀態(tài)進行復制或者使用數學代碼產生冗余。
13.如權利要求12所述的方法,其中所述數學代碼包括糾錯碼以及奇偶校驗。
14.如權利要求1所述的方法,還包括在狀態(tài)已經被更新為不可寫之后,確認已經成功地執(zhí)行了寫操作。
15.如權利要求1所述的方法,其中用戶可尋址塊的狀態(tài)被保存在存儲在用戶可尋址塊中的數據之外。
16.如權利要求15所述的方法,其中狀態(tài)的數學函數被生成并且保留在存儲器系統(tǒng)的非用戶可尋址部分中。
17.如權利要求16所述的方法,其中所述狀態(tài)以分布式方式存儲在可重寫存儲器中,其中狀態(tài)的分布規(guī)定所述狀態(tài)位于與相應存儲塊更加接近的地方。
18.一種計算機程序產品,包括計算機程序存儲設備;以及存儲設備上的計算機可讀指令,用于使計算機執(zhí)行用于確保存儲在可重寫存儲器上的數據不可改變的方法動作,所述方法動作包括把存儲器的選定的用戶可尋址塊初始化為可寫狀態(tài);接受將存儲在指定的用戶可尋址塊中的數據;確定所指定的塊是否是可寫的;把所接受的數據存儲至可重寫存儲器;并且把指定塊的狀態(tài)設置為不可寫。
19.如權利要求18所述的計算機程序產品,其中確定指定塊是否是可寫的方法動作包括測試與指定塊相關聯(lián)的狀態(tài),并且如果指定塊中的至少一個是不可寫的,則返回錯誤。
20.如權利要求18所述的計算機程序產品,其中與每一個用戶可尋址塊相關聯(lián)的狀態(tài)被編碼在那個塊的內容中,并且其中當在所述塊中存儲數據時,已編碼的狀態(tài)被自動地并且不可避免地改變?yōu)椴豢蓪憽?br> 21.如權利要求18所述的計算機程序產品,其中把存儲器的選定的用戶可尋址塊初始化為可寫狀態(tài)的方法動作包括在所選擇的塊中存儲預定位模式,并且其中確定指定塊是否可寫的方法動作包括測試指定塊的內容是否包括預定位模式。
22.如權利要求18所述的計算機程序產品,其中存儲器的每一個用戶可尋址塊被映射至可重寫存儲器的至少一個塊,并且把存儲器的選定的用戶可尋址塊初始化為可寫狀態(tài)的方法動作包括把預定位模式存儲到可重寫存儲器的相應塊中,以便對于存儲器的每個選定的用戶可尋址塊而言,可重寫存儲器的相應塊的內容滿足預定的數學關系。
23.如權利要求22所述的計算機程序產品,其中確定指定塊是否可寫的方法動作包括測試可重寫存儲器的相應塊的內容是否滿足預定的數學關系。
24.如權利要求23所述的計算機程序產品,其中所述數學關系是邏輯非。
25.如權利要求23所述的計算機程序產品,其中確定指定塊是否可寫的方法動作與在所述塊中存儲數據的實際操作被數學集成,以便如果塊的狀態(tài)是可寫的,那么數據只能被存儲在該塊中。
26.如權利要求25所述的計算機程序產品,其中把所接受的數據存儲至可重寫存儲器的方法動作包括讀取對應于指定塊的可重寫存儲器的塊的內容;執(zhí)行所讀取內容和所接受數據的數學函數;以及在對應于指定塊的可重寫存儲器的塊中存儲計算結果。
27.如權利要求26所述的計算機程序產品,其中所述數學函數是多數邏輯決議。
28.如權利要求18所述的計算機程序產品,其中按照小于所述塊的精細粒度保持所述狀態(tài),以便可以將數據附加到所述塊。
29.如權利要求18所述的計算機程序產品,其中如果第一可重寫存儲器發(fā)生故障,那么在至少第二可重寫存儲器上對所述塊的內容和狀態(tài)進行復制或者使用數學代碼產生冗余。
30.如權利要求29所述的計算機程序產品,其中所述數學代碼包括糾錯碼以及奇偶校驗。
31.如權利要求18所述的計算機程序產品,還包括在狀態(tài)已經被更新為不可寫之后,確認已經成功地執(zhí)行了寫操作。
32.如權利要求18所述的計算機程序產品,其中用戶可尋址塊的狀態(tài)被保存在存儲在用戶可尋址塊中的數據之外。
33.如權利要求32所述的計算機程序產品,其中狀態(tài)的數學函數被生成并且保留在存儲器系統(tǒng)的非用戶可尋址部分中。
34.如權利要求33所述的計算機程序產品,其中所述狀態(tài)以分布式方式存儲在可重寫存儲器中,其中狀態(tài)的分布規(guī)定所述狀態(tài)位于與相應存儲塊更加接近的位置。
35.一種用于在WMRM存儲器系統(tǒng)上采用可靠的WORM存儲器服務的方法,包括把計算機可讀代碼集成到系統(tǒng)中以便把存儲器的選定的用戶可尋址塊初始化為可寫狀態(tài);把計算機可讀代碼集成到系統(tǒng)中以便接受將存儲在指定用戶可尋址塊中的數據;把計算機可讀代碼集成到系統(tǒng)中以便確定指定塊是否是可寫的;把計算機可讀代碼集成到系統(tǒng)中以便把所接受的數據存儲至可重寫存儲器;并且把計算機可讀代碼集成到系統(tǒng)中以便把指定塊的狀態(tài)設置為不可寫,借此,所述服務確保存儲在WMRM存儲器上的數據是不可改變的。
全文摘要
本發(fā)明提供了一種用于確保存儲在可重寫存儲器上的數據不可改變的方法。所述方法包括把存儲器的選定的用戶可尋址塊初始化為可寫狀態(tài)。另外,所述方法包括接受將存儲在指定用戶可尋址塊中的數據。所述方法還包括確定所指定的塊是否是可寫的。所述方法還包括把所接受的數據存儲至可重寫存儲器。此外,所述方法包括把指定塊的狀態(tài)設置為不可寫。在一個實施例中,與每個塊相關聯(lián)的可寫/不可寫狀態(tài)被編碼并且存儲在相應塊的內容中。在另一個實施例中,確定指定塊是否是可寫的、把所接受的數據存儲至可重寫存儲器并且把指定塊的狀態(tài)設置為不可寫的步驟被集成并且是不可分割的。
文檔編號G11C17/00GK1783342SQ20051011608
公開日2006年6月7日 申請日期2005年10月28日 優(yōu)先權日2004年10月29日
發(fā)明者許為善, 翁紹基 申請人:國際商業(yè)機器公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
阿尔山市| 保山市| 伽师县| 元江| 台南县| 息烽县| 昭苏县| 建昌县| 隆子县| 修武县| 贵定县| 拉孜县| 莒南县| 乌拉特后旗| 延津县| 竹溪县| 孝昌县| 丹东市| 衡阳县| 辽中县| 和田县| 翼城县| 滨海县| 普安县| 隆尧县| 江华| 武山县| 内丘县| 昌图县| 惠来县| 渝北区| 招远市| 周口市| 始兴县| 嫩江县| 西安市| 惠来县| 剑川县| 平江县| 灵台县| 鹤山市|