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

用于存儲系統(tǒng)的路徑選擇的方法和裝置與流程

文檔序號:12785971閱讀:342來源:國知局
用于存儲系統(tǒng)的路徑選擇的方法和裝置與流程

本公開的實施例涉及存儲系統(tǒng),并且更具體地涉及用于存儲系統(tǒng)的路徑選擇的方法和裝置。



背景技術:

在企業(yè)級的存儲解決方案中,在串行附接的小型計算機系統(tǒng)接口(SAS)域,多路徑技術已經被廣泛使用以提供路徑冗余、容錯、以及負載均衡。如圖1所示,在后端存儲應用中的一個通常的使用場景中,提供多個磁盤簇(JBOD)(101-104),其中每個JBOD中的磁盤驅動器(121-128)被經由一個或者多個擴展器(131-138)路由到不同的主機總線適配器(HBA)端口(111,112),從而具有到服務器(110)的兩條路徑。多路徑技術被用來針對給定磁盤驅動器在兩個HBA端口之間進行路徑切換。

在負載均衡領域,多路徑發(fā)揮著重要作用,并且對于整個系統(tǒng)性能來說非常關鍵。例如,在圖1中,需要多路徑模塊來均衡一個磁盤驅動器的兩條路徑之間的工作負載。其原因詳述如下。

圖1所示的SAS域中的一條鏈路可能具有很大的存儲設備容量,并導致單個HBA端口的帶寬飽和。例如,對于Data DomainTM(DD)產品,能夠在一個鏈路連接最多7個磁盤框。每個磁盤框可以具有15個磁盤,并且每個磁盤框可能達到每秒800MB的輸入輸出(IO)吞吐量。這意味著在最壞的情況下,一個具有2GB/s帶寬的繁忙的HBA很容易變成整個系統(tǒng)的瓶頸,即使在同一時間另一HBA仍然有足夠的帶寬可以使用。

尤其是,當固態(tài)磁盤(SSD)磁盤框被引入一條鏈路時,情況將變得更糟。首先,SSD磁盤框產生更多的吞吐量,這將加速帶寬的 飽和。其次,由于SSD和硬盤驅動器(HDD)磁盤介質的不同特性,SSD將消耗掉很多帶寬,從而在SAS協(xié)議中沒有有效的擁塞控制策略的情況下,這將導致與該SSD位于同一鏈路的HDD磁盤框的饑餓。

在本公開的實施例中,提供了方法和裝置,用于提供存儲系統(tǒng)中有效的路徑選擇和負載均衡。



技術實現要素:

本公開的實施例提出了用于存儲系統(tǒng)中的路徑選擇的方法和裝置。下面給出了對各實施例的簡要概述,以提供對各種實施例的一些方面的基本理解。該概述不旨在標識關鍵元素的要點或描述各種實施例的范圍。其唯一目的在于以簡化形式呈現一些概念,作為對后述更具體描述的前序。

本公開的第一方面提供了一種用于存儲系統(tǒng)的方法,該存儲系統(tǒng)包括多個存儲設備,并且每個存儲設備經由多條路徑分別被連接到服務器的多個不同HBA端口,該方法包括:監(jiān)測所述存儲系統(tǒng)的系統(tǒng)級的性能度量,以獲得動態(tài)性能統(tǒng)計;基于所述動態(tài)性能統(tǒng)計,檢測與性能相關的事件;以及基于所述動態(tài)性能統(tǒng)計和所述檢測的結果,從多條路徑中選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑。

在一個實施例中,監(jiān)測該存儲系統(tǒng)的系統(tǒng)級的性能度量可以包括:監(jiān)測所述多個不同HBA端口處的性能度量。在另一實施例中,多個不同HBA端口處的性能度量包括吞吐量、延時和資源使用狀況中的至少一項。在又一實施例中,監(jiān)測該存儲系統(tǒng)的系統(tǒng)級的性能度量還可以包括監(jiān)測以下中的至少一項:所述多個存儲設備的本地性能度量,以及多條路徑的本地性能度量。

在一個實施例中,與性能相關的事件可以包括以下中的至少一項:所述多個不同HBA端口中的一個HBA端口處的性能瓶頸;所述多個不同HBA端口的性能的失衡;以及所述多個存儲設備中至少 一個存儲設備的性能低于閾值。

在另一實施例中,基于所述動態(tài)性能統(tǒng)計和所述檢測的結果,從多條路徑中選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑可以包括:基于檢測結果和所述動態(tài)性能統(tǒng)計,將所述多個存儲設備劃分成與所述多個不同HBA端口分別對應的多個子集,以及將每個子集的存儲設備路由到其對應HBA端口。

