一種消除局部并行中小寫操作的分布校驗式磁盤陣列的制作方法
【專利摘要】本發(fā)明涉及一種消除局部并行中小寫操作的分布校驗式磁盤陣列,適用于連續(xù)數(shù)據(jù)存儲,屬于獨立硬盤冗余陣列技術領域。本發(fā)明針對連續(xù)數(shù)據(jù)存儲的特點,設計實現(xiàn)一種可消除局部并行中小寫操作的單盤容錯分布校驗式硬盤陣列Ripple?RAID 5,主要包括:存儲數(shù)據(jù)在Ripple?RAID 5上的布局方式、基于流水技術漸進生成校驗的寫操作方法、數(shù)據(jù)容錯等內容。硬盤陣列Ripple?RAID 5在單盤容錯條件下,既保持了局部并行的節(jié)能性,又解決了局部并行帶來的小寫問題,能夠極大提高寫性能和整體性能,具有突出的節(jié)能效率。
【專利說明】
一種消除局部并行中小寫操作的分布校驗式磁盤陣列
技術領域
[0001] 本發(fā)明涉及一種消除局部并行中小寫操作的分布校驗式磁盤陣列,適用于連續(xù)數(shù) 據(jù)存儲,屬于獨立硬盤冗余陣列技術領域。
【背景技術】
[0002] 硬盤包括磁盤和固態(tài)盤(Solid State Disk,SSD),由于磁盤是海量數(shù)據(jù)存儲的主 體,因此這里的硬盤主要指磁盤。
[0003] 為了提高存儲數(shù)據(jù)的安全性,改善存儲系統(tǒng)的輸入、輸出性能,人們設計了各種類 型的獨立硬盤冗余陣列(Redundant Arrays of Independent Disks JAIDhRAID技術使用 特定的硬件或軟件,把多個物理存儲設備如磁盤、SSD聯(lián)合起來,形成一個統(tǒng)一的邏輯存儲 設備。
[0004] RAID中常用的技術術語如下:
[0005] 條帶:磁盤陣列中不同盤上的位置相關的分塊的集合,是組織不同盤上條塊的單 位。
[0006] 條帶化:把一段連續(xù)數(shù)據(jù)分割成相同大小的數(shù)據(jù)塊,把每塊數(shù)據(jù)分別寫入到磁盤 陣列的不同盤上的方法。
[0007] 鏡像:把原數(shù)據(jù)復制到一個或更多盤上。
[0008] 容錯:利用某種運算,如異或運算,生成冗余的校驗數(shù)據(jù)并保存。當硬盤出現(xiàn)故障 丟失數(shù)據(jù)時,可利用校驗數(shù)據(jù)進行數(shù)據(jù)恢復。異或運算通常用" "表示。
[0009] 單盤容錯:利用校驗數(shù)據(jù)和其它盤上的數(shù)據(jù),可恢復RAID中任意一塊故障盤上的 數(shù)據(jù)。
[0010] 分布校驗:校驗數(shù)據(jù)按一定規(guī)律分布在構成RAID的各個盤上。
[0011]局部并行:陣列中僅部分硬盤并行,而不是全部硬盤并行,能夠提供合適的性能, 并且便于調度其余硬盤待機節(jié)能。
[0012] RAID中的寫操作分3種情況:①寫數(shù)據(jù)恰好與RAID中的整個條帶對齊,稱為完全 寫;②寫數(shù)據(jù)不能覆蓋整個條帶,但不少于整個條帶的1/2時,稱為重構寫;③寫數(shù)據(jù)不足整 個條帶1/2時,稱為小寫,也叫"讀-改-寫",寫新數(shù)據(jù)時需要先讀取對應的舊數(shù)據(jù)、舊校驗數(shù) 據(jù),與新數(shù)據(jù)一起生成新校驗數(shù)據(jù)后,再寫入新校驗數(shù)據(jù)。
[0013] 常用的RAID有RAID0、RAID1、RAID5等。其中RAID0不具有冗余校驗能力,RAID1只 對硬盤做鏡像。RAID5以條帶的方式向陣列中的硬盤寫數(shù)據(jù),校驗數(shù)據(jù)分布存儲在陣列中的 各個盤上,通過全局并行提高訪問速度和保證讀寫并發(fā)性,具有單盤容錯能力。
[0014]然而,視頻監(jiān)控、備份、歸檔等連續(xù)數(shù)據(jù)存儲應用,以順序數(shù)據(jù)訪問為主,對隨機性 能要求較低,不需要全局并行提供的高性能。為此,發(fā)明專利ZL201010256899.5、 ZL201010256665.0、ZL201010256711.7、ZL201010256908.0、ZL201010256679.2、 ZL201010256699.X、ZL201010575578.1、ZL201010575625.2、ZL201010575611.0等提出多種 局部并行數(shù)據(jù)布局,把采用該類局部并行數(shù)據(jù)布局的節(jié)能RAID統(tǒng)稱為S-RAID。
[0015] S-RAID基本思想是:①把陣列中的存儲區(qū)分成若干組,組內并行以提供合適的性 能,分組便于調度部分硬盤運行而其余硬盤待機節(jié)能;②采用貪婪編址法,在順序訪問模式 下,保證讀寫操作在較長時間內分布在部分確定的硬盤上,其它硬盤可以長時間待機節(jié)能。
[0016] S-RAID基本執(zhí)行小寫操作,原因如下:局部并行節(jié)能的核心是把讀寫操作集中在 部分并行工作的硬盤上,從而調度其它硬盤待機節(jié)能。小寫可有效減少活動硬盤的數(shù)量,即 使有機會執(zhí)行重構寫,也依然會執(zhí)行小寫,因為重構寫需要啟動所有硬盤,會使S-RAID喪失 節(jié)能性。小寫中寫操作引入了等量的、額外的讀操作,因此嚴重降低寫性能。
[0017] S-RAID主要面向視頻監(jiān)控、備份、歸檔等連續(xù)數(shù)據(jù)存儲應用,該類應用以寫操作為 主,這導致S-RAID的小寫問題異常突出。小寫使S-RAID中單位硬盤的有效寫帶寬,極限值 (100%順序寫時)不到其最大寫帶寬的一半。為了提供額定的寫性能,S-RAID必須運行更多 硬盤彌補小寫帶來的性能損失,會消耗更多能量,其節(jié)能效率亟待提高。
【發(fā)明內容】
[0018] 本發(fā)明的目的是克服已有技術存在的不足,在提高存儲系統(tǒng)節(jié)能效率、改善存儲 性能的前提下,提出一種消除局部并行中小寫操作的分布校驗式磁盤陣列。所述消除局部 并行中小寫操作的分布校驗式磁盤陣列,記作Ripple-RAID 5。
[0019] 本發(fā)明的目的是通過下述技術方案實現(xiàn)的。
[0020] 本發(fā)明提出的一種消除局部并行中小寫操作的分布校驗式磁盤陣列,實現(xiàn)主要包 括數(shù)據(jù)布局、寫操作方法、數(shù)據(jù)容錯等3方面內容,其中寫操作方法又包括地址映射、異地數(shù) 據(jù)更新、基于流水技術漸進生成校驗等內容。
[0021] 1 ?數(shù)據(jù)布局
[0022] 硬盤陣列Ripple-RAID 5包含N塊硬盤,N彡3且為正整數(shù)。每個硬盤平均分成kXN+ 1個存儲塊,k為大于0的整數(shù)(一般在1到幾十范圍內取值),偏移量相同的N個存儲塊組成一 個條帶,共組成k X N+1個條帶,任取其中一個條帶作為影子條帶,其余為基本條帶。
[0023] 每個基本條帶包含1個校驗存儲塊(簡稱校驗塊),N_1個數(shù)據(jù)存儲塊(簡稱數(shù)據(jù) 塊)?;緱l帶i中的校驗塊位于硬盤N-1-j ;如果j+v〈N-l,則第v個數(shù)據(jù)塊位于硬盤v,否則 位于硬盤v+1,其中0彡i〈(kXN),j = i MOD N(M0D為模運算),0彡v〈N-l。
[0024] 每個數(shù)據(jù)塊、校驗塊進一步劃分為M個大小相等的子塊,每個子塊包含若干個地址 連續(xù)的扇區(qū),分別稱為數(shù)據(jù)子塊(記作Strip)和校驗子塊(記作PStrip)。每個基本條帶中偏 移量相同的子塊組成一個子條帶(記作Stripe),這樣每個基本條帶中包含M個大小相同的 子條帶。子條帶Stripe m的校驗子塊PStrip m由其N-1個數(shù)據(jù)子塊Strip m異或生成,見式 ⑴。
[0025] N-2 - PSli'ip/??= ? Strip/?7 ( 0 < in < M ) ( 1 )
[0026] 其中,〇<m<M。
[0027] 為了提供合適的性能,把基本條帶中的N-1個數(shù)據(jù)塊按順序分成P組,每組包含Q個 數(shù)據(jù)塊(P、Q為大于〇的整數(shù),且滿足PXQ = N_1,Q值根據(jù)實際存儲帶寬需求確定),這樣每個 子條帶中的數(shù)據(jù)子塊也被分成P組,每組包含Q個數(shù)據(jù)子塊,每個子條帶中僅組內的Q個數(shù)據(jù) 子塊提供并行性,不是全部數(shù)據(jù)子塊提供并行性。
[0028] Ripple-RAID 5采用適度貪婪的地址分配策略,從基本條帶0內、組0內的首個數(shù)據(jù) 子塊開始,按如下規(guī)則編址:①同一組內,同一子條帶內、編號相鄰數(shù)據(jù)塊內的數(shù)據(jù)子塊的 地址相鄰;②同一基本條帶內,編號相鄰的兩個子條帶,前一個在組內的末尾數(shù)據(jù)子塊,與 后一個在該組內的起始數(shù)據(jù)子塊的地址相鄰;③同一基本條帶內,編號相鄰的組的地址相 鄰;④編號相鄰的基本條帶的地址相鄰。(注:上述基本條帶、組、數(shù)據(jù)塊均從〇開始編號) [0029] Ripple-RAID 5僅對基本條帶進行編址,影子條帶不參與編址,僅供Ripple-RAID 5內部使用,對上層應用是透明的,其功能在寫操作方法中會詳細介紹。上述數(shù)據(jù)布局和編 址方式,既具有局部并行的節(jié)能性,又通過引入特殊功能的影子條帶,同時具有解決局部 并行中小寫問題的基本條件。
[0030] 2寫操作方法
[0031] Ripple-RAID 5的寫操作,綜合運用了地址映射、異地數(shù)據(jù)更新、漸進式生成校驗 等方法,生成校驗數(shù)據(jù)時不需讀取舊數(shù)據(jù);進一步采用流水技術讀取已有校驗(與舊校驗不 同)、寫入新校驗時,可有效解決局部并行帶來的小寫問題。此外,地址映射把非順序寫轉換 為順序寫,可進一步提升Ripple-RAID 5的寫性能。
[0032] 2.1地址映射
[0033]上層應用程序發(fā)來的讀寫請求地址,稱為虛擬地址;數(shù)據(jù)在Ripple-RAID 5存儲空 間內的存儲地址(Ripple-RAID 5在RAID級的編址,不包括影子條帶),稱為物理地址。地址 映射實現(xiàn)虛擬地址到物理地址的轉換:把非連續(xù)(可能部分連續(xù))的虛擬地址映射為連續(xù)的 物理地址,并記錄映射關系到地址映射表。地址映射后,寫操作在物理地址空間內完全連 續(xù),Ripple-RAID 5完全執(zhí)行順序寫。
[0034] Ripple-RAID 5非常適合進行地址映射,原因如下:①連續(xù)數(shù)據(jù)存儲應用以寫操作 為主,順序寫可以顯著提高寫性能和整體性能;②讀操作以數(shù)據(jù)回放為主,即重復以前某時 間段內的寫操作,例如視頻回放等,通??色@得與寫性能接近的讀性能;③以寫新數(shù)據(jù)為 主,很少進行改寫操作,可以忽略改寫操作引發(fā)的垃圾回收,或在負載較輕時進行垃圾回 收。
[0035]以若干個連續(xù)扇區(qū)為單位進行地址映射,稱為扇區(qū)組映射方式。該方式多扇區(qū)映 射時效率高,但改寫組中部分數(shù)據(jù)時,需要讀取未修改數(shù)據(jù),與改寫數(shù)據(jù)一起重新映射。 Ripple-RAID 5很少進行改寫操作,適合采用該映射方式。地址映射信息需要作為元數(shù)據(jù)保 存,大小為存儲容量的8/( 1024 X x),其中8個字節(jié)記錄一個扇區(qū)組地址,x為扇區(qū)組大小,以 KB為單位。
[0036] 2.2異地數(shù)據(jù)更新
[0037] Ripple-RAID 5內部執(zhí)行異地數(shù)據(jù)更新,具體執(zhí)行過程如下。
[0038] (1)向物理地址A所在的基本條帶i寫數(shù)據(jù)時,數(shù)據(jù)并不直接寫入該條帶,而是寫入 地址A的影子地址A'(位于影子條帶,與地址A具有相同的條帶內地址偏移量);
[0039] (2)如果影子條帶沒寫滿,轉到(1);
[0040] (3)否則,用影子條帶替換基本條帶i,即把影子條帶作為基本條帶i參與編址,實 現(xiàn)影子地址到物理地址的轉換,本次循環(huán)結束;
[0041] (4)被替換的原基本條帶i,此時沒有參與編址,在下一循環(huán)中作為影子條帶。
[0042] 地址映射后Ripple-RAID 5執(zhí)行順序寫,依次向每個基本條帶寫數(shù)據(jù),不會同時向 兩個基本條帶寫數(shù)據(jù),也不會在一個基本條帶沒有寫滿的情況下,向另一個基本條帶寫數(shù) 據(jù)。
[0043] 2.3漸進式生成校驗
[0044] 影子條帶的校驗數(shù)據(jù)是根據(jù)本次循環(huán)中已寫數(shù)據(jù)生成的,稱為局部校驗數(shù)據(jù)(不 同于舊校驗)。寫操作時,根據(jù)寫數(shù)據(jù)、已有局部校驗數(shù)據(jù)計算新的局部校驗數(shù)據(jù),不需要讀 取舊數(shù)據(jù)。隨著寫數(shù)據(jù)的增加,局部校驗數(shù)據(jù)的校驗范圍逐漸擴大,直至覆蓋整個影子條 帶。新數(shù)據(jù)的寫入、局部校驗數(shù)據(jù)的校驗范圍,如水中漣漪一樣向前推進,因此該硬盤陣列 稱為Ripple-RAID 5。
[0045] I.相關流水方式
[0046] 漸進生成校驗數(shù)據(jù)時,不需讀取舊數(shù)據(jù),僅需讀取局部校驗數(shù)據(jù)??梢栽黾右粋€輔 助存儲設備,與影子條帶中局部校驗數(shù)據(jù)所在磁盤,以流水方式生成新校驗,可有效消除讀 局部校驗數(shù)據(jù)對寫性能的影響。影子條帶中校驗數(shù)據(jù)所在磁盤,與輔助存儲設備一起進行 流水,稱該流水方式為相關流水。
[0047] 假設每個基本條帶被分成3個組,分別記作組0、組1和組2,輔助存儲設備簡稱輔 存,容量與校驗塊相同,基于相關流水漸進生成校驗的寫過程如下:
[0048] (1)向任一基本條帶(稱原條帶)的組0寫數(shù)據(jù)時,數(shù)據(jù)實際寫入影子條帶的組0,并 生成組〇的校驗,寫入影子條帶的校驗塊;
[0049] (2)組0寫滿后,向原條帶的組1寫數(shù)據(jù)時,數(shù)據(jù)實際寫入影子條帶的組1,并根據(jù)寫 數(shù)據(jù)、局部校驗(組〇的校驗,在影子條帶的校驗塊),生成新校驗(組〇、組1的校驗)寫入輔 存;
[0050] (3)組1寫滿后,向原條帶的組2寫數(shù)據(jù)時,數(shù)據(jù)實際寫入影子條帶的組2,并根據(jù)寫 數(shù)據(jù)、局部校驗(組〇、組1的校驗,在輔存),生成新校驗(組〇、組1、組2的校驗)寫入影子條帶 的校驗塊;
[0051] (4)影子條帶寫滿后,令其替換原條帶參與編址,被替換的原條帶不參與編址,作 為下一循環(huán)中的影子條帶。
[0052]為保證最后生成的校驗數(shù)據(jù)寫入影子條帶的校驗塊,需按如下規(guī)則流水:若影子 條帶的組數(shù)為奇數(shù),首先向校驗塊寫校驗數(shù)據(jù);否則首先向輔存寫校驗數(shù)據(jù)。當輔存采用低 功耗的SSD時,其能耗增加可忽略。
[0053] n .基于SSD的非流水方式
[0054] 優(yōu)選的,采用低功耗的SSD作為輔存時,可不采用流水方式生成校驗數(shù)據(jù):從輔存 讀局部校驗數(shù)據(jù),新校驗數(shù)據(jù)也寫入輔存,直至寫影子條帶的最后一組時,從輔存讀局部校 驗數(shù)據(jù),并將新校驗數(shù)據(jù)寫入影子條帶的校驗塊,稱該方式為基于SSD的非流水方式。該方 式中校驗塊所在磁盤也可待機節(jié)能,節(jié)能效果將進一步提升。生成校驗時需要同時讀、寫輔 存,因此輔存可能成為性能瓶頸。該方式中的輔存也可采用磁盤。
[0055] m.無關流水方式
[0056]優(yōu)選的,為了使影子條帶中校驗塊所在硬盤大部分時間也可待機節(jié)能,進一步提 高節(jié)能效率,同時又不影響性能,可采用如下流水方式:設置兩個輔助存儲設備,分別記作 輔存1和輔存2,容量均與校驗塊相同,輪流從其中之一讀局部校驗數(shù)據(jù),向另一個寫新校驗 數(shù)據(jù),直至生成影子條帶的最終校驗數(shù)據(jù),再將其寫入影子條帶的校驗塊。
[0057] 影子條帶中校驗塊所在磁盤不參與流水,稱該流水方式為無關流水。當輔存1、輔 存2采用低功耗的SSD時,可忽略其能耗增加。無關流水與相關流水相似,僅有以下幾點不 同:
[0058] (1)向組0寫數(shù)據(jù)時,生成的局部校驗數(shù)據(jù)寫入輔存1;
[0059] (2)向組1寫數(shù)據(jù)時,根據(jù)寫數(shù)據(jù)、已有校驗數(shù)據(jù)(在輔存1),生成新校驗數(shù)據(jù)寫入 輔存2;
[0060] (3)向組2寫數(shù)據(jù)時,根據(jù)寫數(shù)據(jù)、已有校驗數(shù)據(jù)(在輔存2),生成新校驗數(shù)據(jù),并把 最終校驗數(shù)據(jù)寫入影子條帶的校驗塊。
[0061 ] 3數(shù)據(jù)容錯
[0062]由數(shù)據(jù)布局得,Ripple-RAID 5包含N個基本條帶和1個影子條帶。按當前狀態(tài)(是 否正在被更新)把基本條帶進一步分為活躍條帶和睡眠條帶,影子條帶的數(shù)據(jù)組織方式與 活躍條帶相同。由于地址映射后執(zhí)行順序寫,在確定時間內只有1個基本條帶正在被更新, 即只有1個活躍條帶,其余基本條帶為睡眠條帶。
[0063]對于故障盤中的每個存儲子塊,根據(jù)其不同位置,按如下方法進行恢復。
[0064]情況1:故障盤中的存儲子塊位于睡眠條帶,由Ripple-RAID 5的寫操作方法得,當 根據(jù)式(1)建立校驗關系后,該睡眠條帶沒有進行任何修改,已建立的校驗關系完整有效。 對同一子條帶內的其它盤上的存儲子塊異或運算,可恢復該存儲子塊。
[0065] 情況2:故障盤中的存儲子塊位于活躍條帶,由寫操作方法得,當根據(jù)式(1)建立校 驗關系后,活躍條帶也沒有被真正修改過(對應的新數(shù)據(jù)實際寫入了影子條帶的對應位 置),已建立的校驗關系完整有效。對同一子條帶內的其它盤上的存儲子塊異或運算,也可 恢復該存儲子塊。
[0066] 情況3:故障盤中的存儲子塊位于影子條帶,對于影子條帶,以最后一次局部并行 寫為分界線,分界線之前為已寫區(qū),其后為待寫區(qū),設分界線位于組P中偏移量為m的數(shù)據(jù)子 塊Strip m之后,(Xp〈P,(Xm〈M。特別強調:當p彡1時,影子條帶校驗塊均為已寫區(qū)。
[0067] I.故障盤中的存儲子塊位于影子條帶的已寫區(qū)
[0068]影子條帶的已寫區(qū)數(shù)據(jù),在影子條帶中具有完整、有效的校驗關系,設存儲子塊位 于影子條帶中的子條帶Stripe k,當(Xk<m時,校驗關系見式(2):
(2)
[0070]當m〈k〈M時(僅當p彡1時存在),校驗關系見式(3):
(3)
[0072] 此時,可根據(jù)所在子條帶的位置,利用式(2)或式(3)恢復故障盤中的存儲子塊。
[0073] n.故障盤中的存儲子塊位于影子條帶的待寫區(qū)
[0074]由Ripple-RAID 5的寫操作方法得,該部分數(shù)據(jù)不是有效數(shù)據(jù),并且沒有參與所在 子條帶的異或運算,因此數(shù)據(jù)恢復時不需要考慮。
[0075] 綜上,Ripple-RAID 5具有單盤容錯能力,其中任意一塊硬盤出現(xiàn)故障丟失數(shù)據(jù) 時,可按上述方法恢復該盤數(shù)據(jù)。分界線(最后一次局部并行寫位置)、影子條帶位置,對數(shù) 據(jù)恢復至關重要,需要記錄到元數(shù)據(jù)中,至少同時存儲在2塊盤上,以確保數(shù)據(jù)恢復正確執(zhí) 行。
[0076] 4讀操作
[0077]對Ripple-RAID 5進行讀操作時,需要根據(jù)上層應用程序發(fā)來的虛擬地址,查找地 址映射表,獲得該虛擬地址對應的物理地址A,①如果地址A位于活躍條帶的已寫區(qū)(與影子 條帶已寫區(qū)具有相同的條帶內起始、終止偏移地址),則從地址A的影子地址A'讀取數(shù)據(jù);② 否則,直接從地址A讀取數(shù)據(jù)。
[0078] 5節(jié)能調度
[0079] Ripple-RAID 5需要對硬盤進行節(jié)能調度,調度空閑硬盤待機節(jié)能,當任務到來時 喚醒待機硬盤工作。
[0080] 有益效果
[0081] 本發(fā)明提出的硬盤陣列Ripple-RAID 5的構建方法,與已有技術比較,具有以下優(yōu) 占.
[0082] (1)保持節(jié)能性的同時,具有突出的寫性能。采用新的局部并行數(shù)據(jù)布局,通過綜 合運用異地數(shù)據(jù)更新、基于流水技術漸進生成校驗等策略,既保持了局部并行的節(jié)能性,又 解決了局部并行中嚴重影響寫性能的小寫問題,極大提高了寫性能。
[0083] (2)可充分發(fā)揮磁盤性能優(yōu)勢。通過地址映射把非順序寫轉換為順序寫,可充分發(fā) 揮磁盤善于順序讀寫的性能優(yōu)勢,進一步提高寫性能。在連續(xù)數(shù)據(jù)存儲中,由于讀操作以回 放為主,即重復先前某段時間內的寫操作,因此通??色@得與寫性能接近的讀性能。
[0084] (3)具有突出的節(jié)能效率。單位磁盤的寫性能極大提高后,當存儲應用需要額定的 寫性能時,Ripple-RAID 5運行更少的磁盤就能夠滿足性能需求,會節(jié)省更多能量;反之,在 運行磁盤數(shù)相同的條件下,Ripple-RAID 5具有更高的性能裕量。
【附圖說明】
[0085]圖1為本發(fā)明的【具體實施方式】中的硬盤陣列Ripple-RAID 5的總體數(shù)據(jù)布局;
[0086]圖2為本發(fā)明的【具體實施方式】中的基本條帶0的子塊劃分與校驗關系示意圖;
[0087]圖3為本發(fā)明的【具體實施方式】中的硬盤陣列Ripple-RAID 5的地址分配示意圖;
[0088] 圖4為本發(fā)明的【具體實施方式】中的基于相關流水的寫操作示意圖;
[0089] 圖5為本發(fā)明的【具體實施方式】中的基于SSD的非流水寫操作示意圖;
[0090] 圖6為本發(fā)明的【具體實施方式】中的基于無關流水的寫操作示意圖;
[0091] 圖7為本發(fā)明的【具體實施方式】中的數(shù)據(jù)容錯示意圖。
【具體實施方式】
[0092]下面結合附圖和具體實施例對本發(fā)明進行詳細說明。
[0093] 本實施例中,硬盤陣列Ripple-RAID 5由5塊磁盤組成,每塊磁盤容量為3TB, Ripple-RAID 5的實現(xiàn)主要包括數(shù)據(jù)布局、寫操作方法、數(shù)據(jù)容錯3部分。
[0094] 1數(shù)據(jù)布局
[0095] 如圖1所示,對5塊磁盤進行條帶劃分,分成6個條帶,任取其一作為影子條帶(這里 取第1個),其余為基本條帶(編號〇~4)。每個基本條帶上有5個存儲塊,每個存儲塊大小為 500GB,其中1個存儲塊為校驗塊,其余4個存儲塊為數(shù)據(jù)塊。基本條帶0的校驗塊位于磁盤4、 基本條帶1的校驗塊位于磁盤3、......、基本條帶4的校驗塊位于磁盤0。(注:1TB = 103GB = 106MB= 109KB,1KB= 1024B)
[0096]每個數(shù)據(jù)塊、校驗塊分成1=1,2500,0000個相等的子塊,子塊大小為4仙(包含8個 地址連續(xù)的扇區(qū),扇區(qū)大小為512字節(jié)),分別稱為數(shù)據(jù)子塊、校驗子塊。每個基本條帶中偏 移量相同的子塊組成M= 1,2500,0000個子條帶。為提供合適性能,每個子條帶的數(shù)據(jù)子塊 被分成2組,每組包含2個數(shù)據(jù)子塊,子條帶內僅組內的2個數(shù)據(jù)子塊并行編址,不是全部數(shù) 據(jù)子塊并行編址。
[0097]圖2為基本條帶0的子塊劃分情況,子條帶1的校驗子塊由該子條帶的4個數(shù)據(jù)子塊 異或運算生成,其數(shù)據(jù)子塊被分成2組,組內的2個數(shù)據(jù)子塊可并行訪問。
[0098]采用適度貪婪的地址分配策略,從基本條帶0內、組0內的首個數(shù)據(jù)子塊開始分配 地址,具體情況見圖3,箭頭連接線兩端的數(shù)據(jù)子塊的地址相鄰,且地址由小到大,影子條帶 不參與編址,僅供Ripple-RAID 5內部使用,對上層應用是透明的。
[0099] 2寫操作方法
[0100] 地址映射時,采用扇區(qū)組映射方式,總存儲容量為10TB(每盤3TBX5塊盤X2/3, 去除的1/3為校驗塊和影子條帶存儲塊,見圖3),扇區(qū)組大小為64KB,8個字節(jié)記錄1個扇區(qū) 組地址,則地址映射信息為10TB X 8B/(64 X 1024B)~1.22GB,運行時基本可以完全調入內 存。
[0101] 本實施例中,每個基本條帶分成了 2個組,每組包含2個存儲塊。為了充分說明寫操 作過程,這里以3個組為例進行說明,分別記作組0、組1和組2。
[0102] I.相關流水方式
[0103] 基于相關流水的寫操作,需要1個輔助存儲設備,簡記為輔存,容量與校驗塊相同, 具體過程如下:
[0104] (1)向任一基本條帶(稱原條帶)的組0寫數(shù)據(jù)時,數(shù)據(jù)實際寫入影子條帶的組0,并 異或運算生成組〇的校驗數(shù)據(jù),寫入影子條帶的校驗塊,見圖4(a);
[0105] (2)組0寫滿后,向原條帶的組1寫數(shù)據(jù)時,數(shù)據(jù)實際寫入影子條帶的組1,并根據(jù)寫 數(shù)據(jù)、局部校驗(組〇的校驗,在影子條帶的校驗塊),生成新校驗(組〇、組1的校驗)寫入輔 存,見圖4(b);
[0106] (3)組1寫滿后,向原條帶的組2寫數(shù)據(jù)時,數(shù)據(jù)實際寫入影子條帶的組2,并根據(jù)寫 數(shù)據(jù)、局部校驗(組〇、組1的校驗,在輔存),生成新校驗(組〇、組1、組2的校驗)寫入影子條帶 的校驗塊,見圖4(c);
[0107] (4)影子條帶寫滿后,令其替換原條帶參與編址,被替換的原條帶不參與編址,作 為下一循環(huán)中的影子條帶。
[0108] 圖4中,陰影部分為本次循環(huán)中寫入影子條帶的新數(shù)據(jù)、以及根據(jù)寫入新數(shù)據(jù)生成 的局部校驗數(shù)據(jù),隨著寫入數(shù)據(jù)的增加,局部校驗數(shù)據(jù)的校驗范圍逐漸擴大,最終覆蓋整個 影子條帶。
[0109] n .基于SSD的非流水方式
[0110] 優(yōu)選的,采用低功耗的SSD作為輔存時,可不采用流水方式生成校驗數(shù)據(jù),具體過 程與相關流水相似,僅有以下幾點不同:
[0111] (1)向組0寫數(shù)據(jù)時,生成的校驗數(shù)據(jù)寫入輔存,見圖5(a);
[0112] (2)向組1寫數(shù)據(jù)時,根據(jù)寫數(shù)據(jù)、已有校驗數(shù)據(jù)(在輔存),生成新校驗數(shù)據(jù)寫入輔 存,見圖5(b);
[0113] (3)向組2寫數(shù)據(jù)時,根據(jù)寫數(shù)據(jù)、已有校驗數(shù)據(jù)(在輔存),生成新校驗數(shù)據(jù),并把 最終校驗數(shù)據(jù)寫入影子條帶的校驗塊,見圖5 (c)。
[0114] 圖5中陰影部分的含義,與圖4相同。
[0115] m.無關流水方式
[0116] 優(yōu)選的,基于無關流水的寫操作,需要2個輔助存儲設備,分別記作輔存1、輔存2, 容量均與校驗塊相同,具體過程與相關流水相似,僅有以下幾點不同:
[0117] (1)向組0寫數(shù)據(jù)時,生成的局部校驗數(shù)據(jù)寫入輔存1,見圖6(a);
[0118] (2)向組1寫數(shù)據(jù)時,根據(jù)寫數(shù)據(jù)、已有校驗數(shù)據(jù)(在輔存1),生成新校驗數(shù)據(jù)寫入 輔存2,見圖6(b);
[0119] (3)向組2寫數(shù)據(jù)時,根據(jù)寫數(shù)據(jù)、已有校驗數(shù)據(jù)(在輔存2),生成新校驗數(shù)據(jù),并把 最終校驗數(shù)據(jù)寫入影子條帶的校驗塊,見圖6 (c)。
[0120] 圖6中陰影部分的含義,與圖4相同。
[0121] 3數(shù)據(jù)容錯
[0122] 恢復Ripple-RAID 5中任意一塊故障盤上的數(shù)據(jù)時,首先讀取分界線(最后一次局 部并行寫位置)、影子條帶的位置,這2個數(shù)據(jù)至少同時存儲在2塊盤上,1塊磁盤壞后仍可讀 出。對于故障盤上的每個存儲子塊,根據(jù)其不同位置,按如下方法進行恢復。
[0123] 情況1、情況2:故障盤上的存儲子塊位于基本條帶(包括睡眠條帶和活躍條帶)。此 時,對同一子條帶內的其它盤上的存儲子塊異或運算,即可恢復該存儲子塊。例如,圖7中磁 盤0出現(xiàn)故障,磁盤0在基本條帶中的數(shù)據(jù)子塊8,可通過對子條帶8內磁盤1、磁盤2、磁盤3、 磁盤4上的子塊異或運算進行恢復。
[0124] 情況3:故障盤上的存儲子塊位于影子條帶,對于影子條帶,分界線之前為已寫區(qū), 其后為待寫區(qū),設分界線位于組1 (P= 1)中數(shù)據(jù)子塊8之后,此時滿足p多1條件,因此影子條 帶校驗塊均為已寫區(qū)。
[0125] I.故障盤上的存儲子塊位于影子條帶的已寫區(qū)
[0126] 可利用影子條帶中的校驗關系恢復數(shù)據(jù),待寫區(qū)數(shù)據(jù)子塊不參與數(shù)據(jù)恢復。例如, 圖7中磁盤2出現(xiàn)故障,磁盤2在影子條帶中的數(shù)據(jù)子塊0,可通過對子條帶0內磁盤0、磁盤1、 磁盤3、磁盤4上的子塊異或運算進行恢復。
[0127] 又如,圖7中磁盤1出現(xiàn)故障,磁盤1在影子條帶中的數(shù)據(jù)子塊M-1,可通過對子條帶 M-1內磁盤0、磁盤4上的子塊異或運算進行恢復。子條帶M-1在磁盤2、磁盤3中的數(shù)據(jù)子塊 (X表示)位于待寫區(qū),沒有參與子條帶M-1的校驗運算,因此不參與數(shù)據(jù)恢復。
[0128] n .故障盤中的存儲子塊位于影子條帶的待寫區(qū)
[0129] 該部分數(shù)據(jù)不是有效數(shù)據(jù),并且沒有參與所在子條帶的校驗運算,不需要恢復。
[0130] 綜上,Ripple-RAID 5具有單盤容錯能力,其中任意一塊磁盤出現(xiàn)故障丟失數(shù)據(jù) 時,可按上述方法恢復該盤數(shù)據(jù)。
[0131]以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人 員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進,或者對其中部分技術特征進 行等同替換,這些改進和替換也應視為本發(fā)明的保護范圍。
【主權項】
1. 一種消除局部并行中小寫操作的分布校驗式磁盤陣列,其特征在于:其結構布局為: 硬盤陣列Ripple-RAID 5包含N塊硬盤,N彡3且為正整數(shù);每個硬盤平均分成kXN+Ι個 存儲塊,k為大于0的整數(shù),偏移量相同的N個存儲塊組成一個條帶,共組成k X N+1個條帶,任 取其中一個條帶作為影子條帶,其余為基本條帶; 每個基本條帶包含1個校驗存儲塊,簡稱校驗塊,N-1個數(shù)據(jù)存儲塊,簡稱數(shù)據(jù)塊;基本 條帶i中的校驗塊位于硬盤N-1-j ;如果j+v〈N-l,則第v個數(shù)據(jù)塊位于硬盤v,否則位于硬盤v +1,其中0彡i〈(kXN),j = i MOD N;MOD為模運算,0彡v〈N-l; 每個數(shù)據(jù)塊、校驗塊進一步劃分為Μ個大小相等的子塊,每個子塊包含若干個地址連續(xù) 的扇區(qū),分別稱為數(shù)據(jù)子塊Strip和校驗子塊PStrip;每個基本條帶中偏移量相同的子塊組 成一個子條帶Stripe,這樣每個基本條帶中包含Μ個大小相同的子條帶;子條帶Stripe m的 校驗子塊PStrip m由其N-1個數(shù)據(jù)子塊Strip m異或生成,見式(1);其中,0<m<M; 為了提供合適的性能,把基本條帶中的N-1個數(shù)據(jù)塊按順序分成P組,每組包含Q個數(shù)據(jù) 塊;P、Q為大于〇的整數(shù),且滿足PXQ=N-1,Q值根據(jù)實際存儲帶寬需求確定;這樣每個子條 帶中的數(shù)據(jù)子塊也被分成P組,每組包含Q個數(shù)據(jù)子塊,每個子條帶中僅組內的Q個數(shù)據(jù)子塊 提供并行性,不是全部數(shù)據(jù)子塊提供并行性; Ripple-RAID 5采用適度貪婪的地址分配策略,從基本條帶0內、組0內的首個數(shù)據(jù)子塊 開始,按如下規(guī)則編址:①同一組內,同一子條帶內、編號相鄰數(shù)據(jù)塊內的數(shù)據(jù)子塊的地址 相鄰;②同一基本條帶內,編號相鄰的兩個子條帶,前一個在組內的末尾數(shù)據(jù)子塊,與后一 個在該組內的起始數(shù)據(jù)子塊的地址相鄰;③同一基本條帶內,編號相鄰的組的地址相鄰;④ 編號相鄰的基本條帶的地址相鄰;基本條帶、組、數(shù)據(jù)塊均從〇開始編號; Ripple-RAID 5僅對基本條帶進行編址,影子條帶不參與編址,僅供Ripple-RAID 5內 部使用,對上層應用是透明的。2. 如權利要求1所述的一種消除局部并行中小寫操作的分布校驗式磁盤陣列,其特征 在于:其寫操作方法具體為: Ripple-RAID 5的寫操作,綜合運用了地址映射、異地數(shù)據(jù)更新、漸進式生成校驗等方 法,生成校驗數(shù)據(jù)時不需讀取舊數(shù)據(jù);進一步采用流水技術讀取已有校驗、寫入新校驗時, 可有效解決局部并行帶來的小寫問題;此外,地址映射把非順序寫轉換為順序寫,可進一步 提升Ripple-RAID 5的寫性能; 2.1地址映射 上層應用程序發(fā)來的讀寫請求地址,稱為虛擬地址;數(shù)據(jù)在Ripple-RAID 5存儲空間內 的存儲地址,稱為物理地址;地址映射實現(xiàn)虛擬地址到物理地址的轉換:把非連續(xù)的虛擬地 址映射為連續(xù)的物理地址,并記錄映射關系到地址映射表;地址映射后,寫操作在物理地址 空間內完全連續(xù),Ripple-RAID 5完全執(zhí)行順序寫; Ripple-RAID 5非常適合進行地址映射,原因如下:①連續(xù)數(shù)據(jù)存儲應用以寫操作為 主,順序寫可以顯著提高寫性能和整體性能;②讀操作以數(shù)據(jù)回放為主,即重復以前某時間 段內的寫操作,例如視頻回放等,通??色@得與寫性能接近的讀性能;③以寫新數(shù)據(jù)為主, 很少進行改寫操作,可以忽略改寫操作引發(fā)的垃圾回收,或在負載較輕時進行垃圾回收; 以若干個連續(xù)扇區(qū)為單位進行地址映射,稱為扇區(qū)組映射方式;該方式多扇區(qū)映射時 效率高,但改寫組中部分數(shù)據(jù)時,需要讀取未修改數(shù)據(jù),與改寫數(shù)據(jù)一起重新映射;Ripple-RAID 5很少進行改寫操作,適合采用該映射方式;地址映射信息需要作為元數(shù)據(jù)保存,大小 為存儲容量的8/(1024 Xx),其中8個字節(jié)記錄一個扇區(qū)組地址,X為扇區(qū)組大小,以KB為單 位; 2.2異地數(shù)據(jù)更新 Ripple-RAID 5內部執(zhí)行異地數(shù)據(jù)更新,具體執(zhí)行過程如下; (1) 向物理地址A所在的基本條帶i寫數(shù)據(jù)時,數(shù)據(jù)并不直接寫入該條帶,而是寫入地址 A的影子地址A ',A '位于影子條帶,與地址A具有相同的條帶內地址偏移量; (2) 如果影子條帶沒寫滿,轉到(1); (3) 否則,用影子條帶替換基本條帶i,即把影子條帶作為基本條帶i參與編址,實現(xiàn)影 子地址到物理地址的轉換,本次循環(huán)結束; (4) 被替換的原基本條帶i,此時沒有參與編址,在下一循環(huán)中作為影子條帶; 地址映射后Ripple-RAID 5執(zhí)行順序寫,依次向每個基本條帶寫數(shù)據(jù),不會同時向兩個 基本條帶寫數(shù)據(jù),也不會在一個基本條帶沒有寫滿的情況下,向另一個基本條帶寫數(shù)據(jù); 2.3漸進式生成校驗 影子條帶的校驗數(shù)據(jù)是根據(jù)本次循環(huán)中已寫數(shù)據(jù)生成的,稱為局部校驗數(shù)據(jù)(不同于 舊校驗);寫操作時,根據(jù)寫數(shù)據(jù)、已有局部校驗數(shù)據(jù)計算新的局部校驗數(shù)據(jù),不需要讀取舊 數(shù)據(jù);隨著寫數(shù)據(jù)的增加,局部校驗數(shù)據(jù)的校驗范圍逐漸擴大,直至覆蓋整個影子條帶;新 數(shù)據(jù)的寫入、局部校驗數(shù)據(jù)的校驗范圍,如水中漣漪一樣向前推進,因此該硬盤陣列稱為 Ripple-RAID 5; I.相關流水方式 漸進生成校驗數(shù)據(jù)時,不需讀取舊數(shù)據(jù),僅需讀取局部校驗數(shù)據(jù);可以增加一個輔助存 儲設備,與影子條帶中局部校驗數(shù)據(jù)所在磁盤,以流水方式生成新校驗,可有效消除讀局部 校驗數(shù)據(jù)對寫性能的影響;影子條帶中校驗數(shù)據(jù)所在磁盤,與輔助存儲設備一起進行流水, 稱該流水方式為相關流水; 假設每個基本條帶被分成3個組,分別記作組0、組1和組2,輔助存儲設備簡稱輔存,容 量與校驗塊相同,基于相關流水漸進生成校驗的寫過程如下: (1) 向任一基本條帶的組0寫數(shù)據(jù)時,數(shù)據(jù)實際寫入影子條帶的組0,并生成組0的校驗, 寫入影子條帶的校驗塊;所述任一基本條帶稱為原條帶; (2) 組0寫滿后,向原條帶的組1寫數(shù)據(jù)時,數(shù)據(jù)實際寫入影子條帶的組1,并根據(jù)寫數(shù) 據(jù)、局部校驗,生成新校驗寫入輔存;此時,局部校驗為組〇的校驗,在影子條帶的校驗塊;新 校驗為組0、組1的校驗; (3) 組1寫滿后,向原條帶的組2寫數(shù)據(jù)時,數(shù)據(jù)實際寫入影子條帶的組2,并根據(jù)寫數(shù) 據(jù)、局部校驗,生成新校驗寫入影子條帶的校驗塊;此時,局部校驗為組〇、組1的校驗,在輔 存;新校驗為組〇、組1、組2的校驗; (4) 影子條帶寫滿后,令其替換原條帶參與編址,被替換的原條帶不參與編址,作為下 一循環(huán)中的影子條帶; 為保證最后生成的校驗數(shù)據(jù)寫入影子條帶的校驗塊,需按如下規(guī)則流水:若影子條帶 的組數(shù)為奇數(shù),首先向校驗塊寫校驗數(shù)據(jù);否則首先向輔存寫校驗數(shù)據(jù);當輔存采用低功耗 的SSD時,其能耗增加可忽略; Π .基于SSD的非流水方式 優(yōu)選的,采用低功耗的SSD作為輔存時,可不采用流水方式生成校驗數(shù)據(jù):從輔存讀局 部校驗數(shù)據(jù),新校驗數(shù)據(jù)也寫入輔存,直至寫影子條帶的最后一組時,從輔存讀局部校驗數(shù) 據(jù),并將新校驗數(shù)據(jù)寫入影子條帶的校驗塊,稱該方式為基于SSD的非流水方式;該方式中 校驗塊所在磁盤也可待機節(jié)能,節(jié)能效果將進一步提升;生成校驗時需要同時讀、寫輔存, 因此輔存可能成為性能瓶頸;該方式中的輔存也可采用磁盤; m.無關流水方式 優(yōu)選的,為了使影子條帶中校驗塊所在硬盤大部分時間也可待機節(jié)能,進一步提高節(jié) 能效率,同時又不影響性能,可采用如下流水方式:設置兩個輔助存儲設備,分別記作輔存1 和輔存2,容量均與校驗塊相同,輪流從其中之一讀局部校驗數(shù)據(jù),向另一個寫新校驗數(shù)據(jù), 直至生成影子條帶的最終校驗數(shù)據(jù),再將其寫入影子條帶的校驗塊; 影子條帶中校驗塊所在磁盤不參與流水,稱該流水方式為無關流水;當輔存1、輔存2采 用低功耗的SSD時,可忽略其能耗增加;無關流水與相關流水相似,僅有以下幾點不同: (1) 向組0寫數(shù)據(jù)時,生成的局部校驗數(shù)據(jù)寫入輔存1; (2) 向組1寫數(shù)據(jù)時,根據(jù)寫數(shù)據(jù)、已有校驗數(shù)據(jù),生成新校驗數(shù)據(jù)寫入輔存2;此時,已 有校驗數(shù)據(jù)位于輔存1; (3) 向組2寫數(shù)據(jù)時,根據(jù)寫數(shù)據(jù)、已有校驗數(shù)據(jù),生成新校驗數(shù)據(jù),并把最終校驗數(shù)據(jù) 寫入影子條帶的校驗塊;此時,已有校驗數(shù)據(jù)位于輔存2。3.如權利要求1或2所述的一種消除局部并行中小寫操作的分布校驗式磁盤陣列,其特 征在于:其數(shù)據(jù)容錯方法具體為: 由數(shù)據(jù)布局得,Ripple-RAID 5包含N個基本條帶和1個影子條帶;按當前狀態(tài)是否正在 被更新,把基本條帶進一步分為活躍條帶和睡眠條帶,影子條帶的數(shù)據(jù)組織方式與活躍條 帶相同;由于地址映射后執(zhí)行順序寫,在確定時間內只有1個基本條帶正在被更新,即只有1 個活躍條帶,其余基本條帶為睡眠條帶; 對于故障盤中的每個存儲子塊,根據(jù)其不同位置,按如下方法進行恢復; 情況1:故障盤中的存儲子塊位于睡眠條帶,由Ripple-RAID 5的寫操作方法得,當根據(jù) 式(1)建立校驗關系后,該睡眠條帶沒有進行任何修改,已建立的校驗關系完整有效;對同 一子條帶內的其它盤上的存儲子塊異或運算,可恢復該存儲子塊; 情況2:故障盤中的存儲子塊位于活躍條帶,由寫操作方法得,當根據(jù)式(1)建立校驗關 系后,活躍條帶也沒有被真正修改過,對應的新數(shù)據(jù)實際寫入了影子條帶的對應位置,已建 立的校驗關系完整有效;對同一子條帶內的其它盤上的存儲子塊異或運算,也可恢復該存 儲子塊; 情況3:故障盤中的存儲子塊位于影子條帶,對于影子條帶,以最后一次局部并行寫為 分界線,分界線之前為已寫區(qū),其后為待寫區(qū),設分界線位于組P中偏移量為m的數(shù)據(jù)子塊 Strip m之后,0彡口〈?,0彡111〈]/[;特別強調:當1)彡1時,影子條帶校驗塊均為已寫區(qū) ; I.故障盤中的存儲子塊位于影子條帶的已寫區(qū) 影子條帶的已寫區(qū)數(shù)據(jù),在影子條帶中具有完整、有效的校驗關系,設存儲子塊位于影 子條帶中的子條帶Stripe k,當(Xk<m時,校驗關系見式(2):當m〈k〈M時(僅當p彡1時存在),校驗關系見式(3):此時,可根據(jù)所在子條帶的位置,利用式(2)或式(3)恢復故障盤中的存儲子塊; Π .故障盤中的存儲子塊位于影子條帶的待寫區(qū) 由Ripple-RAID 5的寫操作方法得,該部分數(shù)據(jù)不是有效數(shù)據(jù),并且沒有參與所在子條 帶的異或運算,因此數(shù)據(jù)恢復時不需要考慮; 綜上,Ripple-RAID 5具有單盤容錯能力,其中任意一塊硬盤出現(xiàn)故障丟失數(shù)據(jù)時,可 按上述方法恢復該盤數(shù)據(jù);分界線,即最后一次局部并行寫位置以及影子條帶位置,對數(shù)據(jù) 恢復至關重要,需要記錄到元數(shù)據(jù)中,至少同時存儲在2塊盤上,以確保數(shù)據(jù)恢復正確執(zhí) 行。4. 如權利要求1或2所述的一種消除局部并行中小寫操作的分布校驗式磁盤陣列,其特 征在于:其讀操作方法具體為: 對Ripple-RAID 5進行讀操作時,需要根據(jù)上層應用程序發(fā)來的虛擬地址,查找地址映 射表,獲得該虛擬地址對應的物理地址A,①如果地址A位于活躍條帶的已寫區(qū),即如果地址 A與影子條帶已寫區(qū)具有相同的條帶內起始、終止偏移地址,則從地址A的影子地址A'讀取 數(shù)據(jù);②否則,直接從地址A讀取數(shù)據(jù)。5. 如權利要求1或2所述的一種消除局部并行中小寫操作的分布校驗式磁盤陣列,其特 征在于:其節(jié)能調度方法具體為: Ripple-RAID 5需要對硬盤進行節(jié)能調度,調度空閑硬盤待機節(jié)能,當任務到來時喚醒 待機硬盤工作。
【文檔編號】G06F3/06GK105930097SQ201610230187
【公開日】2016年9月7日
【申請日】2016年4月14日
【發(fā)明人】孫志卓, 郭長友, 呂文志, 于瑞玲, 譚毓安
【申請人】德州學院