安全冗余存儲設備和這種設備上安全讀寫的方法
【專利摘要】安全冗余存儲設備和這種設備上安全讀寫的方法。本發(fā)明涉及尤其適用于稱為“SSD”的電子磁盤的冗余存儲設備的領域。本發(fā)明提出一種基于多個冗余存儲物理磁盤的數(shù)據(jù)存儲系統(tǒng),在該系統(tǒng)中,用于被發(fā)送至冗余磁盤的讀寫命令在被發(fā)送到至少一個磁盤之前受到傳遞函數(shù)的支配,以便發(fā)送到至少兩個磁盤的有效命令是不同的。由接收經(jīng)受過傳遞函數(shù)的命令的磁盤所返回的值則服從于逆?zhèn)鬟f函數(shù)。這樣,在磁盤控制模塊中的設計錯誤將被探測到,因為磁盤控制模塊不會以相同的方式被請求。
【專利說明】安全冗余存儲設備和這種設備上安全讀寫的方法
【技術領域】
[0001]本發(fā)明涉及冗余存儲設備的領域,尤其適用于稱為“SSD”(英文“Solid StateDrive”,即固態(tài)硬盤)的電子磁盤的領域。本發(fā)明更具體地涉及一種安全冗余存儲設備和在冗余電子磁盤上安全讀寫的方法。
[0002]本發(fā)明一般性地涉及基于冗余電子磁盤的文件系統(tǒng)的執(zhí)行。冗余信息的使用是為信息處理系統(tǒng)帶來可靠性的一種常用手段。信息處理設備的復制允許在多個冗余設備上并行進行操作。則比較這些操作的結(jié)果。這樣,當所述冗余設備所提供的結(jié)果不同時,其中一個設備的故障或不良運行被探測到。
【背景技術】
[0003]將這一原理應用于基于電子磁盤的信息存儲系統(tǒng)導致實施由圖1中所示的系統(tǒng)類型的系統(tǒng)。該存儲設備100由一個文件系統(tǒng)101的管理模塊和兩個冗余物理存儲設備110和120、此處是電子磁盤構(gòu)成。這里所描述的示例包括兩個冗余電子磁盤,但本領域技術人員明白冗余電子磁盤的數(shù)目可以更多。這些冗余電子磁盤Iio和120通常是相同的。無論如何,這些磁盤至少共同具有負責磁盤控制的一個軟件部分。所述磁盤包括一個物理存儲器模塊112和122,其通常由閃存式存儲器構(gòu)成,但是也可以考慮任何其它類型的物理載體例如光學載體或磁性載體。這同樣可以涉及遠程存儲設備例如網(wǎng)盤,在這些遠程存儲設備中,所述物理載體位于遠處并且通過數(shù)據(jù)網(wǎng)絡接入。存儲器通過控制模塊或控制器111和121進行控制。控制模塊負責接收由所述文件系統(tǒng)101所發(fā)出的讀寫指令105和106,管理這些指令,通引起在物理存儲器模塊112和122上要求的讀取和寫入。這些控制模塊111和121通常是在磁盤110和120的裝載處理器上執(zhí)行的軟件模塊。與同等的用于磁盤中的控制模塊相比,在閃存式物理載體的情況下,磁盤控制軟件模塊尤為復雜。事實上,對存儲器模塊的管理要求對存儲器信息塊進行精細管理以便平衡這些信息塊的損耗、管理緩存并組織對可用信息塊的采集。文件系統(tǒng)101是負責向存儲和訪問磁盤上數(shù)據(jù)的期望應用提供數(shù)據(jù)文件邏輯視圖的軟件模塊。其接收以邏輯文件管理命令的形式列出的應用命令102。文件系統(tǒng)101負責將這些文件定位命令轉(zhuǎn)變?yōu)樵诓煌疟P110和120上讀寫的指令。該文件系統(tǒng)在冗余物理磁盤的情況下,通常集成有確切意義上的文件系統(tǒng)管理模塊103和冗余管理模塊104。所述存儲系統(tǒng)可以因此被看作可以與多個物理電子磁盤交互的一系列相繼的抽象體。第一抽象體由磁盤控制模塊111和121進行管理,所述磁盤控制模塊可以掩蓋所使用的物理存儲模塊112和122,以提供將磁盤呈現(xiàn)為統(tǒng)一邏輯存儲量的界面。該邏輯存儲量以冗余的方式被存儲在存儲設備的冗余磁盤集合上。第二層抽象體由冗余管理模塊104提供,允許將物理電子磁盤110和120的集合視為唯一允許數(shù)據(jù)讀寫的存儲量。該存儲量被文件系統(tǒng)管理模塊103用于向所述應用提供第三層抽象體,可以看到所述應用獨立于物理磁盤上的數(shù)據(jù)存儲管理來提供邏輯文件中的讀寫系統(tǒng)。
[0004]當這樣的存儲系統(tǒng)需要被用于極為重要的信息系統(tǒng)例如飛行器、潛水艇的裝載系統(tǒng)或甚至是核反應堆的管理和控制系統(tǒng)時,必須符合一些安全標準。這些系統(tǒng)即便不能夠避免任何不良運行,但當不良運行發(fā)生時,應當能夠探測到這些不良運行。電子磁盤的冗余旨在完成這一工作。不良運行的探測功能通常在冗余管理模塊104內(nèi)實施。通常,當文件系統(tǒng)103生成到給定地址讀取的指令時,冗余管理模塊104將復制這一命令到冗余電子磁盤110和120上。其則將比較冗余磁盤返回的讀值并比較這些冗余磁盤。這些讀值中出現(xiàn)差異則可以探測出所述兩個磁盤中至少有一個磁盤運行不良。同樣,當文件系統(tǒng)103生成一個將命令寫入地址的命令時,該命令被冗余管理模塊104以同樣的方式發(fā)送至不同的磁盤上。所述冗余管理模塊104隨后將在所述不同的磁盤上重讀該地址并比較結(jié)果。如果所述磁盤中的至少一個返回的數(shù)值不同于寫入值,則探測到不良運行。這樣一種系統(tǒng)可以探測到所述磁盤上的物理存儲模塊112或122的不良運行或是探測到負責所述磁盤管理模塊111和121執(zhí)行的處理器上發(fā)生的故障。
[0005]然而,這樣一種系統(tǒng)無法探測到由于磁盤控制模塊111和121的設計錯誤導致的不良運行。事實上,從本質(zhì)上說,這樣一種設計錯誤以相同的方式存在于兩個控制模塊111和121的內(nèi)部,這種設計錯誤會導致所述兩個磁盤一致的不良運行。因此,這樣一種不良運行無法通過對所述兩個磁盤所返回的總是相同的返回數(shù)值進行比較而被探測出來。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于通過提出一種基于多個冗余物理存儲設備的數(shù)據(jù)存儲系統(tǒng)來解決上述的缺陷,在該系統(tǒng)中,用于被發(fā)送至冗余磁盤的讀寫命令在被發(fā)送到所述磁盤中的至少一個磁盤之前經(jīng)受傳遞函數(shù)處理,以便發(fā)送到至少兩個磁盤的有效命令是不同的。接收經(jīng)受過傳遞函數(shù)處理的命令的磁盤所返回的值則受到逆?zhèn)鬟f函數(shù)的處理。這樣,所述磁盤控制模塊中的設計錯誤會被探測到,因為所述磁盤控制模塊不會以相同的方式被請求。
[0007]本發(fā)明涉及一種存儲設備,其包括:
[0008]-多個冗余物理存儲設備;
[0009]-生成給所述多個冗余物理存儲設備的數(shù)據(jù)讀寫命令的文件系統(tǒng)的管理模塊,所述數(shù)據(jù)應以冗余方式被寫入各個物理存儲設備上;
[0010]-通過比較從所述多個物理存儲設備讀取的數(shù)據(jù)的值進行錯誤探測的模塊;
[0011]所述設備還包括:
[0012]-可以將傳遞函數(shù)應用于給物理存儲設備子集的讀寫命令的模塊,所述傳遞函數(shù)用于修改所述讀寫命令。這樣,控制器內(nèi)部的設計錯誤可以被探測出來。
[0013]根據(jù)一個特殊的實施方式,所述傳遞函數(shù)修改與寫入命令相關的數(shù)據(jù),所述設備另外還包括一個模塊,該模塊可以將逆?zhèn)鬟f函數(shù)應用于從所述物理存儲設備子集上讀取的數(shù)據(jù)。
[0014]根據(jù)一個特殊的實施方式,可應用傳遞函數(shù)的模塊包括應用雙射函數(shù)的工具,所述雙射函數(shù)關于存儲設備數(shù)據(jù)空間、關于與寫入命令相關的數(shù)據(jù)定義,可應用逆?zhèn)鬟f函數(shù)的模塊具有將逆雙射函數(shù)應用于所讀數(shù)據(jù)的工具。
[0015]根據(jù)一個特殊的實施方式,所述可應用傳遞函數(shù)的模塊包括應用雙射函數(shù)的工具,該雙射函數(shù)關于存儲設備邏輯尋址空間、關于與命令關聯(lián)的邏輯地址所定義。
[0016]根據(jù)一個特殊的實施方式,所述可應用傳遞函數(shù)的模塊具有用于將附加命令添加到所述讀寫命令的工具。
[0017]根據(jù)一個特殊的實施方式,所述傳遞函數(shù)通過所述存儲裝置的邏輯尋址空間的結(jié)束地址同與命令關聯(lián)的地址的相減結(jié)果來替換所述與命令關聯(lián)的地址。
[0018]根據(jù)一個特殊的實施方式,所述傳遞函數(shù)只應用于偶地址或奇地址。
[0019]根據(jù)一個特殊的實施方式,所述傳遞函數(shù)具有用于將與寫入命令關聯(lián)的數(shù)據(jù)進行反碼(complementer ? un)的工具,所述逆?zhèn)鬟f函數(shù)同樣具有將所讀數(shù)據(jù)反碼的工具。
[0020]根據(jù)一個特殊的實施方式,所述傳遞函數(shù)具有用于在接收到的整個第一命令之前插入附加命令的工具。
[0021]根據(jù)一個特殊的實施方式,所述傳遞函數(shù)具有用于周期性地插入附加命令的工具。
[0022]根據(jù)一個特殊的實施方式,所述傳遞函數(shù)具有用于隨機地插入附加命令的工具。
[0023]本發(fā)明還涉及一種在具有多個冗余物理存儲設備的存儲設備上的讀寫方法,其特征在于該方法包括:
[0024]-接收由文件系統(tǒng)的管理模塊生成的初始讀寫命令的步驟;
[0025]-將傳遞函數(shù)應用 于所述初始讀寫命令的步驟,所述傳遞函數(shù)用于修改所述初始讀寫命令以便獲得至少一個修改后的讀寫命令;
[0026]-將所述初始讀寫命令發(fā)送至第一物理存儲設備子集的步驟;
[0027]-將所述修改后的讀寫命令發(fā)送至第二物理存儲設備子集的步驟;
[0028]-如果命令是寫入命令,則所述方法另外包括:
[0029]-生成關聯(lián)的讀取命令的步驟;
[0030]-將傳遞函數(shù)應用于生成的讀取命令的步驟;
[0031]-將讀取命令發(fā)送至第一物理存儲設備子集的步驟;
[0032]-將修改后的讀取命令發(fā)送至第二物理存儲設備子集的步驟;
[0033]-接收所讀數(shù)值的接收步驟;和
[0034]-比較所讀數(shù)值的比較步驟。
[0035]根據(jù)一個特殊的實施方式,所述傳遞函數(shù)修改與寫入命令關聯(lián)的數(shù)據(jù),所述方法另外還包括將逆?zhèn)鬟f函數(shù)應用于源自第二物理存儲設備子集的讀取數(shù)據(jù)的步驟。
[0036]本發(fā)明還涉及一種包括一些指令的計算機程序,所述程序在計算機上執(zhí)行時,這些指令適于實施根據(jù)本發(fā)明的方法的各個步驟。
[0037]本發(fā)明還涉及一種可移動或不可移動的信息存儲工具,其可以部分地或完全地被計算機或微處理器讀取,具有用于執(zhí)行根據(jù)本發(fā)明的方法的各個步驟的計算機程序代碼指令。
【專利附圖】
【附圖說明】
[0038]本發(fā)明的其它特點和優(yōu)勢將更明顯地體現(xiàn)在以下的說明中。
[0039]在以非限制性示例給出的如下附圖中:
[0040]-圖1示出根據(jù)本發(fā)明的一實施例的使用冗余電子磁盤的存儲系統(tǒng)的總體結(jié)構(gòu);
[0041]-圖2示出在電子磁盤中所用的閃存載體的典型硬件結(jié)構(gòu);
[0042]-圖3示出電子磁盤控制器的邏輯結(jié)構(gòu)的實施例;[0043]-圖4示出本發(fā)明的一實施例的邏輯結(jié)構(gòu);
[0044]-圖5示出空間分異性的一個實施例;
[0045]-圖6示出空間分異性的另一個實施例;
[0046]-圖7示出根據(jù)本發(fā)明的一個實施例的讀寫方法的流程圖;
[0047]-圖8是用于實施本發(fā)明的一個或多個實施方式的信息處理設備的示意性方框圖。
【具體實施方式】
[0048]圖2示出電子磁盤中所用的閃存載體的典型硬件結(jié)構(gòu)。物理載體上存儲的數(shù)據(jù)由基本存儲詞或存儲單元200構(gòu)成。這些單元200以頁面201進行組織,所述頁面含有一組單元200。所述頁面201是用于所述單元200的讀寫操作的基礎單位。為了讀取或?qū)懭胍粋€特定單元,因此需要讀取或?qū)懭牒心繕藛卧恼麄€頁面。所述頁面自身以信息塊202進行組織,所述信息塊包含有頁面201的一個集合。所述存儲載體自身則由這些信息塊202的一個集合構(gòu)成。所述信息塊是單元200擦除操作的基礎單位。事實上,只有在構(gòu)成頁面201的這些單元200已經(jīng)事先被擦除的條件下才有可能寫入單元200的頁面201。該擦除操作必然波及包括目標頁面201的信息塊集合202。對一個信息塊的擦除操作是與用于讀取或?qū)懭胍粋€頁面所需的時間相比耗時相對更長的操作。讀寫擦除周期的智能管理因此對于出于性能考慮而力圖限制信息塊擦除操作是有利的。
[0049]此外,耗損現(xiàn)象的對象是信息塊,該現(xiàn)象的特征在于有限的擦除次數(shù)。該現(xiàn)象的結(jié)果是必要嚴格地限定信息塊擦除操作是更有效的。此外,所述數(shù)據(jù)是永久可變的。某些數(shù)據(jù)永遠不會被更新,然而其它的數(shù)據(jù)則頻繁地被修改。頻繁被修改的數(shù)據(jù)會導致大量的重新寫入操作以及同樣多數(shù)量的包含其在內(nèi)的信息塊擦除操作。由于重新寫入而對信息塊上的數(shù)據(jù)的物理定位的智能管理可以分散信息塊的耗損。目的是避免:被過多請求的某些信息塊達到擦除數(shù)目界限并且應被禁用,而大部分信息塊則仍有很長的壽命。
[0050]這些限制意味著對讀寫擦除周期的特殊且相對復雜的管理。該管理通常由磁盤控制模塊111和121中的邏輯模塊來進行。傳統(tǒng)地,存儲在存儲器或磁盤中的數(shù)據(jù)與給定的物理位置相關聯(lián),物理位置一旦被分配后則不變。一個數(shù)據(jù)與磁盤上的一個物理存儲地址或一個扇區(qū)相關聯(lián)。當該數(shù)據(jù)應被修改時,新的數(shù)值被寫入同一個物理位置并且會擦除掉原數(shù)值。讀取訪問則總是在相同的物理位置上進行并且可以獲得最新的寫入值。
[0051]在電子磁盤的情況下,這樣一種物理分配數(shù)據(jù)的策略導致了信息塊的耗損老化,而信息塊耗損則是由于對包含被頻繁修改的數(shù)據(jù)的信息塊的擦除操作倍增造成的。因此,為了彌補這些缺陷,對于物理分配數(shù)據(jù)的智能管理取得了進展。該分配策略主要包括三個關鍵機制。第一機制是以所謂“閃存轉(zhuǎn)換層”的算法即FTL(英文全稱為“Flash TranslationLayer algorithm”)的形式來實現(xiàn)的。根據(jù)該算法,所述信息塊被分配成兩個信息塊集合,所述信息塊一方面按塊組織(英文為“block mapped”,8卩“塊映射”),另一方面按頁面組織(英文為“page mapped”,S卩“頁面映射”)。這兩個信息塊集合由尋址方式區(qū)分開,所述尋址方式允許數(shù)據(jù)讀寫訪問。提醒的是,讀寫操作的基礎單位是頁面。數(shù)據(jù)因此在應用層面上通過所謂LPN(英文為“Logical Page Number”)的“邏輯頁號”的方式與頁面相關聯(lián)。所述閃存轉(zhuǎn)換層FTL因此需將該邏輯頁面地址轉(zhuǎn)換成存儲器元件的物理頁面地址。[0052]如果所述數(shù)據(jù)被歸入按塊組織的一個信息塊,所述轉(zhuǎn)換則根據(jù)下述方法進行。所述邏輯頁號被解析為構(gòu)成邏輯塊號即LBN(英文為“Logical Bloc Number”)的第一字段和頁內(nèi)偏移(英文為“offset”)。關聯(lián)表允許從在該關聯(lián)表中用作索引的邏輯塊號找到物理塊號PBN(英文為“Physical Bloc Number”)。偏移值給出了物理塊內(nèi)的頁面的物理地址。
[0053]如果所述數(shù)據(jù)被歸入按頁面組織的一個信息塊,所述轉(zhuǎn)換則根據(jù)下述方法進行。所述邏輯頁號直接用作頁面關聯(lián)表中的索引,其可以得到物理頁號PPN,英文為“PhysicalPage Number”。該物理頁號直接是按頁面組織的一個信息塊中的物理頁號。
[0054]這種將物理存儲信息塊以按塊或頁面組織的兩個信息塊集合進行組織的系統(tǒng)通過下述方式來運用。當一個數(shù)據(jù)第一次被寫入時,其被給予了以塊組織的一個信息塊中的物理位置。以塊組織的信息塊因此對應于第一數(shù)據(jù)存儲配置。以頁面組織的信息塊構(gòu)成以日志(英文為“l(fā)og”)組織的頁面的存儲空間。該日志構(gòu)成將被相繼分配的接連頁面空間。當需要修改一個數(shù)據(jù)時,為避免對分配給該數(shù)據(jù)的頁面進行修改一一修改頁面需要對信息塊進行擦除,一個默認為第一空閑頁的新頁面在所述日志中被分配給該數(shù)據(jù)。對該修改后的數(shù)據(jù)的寫入因此在空閑頁內(nèi)進行,從而不需要進行預先擦除操作。包含有所述數(shù)據(jù)的原數(shù)值的頁面則被標示為作廢,但并不被立即擦除以便不生成擦除操作。這樣,關聯(lián)頁面相應地被更新。
[0055]至少只要在所述日志中保留有空閑頁面,該方法就無需擦除操作就可以修改存儲器中存儲的數(shù)值。絕不會被修改的靜態(tài)數(shù)據(jù)仍然保持被分配在按塊組織的信息塊中,訪問后者對存儲器的影響較小。事實上,僅包含每個信息塊一個條目的信息塊關聯(lián)表比包含每個頁面一個條目的頁面關聯(lián)表更小。被修改的動態(tài)數(shù)據(jù)被存儲在所述日志中,這些數(shù)據(jù)隨著修改填充該日志。
[0056]這種機制由于避免了對于信息塊的擦除操作,因而在存取時間方面尤其有效。相反,數(shù)據(jù)的每次修改使得至少一個存儲頁面作廢。在所述系統(tǒng)使用一定時間后,有可能缺少空閑信息塊而已使用的信息塊則被作廢頁面布滿。為了解決這一問題及允許重新構(gòu)建空閑信息塊集合,設置了一個垃圾收集機構(gòu)(英文為“garbage collector”)。該機構(gòu)負責篩選出其所有頁面都被標記為作廢的一些信息塊,然后擦除所述信息塊以便使該信息塊在空閑信息塊集合中重新可用。有利地,垃圾收集器包括信息塊合并機構(gòu)。該機構(gòu)可以篩選出包含有大量作廢頁面的一組信息塊。這些信息塊總體應包含有一定數(shù)目的可用頁面即非作廢頁面,該數(shù)目小于或等于一個信息塊的大小。這些可用頁面則可以被寫在一個空閑信息塊內(nèi)。所有所篩選出的信息塊則可以被擦除以便使它們在空閑信息塊集合中可用。由此,該垃圾收集器可以將散布在一個信息塊集合內(nèi)的可用頁面收集于同一個信息塊內(nèi)并使這些信息塊重新可用。
[0057]此外,一種耗損均衡機制(英文“wear leveling algorithm”)可以避免某些信息塊由于受到大量擦除操作的影響而過早老化。該機制為所有信息塊配備允許了解它們所受擦除操作的次數(shù)的計數(shù)器。這樣,當系統(tǒng)請求一個新的空閑信息塊以將其歸入以塊組織的信息塊集合中或以頁面組織的信息塊集合中時,計算器值最小的空閑信息塊則被指定。這樣,耗損最少的信息塊總是被優(yōu)先使用。這樣,已耗損并且因此無法使用的信息塊的出現(xiàn)被推遲。
[0058]圖3示出實現(xiàn)這些不同機制的電子磁盤的控制器300的邏輯結(jié)構(gòu)的示例。讀寫命令在被閃存轉(zhuǎn)換層302解讀之前被接收并存儲在緩存301內(nèi)。閃存轉(zhuǎn)換層控制被分配的存儲信息塊的兩個集合,即以塊組織的第一信息塊集合303和形成日志的以頁面組織的第二信息塊集合304。所述閃存轉(zhuǎn)換層因此第一次在以塊組織的信息塊集合303中寫入數(shù)據(jù)。會修改數(shù)據(jù)的后續(xù)寫入在日志304中進行。如有需要,閃存轉(zhuǎn)換層302請求一個由空閑信息塊集合306提供的空閑信息塊。所述空閑信息塊由耗損均衡機制307分配,該機制確保所分配的信息塊總是空閑信息塊集合306中具有最少耗損計數(shù)器的信息塊。該信息塊則根據(jù)需求或被分配至按塊組織的信息塊集合303或被分配至日志304。垃圾收集器305如有需要應用上文所描述的信息塊合并機制,負責回收這兩個集合中的信息塊。這樣被回收的信息塊被擦除,以便重新加入空閑信息塊集合306中。其耗損計數(shù)器的計數(shù)于是增加一個單位次數(shù)。
[0059]這樣一種電子磁盤控制器因而復雜,意味著大尺寸軟件。當在需要高級別安全性的環(huán)境中例如在飛行器、核反應堆或其它環(huán)境中使用這樣一種磁盤的問題提出時,所應用的軟件應當遵照某些安全標準,例如航空工業(yè)所用的安全標準,比如文獻D0-178B中提出的安全標準。因此,在飛行器中使用電子磁盤需要對磁盤控制器完整重寫入,以遵守該文獻中的倡議。能夠使用直接在飛行器中的帶有其原始控制器的商用電子磁盤是有利的。然而,這種使用意味著所述控制器可包含有可能不會被探測到的設計錯誤,即使是使用了如參照圖1所描述的冗余系統(tǒng)。
[0060]特別是,所述控制器中的設計錯誤可以在冗余系統(tǒng)中導致后續(xù)的錯誤。在第一種類型的錯誤中,所述數(shù)據(jù)不正確地被寫入所述磁盤。在第二種類型的錯誤中,所述數(shù)據(jù)被正確寫入但地址錯誤。在第三種類型的錯誤中,所述數(shù)據(jù)根本沒有被寫入磁盤。在這三種情況下,所述命令返回回執(zhí),用以通知寫入操作成功。所述錯誤同樣在第二個磁盤中再現(xiàn),通過隨后的讀取和對兩個磁盤上所讀到的數(shù)據(jù)的比較并無法探測出該錯誤。
[0061 ] 本發(fā)明基于在冗余電子磁盤控制器的運行中弓丨入分異性。通過激發(fā)兩個控制器的不同運行,可以避免這些控制器的軟件中的設計錯誤以相似方式產(chǎn)生于所述兩個磁盤中而引發(fā)相同的錯誤。這樣,在控制器代碼中可能出現(xiàn)的設計錯誤,將在不同的時間、在不同的數(shù)據(jù)上產(chǎn)生,因此可以被命令監(jiān)控機制探測出來。提醒的是,該監(jiān)控機制在于會重新讀取寫入的數(shù)據(jù)并對比幾次讀取的結(jié)果以便確認它們的一致性。根據(jù)本發(fā)明的一種優(yōu)選的實施方式,這種分異性以在圖1的文件系統(tǒng)101處、通常是在冗余管理模塊104內(nèi)部實現(xiàn)的傳遞函數(shù)的形式引入。該傳遞函數(shù)會修改用于一個冗余電子磁盤子集的讀寫命令。正是這些修改后的命令于是被發(fā)送,以便在冗余磁盤子集中代替初始的命令被執(zhí)行。在不受傳遞函數(shù)支配的冗余磁盤子集上,這些初始命令被直接執(zhí)行。這樣,被磁盤控制器最終執(zhí)行的讀寫命令是不同的。讀取時,逆?zhèn)鬟f函數(shù)被運用于所讀數(shù)據(jù)上,以便確保冗余磁盤集合上所讀數(shù)據(jù)的一致性。這些數(shù)據(jù)因此可以被比較以便探測可能存在的錯誤。這些相同的數(shù)據(jù)因此被存儲在冗余磁盤集合中,但是在受傳遞函數(shù)支配的磁盤與不受傳遞函數(shù)支配的磁盤之間,存儲進程、因而磁盤控制器所執(zhí)行的軟件路徑是不同的。通過建立引發(fā)磁盤控制器內(nèi)部執(zhí)行不同軟件路徑的這種分異性,使得控制器的設計錯誤導致這些磁盤中出現(xiàn)相似錯誤從而該錯誤會避開錯誤探測機構(gòu)的概率接近于零。該冗余磁盤系統(tǒng)滿足了所需的安全要求,因此可以被用于關鍵系統(tǒng)中。
[0062]圖4示出本發(fā)明的一實施例的邏輯架構(gòu)。讀寫命令411通過所述系統(tǒng)被發(fā)送至磁盤。該命令411被圖1中的冗余管理模塊104以相同的方式接收。該命令411因此被發(fā)送至不受傳遞函數(shù)支配的第一磁盤。同一命令411還被發(fā)送給用于受到傳遞函數(shù)422支配的磁盤的傳遞函數(shù)422。該函數(shù)422修改命令411,生成至少一個命令423,命令423是所述傳遞函數(shù)應用于命令411的結(jié)果。在步驟414時,不受所述傳遞函數(shù)支配的所述磁盤執(zhí)行初始命令411。在步驟424中,受傳遞函數(shù)支配的所述磁盤執(zhí)行修改后的命令423。因此,這些執(zhí)行修改了這兩個磁盤的內(nèi)部狀態(tài)并導致所述初始命令的執(zhí)行。然而,所述兩個磁盤對初始命令的執(zhí)行是不同的。隨后,錯誤探測機構(gòu)開始運行,通常導致對所述兩個磁盤進行讀取,以便驗證服從于初始命令411的數(shù)據(jù)的一致性。更確切地,如果初始命令411是讀取命令,該讀取直接用于探測錯誤。如果命令411是寫入命令,則生成相應的讀取命令以便引起讀取剛被寫入的數(shù)據(jù)。對該讀取命令同樣應用所述傳遞函數(shù),而該傳遞函數(shù)用于受該函數(shù)支配的磁盤。
[0063]在不受所述傳遞函數(shù)支配的磁盤上,所讀數(shù)值417直接用于驗證。在受傳遞函數(shù)支配的所述磁盤上,對所讀數(shù)值425應用逆?zhèn)鬟f函數(shù)426以便生成一個最終的所讀數(shù)值427。這些所讀數(shù)值通過步驟418進行比較。當這些值不同時,則探測到錯誤。
[0064]讀寫命令的特征一方面在于一個邏輯地址應被讀取或?qū)懭?,并且在寫入的情況下,通過一個待寫入的數(shù)據(jù)進行寫入。所述傳遞函數(shù)因此負責修改該地址加數(shù)據(jù)對以便生成修改后的命令。
[0065]根據(jù)第一實施方式,所述傳遞函數(shù)旨在形成一種空間分異性。修改后的命令會引起讀取或?qū)懭肱c所述初始命令中預設地址不同的地址。例如,如果邏輯存儲空間延伸于起始地址和結(jié)束地址之間,則該空間邏輯上自起始地址開始被填充。所述傳遞函數(shù)可以通過所述結(jié)束地址減去包含在命令中的地址來替換該包含在命令中的地址。這樣,在執(zhí)行所述傳遞函數(shù)的磁盤中,所述存儲空間將從結(jié)束地址起朝向起始地址進行填充。該實施方式示于圖5。不執(zhí)行所述傳遞函數(shù)的第一磁盤501的邏輯存儲空間通過一種自起始地址“O起始”起直至結(jié)束地址結(jié)束”的漸進填充方式進行組織。執(zhí)行所述傳遞函數(shù)的第二磁盤502的邏輯存儲空間通過一種自結(jié)束地址結(jié)束”起直至起始地址起始”的漸進填充方式進行組織。在不受傳遞函數(shù)支配的磁盤上,與地址相關的命令命令”直接在該地址上執(zhí)行。受傳遞函數(shù)支配的磁盤的邏輯空間填充方向的這種逆序是通過利用所述傳遞函數(shù)用地址“O結(jié)束-O命令”替換與所述命令“O命令”相關的地址來得到的。因此,在這種情況下,通過所述傳遞函數(shù)進行修改的命令正是其地址已這樣被修改后的初始命令。因此,相同的數(shù)據(jù)被以相同的方式寫入所述兩個磁盤,但寫入不同的邏輯地址。所述讀取命令受到同樣的修改,因此得以在磁盤集合上以一致的方式讀取到正確的數(shù)據(jù)。產(chǎn)生空間分異性的另一種傳遞函數(shù)可以在于向原始地址增加一個偏移。另一種可能性是僅對偶地址進行修改,或是相反地僅對奇地址進行修改。本領域技術人員可以理解,所述傳遞函數(shù)可以是關于磁盤邏輯尋址空間所定義的任何雙射數(shù)學函數(shù)。這樣一種函數(shù)必然產(chǎn)生一種空間分異性。
[0066]圖6示出空間分異性的另一個實施例。在該實施例中,數(shù)據(jù)以一個分段邏輯數(shù)據(jù)集合600的形式進行組織。該集合包括數(shù)據(jù)段集合601、602至606。傳遞函數(shù)實現(xiàn)數(shù)據(jù)段的排列。在該實施例中,修改后的數(shù)據(jù)集合610由以不同的順序安排的相同數(shù)據(jù)段611至616構(gòu)成。在圖6的實施例中采用了一種數(shù)據(jù)段二對二的排列。任何其它排列都可以考慮。與前述的空間分異性的實施例相同地,該結(jié)果是通過應用在命令地址之間實現(xiàn)雙射關系的傳遞函數(shù)來獲得的。對應原始信息塊601的地址被修改以便與修改后的信息塊612相符,信息塊602的地址則被修改以便與修改后的信息塊611相符,對于所有信息塊以此類推進行。
[0067]在空間分異的情況下,分配讀取數(shù)據(jù)的逆?zhèn)鬟f函數(shù)是恒等式。只有包括錯誤探測機構(gòu)所使用的讀取命令在內(nèi)的讀寫命令被修改。在該實施方式中,與所使用地址相關的設計錯誤不會以同種方式產(chǎn)生在所有磁盤上并且會被探測出來。同樣需注意的是,這種不同的數(shù)據(jù)分配導致不同信息塊的分配,由此導致耗損均衡和垃圾收集機構(gòu)的不同的執(zhí)行方式。
[0068]根據(jù)第二種實施方式,所述傳遞函數(shù)實施一種模式(motif)分異性。在這種情況下,所述傳遞函數(shù)修改與命令關聯(lián)的數(shù)據(jù)。所述函數(shù)在于將一種雙射函數(shù)應用于該數(shù)據(jù)。這種雙射函數(shù)關于存儲設備的數(shù)據(jù)空間被定義,通常所述空間由所有可能的數(shù)據(jù)字構(gòu)成。所述函數(shù)因此只涉及寫入命令,這些寫入命令是與某一個數(shù)據(jù)相關聯(lián)的僅有命令。所述讀取命令未被修改。產(chǎn)生模式分異性的傳遞函數(shù)的一個實施例在于對應被寫入的數(shù)據(jù)進行反碼。也就是說,代表所述數(shù)據(jù)的比特被逐一求反。在這種情況下,逆?zhèn)鬟f函數(shù)在于將逆雙射函數(shù)應用于讀到的數(shù)據(jù)以便重新找回初始數(shù)據(jù)。在反碼的情況下,逆函數(shù)同樣是反碼。在該實施方式中,數(shù)據(jù)因此在受所述傳遞函數(shù)支配的磁盤上的存儲地址與不受該函數(shù)支配的磁盤上地址相同,但數(shù)據(jù)值被修改。這樣,與寫入數(shù)據(jù)值相關的設計錯誤不會以同種方式產(chǎn)生在所有磁盤上并且將被探測出來。
[0069]根據(jù)第三種實施方式,傳遞函數(shù)形成一種時間分異性。在這種情況下,所述傳遞函數(shù)通過向初始命令增加至少一個稱為“幽靈命令”的其它的命令來修改所述初始命令。附加的幽靈命令的插入旨在修改由受所述傳遞函數(shù)支配的磁盤所執(zhí)行的命令的時間序列。由于在文件系統(tǒng)所請求的原始寫入中插入附加寫入,其因而會導致對數(shù)據(jù)的物理地理分布的修改。因此,其還導致了對耗損均衡和垃圾收集機構(gòu)運行的修改。有利地,各個命令時的插入不是系統(tǒng)性的,以避免在受傳遞函數(shù)支配的磁盤上分配的物理空間和計算時間上帶來過多的超載。所述插入可以是隨機的或甚至周期性的。根據(jù)一種特殊的實施方式,這種插入允許在接收到的整個寫入命令之前插入附加命令。這樣,命令序列自第一有效命令起就被修改。所述有效命令是由與附加命令相對定義的原始命令。其可以包括在邏輯存儲空間的空閑空間中隨機數(shù)據(jù)寫入命令的插入。其同樣可包括讀取命令的插入。這些讀取命令,即便它們不修改物理磁盤上已記入的數(shù)據(jù),但仍可以修改緩存中的內(nèi)容并由此在磁盤管理器所使用的軟件路徑中引入分異性。同樣需注意到,由于幽靈命令的插入,在以被執(zhí)行命令的數(shù)目表示的一個周期的基礎上會周期性啟動的垃圾收集器將不會在相同的時間被啟動。因此,所述垃圾收集器的特性在所有磁盤上并不相似。逆?zhèn)鬟f函數(shù)在該實施方式中是恒等式,因為所述邏輯地址和相關數(shù)據(jù)在有效命令中未被修改。
[0070]當磁盤意外衰耗時,通常使用一個電容器確保在短時間內(nèi)提供磁盤電能。該時間被利用來排空緩存??赡軙l(fā)生這樣的情況:該段時間不夠長,某些位于緩存的信息塊沒有時間被保存到載體上,由此甚至遭到破壞。所述時間分異性通過引起以延遲方式將數(shù)據(jù)發(fā)送到受所述傳遞函數(shù)支配的磁盤上,導致可能被破壞的信息塊序列中的分異性。這些錯誤因此可以被探測到。
[0071]圖7示出根據(jù)本發(fā)明的一個實施例的讀寫方法的流程圖。該方法通常在圖1的冗余管理模塊104內(nèi)部實施。在第一步驟700時,該模塊從文件系統(tǒng)接收用于物理存儲設備的初始讀寫命令。在步驟701中,應用旨在修改初始命令的傳遞函數(shù)。于是通過該傳遞函數(shù)的應用得到至少一個修改后的讀寫命令。在步驟703中,所述初始命令被發(fā)送至第一物理存儲設備子集。同時,在步驟704中,所述修改后的命令被發(fā)送至第二物理存儲設備子集。如果初始命令是寫入命令,且僅僅在這種情況下,步驟705生成相關聯(lián)的讀取命令。即存儲在包含于寫入命令中的邏輯地址的所述數(shù)據(jù)的讀取命令。目的是重新讀取剛被寫入的數(shù)據(jù)以便驗證所述寫入是否順利進行。在步驟706中,生成的讀取命令同樣經(jīng)受相同的傳遞函數(shù)處理,以便生成一個或多個修改后的讀取命令。仍只在所述初始命令為寫入命令的情況下,所述生成的讀取命令則在步驟707中被發(fā)送至所述第一物理存儲設備子集。而所述修改后的讀取命令在步驟708中被發(fā)送至所述第二物理存儲設備子集。在步驟709中,所讀數(shù)值被接收。由所述第二物理存儲設備子集發(fā)送的所讀數(shù)值在步驟710中經(jīng)受逆?zhèn)鬟f函數(shù)的運用。只有在所述數(shù)據(jù)被所述傳遞函數(shù)修改過的情況下,即在模式分異性的情況下,才需要該步驟。在步驟711中,所接收的所讀數(shù)值和修改后的所讀數(shù)值被進行比較,以便探測其中一個磁盤上可能存在的不良運行。該方法同樣可以探測到所述物理存儲設備的控制軟件內(nèi)部的設計錯誤,這些錯誤不會在兩個子集的物理存儲設備中以相同的方式產(chǎn)生。
[0072]本發(fā)明的這三種實施方式可以根據(jù)所尋求的分異性進行兩兩結(jié)合。根據(jù)一種優(yōu)選的實施方式,這三種分異方式被結(jié)合在一起。這樣,受所述傳遞函數(shù)支配的磁盤和不受該傳遞函數(shù)支配的磁盤之間的分異性程度同樣增加。而所述磁盤控制器中的設計錯誤未被探測出來的概率則得以被最小化。
[0073]根據(jù)另一個實施方式,冗余磁盤集合可以被劃分為多于兩個的子集。其中僅有一個子集不受到傳遞函數(shù)的支配。其它的磁盤子集則受到傳遞函數(shù)的支配。該傳遞函數(shù)對于各個子集是特定的。錯誤探測機構(gòu)則比較各個子集所提供的結(jié)果以便驗證其一致性。
[0074]根據(jù)本發(fā)明的冗余同樣可以與旨在保障容錯能力的冗余機制、例如公知的名為RAID(英文全稱“Redundant Array of Independent Disks”即獨立冗余磁盤陣列)的機制相結(jié)合。該RAID類型的冗余則通常同樣由圖1的冗余管理模塊104管理。
[0075]盡管在電子磁盤的情況下由于在這些磁盤中集成的控制器復雜而實施本發(fā)明是尤其有利的,但本發(fā)明同樣有利地可以在任何類型的物理存儲設備例如傳統(tǒng)磁盤、光盤、遠程盤或其它的基礎上實施。
[0076]圖8是用于實施本發(fā)明的一種或多種實施方式的信息處理裝置800的示意性方框圖。信息處理裝置800可以是外圍設備例如微型計算機、臺式機(poste de travail)或移動通信終端。所述裝置800具有通信總線,通信總線連接至:
[0077]-中央處理單位801,例如微處理器,標示為“CPU”;
[0078]-標示為“RAM”的隨機存取存儲器802,用于存儲本發(fā)明的實施方法的可執(zhí)行代碼以及適于記錄用于實施根據(jù)本發(fā)明的實施方式的方法所必要的變量及參數(shù)的寄存器;設備的存儲容量可以通過例如連接至擴展端口的可選RAM存儲器來補充;
[0079]-標示為“ROM”的只讀存儲器803,用于存儲實施本發(fā)明的實施方式的計算機程序;
[0080]-網(wǎng)絡界面“NET”804,其通常連接至通信網(wǎng)絡,在該通信網(wǎng)絡上待處理的數(shù)字數(shù)據(jù)被傳輸或接收。網(wǎng)絡界面804可以是唯一的網(wǎng)絡界面或是由不同的網(wǎng)絡界面的集合(例如有線和無線界面,不同類型的有線或無線界面)構(gòu)成。一些數(shù)據(jù)包被發(fā)送至網(wǎng)絡界面上以便傳輸,或是從所述網(wǎng)絡界面被讀取以便在處理器801中執(zhí)行的軟件應用的控制下進行接收;
[0081]-用戶界面“IHM”850,用于接收用戶的輸入或用于向用戶顯示信息;
[0082]-存儲設備806,例如本發(fā)明所描述的,標示為“HD”;
[0083]-輸入/輸出模塊“10”807,用于從/朝向例如硬盤、可移動存儲載體或其它等的外圍設備接收/發(fā)送數(shù)據(jù)。
[0084]可執(zhí)行代碼可以被存儲在只讀存儲器803中、存儲設備806上或可移動的數(shù)字載體例如磁盤上。根據(jù)一個變型,所述程序的可執(zhí)行代碼可以通過通信網(wǎng)絡經(jīng)網(wǎng)絡界面804被接收,以便其在被執(zhí)行之前被存儲在通信裝置800的其中一個存儲工具例如存儲設備806 中。
[0085]中央處理單元801適于操控和引導根據(jù)本發(fā)明的其中一種實施方式的程序軟件代碼部分或指令的執(zhí)行,所述指令存儲在前述存儲工具之一中。通電后,CPU801能執(zhí)行與軟件應用相關的主存儲器RAM802的指令。這樣一種軟件在被處理器801執(zhí)行時,引起所述方法的步驟被執(zhí)行。
[0086]在該實施方式中,設備是一種使用軟件來實施本發(fā)明的可編程設備。然而,作為補充,本發(fā)明可以在硬件(例如呈專用集成電路即“ASIC”的形式)中實施。
[0087]當然,為了滿足特定的需求,在本發(fā)明領域中的技術人員可以對前文的描述進行修改。
[0088]盡管本發(fā)明在上文參照一些特殊實施方式進行了描述,但本發(fā)明并不限于這些特殊實施方式,在本發(fā)明的應用領域中存在的改型對于本領域技術人員而言是顯而易見的。
【權利要求】
1.存儲設備,所述存儲設備包括: -多個冗余物理存儲設備; -文件系統(tǒng)的管理模塊,其生成給所述多個冗余物理存儲設備的數(shù)據(jù)讀寫命令,數(shù)據(jù)應以冗余方式被寫入每個物理存儲設備; -錯誤探測模塊,用于通過比較自所述多個冗余物理存儲設備讀取的數(shù)據(jù)的值來探測錯誤; 其特征在于,所述存儲設備還包括: -允許將傳遞函數(shù)應用于給物理存儲設備子集的讀寫命令的模塊,所述傳遞函數(shù)用于修改讀寫命令。
2.根據(jù)權利要求1所述的存儲設備,其特征在于,所述傳遞函數(shù)修改與寫入命令相關聯(lián)的數(shù)據(jù),所述存儲設備另外具有: -允許將逆?zhèn)鬟f函數(shù)應用于自所述物理存儲設備子集讀取的數(shù)據(jù)的模塊。
3.根據(jù)權利要求2所述的存儲設備,其特征在于: -所述傳遞函數(shù)具有將關于存儲設備數(shù)據(jù)空間定義的第一雙射函數(shù)應用于與寫入命令相關聯(lián)的數(shù)據(jù)的工具。
4.根據(jù)權利要求1至3中任一項所述的存儲設備,其特征在于: -所述傳遞函數(shù)具有將關于存儲設備邏輯尋址空間定義的第二雙射函數(shù)應用于與命令相關聯(lián)的邏輯地址的工具。
5.根據(jù)權利要求1至4中任一項所述的存儲設備,其特征在于: -所述傳遞函數(shù)具有將附加命令添加至所述讀寫命令的工具。
6.根據(jù)權利要求4所述的存儲設備,其特征在于: -所述第二雙射函數(shù)用存儲設備邏輯尋址空間的結(jié)束地址同與命令相關聯(lián)的地址的相減結(jié)果來替換所述與命令相關聯(lián)的地址。
7.根據(jù)權利要求4或6所述的存儲設備,其特征在于: -所述第二雙射函數(shù)僅應用于偶地址,或者僅應用于奇地址。
8.根據(jù)權利要求3所述的存儲設備,其特征在于: -所述第一雙射函數(shù)具有將與寫入命令相關聯(lián)的數(shù)據(jù)進行反碼的工具。
9.根據(jù)權利要求5所述的存儲設備,其特征在于: -所述傳遞函數(shù)具有在接收到的整個第一命令之前插入附加命令的工具。
10.根據(jù)權利要求5或9所述的存儲設備,其特征在于: -所述傳遞函數(shù)具有周期性插入附加命令的工具。
11.根據(jù)權利要求5、9和10中任一項所述的存儲設備,其特征在于: -所述傳遞函數(shù)具有隨機插入附加命令的工具。
12.在存儲設備上讀寫的方法,所述存儲設備包括多個冗余物理存儲設備,其特征在于,所述方法具有: -用于接收通過文件系統(tǒng)的管理模塊生成的初始讀寫命令的接收步驟(700); -用于將傳遞函數(shù)應用于所述初始讀寫命令的應用步驟(702),所述傳遞函數(shù)用于修改所述初始讀取命令以便獲得至少一個修改后的讀寫命令; -用于將所述初始讀寫命令發(fā)送至第一物理存儲設備子集的發(fā)送步驟(703);-用于將所述修改后的讀寫命令發(fā)送至第二物理存儲設備子集的發(fā)送步驟(704); -如果命令是寫入命令,所述方法還具有: -用于生成關聯(lián)的讀取命令的生成步驟(705); -將所述傳遞函數(shù)應用于生成的讀取命令的應用步驟(706); -將所述關聯(lián)的讀取命令發(fā)送至所述第一物理存儲設備子集的發(fā)送步驟(707); -將通過所述傳遞函數(shù)修改后的讀取命令發(fā)送至所述第二物理存儲設備子集的發(fā)送步驟(708); -接收所讀數(shù)值的接收步驟(709);以及 -對所讀數(shù)值進行比較的比較步驟(711)。
13.根據(jù)權利要求12所述的方法,其特征在于,所述傳遞函數(shù)修改與寫入命令相關聯(lián)的數(shù)據(jù),所述方法還包括: -將逆?zhèn)鬟f函數(shù)應用于來自所述第二物理存儲設備子集的讀取數(shù)據(jù)的應用步驟(710)。
14.計算機程序,所述計算機程序包括一些指令,當在計算機上執(zhí)行所述計算機程序時,這些指令適于實施根據(jù)權利要求12或13所述的方法的各個步驟。
15.能移動或不能 移動的信息存儲工具,其部分地或完全地能被計算機或微處理器讀取,具有用于執(zhí)行根據(jù)權利要求12或13所述的方法的各個步驟的計算機程序代碼指令。
【文檔編號】G06F11/07GK103970682SQ201410190357
【公開日】2014年8月6日 申請日期:2014年2月7日 優(yōu)先權日:2013年2月5日
【發(fā)明者】J-L·羅賓, B·克萊因 申請人:空中客車運營簡化股份公司