在又一實施例中,基于所述動態(tài)性能統(tǒng)計和所述檢測的結果,從多條路徑中選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑可以包括:在檢測到所述多個不同HBA端口中的第一HBA端口處的性能瓶頸或者工作量過大時,針對所述多個存儲設備中的至少一個存儲設備進行動態(tài)路徑選擇,以將經由所述第一HBA端口的至少一部分工作量重新路由到所述多個HBA端口中的另一HBA端口。在一個實施例中,針對所述多個存儲設備中的至少一個存儲設備進行動態(tài)路徑選擇,以將經由所述第一HBA端口的至少一部分工作量重新路由到所述多個HBA端口中的另一HBA端口可以包括:計算需要從所述第一HBA端口卸載的期望工作量;基于所述計算,從所述多個存儲設備中選擇一組存儲設備,并且將所述一組存儲設備的活動路徑切換到經由所述第一HBA端口之外的另一HBA端口的路徑。在另一實施例中,計算需要從所述第一HBA端口卸載的期望工作量可以包括:至少基于所述第一HBA端口的性能度量和預定閾值來計算需要卸載的所述期望工作量。在又一實施例中,基于所述計算,從所述多個存儲設備中選擇一組存儲設備可以包括:從所述多個存儲設備中選擇一組存儲設備,使得所述一組存儲設備的當前性能度量之和與所計算的所述期望工作量匹配。在另一實施例中,基于所述計算,從所述多個存儲設備中選擇一組存儲設備包括:從所述多個存儲設備中選擇多組存儲設備,使得所述多組存儲設備中的每一組存儲設備的當前性能度量之和與所計算的所述期望工作量匹配;以及根據預定準則從所述多組存儲設備中選擇一組存儲設備。在進一步的實施例中,根據預定準則從所述多組存儲設備中選擇一 組存儲設備包括:從所述多組存儲設備中選擇優(yōu)先級權重之和最大的一組存儲設備。

在一個實施例中,該方法可以包括:監(jiān)測所述存儲系統(tǒng)的拓撲更新;并且基于檢測結果和所述動態(tài)性能統(tǒng)計,從多條路徑中選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑可以包括:在監(jiān)測到拓撲更新事件而沒有檢測到性能相關事件時,按照第一路徑選擇策略選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑;以及在檢測到性能相關事件時,按照第二路徑選擇策略選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑。在另一實施例中,第一路徑選擇策略為缺省的靜態(tài)路徑選擇策略,并且/或者,所述第二路徑選擇策略為動態(tài)路徑選擇策略。在又一實施例中,在監(jiān)測到拓撲更新事件而沒有檢測到性能相關事件時,按照第一路徑選擇策略選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑可以包括:在監(jiān)測到拓撲更新事件而沒有檢測到性能相關事件時,驗證更新后的拓撲的有效性,以及在更新后的拓撲有效時,按照第一路徑選擇策略選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑。

在另一實施例中,基于所述動態(tài)性能統(tǒng)計和所述檢測的結果,從多條路徑中選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑還可以包括:基于所述檢測的結果、所述動態(tài)性能統(tǒng)計以及路徑的優(yōu)先級,從多條路徑中選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑。

在一個實施例中,該方法可以進一步包括:根據所述選擇結果,對路徑的狀態(tài)和路徑的優(yōu)先級中的至少一項進行更新。

在另一實施例中,該方法可以進一步包括:迭代地執(zhí)行所述監(jiān)測、檢測和選擇,直到達到期望的性能目標。

本公開的第二方面提供了一種用于存儲系統(tǒng)的裝置,該存儲系統(tǒng)包括多個存儲設備,并且每個存儲設備經由多條路徑分別被連接到服務器的多個不同HBA端口,所述裝置包括:性能監(jiān)測器,被配 置為監(jiān)測所述存儲系統(tǒng)的系統(tǒng)級的性能度量,以獲得動態(tài)性能統(tǒng)計;事件檢測器,被配置為基于所述動態(tài)性能統(tǒng)計,檢測與性能相關的事件;以及路徑選擇器,被配置為基于所述動態(tài)性能統(tǒng)計和所述檢測的結果,從多條路徑中選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑。

在一個實施例中,性能監(jiān)測器可以包括:HBA端口性能監(jiān)測器,被配置為通過監(jiān)測所述多個不同HBA端口處的性能度量來監(jiān)測所述存儲系統(tǒng)的系統(tǒng)級的性能度量。在另一實施例中,所述多個不同HBA端口處的性能度量包括吞吐量、延時和資源使用狀況中的至少一項。在又一實施例中,性能監(jiān)測器還可以包括本地性能監(jiān)測器,其被配置為監(jiān)測以下中的至少一項:所述多個存儲設備的本地性能度量;以及多條路徑的本地性能度量。

在一個實施例中,與性能相關的事件可以包括以下中的至少一項:所述多個不同HBA端口中的一個HBA端口處的性能瓶頸;所述多個不同HBA端口的性能的失衡;以及所述多個存儲設備中至少一個存儲設備的性能低于閾值。

在另一實施例中,路徑選擇器可以被配置為通過以下方式從所述多條路徑中選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑:基于所述檢測的結果和所述動態(tài)性能統(tǒng)計,將所述多個存儲設備劃分成與所述多個不同HBA端口分別對應的多個子集,以及將每個子集的存儲設備路由到其對應HBA端口。

在一個實施例中,路徑選擇器可以進一步包括:負載均衡器,被配置為在檢測到所述多個不同HBA端口中的第一HBA端口處的性能瓶頸或者工作量過大時,將經由所述第一HBA端口的至少一部分工作量重新路由到所述多個HBA端口中的另一HBA端口。在另一實施例中,負載均衡器可以進一步包括:卸載工作量計算器,被配置為在檢測到所述多個不同HBA端口中的第一HBA端口處的性能瓶頸或者工作量過大時,計算需要從所述第一HBA端口卸載的期望工作量;存儲設備選擇器,被配置為基于所述計算,從所述多個 存儲設備中選擇一組存儲設備,以及路徑切換器,被配置為將所述一組存儲設備的活動路徑切換到經由所述第一HBA端口之外的另一HBA端口的路徑。在進一步的實施例中,卸載工作量計算器可以進一步被配置為至少基于所述第一HBA端口的性能度量和預定閾值來計算需要卸載的所述期望工作量。在另一實施例中,存儲設備選擇器可以進一步被配置為:基于所述計算從所述多個存儲設備中選擇一組存儲設備,使得所述一組存儲設備的當前性能度量之和與所計算的所述期望工作量匹配。在一個實施例中,存儲設備選擇器可以進一步被配置為:從所述多個存儲設備中選擇多組存儲設備,使得所述多組存儲設備中的每一組存儲設備的當前性能度量之和與所計算的所述期望工作量匹配;以及根據預定準則從所述多組存儲設備中選擇一組存儲設備。在另一實施例中,根據預定準則從所述多組存儲設備中選擇一組存儲設備包括:從所述多組存儲設備中選擇優(yōu)先級權重之和最大的一組存儲設備。

