欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

自管理存儲方法和系統(tǒng)的制作方法

文檔序號:8006030閱讀:332來源:國知局
自管理存儲方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明實施例提供一種自管理存儲方法和系統(tǒng),該包括:接收用戶發(fā)送的第一邏輯地址分配請求;其中,所述分配請求中攜帶第一邏輯地址類型參數;根據所述第一邏輯地址類型參數進行查詢,獲取滿足所述第一邏輯地址類型參數的所述第一邏輯地址;發(fā)送所述第一邏輯地址給所述用戶。本發(fā)明實施例提供的方法,解決了現有技術無法根據用戶的存儲需求為用戶提供相應的存儲資源的技術問題。
【專利說明】自管理存儲方法和系統(tǒng)

【技術領域】
[0001]本發(fā)明實施例涉及通信【技術領域】,尤其涉及一種自管理存儲方法和系統(tǒng)。

【背景技術】
[0002]隨著通信技術的不斷發(fā)展,計算機的存儲資源由多種異構塊設備組成的情況越來越普遍,這些異構塊設備在存儲的可靠性以及被訪問速度方面各不相同,例如:固態(tài)硬盤(Solid State Drive,以下簡稱SSD)比硬盤驅動器(Hard Disk Drive,以下簡稱HDD)的速度快,但SSD的可靠性低;又例如:同樣是HDD,不同廠商不同型號的HDD讀寫速度也不相同;且不同級別的獨立磁盤冗余陣列(Redundant Array of Independent Disks,以下簡稱RAID)構建的塊設備的可靠性也不盡相同。因此需要對構成主機存儲資源的多個異構塊設備進行統(tǒng)一管理,以滿足用戶的訪問需求
[0003]現有技術中,通過在虛擬文件系統(tǒng)和公有云存儲系統(tǒng)之間構建存儲管理裝置和訪問異構云存儲系統(tǒng)資源的適配器來整合異構的云存儲資源,即通過適配器對用戶提供統(tǒng)一的邏輯抽象層,并通過存儲管理裝置管理異構云存儲資源,使得用戶訪問異構云存儲資源簡單方便。
[0004]然而現有技術無法根據用戶的存儲需求為用戶提供相應的存儲資源。


【發(fā)明內容】

