亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

磁盤陣列數(shù)據(jù)重建方法

文檔序號(hào):6471514閱讀:268來源:國知局
專利名稱:磁盤陣列數(shù)據(jù)重建方法
技術(shù)領(lǐng)域
本發(fā)明屬于計(jì)算機(jī)數(shù)據(jù)存儲(chǔ)方法,具體涉及一種磁盤陣列數(shù)據(jù)重建 方法。
背景技術(shù)
隨著計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)通信技術(shù)的發(fā)展,信息化程度越來越高,人
們對(duì)數(shù)據(jù)可靠性的要求也越來越高。冗余磁盤陣列RAID (Redundant Array of Independent Disks)是可靠存儲(chǔ)系統(tǒng)領(lǐng)域中的一個(gè)典型裝置,同 單個(gè)磁盤相比,磁盤陣列的性能、可用性和可靠性都有相當(dāng)大的提高, 其中,鏡像、奇偶校驗(yàn)、熱備份等都是磁盤陣列常用的容錯(cuò)技術(shù)。當(dāng)磁 盤陣列中某一個(gè)成員磁盤出現(xiàn)故障且加入新磁盤時(shí),磁盤陣列能夠自動(dòng) 切換到重建模式,重建進(jìn)程在不中斷應(yīng)用服務(wù)的情況下連續(xù)地將故障盤 上的數(shù)據(jù)塊恢復(fù)到新加入的磁盤中,直到故障盤上所有的數(shù)據(jù)塊都恢復(fù) 到新加入的磁盤中,磁盤陣列返回到正常讀寫模式。由于當(dāng)前的應(yīng)用服 務(wù)都要求所使用的存儲(chǔ)子系統(tǒng)同時(shí)具有高性能、高可用性和高可靠性, 應(yīng)用程序不僅要求磁盤陣列在成員磁盤出現(xiàn)故障時(shí)能夠重建故障盤上的 數(shù)據(jù),更重要的是其能夠盡可能的減少重建時(shí)間來保證系統(tǒng)的可靠性, 并且要盡可能的降低重建過程對(duì)系統(tǒng)性能的影響,因此磁盤陣列的數(shù)據(jù) 重建方法至關(guān)重要。
研究顯示,在大規(guī)模存儲(chǔ)系統(tǒng)中,磁盤的出錯(cuò)率是很高的磁盤故障 率超過1%,平均達(dá)到2%—4%,有些系統(tǒng)中達(dá)到13%,遠(yuǎn)大于磁盤廠商 提供的0.8%,因此重建越來越頻繁。另外,隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展, 磁盤容量越來越大,而磁盤定位速度的增長卻遠(yuǎn)遠(yuǎn)低于磁盤容量和帶寬 的增長速度。這些研究表明,隨著磁盤容量的迅速增長和訪問速度的緩慢提高,磁盤陣列的數(shù)據(jù)重建過程需要越來越多的時(shí)間,嚴(yán)重影響了基 于磁盤陣列的存儲(chǔ)系統(tǒng)的可靠性和可用性。
實(shí)驗(yàn)發(fā)現(xiàn)在磁盤陣列重建過程中,用戶的訪問強(qiáng)度對(duì)磁盤陣列的重 建效率有著很重要的影響,不但會(huì)大大延長重建的時(shí)間,而且會(huì)增加用
戶訪問的響應(yīng)時(shí)間。申請(qǐng)?zhí)?00610124981.6,公開號(hào)CN1987799,名稱
為"一種適用于磁盤陣列的數(shù)據(jù)重建方法"的發(fā)明專利申請(qǐng),通過優(yōu)化 重建流程來加快重建時(shí)間和減少用戶響應(yīng)時(shí)間,并沒有考慮用戶應(yīng)用請(qǐng) 求對(duì)重建效率的影響。