在一個實施例中,該裝置還可以包括拓撲檢測器,被配置為監(jiān)測所述存儲系統(tǒng)的拓撲更新;并且路徑選擇器可以進一步包括決策模塊,被配置為在監(jiān)測到拓撲更新事件而沒有檢測到性能相關事件時,按照第一路徑選擇策略選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑,以及在檢測到性能相關事件時,按照第二路徑選擇策略選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑。在另一實施例中,該第一路徑選擇策略可以是缺省的靜態(tài)路徑選擇策略,并且/或者,該第二路徑選擇策略可以是動態(tài)路徑選擇策略。在又一實施例中,該裝置還可以包括拓撲驗證器,被配置為在監(jiān)測到拓撲更新事件時,驗證更新后的拓撲的有效性,并且決策模塊可以被配置為被配置為在更新后的拓撲有效并且沒有檢測到性能相關事件時,按照第一路徑選擇策略選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑。

在一個實施例中,路徑選擇器可以進一步被配置為:基于所述檢測的結果、所述動態(tài)性能統(tǒng)計以及路徑的優(yōu)先級,從多條路徑中 選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑。

在另一實施例中,該裝置可以進一步包括多路徑模塊,被配置為根據所述選擇結果,對路徑的狀態(tài)和路徑的優(yōu)先級中的至少一項進行更新。

在又一實施例中,該裝置可以進一步包括性能調整器,被配置為促使所述性能監(jiān)測器、所述事件檢測器和所述路徑選擇器迭代地執(zhí)行所述監(jiān)測、檢測和選擇操作,直到達到期望的性能目標。

本公開的第三方面提供了一種裝置,該裝置包括至少一個處理器;以及包括計算機程序代碼的至少一個存儲器,其中所述至少一個存儲器和所述計算機程序代碼被配置為:與所述至少一個處理器一起,促使所述裝置執(zhí)行根據本公開的第一方面的方法。

根據本公開的實施例的方法或裝置,能夠避免或者及時消除性能瓶頸,獲得負載均衡,并使得系統(tǒng)資源被更加有效的利用。

盡管在附圖中通過示例的方式示出了特定的實施例,然而,應當理解,本文的具體實施例的描述不意在將實施例限制為所公開的具體形式。

附圖說明

從下文的公開內容和權利要求中,本公開的目的、優(yōu)點和其他特征將變得更加明顯。這里僅出于示例的目的,參考附圖來給出優(yōu)選實施例的非限制性描述,在附圖中:

圖1示出了雙SAS域拓撲的示意圖;

圖2a-b示出了根據本公開的實施例的方法的流程圖;

圖3示出了根據本公開的實施例的裝置的示例性結構圖;以及

圖4示出了根據本公開的實施例的另一裝置的操作示意圖。

具體實施方式

在以下描述中,出于說明的目的而闡述許多細節(jié)。然而,本領域普通技術人員將認識到可以在不使用這些具體細節(jié)的情況下實現 本公開的實施例。因此,本公開不旨在于受限于所示實施例、而是將被賦予與本文描述的原理和特征一致的最寬的范圍。

應當理解,術語“第一”、“第二”等僅被用來將一個元素與另一個元素區(qū)分開來。而實際上第一元素也能夠被稱為第二元素,反之亦然。另外還應當理解“包括”,“包含”僅被用來說明所陳述的特征、元素、功能或者部件的存在,然而并不排除存在一個或者多個其他的特征、元素、功能或者部件。

如上所述,在存儲系統(tǒng)中需要多路徑技術來實現負載均衡。針對負載不均衡和性能瓶頸問題,現有的多路徑方法嘗試提出不同的解決方案,然而由于各種不同的原因,這些現有的解決方案并不能夠很好地工作。這些解決方案包括:

1.靜態(tài)路徑選擇配置

這解決方案允許針對每個磁盤手動地配置活動路徑。該方法沒有將動態(tài)性能改變納入考慮,并且完全依賴于工程師的經驗來進行路徑選擇。

2.基于跳的路徑選擇

該解決方案假定從磁盤到HBA端口的跳數與磁盤的延時和性能密切關聯(lián)。該方法在很多情況下工作良好,然而較小的跳數并不必然地對應于較高的性能。對于DD系統(tǒng)的某些特定類型的磁盤框,已經發(fā)現性能問題。另外,該方法同樣是靜態(tài)的路徑選擇,因此,缺少靈活性和可擴展性。

3.dm-多路徑(dm-multipath)實施的路徑選擇器

該解決方案由開源設備映射器多路徑目標使用。例如,在Linux3.2中,有3種路徑選擇器:輪詢(round-robin)、隊列長度(queue-length)和服務時間(service-time)。與前兩種方法不同,這些路徑選擇器(尤其是3種中的后兩種)具有利用路徑度量有效處理動態(tài)性能變化的能力。但是仍然具有各自的缺陷。

