專利名稱:一種raid0數(shù)據(jù)備份的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)存儲(chǔ)技術(shù),特別涉及一種RAIDO數(shù)據(jù)備份的方法及裝置。
背景技術(shù):
獨(dú)立冗余磁盤陣列 RAID (Redundant Array of Independent Disk)是一種把多塊獨(dú)立的硬盤(物理硬盤)按不同的方式組合起來形成一個(gè)硬盤組(邏輯硬盤),用于提供比單個(gè)硬盤更高的存儲(chǔ)性能與數(shù)據(jù)備份能力。根據(jù)磁盤陳列的不同組合方式,可以將RAID 分為不同的級(jí)別。常用的 RAID 級(jí)別有RAID0、RAIDl、RAID2、RAID3、RAID4、RAID5、RAID6、 RAID01、RAIDlO等,不同的RAID級(jí)別對(duì)應(yīng)于不同的性能、容量和可靠性。對(duì)于RAID類型為RAIDO的磁盤陣列是在所有RAID級(jí)別中存儲(chǔ)性能最高的磁盤陣列,它把連續(xù)的數(shù)據(jù)分散到多個(gè)磁盤上存取,這樣,當(dāng)系統(tǒng)有數(shù)據(jù)請(qǐng)求時(shí),多個(gè)磁盤可以并行地執(zhí)行,每個(gè)磁盤執(zhí)行屬于自己的那部分?jǐn)?shù)據(jù)請(qǐng)求。這種數(shù)據(jù)并行操作可以充分利用總線的帶寬,顯著提高磁盤整體存取性能。圖1為現(xiàn)有技術(shù)中的RAIDO數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)示意圖。如圖1所示,RAIDO包括了 4塊數(shù)據(jù)盤,它們分別為Diskl、Disk2、Disk3和Disk4。如圖所示,系統(tǒng)向四個(gè)磁盤組成的RAID 0磁盤組發(fā)出的I/O數(shù)據(jù)請(qǐng)求被轉(zhuǎn)化為4項(xiàng)操作,其中的每一項(xiàng)操作都對(duì)應(yīng)于一塊物理硬盤。通過建立RAID0,原先順序的數(shù)據(jù)請(qǐng)求被分散到四塊硬盤中同時(shí)執(zhí)行,從理論上講,四塊硬盤的并行操作使同一時(shí)間內(nèi)磁盤讀寫速度提升了 4倍。在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題在現(xiàn)有的RAIDO數(shù)據(jù)存儲(chǔ)方法中,不能提供數(shù)據(jù)冗余保護(hù),如果RAIDO中的一個(gè)磁盤失效,將無法恢復(fù),從而影響整個(gè)數(shù)據(jù)的可靠性。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種RAIDO數(shù)據(jù)備份的方法,可確保在不影響向RAIDO中高危磁盤寫入數(shù)據(jù)的情況下,有效地替換RAIDO中的高危磁盤。本發(fā)明的另一目的在于提供一種RAIDO數(shù)據(jù)備份的裝置,可確保在不影響向 RAIDO中高危磁盤寫入數(shù)據(jù)的情況下,有效地替換RAIDO中的高危磁盤。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的一種RAIDO數(shù)據(jù)備份的方法,包括按照預(yù)定方法對(duì)RAIDO中的每個(gè)磁盤進(jìn)行檢測,確定所述RAIDO中的高危磁盤;從所述高危磁盤中按順序依次讀取預(yù)設(shè)長度datasize的數(shù)據(jù),記錄所述高危磁盤的讀數(shù)據(jù)位置read_pos ;將所述長度為datasize的數(shù)據(jù)備份到備用磁盤中,記錄所述高危磁盤的寫數(shù)據(jù)位置write_p0S,將所述讀數(shù)據(jù)位置reacLpos移動(dòng)到所述寫數(shù)據(jù)位置write_p0S ;當(dāng)需要向所述高危磁盤寫入外部數(shù)據(jù)時(shí),根據(jù)需要寫入外部數(shù)據(jù)的位置pos與 write_pos和reacLpos+datasize的位置關(guān)系,確定將所述外部數(shù)據(jù)寫入到所述高危磁盤或所述備用磁盤中。一種RAIDO數(shù)據(jù)備份的裝置,包括確定單元,用于按照預(yù)定方法對(duì)RAIDO中的每個(gè)磁盤進(jìn)行檢測,確定所述RAIDO中的高危磁盤,向讀取單元發(fā)送一個(gè)讀取指令,所述讀取指令中包括所述高危磁盤的唯一標(biāo)識(shí);所述讀取單元,用于在接收到所述讀取指令之后,從所述高危磁盤中按順序依次讀取預(yù)設(shè)長度datasize的數(shù)據(jù),記錄所述高危磁盤的讀數(shù)據(jù)位置reacLpos,將所述長度為 datasize的數(shù)據(jù)發(fā)送給備份單元;所述備份單元,用于將所述長度為datasize的數(shù)據(jù)備份到備用磁盤中,記錄所述高危磁盤的寫數(shù)據(jù)位置write_p0S,將所述讀數(shù)據(jù)位置reacLpos移動(dòng)到所述寫數(shù)據(jù)位置 write_pos,將所述寫數(shù)據(jù)位置write_p0S和所述寫數(shù)據(jù)位置reacLpos發(fā)送給所述確定單元;所述確定單元,還用于當(dāng)需要向所述高危磁盤寫入外部數(shù)據(jù)時(shí),根據(jù)需要寫入外部數(shù)據(jù)的位置pos與write_p0S和reacLpos+datasize的位置關(guān)系,確定將所述外部數(shù)據(jù)寫入到所述高危磁盤或所述備用磁盤中??梢?,采用本發(fā)明的技術(shù)方案,在RAIDO的高危磁盤中記錄讀數(shù)據(jù)位置reacLpos 和寫數(shù)據(jù)位置write_p0S,當(dāng)需要向所述高危磁盤寫入外部數(shù)據(jù)時(shí),根據(jù)需要寫入外部數(shù)據(jù)的位置pos與write_p0S和reacLpos+預(yù)設(shè)長度datasize的位置關(guān)系,確定將所述外部數(shù)據(jù)寫入到所述高危磁盤或所述備用磁盤中。和現(xiàn)有技術(shù)相比,本發(fā)明提供的RAIDO數(shù)據(jù)備份的方法和裝置,可確保在不影響向RAIDO中高危磁盤寫入數(shù)據(jù)的情況下,有效地替換 RAIDO中的高危磁盤,另外,本發(fā)明所述方法實(shí)現(xiàn)起來簡單方便,便于普及。
圖1為現(xiàn)有技術(shù)中的RAIDO數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)示意圖。圖2為本發(fā)明RAIDO數(shù)據(jù)備份的方法流程圖。圖3為本發(fā)明高危磁盤Disk4數(shù)據(jù)備份方法的示意圖。圖4為本發(fā)明RAIDO數(shù)據(jù)備份的裝置結(jié)構(gòu)示意圖。
具體實(shí)施例方式針對(duì)現(xiàn)有技術(shù)中存在的問題,本發(fā)明中提出一種改進(jìn)后的RAIDO數(shù)據(jù)備份的方法,可確保在不影響向RAIDO中高危磁盤寫入數(shù)據(jù)的情況下,有效地替換RAIDO中的高危磁
ο為使本發(fā)明的技術(shù)方案更加清楚、明白,以下參照附圖并舉實(shí)施例,對(duì)本發(fā)明所述方案作進(jìn)一步地詳細(xì)說明。圖2為本發(fā)明RAIDO數(shù)據(jù)備份的方法流程圖。如圖2所示,包括以下步驟步驟201,按照預(yù)定方法對(duì)RAIDO中的每個(gè)磁盤進(jìn)行檢測,確定RAIDO中的高危磁
ο在本步驟中,通過硬盤檢測工具,例如可以是SMART硬盤檢測工具,對(duì)RAIDO中的磁盤Diskl、Disk2、Disk3和Disk4分別進(jìn)行檢測,確定RAIDO中處于高危狀態(tài)的磁盤。假設(shè)在本步驟中,通過SMART硬盤檢測工具對(duì)RAIDO中每個(gè)數(shù)據(jù)盤進(jìn)行檢測,確定磁盤Disk4 為高危磁盤。步驟202,從高危磁盤中按順序依次讀取預(yù)設(shè)長度datasize的數(shù)據(jù),記錄高危磁盤的讀數(shù)據(jù)位置read_poso圖3為本發(fā)明高危磁盤Disk4數(shù)據(jù)備份方法的示意圖。如圖3所示,假如預(yù)設(shè)長度datasize為2,首先從高危磁盤Disk4中按順序讀取數(shù)據(jù)D4和D8,記錄高危磁盤Disk4 的讀數(shù)據(jù)位置read_poso步驟203,將長度為datasize的數(shù)據(jù)備份到備用磁盤中,記錄高危磁盤的寫數(shù)據(jù)位置write_p0S,將讀數(shù)據(jù)位置reacLpos移動(dòng)到寫數(shù)據(jù)位置write_p0S。在本步驟中,如圖3所示,將高危磁盤Disk4中的數(shù)據(jù)D4和D8備份到備用磁盤中,記錄高危磁盤的寫數(shù)據(jù)位置write_p0S,并將讀數(shù)據(jù)位置reacLpos移動(dòng)到寫數(shù)據(jù)位置 write_p0S,此時(shí),高危磁盤Disk4中的讀數(shù)據(jù)位置reacLpos和寫數(shù)據(jù)位置write_p0S在同一個(gè)位置上。步驟204,當(dāng)需要向高危磁盤寫入外部數(shù)據(jù)時(shí),根據(jù)需要寫入外部數(shù)據(jù)的位置pos 與write_p0S和reacLpos+datasize的位置關(guān)系,確定將外部數(shù)據(jù)寫入到高危磁盤或備用磁盤中。在本步驟中,當(dāng)需要向高危磁盤Disk4寫入外部數(shù)據(jù)時(shí),根據(jù)需要寫入外部數(shù)據(jù)的位置pos與write_p0S和reacLpos+datasize的位置關(guān)系,確定將外部數(shù)據(jù)寫入到高危磁盤Disk4或備用磁盤中。具體地,當(dāng)需要寫入外部數(shù)據(jù)的位置pos < write_pos時(shí),確定將外部數(shù)據(jù)寫入到備用磁盤中;或者,當(dāng)pos ^ read_pos+datasize時(shí),確定將外部數(shù)據(jù)寫入至IJ高危磁盤 Disk4 中;或者,當(dāng) pos ^ write_pos 且 pos < read_pos+datasize 時(shí),確定將外部數(shù)據(jù)寫入到高危磁盤Disk4中。優(yōu)選地,當(dāng) pos ^ write_pos 且 pos < read_pos+datasize 時(shí),在夕卜部數(shù)據(jù)寫入到高危磁盤Disk4之后,還可以在高危磁盤Disk4中重新讀取以reacLpos為起點(diǎn),長度為 datasize的數(shù)據(jù),將所述以reacLpos為起點(diǎn),長度為datasize的數(shù)據(jù)備份到備用磁盤中。本發(fā)明提出的RAIDO數(shù)據(jù)備份的方法,在RAIDO的高危磁盤中記錄讀數(shù)據(jù)位置 reacLpos和寫數(shù)據(jù)位置Write_p0S,當(dāng)需要向所述高危磁盤寫入外部數(shù)據(jù)時(shí),根據(jù)需要寫入外部數(shù)據(jù)的位置pos與write_p0S和reacLpos+預(yù)設(shè)長度datasize的位置關(guān)系,確定將所述外部數(shù)據(jù)寫入到所述高危磁盤或所述備用磁盤中。和現(xiàn)有技術(shù)相比,本發(fā)明提供的 RAIDO數(shù)據(jù)備份的方法,可確保在不影響向RAIDO中高危磁盤寫入數(shù)據(jù)的情況下,有效地替換RAIDO中的高危磁盤,另外,本發(fā)明所述方法實(shí)現(xiàn)起來簡單方便,便于普及。圖4為本發(fā)明RAIDO數(shù)據(jù)備份的裝置結(jié)構(gòu)示意圖。如圖4所示,包括確定單元401,用于按照預(yù)定方法對(duì)RAIDO中的每個(gè)磁盤進(jìn)行檢測,確定所述 RAIDO中的高危磁盤,向讀取單元402發(fā)送一個(gè)讀取指令,所述讀取指令中包括所述高危磁盤的唯一標(biāo)識(shí);所述讀取單元402,用于在接收到所述讀取指令之后,從所述高危磁盤中按順序依次讀取預(yù)設(shè)長度datasize的數(shù)據(jù),記錄所述高危磁盤的讀數(shù)據(jù)位置reacLpos,將所述長度為datasize的數(shù)據(jù)發(fā)送給備份單元403 ;所述備份單元403,用于將所述長度為datasize的數(shù)據(jù)備份到備用磁盤中,記錄所述高危磁盤的寫數(shù)據(jù)位置write_p0S,將所述讀數(shù)據(jù)位置reacLpos移動(dòng)到所述寫數(shù)據(jù)位置write_p0S,將所述寫數(shù)據(jù)位置Write_p0S和所述寫數(shù)據(jù)位置reacLpos發(fā)送給所述確定單元401 ;所述確定單元401,還用于當(dāng)需要向所述高危磁盤寫入外部數(shù)據(jù)時(shí),根據(jù)需要寫入外部數(shù)據(jù)的位置pos與write_p0S和reacLpos+datasize的位置關(guān)系,確定將所述外部數(shù)據(jù)寫入到所述高危磁盤或所述備用磁盤中。進(jìn)一步的,所述確定單元401,具體用于當(dāng)需要寫入外部數(shù)據(jù)的位置pos <write_ pos時(shí),確定將所述外部數(shù)據(jù)寫入到所述備用磁盤中;或者,當(dāng)pos ^ read_pos+datasize時(shí),確定將所述外部數(shù)據(jù)寫入到所述高危磁盤中;或者,當(dāng) pos ^ write_pos 且 pos < read_pos+datasize 時(shí),確定所述夕卜部數(shù)據(jù)寫入到所述高危磁盤中。進(jìn)一步的,所述讀取單元402,還用于當(dāng)pos彡write_pos且pos < read_ pos+datasize時(shí),在將所述外部數(shù)據(jù)寫入到所述高危磁盤之后,在所述高危磁盤中重新讀取以reacLpos為起點(diǎn),長度為datasize的數(shù)據(jù),將所述以reacLpos為起點(diǎn),長度為 datasize的數(shù)據(jù)發(fā)送給所述備份單元;所述備份單元403,還用于將所述以reacLpos為起點(diǎn),長度為datasize的數(shù)據(jù)備份到所述備用磁盤中。本發(fā)明提出的RAIDO數(shù)據(jù)備份的裝置,在RAIDO的高危磁盤中記錄讀數(shù)據(jù)位置 reacLpos和寫數(shù)據(jù)位置Write_p0S,當(dāng)需要向所述高危磁盤寫入外部數(shù)據(jù)時(shí),根據(jù)需要寫入外部數(shù)據(jù)的位置pos與write_p0S和reacLpos+預(yù)設(shè)長度datasize的位置關(guān)系,確定將所述外部數(shù)據(jù)寫入到所述高危磁盤或所述備用磁盤中。和現(xiàn)有技術(shù)相比,本發(fā)明提供的 RAIDO數(shù)據(jù)備份的裝置,可確保在不影響向RAIDO中高危磁盤寫入數(shù)據(jù)的情況下,有效地替換RAIDO中的高危磁盤,另外,本發(fā)明所述方法實(shí)現(xiàn)起來簡單方便,便于普及。圖4所示裝置實(shí)施例的具體工作流程請(qǐng)參照?qǐng)D2所示方法實(shí)施例中的相應(yīng)說明, 不再贅述。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
權(quán)利要求
1.一種RAIDO數(shù)據(jù)備份的方法,其特征在于,包括按照預(yù)定方法對(duì)RAIDO中的每個(gè)磁盤進(jìn)行檢測,確定所述RAIDO中的高危磁盤; 從所述高危磁盤中按順序依次讀取預(yù)設(shè)長度datasize的數(shù)據(jù),記錄所述高危磁盤的讀數(shù)據(jù)位置read_pos ;將所述長度為datasize的數(shù)據(jù)備份到備用磁盤中,記錄所述高危磁盤的寫數(shù)據(jù)位置 write_p0S,將所述讀數(shù)據(jù)位置reacLpos移動(dòng)到所述寫數(shù)據(jù)位置write_p0S ;當(dāng)需要向所述高危磁盤寫入外部數(shù)據(jù)時(shí),根據(jù)需要寫入外部數(shù)據(jù)的位置pos與write_ pos和reacLpos+datasize的位置關(guān)系,確定將所述外部數(shù)據(jù)寫入到所述高危磁盤或所述備用磁盤中。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)需要寫入外部數(shù)據(jù)的位置pos與 write_pos和reacLpos+datasize的位置關(guān)系,確定將所述外部數(shù)據(jù)寫入到所述高危磁盤或所述備用磁盤中,包括當(dāng)所述需要寫入外部數(shù)據(jù)的位置pos < write_pos時(shí),確定將所述外部數(shù)據(jù)寫入到所述備用磁盤中;或者,當(dāng)pos ^ read_pos+datasize時(shí),確定將所述外部數(shù)據(jù)寫入到所述高危磁盤中; 或者,當(dāng)pos彡write_pos且pos < read_pos+datasize時(shí),確定將所述外部數(shù)據(jù)寫入到所述高危磁盤中。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,在所述當(dāng)pos彡Write_p0S且pos < reacLpos+datasize時(shí),確定將所述外部數(shù)據(jù)寫入到所述高危磁盤中之后,還包括在所述高危磁盤中重新讀取以reacLpos為起點(diǎn),長度為datasize的數(shù)據(jù); 將所述以reacLpos為起點(diǎn),長度為datasize的數(shù)據(jù)備份到所述備用磁盤中。
4.一種RAIDO數(shù)據(jù)備份的裝置,其特征在于,包括確定單元,用于按照預(yù)定方法對(duì)RAIDO中的每個(gè)磁盤進(jìn)行檢測,確定所述RAIDO中的高危磁盤,向讀取單元發(fā)送一個(gè)讀取指令,所述讀取指令中包括所述高危磁盤的唯一標(biāo)識(shí);所述讀取單元,用于在接收到所述讀取指令之后,從所述高危磁盤中按順序依次讀取預(yù)設(shè)長度datasize的數(shù)據(jù),記錄所述高危磁盤的讀數(shù)據(jù)位置reacLpos,將所述長度為 datasize的數(shù)據(jù)發(fā)送給備份單元;所述備份單元,用于將所述長度為datasize的數(shù)據(jù)備份到備用磁盤中,記錄所述高危磁盤的寫數(shù)據(jù)位置write_p0S,將所述讀數(shù)據(jù)位置reacLpos移動(dòng)到所述寫數(shù)據(jù)位置write_ pos,將所述寫數(shù)據(jù)位置Write_p0S和所述寫數(shù)據(jù)位置reacLpos發(fā)送給所述確定單元;所述確定單元,還用于當(dāng)需要向所述高危磁盤寫入外部數(shù)據(jù)時(shí),根據(jù)需要寫入外部數(shù)據(jù)的位置pos與write_p0S和reacLpos+datasize的位置關(guān)系,確定將所述外部數(shù)據(jù)寫入到所述高危磁盤或所述備用磁盤中。
5.根據(jù)權(quán)利要求4所述的裝置,其特征在于,所述確定單元,具體用于當(dāng)所述需要寫入外部數(shù)據(jù)的位置pos < write_p0S時(shí),確定將所述外部數(shù)據(jù)寫入到所述備用磁盤中;或者,當(dāng)pos ^ read_pos+datasize時(shí),確定將所述外部數(shù)據(jù)寫入到所述高危磁盤中; 或者,當(dāng)pos彡write_pos且pos < read_pos+datasize時(shí),確定將所述外部數(shù)據(jù)寫入到所述高危磁盤中。
6.根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述讀取單元,還用于當(dāng)pos^ write,POS且pos < read_pos+datasize時(shí),在將所述外部數(shù)據(jù)寫入到所述高危磁盤之后,在所述高危磁盤中重新讀取以reacLpos為起點(diǎn),長度為datasize的數(shù)據(jù),將所述以reacLpos為起點(diǎn),長度為datasize的數(shù)據(jù)發(fā)送給所述備份單元;所述備份單元,還用于將所述以reacLpos為起點(diǎn),長度為datasize的數(shù)據(jù)備份到所述備用磁盤中。
全文摘要
本發(fā)明公開了一種RAID0數(shù)據(jù)備份的方法及裝置,所述方法包括按照預(yù)定方法對(duì)RAID0中的每個(gè)磁盤進(jìn)行檢測,確定所述RAID0中的高危磁盤;從所述高危磁盤中按順序依次讀取預(yù)設(shè)長度datasize的數(shù)據(jù),記錄所述高危磁盤的讀數(shù)據(jù)位置read_pos;將所述長度為datasize的數(shù)據(jù)備份到備用磁盤中,記錄所述高危磁盤的寫數(shù)據(jù)位置write_pos,將所述讀數(shù)據(jù)位置read_pos移動(dòng)到所述寫數(shù)據(jù)位置write_pos;當(dāng)需要向所述高危磁盤寫入外部數(shù)據(jù)時(shí),根據(jù)需要寫入外部數(shù)據(jù)的位置pos與write_pos和read_pos+datasize的位置關(guān)系,確定將所述外部數(shù)據(jù)寫入到所述高危磁盤或所述備用磁盤中。和現(xiàn)有技術(shù)相比,本發(fā)明提出的RAID0數(shù)據(jù)備份的方法及裝置,可確保在不影響向RAID0中高危磁盤寫入數(shù)據(jù)的情況下,有效地替換RAID0中的高危磁盤。
文檔編號(hào)G06F11/14GK102385542SQ20111041651
公開日2012年3月21日 申請(qǐng)日期2011年12月13日 優(yōu)先權(quán)日2011年12月13日
發(fā)明者金振成 申請(qǐng)人:云海創(chuàng)想信息技術(shù)(無錫)有限公司, 深圳市創(chuàng)新科信息技術(shù)有限公司