1310132 九、發明說明: 【發明所屬之技術領域】 本發明係關於-翻立磁碟之冗餘陣顺線上擴容方法,特 別是關於-種獨立磁碟之冗餘陣列的線上擴容過程的中斷與恢復 方法。 【先前技術】 獨立磁碟之冗餘陣列(Redundant Array of Independent Disk, RAID)係將多台硬碟透過rajd控制器(如硬體、軟體)結合成虛擬 單台大容量的硬碟使用,其特色是多台硬碟同時讀取速度加快及 提供容錯性。目前,常見的RAID陣列包含:Linear、_〇、 RAID 卜 RAID2、RAID3、RAID4、RAED5、RAID6、RAID10 以 及 RAID50 等。
Raid的儲存原理是用位元分割(Bit Striping)或區塊分割 (BlockStriping)的分割方式,將資料分散儲存至各硬碟中,當硬碟 ❿ 有受損時經由互斥或(XOR)運算,再將存在其他各硬碟内的校驗 磁碟分段(Parity Bl〇cks)以及等量資料(Data stripe)磁驅的資料分 段(Data Blocks)進行計算而重建㈣刪)資料。 磁碟容量的增加與效能的增強均為當前磁碟陣列系統之關鍵 問題’而於磁碟陣列系統中增加新的磁碟,是增加系統容量和增 強系統效能的較佳的途經。傳統的增加磁碟陣列系統的方法是先 備份磁碟陣列中的資料,再重建新的大容量的邏輯碟旅恢復資 料。然而,這種方法在7x24運行的系統中是不可行的。因此,就 1310132 需要-種磁辦_統的線上擴容祕’其可以讓使用者在不關 閉系統的情況下,增加新的磁碟。習知技術之線上擴容技術大多 採用硬體RAID控制卡來實現。但這些工具大部分對添加的磁碟 數目有限制或在擴容的過程中是不可以停止的。上述問題給使 用者的日常工作帶來了很大的不便。 如第1圖所示’獨立磁碟之冗餘陣列(Redundant Array of
Independent Disk,RAID)的線上擴容(〇nline Capacity Expansi〇n, • 〇CE)是指在不_、無須對擴容前獨立磁碟之冗餘陣列10重新 初始化的情況下,增加新的磁碟2〇到原來一種已經建好的擴^^後 ,獨立磁碟之冗餘陣列30中,並且不損壞原擴容前獨立磁碟之冗餘 陣列10中的任何資料内容,同時不會影響到系統的正常運行,也 不需要重啓系統就能夠應用新的設置。 為了方便使用者對擴容的管理,消除了一些利用硬體進行磁 碟陣列線上擴容的限制,習知技術(台灣專利申請案號第 • _44573號;中國專利申請案號第200510097477.7號,專利名 稱:『獨立磁碟之冗餘陣列(RAID)的擴充系統及其方法』)中,請 參考第2圖所示’揭露一種獨立磁碟之冗餘陣列的擴容方法,係 用以透過新增概_肺’將—個咖巾的驅絲數量由n 個擴容至Μ個,該方法包含以下步驟: 接收包含各新增之驅動器名稱、新增之驅動器數目、新增之 驅動器資訊、擴容速度之上限以及遷移單元之大小之擴容資訊 (S200); ’、、 6 1310132 分配擴容資《賴料訊寫人該齡前獨立磁碟之冗 餘陣列之超級區塊,且創建-記錄請求位址與擴容前獨立磁碟 之冗餘陣列之—當前遷移單元位址触之請求資訊之等待列 表(S210); 將擴容義立猶之冗餘_與各新增之购器構造成 一無須同步猶之臨時獨立磁碟之冗餘_ (s22〇); 讀取等制表記錄之請求資訊並執行相應操作,依照擴容 貧訊以遷移單元為單位遷移齡_立磁碟之冗餘陣列之資 料至臨時獨立磁碟之冗餘陣列,並於資料遷移線程中處理使用 者對擴容觸立磁碟之·_之輸人/翻請求(咖).以 及於資料祕完,峨齡麵立_之祕_之姓構 為擴容後齡補之冗餘_找構,錄^臨_立辦 冗餘陣列(S240)。 在上述獨立補之冗餘_赚方法巾,由於線上擴容 過程中,很可能發生異常中斷情況,擴容過程停止中 數,使擴容過程從·始;二是能重新設置擴容參 笛一括u -、 中斷處繼續擴容。很顯然, 不切貫際,並且也不可能,因爲資料的線上擴容是 :=Γ程’它需要相,如果在擴容的尾聲 中斷,再重新從頭開始擴容要浪 毛卓 程能在祕_4_進行…^ W A 了使擴容過 二是增加擴額恢復處理触。疋辦加隸的保護處理, 7 叫〇132 常中:;獨立磁碟之冗餘陣列的線上擴容過程中,如何因應異 中_況’進行情與恢復方法,遂成為-棚注的議題。 【發明内容】 容相上<之㈣’本發明财在轉發性的顯上寫入擴 證擴容資訊不丢失’從而實™線上擴容過 進=:斷與恢復。使用者可以在擴容過程中中斷擴容,如 捭气^職雜作,錢可叫過讀取糾在磁碟上的 用==訊’簡·容狀_騎_擴容 行,者出現盈^ 、線上擴谷’根據需要來控制陣列擴容的運 丁 4現異續鱗,還能使_擴容 中斷,從而繼續擴容過程。 攸谷狀恕而不 即時同要是在線上擴容過程中增加資料中斷處理, 超級塊的是否記錄了陣列的擴容資訊,如果有擴容㈣^查 重新初始化陣列,置擴容標記,並且根據選擇= 向前。 長疋重新啓動、擴容向後、或者是擴容繼續 【實施方式】 以下’將結合圖式部份對本發明之較佳實施方式作詳細說明 8 1310132 本發明揭露了 -種獨立磁碟之冗餘_的線上 斷與恢復方法,請參考「第3圖」,圖中表示了本發 圖,擴容前資料處理(S3〇〇);啟動遷移線程(S3l〇);擴容中斷^ 理(S32〇);擴容恢復處理(S330);喚醒遷養線程繼續擴容(S34〇)l 遷移完成(S350)。 ’ 本發明的原理是财在腿°設成員闕及擴容_碟 的超級塊中設置擴容相·訊,如擴容位置資訊、擴容狀態資訊、 •遷移單元大小等,這些資訊是隨著擴容的進行而即時更新的。°當 RAID在線上擴容過程憎遷移線程帽後,可通過讀取存儲: 超級塊中的擴容進度等相關資訊,重新搭建擴容環境,註冊遷移 .線程’然後保持原有擴容狀態_擴容,從而實現以仍線 容過程的中斷與恢復^ '、 此方法的整個可通過擴容_處_塊、齡中斷處理 杈塊和擴容恢復處理模塊來描述,具體過程如下。 _ (一)擴容啓動處理: 這疋貫現RAID線上擴容的核 /± Μ ^ Λ .…0尔犹從功能界面接收 使用者傳⑽參㈣動齡後,齡軸子魏執行町流程, 蝴雛_齡㈣,細齡資訊到資 ==綱射,並輸n賴( 訊包括擴容後的磁碟數、遷移單元大小、擴容速度上 =物讀化工作完成後,_立 與擴容的耻磁叙冗鱗财成_麵_時齡磁 1310132 陣=(s·)’翻_獨立磁碟之冗餘_與—個完整獨立 、几,陣麻同的疋它無須進行同步;然後啓動遷移線程,按照 遷移單元的大小將賴立刺之冗餘_上的龍依次遷姉: 時獨立磁碟之冗餘陣列陣列上(卿),此過程—直在系統後臺^ (一)擴容中斷處理: 在擴容過財,报有可能發生異常情情況(如斷電、使用 者無意使祕止命令停止了擴容巾断列等),在純重起之後, 使用啓動命令應能保證錄啓動_,並絲賴進行擴 中斷處理的目的,就是倾擴容#訊記_完錄,從而使 擴谷陣列成功啓動。此擴容中斷處理,主要依賴於記錄與磁碟上 的超級塊㈣訊,耻f要將—些透過線上擴容的資訊記錄在非 軍毛的磁碟上,亚且需要修改對超級塊的存取、更新等操作以 應資料結構賴化。在這個·情處理過程中,主要包括 =個操作程序:丨、將擴容中的陣列擴容資訊同步更新到存儲^磁 罢^的超輯巾,私考如第5崎示,首先設置空閒磁碟的位 (S500);接著將陣列中有關擴容資訊複製到超級塊的對應結 構中(S51G),修改超級塊中記錄的位置編號(咖);設置 級塊中磁翻擴容標記_)。2、在啓動陣列時將存儲在磁碟 上超級塊中的齡:纽初始化給齡的_設備,請參考如第^ 圖所示,首先將超級塊忖關擴容資訊複製到陣列的對應結射 1310132 (S600),取得超級塊中有關設備的描述信息(s61〇);設置設 備的擴谷編號(S620)。 (三)擴容恢復處理: 虽擴谷過程中發生中斷異常,重新啓動擴陣列時,需要呼叫 到此模塊; 該杈塊接文使用者的請求,在擴容停止的情況下恢復擴容, 可以選擇使擴容繼續進行,或者是擴容向後。 根據使时的輸碌數齡方向的不同,有三碱理模塊程 序: (1) 擴容重新啓動:當原來擴容過程是向前擴容時,呼叫此 核塊’擴容會繼續向前;當原來擴容過程是向後擴容時, 呼叫此模塊,擴容會繼續執行向後擴容。擴容過程是否 為向後擴容,通過讀取超級塊中的標誌為即可獲得,請 茶考如第7圖所示:讀取超級塊的信息(S7〇〇);判斷 陣列是否為停止狀態?(S71Q);如果不是即結束擴容 重新啓動流程,如果是,則設置擴容標記為擴容(S72〇); 更新超級塊的信息(S73〇)卜姐遷移線程(S74〇)。 (2) 擴容向後:當制者的輪人擴容參數方向為向後時就會 呼叫到這個模塊。如果原來擴容是向前的,呼叫此模塊 S使擴谷開始向後,如果原來擴容就是向後,則繼續向 後擴容過程,請參考如第δ _示:讀取超級塊的信息 (S_ 是否為停止狀態?(S810);如果 11 1310132 不是即結束擴容向後流程’如果是,則設置擴容標記為 擴容(S820);設置擴容方向為向後(S830);更新超級 塊的信息(S840);唤醒遷移線程(S850)。 (3)擴容繼續向前:當使用者輸入的擴容方向參數為繼續向 前時’呼叫此模塊;當原來的為向前擴容,調用此模塊, 擴容繼續向前;當原來的擴容為向後擴容時,呼叫此模 塊,擴容則開始繼續向前擴容,不在執行向後操作,請 參考如第9圖所示:讀取超級塊的信息(S9〇〇);判斷 陣列是否為停止狀態?(S910);如果不是即結束擴容 向前流程’如果是,則設置擴容標記為擴容(S92〇);設 置擴容方向為向前(S930);更新超級塊的信息(S940); 喚醒遷移線程(S950)。 第10圖為本發明所提之較佳實施例方法流程圖,假設有一台 支援 RAID 線上擴容功能的 SAN (St〇rage Attached Netw〇rk)伺 服裔。飼服為令有12塊磁碟,假設利用其中的4塊磁碟開啟了一 個RAID设備(命名為mdl),使用了一段時間後,發現^^^設 備mdl不能滿足使用者的存儲需求,在不中斷服務的情況下進行 擴容儲存空間。 此%利用伺服器上的線上擴容功能進行容量的擴容, 使用;又有被RAID佔用的設備(比如hdd12 ,第十二個插槽中的 磁碟)’通過使用者界面向mdl設備下達擴容命令(si〇〇〇),通 過功此界面啓_核的擴容模塊將擴容啓動⑽⑻),滅擴容 12 1310132 啓動(S1200)後,啟動遷移線程(S1300),把擴容的相關資訊分 配到遷移控制結構並寫入超級塊中,包括擴容的磁碟數、擴容磁 碟資訊、遷移單元大小、遷移速度上限、遷移狀態等必要資訊; 在遷移線程中,將不斷更新磁碟超級塊中的擴容資訊,以保證資 料遷移的安全性。 ' ' 當在擴容過程中突然系統斷電,擴容過程中斷(si4〇〇);在 -系統重新啓動後’ mdl恢復擴容啟動(s測);若使用者想繼續 • 擴容過程’則進行讀取超級塊的信息(Sl_),此時可判斷mdl 是否為停止狀態?(S1700),如果是,則阻塞新發下來的1/〇請 求,等待仵列請求完成(Sl_)。在mdl擴容啓_,系統將超 級塊中圯錄的擴容資訊重新初始化給mdl陣列設備,裝載擴容的 擴容f訊’更改超級塊中的擴容狀態標記,根據使用者的擴容方 向確定擴容的呼叫模塊(本實施例為擴容重啓動),故設置擴容標 記為擴容(S1900),重新更新超級塊的信息⑽〇〇),然後喚醒 _ 遷移線程(S2KK)) ’重新開辦_擴容(S22〇〇)。 —雖然本發明贿述之較佳實施方式揭露如上,然其並非用以 定本电Θ本躺之技術人貞應當意鋼在不脫離本發明所附 之申請專補_揭示林购之顧和精神之情況下,所為之 -動’、:門ί均屬本發明之專利保護範圍之内。關於本發明所界 疋之保絲圍請參考騎之_請專利範圍。 【圖式簡單說明】 弟1圖為’I知之獨立磁碟之冗餘_線上擴容示意圖; 13 !310132 第2圖為習知之獨立磁碟之冗餘陣列線上擴容方法流程圖; 第3圖為本表明之獨立磁碟之冗餘陣列的線上擴容過程的中 斷與恢復方法流程圖; 第4圖為本發明所提之方法中關於擴容啓動處理模塊的方法 流程圖; 第5圖為本發明所提之方法巾關於更新超級塊信息的方法流 程圖;
第6圖為本發明所提之方法中關於用超級塊信息初始化啓動 陣列的方法流程圖; 第7圖為本發明所提之方法中關於擴容恢復處理模塊之擴容 重新啓動方法流程圖; 〃 第8圖為本發明所提之方法中關於擴容恢復處理模塊之擴容 向後方法流程圖; ' 繼本發明所提之方法中關於擴容恢復處理模塊之擴容 %續向刖方法流程圖;以及 •之較佳實施例方法流程圖 第⑴圖為本發明所提之方法_ 【主要元件符號說明】 10擴容_立_之冗餘陣列 20 新的磁碟 30擴容錢立_之冗餘陣列 14 1310132 S200接收包含各新增之驅動器名稱、新增之 新增之驅動器資訊、擴宠诘痄 数目 資訊 U賴之上限以及遷移單元之大小之擴容 SWG &配齡#訊郷擴料訊寫人齡麵立磁碟之冗 餘陣列之超級區塊,且創建一 " 之7Γ碰❾^ * 錄^月求與擴容前獨立磁碟 之几餘陣列之當剛遷移單元位址衝突之請求資訊之等待列 湖將齡_域叙冗物齡新敎驅㈣構造 成-個無須同步操作之臨時獨立磁碟之冗餘陣列 於容=以3待:^記錄之請求資訊並執行相應操作,依照 擴合貝似遷移早几為單位遷移擴容 料至臨時駐_之冗雜】,並=之几餘陣列之資 對擴容前駐鞭賺她切;^處理使用者 S240於f輸觸後,擴麵獨立磁狀冗 容後獨立磁碟之撕列之結構並釋放臨時獨立磁碟 S300擴容前資料處理 S310啟動遷移線程 S320擴容中斷處理 S330擴容恢復處理 S340喚醒遷移線程繼續擴容 S350遷移完成 15 1310132 控制===資訊,分配該擴容資訊到資料遷移 7並將廷些擴容資訊寫入超級塊 剛_原獨立磁碟之冗餘陣列與擴容的獨立磁碟之 陣列生成—個新的臨時齡磁碟之冗麟列 〃。 ” S420啓動遷移線程,按照遷移單元的大小將原獨立磁碟之 几餘陣列上的資料依次遷移到臨時獨立磁碟之冗餘陣列陣列上 S500設置空閒磁碟的位置
SM0將陣列中有關擴容資訊複製到超級塊的對應結構中 S520修改超級塊中記錄的位置編號 S530設置超級塊中磁碟的擴容標記 S600將超级塊中有關擴容資訊複製到陣列的對應結構中 S610取得超級塊中有關設備的描述信息 S620設置設備的擴容編號 S700、S800、S900讀取超級塊的信息 S710、S810、S910陣列是否為停止狀態? S720、S820、S920設置擴容標記為擴容 S730、S840、S940更新超級塊的信息 S740、S850、S950喚醒遷移線程 S830設置擴容方向為向後 S930設置擴容方向為向前 S1000通過使用者介面向mdl設備下達擴容命令 S1100通過功能介面啓動内核的擴容模塊將擴容啓動 16 1310132 S1200 mdl擴容啓動 S1300啟動遷移線程 S1400系統斷電,擴容過程中斷 S1500系統重新啓動後,mdl恢復擴容啟動 S1600讀取超級塊的信息 S1700 mdl是否為停止狀態? S1800阻塞新發下來的I/O請求,等待佇列請求完成
S1900設置擴容標記為擴容 S2000 更新超級塊的信息 S2100喚醒遷移線程 S2200重新開始陣列的擴容
17