例如,這些方案僅基于通過跟蹤給定磁盤的一批IO而收集到的本地度量來決定路徑選擇。因此,缺少系統(tǒng)級的知識,諸如關于在 給定時間HBA端口是否嚴重繁忙的信息。

這類路徑選擇器僅以細粒度調整的方式進行工作,這需要頻繁地切換路徑。然而,這種頻繁地路徑切換可能導致串行高級技術附接(SATA)磁盤性能惡化。因為與SAS盤不同,SATA驅動器初始地并未被設計為同時支持多啟動器(initiator)(例如圖1中的多個HBA111和112)。盡管能夠通過添加接口轉換器來模擬雙端口,但是在不同路徑間切換時,其性能并不如其在單端口連接情況下那樣好,因為其內部設計并沒有針對路徑切換進行優(yōu)化。

為了解決以上問題中的至少一些問題,本公開的實施例提出了用于存儲系統(tǒng)中的路徑選擇的方法和裝置。

圖2a中示出了方法200的示例性流程圖。該方法應用于的存儲系統(tǒng)包多個存儲設備,并且每個存儲設備經由多條路徑被連接到服務器的多個不同HBA端口。例如該存儲系統(tǒng)可以是如圖1所示的結構,并且存儲設備可以是圖1中所示的磁盤(121-128)。但是如本領域技術人員能夠理解的,該方法也可以應用于其它的存儲系統(tǒng)。

如圖2a所示,方法200包括:在塊S201,監(jiān)測所述存儲系統(tǒng)的系統(tǒng)級的性能度量,以獲得動態(tài)性能統(tǒng)計;在塊S202,基于所述動態(tài)性能統(tǒng)計,檢測與性能相關的事件;在塊S203,基于檢測結果和所述動態(tài)性能統(tǒng)計,從多條路徑中選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑。

使用該方法,能夠利用系統(tǒng)級的性能度量來進行路徑選擇,以避免或者及時地檢測到性能瓶頸并進行處理;另外能夠有效地自適應于性能的動態(tài)改變,使系統(tǒng)資源更有效使用。

在一些實施例中,在塊S201,能夠通過監(jiān)測多個不同端口處的性能度量來監(jiān)測存儲系統(tǒng)的系統(tǒng)級的性能度量。該端口可以是,但不限于,HBA端口(例如圖1中的HBA 111,112)。如本領域技術人員能夠理解的,根據存儲結構和技術的不同,并且隨著技術的發(fā)展,該HBA端口也可以被其他端口所取代,因此,本公開的實施例并不限于HBA端口。在另一實施例中,HBA端口處的性能度量可 以包括,但不限于,吞吐量、延時和資源使用狀況中的至少一項。在又一實施例中,在塊S201,還可以監(jiān)測以下中的至少一項:所述多個存儲設備的本地性能度量;以及多條路徑的本地性能度量。在該實施例中,能夠同時利用系統(tǒng)級的性能度量和特定存儲設備和/或路徑的本地度量的動態(tài)統(tǒng)計來進行路徑選擇。

在一個實施例中,在塊S202,根據動態(tài)性能統(tǒng)計而檢測的與性能相關的事件可以包括,但不限于,多個不同HBA端口中的一個HBA端口(例如圖1中的HBA 1,111)處的性能瓶頸、和/或多個不同HBA端口的性能的失衡、和/或多個存儲設備中至少一個存儲設備的性能低于閾值。這些事件可以觸發(fā)動態(tài)路徑選擇。

在一個實施例中,基于塊S202中的檢測結果以及塊S201中獲得的動態(tài)性能統(tǒng)計,在塊S203,可以將多個存儲設備劃分成與多個不同HBA端口分別對應的多個子集,以及將每個子集的存儲設備路由到其對應HBA端口。子集的具體劃分可以根據檢測結果以及塊S201中獲得的動態(tài)性能統(tǒng)計而定。例如,對于統(tǒng)計顯示為高負載的HBA端口,可以使其對應負載較小的存儲設備的子集。這使得能夠均衡各個HBA端口的工作量,避免或者解決負載的失衡。

在另一實施例中,在塊S203,如果檢測到多個不同HBA端口中的第一HBA端口處的性能瓶頸或者工作量過大時,可以針對多個存儲設備中的至少一個存儲設備進行動態(tài)路徑選擇,以將經由所述第一HBA端口的至少一部分工作量重新路由到所述多個HBA端口中的另一HBA端口。如本領域技術人員能夠理解的,該第一HBA端口可以是多個不同HBA端口中的任一HBA端口。例如,在檢測到經由圖1中的HBA 1(111)的負載過高,以致稱為整個存儲系統(tǒng)的瓶頸時,可以將經由該HBA端口的一些存儲設備重新路由到HBA 2端口(112),即,針對這些存儲設備,將經由HBA2的路徑選為活動路徑。

本公開的實施例并不限于在塊S203以任何具體的方式來進行存儲設備的重新路由。以下僅作為示例給出一種實施方式。如圖2b所 示,在該示例中,如果檢測到第一HBA端口(例如圖1中的HBA 1,111)處的性能瓶頸或者工作量過大,可以在S2031首先計算需要從該第一HBA端口卸載的期望工作量;然后在S2032,基于該計算,從多個存儲設備中選擇一組存儲設備,并且,在S2033,將所選的一組存儲設備的活動路徑切換到經由第一HBA端口之外的另一HBA端口(例如圖1中的HBA 2,112)的路徑。

