提高磁盤陣列性能的方法及裝置制造方法
【專利摘要】本發明實施例公開了一種提高磁盤陣列性能句方法及裝置,所述方法包括:接收存儲請求;確g存儲請求中要存儲的數據的數據類型;當確定沒據類型為元數據時,將元數據存儲在所述第一建型的VLUN中,其中第一類型的VLUN中的條帶容I小于第一預設值;當確定數據類型為文件內容女據時,將文件內容數據存儲在所述第二類型的WN中,其中第二類型的VLUN中的條帶容量大于_二預設值,所述第二預設值大于所述第一預設復。本發明適用于磁盤陣列的性能優化。
【專利說明】提高磁盤陣列性能的方法及裝置
【技術領域】
[0001] 本發明涉及存儲管理【技術領域】,特別涉及一種提高磁盤陣列性能的方法及裝置。
【背景技術】
[0002] RAID (Redundant Arrays of Inexpensive Disks,獨立磁盤冗余陣列)是通過磁 盤陣列與數據條塊化方法相結合,以提高數據可用率的一種結構。目前的RAID可以分為 RAIDO、RAID1、RAID2、RAID3、RAID4、RAID5 和 RAID6 這幾個級別,每個 RAID 級別在存儲數 據上都有各自的優勢和不足。RAID5是一種存儲性能、數據安全和存儲成本兼顧的存儲解決 方案。RAID5不對存儲的數據進行備份,而是把數據和相對應的奇偶校驗信息存儲到組成 RAID5的各個磁盤上,并且奇偶校驗信息和相對應的數據分別存儲于不同的磁盤上。這樣, 當RAID5的一個磁盤數據發生損壞后,可以利用其它磁盤的相對應的數據和相應的奇偶校 驗信息去恢復被損壞的數據。
[0003] 由于RAID5中存在奇偶校驗信息,導致了 RAID5存在寫損失。即在磁盤中修改一 個數據各需要兩次讀寫操作,分別讀取舊數據和舊校驗信息,以及分別寫入新數據和新校 驗信息,這個過程降低了磁盤的使用性能。RAID5的磁盤陣列空間是按照條帶(stripe)進 行管理的,每個條帶占用多個磁盤,如果在修改一個條帶內的數據時能夠將該數據所在的 條帶的多個磁盤的數據都進行數據修改,那么只需要對這個條帶內每個磁盤的數據進行覆 蓋,即一次寫操作即可,校驗信息所在的磁盤可以根據條帶內其他磁盤寫入的新數據進行 計算獲得新的校驗息。
[0004] 為了降低寫損失,提高存儲設備的性能,現有技術中通過使用多個存儲設備,在不 同的存儲設備上使用不同大小的條帶,將文件的元數據等小數據保存在小條帶的存儲設備 上,將文件的內容數據等大數據保存在大條帶的存儲設備上。一方面能夠在修改元數據時, 降低由讀寫校驗值帶來的寫損失;另一方面將內容數據保存在大條帶上,能夠確保內容數 據盡量分布在一個條帶內,避免讀取內容數據時涉及多個條帶的情況,提高磁盤性能。
[0005] 然而現有技術中至少存在如下問題:多個存儲設備的成本較高,并且文件的內容 數據和元數據被存放到不同的存儲設備中,單個存儲設備無法提供完整的文件數據,不便 于維護。
【發明內容】
[0006] 提供一種提高磁盤陣列性能方法及裝置,能夠解決因磁盤陣列中存在寫損失帶來 的磁盤性能降低的問題,以較低的設備成本提升磁盤陣列的性能。
[0007] 第一方面,提供一種提高磁盤陣列性能的方法,包括:
[0008] 接收存儲請求;
[0009] 確定所述存儲請求中要存儲的數據的數據類型;
[0010] 當確定所述數據類型為元數據時,將所述元數據存儲在第一類型的VLUN中,其中 所述第一類型的VLUN中的條帶容量小于第一預設值; toon] 當確定所述數據類型為文件內容數據時,將所述文件內容數據存儲在第二類型的 VLUN中,其中所述第二類型的VLUN中的條帶容量大于第二預設值,所述第二預設值大于所 述第一預設值。
[0012] 在第一種可能的實現方式中,在所述接收存儲請求之前,所述方法還包括:根據用 戶業務需求,配置磁盤陣列配置參數;根據所述磁盤陣列配置參數,將邏輯單元號LUN劃分 成至少一個第一類型的VLUN和至少一個第二類型的VLUN。
[0013] 可選的,當所述第一類型的VLUN的數量為兩個或兩個以上時,所述將所述元數據 存儲在所述第一類型的VLUN中包括 :
[0014] 根據所述第一類型的VLUN的序號順序和所述存儲請求的先后順序,按照輪詢算 法,將所述存儲請求對應的元數據存儲到相應的第一類型的VLUN中;或者,根據所述第一 類型的VLUN的序號順序,將所述元數據存儲在第一個第一類型的VLUN中;當所述第一個第 一類型的VLUN的存儲區域被寫滿時,將所述元數據存儲在下一個第一類型的VLUN中。
[0015] 可選的,當所述第二類型的VLUN的數量為兩個或兩個以上時,所述將所述文件內 容數據存儲在所述第二類型的VLUN中包括 :
[0016] 根據所述第二類型的VLUN的序號順序和所述存儲請求的先后順序,按照輪詢算 法,將所述存儲請求對應的文件內容數據存儲到相應的第二類型的VLUN中;或者,根據所 述第二類型的VLUN的序號順序,將所述文件內容數據存儲在第一個第二類型的VLUN中;當 所述第一個第二類型的VLUN的存儲區域被寫滿時,將所述文件內容數據存儲在下一個第 二類型的VLUN中。
[0017] 進一步的,所述方法還包括:
[0018] 接收讀取請求,所述讀取請求包含了文件名;根據所述文件名,向存儲設備下發輸 入輸出10調度請求,在磁盤上獲取所述文件名對應的元數據所處的第一類型的VLUN的序 號;根據所述文件名和所述第一類型的VLUN的序號,獲取所述文件名對應的元數據在所述 第一類型的VLUN中的訪問地址;根據所述文件名對應的元數據在所述第一類型的VLUN中 的訪問地址,獲取所述文件名對應的元數據;解析所述文件名對應的元數據,獲取所述文件 名對應的文件內容數據的訪問地址;根據所述文件名對應的文件內容數據的訪問地址,獲 取所述文件名對應的文件內容數據。
[0019] 其中,所述存儲請求具體為系統請求;可選的,所述方法還包括:根據所述系統請 求,當所述數據類型為元數據時,將所述元數據存儲在第三類型的VLUN中,其中所述第三 類型的VLUN中的寫損失小于損失閾值。
[0020] 結合第一種可能的實現方式,在第二種可能的實現方式中,所述磁盤陣列配置參 數包括:第一類型的VLUN的容量、第二類型的VLUN的容量、第一類型的VLUN的起始位置、 第二類型的VLUN的起始位置、第一類型的VLUN使用的RAID類型、第二類型的VLUN使用的 RAID類型、第一類型的VLUN中的條帶容量和第二類型的VLUN中的條帶容量;所述根據所 述磁盤陣列配置參數,將LUN劃分成至少一個第一類型的VLUN和至少一個第二類型的VLUN 包括:
[0021] 根據所述第一類型的VLUN的起始位置和所述第二類型的VLUN的起始位置,在所 述LUN對應的磁盤中確定所述第一類型的VLUN對應的存儲區域的起始位置和所述第二類 型的VLUN對應的存儲區域的起始位置;
[0022] 根據所述第一類型的VLUN的容量和所述第二類型的VLUN的容量,在所述LUN對 應的磁盤中,以所述第一類型的VLUN對應的存儲區域的起始位置為起點,劃分與第一類型 的VLUN的容量等同的存儲區域,以所述第二類型的VLUN對應的存儲區域的起始位置為起 點,劃分與第二類型的VLUN的容量等同的存儲區域;
[0023] 根據所述第一類型的VLUN使用的RAID類型和所述第二類型的VLUN使用的RAID 類型,在所述第一類型的VLUN和所述第二類型的VLUN中配置對應的RAID類型;
[0024] 根據所述第一類型的VLUN中的條帶容量,在所述第一類型的VLUN中劃分對應的 條帶;根據所述第二類型的VLUN中的條帶容量,在所述第二類型的VLUN中劃分對應的條 帶。
[0025] 第二方面,提供一種提高磁盤陣列性能的裝置,包括:
[0026] 接收單元,用于接收存儲請求;
[0027] 確定單元,用于確定所述接收單元接收的所述存儲請求中要存儲的數據的數據類 型;
[0028] 第一存儲單元,用于當所述確定單元確定所述數據類型為元數據時,將所述元數 據存儲在第一類型的VLUN中,其中所述第一類型的VLUN中的條帶容量小于第一預設值;
[0029] 第二存儲單元,用于當所述確定單元確定所述數據類型為文件內容數據時,將所 述文件內容數據存儲在第二類型的VLUN中,其中所述第二類型的VLUN中的條帶容量大于 第二預設值,所述第二預設值大于所述第一預設值。
[0030] 在第一種可能的實現方式中,所述裝置還包括:
[0031] 參數配置單元,用于根據用戶業務需求,配置磁盤陣列配置參數;
[0032] 劃分單元,用于根據所述參數配置單元配置的所述磁盤陣列配置參數,將邏輯單 元號LUN劃分成至少一個第一類型的VLUN和至少一個第二類型的VLUN。
[0033] 可選的,當所述第一類型的VLUN的數量為兩個或兩個以上時,所述第一存儲單元 還用于:
[0034] 根據所述第一類型的VLUN的序號順序和所述存儲請求的先后順序,按照輪詢算 法,將所述存儲請求對應的元數據存儲到相應的第一類型的VLUN中;或者,
[0035] 根據所述第一類型的VLUN的序號順序,將所述元數據存儲在第一個第一類型的 VLUN中;當所述第一個第一類型的VLUN的存儲區域被寫滿時,將所述元數據存儲在下一個 第一類型的VLUN中。
[0036] 可選的,當所述第二類型的VLUN的數量為兩個或兩個以上時,所述第二存儲單元 還用于:
[0037] 根據所述第二類型的VLUN的序號順序和所述存儲請求的先后順序,按照輪詢算 法,將所述存儲請求對應的文件內容數據存儲到相應的第二類型的VLUN中;或者,
[0038] 根據所述第二類型的VLUN的序號順序,將所述文件內容數據存儲在第一個第二 類型的VLUN中;當所述第一個第二類型的VLUN的存儲區域被寫滿時,將所述文件內容數據 存儲在下一個第二類型的VLUN中。
[0039] 進一步的,所述接收單元還用于接收讀取請求,所述讀取請求包含了文件名;則所 述裝置還包括:
[0040] 調度單元,用于根據所述文件名,向存儲設備下發輸入輸出10調度請求,在磁盤 上獲取所述文件名對應的元數據所處的第一類型的VLUN的序號;
[0041] 地址獲取單元,用于根據所述文件名和所述第一類型的VLUN的序號,獲取所述文 件名對應的元數據在所述第一類型的VLUN中的訪問地址;
[0042] 讀取單元,用于根據所述文件名對應的元數據在所述第一類型的VLUN中的訪問 地址,獲取所述文件名對應的元數據;
[0043] 解析單元,用于解析所述文件名對應的元數據,獲取所述文件名對應的文件內容 數據的訪問地址;
[0044] 所述讀取單元還用于根據所述文件名對應的文件內容數據的訪問地址,獲取所述 文件名對應的文件內容數據。
[0045] 其中,所述接收單元接收的所述存儲請求具體為系統請求;則所述第一存儲單元 還用于根據所述系統請求,當所述數據類型為元數據時,將所述元數據存儲在第三類型的 VLUN中,其中所述第三類型的VLUN中的寫損失小于損失閾值。
[0046] 結合第一種可能的實現方式,在第二種可能的實現方式中,所述磁盤陣列配置參 數包括:第一類型的VLUN的容量、第二類型的VLUN的容量、第一類型的VLUN的起始位置、 第二類型的VLUN的起始位置、第一類型的VLUN使用的RAID類型、第二類型的VLUN使用的 RAID類型、第一類型的VLUN中的條帶容量和第二類型的VLUN中的條帶容量;
[0047] 所述劃分單元具體用于:根據所述第一類型的VLUN的起始位置和所述第二類型 的VLUN的起始位置,在所述LUN對應的磁盤中確定所述第一類型的VLUN對應的存儲區域 的起始位置和所述第二類型的VLUN對應的存儲區域的起始位置;
[0048] 根據所述第一類型的VLUN的容量和所述第二類型的VLUN的容量,在所述LUN對 應的磁盤中,以所述第一類型的VLUN對應的存儲區域的起始位置為起點,劃分與第一類型 的VLUN的容量等同的存儲區域,以所述第二類型的VLUN對應的存儲區域的起始位置為起 點,劃分與第二類型的VLUN的容量等同的存儲區域;
[0049] 根據所述第一類型的VLUN使用的RAID類型和所述第二類型的VLUN使用的RAID 類型,在所述第一類型的VLUN和所述第二類型的VLUN中配置對應的RAID類型;
[0050] 根據所述第一類型的VLUN中的條帶容量,在所述第一類型的VLUN中劃分對應的 條帶;根據所述第二類型的VLUN中的條帶容量,在所述第二類型的VLUN中劃分對應的條 帶。
[0051] 與現有技術相比,本發明實施例首先接收存儲請求;確定存儲請求中要存儲的數 據的數據類型;將元數據存儲在第一類型的VLUN中,其中第一類型的VLUN中的條帶容量小 于第一預設值;將文件內容數據存儲在所述第二類型的VLUN中,第二類型的VLUN中的條帶 容量大于第二預設值,所述第二預設值大于所述第一預設值。通過將LUN分為兩種類型的 VLUN,并對VLUN的條帶容量和所使用的RAID類型進行配置,盡量將文件內容數據等大數據 分配在條帶容量較大的VLUN對應的存儲區域內,將元數據等小數據分配在條帶容量較小 的VLUN對應的存儲區域內,以降低寫損失。解決了因磁盤陣列中存在寫損失帶來的磁盤性 能降低的問題。既可以提升磁盤中大數據的輸入輸出性能,同時也能極大的降低小數據所 帶來的寫損失。
【專利附圖】
【附圖說明】
[0052] 為了更清楚地說明本發明實施例中的技術方案,下面將對實施例或現有技術描述 中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些 實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附 圖獲得其它的附圖。
[0053] 圖1為本發明實施例一提供的方法流程圖;
[0054] 圖2為本發明實施例二提供的方法流程圖;
[0055] 圖3為本發明實施例三提供的裝置結構示意圖;
[0056] 圖4為本發明實施例三提供的另一個裝置結構示意圖;
[0057] 圖5為本發明實施例四提供的裝置結構示意圖。
【具體實施方式】
[0058] 下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完 整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于 本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其它 實施例,都屬于本發明保護的范圍。
[0059] 為使本發明技術方案的優點更加清楚,下面結合附圖和實施例對本發明作詳細說 明。
[0060] 實施例一
[0061] 本實施例提供一種提高磁盤陣列性能的方法,如圖1所示,所述方法包括:
[0062] 101、接收存儲請求。
[0063] 102、確定存儲請求中要存儲的數據的數據類型。
[0064] 其中磁盤的存儲過程中主要包括兩類數據:元數據和文件內容數據,其中,元數據 用于管理文件系統和磁盤,文件內容數據是用戶真正存儲的數據。元數據占用的存儲空間 很小,而文件內容數據占用的存儲空間較大。
[0065] 103、當確定數據類型為元數據時,將元數據存儲在第一類型的VLUN (Virtual Logic Unit Number,虛擬邏輯單元號)中,其中第一類型的VLUN中的條帶容量小于第一預 設值。
[0066] 其中,第一預設值根據業務需求設定。
[0067] 104、當確定數據類型為文件內容數據時,將文件內容數據存儲在第二類型的VLUN 中,其中第二類型的VLUN中的條帶容量大于第二預設值。
[0068] 其中,所述第二預設值大于所述第一預設值,第二預設值根據業務需求設定。在第 一類型的VLUN和第二類型的VLUN中,條帶容量不存在介于第一預設值和第二預設值之間 的情況。
[0069] 需要說明的是,本實施例中LUN (Logic Unit Number,邏輯單元號)所使用的RAID (Redundant Array Of Independent Disks,獨立磁盤冗余陣列)類型主要為RAID5,由于 RAID5自身結構的限制,在RAID5類型的LUN中會存在寫損失,但是如果能夠使存儲的數據 盡量填滿整個條帶,那么就能避免寫損失。例如,一個較小的條帶內包括4個磁盤,其中磁 盤1、磁盤2和磁盤3存儲文件數據,磁盤4存儲校驗數據。4個磁盤存儲容量智能容納一 個字節的數據,磁盤1存儲"1",磁盤2存儲"2",磁盤3存儲"3",那么磁盤4存儲的校驗信 息為其他3個磁盤在邏輯上的總和"6"。當用戶要將磁盤2的數據"2"修改為"4"時,如果 僅修改磁盤2上的數據,那么需要先讀出數據"2"和校驗值"6",再將新數據"4"和新檢驗 值"8"寫入磁盤,這個過程涉及4次讀寫,導致了寫損失;如果此時恰好磁盤1和磁盤3上 也有數據需要修改,比如向磁盤1寫入"2",向磁盤3寫入"5",那么就不需要再讀取校驗值 信息了,因為磁盤1、磁盤2和磁盤3的數據都被寫滿,可以直接根據磁盤1、磁盤2和磁盤 3中寫滿的新數據更新校驗值。這樣在用戶將磁盤2的數據"2"修改為"4"的過程中相當 于只對磁盤2進行了一次寫操作。
[0070] 因此條帶越小,那么其條帶內磁盤被寫滿的可能性越大,在更新數據時所進行的 讀寫操作越少,即寫損失越小。基于這個理由,我們可以將元數據這類小數據分配在小的條 帶,減少寫損失,而對于文件內容數據這類大數據,如果僅僅考慮寫損失問題而將其也分配 到小條帶,那么仍然會對磁盤性能造成影響,因為如果將大數據分配到條帶較小的第一類 型的VLUN,會占用多個小條帶,那么在修改大數據時就涉及對多個條帶的操作,這樣反而會 降低系統效率。
[0071] 除此之外,還需要考慮VLUN中使用的RAID類型,如果第一類型的VLUN使用的不 是RAID5而是RAID1,那么要優先將元數據等小數據分配至使用RAID1的VLUN對應的存儲 區域,因為RAID1中是不存在寫損失的。
[0072] 綜上所述,如果兩種類型的VLUN中使用的都是RAID5,那么第一類型的VLUN中的 條帶容量需要小于一個預設值X,第二類型的VLUN中的條帶容量需要大于一個預設值y ;如 果第一類型的VLUN中使用RAID1,第二類型的VLUN中使用RAID5,那么將元數據等小數據 分配至第一類型的VLUN中,將文件內容數據分配至第二類型的VLUN中,第二類型的VLUN 中的條帶容量需要大于預設值y。
[0073] 進一步的,在執行步驟101之前,該方法還包括:
[0074] 根據用戶業務需求,配置磁盤陣列配置參數;
[0075] 其中,所述磁盤陣列配置參數至少包括:第一類型的VLUN的容量、第二類型的 VLUN的容量、第一類型的VLUN的起始位置、第二類型的VLUN的起始位置、第一類型的VLUN 使用的RAID類型、第二類型的VLUN使用的RAID類型、第一類型的VLUN中的條帶容量和第 二類型的VLUN中的條帶容量。
[0076] 根據所述磁盤陣列配置參數,將LUN劃分成至少一個第一類型的VLUN和至少一個 第二類型的VLUN。
[0077] 例如,根據所述第一類型的VLUN的起始位置和所述第二類型的VLUN的起始位置, 在所述LUN對應的磁盤中確定所述第一類型的VLUN對應的存儲區域的起始位置和所述第 二類型的VLUN對應的存儲區域的起始位置;
[0078] 根據所述第一類型的VLUN的容量和所述第二類型的VLUN的容量,在所述LUN對 應的磁盤中,以所述第一類型的VLUN對應的存儲區域的起始位置為起點,劃分與第一類型 的VLUN的容量等同的存儲區域,以所述第二類型的VLUN對應的存儲區域的起始位置為起 點,劃分與第二類型的VLUN的容量等同的存儲區域;
[0079] 根據所述第一類型的VLUN使用的RAID類型和所述第二類型的VLUN使用的RAID 類型,在所述第一類型的VLUN和所述第二類型的VLUN中配置對應的RAID類型;
[0080] 根據所述第一類型的VLUN中的條帶容量,在所述第一類型的VLUN中劃分對應的 條帶;
[0081] 根據所述第二類型的VLUN中的條帶容量,在所述第二類型的VLUN中劃分對應的 條帶。
[0082] 可選的,當所述第一類型的VLUN的數量為兩個或兩個以上時,所述將所述元數據 存儲在所述第一類型的VLUN中包括:根據所述第一類型的VLUN的序號順序和所述存儲 請求的先后順序,按照輪詢算法,將所述存儲請求對應的元數據存儲到相應的第一類型的 VLUN中;或者,根據所述第一類型的VLUN的序號順序,將所述元數據存儲在第一個第一類 型的VLUN中;當所述第一個第一類型的VLUN的存儲區域被寫滿時,將所述元數據存儲在下 一個第一類型的VLUN中。
[0083] 可選的,當所述第二類型的VLUN的數量為兩個或兩個以上時,所述將所述文件內 容數據存儲在所述第二類型的VLUN中包括:根據所述第二類型的VLUN的序號順序和所述 存儲請求的先后順序,按照輪詢算法,將所述存儲請求對應的文件內容數據存儲到相應的 第二類型的VLUN中;或者,根據所述第二類型的VLUN的序號順序,將所述文件內容數據存 儲在第一個第二類型的VLUN中;當所述第一個第二類型的VLUN的存儲區域被寫滿時,將所 述文件內容數據存儲在下一個第二類型的VLUN中。
[0084] 其中,舉例說明上述輪詢算法的操作流程:假設存在三個同一類型的VLUN, VLUNa、VLUNb和VLUNc,當第一個存儲請求到來時,將第一個存儲請求對應的數據存儲在 VLUNa中,后續依次將第二個存儲請求對應的數據存儲在VLUNb中,將第三個存儲請求對應 的數據存儲在VLUNc中,當第四個存儲請求到來時,將第四個存儲請求對應的數據再次存 儲在VLUNa中,以此類推。
[0085] 進一步的,所述方法還包括:
[0086] 接收讀取請求,所述讀取請求包含了文件名;根據所述文件名,向存儲設備下發輸 入輸出10調度請求,在磁盤上獲取所述文件名對應的元數據所處的第一類型的VLUN的序 號;根據所述文件名和所述第一類型的VLUN的序號,獲取所述文件名對應的元數據在所述 第一類型的VLUN中的訪問地址;根據所述文件名對應的元數據在所述第一類型的VLUN中 的訪問地址,獲取所述文件名對應的元數據;解析所述文件名對應的元數據,獲取所述文件 名對應的文件內容數據的訪問地址;根據所述文件名對應的文件內容數據的訪問地址,獲 取所述文件名對應的文件內容數據。
[0087] 其中,所述存儲請求具體為系統請求;
[0088] 可選的,所述方法還包括:根據所述系統請求,當所述數據類型為元數據時,將所 述元數據存儲在第三類型的VLUN中,其中所述第三類型的VLUN中的寫損失小于損失閾值, 第三類型的VLUN中配置的RAID類型可以為RAID1或其他寫損失較小的RAID類型。
[0089] 需要說明的是,在對LUN劃分VLUN后,劃分成的VLUN只包括兩種類型,這兩種類 型的VLUN包括但不限于以下組合:第一類型的VLUN和第二類型的VLUN,或者是第三類型 的VLUN和第二類型的VLUN。
[0090] 可選的,當確定所述數據類型為文件內容數據時,在將所述文件內容數據存儲在 所述第二類型的VLUN中之前,所述方法還包括:
[0091] 接收用戶指示;根據所述用戶指示將所述文件內容數據存儲在所述第一類型的 VLUN中或者所述第二類型的VLUN中。
[0092] 與現有技術相比,本發明實施例首先接收存儲請求;確定存儲請求中要存儲的數 據的數據類型;將元數據存儲在第一類型的VLUN中,其中第一類型的VLUN中的條帶容量小 于第一預設值;將文件內容數據存儲在所述第二類型的VLUN中,第二類型的VLUN中的條帶 容量大于第二預設值,所述第二預設值大于所述第一預設值。通過將LUN分為兩種類型的 VLUN,并對VLUN的條帶容量和所使用的RAID類型進行配置,盡量將文件內容數據等大數據 分配在條帶容量較大的VLUN對應的存儲區域內,將元數據等小數據分配在條帶容量較小 的VLUN對應的存儲區域內,以降低寫損失。解決了因磁盤陣列中存在寫損失帶來的磁盤性 能降低的問題。這樣既可以提升磁盤中大數據的輸入輸出性能,同時也能極大的降低小數 據所帶來的寫損失。
[0093] 實施例二
[0094] 本實施例提供一種提高磁盤陣列性能的方法,將LUN劃分為兩個不同類型的 VLUN,分別標識為VLUN1和VLUN2, VLUN1和VLUN2內部的劃分的條帶容量不同,VLUN1和 VLUN2使用的RAID類型可能不同,VLUN1中存儲元數據,VLUN2中存儲文件內容數據,如圖 2所示,所述方法包括:
[0095] 201、系統啟動前,根據用戶業務使用情況配置磁盤陣列配置參數。
[0096] 進一步的,在配置完磁盤陣列配置參數后,系統需要進行兩方面的配置,一方面是 進行文件系統的配置,以對數據進行10控制,具體參照步驟202-204 ;另一方面是磁盤內部 的配置,對磁盤進行分區,具體參照步驟205-207。這兩方面的配置是同時進行的。
[0097] 202、文件系統進行初始化,對系統配置進行檢查。
[0098] 203、讀取磁盤陣列配置參數。
[0099] 204、建立文件系統,根據磁盤陣列配置參數建立文件操作策略。
[0100] 例如,根據參數中VLUN的條帶大小、VLUN使用的RAID類型,VLUN的訪問地址等, 執行如下的文件操作策略:將元數據等小數據分配至具有寫損失較小的VLUN對應的存儲 區域,其中,寫損失較小可以包括兩種情況:一是該VLUN使用沒有寫損失的RAID類型,例 如,RAID1 ;二是該VLUN內的條帶容量小于一個預設值X ;將文件內容數據等大數據分配至 具有較大條帶容量的VLUN對應的存儲區域。其中,元數據用于管理文件系統和磁盤,文件 內容數據是用戶真正存儲的數據。元數據占用的存儲空間很小,而文件內容數據占用的存 儲空間較大。
[0101] 上述文件操作策略主要基于以下原因進行考慮:當使用的RAID類型為RAID5時, 由于RAID5自身結構的限制,在RAID5類型的LUN中會存在寫損失,但是如果能夠使存儲的 數據盡量填滿整個條帶,那么就能避免寫損失。例如,一個較小的條帶內包括4個磁盤,其 中磁盤1、磁盤2和磁盤3存儲文件數據,磁盤4存儲校驗數據。4個磁盤存儲容量智能容 納一個字節的數據,磁盤1存儲" 1",磁盤2存儲"2",磁盤3存儲"3",那么磁盤4存儲的校 驗信息為其他3個磁盤在邏輯上的總和"6"。當用戶要將磁盤2的數據"2"修改為"4"時, 如果僅修改磁盤2上的數據,那么需要先讀出數據"2"和校驗值"6",再將新數據"4"和新 檢驗值"8"寫入磁盤,這個過程涉及4次讀寫,導致了寫損失;如果此時恰好磁盤1和磁盤 3上也有數據需要修改,比如向磁盤1寫入"2",向磁盤3寫入"5",那么就不需要再讀取校 驗值信息了,因為磁盤1、磁盤2和磁盤3的數據都被寫滿,可以直接根據磁盤1、磁盤2和 磁盤3中寫滿的新數據更新校驗值。這樣在用戶將磁盤2的數據"2"修改為"4"的過程中 相當于只對磁盤2進行了一次寫操作。
[0102] 因此條帶越小,那么其條帶內磁盤被寫滿的可能性越大,在更新數據時所進行的 讀寫操作越少,即寫損失越小。基于這個理由,我們可以將元數據這類小數據分配在小的條 帶,減少寫損失,而對于文件內容數據這類大數據,如果僅僅考慮寫損失問題而將其也分配 到小條帶,那么仍然會對磁盤性能造成影響,因為如果將大數據分配到條帶較小的VLUN,會 占用多個小條帶,那么在修改大數據時就涉及對多個條帶的操作,這樣反而會降低系統效 率。
[0103] 綜上所述,將LUN劃分為VLUN1和VLUN2時包括以下兩種方案:一、劃分的VLUN1和 VLUN2的條帶容量大小不同,例如VLUN1中的條帶容量小于預設值X,VLUN2中的條帶容量 大于預設值y,限定y大于X,并且VLUN1和VLUN2中的條帶容量不會介于X和y之間;二、 VLUN1中使用RAID1,RAID1中不存在寫損失,VLUN2中使用RAID5,且VLUN2中的條帶容量 大于預設值y。經過上述劃分,在存儲數據時,將元數據存儲在VLUN1中,將文件內容數據存 儲在VLUN2中。
[0104] 可選的,在存儲數據時也可以直接根據用戶的指示將數據存儲在用戶指定的VLUN 中,例如,用戶想將文件內容數據存儲在VLUN1中,那么向系統下發10請求,系統根據10請 求將文件內容數據存儲在VLUN1中。
[0105] 進一步的,上述的文件操作策略可以將全部元數據都統一分配至一個VLUN里面, 這樣能夠匯聚元數據的10操作,提升10性能。因為磁盤數據讀寫先在cache中進行,一般 只有當cache中的數據大于條帶大小時,才會將數據寫入磁盤中。由于元數據較小,通過將 元數據集中存儲,當元數據的量累積到一定程度時,即數據量大于條帶大小時,一起寫入磁 盤,從而提升10性能。
[0106] 205、存儲設備進行初始化,對系統配置進行檢查。
[0107] 206、讀取磁盤陣列配置參數。
[0108] 207、建立VLUN1和VLUN2,根據磁盤陣列配置參數建立磁盤的管理數據。
[0109] 其中,磁盤的管理數據包括:兩種類型的VLUN的容量、兩種類型的VLUN的起始位 置、兩種類型的VLUN內部的條帶大小,以及兩種類型的VLUN所使用的RAID類型。
[0110] 具體的劃分步驟可以為:
[0111] 根據所述第一類型的VLUN的起始位置和所述第二類型的VLUN的起始位置,在所 述LUN對應的磁盤中確定所述第一類型的VLUN對應的存儲區域的起始位置和所述第二類 型的VLUN對應的存儲區域的起始位置;根據所述第一類型的VLUN的容量和所述第二類型 的VLUN的容量,在所述LUN對應的磁盤中,以所述第一類型的VLUN對應的存儲區域的起始 位置為起點,劃分與第一類型的VLUN的容量等同的存儲區域,以所述第二類型的VLUN對應 的存儲區域的起始位置為起點,劃分與第二類型的VLUN的容量等同的存儲區域;根據所述 第一類型的VLUN使用的RAID類型和所述第二類型的VLUN使用的RAID類型,在所述第一 類型的VLUN和所述第二類型的VLUN中配置對應的RAID類型;根據所述第一類型的VLUN 中的條帶容量,在所述第一類型的VLUN中劃分對應的條帶;根據所述第二類型的VLUN中的 條帶容量,在所述第二類型的VLUN中劃分對應的條帶。
[0112] 上述步驟配置完成后,以應用程序寫入文件為例,通過步驟208-步驟216詳細描 述數據分配過程。首先步驟208-步驟210是打開文件的過程,此過程中只是建立新文件, 主要是寫入元數據。
[0113] 208、調用文件系統接口,打開一個文件,在該文件中創建新的文件,為新創建的文 件分配元數據空間,并分配文件內容數據空間。
[0114] 其中,分配的元數據空間即是VLUN1對應的存儲區域,分配的文件內容數據空間 即是VLUN2對應的存儲區域。
[0115] 可選的,在分配數據空間時,可以進行動態分配。
[0116] 209、通過10模塊進行10調度,將元數據和文件內容數據對應的操作轉換為存儲 設備的10操作請求,并下發至存儲設備。
[0117] 其中,該10操作請求中并不區分文件內容數據和元數據,僅僅有數據對應的訪問 地址、存儲內容以及內容大小等,元數據和文件內容數據具有不同的訪問地址。
[0118] 210、存儲設備根據10操作請求中的訪問地址匹配到VLUN,對元數據和文件內容 數據進行存儲。
[0119] 例如,基于步驟208中的存儲分配,將元數據存儲在VLUN1對應的存儲區域,將文 件內容數據存儲在VLUN2對應的存儲區域。
[0120] 在執行完步驟208-210后,要將文件內容數據寫入到建立好的新文件中,執行步 驟211-步驟213。
[0121] 211、調用文件系統接口,更新元數據,將文件內容數據寫入分配好的數據空間。
[0122] 其中,元數據的更新主要包括文件的長度以及文件所占用的磁盤空間。
[0123] 212、通過10模塊進行10調度,將元數據和文件內容數據對應的操作轉換為存儲 設備的10操作請求,并下發至存儲設備。
[0124] 其中,該10操作請求中并不區分文件內容數據和元數據,僅僅有數據對應的訪問 地址、存儲內容以及內容大小等,元數據和文件內容數據具有不同的訪問地址。
[0125] 213、存儲設備根據10操作請求中的訪問地址匹配到VLUN,對元數據和文件內容 數據進行存儲。
[0126] 在執行完步驟211-213后,關閉寫好的文件,執行步驟214-步驟216。
[0127] 214、調用文件系統接口,更新元數據,關閉文件。
[0128] 其中,更新的元數據主要包括:文件修改的時間點。
[0129] 215、通過10模塊進行10調度,將元數據對應的操作轉換為存儲設備的10操作請 求,并下發至存儲設備。
[0130] 216、存儲設備根據10操作請求中的訪問地址匹配到VLUN,對元數據進行存儲。
[0131] 需要說明的是,本實施例是以將LUN劃分為兩個VLUN為例進行說明,在實際操作 過程中可以根據用戶需求按照本方法的策略將VLUN劃分成兩個以上的VLUN,但不論將LUN 劃分為幾個VLUN,這些VLUN中只包括兩種類型的VLUN,即每種VLUN類型可以包括多個 VLUN,本實施例并不對VLUN的劃分數目進行限定,此處不再做過多贅述。
[0132] 可選的,當劃分的每個類型的VLUN數量大于等于2時,以VLUN1的類型為例,劃分 了三個與VLUN1同類型的VLUN,分別定義為VLUNla、VLUNlb和VLUNlc,在存儲元數據時,可 以參照如下流程:根據多個VLUN的序號順序和所述存儲請求的先后順序,按照輪詢算法, 將所述存儲請求對應的元數據存儲到相應的VLUN中。具體的,通過下述例子說明輪詢算 法,例如,第一個10請求對應的元數據存儲在VLUNla中,第二個10請求對應的元數據存儲 在VLUNlb中,第三個10請求對應的元數據存儲在VLUNlc中,第四個10請求對應的元數據 再回頭存儲在VLUNla中,依此類推。
[0133] 或者,按照VLUN的序號順序依次進行存儲,例如,將所有10請求對應的元數據都 優先存儲在VLUNla中,當VLUNla被寫滿后,新的10請求對應的元數據存儲在VLUNlb中, 當VLUNlb被寫滿后,新的10請求對應的元數據存儲在VLUNlc中,依此類推。
[0134] 進一步的,當存儲數據完畢后,用戶讀取數據的過程如下:
[0135] 接收讀取請求,所述讀取請求包含了文件名;根據所述文件名,向存儲設備下發輸 入輸出10調度請求,在磁盤上獲取所述文件名對應的元數據所處的第一類型的VLUN的序 號;根據所述文件名和所述第一類型的VLUN的序號,獲取所述文件名對應的元數據在所述 第一類型的VLUN中的訪問地址;根據所述文件名對應的元數據在所述第一類型的VLUN中 的訪問地址,獲取所述文件名對應的元數據;解析所述文件名對應的元數據,獲取所述文件 名對應的文件內容數據的訪問地址;根據所述文件名對應的文件內容數據的訪問地址,獲 取所述文件名對應的文件內容數據。
[0136] 與現有技術相比,本發明實施例根據用戶業務配置磁盤陣列配置參數;根據所述 磁盤陣列配置參數將邏輯單元號LUN劃分成VLUN1和VLUN2, VLUN1和VLUN2為不同類型的 VLUN,VLUN1中寫損失較小,VLUN2中具有大容量的條帶;將文件內容數據存儲在VLUN2中, 將元數據存儲在VLUN1中。通過將LUN分為兩種類型的VLUN,并對VLUN的條帶容量和所使 用的RAID類型進行配置,降低存儲元數據造成的寫損失,解決了因寫損失帶來的磁盤性能 降低的問題。既可以提升磁盤中大數據的輸入輸出性能,同時也能極大的降低小數據所帶 來的寫損失。
[0137] 實施例三
[0138] 本實施例提供一種提高磁盤陣列性能的裝置30,如圖3所示,所述裝置30包括:
[0139] 接收單元31,用于接收存儲請求;
[0140] 確定單元32,用于確定所述接收單元31接收的所述存儲請求中要存儲的數據的 數據類型;
[0141] 第一存儲單元33,用于當所述確定單元32確定所述數據類型為元數據時,將所述 元數據存儲在第一類型的VLUN中,其中所述第一類型的VLUN中的條帶容量小于第一預設 值;
[0142] 第二存儲單元34,用于當所述確定單元32確定所述數據類型為文件內容數據時, 將所述文件內容數據存儲在第二類型的VLUN中,其中所述第二類型的VLUN中的條帶容量 大于第二預設值,所述第二預設值大于所述第一預設值。
[0143] 進一步的,如圖4所示,所述裝置30還包括:
[0144] 參數配置單元35,用于根據用戶業務需求,配置磁盤陣列配置參數;
[0145] 劃分單元36,用于根據所述參數配置單元35配置的所述磁盤陣列配置參數,將邏 輯單元號LUN劃分成至少一個第一類型的VLUN和至少一個第二類型的VLUN。
[0146] 其中,參數配置單元35配置的所述磁盤陣列配置參數包括:第一類型的VLUN的容 量、第二類型的VLUN的容量、第一類型的VLUN的起始位置、第二類型的VLUN的起始位置、 第一類型的VLUN使用的RAID類型、第二類型的VLUN使用的RAID類型、第一類型的VLUN 中的條帶容量和第二類型的VLUN中的條帶容量;
[0147] 則所述劃分單元36具體用于:根據所述第一類型的VLUN的起始位置和所述第二 類型的VLUN的起始位置,在所述LUN對應的磁盤中確定所述第一類型的VLUN對應的存儲 區域的起始位置和所述第二類型的VLUN對應的存儲區域的起始位置;
[0148] 根據所述第一類型的VLUN的容量和所述第二類型的VLUN的容量,在所述LUN對 應的磁盤中,以所述第一類型的VLUN對應的存儲區域的起始位置為起點,劃分與第一類型 的VLUN的容量等同的存儲區域,以所述第二類型的VLUN對應的存儲區域的起始位置為起 點,劃分與第二類型的VLUN的容量等同的存儲區域;
[0149] 根據所述第一類型的VLUN使用的RAID類型和所述第二類型的VLUN使用的RAID 類型,在所述第一類型的VLUN和所述第二類型的VLUN中配置對應的RAID類型;
[0150] 根據所述第一類型的VLUN中的條帶容量,在所述第一類型的VLUN中劃分對應的 條帶;根據所述第二類型的VLUN中的條帶容量,在所述第二類型的VLUN中劃分對應的條 帶。
[0151] 可選的,當所述第一類型的VLUN的數量為兩個或兩個以上時,所述第一存儲單元 33還用于:
[0152] 根據所述第一類型的VLUN的序號順序和所述存儲請求的先后順序,按照輪詢算 法,將所述存儲請求對應的元數據存儲到相應的第一類型的VLUN中;或者,
[0153] 根據所述第一類型的VLUN的序號順序,將所述元數據存儲在第一個第一類型的 VLUN中;當所述第一個第一類型的VLUN的存儲區域被寫滿時,將所述元數據存儲在下一個 第一類型的VLUN中。
[0154] 可選的,當所述第二類型的VLUN的數量為兩個或兩個以上時,所述第二存儲單元 34還用于:
[0155] 根據所述第二類型的VLUN的序號順序和所述存儲請求的先后順序,按照輪詢算 法,將所述存儲請求對應的文件內容數據存儲到相應的第二類型的VLUN中;或者,
[0156] 根據所述第二類型的VLUN的序號順序,將所述文件內容數據存儲在第一個第二 類型的VLUN中;當所述第一個第二類型的VLUN的存儲區域被寫滿時,將所述文件內容數據 存儲在下一個第二類型的VLUN中。
[0157] 進一步的,所述接收單元31還用于接收讀取請求,所述讀取請求包含了文件名; 進一步的,如圖4所示,所述裝置30還包括 :
[0158] 調度單元37,用于根據所述文件名向存儲設備下發輸入輸出10調度請求,在磁盤 上獲取所述文件名對應的元數據所處的第一類型的VLUN的序號;
[0159] 地址獲取單元38,用于根據所述文件名和所述第一類型的VLUN的序號,獲取所述 文件名對應的元數據在所述第一類型的VLUN中的訪問地址;
[0160] 讀取單元39,用于根據所述文件名對應的元數據在所述第一類型的VLUN中的訪 問地址,獲取所述文件名對應的元數據;
[0161] 解析單元310,用于解析所述文件名對應的元數據,獲取所述文件名對應的文件內 容數據的訪問地址;
[0162] 所述讀取單元39還用于根據所述文件名對應的文件內容數據的訪問地址,獲取 所述文件名對應的文件內容數據。
[0163] 進一步的,所述接收單元31接收的所述存儲請求具體為系統請求;
[0164] 則所述第一存儲單元33還用于根據所述系統請求,當所述數據類型為元數據時, 將所述元數據存儲在第三類型的VLUN中,其中所述第三類型的VLUN中的寫損失小于損失 閾值。
[0165] 與現有技術相比,本發明實施例首先接收存儲請求;確定存儲請求中要存儲的數 據的數據類型;將元數據存儲在第一類型的VLUN中,其中第一類型的VLUN中的條帶容量小 于第一預設值;將文件內容數據存儲在所述第二類型的VLUN中,第二類型的VLUN中的條帶 容量大于第二預設值,所述第二預設值大于所述第一預設值。通過將LUN分為兩種類型的 VLUN,并對VLUN的條帶容量和所使用的RAID類型進行配置,盡量將文件內容數據等大數據 分配在條帶容量較大的VLUN對應的存儲區域內,將元數據等小數據分配在條帶容量較小 的VLUN對應的存儲區域內,以降低寫損失。解決了因磁盤陣列中存在寫損失帶來的磁盤性 能降低的問題。這樣既可以提升磁盤中大數據的輸入輸出性能,同時也能極大的降低小數 據所帶來的寫損失。
[0166] 實施例四
[0167] 本實施例提供一種提高磁盤陣列性能的裝置40,如圖5所示,所述裝置40包括:
[0168] 接收器41,用于接收存儲請求;
[0169] 處理器42,用于確定所述接收器41接收的所述存儲請求中要存儲的數據的數據 類型;
[0170] 存儲器43,用于當所述處理器42確定所述數據類型為元數據時,將所述元數據存 儲在所述第一類型的VLUN中,其中所述第一類型的VLUN中的條帶容量小于第一預設值;以 及,用于當所述處理器42確定所述數據類型為文件內容數據時,將所述文件內容數據存儲 在所述第二類型的VLUN中,其中所述第二類型的VLUN中的條帶容量大于第二預設值,所述 第二預設值大于所述第一預設值。
[0171] 進一步的,所述處理器42還用于:根據用戶業務需求,配置磁盤陣列配置參數;以 及,用于根據所述參數配置單元配置的所述磁盤陣列配置參數,將邏輯單元號LUN劃分成 至少一個第一類型的VLUN和至少一個第二類型的VLUN。
[0172] 其中,所述磁盤陣列配置參數包括:第一類型的VLUN的容量、第二類型的VLUN的 容量、第一類型的VLUN的起始位置、第二類型的VLUN的起始位置、第一類型的VLUN使用的 RAID類型、第二類型的VLUN使用的RAID類型、第一類型的VLUN中的條帶容量和第二類型 的VLUN中的條帶容量;
[0173] 則所述處理器42具體用于:根據所述第一類型的VLUN的起始位置和所述第二類 型的VLUN的起始位置,在所述LUN對應的磁盤中確定所述第一類型的VLUN對應的存儲區 域的起始位置和所述第二類型的VLUN對應的存儲區域的起始位置;
[0174] 根據所述第一類型的VLUN的容量和所述第二類型的VLUN的容量,在所述LUN對 應的磁盤中,以所述第一類型的VLUN對應的存儲區域的起始位置為起點,劃分與第一類型 的VLUN的容量等同的存儲區域,以所述第二類型的VLUN對應的存儲區域的起始位置為起 點,劃分與第二類型的VLUN的容量等同的存儲區域;
[0175] 根據所述第一類型的VLUN使用的RAID類型和所述第二類型的VLUN使用的RAID 類型,在所述第一類型的VLUN和所述第二類型的VLUN中配置對應的RAID類型;
[0176] 根據所述第一類型的VLUN中的條帶容量,在所述第一類型的VLUN中劃分對應的 條帶;根據所述第二類型的VLUN中的條帶容量,在所述第二類型的VLUN中劃分對應的條 帶。
[0177] 可選的,當所述第一類型的VLUN的數量為兩個或兩個以上時,所述存儲器43還用 于:根據所述第一類型的VLUN的序號順序和所述存儲請求的先后順序,按照輪詢算法,將 所述存儲請求對應的元數據存儲到相應的第一類型的VLUN中;或者,根據所述第一類型的 VLUN的序號順序,將所述元數據存儲在第一個第一類型的VLUN中;當所述第一個第一類型 的VLUN的存儲區域被寫滿時,將所述元數據存儲在下一個第一類型的VLUN中。
[0178] 可選的,當所述第二類型的VLUN的數量為兩個或兩個以上時,所述存儲器43還用 于:根據所述第二類型的VLUN的序號順序和所述存儲請求的先后順序,按照輪詢算法,將 所述存儲請求對應的文件內容數據存儲到相應的第二類型的VLUN中;或者,根據所述第二 類型的VLUN的序號順序,將所述文件內容數據存儲在第一個第二類型的VLUN中;當所述第 一個第二類型的VLUN的存儲區域被寫滿時,將所述文件內容數據存儲在下一個第二類型 的VLUN中。
[0179] 進一步的,所述接收器41還用于接收讀取請求,所述讀取請求包含了文件名;則 所述處理器42還用于根據所述文件名向存儲設備下發輸入輸出10調度請求,在磁盤上獲 取所述文件名對應的元數據所處的第一類型的VLUN的序號;以及,用于根據所述文件名和 所述第一類型的VLUN的序號,獲取所述文件名對應的元數據在所述第一類型的VLUN中的 訪問地址;以及,用于根據所述文件名對應的元數據在所述第一類型的VLUN中的訪問地 址,獲取所述文件名對應的元數據;以及,用于解析所述文件名對應的元數據,獲取所述文 件名對應的文件內容數據的訪問地址;以及,用于根據所述文件名對應的文件內容數據的 訪問地址,獲取所述文件名對應的文件內容數據。
[0180] 進一步的,所述接收器41接收的所述存儲請求具體為系統請求;則所述存儲器43 還用于根據所述系統請求,當所述數據類型為元數據時,將所述元數據存儲在第三類型的 VLUN中,其中所述第三類型的VLUN中的寫損失小于損失閾值。
[0181] 與現有技術相比,本發明實施例首先接收存儲請求;確定存儲請求中要存儲的數 據的數據類型;將元數據存儲在第一類型的VLUN中,其中第一類型的VLUN中的條帶容量小 于第一預設值;將文件內容數據存儲在所述第二類型的VLUN中,第二類型的VLUN中的條帶 容量大于第二預設值,所述第二預設值大于所述第一預設值。通過將LUN分為兩種類型的 VLUN,并對VLUN的條帶容量和所使用的RAID類型進行配置,盡量將文件內容數據等大數據 分配在條帶容量較大的VLUN對應的存儲區域內,將元數據等小數據分配在條帶容量較小 的VLUN對應的存儲區域內,以降低寫損失。解決了因磁盤陣列中存在寫損失帶來的磁盤性 能降低的問題。這樣既可以提升磁盤中大數據的輸入輸出性能,同時也能極大的降低小數 據所帶來的寫損失。
[0182] 本發明實施例提供的提高磁盤陣列性能的裝置可以實現上述提供的方法實施例, 具體功能實現請參見方法實施例中的說明,在此不再贅述。本發明實施例提供的提高磁盤 陣列性能的方法及裝置可以適用于磁盤陣列的性能優化,但不僅限于此。
[0183] 本領域普通技術人員可以理解實現上述實施例方法中的全部或部分流程,是可以 通過計算機程序來指令相關的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質 中,該程序在執行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質可為磁 碟、光盤、只讀存儲記憶體(Read-Only Memory, ROM)或隨機存儲記憶體(Random Access Memory,RAM)等。
[0184] 以上所述,僅為本發明的【具體實施方式】,但本發明的保護范圍并不局限于此,任何 熟悉本【技術領域】的技術人員在本發明揭露的技術范圍內,可輕易想到的變化或替換,都應 涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應該以權利要求的保護范圍為準。
【權利要求】
1. 一種提高磁盤陣列性能的方法,其特征在于,包括: 接收存儲請求; 確定所述存儲請求中要存儲的數據的數據類型; 當確定所述數據類型為元數據時,將所述元數據存儲在第一類型的虛擬邏輯單元號 VLUN中,其中所述第一類型的VLUN中的條帶容量小于第一預設值; 當確定所述數據類型為文件內容數據時,將所述文件內容數據存儲在第二類型的VLUN 中,其中所述第二類型的VLUN中的條帶容量大于第二預設值,所述第二預設值大于所述第 一預設值。
2. 根據權利要求1所述的方法,其特征在于,在所述接收存儲請求之前,所述方法還包括: 根據用戶業務需求,配置磁盤陣列配置參數; 根據所述磁盤陣列配置參數,將邏輯單元號LUN劃分成至少一個第一類型的VLUN和至 少一個第二類型的VLUN。
3. 根據權利要求2所述的方法,其特征在于,所述磁盤陣列配置參數包括:第一類型的 VLUN的容量、第二類型的VLUN的容量、第一類型的VLUN的起始位置、第二類型的VLUN的起 始位置、第一類型的VLUN使用的RAID類型、第二類型的VLUN使用的RAID類型、第一類型 的VLUN中的條帶容量和第二類型的VLUN中的條帶容量; 所述根據所述磁盤陣列配置參數,將LUN劃分成至少一個第一類型的VLUN和至少一個 第二類型的VLUN包括: 根據所述第一類型的VLUN的起始位置和所述第二類型的VLUN的起始位置,在所述LUN 對應的磁盤中確定所述第一類型的VLUN對應的存儲區域的起始位置和所述第二類型的 VLUN對應的存儲區域的起始位置; 根據所述第一類型的VLUN的容量和所述第二類型的VLUN的容量,在所述LUN對應 的磁盤中,以所述第一類型的VLUN對應的存儲區域的起始位置為起點,劃分與第一類型的 VLUN的容量等同的存儲區域,以所述第二類型的VLUN對應的存儲區域的起始位置為起點, 劃分與第二類型的VLUN的容量等同的存儲區域; 根據所述第一類型的VLUN使用的RAID類型和所述第二類型的VLUN使用的RAID類型, 在所述第一類型的VLUN和所述第二類型的VLUN中配置對應的RAID類型; 根據所述第一類型的VLUN中的條帶容量,在所述第一類型的VLUN中劃分對應的條 帶; 根據所述第二類型的VLUN中的條帶容量,在所述第二類型的VLUN中劃分對應的條帶。
4. 根據權利要求1所述的方法,其特征在于,當所述第一類型的VLUN的數量為兩個或 兩個以上時,所述將所述元數據存儲在所述第一類型的VLUN中包括 : 根據所述第一類型的VLUN的序號順序和所述存儲請求的先后順序,按照輪詢算法,將 所述存儲請求對應的元數據存儲到相應的第一類型的VLUN中;或者, 根據所述第一類型的VLUN的序號順序,將所述元數據存儲在第一個第一類型的VLUN 中;當所述第一個第一類型的VLUN的存儲區域被寫滿時,將所述元數據存儲在下一個第一 類型的VLUN中。
5. 根據權利要求1所述的方法,其特征在于,當所述第二類型的VLUN的數量為兩個或 兩個以上時,所述將所述文件內容數據存儲在所述第二類型的VLUN中包括 : 根據所述第二類型的VLUN的序號順序和所述存儲請求的先后順序,按照輪詢算法,將 所述存儲請求對應的文件內容數據存儲到相應的第二類型的VLUN中;或者, 根據所述第二類型的VLUN的序號順序,將所述文件內容數據存儲在第一個第二類型 的VLUN中;當所述第一個第二類型的VLUN的存儲區域被寫滿時,將所述文件內容數據存儲 在下一個第二類型的VLUN中。
6. 根據權利要求1所述的方法,其特征在于,所述方法還包括: 接收讀取請求,所述讀取請求包含了文件名; 根據所述文件名,向存儲設備下發輸入輸出10調度請求,在磁盤上獲取所述文件名對 應的元數據所處的第一類型的VLUN的序號; 根據所述文件名和所述第一類型的VLUN的序號,獲取所述文件名對應的元數據在所 述第一類型的VLUN中的訪問地址; 根據所述文件名對應的元數據在所述第一類型的VLUN中的訪問地址,獲取所述文件 名對應的元數據; 解析所述文件名對應的元數據,獲取所述文件名對應的文件內容數據的訪問地址; 根據所述文件名對應的文件內容數據的訪問地址,獲取所述文件名對應的文件內容數 據。
7. 根據權利要求1所述的方法,其特征在于,所述存儲請求具體為系統請求;所述方法 還包括:根據所述系統請求,當所述數據類型為元數據時,將所述元數據存儲在第三類型的 VLUN中,其中所述第三類型的VLUN中的寫損失小于損失閾值。
8. -種提高磁盤陣列性能的裝置,其特征在于,包括: 接收單元,用于接收存儲請求; 確定單元,用于確定所述接收單元接收的所述存儲請求中要存儲的數據的數據類型; 第一存儲單元,用于當所述確定單元確定所述數據類型為元數據時,將所述元數據存 儲在第一類型的虛擬邏輯單元號VLUN中,其中所述第一類型的VLUN中的條帶容量小于第 一預設值; 第二存儲單元,用于當所述確定單元確定所述數據類型為文件內容數據時,將所述文 件內容數據存儲在第二類型的VLUN中,其中所述第二類型的VLUN中的條帶容量大于第二 預設值,所述第二預設值大于所述第一預設值。
9. 根據權利要求8所述的裝置,其特征在于,所述裝置還包括: 參數配置單元,用于根據用戶業務需求,配置磁盤陣列配置參數; 劃分單元,用于根據所述參數配置單元配置的所述磁盤陣列配置參數,將邏輯單元號 LUN劃分成至少一個第一類型的VLUN和至少一個第二類型的VLUN。
10. 根據權利要求9所述的裝置,其特征在于,所述磁盤陣列配置參數包括:第一類型 的VLUN的容量、第二類型的VLUN的容量、第一類型的VLUN的起始位置、第二類型的VLUN 的起始位置、第一類型的VLUN使用的RAID類型、第二類型的VLUN使用的RAID類型、第一 類型的VLUN中的條帶容量和第二類型的VLUN中的條帶容量; 所述劃分單元具體用于:根據所述第一類型的VLUN的起始位置和所述第二類型的 VLUN的起始位置,在所述LUN對應的磁盤中確定所述第一類型的VLUN對應的存儲區域的起 始位置和所述第二類型的VLUN對應的存儲區域的起始位置; 根據所述第一類型的VLUN的容量和所述第二類型的VLUN的容量,在所述LUN對應 的磁盤中,以所述第一類型的VLUN對應的存儲區域的起始位置為起點,劃分與第一類型的 VLUN的容量等同的存儲區域,以所述第二類型的VLUN對應的存儲區域的起始位置為起點, 劃分與第二類型的VLUN的容量等同的存儲區域; 根據所述第一類型的VLUN使用的RAID類型和所述第二類型的VLUN使用的RAID類型, 在所述第一類型的VLUN和所述第二類型的VLUN中配置對應的RAID類型; 根據所述第一類型的VLUN中的條帶容量,在所述第一類型的VLUN中劃分對應的條 帶; 根據所述第二類型的VLUN中的條帶容量,在所述第二類型的VLUN中劃分對應的條帶。
11. 根據權利要求8所述的裝置,其特征在于,當所述第一類型的VLUN的數量為兩個或 兩個以上時,所述第一存儲單元還用于: 根據所述第一類型的VLUN的序號順序和所述存儲請求的先后順序,按照輪詢算法,將 所述存儲請求對應的元數據存儲到相應的第一類型的VLUN中;或者, 根據所述第一類型的VLUN的序號順序,將所述元數據存儲在第一個第一類型的VLUN 中;當所述第一個第一類型的VLUN的存儲區域被寫滿時,將所述元數據存儲在下一個第一 類型的VLUN中。
12. 根據權利要求8所述的裝置,其特征在于,當所述第二類型的VLUN的數量為兩個或 兩個以上時,所述第二存儲單元還用于: 根據所述第二類型的VLUN的序號順序和所述存儲請求的先后順序,按照輪詢算法,將 所述存儲請求對應的文件內容數據存儲到相應的第二類型的VLUN中;或者, 根據所述第二類型的VLUN的序號順序,將所述文件內容數據存儲在第一個第二類型 的VLUN中;當所述第一個第二類型的VLUN的存儲區域被寫滿時,將所述文件內容數據存儲 在下一個第二類型的VLUN中。
13. 根據權利要求8所述的裝置,其特征在于,所述接收單元還用于接收讀取請求,所 述讀取請求包含了文件名;則所述裝置還包括: 調度單元,用于根據所述文件名,向存儲設備下發輸入輸出10調度請求,在磁盤上獲 取所述文件名對應的元數據所處的第一類型的VLUN的序號; 地址獲取單元,用于根據所述文件名和所述第一類型的VLUN的序號,獲取所述文件名 對應的元數據在所述第一類型的VLUN中的訪問地址; 讀取單元,用于根據所述文件名對應的元數據在所述第一類型的VLUN中的訪問地址, 獲取所述文件名對應的元數據; 解析單元,用于解析所述文件名對應的元數據,獲取所述文件名對應的文件內容數據 的訪問地址; 所述讀取單元還用于根據所述文件名對應的文件內容數據的訪問地址,獲取所述文件 名對應的文件內容數據。
14. 根據權利要求8所述的裝置,其特征在于,所述接收單元接收的所述存儲請求具體 為系統請求;則所述第一存儲單元還用于根據所述系統請求,當所述數據類型為元數據時, 將所述元數據存儲在第三類型的VLUN中,其中所述第三類型的VLUN中的寫損失小于損失 閾值。
【文檔編號】G06F3/06GK104216660SQ201310213470
【公開日】2014年12月17日 申請日期:2013年5月30日 優先權日:2013年5月30日
【發明者】沈劍剛, 李耀輝 申請人:華為軟件技術有限公司