發(fā)明內(nèi)容
本發(fā)明提出一種磁盤陣列的數(shù)據(jù)重建方法,將磁盤陣列重建過程中 收到的所有寫請(qǐng)求和熱的讀請(qǐng)求重定向到代理磁盤陣列中,減輕了重建 請(qǐng)求和用戶請(qǐng)求爭搶磁盤資源的矛盾,解決現(xiàn)有的磁盤陣列數(shù)據(jù)重建方 法需要時(shí)間過多、影響存儲(chǔ)系統(tǒng)的讀寫性能和可靠性的問題。
本發(fā)明的一種磁盤陣列的數(shù)據(jù)重建方法,由重建階段和回收階段順 序組成,在重建中磁盤陣列之外設(shè)置代理磁盤陣列,重建中磁盤陣列上 設(shè)置用戶控制接口、重建模塊、空間管理模塊、熱點(diǎn)數(shù)據(jù)識(shí)別模塊、請(qǐng)
求重定向模塊、數(shù)據(jù)回收模塊以及重定向數(shù)據(jù)日志表和非熱點(diǎn)數(shù)據(jù)鏈表; 所述重建階段包括并行的重建步驟和重建階段請(qǐng)求處理步驟,回收階段 包括并行的數(shù)據(jù)回收步驟和回收階段請(qǐng)求處理步驟; (1)所述重建步驟,進(jìn)行下述過程
(1.1)當(dāng)磁盤陣列中成員磁盤出現(xiàn)故障時(shí),取出故障磁盤,加入新 的替換磁盤,繼續(xù)過程(1.2);
(1. 2)重建模塊讀取磁盤陣列除替換磁盤外所有幸存磁盤上位于某 條帶的數(shù)據(jù)塊,計(jì)算它們的奇偶校驗(yàn),將結(jié)果寫入新加入的替換磁盤中位于該條帶的數(shù)據(jù)塊內(nèi),轉(zhuǎn)過程(1.3);
(1.3)重復(fù)執(zhí)行(1.2),直至磁盤陣列上所有條帶都重建完畢,轉(zhuǎn) 步驟(3);
(2)所述重建階段請(qǐng)求處理步驟,進(jìn)行下述過程
(2.1) 重建中磁盤陣列判斷是否所有條帶都重建完畢,是則轉(zhuǎn)步驟 (4);否則等待上層用戶讀寫請(qǐng)求,判斷其類型,讀請(qǐng)求轉(zhuǎn)過程(2.2),
寫請(qǐng)求轉(zhuǎn)過程(2.10);
(2.2) 請(qǐng)求重定向模塊根據(jù)重定向數(shù)據(jù)日志表判斷該讀請(qǐng)求所需要 的數(shù)據(jù)是否在代理磁盤陣列中,是則轉(zhuǎn)過程(2.3),否則轉(zhuǎn)過程(2.6);
(2.3) 請(qǐng)求重定向模塊根據(jù)重定向數(shù)據(jù)日志表判斷該讀請(qǐng)求所需要 的數(shù)據(jù)是否全部在代理磁盤陣列中,是則轉(zhuǎn)過程(2.4),否則轉(zhuǎn)過程(2.5);
(2.4) 請(qǐng)求重定向模塊將該讀請(qǐng)求發(fā)向代理磁盤陣列,從代理磁盤 陣列讀取數(shù)據(jù),轉(zhuǎn)過程(2.1);
(2.5) 請(qǐng)求重定向模塊將該讀請(qǐng)求分別發(fā)向重建中磁盤陣列和代理 磁盤陣列,分別從兩個(gè)磁盤陣列讀取部分?jǐn)?shù)據(jù),組合后返回給用戶,轉(zhuǎn)
過程(2.1);
(2.6) 請(qǐng)求重定向模塊將該讀請(qǐng)求發(fā)向重建磁盤陣列,從重建中磁 盤陣列讀取數(shù)據(jù),進(jìn)行過程(2.7);
(2.7) 熱點(diǎn)數(shù)據(jù)識(shí)別模塊判斷該讀請(qǐng)求是否命中非熱點(diǎn)數(shù)據(jù)鏈表, 是則轉(zhuǎn)過程(2.8),否則轉(zhuǎn)過程(2.9);
(2.8) 請(qǐng)求重定向模塊將讀取的數(shù)據(jù)寫入到代理磁盤陣列,從非熱 點(diǎn)數(shù)據(jù)鏈表中刪除相應(yīng)的信息,并記錄在重定向數(shù)據(jù)日志表中,且置標(biāo) 志位為0,轉(zhuǎn)過程(2.1);
(2.9) 熱點(diǎn)數(shù)據(jù)識(shí)別模塊將該讀請(qǐng)求記錄在非熱點(diǎn)數(shù)據(jù)鏈表中,轉(zhuǎn) 過程(2.1);
(2.10) 請(qǐng)求重定向模塊判斷該寫請(qǐng)求是否命中重定向數(shù)據(jù)日志表,是則轉(zhuǎn)過程(2.12),否則轉(zhuǎn)過程(2.11);
(2.11) 空間管理模塊從代理磁盤陣列中為該寫請(qǐng)求分配空間,繼續(xù)
過程(2.12);
(2.12) 請(qǐng)求重定向模塊將該寫請(qǐng)求中的數(shù)據(jù)寫入到代理磁盤陣列, 并將該數(shù)據(jù)信息記錄在重定向數(shù)據(jù)日志表中,且置標(biāo)志位為1,轉(zhuǎn)過程
(2.1);
(3) 所述數(shù)據(jù)回收步驟,進(jìn)行下述過程
(3.1) 數(shù)據(jù)回收模塊判斷重定向數(shù)據(jù)日志表是否為空,是則數(shù)據(jù)回
收結(jié)束,否則轉(zhuǎn)過程(3.2);
(3.2) 數(shù)據(jù)回收模塊從重定向日志表中取出一條日志,判斷該日志 的標(biāo)志位是否為l,是則轉(zhuǎn)過程(3.3),否則轉(zhuǎn)過程(3.4);
(3.3) 數(shù)據(jù)回收模塊從代理磁盤陣列讀取該日志對(duì)應(yīng)的數(shù)據(jù)并寫回
到重建中磁盤陣列中,繼續(xù)過程(3.4);
(3.4) 數(shù)據(jù)回收模塊將該日志從重定向數(shù)據(jù)日志表中刪除,轉(zhuǎn)過程
(3.1);
(4) 所述回收階段請(qǐng)求處理步驟,進(jìn)行下述過程
(4.1) 重建中磁盤陣列判斷數(shù)據(jù)回收是否結(jié)束,是則本步驟結(jié)束, 否則等待上層用戶讀寫請(qǐng)求,判斷其類型,讀請(qǐng)求轉(zhuǎn)過程(4.2),寫請(qǐng)求
轉(zhuǎn)過程(4.7);
(4.2) 請(qǐng)求重定向模塊根據(jù)重定向數(shù)據(jù)日志表判斷該讀請(qǐng)求所需要 的數(shù)據(jù)是否在代理磁盤陣列中且重定向數(shù)據(jù)日志表中相應(yīng)日志標(biāo)志位為 1,是則轉(zhuǎn)過程(4.3),否則轉(zhuǎn)過程(4.6);
(4.3) 請(qǐng)求重定向模塊根據(jù)重定向數(shù)據(jù)日志表判斷該讀請(qǐng)求所需要 的數(shù)據(jù)是否全部在代理磁盤陣列中,是則轉(zhuǎn)過程(4.4),否則轉(zhuǎn)過程(4.5);
(4.4) 請(qǐng)求重定向模塊將該讀請(qǐng)求發(fā)向代理磁盤陣列,從代理磁盤 陣列讀取數(shù)據(jù),轉(zhuǎn)過程(4.1);(4.5) 請(qǐng)求重定向模塊將該讀請(qǐng)求分別發(fā)向重建中磁盤陣列和代理 磁盤陣列,分別從兩個(gè)磁盤陣列讀取部分?jǐn)?shù)據(jù),組合后返回給用戶,轉(zhuǎn)
過程(4.1);
(4.6) 請(qǐng)求重定向模塊將該讀請(qǐng)求發(fā)向重建中磁盤陣列,從重建中
磁盤陣列讀取數(shù)據(jù),轉(zhuǎn)過程(4.1);
(4.7) 請(qǐng)求重定向模塊判斷該寫請(qǐng)求是否命中重定向數(shù)據(jù)日志表, 是則轉(zhuǎn)過程(4.8),否則轉(zhuǎn)過程(4.9);
(4.8) 請(qǐng)求重定向模塊將該寫請(qǐng)求所命中的日志從重定向數(shù)據(jù)日志 表中刪除,繼續(xù)過程(4.9);
(4.9) 請(qǐng)求重定向模塊將該寫請(qǐng)求中的數(shù)據(jù)寫入到重建中磁盤陣列, 轉(zhuǎn)過程(4.1)。
所述的磁盤陣列的數(shù)據(jù)重建方法,其特征在于
所述重定向數(shù)據(jù)日志表包括M條日志,每條日志由4個(gè)數(shù)據(jù)項(xiàng)構(gòu)成;
各數(shù)據(jù)項(xiàng)依次為被重定向數(shù)據(jù)在重建中磁盤陣列的塊偏移地址、被重定 向數(shù)據(jù)在代理磁盤陣列上的塊偏移地址、被重定向數(shù)據(jù)的長度以及標(biāo)志 位,標(biāo)志位標(biāo)識(shí)該被重定向數(shù)據(jù)是否為寫數(shù)據(jù),當(dāng)它為1時(shí)表示是來自
用戶寫請(qǐng)求的數(shù)據(jù),當(dāng)它為0時(shí)表示是從重建中磁盤陣列重定向到代理 磁盤陣列的讀請(qǐng)求的數(shù)據(jù);
所述非熱點(diǎn)數(shù)據(jù)鏈表包括N條表項(xiàng),每條表項(xiàng)由被重定向數(shù)據(jù)在重 建中磁盤陣列的塊偏移地址、被重定向數(shù)據(jù)的長度2個(gè)數(shù)據(jù)項(xiàng)依次構(gòu)成; M、 N為不小于1的自然數(shù)。
本發(fā)明基于一個(gè)普遍存在的現(xiàn)象,即磁盤陣列在重建階段中,重建 請(qǐng)求和用戶請(qǐng)求同時(shí)爭搶固有的磁盤資源,導(dǎo)致重建時(shí)間很長,而且用 戶的響應(yīng)時(shí)間也很長。本發(fā)明通過將磁盤陣列重建階段收到的用戶請(qǐng)求重定向到代理磁盤陣列,減少了對(duì)重建磁盤陣列的用戶訪問強(qiáng)度,減輕 了重建請(qǐng)求和用戶請(qǐng)求爭搶磁盤資源的矛盾,從而加快了重建速度并且 減少了用戶訪問的響應(yīng)時(shí)間。另外,本發(fā)明僅僅改變了用戶請(qǐng)求的處理 方法,并沒有改變重建的流程或磁盤陣列的數(shù)據(jù)分布方法,故可以很方 便地優(yōu)化各種傳統(tǒng)的磁盤陣列的重建方法,適用于構(gòu)造具有高性能,高 可用性和高可靠性的基于磁盤陣列的存儲(chǔ)系統(tǒng)。