在一個實施例中,在S2031,可以至少基于第一HBA端口的性能度量和預定閾值來計算需要卸載的所述期望工作量。例如可以將第一HBA端口的性能度量的當前統(tǒng)計結果與預定閾值進行比較來獲得超出該預定閾值的量(即,與預定閾值的差值),作為需要卸載的期望工作量。在另一實施例中,也可以將大于差值的量作為需要卸載的期望工作量。

在一個實施例中,可以將HBA端口的帶寬認為是系統(tǒng)資源的限制。因此,可以將閾值設定為逼近HBA端口的帶寬的值。如果HBA端口的吞吐量已經逼近HBA端口的帶寬,則將造成整個系統(tǒng)的瓶頸。從這一點來說,期望被卸載的工作量指示有多少工作量應當從繁忙的HBA端口(例如HBA 1)被重新路由到空閑的HBA端口(例如HBA 2)。該期望工作量與性能統(tǒng)計和閾值密切相關,或者與HBA端口帶寬、性能統(tǒng)計和閾值密切相關。例如,在塊S2031中計算的期望工作量可以通過以下函數描述:

E=f(帶寬,閾值,性能) (1)

盡管該示例中我們僅著重于帶寬,并且獲得期望卸載的工作量的值(E)。然而根據需要,上述公式也能夠被應用于其他性能度量,例如每秒IO數(IOPS)、時延等。

在一個實施例中,基于S2031中的計算,在S2032,可以從所述多個存儲設備中選擇一組存儲設備,使得該一組存儲設備的當前性能度量之和與所計算的期望工作量匹配。例如,可以采用,但不限于僅采用,以下算法來進行子集的選擇:利用一個存儲設備(例如磁盤驅動器)的當前的性能統(tǒng)計,估計其在較近的未來的吞吐量, 并且使存儲設備子集中的總吞吐量與在S2031中計算得到的需要卸載的期望工作量的基本一致。也就是說,通過將該一組存儲設備理由到其他HBA端口,則期望卸載的工作量能夠被卸載。如本領域技術人員能夠理解的,在以上操作中所使用的存儲設備的性能度量并不限于吞吐量,還可以是,例如占用的帶寬、數據量等。

在另一實施例中,在S2032,還可以從多個存儲設備中選擇多組存儲設備,使得該多組存儲設備中的每一組存儲設備的當前性能度量之和與所計算的所述期望工作量匹配;以及根據預定準則從所述多組存儲設備中選擇一組存儲設備。在進一步的實施例中,根據預定準則從所述多組存儲設備中選擇一組存儲設備可以包括:從多組存儲設備中選擇優(yōu)先級權重之和最大的一組存儲設備。

在一個示例中,每個存儲設備的權重可以表示配置的優(yōu)先級。相應的,可以將這種選擇定義為經典的0-1背包算法問題。形式上,該選擇可以被描述為:

以和x∈{0,1}為條件,

使最大化。

其中pj表示一個存儲設備的當前性能統(tǒng)計。wj指示一個存儲設備的優(yōu)先級權重,其可以是用戶配置的權重(例如從磁盤到HBA的跳數)、或者是通過其它統(tǒng)計操作獲得的動態(tài)權重。xj表示0-1變量,其決定了驅動器j是否屬于該子集。例如,取值為1表示屬于該子集,取值為0則表示不屬于該子集。

如本領域技術人員能夠理解的,從多組中選擇一組存儲設備也可以根據其他的預定準則進行。例如,可以選擇其中具有最少數目的存儲設備的一組,或者,選擇其中平均性能最差的一組等。因此,本公開的實施例并不限于通過任何特定的準則進行選擇。

在一個實施例中,方法200還包括:在塊S204,監(jiān)測所述存儲系統(tǒng)的拓撲更新;并且塊S203可以包括:在監(jiān)測到拓撲更新事件而 沒有檢測到性能相關事件時,按照第一路徑選擇策略選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑;以及在檢測到性能相關事件時,按照第二路徑選擇策略選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑。

利用該實施例,能夠監(jiān)測拓撲變化和性能統(tǒng)計,并且根據不同的事件進行相應的處理。在一個實施例中,第一路徑選擇策略可以是缺省的靜態(tài)路徑選擇策略,并且/或者,所述第二路徑選擇策略為動態(tài)路徑選擇策略。例如,對于拓撲更新事件,可以使用基于跳數的路徑選擇方法或者針對某些特定的平臺引入用于SSD鏈路的基于實驗結果的靜態(tài)映射路徑選擇方法;而對于與性能相關的事件時,其可以使用動態(tài)路徑選擇器。

在進一步的實施例中,在監(jiān)測到拓撲更新事件而沒有檢測到性能相關事件時,還可以在S204驗證更新后的拓撲的有效性,以及在更新后的拓撲有效時,可以在塊S203,按照第一路徑選擇策略選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑。

在一個實施例中,路徑可以具有優(yōu)先級,并且在塊S203中,可以基于檢測結果、動態(tài)性能統(tǒng)計、以及路徑的優(yōu)先級來從多條路徑中選擇用于多個存儲設備中的至少一個存儲設備的活動路徑。

該路徑優(yōu)先級可以是預先配置的,或者是動態(tài)更新的。例如,在一個實施例中,方法200還可以包括,在塊S205,根據塊S203中的選擇結果,更新路徑的狀態(tài)和/或路徑的優(yōu)先級。更新的結果可以被用于后續(xù)的路徑選擇。

