TWI497345B - 適用於儲存裝置的編碼操作的進度記錄方法和恢復方法 - Google Patents
適用於儲存裝置的編碼操作的進度記錄方法和恢復方法 Download PDFInfo
- Publication number
- TWI497345B TWI497345B TW101143501A TW101143501A TWI497345B TW I497345 B TWI497345 B TW I497345B TW 101143501 A TW101143501 A TW 101143501A TW 101143501 A TW101143501 A TW 101143501A TW I497345 B TWI497345 B TW I497345B
- Authority
- TW
- Taiwan
- Prior art keywords
- variable
- sub
- storage area
- progress
- variables
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 63
- 238000011084 recovery Methods 0.000 claims description 25
- 239000003550 marker Substances 0.000 claims description 19
- 238000010586 diagram Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/805—Real-time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/85—Active fault masking without idle spares
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Description
本發明是有關於一種進度記錄方法和恢復方法,且特別是有關於一種適用於儲存裝置的編碼操作的進度記錄方法和恢復方法。
硬碟可說是電腦必備的儲存裝置,從筆記型電腦、桌上型電腦到專業級的伺服器,都需要硬碟來儲存大量資料。一般的硬碟會劃分為一或多個儲存區(partition或volume),每一個儲存區可用來安裝作業系統(operating system),也可以用來儲存資料。
對於硬碟的儲存區,除了一般的讀取資料和寫入資料的操作以外,也可進行加密(encryption)、解密(decryption)、重加密和反向重加密等編碼操作。上述的加密操作必須設定相對應的密碼。加密操作可將儲存區中的資料從明文轉換為密文,以保護上述資料,而解密操作可將儲存區中的資料從密文轉回加密之前的明文。上述的重加密操作是在更換密碼時,先將儲存區中的密文資料用舊密碼解密,然後用新密碼加密。反向重加密操作則是在暫停重加密操作後,對重加密過的密文資料用新密碼解密,然後用舊密碼加密,使儲存區中的密文資料恢復到重加密之前的狀態。
大型伺服器的硬碟通常儲存大量資料,一次加密操作可能需要數天才能完成,導致斷電等意外發生的機率大
增。若在加密操作中發生斷電等意外,可能發生儲存區中的資料損壞、丟失或導致整個儲存區無法再存取等問題。
上述的傳統編碼操作會在儲存區中設置一個標頭(header),用來儲存一個表示編碼操作的進度的偏移量(offset)。上述偏移量是每次完成一定數量的資料編碼時更新一次,例如每次完成32MB(megabytes)的資料編碼時更新一次。但即使如此也不能有效避免斷電所導致的資料損壞等問題。
例如圖1所示,圖1是一個硬碟儲存區100的編碼操作示意圖。儲存區100的標頭120儲存上述的偏移量,這個偏移量是每次完成b位元(bytes)的資料編碼時更新一次。編碼操作是以從偏移量S到偏移量0的方向進行,其中b和S都是預設常數。當編碼操作進行到偏移量為S-b的位置時,會更新標頭120儲存的偏移量。如果不發生意外,當編碼操作進行到偏移量為S-2b的位置時,會再次更新標頭120儲存的偏移量。但如果在編碼操作進行到偏移量為p的位置時發生斷電,而且在復電後根據標頭120的記錄,從偏移量為S-b的位置繼續編碼操作,則偏移量從S-b到p的資料會被編碼兩次,造成資料損壞。
本發明提供一種適用於儲存裝置的儲存區的編碼操作的進度記錄方法和恢復方法。可在斷電等意外之後正確恢復儲存區的資料與先前的編碼操作,避免資料損壞、丟
失以及儲存區無法再存取等問題。
本發明提出一種進度記錄方法,適用於一儲存裝置的一儲存區的一編碼操作,此進度記錄方法包括下列步驟:初始化並儲存一變數集合,其中上述編碼操作包括多個子操作,每一上述子操作對應變數集合其中至少一標記變數,上述標記變數用以記錄上述子操作的執行進度;以及在執行每一上述子操作時,根據子操作的執行進度更新已儲存的變數集合中對應的標記變數。
在本發明之一實施例中,上述子操作其中之一對應上述標記變數其中的一第一標記變數和一第二標記變數,而且根據子操作的執行進度更新已儲存的標記變數的步驟包括:根據該子操作的下一次執行之後的進度更新第一標記變數,此時第一標記變數不等於第二標記變數;執行該子操作;以及根據該子操作的上述執行之後的進度更新第二標記變數,此時第一標記變數等於第二標記變數。
在本發明之一實施例中,上述之編碼操作包括一備份子操作,而且備份子操作在對應第一標記變數和第二標記變數的上述子操作執行之前,在不同於上述儲存區的另一儲存區備份上述儲存區的資料。
本發明另提出一種恢復方法,適用於上述編碼操作,包括下列步驟:讀取上述的變數集合;根據變數集合判斷上述編碼操作的子操作之中是否有中斷者;若上述子操作之中有中斷者,則根據中斷的子操作所對應的標記變數恢復中斷的子操作;以及根據上述變數集合的上述標記變數
所記錄的進度繼續執行上述編碼操作。
在本發明之一實施例中,上述子操作其中之一對應上述標記變數其中的一第一標記變數和一第二標記變數,而且恢復上述編碼操作的步驟包括:若第一標記變數不等於第二標記變數,則將第一標記變數設定為等於第二標記變數。
在本發明之一實施例中,上述編碼操作包括一備份子操作,此備份子操作在對應第一標記變數和第二標記變數的上述子操作執行之前,在不同於上述儲存區的另一儲存區備份上述儲存區的資料,而且恢復上述編碼操作的步驟更包括:使用上述儲存區的上述備份資料,恢復儲存區中位於第一標記變數和第二標記變數所定義的區段的資料。
基於上述,本發明使用編碼操作的子操作所對應的標記變數記錄子操作的執行進度,並且在必要時備份儲存區中的資料,所以能在發生斷電等意外事件後恢復並繼續執行原先的編碼操作。
為讓本發明之上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
圖2是依照本發明一實施例的一種適用於儲存裝置的儲存區的編碼操作的進度記錄方法的流程圖。上述儲存裝置可以是任何非揮發性(nonvolatile)儲存裝置,例如快閃記憶體(flash memory)、記憶卡或硬碟。上述編碼操作可以是
前述的加密、解密、重加密或反向重加密。
上述編碼操作可包括多個子操作。為了在發生斷電、系統故障或人為錯誤操作等意外事件後恢復並繼續執行編碼操作,可將每個子操作對應到一個或多個標記變數,用來記錄對應的子操作的執行進度,這些標記變數可構成一個變數集合。此變數集合可儲存在進行上述編碼操作的儲存區,或儲存在不同於上述儲存區的另一個儲存區,例如可用檔案形式儲存此變數集合。變數集合也可以獨立於檔案系統之外,直接儲存在進行上述編碼操作的儲存區的某一特定區域,或儲存在另一個儲存區的某一特定區域。
以下說明圖2的進度記錄方法的流程。在步驟220,初始化並儲存上述的變數集合。在步驟240,在執行編碼操作的每一個子操作時,根據該子操作的執行進度更新已儲存的變數集合中該子操作所對應的標記變數。如此,上述的變數集合隨時反映編碼操作的執行進度,若有意外發生而使編碼操作中斷,上述變數集合可做為恢復與繼續執行編碼操作的依據。
圖3是依照本發明一實施例的一種適用於儲存裝置的儲存區的編碼操作的恢復方法的流程圖。圖3的恢復方法對應圖2的進度記錄方法,可在斷電等意外事件導致編碼操作中斷之後執行。在步驟320,讀取上述的變數集合。在步驟340,根據變數集合判斷編碼操作的子操作之中是否有中斷者。如果有中斷的子操作,則在步驟360根據中斷的子操作所對應的標記變數恢復中斷的上述子操作。上
述的恢復中斷的子操作是指將該子操作涉及的資料恢復到執行該子操作之前的狀態,或將該子操作涉及的資料恢復成不受中斷而正確執行該子操作之後的狀態。然後,在步驟380根據上述變數集合的標記變數所記錄的進度繼續執行上述編碼操作。反之,若在步驟340判斷出沒有中斷的子操作,表示編碼操作是在兩個子操作之間中斷,所以流程可跳過步驟360,直接進入步驟380。
圖4是依照本發明另一實施例的一種適用於儲存裝置的儲存區的編碼操作的進度記錄方法的流程圖。本實施例的編碼操作主要有兩個子操作,分別是步驟430的資料備份和步驟470的寫回編碼後的資料。步驟430的資料備份對應一個標記變數BackupSuccess,步驟470的寫回編碼後的資料則對應兩個標記變數Noffset和Eoffset。
編碼操作的子操作中,有一種是可重複執行的,例如設定初始值,這種子操作不需要備份資料。有一種子操作不可重複執行,例如某些編碼操作,重複執行兩次的結果不同於僅執行一次的結果,這種子操作需要先備份資料以供意外發生後的恢復之用。步驟470的子操作就屬於需要備份資料的那一種。
以下說明圖4的進度記錄方法的流程。在步驟410,初始化並儲存一變數集合。此變數集合包括標記變數BackupSuccess、Noffset和Eoffset,用於記錄編碼操作的執行進度。在步驟420,將已儲存的標記變數BackupSuccess的數值設為0。在步驟430,備份即將進行上述編碼操作的
儲存區的資料。本實施例的備份資料存放在不同於進行上述編碼操作的儲存區的另一個儲存區。備份資料可用檔案形式儲存在上述的另一個儲存區,或獨立於檔案系統之外,直接儲存在上述的另一個儲存區的某一特定區域。然後在步驟440將已儲存的標記變數BackupSuccess的數值設為1。對於標記變數BackupSuccess,數值0表示對應的子操作未完成,數值1則表示對應的子操作已完成。在其他實施例中,可以用任意兩個不同數值取代上述的0與1。
在步驟450,讀取一段資料並加以編碼,上述編碼可以是上述的加密、解密、重加密或反向重加密。步驟450的編碼是以a
為單位進行,a
是預設參數,例如是2MB(megabyte)。步驟450的編碼可以從偏移量最大或最小的位置開始,每次讀取長度為a
的一段資料並加以編碼。
在步驟460,更新已儲存的標記變數Noffset。如果步驟450的編碼是從偏移量最大的位置開始,則上述更新是將Noffset減去a
,以記錄步驟470的下一次執行之後的進度。如果步驟450的編碼是從偏移量最小的位置開始,則上述更新是將Noffset加上a
,以記錄步驟470的下一次執行之後的進度。此時標記變數Noffset不等於標記變數Eoffset。
在步驟470,將上述編碼之後的資料寫回儲存區。在步驟480,更新已儲存的標記變數Eoffset。如果步驟450的編碼是從偏移量最大的位置開始,則上述更新是將Eoffset減去a
,以記錄步驟470的上述執行之後的進度。
如果步驟450的編碼是從偏移量最小的位置開始,則上述更新是將Eoffset加上a
,以記錄步驟470的上述執行之後的進度。此時標記變數Noffset等於標記變數Eoffset。
如果步驟450的編碼是從偏移量最大的位置開始,則步驟450所讀取的,就是偏移量從Noffset到Noffset-a
的一段資料。如果步驟450的編碼是從偏移量最小的位置開始,則步驟450所讀取的,就是偏移量從Noffset到Noffset+a
的一段資料。
然後在步驟490,檢查儲存區中是否還有應該編碼卻尚未編碼的資料。如果是,流程返回步驟450。如果不是,流程至此結束。
圖5是依照本發明另一實施例的一種適用於儲存裝置的儲存區的編碼操作的恢復方法的流程圖。圖5的恢復方法對應圖4的進度記錄方法,可在斷電等意外事件導致編碼操作中斷之後執行。
以下說明圖5的恢復方法的流程。在步驟510,自上述變數集合讀取標記變數BackupSuccess。在步驟520,檢查BackupSuccess的數值。若BackupSuccess等於1,表示步驟430的子操作已經完成,流程進入步驟530。若BackupSuccess等於0,表示步驟430的子操作尚未完成就中斷,必須恢復步驟430的子操作,並繼續執行上述的編碼操作。在此情況下,流程進入步驟570,根據上述變數集合中的標記變數所記錄的執行進度,繼續執行上述編碼操作。這裡的繼續執行是回到步驟410,從頭執行整個編
碼操作,其中包括重新執行步驟430,這樣可以恢復步驟430的子操作。
在步驟530,自變數集合讀取標記變數Noffset和Eoffset。在步驟540,檢查Noffset和Eoffset是否相等。如果相等,表示上述編碼操作並沒有中斷的子操作,所以流程進入步驟570,根據上述變數集合中的標記變數所記錄的執行進度,繼續執行上述編碼操作。這裡的繼續執行是回到步驟490。
反之,如果Noffset和Eoffset不相等,表示步驟470的子操作尚未完成就中斷,必須恢復步驟470的子操作,並繼續執行上述的編碼操作。在此情況下,流程進入步驟550,使用步驟430的備份資料,恢復儲存區中位於Noffset和Eoffset所定義的區段的資料,並且在步驟560修正Noffset,也就是將Noffset設定為等於Eoffset。如果步驟450的編碼是從偏移量最大的位置開始,則Noffset和Eoffset所定義的區段就是偏移量從Noffset到Eoffset的資料。如果步驟450的編碼是從偏移量最小的位置開始,則Noffset和Eoffset所定義的區段就是偏移量從Eoffset到Noffset的資料。步驟550和560是為了恢復步驟470的子操作。
然後,在步驟570,根據上述變數集合中的標記變數所記錄的執行進度,繼續執行上述編碼操作。這裡的繼續執行是回到步驟450。
圖6是依照本發明另一實施例的一種適用於儲存裝置
的儲存區的編碼操作的進度記錄方法的流程圖。本實施例的編碼操作包括四個主要子操作,分別是步驟610的初始化變數集合、步驟615的資料備份、步驟630的寫回編碼後的資料、以及步驟645的更新儲存區標頭。步驟610的初始化變數集合對應一個標記變數InitFlag,步驟615的資料備份對應一個標記變數BackupSuccess,步驟630的寫回編碼後的資料對應兩個標記變數Noffset和Eoffset,步驟645的更新儲存區標頭對應一個標記變數Uoffset。
本實施例的進度記錄方法會在不同於即將進行編碼操作的儲存區的另一個儲存區創建一個備份檔案,然後將變數集合與備份資料儲存在此備份檔案。下列的表1說明此備份檔案的格式。
表1當中的備份資料就是步驟615的備份資料,備份資料長度是每次執行步驟615所備份的資料長度,本實施例的備份資料長度是一個預設參數b
,例如可以是32MB。表1的儲存區路徑是進行編碼操作的儲存區在檔案系統中的路徑。表1的編碼操作種類是上述編碼操作的種類,例如加密、解密、重加密或反向重加密。表1的編碼操作方向是上述編碼操作的方向,例如從偏移量最大的位置到偏移量最小的位置,或從偏移量最小的位置到偏移量最大的位置。因為本實施例的儲存區路徑、編碼操作種類和編碼操作方向都是可選擇的而非預設的,所以需要儲存在備份檔案中。除了備份資料以外,表1其餘的部分都屬於上述的變數集合。
以下說明圖6的進度記錄方法的流程。在步驟605,在上述的另一個儲存區創建如表1所示的備份檔案。在步驟610,初始化上述變數集合,將變數集合儲存在上述的備份檔案。步驟610包括將變數集合中的標記變數InitFlag設為0,初始化其餘的上述標記變數,儲存變數集合之後,將已儲存的標記變數InitFlag設為1。對於標記變數InitFlag,數值0表示尚未完成變數集合的初始化與儲存,數值1則表示已完成變數集合的初始化與儲存。在其他實施例中,可以用任意兩個不同數值取代上述的0與1。
步驟615和圖4的步驟420、430和440相似,不同之處在於圖4的步驟420、430和440是一次備份全部資
料,而步驟615是一次只備份長度等於上述的預設參數b
的一段資料。接下來的步驟620至635和圖4的步驟450至480相同,在此不需要重複說明。然後在步驟640檢查步驟615已備份的區段中是否還有尚未編碼的資料。如果是,流程返回步驟620。如果不是,流程進入步驟645。
接下來,在步驟645更新已儲存在上述備份檔案的標記變數Uoffset,然後更新正在進行上述編碼操作的儲存區的一個標頭所儲存的一個進度變數Toffset,使上述進度變數等於Uoffset。Uoffset是用來記錄步驟615的資料備份進度。如果步驟615的資料備份是從偏移量最大的位置開始,步驟645的更新就是將Uoffset減去上述的預設參數b
。如果步驟615的資料備份是從偏移量最小的位置開始,步驟645的更新就是將Uoffset加上預設參數b
。上述標頭所儲存的進度變數Toffset可做為意外事件發生後的恢復參考。
接下來,在步驟650檢查是否所有應編碼的資料都已經完成編碼。如果不是,流程返回步驟615。如果是,流程進入步驟655,刪除上述的備份檔案,也就是刪除已儲存的變數集合與所有備份資料。
圖7是依照本發明另一實施例的一種適用於儲存裝置的儲存區的編碼操作的恢復方法的流程圖。圖7的恢復方法對應圖6的進度記錄方法。
由於圖6流程最後會刪除備份檔案,所以在斷電等意外事件發生後,而且包括上述儲存裝置的電腦系統重新啟
動之後,可根據備份檔案是否存在,判斷是否執行本實施例的恢復方法。如果備份檔案存在,表示編碼操作因為意外事件而中斷,可執行本實施例的恢復方法。如果備份檔案不存在,表示編碼操作順利完成,不必執行本實施例的恢復方法。
以下說明圖7的恢復方法的流程。在步驟705,自備份檔案中的變數集合讀取儲存區的路徑,以及編碼操作的種類與方向,做為後面的恢復方法的步驟和上述編碼操作的繼續執行的依據。在步驟710,自變數集合讀取標記變數InitFlag和BackupSuccess。在步驟715,自上述的儲存區標頭讀取進度變數Toffset。
在步驟720,檢查InitFlag的數值。若InitFlag等於1,表示步驟610的初始化子操作已經完成,流程進入步驟725。若InitFlag等於0,表示步驟610的初始化子操作尚未完成就中斷,必須恢復步驟610的子操作,並繼續執行編碼操作。在此情況下,流程進入步驟760,根據上述變數集合中的標記變數所記錄的執行進度,繼續執行上述編碼操作。這裡的繼續執行是回到步驟610,這樣可以恢復步驟610的初始化子操作。
然後在步驟725檢查BackupSuccess的數值。若BackupSuccess等於1,表示步驟615的備份子操作已經完成,流程進入步驟730。若BackupSuccess等於0,表示步驟615的子操作尚未完成就中斷,必須恢復步驟615的子操作,並繼續執行上述的編碼操作。在此情況下,流程進
入步驟760,根據上述變數集合中的標記變數所記錄的執行進度,繼續執行上述編碼操作。這裡的繼續執行是回到步驟615,這樣可以恢復步驟615的備份子操作。
接下來,在步驟730自變數集合讀取標記變數Noffset、Eoffset和Uoffset。在步驟735,檢查Uoffset和Toffset是否相等。如果相等,流程進入步驟745。如果不相等,表示步驟645的子操作尚未完成就中斷,必須恢復步驟645的子操作,並繼續執行上述的編碼操作。在此情況下,流程進入步驟740以修正Toffset,就是將已在步驟715讀取的進度變數Toffset和上述標頭所儲存的進度變數Toffset全設定為等於標記變數Uoffset。步驟740是為了恢復步驟645的子操作。然後,在步驟760,根據上述變數集合中的標記變數所記錄的執行進度,繼續執行上述編碼操作。這裡的繼續執行是回到步驟650。
接下來,在步驟735檢查Noffset和Eoffset是否相等。如果相等,表示上述編碼操作並沒有中斷的子操作,所以流程進入步驟760,根據上述變數集合中的標記變數所記錄的執行進度,繼續執行上述編碼操作。這裡的繼續執行是回到步驟640。
反之,如果Noffset和Eoffset不相等,表示步驟630的子操作尚未完成就中斷,必須恢復步驟630的子操作,並繼續執行上述的編碼操作。在此情況下,流程進入步驟750和755以恢復步驟630的子操作。步驟750和755和圖5的步驟550和560相同,在此不重複說明。然後,在
步驟760,根據上述變數集合中的標記變數所記錄的執行進度,繼續執行上述編碼操作。這裡的繼續執行是回到步驟620。
綜上所述,本發明使用編碼操作的子操作所對應的標記變數記錄子操作的執行進度,並且在必要時備份儲存區中的資料,所以能在發生斷電等意外事件後恢復並繼續執行原先的編碼操作。對於儲存裝置的資料,本發明可提供有效的保護方案。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,故本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100‧‧‧儲存裝置的儲存區
120‧‧‧標頭
220~240、320~380、410~490、510~570、605~655、705~760‧‧‧流程步驟
0、S-2b、p、S-b、S‧‧‧偏移量
圖1是習知的一種儲存裝置其中的一個儲存區的一種加密操作的示意圖。
圖2是依照本發明一實施例的一種適用於儲存裝置的儲存區的編碼操作的進度記錄方法的流程圖。
圖3是依照本發明一實施例的一種適用於儲存裝置的儲存區的編碼操作的恢復方法的流程圖。
圖4是依照本發明另一實施例的一種適用於儲存裝置的儲存區的編碼操作的進度記錄方法的流程圖。
圖5是依照本發明另一實施例的一種適用於儲存裝置的儲存區的編碼操作的恢復方法的流程圖。
圖6是依照本發明另一實施例的一種適用於儲存裝置的儲存區的編碼操作的進度記錄方法的流程圖。
圖7是依照本發明另一實施例的一種適用於儲存裝置的儲存區的編碼操作的恢復方法的流程圖。
320~380‧‧‧流程步驟
Claims (16)
- 一種進度記錄方法,適用於一儲存裝置的一儲存區的一編碼操作,包括:初始化並儲存一變數集合,其中該編碼操作包括多個子操作,每一上述子操作對應該變數集合其中至少一標記變數,上述標記變數用以記錄上述子操作的執行進度;以及在執行每一上述子操作時,根據該子操作的執行進度更新已儲存的該變數集合中該子操作所對應的上述標記變數。
- 如申請專利範圍第1項所述之進度記錄方法,其中該變數集合更包括該儲存區的路徑,以及該編碼操作的種類與方向,該編碼操作的種類為加密、解密、重加密或反向重加密。
- 如申請專利範圍第1項所述之進度記錄方法,其中該變數集合儲存在該儲存區或不同於該儲存區的另一儲存區。
- 如申請專利範圍第1項所述之進度記錄方法,其中上述子操作其中之一對應上述標記變數其中之一,而且根據該子操作的執行進度更新已儲存的上述標記變數的步驟包括:將該標記變數設定為一第一數值;執行該子操作;以及將該標記變數設定為一第二數值。
- 如申請專利範圍第1項所述之進度記錄方法,其中上述子操作其中之一對應上述標記變數其中之一,該子操作為更新儲存於該儲存區的一進度變數,而且根據該子操作的執行進度更新已儲存的上述標記變數的步驟包括:在更新該進度變數之前,將該標記變數設定為該子操作所欲更新的該進度變數的數值。
- 如申請專利範圍第1項所述之進度記錄方法,其中上述子操作其中之一對應上述標記變數中的一第一標記變數和一第二標記變數,而且根據該子操作的執行進度更新已儲存的上述標記變數的步驟包括:根據該子操作的下一次執行之後的進度更新該第一標記變數,此時該第一標記變數不等於該第二標記變數;執行該子操作;以及根據該子操作的上述執行之後的進度更新該第二標記變數,此時該第一標記變數等於該第二標記變數。
- 如申請專利範圍第6項所述之進度記錄方法,其中該編碼操作包括一備份子操作,該備份子操作在對應該第一標記變數和該第二標記變數的該子操作執行之前,在不同於該儲存區的另一儲存區備份該儲存區的資料。
- 如申請專利範圍第7項所述之進度記錄方法,更包括:在完成該編碼操作後,刪除已儲存的該變數集合以及該儲存區的上述備份資料。
- 一種恢復方法,適用於一儲存裝置的一儲存區的一 編碼操作,包括:讀取一變數集合,其中該編碼操作包括多個子操作,每一上述子操作對應該變數集合其中至少一標記變數;根據該變數集合判斷上述子操作之中是否有中斷者;若上述子操作之中有中斷者,則根據中斷的該子操作所對應的上述標記變數恢復該子操作;以及根據該變數集合的上述標記變數所記錄的進度繼續執行該編碼操作。
- 如申請專利範圍第9項所述之恢復方法,其中該變數集合更包括該儲存區的路徑,以及該編碼操作的種類與方向,該編碼操作的種類為加密、解密、重加密或反向重加密,而且該恢復方法更包括:根據該儲存區的路徑、該編碼操作的種類與方向、以及該變數集合的上述標記變數所記錄的進度繼續執行該編碼操作。
- 如申請專利範圍第9項所述之恢復方法,其中該變數集合儲存在該儲存區或不同於該儲存區的另一儲存區。
- 如申請專利範圍第9項所述之恢復方法,其中上述子操作其中之一對應上述標記變數其中之一,該標記變數等於一第一數值或一第二數值,而且該恢復方法更包括:若該標記變數等於該第一數值,則重新執行該子操作。
- 如申請專利範圍第9項所述之恢復方法,其中上 述子操作其中之一對應上述標記變數其中之一,該子操作為更新儲存於該儲存區的一進度變數,而且恢復中斷的該子操作的步驟包括:若該標記變數不等於該進度變數,則將該進度變數設定為等於該標記變數。
- 如申請專利範圍第9項所述之恢復方法,其中上述子操作其中之一對應上述標記變數中的一第一標記變數和一第二標記變數,而且恢復中斷的該子操作的步驟包括:若該第一標記變數不等於該第二標記變數,則將該第一標記變數設定為等於該第二標記變數。
- 如申請專利範圍第14項所述之恢復方法,其中該編碼操作包括一備份子操作,該備份子操作在對應該第一標記變數和該第二標記變數的該子操作執行之前,在不同於該儲存區的另一儲存區備份該儲存區的資料,而且恢復中斷的該子操作的步驟更包括:使用該儲存區的上述備份資料,恢復該儲存區中位於該第一標記變數和該第二標記變數所定義的區段的資料。
- 如申請專利範圍第9項所述之恢復方法,更包括:根據是否存在已儲存的該變數集合,判斷是否執行該恢復方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210408643.0A CN102929806B (zh) | 2012-10-24 | 2012-10-24 | 适用于存储装置的编码操作的进度记录方法和恢复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201416904A TW201416904A (zh) | 2014-05-01 |
TWI497345B true TWI497345B (zh) | 2015-08-21 |
Family
ID=47644608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101143501A TWI497345B (zh) | 2012-10-24 | 2012-11-21 | 適用於儲存裝置的編碼操作的進度記錄方法和恢復方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US9256554B2 (zh) |
CN (1) | CN102929806B (zh) |
TW (1) | TWI497345B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9727266B2 (en) * | 2009-12-29 | 2017-08-08 | International Business Machines Corporation | Selecting storage units in a dispersed storage network |
CN105320614B (zh) * | 2014-07-28 | 2018-09-07 | 国家电网公司 | 一种保护用量数据的存储处理方法及装置 |
CN107800710A (zh) * | 2017-11-08 | 2018-03-13 | 绵阳美菱软件技术有限公司 | 一种智能家电与平台连接方法、系统以及物联网模块 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201009581A (en) * | 2008-08-26 | 2010-03-01 | Asustek Comp Inc | Method and system for protecting data |
US20100083005A1 (en) * | 2007-06-08 | 2010-04-01 | Fujitsu Limited | Encryption device and encryption method |
US20120173882A1 (en) * | 2011-01-05 | 2012-07-05 | Apple Inc. | System and method for in-place encryption |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5652879A (en) * | 1993-05-12 | 1997-07-29 | Apple Computer, Inc. | Dynamic value mechanism for computer storage container manager enabling access of objects by multiple application programs |
EP1045389A4 (en) * | 1998-11-02 | 2008-04-16 | Matsushita Electric Ind Co Ltd | RECORDING / REPRODUCING APPARATUS, RECORDED PROGRAM MEDIUM, RECORDED MEDIUM, ANTEMEMORY AND TRANSMITTER |
JP4524920B2 (ja) * | 1999-02-08 | 2010-08-18 | ソニー株式会社 | 情報記録装置、情報再生装置、認証処理装置、情報記録方法、情報再生方法及び認証処理方法 |
CN100522300C (zh) * | 2005-09-08 | 2009-08-05 | 乐金电子(中国)研究开发中心有限公司 | 移动通信终端游戏存储方法及采用该方法的移动通信终端 |
TW200825888A (en) * | 2006-12-06 | 2008-06-16 | Inventec Corp | System and method for handling disruption of rebuilt procedure of disk array device |
US8572309B2 (en) * | 2009-03-12 | 2013-10-29 | Marvell World Trade Ltd. | Apparatus and method to protect metadata against unexpected power down |
US20120150527A1 (en) * | 2009-08-21 | 2012-06-14 | Tadhg Creedon | Storage peripheral device emulation |
CN101876949B (zh) * | 2009-11-30 | 2012-04-25 | 威盛电子股份有限公司 | 数据储存系统与方法 |
US10133662B2 (en) * | 2012-06-29 | 2018-11-20 | Sandisk Technologies Llc | Systems, methods, and interfaces for managing persistent data of atomic storage operations |
-
2012
- 2012-10-24 CN CN201210408643.0A patent/CN102929806B/zh active Active
- 2012-11-21 TW TW101143501A patent/TWI497345B/zh active
-
2013
- 2013-01-08 US US13/736,092 patent/US9256554B2/en active Active
-
2015
- 2015-11-04 US US14/931,852 patent/US9323622B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100083005A1 (en) * | 2007-06-08 | 2010-04-01 | Fujitsu Limited | Encryption device and encryption method |
TW201009581A (en) * | 2008-08-26 | 2010-03-01 | Asustek Comp Inc | Method and system for protecting data |
US20120173882A1 (en) * | 2011-01-05 | 2012-07-05 | Apple Inc. | System and method for in-place encryption |
Also Published As
Publication number | Publication date |
---|---|
US20160055063A1 (en) | 2016-02-25 |
US9323622B2 (en) | 2016-04-26 |
TW201416904A (zh) | 2014-05-01 |
US9256554B2 (en) | 2016-02-09 |
CN102929806A (zh) | 2013-02-13 |
CN102929806B (zh) | 2015-09-09 |
US20140115284A1 (en) | 2014-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11182212B2 (en) | Systems, methods, and interfaces for vector input/output operations | |
TWI570737B (zh) | 資料儲存裝置以及快閃記憶體控制方法 | |
US8725934B2 (en) | Methods and appratuses for atomic storage operations | |
EP2598996B1 (en) | Apparatus, system, and method for conditional and atomic storage operations | |
EP3022740B1 (en) | Erase management in memory systems | |
TW201619971A (zh) | 耦合至主機dram之綠能與非固態硬碟(nand ssd)驅動器、gnsd應用程式及其操作方法和電腦系統主機、增加非揮發快閃記憶儲存器耐久性之方法 | |
US20070208918A1 (en) | Method and apparatus for providing virtual machine backup | |
US20140351526A1 (en) | Data storage controller with multiple pipelines | |
US20170123944A1 (en) | Storage system to recover and rewrite overwritten data | |
WO2012140695A1 (en) | Storage control apparatus and error correction method | |
WO2002071230A1 (en) | Utilizing parity caching and parity logging while closing the raid 5 write hole | |
CN105302665B (zh) | 一种改进的写时拷贝快照方法及系统 | |
TW202024893A (zh) | 池級儲存管理 | |
US9772782B2 (en) | Non-volatile complement data cache | |
WO2023206968A1 (zh) | 一种数据存储方法、系统及计算机可读存储介质 | |
TWI497345B (zh) | 適用於儲存裝置的編碼操作的進度記錄方法和恢復方法 | |
US9535799B2 (en) | Apparatus, systems, and methods for data recovery | |
US9235532B2 (en) | Secure storage of full disk encryption keys | |
EP2998903B1 (en) | System and method for robust full-drive encryption | |
CN105404468B (zh) | 绿能与非固态硬盘应用及其驱动器 | |
CN103425546A (zh) | 一种通用高效高可靠的Nor Flash数据存储管理方法 | |
RU2580014C2 (ru) | Система и способ изменения маски зашифрованной области при возникновении сбоя в компьютерной системе | |
CN105893172A (zh) | 硬盘数据恢复方法及系统 | |
RU2580018C2 (ru) | Способ определения маски зашифрованной области диска | |
Kuppan Thirumalai | SSD Firmware Design Considerations |