圖1為本發(fā)明各步驟關(guān)系示意圖2為本發(fā)明的重定向數(shù)據(jù)日志表中一條日志的數(shù)據(jù)項(xiàng)示意圖3為本發(fā)明的非熱點(diǎn)數(shù)據(jù)鏈表中一條表項(xiàng)的數(shù)據(jù)項(xiàng)示意圖4為重建步驟示意圖5為重建階段請(qǐng)求處理步驟示意圖6為數(shù)據(jù)回收步驟示意圖7為回收階段請(qǐng)求處理步驟示意圖。
具體實(shí)施例方式
下面結(jié)合附圖對(duì)本發(fā)明進(jìn)一步詳細(xì)說明。
圖1為本發(fā)明各步驟關(guān)系示意圖當(dāng)磁盤陣列中成員磁盤出現(xiàn)故障 時(shí),取出故障磁盤,加入新的替換磁盤后,同時(shí)進(jìn)入重建步驟和重建階 段的請(qǐng)求處理步驟,重建完成后同時(shí)進(jìn)入數(shù)據(jù)回收步驟和回收階段的請(qǐng) 求處理步驟,直至回收完成。
如圖2所示,重定向數(shù)據(jù)日志表中,每條日志由4個(gè)數(shù)據(jù)項(xiàng)構(gòu)成;
各數(shù)據(jù)項(xiàng)依次為被重定向數(shù)據(jù)在重建中磁盤陣列的塊偏移地址D、被重 定向數(shù)據(jù)在代理磁盤陣列上的塊偏移地址S、被重定向數(shù)據(jù)的長度L以 及標(biāo)志位F,標(biāo)志位標(biāo)識(shí)該被重定向數(shù)據(jù)是否為寫數(shù)據(jù),當(dāng)它為1時(shí)表示是來自用戶寫請(qǐng)求的數(shù)據(jù),當(dāng)它為0時(shí)表示是從重建中磁盤陣列重定向 到代理磁盤陣列的讀請(qǐng)求的數(shù)據(jù)。
如圖3所示,非熱點(diǎn)數(shù)據(jù)鏈表中,每條表項(xiàng)由被重定向數(shù)據(jù)在重建 中磁盤陣列的塊偏移地址D、被重定向數(shù)據(jù)的長度L兩個(gè)數(shù)據(jù)項(xiàng)依次構(gòu) 成。
圖4為重建步驟示意圖,進(jìn)行下述過程-
重建模塊重建某一條帶時(shí),讀取磁盤陣列除替換磁盤外所有幸存磁 盤上位于某條帶的數(shù)據(jù)塊,計(jì)算它們的奇偶校驗(yàn),將結(jié)果寫入新加入的 替換磁盤中位于該條帶的數(shù)據(jù)塊內(nèi)。上述過程重復(fù)執(zhí)行,直至該磁盤陣 列上所有條帶都重建完畢,轉(zhuǎn)數(shù)據(jù)回收步驟。
圖5為重建階段請(qǐng)求處理步驟示意圖,進(jìn)行下述過程
重建中磁盤陣列首先判斷是否所有條帶都重建完畢,是則轉(zhuǎn)回收階
段請(qǐng)求處理步驟;否則等待來自上層的用戶讀寫請(qǐng)求,判斷該請(qǐng)求的類 型,如果該請(qǐng)求是讀請(qǐng)求則請(qǐng)求重定向模塊根據(jù)重定向數(shù)據(jù)日志表判斷 該讀請(qǐng)求所需要的數(shù)據(jù)是否在代理磁盤陣列中,是則根據(jù)重定向數(shù)據(jù)日 志表判斷該讀請(qǐng)求所需要的數(shù)據(jù)是否全部在代理磁盤陣列中,是則該讀 請(qǐng)求發(fā)向代理磁盤陣列,從代理磁盤陣列讀取數(shù)據(jù),否則請(qǐng)求重定向模 塊將該讀請(qǐng)求分別發(fā)向重建中磁盤陣列和代理磁盤陣列,分別從兩個(gè)磁 盤陣列讀取部分?jǐn)?shù)據(jù),組合后返回給用戶;如果該讀請(qǐng)求沒有命中重定 向數(shù)據(jù)日志表,請(qǐng)求重定向模塊將該讀請(qǐng)求發(fā)向重建中磁盤陣列,從重 建中磁盤陣列讀取數(shù)據(jù),然后熱點(diǎn)數(shù)據(jù)識(shí)別模塊判斷該讀請(qǐng)求是否命中 非熱點(diǎn)數(shù)據(jù)鏈表,是則請(qǐng)求重定向模塊將讀取的數(shù)據(jù)寫入到代理磁盤陣 列,從非熱點(diǎn)數(shù)據(jù)鏈表中刪除相應(yīng)的信息,并記錄在重定向數(shù)據(jù)日志表 中,且置標(biāo)志位為0;否則熱點(diǎn)數(shù)據(jù)識(shí)別模塊將該讀請(qǐng)求記錄在非熱點(diǎn)數(shù) 據(jù)鏈表中;如果該請(qǐng)求是寫請(qǐng)求,請(qǐng)求重定向模塊判斷該寫請(qǐng)求是否命 中重定向數(shù)據(jù)日志表,是則請(qǐng)求重定向模塊將該數(shù)據(jù)寫入到代理磁盤陣列,并將該數(shù)據(jù)信息記錄在重定向數(shù)據(jù)日志表中,且置標(biāo)志位為l;否則 空間管理模塊從代理磁盤陣列中為該寫請(qǐng)求分配空間,然后請(qǐng)求重定向 模塊將該數(shù)據(jù)寫入到代理磁盤陣列,并將該數(shù)據(jù)信息記錄在重定向數(shù)據(jù) 日志表中,且置標(biāo)志位為l。
圖6為數(shù)據(jù)回收步驟示意圖,進(jìn)行下述過程
數(shù)據(jù)回收模塊判斷重定向數(shù)據(jù)日志表是否為空,是則數(shù)據(jù)回收結(jié)束, 否則數(shù)據(jù)回收模塊從重定向日志表中取出 一條日志,判斷該日志的標(biāo)志 位是否為1,是則從代理磁盤陣列讀取該日志對(duì)應(yīng)的數(shù)據(jù)并寫回到重建磁 盤陣列中,并將該日志從重定向數(shù)據(jù)日志表中刪除,否則只需將該日志 從重定向數(shù)據(jù)日志表中刪除。
圖7為回收階段請(qǐng)求處理步驟示意圖,進(jìn)行下述過程 重建中磁盤陣列首先判斷數(shù)據(jù)回收是否結(jié)束,是則本步驟結(jié)束,否 則等待上層用戶讀寫請(qǐng)求,判斷其類型,如果該請(qǐng)求是讀請(qǐng)求,則請(qǐng)求 重定向模塊根據(jù)重定向數(shù)據(jù)日志表判斷該讀請(qǐng)求所需要的數(shù)據(jù)是否在代 理磁盤陣列中且重定向數(shù)據(jù)日志表中相應(yīng)日志標(biāo)志位為1,是則根據(jù)重定 向數(shù)據(jù)日志表判斷該讀請(qǐng)求所需要的數(shù)據(jù)是否全部在代理磁盤陣列中, 是則將該讀請(qǐng)求發(fā)向代理磁盤陣列,從代理磁盤陣列讀取數(shù)據(jù),否則請(qǐng) 求重定向模塊將該讀請(qǐng)求分別發(fā)向重建中磁盤陣列和代理磁盤陣列,分 別從兩個(gè)磁盤陣列讀取部分?jǐn)?shù)據(jù),組合后返回給用戶;如果該讀請(qǐng)求沒 有命中重定向數(shù)據(jù)日志表或者標(biāo)志位不為1,請(qǐng)求重定向模塊將該讀請(qǐng)求 發(fā)向重建中磁盤陣列,從重建中磁盤陣列讀取數(shù)據(jù);如果該請(qǐng)求是寫請(qǐng) 求,重定向模塊判斷該請(qǐng)求是否命中重定向數(shù)據(jù)日志表,是則請(qǐng)求重定 向模塊將該請(qǐng)求所命中的日志從重定向數(shù)據(jù)日志表中刪除,并將該請(qǐng)求 中的數(shù)據(jù)寫入到重建中磁盤陣列,否則只需將該請(qǐng)求中的數(shù)據(jù)寫入到重 建中磁盤陣列。
權(quán)利要求
1. 一種磁盤陣列的數(shù)據(jù)重建方法,由重建階段和回收階段順序組成,在重建中磁盤陣列之外設(shè)置代理磁盤陣列,重建中磁盤陣列上設(shè)置用戶控制接口、重建模塊、空間管理模塊、熱點(diǎn)數(shù)據(jù)識(shí)別模塊、請(qǐng)求重定向模塊、數(shù)據(jù)回收模塊以及重定向數(shù)據(jù)日志表和非熱點(diǎn)數(shù)據(jù)鏈表;所述重建階段包括并行的重建步驟和重建階段請(qǐng)求處理步驟,回收階段包括并行的數(shù)據(jù)回收步驟和回收階段請(qǐng)求處理步驟;(1)所述重建步驟,進(jìn)行下述過程(1. 1)當(dāng)磁盤陣列中成員磁盤出現(xiàn)故障時(shí),取出故障磁盤,加入新的替換磁盤,繼續(xù)過程(1.2);(1. 2)重建模塊讀取磁盤陣列除替換磁盤外所有幸存磁盤上位于某條帶的數(shù)據(jù)塊,計(jì)算它們的奇偶校驗(yàn),將結(jié)果寫入新加入的替換磁盤中位于該條帶的數(shù)據(jù)塊內(nèi),轉(zhuǎn)過程(1.3);(1. 3)重復(fù)執(zhí)行(1.2),直至磁盤陣列上所有條帶都重建完畢,轉(zhuǎn)步驟(3);(2)所述重建階段請(qǐng)求處理步驟,進(jìn)行下述過程(2. 1)重建中磁盤陣列判斷是否所有條帶都重建完畢,是則轉(zhuǎn)步驟(4);否則等待上層用戶讀寫請(qǐng)求,判斷其類型,讀請(qǐng)求轉(zhuǎn)過程(2.2),寫請(qǐng)求轉(zhuǎn)過程(2.10);(2. 2)請(qǐng)求重定向模塊根據(jù)重定向數(shù)據(jù)日志表判斷該讀請(qǐng)求所需要的數(shù)據(jù)是否在代理磁盤陣列中,是則轉(zhuǎn)過程(2.3),否則轉(zhuǎn)過程(2.6);(2. 3)請(qǐng)求重定向模塊根據(jù)重定向數(shù)據(jù)日志表判斷該讀請(qǐng)求所需要的數(shù)據(jù)是否全部在代理磁盤陣列中,是則轉(zhuǎn)過程(2.4),否則轉(zhuǎn)過程(2.5);(2. 4)請(qǐng)求重定向模塊將該讀請(qǐng)求發(fā)向代理磁盤陣列,從代理磁盤陣列讀取數(shù)據(jù),轉(zhuǎn)過程(2.1);(2. 5)請(qǐng)求重定向模塊將該讀請(qǐng)求分別發(fā)向重建中磁盤陣列和代理磁盤陣列,分別從兩個(gè)磁盤陣列讀取部分?jǐn)?shù)據(jù),組合后返回給用戶,轉(zhuǎn)過程(2.1);(2. 6)請(qǐng)求重定向模塊將該讀請(qǐng)求發(fā)向重建磁盤陣列,從重建中磁盤陣列讀取數(shù)據(jù),進(jìn)行過程(2.7);(2. 7)熱點(diǎn)數(shù)據(jù)識(shí)別模塊判斷該讀請(qǐng)求是否命中非熱點(diǎn)數(shù)據(jù)鏈表,是則轉(zhuǎn)過程(2.8),否則轉(zhuǎn)過程(2.9);(2. 8)請(qǐng)求重定向模塊將讀取的數(shù)據(jù)寫入到代理磁盤陣列,從非熱點(diǎn)數(shù)據(jù)鏈表中刪除相應(yīng)的信息,并記錄在重定向數(shù)據(jù)日志表中,且置標(biāo)志位為0,轉(zhuǎn)過程(2.1);(2. 9)熱點(diǎn)數(shù)據(jù)識(shí)別模塊將該讀請(qǐng)求記錄在非熱點(diǎn)數(shù)據(jù)鏈表中,轉(zhuǎn)過程(2.1);(2. 10)請(qǐng)求重定向模塊判斷該寫請(qǐng)求是否命中重定向數(shù)據(jù)日志表,是則轉(zhuǎn)過程(2.12),否則轉(zhuǎn)過程(2.11);(2. 11)空間管理模塊從代理磁盤陣列中為該寫請(qǐng)求分配空間,繼續(xù)過程(2.12);(2. 12)請(qǐng)求重定向模塊將該寫請(qǐng)求中的數(shù)據(jù)寫入到代理磁盤陣列,并將該數(shù)據(jù)信息記錄在重定向數(shù)據(jù)日志表中,且置標(biāo)志位為1,轉(zhuǎn)過程(2.1);(3)所述數(shù)據(jù)回收步驟,進(jìn)行下述過程(3. 1)數(shù)據(jù)回收模塊判斷重定向數(shù)據(jù)日志表是否為空,是則數(shù)據(jù)回收結(jié)束,否則轉(zhuǎn)過程(3.2);(3. 2)數(shù)據(jù)回收模塊從重定向日志表中取出一條日志,判斷該日志的標(biāo)志位是否為1,是則轉(zhuǎn)過程(3.3),否則轉(zhuǎn)過程(3.4);(3. 3)數(shù)據(jù)回收模塊從代理磁盤陣列讀取該日志對(duì)應(yīng)的數(shù)據(jù)并寫回到重建中磁盤陣列中,繼續(xù)過程(3.4);(3. 4)數(shù)據(jù)回收模塊將該日志從重定向數(shù)據(jù)日志表中刪除,轉(zhuǎn)過程(3.1);(4)所述回收階段請(qǐng)求處理步驟,進(jìn)行下述過程(4. 1)重建中磁盤陣列判斷數(shù)據(jù)回收是否結(jié)束,是則本步驟結(jié)束,否則等待上層用戶讀寫請(qǐng)求,判斷其類型,讀請(qǐng)求轉(zhuǎn)過程(4.2),寫請(qǐng)求轉(zhuǎn)過程(4.7);(4. 2)請(qǐng)求重定向模塊根據(jù)重定向數(shù)據(jù)日志表判斷該讀請(qǐng)求所需要的數(shù)據(jù)是否在代理磁盤陣列中且重定向數(shù)據(jù)日志表中相應(yīng)日志標(biāo)志位為1,是則轉(zhuǎn)過程(4.3),否則轉(zhuǎn)過程(4.6);(4. 3)請(qǐng)求重定向模塊根據(jù)重定向數(shù)據(jù)日志表判斷該讀請(qǐng)求所需要的數(shù)據(jù)是否全部在代理磁盤陣列中,是則轉(zhuǎn)過程(4.4),否則轉(zhuǎn)過程(4.5);(4. 4)請(qǐng)求重定向模塊將該讀請(qǐng)求發(fā)向代理磁盤陣列,從代理磁盤陣列讀取數(shù)據(jù),轉(zhuǎn)過程(4.1);(4. 5)請(qǐng)求重定向模塊將該讀請(qǐng)求分別發(fā)向重建中磁盤陣列和代理磁盤陣列,分別從兩個(gè)磁盤陣列讀取部分?jǐn)?shù)據(jù),組合后返回給用戶,轉(zhuǎn)過程(4.1);(4. 6)請(qǐng)求重定向模塊將該讀請(qǐng)求發(fā)向重建中磁盤陣列,從重建中磁盤陣列讀取數(shù)據(jù),轉(zhuǎn)過程(4.1);(4. 7)請(qǐng)求重定向模塊判斷該寫請(qǐng)求是否命中重定向數(shù)據(jù)日志表,是則轉(zhuǎn)過程(4.8),否則轉(zhuǎn)過程(4.9);(4. 8)請(qǐng)求重定向模塊將該寫請(qǐng)求所命中的日志從重定向數(shù)據(jù)日志表中刪除,繼續(xù)過程(4.9);(4. 9)請(qǐng)求重定向模塊將該寫請(qǐng)求中的數(shù)據(jù)寫入到重建中磁盤陣列,轉(zhuǎn)過程(4.1)。
2.如權(quán)利要求l所述的磁盤陣列的數(shù)據(jù)重建方法,其特征在于 所述重定向數(shù)據(jù)日志表包括M條日志,每條日志由4個(gè)數(shù)據(jù)項(xiàng)構(gòu)成; 各數(shù)據(jù)項(xiàng)依次為被重定向數(shù)據(jù)在重建中磁盤陣列的塊偏移地址、被重定 向數(shù)據(jù)在代理磁盤陣列上的塊偏移地址、被重定向數(shù)據(jù)的長度以及標(biāo)志 位,標(biāo)志位標(biāo)識(shí)該被重定向數(shù)據(jù)是否為寫數(shù)據(jù),當(dāng)它為1時(shí)表示是來自 用戶寫請(qǐng)求的數(shù)據(jù),當(dāng)它為0時(shí)表示是從重建中磁盤陣列重定向到代理 磁盤陣列的讀請(qǐng)求的數(shù)據(jù);所述非熱點(diǎn)數(shù)據(jù)鏈表包括N條表項(xiàng),每條表項(xiàng)由被重定向數(shù)據(jù)在重 建中磁盤陣列的塊偏移地址、被重定向數(shù)據(jù)的長度2個(gè)數(shù)據(jù)項(xiàng)依次構(gòu)成; M、 N為不小于1的自然數(shù)。
全文摘要
磁盤陣列的數(shù)據(jù)重建方法,屬于計(jì)算機(jī)數(shù)據(jù)存儲(chǔ)方法,解決磁盤陣列數(shù)據(jù)重建耗時(shí)過多、影響系統(tǒng)讀寫性能和可靠性的問題。本發(fā)明由重建階段和回收階段順序組成,在重建中磁盤陣列之外設(shè)置代理磁盤陣列,重建中磁盤陣列上設(shè)置用戶控制接口、重建模塊、空間管理模塊、熱點(diǎn)數(shù)據(jù)識(shí)別模塊、請(qǐng)求重定向模塊、數(shù)據(jù)回收模塊以及重定向數(shù)據(jù)日志表和非熱點(diǎn)數(shù)據(jù)鏈表;重建階段包括并行的重建步驟和重建階段請(qǐng)求處理步驟,回收階段包括并行的數(shù)據(jù)回收步驟和回收階段請(qǐng)求處理步驟。本發(fā)明加快重建速度并且減少用戶訪問響應(yīng)時(shí)間,未改變重建流程或磁盤陣列數(shù)據(jù)分布方式,適用于構(gòu)造具有高性能,高可用性和高可靠性的存儲(chǔ)系統(tǒng)。
文檔編號(hào)G06F11/10GK101436149SQ20081023690
公開日2009年5月20日 申請(qǐng)日期2008年12月19日 優(yōu)先權(quán)日2008年12月19日
發(fā)明者丹 馮, 吳素貞, 曾令仿, 波 毛, 磊 田, 陳儉喜 申請(qǐng)人:華中科技大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1