在另一實施例中,塊S201-S203中的監(jiān)測、檢測和選擇可以迭代進行,直到達到期望的性能目標。例如,在S203中進行活動路徑選擇之后,開始繼續(xù)在S201中監(jiān)測性能度量,并在S203中調整選擇結果。例如,如果S201中監(jiān)測結果顯示已經實現了期望的性能目標(例如,被路由到繁忙的HBA的吞吐量已經低于閾值),則結束該路徑選擇過程;否則繼續(xù)監(jiān)測和調整。

以下參考附圖3描述用于存儲系統(tǒng)中的路徑選擇的裝置300的 結構。裝置300所適用的存儲系統(tǒng)包括多個存儲設備(例如圖1中的121-128),并且每個存儲設備經由多條路徑被連接到服務器(例如圖1中的110)的多個不同端口(例如圖1中的HBA端口111和112)。例如該存儲系統(tǒng)可以是(但是并不限于)如圖1所示。裝置300可以執(zhí)行參考圖2所述的方法200,但是不限于執(zhí)行該方法200。同樣該方法200可以由裝置300執(zhí)行,但是不限于由裝置300執(zhí)行。例如方法200的至少一些操作可以由其它的裝置來執(zhí)行。

在一個實施例中,該裝置300包括性能監(jiān)測器301,被配置為監(jiān)測所述存儲系統(tǒng)的系統(tǒng)級的性能度量,以獲得動態(tài)性能統(tǒng)計;事件檢測器302,被配置為基于所述動態(tài)性能統(tǒng)計,檢測與性能相關的事件;以及路徑選擇器303,被配置為基于檢測結果和所述動態(tài)性能統(tǒng)計,從多條路徑中選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑。

在一個實施例中,單元301-303可以被配置為執(zhí)行參考圖2所述的方法200的步驟S201-S203。因此,參考方法200進行的相關描述在此同樣適用。

在一個實施例中,性能監(jiān)測器301可以包括端口性能監(jiān)測器3011,被配置為通過監(jiān)測所述多個不同HBA端口處的性能度量來監(jiān)測所述存儲系統(tǒng)的系統(tǒng)級的性能度量。在一個示例實施例中,多個不同HBA端口處的性能度量可以包括,但不限于,吞吐量、延時和資源使用狀況中的至少一項。

在另一實施例中,性能監(jiān)測器301還可以包括本地性能監(jiān)測器3012,被配置為監(jiān)測多個存儲設備的本地性能度量,和/或多條路徑的本地性能度量。

在一個實施例中,事件檢測器302所檢測的與性能相關的事件可以包括:多個不同HBA端口中的一個HBA端口處的性能瓶頸、和/或多個不同HBA端口的性能的失衡、和/或多個存儲設備中至少一個存儲設備的性能低于閾值。

路徑選擇器303可以以多種方式、至少基于系統(tǒng)級的動態(tài)性能 統(tǒng)計進行存儲設備的路徑選擇。僅作為示例,路徑選擇器303可以基于檢測結果和動態(tài)性能統(tǒng)計,將多個存儲設備劃分成與多個不同HBA端口分別對應的多個子集,以及將每個子集的存儲設備路由到其對應HBA端口。

替代的或者附加的,路徑選擇器303可以包括:負載均衡器3031,被配置為在檢測到所述多個不同HBA端口中的第一HBA端口處的性能瓶頸或者工作量過大時,將經由所述第一HBA端口的至少一部分工作量重新路由到所述多個HBA端口中的另一HBA端口。

在一個實施例中,負載均衡器3031可以進一步包括卸載工作量計算器30311,被配置為在檢測到所述多個不同HBA端口中的第一HBA端口處的性能瓶頸或者工作量過大時,計算需要從所述第一HBA端口卸載的期望工作量;存儲設備選擇器30312,被配置為基于所述計算,從所述多個存儲設備中選擇一組存儲設備,以及路徑切換器30313,被配置為將所述一組存儲設備的活動路徑切換到經由所述第一HBA端口之外的另一HBA端口的路徑。

在一個實施例中,卸載工作量計算器30311可以被配置為至少基于所述第一HBA端口的性能度量和預定閾值來計算需要卸載的所述期望工作量。例如通過將第一HBA端口的性能度量和預定閾值進行比較來獲得期望工作量。

在另一實施例中,存儲設備選擇器30312可以進一步被配置為:基于所述計算從所述多個存儲設備中選擇一組存儲設備,使得所述一組存儲設備的當前性能度量之和與所計算的所述期望工作量匹配。在又一實施例中,存儲設備選擇器也可以被配置為從所述多個存儲設備中選擇多組存儲設備,使得所述多組存儲設備中的每一組存儲設備的當前性能度量之和與所計算的所述期望工作量匹配;以及根據預定準則從所述多組存儲設備中選擇一組存儲設備。如本領域技術人員能夠理解的,本公開的實施例不限于根據任何特定的預定的準則從多組存儲設備中選擇一組存儲設備。僅作為示例,這可以包括從所述多組存儲設備中選擇優(yōu)先級權重之和最大的一組存儲 設備。在其它的實施例中,也可以根據每組存儲設備中的數目、平均性能等進行選擇。

在一個實施例中,替代地或者附加地,裝置300可以包括拓撲監(jiān)測器304,被配置為監(jiān)測所述存儲系統(tǒng)的拓撲更新;并且路徑選擇器303可以進一步包括:決策模塊3032,被配置為在監(jiān)測到拓撲更新事件而沒有檢測到性能相關事件時,按照第一路徑選擇策略選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑,以及在檢測到性能相關事件時,按照第二路徑選擇策略選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑。在一個實施例中,第一路徑選擇策略可以是缺省的靜態(tài)路徑選擇策略,并且/或者,第二路徑選擇策略可以是動態(tài)路徑選擇策略。