[0005]本發(fā)明實施例提供一種自管理存儲方法和系統(tǒng),用以解決現有技術無法根據用戶的存儲需求為用戶提供相應的存儲資源的技術問題。
[0006]本發(fā)明第一方面提供一種自管理存儲方法,包括:
[0007]接收用戶發(fā)送的第一邏輯地址分配請求;其中,所述分配請求中攜帶第一邏輯地址類型參數;
[0008]根據所述第一邏輯地址類型參數進行查詢,獲取滿足所述第一邏輯地址類型參數的所述第一邏輯地址;
[0009]發(fā)送所述第一邏輯地址給所述用戶。
[0010]結合第一方面,在第一方面的第一種可能的實施方式中,所述第一邏輯地址類型參數包括所述用戶對所述第一邏輯地址的速度要求參數、可靠性要求參數以及地址長度要求;則所述根據所述第一邏輯地址類型參數進行查詢,獲取滿足所述第一邏輯地址類型參數的所述第一邏輯地址,包括:
[0011]在邏輯地址段chunk表中查詢滿足根據所述速度要求參數和所述可靠性要求參數的第一 chunk ;其中,所述chunk表中的所有chunk均建立邏輯地址和物理地址的映射關系;
[0012]根據所述地址長度要求參數和所述第一 chunk確定所述第一邏輯地址。
[0013]結合第一方面的第一種可能的實施方式,在第一方面的第二種可能的實施方式中,所述根據所述地址長度要求參數和所述第一 chunk確定所述第一邏輯地址,包括:
[0014]判斷所述第一 chunk的空閑地址的長度是否滿足所述地址長度要求參數;
[0015]若是,則根據所述地址長度要求參數從所述第一 chunk的空閑地址中確定所述第一邏輯地址;或者,
[0016]若否,創(chuàng)建滿足所述速度要求參數和可靠性要求參數的第二 chunk,并根據所述地址長度要求參數從所述第二 chunk中確定第一邏輯地址。
[0017]結合第一方面的第二種可能的實施方式,在第一方面的第三種可能的實施方式中,所述創(chuàng)建滿足所述速度要求參數和可靠性要求參數的第二 chunk,包括:
[0018]查詢未與所述邏輯地址建立映關系的空閑物理地址空間表,確定滿足所述速度要求參數的第二物理地址段;
[0019]根據所述可靠性要求參數,將所述第二物理地址段映射到第二邏輯地址段,生成所述第二 chunk。
[0020]結合第一方面的第三種可能的實施方式,在第一方面的第四種可能的實施方式中,所述根據所述可靠性要求參數,將所述第二物理地址段映射到第二邏輯地址段,生成所述第二 chunk之后,還包括:
[0021]將所述第二物理地址段從所述空閑物理地址空間表中刪除;
[0022]將所述第二 chunk增加至所述chunk表中,并將所述第二 chunk標記為空閑。
[0023]結合第一方面至第一方面的第四種可能的實施方式中的任一項,在第一方面的第五種可能的實施方式中,所述接收用戶發(fā)送的第一邏輯地址分配請求,具體為:
[0024]接收所述用戶輸入的申請所述第一邏輯地址的第一接口命令;其中,所述第一接口命令中攜帶所述第一邏輯地址類型參數。
[0025]結合第一方面至第一方面的第四種可能的實施方式中的任一項,在第一方面的第六種可能的實施方式中,在發(fā)送所述第一邏輯地址給所述用戶之后,還包括:
[0026]接收所述用戶輸入的用于指示寫入數據第二接口命令;其中,所述第二接口命令包括待寫入的第一數據和所述第一邏輯地址;
[0027]根據所述第一邏輯地址查找所述chunk表,獲取所述第一邏輯地址對應的第一物理地址;
[0028]將所述第一數據寫入所述第一物理地址對應的塊設備。
[0029]結合第一方面至第一方面的第四種可能的實施方式中的任一項,在第一方面的第七種可能的實施方式中,在發(fā)送所述第一邏輯地址給所述用戶之后,還包括:
[0030]接收所述用戶輸入的用于指示讀取數據的第三接口命令;其中,所述第三接口命令包括待讀取的第二數據的字節(jié)長度和所述第一邏輯地址;
[0031]根據所述第一邏輯地址查找所述chunk表,獲取所述第一邏輯地址對應的第一物理地址;
[0032]從所述第一物理地址對應的塊設備中讀取所述字節(jié)長度的第二數據。
[0033]結合第一方面至第一方面的第四種可能的實施方式中的任一項,在第一方面的第八種可能的實施方式中,在發(fā)送所述第一邏輯地址給所述用戶之后,還包括:
[0034]接收所述用戶輸入的第四接口命令,所述第四接口命令包括所要釋放的第一邏輯地址偏移;
[0035]根據所述第一邏輯地址偏移查找chunk表,確定所述第一邏輯地址偏移對應的所述第一 chunk ;
[0036]將所述第一邏輯地址偏移增加至所述第一 chunk。
[0037]結合第一方面至第一方面的第四種可能的實施方式中的任一項,在第一方面的第九種可能的實施方式中,在發(fā)送所述第一邏輯地址給所述用戶之后,還包括:
[0038]接收所述用戶輸入的用于指示刪除塊設備的第五接口命令;其中,所述第五接口命令攜帶待刪除的塊設備的名稱;
[0039]刪除所述待刪除的塊設備的名稱對應的塊設備。
[0040]結合第一方面至第一方面的第四種可能的實施方式中的任一項,在第一方面的第十種可能的實施方式中,在發(fā)送所述第一邏輯地址給所述用戶之后,還包括:
[0041]接收所述用戶輸入的用于指示增加塊設備的第六接口命令;其中,所述第六接口命令攜帶待增加的塊設備的名稱;
[0042]根據所述待增加的塊設備的名稱確定所述待增加的塊設備的物理地址空間,并將所述待增加的塊設備的物理地址空間增加至所述空閑物理地址空間表。
[0043]本發(fā)明第二方面提供一種自管理存儲系統(tǒng),包括:
[0044]第一接收模塊,用于接收用戶發(fā)送的第一邏輯地址分配請求;其中,所述分配請求中攜帶第一邏輯地址類型參數;
[0045]第一獲取模塊,用于根據所述第一邏輯地址類型參數進行查詢,獲取滿足所述第一邏輯地址類型參數的所述第一邏輯地址;
[0046]第一發(fā)送模塊,用于發(fā)送所述第一邏輯地址給所述用戶。
[0047]結合第二方面,在第二方面的第一種可能的實施方式中,所述第一邏輯地址類型參數包括所述用戶對所述第一邏輯地址的速度要求參數、可靠性要求參數以及地址長度要求參數;則所述第一獲取模塊包括:
[0048]查詢單元,用于在邏輯地址段chunk表中查詢滿足根據所述速度要求參數和所述可靠性要求參數的第一 chunk ;其中,所述chunk表中的所有chunk均建立邏輯地址和物理地址的映射關系;
[0049]確定單元,用于根據所述地址長度要求參數和所述第一 chunk確定所述第一邏輯地址。
[0050]結合第二方面的第一種可能的實施方式,在第二方面的第二種可能的實施方式中,所述確定單元具體用于判斷所述第一 chunk的空閑地址的長度是否滿足所述地址長度要求參數;
[0051]若是,則根據所述地址長度要求參數從所述第一 chunk的空閑地址中確定所述第一邏輯地址;或者,
[0052]若否,創(chuàng)建滿足所述速度要求參數和可靠性要求參數的第二 chunk,并根據所述地址長度要求參數從所述第二 chunk中確定第一邏輯地址。
[0053]結合第二方面的第二種可能的實施方式,在第二方面的第三種可能的實施方式中,所述確定單元包括:
[0054]查詢子單元,用于查詢未與所述邏輯地址建立映關系的空閑物理地址空間表,確定滿足所述速度要求參數的第二物理地址段;
[0055]生成子單元,用于根據所述可靠性要求參數,將所述第二物理地址段映射到第二邏輯地址段,生成所述第二 chunk。
[0056]結合第二方面的第三種可能的實施方式,在第二方面的第四種可能的實施方式中,所述確定單元還包括:
[0057]刪除子單元,用于在所述生成子單元根據所述可靠性要求參數,將所述第二物理地址段映射到第二邏輯地址段,生成所述第二 chunk之后,將所述第二物理地址段從所述空閑物理地址空間表中刪除;
[0058]chunk增加子單元,用于將所述第二 chunk增加至所述chunk表中,并將所述第二chunk標記為空閑。
[0059]結合第二方面至第二方面的第四種可能的實施方式中的任一項,在第二方面的第五種可能的實施方式中,所述第一接收模塊具體用于接收所述用戶輸入的申請所述第一邏輯地址的第一接口命令;其中,所述第一接口命令中攜帶所述第一邏輯地址類型參數。
[0060]結合第二方面至第二方面的第四種可能的實施方式中的任一項,在第二方面的第TK種可能的實施方式中,所述系統(tǒng)還包括:
[0061]第二接收模塊,用于在所述第一發(fā)送模塊發(fā)送所述第一邏輯地址給所述用戶之后,接收所述用戶輸入的用于指示寫入數據第二接口命令;其中,所述第二接口命令包括待寫入的第一數據和所述第一邏輯地址;
[0062]第二獲取模塊,用于根據所述第一邏輯地址查找所述chunk表,獲取所述第一邏輯地址對應的第一物理地址;
[0063]寫入模塊,用于將所述第一數據寫入所述第一物理地址對應的塊設備。
[0064]結合第二方面至第二方面的第四種可能的實施方式中的任一項,在第二方面的第七種可能的實施方式中,所述系統(tǒng)還包括:
[0065]第三接收模塊,用于接收所述用戶輸入的用于指示讀取數據的第三接口命令;其中,所述第三接口命令包括待讀取的第二數據的字節(jié)長度和所述第一邏輯地址;
[0066]第三獲取模塊,用于根據所述第一邏輯地址查找所述chunk表,獲取所述第一邏輯地址對應的第一物理地址;
[0067]讀取模塊,用于從所述第一物理地址對應的塊設備中讀取所述字節(jié)長度的第二數據。
[0068]結合第二方面至第二方面的第四種可能的實施方式中的任一項,在第二方面的第八種可能的實施方式中,所述系統(tǒng)還包括:
[0069]第四接收模塊,用于在所述第一發(fā)送模塊發(fā)送所述第一邏輯地址給所述用戶之后,接收所述用戶輸入的第四接口命令,所述第四接口命令包括所要釋放的第一邏輯地址偏移;
[0070]確定模塊,用于根據所述第一邏輯地址偏移確定所述第一邏輯地址偏移對應的所述第一 chunk ;
[0071]地址添加模塊,用于將所述第一邏輯地址偏移增加至所述第一 chunk。
[0072]結合第二方面至第二方面的第四種可能的實施方式中的任一項,在第二方面的第九種可能的實施方式中,所述系統(tǒng)還包括:
[0073]第五接收模塊,用于在所述第一發(fā)送模塊發(fā)送所述第一邏輯地址給所述用戶之后,接收所述用戶輸入的用于指示刪除塊設備的第五接口命令;其中,所述第五接口命令攜帶待刪除的塊設備的名稱;
[0074]刪除模塊,用于刪除所述待刪除的塊設備的名稱對應的塊設備。
[0075]結合第二方面至第二方面的第四種可能的實施方式中的任一項,在第二方面的第十種可能的實施方式中,所述系統(tǒng)還包括:
[0076]第六接收模塊,用于在所述第一發(fā)送模塊發(fā)送所述第一邏輯地址給所述用戶之后,接收所述用戶輸入的用于指示增加塊設備的第六接口命令;其中,所述第六接口命令攜帶待增加的塊設備的名稱;
[0077]設備增加模塊,用于根據所述待增加的塊設備的名稱確定所述待增加的塊設備的物理地址空間,并將所述待增加的塊設備的物理地址空間增加至所述空閑物理地址空間表。
[0078]本發(fā)明實施例提供了一種自管理存儲方法和系統(tǒng),通過接收用戶在分配請求中所攜帶第一邏輯地址類型參數,并根據該第一邏輯地址類型參數進行查詢以獲取滿足該第一邏輯地址類型參數的第一邏輯地址,將第一邏輯地址發(fā)送給用戶,使得用戶可以根據自身的存儲需求獲取相應的存儲資源,進而確保存儲資源能夠按需分配給用戶。

【專利附圖】

【附圖說明】
[0079]為了更清楚地說明本發(fā)明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
[0080]圖1為本發(fā)明提供的自管理存儲方法實施例一的流程示意圖;
[0081]圖2為本發(fā)明提供的自管理存儲方法實施例二的流程示意圖;
[0082]圖3為本發(fā)明提供的自管理存儲方法實施例三的流程示意圖;
[0083]圖4為本發(fā)明提供的自管理存儲方法實施例四的流程示意圖;
[0084]圖5為本發(fā)明提供的自管理存儲方法實施例五的流程示意圖;
[0085]圖6為本發(fā)明提供的自管理存儲方法實施例六的流程示意圖;
[0086]圖7為本發(fā)明提供的自管理存儲方法實施例七的流程示意圖;
[0087]圖8為本發(fā)明提供的自管理存儲系統(tǒng)實施例一的結構示意圖;
[0088]圖9為本發(fā)明提供的自管理存儲系統(tǒng)實施例二的結構示意圖;
[0089]圖10為本發(fā)明提供的自管理存儲系統(tǒng)實施例三的結構示意圖;
[0090]圖11為本發(fā)明提供的自管理存儲系統(tǒng)實施例四的結構示意圖;
[0091]圖12為本發(fā)明提供的自管理存儲系統(tǒng)實施例五的結構示意圖;
[0092]圖13為本發(fā)明提供的自管理存儲系統(tǒng)實施例六的結構示意圖;
[0093]圖14為本發(fā)明提供的自管理存儲系統(tǒng)實施例七的結構示意圖。