在另一實施例中,裝置還可以包括拓撲驗證器305,被配置為在監(jiān)測到拓撲更新事件時,驗證更新后的拓撲的有效性,并且決策模塊3032可以被配置為在更新后的拓撲有效、并且沒有檢測到性能相關事件時,按照第一路徑選擇策略選擇用于所述多個存儲設備中的至少一個存儲設備的活動路徑。

在一些實施例中,路徑選擇器303可以被配置為還基于檢測結果和動態(tài)性能統(tǒng)計之外的其它參數,例如路徑的優(yōu)先級,來從多條路徑中選擇用于多個存儲設備中的至少一個存儲設備的活動路徑。

在另一實施例中,裝置300還可以進一步包括多路徑模塊306,被配置為根據路徑選擇器303的選擇結果,更新路徑的狀態(tài)和/或路徑的優(yōu)先級。

在一個實施例中,裝置300還可以進一步包括性能調整器307,被配置為促使性能監(jiān)測器301、事件檢測器302和路徑選擇器303迭代地執(zhí)行監(jiān)測、檢測和選擇操作,直到達到期望的性能目標。

如本領域技術人員能夠理解的,裝置300還可以包括圖3中未示出的其它單元;并且在一些實施例中,圖3中的某些單元可以被省略。并且,在一些實施例中,由圖3中一個單元進行的操作也可以分不到多個單元中執(zhí)行;類似的,在另一些實施例中,在圖3中 由多個單元進行的操作也可以由單個部件實現。

在圖4中示出了通過根據本公開的實施例的另一裝置400迭代地進行路徑選擇的示意圖。裝置400包括性能監(jiān)測器401、路徑選擇器框架402(其中包括自適應的路徑選擇器4021)、拓撲監(jiān)測器403、和多路徑核心模塊404。其背后的基本想法是:監(jiān)測性能度量,不僅包括本地路徑狀態(tài),還包括系統(tǒng)級的資源使用。利用這些動態(tài)統(tǒng)計,可以及時地檢測到性能的瓶頸,并且向決策模塊通知。然后路徑選擇器框架402中的決策模塊(4023)可以進一步分析性能度量、系統(tǒng)資源使用和系統(tǒng)拓撲。在此之后,其將給出路徑選擇建議,用于進行路徑選擇(422)以獲得工作量均衡。多路徑核心模塊將最終提供路徑選擇機制以支持以上策略。

圖4中的裝置400的各個部件的功能可以被總結如下:

性能監(jiān)測器401的功能類似于圖3中的性能監(jiān)測器301,其可以收集存儲設備(例如磁盤驅動器)和端口(例如HBA端口)的性能度量,例如可以分別由圖4中的驅動器性能模塊4011和端口性能模塊4012來執(zhí)行該監(jiān)測。當檢測到系統(tǒng)級的瓶頸時,其中的性能警告模塊4013可以通過發(fā)送系統(tǒng)級的性能事件來通知路徑選擇框架402。

如圖4所示,拓撲監(jiān)測器403可以包括4個子部件:設備熱拔插事件(Uevent)處理單元4031、拓撲獲取單元4032、拓撲驗證單元4033、和拓撲更新通知單元4034。其可以實施圖3中的拓撲監(jiān)測器304和拓撲驗證器305的功能。

其中,Uevent處理單元4031被配置為集中于Uevent收集和分析,Uevent是指示與拓撲變化有關的事件,例如磁盤數量的改變。當拓撲改變穩(wěn)定時,Uevent處理單元4031可以調用拓撲驗證單元4033。

拓撲獲取單元4032,被配置為維護拓撲信息,用于由其他部件訪問。例如,路徑選擇器框架402可以使用該信息。拓撲驗證單元4033將檢查拓撲是否有效。拓撲是否有效是由更新后的拓撲是否符 合產品的要求和配置來決定的。例如,如果無效的拓撲存在,則可以認為進行路徑選擇是無意義的。拓撲更新通知單元4034被配置為將通過發(fā)送拓撲改變事件來喚醒路徑選擇框架402。

多路徑核心模塊404能夠檢測路徑狀態(tài)和統(tǒng)計(4041),例如可以執(zhí)行圖3中的本地性能監(jiān)測器3012中的至少一部分功能。當其檢測到一條路徑上的本地瓶頸時,將通過發(fā)送本地性能事件來通知路徑選擇框架402。其還可以提供顯示/存儲sysfs接口(4042),以支持路徑選擇框架402改變路徑優(yōu)先級。

路徑選擇框架402在該示例中主要包括三個功能部分:事件檢測4021、信息高速緩存4022、以及決策模塊4023。各部分的具體功能直接如下,并且各部分的功能又可以由子模塊來完成:

事件檢測4021:被配置為接收事件并對其分類(420)。其可能接收到多種類型的事件,并且僅將與性能相關的事件調度到決策模塊4023中的動態(tài)路徑選擇器。拓撲事件指示拓撲改變,其可能由配置的靜態(tài)路徑選擇器進行處理(424)。