【具體實施方式】
[0094]為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0095]圖1為本發(fā)明提供的自管理存儲方法實施例一的流程示意圖,本發(fā)明實施例提供了用戶根據自身的存儲需求獲取相應的存儲資源的過程。本發(fā)明實施例的執(zhí)行主體可以為自管理存儲系統(tǒng),該自管理存儲系統(tǒng)可以位于主機中。該方法包括:
[0096]SlOl:接收用戶發(fā)送的第一邏輯地址分配請求;其中,該分配請求中攜帶第一邏輯地址類型參數。
[0097]本發(fā)明實施例中的自管理存儲系統(tǒng)處于主機的文件系統(tǒng)和通用塊層之間(這里的文件系統(tǒng)還可以是其他的上層系統(tǒng),例如:鍵值(Key-Value)存儲系統(tǒng),本發(fā)明對此不做限制),通用塊層之下連接的是多個塊設備和塊設備的驅動程序;自管理存儲系統(tǒng)可以將物理塊設備組織起來,面向用戶提供統(tǒng)一的邏輯地址和按字節(jié)訪問的接口,并且上述邏輯地址與塊設備的物理地址有一定的映射關系。
[0098]具體的,當用戶需要申請第一邏輯地址時,便向自管理存儲系統(tǒng)發(fā)送第一邏輯地址分配請求,該分配請求攜帶第一邏輯地址類型參數,該第一邏輯地址類型參數即用戶對所申請的第一邏輯地址的存儲要求。其中,上述第一邏輯地址可以是一個邏輯地址段,還可以只是一個單獨的邏輯地址,本發(fā)明實施例對此不做限制;上述第一邏輯地址類型參數可以是用戶對第一邏輯地址的速度級別的要求參數、對第一邏輯地址存儲數據時的可靠性級別的要求參數以及對第一邏輯地址的地址長度的要求參數中的至少一種參數。
[0099]S102:根據第一邏輯地址類型參數進行查詢,獲取滿足第一邏輯地址類型參數的第一邏輯地址。
[0100]S103:發(fā)送第一邏輯地址給用戶。
[0101]具體的,自管理存儲系統(tǒng)根據上述用戶對所要獲取的第一邏輯地址的第一邏輯地址類型參數進行查詢,以獲取滿足上述第一邏輯地址類型參數的第一邏輯地址,并將該邏輯地址分配給用戶,同時將第一邏輯地址標記為已分配;由于所獲取的第一邏輯地址已經和通用塊層下的多個塊設備的物理地址建立了相應的映射關系,因此當用戶獲取到第一邏輯地址之后,若要向該第一邏輯地址寫入數據,則自管理存儲系統(tǒng)會根據上述映射關系查找到與該第一邏輯地址對應的物理地址,進而找到該物理地址對應的塊設備,將數據寫入該塊設備。
[0102]本發(fā)明實施例提供的方法,通過接收用戶在分配請求中所攜帶第一邏輯地址類型參數,并根據該第一邏輯地址類型參數進行查詢以獲取滿足該第一邏輯地址類型參數的第一邏輯地址,將第一邏輯地址發(fā)送給用戶,使得用戶可以根據自身的存儲需求獲取相應的存儲資源,進而確保存儲資源能夠按需分配給用戶。
[0103]進一步地,上述第一邏輯地址類型參數可以包括用戶對上述第一邏輯地址的速度要求參數、可靠性要求參數以及地址長度要求參數;在圖1所示實施例的基礎上,作為本發(fā)明的一種可行的實施方式,本實施例提供了自管理存儲系統(tǒng)根據第一邏輯地址類型參數獲取第一邏輯地址的具體過程。即上述S102具體包括:在邏輯地址段(chunk)表中查詢滿足根據上述速度要求參數和可靠性要求參數的第一 chunk ;其中,該chunk表中的所有chunk均建立邏輯地址和物理地址的映射關系;根據地址長度要求參數和第一 chunk確定第一邏輯地址。
[0104]具體的,自管理存儲系統(tǒng)根據用戶對所要申請的第一邏輯地址的速度要求參數和可靠性要求參數在chunk表中進行查詢,以獲取符合上述速度要求參數和可靠性要求參數的第一 chunk ;其中,chunk表中包含了至少一個chunk, chunk表中的所有chunk均建立了邏輯地址和物理地址的映射關系;且一個chunk即為與塊設備的物理地址建立了映射關系的一段邏輯地址。
[0105]在自管理存儲系統(tǒng)確定符合上述用戶對第一邏輯地址的速度要求和可靠性要求的第一 chunk之后,根據用戶對第一邏輯地址的地址長度要求參數,在第一 chunk中確定與該地址長度要求參數相匹配的一段邏輯地址,作為第一邏輯地址。
[0106]進一步地,在上述實施例的基礎上,本實施例進一步提供了上述根據地址長度要求參數和所述第一 chunk確定第一邏輯地址的具體流程,具體為:判斷第一 chunk的空閑地址的長度是否滿足所述地址長度要求參數;若是,則根據上述地址長度要求參數從上述第一 chunk的空閑地址中確定第一邏輯地址;或者,若否,創(chuàng)建滿足上述速度要求參數和可靠性要求參數的第二 chunk,并根據上述地址長度要求參數從第二 chunk中確定第一邏輯地址。
[0107]具體的,在自管理存儲系統(tǒng)確定符合上述用戶對第一邏輯地址的速度要求參數和可靠性要求參數的第一 chunk之后,會根據用戶對第一邏輯地址的地址長度要求參數判斷第一 chunk中的空閑的地址長度是否滿足該地址長度要求;需要注意的是,自管理存儲系統(tǒng)自身可以預知上述chunk表中的所有chunk的地址是空閑狀態(tài)或者是已分配的狀態(tài);當第一 chunk中的空閑地址的長度滿足地址長度要求參數時(即第一 chunk中的空閑地址的長度大于等于上述地址長度要求所規(guī)定的地址長度),自管理存儲系統(tǒng)將從第一 chunk的空閑地址中確定與上述地址長度要求參數相匹配的一段邏輯地址,作為第一邏輯地址;或者,當第一 chunk中的空閑地址的長度不滿足地址長度要求參數時(即第一 chunk中的空閑地址的長度小于上述地址長度要求參數所規(guī)定的地址長度),自管理存儲系統(tǒng)就需要根據用戶對第一邏輯地址的速度參數和可靠性要求參數建立第二 chunk,并從第二 chunk中確定與上述地址長度要求參數相匹配的一段邏輯地址,作為第一邏輯地址。
[0108]在上述實施例的基礎上,作為本發(fā)明實施例的另一種可行的實施方式,本實施提供了第二 chunk的具體創(chuàng)建過程。該方法包括:查詢未與邏輯地址建立映關系的空閑物理地址空間表,確定滿足上述速度要求參數的第二物理地址段;根據上述可靠性要求參數,將第二物理地址段映射到第二邏輯地址段,生成第二 chunk ;將上述第二物理地址段從上述空閑物理地址空間表中刪除;將第二 chunk增加至上述chunk表中,并將第二 chunk標記為空閑。
[0109]具體的,自管理存儲系統(tǒng)在判斷第一 chunk的空閑地址的長度不滿足上述用戶的地址長度要求參數時,在自管理存儲系統(tǒng)的所有地址空間中查找未與塊設備的物理地址建立映射關系的空閑物理地址空間表,在該空閑物理地址空間表中確定滿足上述速度要求參數的第二物理地址段。
[0110]根據用戶對第一邏輯地址的可靠性要求參數將上述第二物理地址段映射到相應的第二邏輯地址,例如:假設用戶發(fā)送給自管理存儲系統(tǒng)的對第一邏輯地址的可靠性要求參數為一份數據存儲2個副本,此處也假設第二物理地址段的長度為20GB,則自管理存儲系統(tǒng)根據該可靠性要求參數構建相應級別的RAID,再通過RAID建立第二物理地址段與第二邏輯地址段的映射;因此,所映射的第二邏輯地址段的長度就為10GB,也就是在第二邏輯地址段的某一個邏輯地址上存的數據,可以從第二物理地址段中分配兩個對應的物理地址存儲該數據。同時,已經與第二物理地址段建立了映射關系的第二邏輯地址段即為第二chunkο
[0111]之后,自管理存儲系統(tǒng)將上述第二物理地址段從原來的空閑物理地址空間表中刪除,并將上述所創(chuàng)建的第二 chunk增加至之前的chunk表中,且將第二 chunk標記為空閑狀態(tài),以使自管理存儲系統(tǒng)可以根據上述地址長度要求從該第二 chunk中確定第一邏輯地址。
[0112]需要注意的是,上述實施例中自管理存儲系統(tǒng)接收用戶發(fā)送的第一邏輯地址分配請求可以為用戶在自管理存儲系統(tǒng)調用第一接口命令,該第一接口命令中攜帶第一邏輯地址類型參數,且該第一接口命令可以使得用戶向自管理存儲系統(tǒng)申請符合第一邏輯地址類型參數的第一邏輯地址。該第一接口命令可以為Alloc (uint64_t alloc_size, intreliability_level, int speed—level, uint64_t result—offset/氺output氺/),含義為串請分配一段大小為alloC_siZe的第一邏輯地址,該第一邏輯地址的可靠性要求參數和速度要求參數分別為reliability_level和speed_leve,申請成功后的第一邏輯地址存入result_offset0
[0113]圖2為本發(fā)明提供的自管理存儲方法實施例二的流程示意圖。本發(fā)明實施例的執(zhí)行主體可以為自管理存儲系統(tǒng)。本實施例提供了用戶獲取滿足第一邏輯地址類型參數的第一邏輯地址的整體過程。該方法具體包括:
[0114]S201:接收用戶輸入的申請第一邏輯地址的第一接口命令;其中,該第一接口命令中攜帶第一邏輯地址類型參數,且該第一邏輯地址類型參數包括用戶對第一邏輯地址的速度要求參數、可靠性要求參數以及地址長度要求參數。
[0115]用戶在自管理存儲系統(tǒng)中調用用于申請第一邏輯地址的第一接口命令,該第一接口命令攜帶第一邏輯地址類型參數,該第一邏輯地址類型參數可以為用戶對第一邏輯地址的速度要求參數、可靠性要求參數以及地址長度要求參數。其中,上述第一接口命令可以是 Alloc (uint64_t alloc_size, intreliability_level, int speed_level, uint64_t result_offset/*output*/),含義為申請分配一段大小為alloc_size的第一邏輯地址,該第一邏輯地址的可靠性要求參數和速度要求參數分別為reliability_level和speed_leve,申請成功后的第一邏輯地址存入result_offset。
[0116]S202:在邏輯地址段chunk表中查詢滿足根據上述速度要求參數和可靠性要求參數的第一 chunk ;其中,該chunk表中的所有chunk均建立邏輯地址和物理地址的映射關系O
[0117]S203:判斷上述第一 chunk的空閑地址的長度是否滿足上述地址長度要求參數;若是,則執(zhí)行S204 ;若否,則執(zhí)行S206。
[0118]具體的,自管理存儲系統(tǒng)根據用戶對所要申請的第一邏輯地址的速度要求和可靠性要求在chunk表中進行查詢,以獲取符合上述速度要求參數和可靠性要求參數的第一chunk ;其中,chunk表中包含了至少一個chunk, chunk表中的所有chunk均建立了邏輯地址和物理地址的映射關系;且一個chunk即為與塊設備的物理地址建立了映射關系的一段邏輯地址。
[0119]在自管理存儲系統(tǒng)確定符合上述用戶對第一邏輯地址的速度要求和可靠性要求的第一 chunk之后,會根據用戶對第一邏輯地址的地址長度要求參數判斷第一 chunk中的空閑的地址長度是否滿足該地址長度要求參數;需要注意的是,自管理存儲系統(tǒng)自身可以預知上述chunk表中的所有chunk的地址是空閑狀態(tài)或者是已分配的狀態(tài)。
[0120]S204:根據上述地址長度要求參數從第一 chunk的空閑地址中確定第一邏輯地址。
[0121]S205:將第一邏輯地址分配給用戶。結束流程。
[0122]具體的,當第一 chunk中的空閑地址的長度滿足地址長度要求參數時(即第一chunk中的空閑地址的長度大于等于上述地址長度要求所規(guī)定的地址長度),自管理存儲系統(tǒng)將從第一 chunk的空閑地址中確定與上述地址長度要求參數相匹配的一段邏輯地址,作為第一邏輯地址。
[0123]自管理存儲系統(tǒng)將上述確定的第一邏輯地址分配給用戶,當用戶獲取到第一邏輯地址之后,若要向該第一邏輯地址寫入數據,則自管理存儲系統(tǒng)會根據上述映射關系查找到與該第一邏輯地址對應的物理地址,進而找到該物理地址對應的塊設備,將數據寫入該塊設備。
[0124]S206:查詢未與邏輯地址建立映關系的空閑物理地址空間表,確定滿足上述速度要求參數的第二物理地址段。
[0125]S207:根據上述可靠性要求參數,將第二物理地址段映射到第二邏輯地址段,生成第二 chunk。
[0126]S208:將第二物理地址段從空閑物理地址空間表中刪除。
[0127]S209:將第二 chunk增加至上述chunk表中,并將第二 chunk標記為空閑。
[0128]S210:根據上述地址長度要求參數從第二 chunk中確定第一邏輯地址。執(zhí)行S205,
結束流程。
[0129]具體的,自管理存儲系統(tǒng)在判斷第一 chunk的空閑地址的長度不滿足上述用戶的地址長度要求參數時,在自管理存儲系統(tǒng)的所有地址空間中查找未與塊設備的物理地址建立映射關系的空閑物理地址空間表,在該空閑物理地址空間表中確定滿足上述速度要求的第二物理地址段。
[0130]根據用戶對第一邏輯地址的可靠性要求參數將上述第二物理地址段映射到相應的第二邏輯地址,例如:假設用戶發(fā)送給自管理存儲系統(tǒng)的對第一邏輯地址的可靠性要求為一份數據存儲2個副本,此處也假設第二物理地址段的長度為20GB,則自管理存儲系統(tǒng)根據該可靠性要求參數構建相應級別的RAID,再通過RAID建立第二物理地址段與第二邏輯地址段的映射;因此,所映射的第二邏輯地址段的長度就為10GB,也就是在第二邏輯地址段的某一個邏輯地址上存的數據,可以從第二物理地址段中分配兩個對應的物理地址存儲該數據。同時,已經與第二物理地址段建立了映射關系的第二邏輯地址段即為第二chunkο
[0131]之后,自管理存儲系統(tǒng)將上述第二物理地址段從原來的空閑物理地址空間表中刪除,并將上述所創(chuàng)建的第二 chunk增加至之前的chunk表中,且將第二 chunk標記為空閑狀態(tài),以使自管理存儲系統(tǒng)可以根據上述地址長度要求參數從該第二 chunk中確定第一邏輯地址。
[0132]本發(fā)明實施例提供的方法,通過接收用戶在分配請求中所攜帶的第一邏輯地址類型參數,并根據該第一邏輯地址類型參數進行查詢以獲取滿足該第一邏輯地址類型參數的第一邏輯地址,將第一邏輯地址發(fā)送給用戶,使得用戶可以根據自身的存儲需求獲取相應的存儲資源,進而確保存儲資源能夠按需分配;同時,由于自管理存儲系統(tǒng)中的所有地址空間由自管理系統(tǒng)自身管理,簡化了上層系統(tǒng)管理地址空間的負擔;另一方面,通過動態(tài)創(chuàng)建物理地址到邏輯地址的映射關系(即創(chuàng)建第二 chunk的過程),實現了自管理存儲系統(tǒng)的擴容。
[0133]圖3為本發(fā)明提供的自管理存儲方法實施例三的流程示意圖,在上述圖2所示實施例的基礎上,進一步地,本實施例提供了用戶將數據寫入自管理存儲系統(tǒng)的流程。在上述S211之后,還包括:
[0134]S301:接收用戶輸入的用于指示寫入數據的第二接口命令;該第二接口命令包括待寫入的第一數據和第一邏輯地址。
[0135]S302:根據第一邏輯地址查找chunk表,獲取第一邏輯地址對應的第一物理地址。
[0136]S303:將上述第一數據寫入第一物理地址對應的塊設備。
[0137]具體的,本實施例中的自管理存儲系統(tǒng)給用戶提供按字節(jié)訪問的寫數據接口,用戶通過調用該接口實現相應的操作,具體為:用戶發(fā)送攜帶待寫入的第一數據和第一邏輯地址的第二接口命令給自管理存儲系統(tǒng),表示用戶要將第一數據寫入第一邏輯地址中。需要注意的是,自管理存儲系統(tǒng)面向用戶的只是邏輯地址,即對于用戶來說,只知道將第一數據寫入第一邏輯地址,而實際上自管理存儲系統(tǒng)是將該第一數據寫入與第一邏輯地址對應的塊設備中。
[0138]上述第二接口命令可以為 Write (uint64_t offset, char*buf, uint64_t len),表示將自管理存儲系統(tǒng)所屬主機內存buf中Ien字節(jié)長度的第一數據寫入從offset地址開始的Ien長度的存儲空間內,該存儲空間即為第一邏輯地址;自管理存儲系統(tǒng)在接收到上述第二接口命令時,根據所獲知的第一邏輯地址查找chunk表,以獲得該第一邏輯地址所在的第一 chunk,并在第一 chunk中根據所建立的邏輯地址和物理地址的映射關系,查找到與第一邏輯地址對應的第一物理地址;最后,自管理存儲系統(tǒng)將上述buf中Ien字節(jié)長度的第一數據寫入第一物理地址對應的塊設備中。
[0139]為了能夠明確體現出本實施例的有益效果,此處對現有技術做一簡單介紹,具體為:現有技術中,塊設備的訪問力度是以塊為單位的,一個塊設備的大小為4K個字節(jié),即用戶在訪問該塊設備時只能將4K個字節(jié)作為一個整體;當上層文件系統(tǒng)需要給塊設備中寫入幾十個字節(jié)的數據時,現有技術中的存儲系統(tǒng)仍然會將整個塊設備提供給用戶,造成塊設備空間的浪費;另一方面,上層文件系統(tǒng)為了能將上述幾十個字節(jié)的數據寫入塊設備,還需要從其他磁盤中取出部分字節(jié)的數據,并將該部分字節(jié)的數據標記為無效,目的是為了將標記為無效的部分字節(jié)數據和前述要寫入的幾十個字節(jié)的數據結合生成4K個字節(jié)的數據寫入塊設備中,即需要上層文件系統(tǒng)處理塊對齊的問題。但是,本實施例中只需用戶調用自管理存儲系統(tǒng)提供的寫數據接口,就可以將這幾十個字節(jié)的數據直接寫入塊設備。
[0140]本實施例提供的方法,用戶通過自管理存儲系統(tǒng)所提供的按字節(jié)訪問的接口,向自管理存儲系統(tǒng)發(fā)送用于指示寫入數據的第二接口命令,使得該自管理存儲系統(tǒng)的上層系統(tǒng)無需處理塊對齊的問題,進而節(jié)約塊設備的存儲空間。
[0141]圖4為本發(fā)明提供的自管理存儲方法實施例四的流程示意圖,在上述圖2所示實施例的基礎上,進一步地,本實施例提供了用戶從第一邏輯地址讀取數據的流程。在上述S211之后,還包括:
[0142]S401:接收用戶輸入的用于指示讀取數據的第三接口命令;該第三接口命令包括待讀取的第二數據的字節(jié)長度和第一邏輯地址。
[0143]S402:根據第一邏輯地址查找chunk表,獲取第一邏輯地址對應的第一物理地址。
[0144]S403:從第一物理地址對應的塊設備中讀取上述字節(jié)長度的第二數據。
[0145]具體的,本實施例中的自管理存儲系統(tǒng)給用戶提供按字節(jié)訪問的讀數據接口,用戶通過調用該接口實現相應的操作,具體為:用戶發(fā)送攜帶待讀取的第二數據的字節(jié)長度和第一邏輯地址的第三接口命令給自管理存儲系統(tǒng),表示用戶要從第一邏輯地址中讀取該字節(jié)長度的第二數據。需要注意的是,自管理存儲系統(tǒng)面向用戶的只是邏輯地址,即對于用戶來說,只知道第二數據存儲在第一邏輯地址中,然后從第一邏輯地址中讀取第二數據,而實際上自管理存儲系統(tǒng)中的第二數據存儲在第一邏輯地址對應的塊設備中,當用戶輸入第一邏輯地址時,自管理存儲系統(tǒng)根據該第一邏輯地址查找上述chunk表,以獲得該第一邏輯地址所在的第一 chunk,并在第一 chunk中根據所建立的邏輯地址和物理地址的映射關系,查找到與第一邏輯地址對應的第一物理地址;最后,自管理存儲系統(tǒng)從第一物理地址對應的塊設備中讀取對應字節(jié)長度的第二數據發(fā)送給用戶。
[0146]需要注意的是,上述第三接口命令可以為Read(uint64_toffset, char*buf, uint64_t len),標識從offset地址起讀取Ien字節(jié)的數據存入buf中;其中,第一邏輯地址為以offset為起始地址,以offset+len為截止地址的這一段邏輯地址。
[0147]現有技術在讀取數據時,若用戶需要讀取幾十個字節(jié)的數據,現有的上層文件系統(tǒng)仍然會指示存儲系統(tǒng)提供4K個字節(jié)的數據給用戶,增加了現有存儲系統(tǒng)的開銷。
[0148]本實施例提供的方法,用戶通過自管理存儲系統(tǒng)所提供的按字節(jié)訪問的接口,向自管理存儲系統(tǒng)發(fā)送用于指示讀取數據的第三接口命令,使得該自管理存儲系統(tǒng)的上層系統(tǒng)無需處理塊對齊的問題,節(jié)約系統(tǒng)開銷。
[0149]圖5為本發(fā)明提供的自管理存儲方法實施例五的流程示意圖,在上述圖2所示實施例的基礎上,進一步地,本實施例提供了用戶釋放一段邏輯地址,并將該段邏輯地址增加至第一 chunk的過程。在上述S211之后,還包括:
[0150]S501:接收用戶輸入的第四接口命令,該第四接口命令包括所要釋放的第一邏輯地址偏移。
[0151]S502:根據第一邏輯地址偏移確定該第一邏輯地址偏移對應的第一 chunk。
[0152]S503:將上述第一邏輯地址偏移增加至所述第一 chunk。
[0153]具體的,本實施例中的自管理存儲系統(tǒng)給用戶提供按字節(jié)訪問的釋放地址空間的接口,當用戶所申請的第一邏輯地址中某一段邏輯地址不經常使用甚至用戶基本不使用時,用戶會調用自管理存儲系統(tǒng)提供的釋放地址空間的接口,將該段邏輯地址釋放回自管理存儲系統(tǒng)中,該段邏輯地址稱為第一邏輯地址偏移。具體為:用戶輸入攜帶第一邏輯地址偏移的第四接口命令給自管理存儲系統(tǒng),該第四接口命令可以為Free (uint64_toffset, uint64_tlen),表示用戶要釋放一段以offset為起始偏移,長度為Ien的地址空間;其中,該段地址空間即為第一邏輯地址偏移。
[0154]自管理存儲系統(tǒng)在接收到第四接口命令時,根據上述第一邏輯地址偏移查找chunk表,確定其所屬的第一 chunk,并將該第一邏輯地址偏移增加至第一 chunk,并將該第一邏輯地址偏移標記為空閑。
[0155]本實施例提供的方法,用戶通過自管理存儲系統(tǒng)所提供的按字節(jié)訪問的接口,向自管理存儲系統(tǒng)發(fā)送用于指示釋放第一邏輯地址偏移的第四接口命令,以將第一邏輯地址偏移增加至第一 chunk,進而節(jié)約邏輯地址空間的開銷。
[0156]除此之外,本發(fā)明實施例中的自管理存儲系統(tǒng)還提供了初始化系統(tǒng)接口、增加和刪除塊設備的接口、卸載某命名的系統(tǒng)的接口等;其中,初始化系統(tǒng)接口對應的接口命令為Create (char**devicelist, char*sys_name),表示依據所給設備鏈表的塊設備,創(chuàng)建并初始化整個系統(tǒng),將此系統(tǒng)命名為sys_name ;增加塊設備接口對應的接口命令為Add_dev(char*device_name),表示往系統(tǒng)中增加名字為device_name塊設備;刪除塊設備接口對應的接口命令為Del_dev (char*device_name),表示從系統(tǒng)中刪除名字為device_name塊設備;卸載某命名的系統(tǒng)的接口對應的接口命令為Destroy (char*sys_name),表示關閉并卸載名字為sys_name的系統(tǒng)并釋放內存資源。
[0157]圖6為本發(fā)明提供的自管理存儲方法實施例六的流程示意圖,在上述圖2所示實施例的基礎上,進一步地,本實施例提供了自管理存儲系統(tǒng)刪除主機的存儲資源中的部分塊設備的具體過程。在上述S211之后,還包括:
[0158]S601:接收用戶輸入的用于指示刪除塊設備的第五接口命令;其中,該第五接口命令攜帶待刪除的塊設備的名稱。
[0159]S602:刪除上述待刪除的塊設備的名稱對應的塊設備。
[0160]具體的,當用戶需要從主機的存儲資源中刪除某一個塊設備時,用戶向自管理存儲系統(tǒng)輸入刪除塊設備的第五接口命令,即用戶調用Del_dev(char*device_name)接口命令,該命令攜帶了待刪除設備的名稱(deViCe_name),則自管理存儲系統(tǒng)會根據該刪除塊設備的第五接口命令中的塊設備名稱查找該塊設備,進而確定該塊設備對應的物理地址空間A,然后根據自管理存儲系統(tǒng)中邏輯地址和物理地址的映射關系確定與該物理地址空間A對應的邏輯地址空間B ;之后,從空閑物理地址空間中查找與待刪除塊設備的速度級別相同的塊設備的物理地址空間C,將待刪除塊設備上存儲的數據遷移至該物理地址空間C,并將映射關系進行修改,即將物理地址空間C與邏輯地址空間B建立映射關系;最后,自管理存儲系統(tǒng)將該待刪除的塊設備進行刪除;其中,上述空閑物理地址空間中的物理地址均沒有與邏輯地址建立映射關系。
[0161]圖7為本發(fā)明提供的自管理存儲方法實施例七的流程示意圖,在上述圖2所示實施例的基礎上,進一步地,本實施例提供了自管理存儲系統(tǒng)往主機的存儲資源中增加部分塊設備的具體過程。在上述S211之后,還包括:
[0162]S701:接收用戶輸入的用于指示增加塊設備的第六接口命令;其中,該第六接口命令攜帶待增加的塊設備的名稱。
[0163]S702:根據待增加的塊設備的名稱確定待增加的塊設備的物理地址空間,并將待增加的塊設備的物理地址空間增加至上述空閑物理地址空間表。
[0164]具體的,在用戶需要往主機的存儲資源增加塊設備時(主機的存儲資源包括多個塊設備),用戶向自管理存儲系統(tǒng)輸入增加塊設備的第六接口命令,即用戶調用Add_dev (char*device_name)接口命令,該命令攜帶了待增加的塊設備的名稱(device_name),自管理存儲系統(tǒng)根據該待增加的塊設備的名稱確定待增加的塊設備,進而確定待增加的塊設備的物理地址空間以及該待增加的物理地址空間的速度級別,則自管理存儲系統(tǒng)在主機的存儲資源中尋找與之相同的速度級別的空閑物理地址空間列表,并在該空閑物理地址空間列表中增加該塊設備的物理地址空間;其中,上述空閑物理地址空間列表中的物理地址均沒有與邏輯地址建立映射關系。
[0165]本領域普通技術人員可以理解:實現上述各方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質包括:R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質。
[0166]圖8為本發(fā)明提供的自管理存儲系統(tǒng)實施例一的結構示意圖;如圖8所示,該系統(tǒng)包括:第一接收模塊10,用于接收用戶發(fā)送的第一邏輯地址分配請求;其中,上述分配請求中攜帶第一邏輯地址類型參數;第一獲取模塊11,用于根據上述第一邏輯地址類型參數進行查詢,獲取滿足該第一邏輯地址類型參數的第一邏輯地址;第一發(fā)送模塊12,用于發(fā)送第一邏輯地址給用戶。
[0167]本發(fā)明實施例提供的自管理存儲系統(tǒng)可以執(zhí)行上述方法實施例,其實現原理和技術效果類似,在此不再贅述。
[0168]圖9為本發(fā)明提供的自管理存儲系統(tǒng)實施例二的結構示意圖。進一步地,上述第一邏輯地址類型參數包括所述用戶對所述第一邏輯地址的速度要求參數、可靠性要求參數以及地址長度要求參數;在圖8所示實施例的基礎上,上述第一獲取模塊11包括:查詢單元110,用于在邏輯地址段chunk表中查詢滿足根據速度要求參數和可靠性要求參數的第一 chunk ;其中,上述chunk表中的所有chunk均建立邏輯地址和物理地址的映射關系;確定單元111,用于根據上述地址長度要求參數和第一 chunk確定第一邏輯地址;并且,上述確定單元111具體用于判斷第一 chunk的空閑地址的長度是否滿足上述地址長度要求參數;若是,則根據地址長度要求參數從第一 chunk的空閑地址中確定第一邏輯地址;或者,若否,創(chuàng)建滿足上述速度要求參數和可靠性要求參數的第二 chunk,并根據地址長度要求參數從第二 chunk中確定第一邏輯地址。
[0169]本發(fā)明實施例提供的自管理存儲系統(tǒng)可以執(zhí)行上述方法實施例,其實現原理和技術效果類似,在此不再贅述。
[0170]在上述圖9所示實施例的基礎上,進一步地,上述確定單元111包括:查詢子單元1110,用于查詢未與邏輯地址建立映關系的空閑物理地址空間表,確定滿足上述速度要求參數的第二物理地址段;生成子單元1111,用于根據上述可靠性要求參數,將第二物理地址段映射到第二邏輯地址段,生成第二 Chunk ;上述確定單元111還可以包括:刪除子單元1112,用于在上述生成子單元1111根據上述可靠性要求參數,將第二物理地址段映射到第二邏輯地址段,生成第二 chunk之后,將第二物理地址段從空閑物理地址空間表中刪除;chunk增加子單元1113,用于將上述第二 chunk增加至chunk表中,并將第二 chunk標記為空閑。
[0171]同時,上述第一接收模塊10具體用于接收用戶輸入的申請第一邏輯地址的第一接口命令;其中,該第一接口命令中攜帶第一邏輯地址類型參數。
[0172]本發(fā)明實施例提供的自管理存儲系統(tǒng)可以執(zhí)行上述方法實施例,其實現原理和技術效果類似,在此不再贅述。
[0173]圖10為本發(fā)明提供的自管理存儲系統(tǒng)實施例三的結構示意圖,在上述圖9所示實施例的基礎上,進一步地,該系統(tǒng)還可以包括:第二接收模塊20,用于在第一發(fā)送模塊12發(fā)送第一邏輯地址給用戶之后,接收用戶輸入的用于指示寫入數據第二接口命令;其中,該第二接口命令包括待寫入的第一數據和第一邏輯地址;第二獲取模塊21,用于根據上述第一邏輯地址查找上述chunk表,獲取第一邏輯地址對應的第一物理地址;寫入模塊22,用于將第一數據寫入第一物理地址對應的塊設備。
[0174]本發(fā)明實施例提供的自管理存儲系統(tǒng)可以執(zhí)行上述方法實施例,其實現原理和技術效果類似,在此不再贅述。
[0175]圖11為本發(fā)明提供的自管理存儲系統(tǒng)實施例四的結構示意圖,在上述圖9所示實施例的基礎上,進一步地,該系統(tǒng)還可以包括:第三接收模塊30,用于接收用戶輸入的用于指示讀取數據的第三接口命令;其中,該第三接口命令包括待讀取的第二數據的字節(jié)長度和上述第一邏輯地址;第三獲取模塊31,用于根據第一邏輯地址查找所述chunk表,獲取第一邏輯地址對應的第一物理地址;讀取模塊32,用于從第一物理地址對應的塊設備中讀取上述字節(jié)長度的第二數據。
[0176]本發(fā)明實施例提供的自管理存儲系統(tǒng)可以執(zhí)行上述方法實施例,其實現原理和技術效果類似,在此不再贅述。
[0177]圖12為本發(fā)明提供的自管理存儲系統(tǒng)實施例五的結構示意圖,在上述圖9所示實施例的基礎上,進一步地,該系統(tǒng)還可以包括:第四接收模塊40,用于在上述第一發(fā)送模塊12發(fā)送所述第一邏輯地址給所述用戶之后,接收用戶輸入的第四接口命令,該第四接口命令包括所要釋放的第一邏輯地址偏移;確定模塊41,用于根據第一邏輯地址偏移確定上述第一邏輯地址偏移對應的第一 chunk ;地址添加模塊42,用于將第一邏輯地址偏移增加至第一 chunk。
[0178]本發(fā)明實施例提供的自管理存儲系統(tǒng)可以執(zhí)行上述方法實施例,其實現原理和技術效果類似,在此不再贅述。
[0179]圖13為本發(fā)明提供的自管理存儲系統(tǒng)實施例六的結構示意圖,在上述圖9所示實施例的基礎上,進一步地,該系統(tǒng)還可以包括:第五接收模塊50,用于接收用戶輸入的用于指示刪除塊設備的第五接口命令;其中,該第五接口命令攜帶待刪除的塊設備的名稱;刪除模塊51,用于刪除所述待刪除的塊設備的名稱對應的塊設備。
[0180]本發(fā)明實施例提供的自管理存儲系統(tǒng)可以執(zhí)行上述方法實施例,其實現原理和技術效果類似,在此不再贅述。
[0181]圖14為本發(fā)明提供的自管理存儲系統(tǒng)實施例七的結構示意圖,在上述圖9所示實施例的基礎上,進一步地,該系統(tǒng)還可以包括:第六接收模塊60,用于接收用戶輸入的用于指示增加塊設備的第六接口命令;其中,該第六接口命令攜帶待增加的塊設備的名稱;設備增加模塊61,用于根據待增加的塊設備的名稱確定待增加的塊設備的物理地址空間,并將待增加的塊設備的物理地址空間增加至空閑物理地址空間表。
[0182]本發(fā)明實施例提供的自管理存儲系統(tǒng)可以執(zhí)行上述方法實施例,其實現原理和技術效果類似,在此不再贅述。
[0183]需要注意的是,本發(fā)明實施例提供的自管理存儲系統(tǒng)按照功能劃分還可以劃分為邏輯地址分配器、邏輯地址空間管理模塊、輸入/輸出(Input/Output,以下簡稱I/O)處理器、邏輯地址物理地址映射模塊、物理塊設備與物理空間管理模塊、I/O調度模塊;其中,邏輯地址分配器主要用于為用戶分配符合要求的邏輯地址;邏輯地址空間管理模塊主要用于管理已建立好邏輯地址和物理地址的映射關系的chunk的空閑空間和已分配給用戶的邏輯地址空間;1/0處理器主要用于接收用戶的讀寫數據請求,查找邏輯地址對應的物理地址,還可以用于接收用戶輸入的其他訪問請求;邏輯地址物理地址映射模塊主要用于負責邏輯地址和物理地址的相互映射;物理塊設備與物理空間管理模塊主要用于管理作為主機存儲資源的多個異構塊設備,支持在線增加刪除塊設備,并管理這些塊設備中未映射到chunk的空閑物理空間;1/0調度模塊主要用于將用戶的讀寫請求發(fā)送到塊設備,實現高效率的I/O。
[0184]因此,本發(fā)明實施例中的第一發(fā)送模塊12可以為邏輯地址分配器,第一獲取模塊11、確定模塊41和地址添加模塊42可以為邏輯地址空間管理模塊,且第一獲取模塊11中的生成子單元1111還可以為邏輯地址物理地址映射模塊;第二獲取模塊21和第三獲取模塊31可以為邏輯地址物理地址映射模塊;第二接收模塊20、第三接收模塊30、第四接收模塊40、第五接收模塊50、第六接收模塊60可以為I/O處理器;刪除模塊51和設備增加模塊61可以為物理塊設備與物理空間管理模塊;讀取模塊32和寫入模塊22可以為I/O調度模塊。
[0185]最后應說明的是:以上各實施例僅用以說明本發(fā)明的技術方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發(fā)明各實施例技術方案的范圍。
【權利要求】
1.一種自管理存儲方法,其特征在于,包括: 接收用戶發(fā)送的第一邏輯地址分配請求;其中,所述分配請求中攜帶第一邏輯地址類型參數; 根據所述第一邏輯地址類型參數進行查詢,獲取滿足所述第一邏輯地址類型參數的所述第一邏輯地址; 發(fā)送所述第一邏輯地址給所述用戶。
2.根據權利要求1所述的方法,其特征在于,所述第一邏輯地址類型參數包括所述用戶對所述第一邏輯地址的速度要求參數、可靠性要求參數以及地址長度要求參數;則所述根據所述第一邏輯地址類型參數進行查詢,獲取滿足所述第一邏輯地址類型參數的所述第一邏輯地址,包括: 在邏輯地址段chunk表中查詢滿足根據所述速度要求參數和所述可靠性要求參數的第一 chunk ;其中,所述chunk表中的所有chunk均建立邏輯地址和物理地址的映射關系; 根據所述地址長度要求參數和所述第一 chunk確定所述第一邏輯地址。
3.根據權利要求2所述的方法,其特征在于,所述根據所述地址長度要求參數和所述第一 chunk確定所述第一邏輯地址,包括: 判斷所述第一 chunk的空閑地址的長度是否滿足所述地址長度要求參數; 若是,則根據所述地址長度要求參數從所述第一 chunk的空閑地址中確定所述第一邏輯地址;或者, 若否,創(chuàng)建滿足所述速度要求參數和可靠性要求參數的第二 chunk,并根據所述地址長度要求參數從所述第二 chunk中確定第一邏輯地址。
4.根據權利要求3所述的方法,其特征在于,所述創(chuàng)建滿足所述速度要求參數和可靠性要求參數的第二 chunk,包括: 查詢未與邏輯地址建立映射關系的空閑物理地址空間表,確定滿足所述速度要求參數的第二物理地址段; 根據所述可靠性要求參數,將所述第二物理地址段映射到第二邏輯地址段,生成所述第二 chunk。
5.根據權利要求4所述的方法,其特征在于,所述根據所述可靠性要求參數,將所述第二物理地址段映射到第二邏輯地址段,生成所述第二 chunk之后,還包括: 將所述第二物理地址段從所述空閑物理地址空間表中刪除; 將所述第二 chunk增加至所述chunk表中,并將所述第二 chunk標記為空閑。
6.根據權利要求1-5任一項所述的方法,其特征在于,所述接收用戶發(fā)送的第一邏輯地址分配請求,具體為: 接收所述用戶輸入的申請所述第一邏輯地址的第一接口命令;其中,所述第一接口命令中攜帶所述第一邏輯地址類型參數。
7.根據權利要求1-5任一項所述的方法,其特征在于,在發(fā)送所述第一邏輯地址給所述用戶之后,還包括: 接收所述用戶輸入的用于指示寫入數據第二接口命令;其中,所述第二接口命令包括待寫入的第一數據和所述第一邏輯地址; 根據所述第一邏輯地址查找所述chunk表,獲取所述第一邏輯地址對應的第一物理地址; 將所述第一數據寫入所述第一物理地址對應的塊設備。
8.根據權利要求1-5任一項所述的方法,其特征在于,在發(fā)送所述第一邏輯地址給所述用戶之后,還包括: 接收所述用戶輸入的用于指示讀取數據的第三接口命令;其中,所述第三接口命令包括待讀取的第二數據的字節(jié)長度和所述第一邏輯地址; 根據所述第一邏輯地址查找所述chunk表,獲取所述第一邏輯地址對應的第一物理地址; 從所述第一物理地址對應的塊設備中讀取所述字節(jié)長度的第二數據。
9.根據權利要求1-5任一項所述的方法,其特征在于,在發(fā)送所述第一邏輯地址給所述用戶,還包括: 接收所述用戶輸入的第四接口命令,所述第四接口命令包括所要釋放的第一邏輯地址偏移; 根據所述第一邏輯地址偏移查找chunk表,確定所述第一邏輯地址偏移對應的所述第一 chunk ; 將所述第一邏輯地址偏移增加至所述第一 chunk。
10.根據權利要求1-5任一項所述的方法,其特征在于,在發(fā)送所述第一邏輯地址給所述用戶之后,還包括: 接收所述用戶輸入的用于指示刪除塊設備的第五接口命令;其中,所述第五接口命令攜帶待刪除的塊設備的名稱; 刪除所述待刪除的塊設備的名稱對應的塊設備。
11.根據權利要求1-5任一項所述的方法,其特征在于,在發(fā)送所述第一邏輯地址給所述用戶之后,還包括: 接收所述用戶輸入的用于指示增加塊設備的第六接口命令;其中,所述第六接口命令攜帶待增加的塊設備的名稱; 根據所述待增加的塊設備的名稱確定所述待增加的塊設備的物理地址空間,并將所述待增加的塊設備的物理地址空間增加至所述空閑物理地址空間表。
12.—種自管理存儲系統(tǒng),其特征在于,包括 第一接收模塊,用于接收用戶發(fā)送的第一邏輯地址分配請求;其中,所述分配請求中攜帶第一邏輯地址類型參數; 第一獲取模塊,用于根據所述第一邏輯地址類型參數進行查詢,獲取滿足所述第一邏輯地址類型參數的所述第一邏輯地址; 第一發(fā)送模塊,用于發(fā)送所述第一邏輯地址給所述用戶。
13.根據權利要求12所述的系統(tǒng),其特征在于,所述第一邏輯地址類型參數包括所述用戶對所述第一邏輯地址的速度要求參數、可靠性要求參數以及地址長度要求參數;則所述第一獲取模塊包括: 查詢單元,用于在邏輯地址段chunk表中查詢滿足根據所述速度要求參數和所述可靠性要求參數的第一 chunk ;其中,所述chunk表中的所有chunk均建立邏輯地址和物理地址的映射關系; 確定單元,用于根據所述地址長度要求參數和所述第一 chunk確定所述第一邏輯地址。
14.根據權利要求13所述的系統(tǒng),其特征在于,所述確定單元具體用于判斷所述第一chunk的空閑地址的長度是否滿足所述地址長度要求參數; 若是,則根據所述地址長度要求參數從所述第一 chunk的空閑地址中確定所述第一邏輯地址;或者, 若否,創(chuàng)建滿足所述速度要求參數和可靠性要求參數的第二 chunk,并根據所述地址長度要求參數從所述第二 chunk中確定第一邏輯地址。
15.根據權利要求14所述的系統(tǒng),其特征在于,所述確定單元包括: 查詢子單元,用于查詢未與所述邏輯地址建立映關系的空閑物理地址空間表,確定滿足所述速度要求參數的第二物理地址段; 生成子單元,用于根據所述可靠性要求參數,將所述第二物理地址段映射到第二邏輯地址段,生成所述第二 chunk。
16.根據權利要求15所述的系統(tǒng),其特征在于,所述確定單元還包括: 刪除子單元,用于在所述生成子單元根據所述可靠性要求參數,將所述第二物理地址段映射到第二邏輯地址段,生成所述第二 chunk之后,將所述第二物理地址段從所述空閑物理地址空間表中刪除; chunk增加子單元,用于將所述第二 chunk增加至所述chunk表中,并將所述第二chunk標記為空閑。
17.根據權利要求12-16任一項所述的系統(tǒng),其特征在于,所述第一接收模塊具體用于接收所述用戶輸入的申請所述第一邏輯地址的第一接口命令;其中,所述第一接口命令中攜帶所述第一邏輯地址類型參數。
18.根據權利要求12-16任一項所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 第二接收模塊,用于在所述第一發(fā)送模塊發(fā)送所述第一邏輯地址給所述用戶之后,接收所述用戶輸入的用于指示寫入數據第二接口命令;其中,所述第二接口命令包括待寫入的第一數據和所述第一邏輯地址; 第二獲取模塊,用于根據所述第一邏輯地址查找所述chunk表,獲取所述第一邏輯地址對應的第一物理地址; 寫入模塊,用于將所述第一數據寫入所述第一物理地址對應的塊設備。
19.根據權利要求12-16任一項所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 第三接收模塊,用于接收所述用戶輸入的用于指示讀取數據的第三接口命令;其中,所述第三接口命令包括待讀取的第二數據的字節(jié)長度和所述第一邏輯地址; 第三獲取模塊,用于根據所述第一邏輯地址查找所述chunk表,獲取所述第一邏輯地址對應的第一物理地址; 讀取模塊,用于從所述第一物理地址對應的塊設備中讀取所述字節(jié)長度的第二數據。
20.根據權利要求12-16任一項所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括:第四接收模塊,用于在所述第一發(fā)送模塊發(fā)送所述第一邏輯地址給所述用戶之后,接收所述用戶輸入的第四接口命令,所述第四接口命令包括所要釋放的第一邏輯地址偏移;確定模塊,用于根據所述第一邏輯地址偏移確定所述第一邏輯地址偏移對應的所述第—chunk ; 地址添加模塊,用于將所述第一邏輯地址偏移增加至所述第一 chunk。
21.根據權利要求12-16任一項所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 第五接收模塊,用于在所述第一發(fā)送模塊發(fā)送所述第一邏輯地址給所述用戶之后,接收所述用戶輸入的用于指示刪除塊設備的第五接口命令;其中,所述第五接口命令攜帶待刪除的塊設備的名稱; 刪除模塊,用于刪除所述待刪除的塊設備的名稱對應的塊設備。
22.根據權利要求12-16任一項所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 第六接收模塊,用于在所述第一發(fā)送模塊發(fā)送所述第一邏輯地址給所述用戶之后,接收所述用戶輸入的用于指示增加塊設備的第六接口命令;其中,所述第六接口命令攜帶待增加的塊設備的名稱; 設備增加模塊,用于根據所述待增加的塊設備的名稱確定所述待增加的塊設備的物理地址空間,并將所述待增加的塊設備的物理地址空間增加至所述空閑物理地址空間表。
【文檔編號】H04L29/08GK104426965SQ201310388769
【公開日】2015年3月18日 申請日期:2013年8月30日 優(yōu)先權日:2013年8月30日
【發(fā)明者】劉揚寬, 張子剛, 岳銀亮, 潘鋒烽 申請人:華為技術有限公司, 中國科學院計算技術研究所
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
临洮县| 丽江市| 壤塘县| 修水县| 栖霞市| 克什克腾旗| 灵台县| 神木县| 桓台县| 洛宁县| 桂林市| 湘乡市| 江华| 阿荣旗| 南阳市| 吉首市| 沈阳市| 南召县| 乌鲁木齐县| 辛集市| 张家港市| 南皮县| 东明县| 金昌市| 马边| 忻城县| 美姑县| 眉山市| 莱西市| 哈尔滨市| 闵行区| 纳雍县| 宝坻区| 孝感市| 行唐县| 安新县| 中西区| 杨浦区| 息烽县| 枞阳县| 宜兴市|