信息高速緩存4022:被配置為維護與性能和拓撲有關的信息。不同的信息可以分別由不同的子模塊來維護,如圖4所示。例如驅動器性能模塊411維護與驅動器性能有關的信息;端口性能模塊412維護與HBA端口性能有關的信息;路徑性能模塊413維護與路徑性能有關的信息;拓撲模塊414維護與拓撲有關的信息。核心決策模塊4023能夠通過調用信息高速緩存接口來訪問它們。

決策模塊4023可以被配置為執(zhí)行圖3中的決策模塊3032的至少一部分功能。例如,事件檢測4021單元喚醒決策模塊4023,并且然后核心決策邏輯啟動。其可以包括動態(tài)路徑選擇器421,其在自適應路徑選擇算法中發(fā)揮核心作用。其可以執(zhí)行以上參照圖2所述的塊S203的功能或者參照圖3所述的路徑選擇單元303的全部或者一部分功能。

另外,如圖4所示,裝置400個各部分可以通信,以根據路徑選擇的結果更新統(tǒng)計,監(jiān)測性能調整(423)促使迭代地執(zhí)行事件檢 測和路徑選擇操作,直到達到期望的性能目標。達到期望后,可以進入等待狀態(tài)(425)。

如本領域技術人員能夠理解的,圖3或者4所示僅是示例結構,本公開的實施例也可以以不同于圖3或者4所示的其它結構來實施基于系統(tǒng)級性能的動態(tài)路徑選擇。例如,裝置300、400還可以包括圖3-4中未示出的其它單元;并且在一些實施例中,圖3-4中的某些單元可以被省略。并且,在一些實施例中,由圖3-4中的一個單元進行的操作也可以分布到多個單元中執(zhí)行;類似的,在另一些實施例中,在圖3-4中由多個單元進行的操作也可以由單個部件實現。

在本公開的實施例中,從多路徑側,針對負載均衡問題設計了智能的路徑選擇解決方案。其可以由,例如,圖4中的路徑選擇框架和其中的動態(tài)路徑選擇器完成。該框架檢測拓撲更新和性能瓶頸,從而能夠通知路徑選擇器來針對負載均衡進行路徑選擇。動態(tài)路徑選擇器可以利用拓撲知識、和/或本地性能統(tǒng)計、和/或系統(tǒng)級的性能統(tǒng)計來進行路徑選擇。該解決方案還可以被配置為迭代地監(jiān)測性能并進行路徑選擇,以自適應的方式獲得性能的調整。各部件一起工作以提供比現有方法更加智能和靈活的方法。

盡管在一些實施例中,本公開提出的方法和裝置可以在SAS域得以應用,但是本公開的實施例不限于此,而是能夠并應用于其他域,例如FC、ISCSI存儲域等。

本領域技術人員將容易地認識到,各種上述各種方法中的塊或者步驟可以通過編程的計算機來執(zhí)行。在本公開中,一些實施例還意在涵蓋程序存儲系統(tǒng),例如,數字數據存儲介質,這是機器或計算機可讀的并且編碼機器可執(zhí)行或計算機可執(zhí)行的指令程序,其中,所述指令執(zhí)行上述方法的一些或所有步驟。程序存儲系統(tǒng)可以是,例如,數字存儲器、諸如磁盤和磁帶的磁存儲介質、硬盤驅動器或光學可讀數字數據存儲介質。該實施例還意在涵蓋編程為執(zhí)行所述上述方法的步驟的計算機。一些實施例還意在涵蓋一種裝置,該裝置包括至少一個處理器;以及至少一個包括計算機程序代碼的存儲 器,其中所述至少一個存儲器和所述計算機程序代碼被配置為:與所述至少一個處理器一起,促使所述裝置執(zhí)行方法200。

在附圖中示出的裝置的各種元件的功能,可以通過使用軟件、專用硬件以及與適當軟件相關聯(lián)的能夠執(zhí)行軟件的硬件、或者固件、或者其結合來提供。當由處理器提供時,該功能可以由單個專用處理器、由單個共享處理器或由多個單獨的處理器來提供。此外,術語“處理器”可以包括但不限于,數字信號處理器(DSP)硬件、網絡處理器、專用集成電路(ASIC)、現場可編程門陣列(FPGA),用于存儲軟件的只讀存儲器(ROM)、隨機存取存儲器(RAM)和非易失性存儲裝置。還可以包括其他常規(guī)和/或定制的硬件。

本領域技術人員應當理解,說明書和附圖僅僅說明本公開的實施例的原理。因此,應當理解,本領域的技術人員將能夠設計出各種布置,雖然這里沒有明確地描述或示出,但是該布置體現本公開的實施例的原理并且被包括在本公開的實施例的精神和范圍內。此外,這里闡述的所有示例主要旨在明確僅用于教學目的,以幫助讀者理解本公開的實施例的原理和發(fā)明人貢獻的用于促進本領域的概念,并且應被解釋為不限于這些具體闡釋的示例和條件。而且,這里闡述本公開的實施例的原理、方面和實施例的所有闡述及其具體示例也意在包含其等同物。

當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
滕州市| 贡山| 乌鲁木齐市| 无棣县| 锡林浩特市| 清镇市| 大庆市| 平利县| 驻马店市| 德令哈市| 澄迈县| 高平市| 台中市| 新建县| 安龙县| 福泉市| 红安县| 张家川| 六安市| 城固县| 柏乡县| 来安县| 金寨县| 芦溪县| 延川县| 海城市| 苏州市| 德州市| 冷水江市| 荥阳市| 涟源市| 大同县| 凤庆县| 益阳市| 法库县| 双辽市| 安新县| 通化县| 拉萨市| 平乡县| 雷波县|