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

用于模擬慢速存儲(chǔ)盤的方法和裝置與流程

文檔序號(hào):12550518閱讀:937來(lái)源:國(guó)知局
用于模擬慢速存儲(chǔ)盤的方法和裝置與流程

本發(fā)明的各實(shí)施方式涉及存儲(chǔ)系統(tǒng)領(lǐng)域,并且更具體地,涉及用于模擬慢速存儲(chǔ)盤的方法和裝置。



背景技術(shù):

存儲(chǔ)系統(tǒng)的硬件部分通常包括一個(gè)或多個(gè)存儲(chǔ)盤。存儲(chǔ)盤的性能會(huì)嚴(yán)重影響整個(gè)存儲(chǔ)系統(tǒng)的性能,尤其是當(dāng)存儲(chǔ)盤被用作根文件系統(tǒng)盤時(shí)。與存儲(chǔ)盤性能相關(guān)的因素之一為I/O響應(yīng)時(shí)間。I/O響應(yīng)時(shí)間指代從用戶發(fā)出I/O請(qǐng)求到接收到存儲(chǔ)盤對(duì)該I/O請(qǐng)求的響應(yīng)所需的時(shí)間。存儲(chǔ)盤可以因機(jī)械問題(例如磁頭退化)或環(huán)境問題(例如濕度過大)而導(dǎo)致I/O響應(yīng)時(shí)間變長(zhǎng),從而成為“慢速存儲(chǔ)盤”(在下文中簡(jiǎn)稱為“慢盤”)。慢盤會(huì)對(duì)存儲(chǔ)系統(tǒng)的性能造成不利影響。因而,存儲(chǔ)系統(tǒng)供應(yīng)商所面臨的一項(xiàng)挑戰(zhàn)是,如何對(duì)慢盤的事件進(jìn)行模擬,以便在發(fā)布存儲(chǔ)系統(tǒng)之前,充分測(cè)試慢盤對(duì)存儲(chǔ)系統(tǒng)的影響以消除未來(lái)可能帶來(lái)的不利影響。

目前,一般采用基于硬件的方式來(lái)對(duì)慢盤進(jìn)行測(cè)試。例如,在一種方案中,采用從客戶現(xiàn)場(chǎng)或存儲(chǔ)盤制造商返回的真實(shí)的慢盤來(lái)進(jìn)行測(cè)試。在另一種方案中,采用特殊的存儲(chǔ)盤模擬器來(lái)進(jìn)行測(cè)試,例如可從SANBlaze公司獲得的存儲(chǔ)盤模擬器。

然而,上述兩種方案具有各自的缺點(diǎn)。例如,對(duì)于上述第一種方案,真實(shí)的慢盤經(jīng)常是特別難以獲得的;而且,即使可以獲得這種慢盤,其慢速模式也是固定的,因而難以充分測(cè)試這種慢盤對(duì)存儲(chǔ)系統(tǒng)的影響。此外,對(duì)于上述第二種方案,由于需要購(gòu)買特殊的存儲(chǔ)盤模擬器,因而增加了測(cè)試成本;并且這種特殊的存儲(chǔ)盤模擬器被并入存儲(chǔ)系統(tǒng)后有時(shí)無(wú)法像常規(guī)存儲(chǔ)盤那樣操作。

因此,需要提供一種便于模擬慢盤的技術(shù)方案。



技術(shù)實(shí)現(xiàn)要素:

為了解決一個(gè)或多個(gè)現(xiàn)有技術(shù)中存在的問題,根據(jù)本發(fā)明的實(shí)施方式提出一種利用軟件來(lái)模擬慢盤的技術(shù)方案。

根據(jù)本發(fā)明實(shí)施方式的第一方面,提供一種用于模擬慢速存儲(chǔ)盤的方法。該方法包括:截獲將要分派至存儲(chǔ)盤的輸入/輸出I/O命令;以及基于預(yù)定的延遲注入策略來(lái)向所截獲的I/O命令的分派注入延遲,以利用存儲(chǔ)盤來(lái)模擬慢速存儲(chǔ)盤。

在一些實(shí)施方式中,延遲注入策略至少指示:該延遲注入策略所針對(duì)的存儲(chǔ)盤和/或所針對(duì)的I/O命令的類型。

在一些實(shí)施方式中,在該延遲注入策略指示所針對(duì)的存儲(chǔ)盤的情況下,基于預(yù)定的延遲注入策略來(lái)向所截獲的I/O命令的分派注入延遲包括:識(shí)別所截獲的I/O命令所針對(duì)的存儲(chǔ)盤;確定所截獲的I/O命令所針對(duì)的存儲(chǔ)盤是否與該延遲注入策略所指示的磁盤相匹配;以及響應(yīng)于所截獲的I/O命令所針對(duì)的存儲(chǔ)盤與該延遲注入策略所指示的存儲(chǔ)盤相匹配,向所截獲的I/O命令的分派注入延遲。

在一些實(shí)施方式中,在該延遲注入策略指示所針對(duì)的I/O命令的類型的情況下,基于預(yù)定的延遲注入策略來(lái)向所截獲的I/O命令的分派注入延遲包括:識(shí)別所截獲的I/O命令的類型;確定所識(shí)別的I/O命令的類型是否與該延遲注入策略所指示的I/O命令的類型相匹配;以及響應(yīng)于所識(shí)別的I/O命令的類型與該延遲注入策略所指示的I/O命令的類型相匹配,向所截獲的I/O命令的分派注入延遲。

在一些實(shí)施方式中,該延遲注入策略進(jìn)一步指示:向預(yù)定數(shù)目的I/O命令的分派注入延遲;以及向該預(yù)定數(shù)目的I/O命令的分派注入延遲的頻率。

在一些實(shí)施方式中,向所截獲的I/O命令的分派注入延遲包括:應(yīng)用隨機(jī)算法以確定是否向所截獲的I/O命令的分派注入延遲。

根據(jù)本發(fā)明實(shí)施方式的第二方面,提供了一種用于模擬慢速存儲(chǔ)盤的裝置。該裝置包括:截獲單元,被配置為截獲將要分派至存儲(chǔ)盤 的輸入/輸出I/O命令;以及延遲注入單元,被配置為基于預(yù)定的延遲注入策略來(lái)向所截獲的I/O命令的分派注入延遲,以利用存儲(chǔ)盤來(lái)模擬慢速存儲(chǔ)盤。

根據(jù)本發(fā)明實(shí)施方式的第三方面,提供了一種服務(wù)器。該服務(wù)器包括根據(jù)本發(fā)明實(shí)施方式的用于模擬慢速存儲(chǔ)盤的裝置。

根據(jù)本發(fā)明實(shí)施方式的第四方面,提供了一種服務(wù)器。該服務(wù)器包括:一個(gè)或多個(gè)處理器;存儲(chǔ)有計(jì)算機(jī)程序指令的存儲(chǔ)器,當(dāng)由所述一個(gè)或多個(gè)處理器執(zhí)行所述計(jì)算機(jī)程序指令時(shí)使得所述應(yīng)用服務(wù)器執(zhí)行根據(jù)本發(fā)明實(shí)施方式的用于模擬慢速存儲(chǔ)盤的方法。

根據(jù)本發(fā)明實(shí)施方式的第五方面,提供了一種計(jì)算機(jī)程序產(chǎn)品。該計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)程序指令,當(dāng)由計(jì)算設(shè)備執(zhí)行所述計(jì)算機(jī)程序指令時(shí)使得所述計(jì)算設(shè)備執(zhí)行根據(jù)本發(fā)明實(shí)施方式的用于模擬慢速存儲(chǔ)盤的方法。

根據(jù)本發(fā)明的各個(gè)實(shí)施方式,由于利用軟件對(duì)慢盤進(jìn)行模擬,因而無(wú)需額外的硬件,從而降低了對(duì)慢盤進(jìn)行測(cè)試的成本。此外,借助于操作系統(tǒng)的內(nèi)核所提供的接口,用戶可以靈活地、動(dòng)態(tài)地配置延遲注入策略。另外,根據(jù)用戶配置的延遲注入策略,可以模擬慢盤的任何慢速模式。

再者,現(xiàn)有方案的實(shí)施取決于可獲得的真實(shí)的慢盤或存儲(chǔ)盤模擬器的數(shù)目,因而無(wú)法針對(duì)大量存儲(chǔ)盤同時(shí)實(shí)施。然而,根據(jù)本發(fā)明的各個(gè)實(shí)施方式,可以針對(duì)大量存儲(chǔ)盤同時(shí)實(shí)施對(duì)慢盤的模擬,因而具有可擴(kuò)展性。此外,采用根據(jù)本發(fā)明的各個(gè)實(shí)施方式,無(wú)需對(duì)操作系統(tǒng)的其他組件進(jìn)行改動(dòng),從而實(shí)現(xiàn)了透明性。

附圖說(shuō)明

結(jié)合附圖并參考以下詳細(xì)說(shuō)明,本發(fā)明的各實(shí)施方式的特征、優(yōu)點(diǎn)及其他方面將變得更加明顯,在此以示例性而非限制性的方式示出了本發(fā)明的若干實(shí)施方式。在附圖中:

圖1示出能夠用于支持本發(fā)明的實(shí)施方式的示例性存儲(chǔ)系統(tǒng)實(shí)現(xiàn) 架構(gòu)的示意圖;

圖2示出根據(jù)本發(fā)明的一個(gè)實(shí)施方式的用于模擬慢盤的方法的流程圖;

圖3示出了根據(jù)本發(fā)明的一個(gè)實(shí)施方式的延遲注入過程;

圖4示出根據(jù)本發(fā)明的一個(gè)實(shí)施方式的用于模擬慢盤的裝置的框圖;以及

圖5示出了能夠用于實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施方式的計(jì)算機(jī)系統(tǒng)的示意性框圖。

具體實(shí)施方式

下面將參考附圖中示出的若干示例實(shí)施方式來(lái)描述本發(fā)明的原理。應(yīng)當(dāng)理解,描述這些實(shí)施方式僅僅是為了使本領(lǐng)域技術(shù)人員能夠更好地理解進(jìn)而實(shí)現(xiàn)本發(fā)明,而并非以任何方式限制本發(fā)明的范圍。

圖1示出能夠用于支持本發(fā)明的實(shí)施方式的示例性存儲(chǔ)系統(tǒng)實(shí)現(xiàn)架構(gòu)100的示意圖。支持本發(fā)明實(shí)施方式的示例性存儲(chǔ)系統(tǒng)實(shí)現(xiàn)架構(gòu)例如可以采用Linux操作系統(tǒng)。這里對(duì)于Linux操作系統(tǒng)的描述僅旨在給出一種示例性的存儲(chǔ)系統(tǒng)實(shí)現(xiàn)架構(gòu),而并非以該示例中的任何細(xì)節(jié)對(duì)本發(fā)明的范圍進(jìn)行任何限制。本領(lǐng)域的技術(shù)人員可以理解,還可以采用任何其它適合的操作系統(tǒng)來(lái)支持根據(jù)本發(fā)明的各個(gè)實(shí)施方式。

如圖1所示,存儲(chǔ)系統(tǒng)實(shí)現(xiàn)架構(gòu)100包括軟件堆棧和硬件部分。軟件堆棧包括應(yīng)用程序110、文件系統(tǒng)120、SCSI(Small Computer System Interface,小型計(jì)算機(jī)系統(tǒng)接口)協(xié)議層130、以及HBA(Host Bus Adapter,主機(jī)總線適配器)驅(qū)動(dòng)程序?qū)?40。硬件部分包括存儲(chǔ)盤1501、…、150n(統(tǒng)稱為存儲(chǔ)盤150)。

具體地,SCSI協(xié)議層130包括SCSI上層131、SCSI中間層132和SCSI下層133。

SCSI上層131為SCSI設(shè)備驅(qū)動(dòng)層,其可以由SCSI設(shè)備開發(fā)商提供。SCSI上層131被配置為接收來(lái)自上層(例如文件系統(tǒng))的請(qǐng)求并將其轉(zhuǎn)換成SCSI請(qǐng)求,同時(shí)將SCSI中間層132執(zhí)行的SCSI命 令及狀態(tài)信息返回上層。

SCSI中間層132為SCSI總線驅(qū)動(dòng)層,其可以由操作系統(tǒng)開發(fā)者提供。SCSI中間層132為SCSI上層131和SCSI下層133的公共服務(wù)層,其提供了可供上層和下層驅(qū)動(dòng)器使用的多個(gè)函數(shù)。SCSI中間層132是SCSI協(xié)議層130的核心,可以包括與SCSI協(xié)議模塊化相關(guān)的多種功能,例如總線掃描、錯(cuò)誤處理、SCSI命令排序等。這意味著可以以相同的方式使用具有不同類型接口的HBA。此外,SCSI中間層132能夠?qū)?lái)自SCSI上層131的SCSI請(qǐng)求轉(zhuǎn)換成SCSI命令。在SCSI命令執(zhí)行完成后,SCSI中間層132能夠接收來(lái)自SCSI下層133的SCSI響應(yīng),并通知SCSI上層131響應(yīng)的SCSI請(qǐng)求已經(jīng)完成。

SCSI下層133為適配器驅(qū)動(dòng)層,其可以由適配器的制造商提供。SCSI下層133可以包括適于處理各種不同的適配器類型的大量代碼。

HBA是在服務(wù)器和存儲(chǔ)設(shè)備(例如存儲(chǔ)盤150)之間提供I/O處理和物理連接的電路板和/或集成電路適配器。HBA驅(qū)動(dòng)程序?qū)?40被配置為用于實(shí)現(xiàn)服務(wù)器和存儲(chǔ)設(shè)備之間的通信。

在圖1所示的存儲(chǔ)系統(tǒng)實(shí)現(xiàn)架構(gòu)100中,來(lái)自于用戶的I/O請(qǐng)求經(jīng)由應(yīng)用程序110、文件系統(tǒng)120和SCSI上層131被轉(zhuǎn)發(fā)至SCSI中間層132。SCSI中間層132將該I/O請(qǐng)求轉(zhuǎn)換成I/O命令,并將該I/O命令經(jīng)由SCSI下層133分發(fā)至HBA驅(qū)動(dòng)程序?qū)?40。HBA驅(qū)動(dòng)程序?qū)?40將該I/O命令封裝成包,并將其通過存儲(chǔ)網(wǎng)絡(luò)(圖1中未示出)轉(zhuǎn)發(fā)至存儲(chǔ)盤150的控制器(圖1中未示出)。存儲(chǔ)盤150的控制器對(duì)所接收的包進(jìn)行解析并且將其轉(zhuǎn)換為存儲(chǔ)盤150可識(shí)別的I/O命令。

圖2示出根據(jù)本發(fā)明的一個(gè)實(shí)施方式的用于模擬慢盤的方法200的流程圖。在下文中,將參照?qǐng)D2并借助于圖1所示的存儲(chǔ)系統(tǒng)實(shí)現(xiàn)架構(gòu)100的示例,來(lái)詳細(xì)描述根據(jù)本發(fā)明的一個(gè)實(shí)施方式的用于模擬慢盤的方法。

需要注意的是,本文中所使用的術(shù)語(yǔ)“存儲(chǔ)盤”可以包括固態(tài)盤(SSD)、機(jī)械存儲(chǔ)盤(HDD)、混合存儲(chǔ)盤(SSHD)、或者其他 類似的存儲(chǔ)設(shè)備。本發(fā)明的范圍在此方面不受限制。此外,存儲(chǔ)盤可以是計(jì)算機(jī)、服務(wù)器或者其他計(jì)算設(shè)備的存儲(chǔ)系統(tǒng)的一部分。

此外,在本公開的上下文中,如果在統(tǒng)計(jì)時(shí)間段內(nèi),針對(duì)一個(gè)存儲(chǔ)盤的I/O請(qǐng)求中,存在數(shù)量超過預(yù)定數(shù)量閾值的I/O請(qǐng)求的響應(yīng)時(shí)間超過預(yù)定時(shí)間閾值,則可以認(rèn)為該存儲(chǔ)盤為“慢速存儲(chǔ)盤”或“慢盤”。該預(yù)定時(shí)間閾值例如可以根據(jù)存儲(chǔ)盤的類型來(lái)確定。例如,對(duì)于存儲(chǔ)系統(tǒng)或個(gè)人計(jì)算機(jī)的存儲(chǔ)盤,該預(yù)定時(shí)間閾值可以被確定為10ms;而對(duì)于SSD盤,該預(yù)定時(shí)間閾值可以被確定為1ms。

如圖2所示,在步驟S210,截獲將要分派至存儲(chǔ)盤的I/O命令。由于本發(fā)明旨在通過截獲將要分派至存儲(chǔ)盤的I/O命令并且向所截獲的I/O命令中注入延遲來(lái)模擬慢盤,因此期望在盡可能靠近存儲(chǔ)盤的軟件層截獲I/O命令并且向其注入延遲。如前所述,存儲(chǔ)盤150通過HBA(例如如HBA驅(qū)動(dòng)程序?qū)?40所示)與服務(wù)器進(jìn)行物理連接。換言之,HBA驅(qū)動(dòng)程序?qū)?40是軟件堆棧中最靠近存儲(chǔ)盤150的軟件層。因而,在一些實(shí)施方式中,可以在與存儲(chǔ)盤150通信的HBA驅(qū)動(dòng)程序?qū)?40截獲將要分派至存儲(chǔ)盤150的I/O命令,由此可以最小化軟件層對(duì)延遲注入的影響。

然而,由于可以采用多種不同類型的HBA(即,具有不同類型接口的HBA)將存儲(chǔ)盤150與服務(wù)器進(jìn)行物理連接,因而如果在HBA驅(qū)動(dòng)程序?qū)?40截獲I/O命令并且向其注入延遲,則意味著需要對(duì)每種類型的HBA的驅(qū)動(dòng)程序進(jìn)行改動(dòng),由此降低了根據(jù)本發(fā)明的方法的普遍適用性。此外,考慮到SCSI中間層132是大多數(shù)塊設(shè)備都會(huì)使用的公共層并且是較為靠近存儲(chǔ)盤150的軟件層,因此,在另一些實(shí)施方式中,可以在與存儲(chǔ)盤150通信的SCSI中間層132截獲將要分派至存儲(chǔ)盤150的I/O命令。

繼續(xù)參照?qǐng)D2,在步驟S220,基于預(yù)定的延遲注入策略來(lái)向所截獲的I/O命令的分派注入延遲,以利用該存儲(chǔ)盤來(lái)模擬慢盤。

如前所述,從用戶發(fā)出I/O請(qǐng)求到接收到存儲(chǔ)盤對(duì)該I/O請(qǐng)求的響應(yīng)所需的時(shí)間被稱作I/O響應(yīng)時(shí)間。該I/O響應(yīng)時(shí)間包括從用戶向 存儲(chǔ)盤分派I/O請(qǐng)求的時(shí)間以及存儲(chǔ)盤向用戶返回對(duì)該I/O請(qǐng)求的響應(yīng)的時(shí)間。本發(fā)明的實(shí)施方式旨在截獲將要分派至存儲(chǔ)盤的I/O命令并且向所截獲的I/O命令中注入延遲,這意味著延長(zhǎng)了從用戶向存儲(chǔ)盤分派I/O請(qǐng)求的時(shí)間。

在本發(fā)明的實(shí)施方式中,延遲注入策略可以由用戶根據(jù)需求來(lái)預(yù)先確定或配置。在一些實(shí)施方式中,預(yù)定的延遲注入策略可以僅指示延遲注入策略所針對(duì)的存儲(chǔ)盤,而不指示所針對(duì)的I/O命令的類型。例如,預(yù)定的延遲注入策略可以指示針對(duì)存儲(chǔ)系統(tǒng)中的特定存儲(chǔ)盤。換言之,預(yù)定的延遲注入策略可以指示針對(duì)存儲(chǔ)系統(tǒng)中的特定存儲(chǔ)盤的所有I/O命令的分派注入延遲,而不考慮I/O命令的類型。又例如,預(yù)定的延遲注入策略可以指示針對(duì)存儲(chǔ)系統(tǒng)中的所有存儲(chǔ)盤。換言之,預(yù)定的延遲注入策略可以指示針對(duì)存儲(chǔ)系統(tǒng)中的所有存儲(chǔ)盤的所有I/O命令的分派注入延遲,而不考慮I/O命令的類型。

在另一些實(shí)施方式中,預(yù)定的延遲注入策略可以僅指示延遲注入策略所針對(duì)的I/O命令的類型,而不指示所針對(duì)的存儲(chǔ)盤。換言之,預(yù)定的延遲注入策略可以指示針對(duì)所有硬盤上的特定類型的I/O命令(例如讀取命令或?qū)懭朊?的分派注入延遲。

在又一些實(shí)施方式中,預(yù)定的延遲注入策略可以指示所針對(duì)的存儲(chǔ)盤和所針對(duì)的I/O命令的類型二者。換言之,預(yù)定的延遲注入策略可以指示針對(duì)存儲(chǔ)系統(tǒng)中的特定硬盤的特定類型的I/O命令(例如讀取命令或?qū)懭朊?的分派注入延遲。

此外,在一些實(shí)施方式中,預(yù)定的延遲注入策略可以進(jìn)一步指示:向預(yù)定數(shù)目的I/O命令的分派注入延遲;以及向該預(yù)定數(shù)目的I/O命令的分派注入延遲的頻率。換言之,預(yù)定的延遲注入策略可以指示:向特定存儲(chǔ)盤上的特定類型的、預(yù)定數(shù)目的I/O命令的分派注入延遲,向特定存儲(chǔ)盤上的所有類型的、預(yù)定數(shù)目的I/O命令的分派注入延遲,向所有存儲(chǔ)盤上的特定類型的、預(yù)定數(shù)目的I/O命令的分派注入延遲,或者向所有存儲(chǔ)盤上的所有類型的、預(yù)定數(shù)目的I/O命令的分派注入延遲。

另外,預(yù)定的延遲注入策略可以進(jìn)一步指示期望注入的延遲的時(shí)間長(zhǎng)度。

可以理解,一般地,I/O操作是在操作系統(tǒng)的內(nèi)核態(tài)下執(zhí)行的。操作系統(tǒng)的內(nèi)核通常會(huì)提供一系列接口以方便與用戶交互。因此,在一些實(shí)施方式中,可以經(jīng)由操作系統(tǒng)所提供的接口將用戶確定的延遲注入策略導(dǎo)入操作系統(tǒng)的內(nèi)核。作為一個(gè)示例,在采用Linux操作系統(tǒng)的情況下,每個(gè)塊設(shè)備均具有sysfs(sys文件系統(tǒng))接口,用戶可以對(duì)sysfs接口下的某些屬性文件進(jìn)行讀取或修改。例如,用戶可以通過向sysfs接口下的配置文件寫入相應(yīng)的字符串來(lái)將延遲注入策略導(dǎo)入操作系統(tǒng)的內(nèi)核。此外,用戶也可以讀取該配置文件以了解當(dāng)前的延遲注入狀態(tài),例如是否啟動(dòng)了延遲注入、將要向何種類型的I/O注入延遲、延遲的長(zhǎng)度等。

然而,應(yīng)當(dāng)理解,除了借助于sysfs接口之外,用戶也可以借助于其他任何適當(dāng)?shù)姆绞絹?lái)將延遲注入策略導(dǎo)入操作系統(tǒng)的內(nèi)核,包括但是不限于:IOCTL(IO控制)接口、PROC接口、系統(tǒng)調(diào)用、RPC(遠(yuǎn)程過程調(diào)用)。

根據(jù)本發(fā)明的實(shí)施方式,實(shí)現(xiàn)了利用軟件(例如在圖1所示的軟件堆棧中)對(duì)慢盤的模擬。模擬開銷可以忽略不計(jì),因?yàn)槟M過程僅需占用非常少的存儲(chǔ)器/CPU資源。

此外,借助于操作系統(tǒng)的內(nèi)核所提供的接口,用戶可以動(dòng)態(tài)地配置延遲注入策略。另外,根據(jù)用戶配置的延遲注入策略,可以模擬慢盤的任何慢速模式。該慢速模式例如包括但是不限于:特定存儲(chǔ)盤針對(duì)特定類型的I/O命令(例如讀取或?qū)懭隝/O命令)的反應(yīng)較慢,特定存儲(chǔ)盤針對(duì)所有類型的I/O命令的反應(yīng)較慢,存儲(chǔ)系統(tǒng)中的所有存儲(chǔ)盤針對(duì)特定類型的I/O命令的反應(yīng)較慢,存儲(chǔ)系統(tǒng)中的所有存儲(chǔ)盤針對(duì)所有類型的I/O命令的反應(yīng)較慢。

以下將結(jié)合圖3來(lái)描述根據(jù)本發(fā)明的一個(gè)實(shí)施方式的延遲注入過程。如前所述,預(yù)定的延遲注入策略可以指示:向存儲(chǔ)系統(tǒng)中的特定存儲(chǔ)盤上的特定類型的I/O命令的分派注入延遲。圖3示出了向存儲(chǔ) 系統(tǒng)中的特定存儲(chǔ)盤上的特定類型的I/O命令的分派注入延遲的過程300的示例性流程圖。在一個(gè)實(shí)施方式中,過程300可以在圖1所示的SCSI中間層132執(zhí)行。

具體地,如圖3所示,過程300以所截獲的I/O命令開始??梢岳斫?,I/O命令本身可以指示I/O操作所針對(duì)的存儲(chǔ)盤以及I/O命令的類型。例如,I/O命令可以指示I/O操作所針對(duì)的存儲(chǔ)盤的標(biāo)識(shí)符,I/O命令的類型是讀取還是寫入。在步驟S310,確定是否啟動(dòng)了針對(duì)該I/O命令所指示的存儲(chǔ)盤的慢盤模擬過程。換言之,在步驟S310,識(shí)別所截獲的I/O命令所針對(duì)的存儲(chǔ)盤、以及確定所截獲的I/O命令所針對(duì)的存儲(chǔ)盤是否與延遲注入策略所指示的磁盤相匹配。如果所截獲的I/O命令所針對(duì)的存儲(chǔ)盤與延遲注入策略所指示的存儲(chǔ)盤相匹配,則過程300前進(jìn)至步驟S320;否則前進(jìn)至步驟S380。

在步驟S320,識(shí)別所截獲的I/O命令的類型,并且確定所識(shí)別的I/O命令的類型是否與延遲注入策略所指示的I/O命令的類型相匹配。如果所識(shí)別的I/O命令的類型與延遲注入策略所指示的I/O命令的類型相匹配,則前進(jìn)至步驟S330,否則前進(jìn)至步驟S380。

如前所述,預(yù)定的延遲注入策略可以指示:向特定存儲(chǔ)盤上的特定類型的、預(yù)定數(shù)目的I/O命令的分派注入延遲。例如,預(yù)定的延遲注入策略可以指示:向特定存儲(chǔ)盤上的1000個(gè)讀取I/O命令的分派注入延遲。就此而言,在步驟S330,確定剩余的待注入延遲的I/O(也簡(jiǎn)稱為“剩余的慢速I/O))命令的數(shù)目是否大于零,即確定是否對(duì)預(yù)定數(shù)目(例如1000個(gè))的I/O命令的分派注入了延遲。如果是,則過程300前進(jìn)至步驟S340,否則前進(jìn)至步驟S380。

仍然如前所述,預(yù)定的延遲注入策略可以指示:向該預(yù)定數(shù)目的I/O命令的分派注入延遲的頻率。該頻率可以指明預(yù)定時(shí)間段內(nèi)期望向其分派注入延遲的I/O命令的數(shù)目與該預(yù)定時(shí)間段內(nèi)的I/O命令的總數(shù)之間的比率。例如,該頻率可以為0到100之間的任意整數(shù)。該任意整數(shù)表示預(yù)定時(shí)間段內(nèi)期望向其分派注入延遲的I/O命令的數(shù)目與該預(yù)定時(shí)間段內(nèi)的I/O命令的總數(shù)之間的比率為0%到100%,其中 0%表示從不注入延遲,而100%表示總是注入延遲。就此而言,在步驟S340確定用戶是否指定了注入延遲的頻率,即確定延遲注入策略是否指示向預(yù)定數(shù)目的I/O命令的分派注入延遲的頻率。如果是,則過程300前進(jìn)至步驟S350,否則返回至步驟S330。

在步驟S350,應(yīng)用隨機(jī)算法,以便在隨后的步驟S360中確定是否向所截獲的I/O命令的分派注入延遲。具體地,在步驟S350中應(yīng)用隨機(jī)算法來(lái)生成在0到100之間均勻分布的一個(gè)隨機(jī)數(shù)。接下來(lái),在步驟S360中將所生成的隨機(jī)數(shù)與延遲注入策略所指示的注入延遲的頻率進(jìn)行比較,如果所生成的隨機(jī)數(shù)大于注入延遲的頻率,則前進(jìn)至步驟S370,否則前進(jìn)至步驟S380。

在步驟S370,向所截獲的I/O的分派注入延遲。具體地,在步驟S370中,向所截獲的I/O的分派注入延遲可以包括:針對(duì)所截獲的I/O應(yīng)用定時(shí)器,并且將定時(shí)器的超時(shí)值設(shè)定為期望注入的延遲的時(shí)間長(zhǎng)度。該時(shí)間長(zhǎng)度例如可以根據(jù)存儲(chǔ)盤的類型來(lái)確定。例如,對(duì)于個(gè)人計(jì)算機(jī)中所使用的存儲(chǔ)盤,該時(shí)間長(zhǎng)度例如可以被確定為10ms;而對(duì)于SSD盤,該時(shí)間長(zhǎng)度例如可以被確定為1ms。當(dāng)定時(shí)器期滿時(shí),減少剩余的慢速I/O的數(shù)目并且前進(jìn)至步驟S380。

可替換地,在步驟S370中,可以通過以下方式來(lái)向所截獲的I/O的分派注入延遲。具體地,可以將所截獲的I/O添加到一個(gè)待處理列表中并且記錄向該列表中添加該I/O的時(shí)間,例如T0。進(jìn)一步,可以采用特定的線程以預(yù)定是時(shí)間間隔來(lái)周期性地檢查該列表??梢愿鶕?jù)期望注入的延遲的長(zhǎng)度(例如D0)來(lái)設(shè)定該時(shí)間間隔。例如,如果對(duì)于個(gè)人計(jì)算機(jī)中所使用的存儲(chǔ)盤,將期望注入的延遲的長(zhǎng)度確定為10ms,則例如可以將該時(shí)間間隔設(shè)定為1ms。假定在時(shí)間T1檢查該列表,針對(duì)每個(gè)截獲的I/O,如果滿足:T1–T0>=D0,則減少剩余的慢速I/O的數(shù)目并且前進(jìn)至步驟S380。

在步驟S380,通過公用的SCSI I/O分派接口將I/O命令發(fā)送至下層,例如圖1所示的HBA驅(qū)動(dòng)程序?qū)?40。

應(yīng)當(dāng)理解,以上僅出于說(shuō)明的目的描述了向所截獲的I/O的分派 注入延遲的過程,但是本發(fā)明的實(shí)施方式并不局限于此。根據(jù)本發(fā)明的實(shí)施方式的教導(dǎo),本領(lǐng)域技術(shù)人員可以采用任何適當(dāng)?shù)姆绞絹?lái)向所截獲的I/O的分派注入延遲。

此外,應(yīng)當(dāng)理解,以上僅出于說(shuō)明的目的而結(jié)合圖3描述了向存儲(chǔ)系統(tǒng)中的特定存儲(chǔ)盤上的特定類型的I/O命令的分派注入延遲的過程。然而,基于延遲注入策略的指示并且根據(jù)本發(fā)明的實(shí)施方式的教導(dǎo),本領(lǐng)域技術(shù)人員可以采用與過程300類似的過程、利用比過程300中所包含的步驟更多或更少的步驟來(lái)向存儲(chǔ)系統(tǒng)中的特定存儲(chǔ)盤上的所有類型的I/O命令的分派注入延遲、或者向存儲(chǔ)系統(tǒng)中的所有存儲(chǔ)盤上的特定類型的I/O命令的分派注入延遲、或者向存儲(chǔ)系統(tǒng)中的所有存儲(chǔ)盤上的所有類型的I/O命令的分派注入延遲。

本發(fā)明的實(shí)施方式還提供了一種用于模擬慢速存儲(chǔ)盤的裝置。圖4示出根據(jù)本發(fā)明的一個(gè)實(shí)施方式的用于模擬慢盤的裝置400的框圖。裝置400可以在任何適當(dāng)?shù)姆?wù)器上實(shí)現(xiàn)。

如圖4所示,裝置400包括:截獲單元410,被配置為截獲將要分派至存儲(chǔ)盤的輸入/輸出I/O命令;以及延遲注入單元420,被配置為基于預(yù)定的延遲注入策略來(lái)向所截獲的I/O命令的分派注入延遲,以利用所述存儲(chǔ)盤來(lái)模擬慢速存儲(chǔ)盤。

在一些實(shí)施方式中,該延遲注入策略至少指示:該延遲注入策略所針對(duì)的存儲(chǔ)盤和/或所針對(duì)的I/O命令的類型。

在一些實(shí)施方式中,在該延遲注入策略指示所針對(duì)的存儲(chǔ)盤的情況下,延遲注入單元420被進(jìn)一步配置為:識(shí)別所截獲的I/O命令所針對(duì)的存儲(chǔ)盤;確定所截獲的I/O命令所針對(duì)的存儲(chǔ)盤是否與該延遲注入策略所指示的磁盤相匹配;以及響應(yīng)于所截獲的I/O命令所針對(duì)的存儲(chǔ)盤與該延遲注入策略所指示的存儲(chǔ)盤相匹配,向所截獲的I/O命令的分派注入延遲。

在一些實(shí)施方式中,在該延遲注入策略指示所針對(duì)的I/O命令的類型的情況下,延遲注入單元420被進(jìn)一步配置為:識(shí)別所截獲的I/O命令的類型;確定所識(shí)別的I/O命令的類型是否與該延遲注入策略所 指示的I/O命令的類型相匹配;以及響應(yīng)于所識(shí)別的I/O命令的類型與該延遲注入策略所指示的I/O命令的類型相匹配,向所截獲的I/O命令的分派注入延遲。

在一些實(shí)施方式中,該延遲注入策略進(jìn)一步指示:向預(yù)定數(shù)目的I/O命令的分派注入延遲;以及向該預(yù)定數(shù)目的I/O命令的分派注入延遲的頻率。

圖5是示出能夠用于實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施方式的計(jì)算機(jī)系統(tǒng)的示意性框圖。

下面參考圖5,其示出了適于用來(lái)實(shí)現(xiàn)本發(fā)明實(shí)施方式的計(jì)算機(jī)系統(tǒng)500的示意性框圖。如圖5所示,計(jì)算機(jī)系統(tǒng)500包括中央處理單元(CPU)501,其可以根據(jù)存儲(chǔ)在只讀存儲(chǔ)器(ROM)502中的程序或者從存儲(chǔ)部分508加載到隨機(jī)訪問存儲(chǔ)器(RAM)503中的程序而執(zhí)行各種適當(dāng)?shù)膭?dòng)作和處理。在RAM 503中,還存儲(chǔ)有計(jì)算機(jī)系統(tǒng)500操作所需的各種程序和數(shù)據(jù)。CPU 501、ROM 502以及RAM 503通過總線404彼此相連。輸入/輸出(I/O)接口505也連接至總線504。

以下部件連接至I/O接口505:包括鍵盤、鼠標(biāo)等的輸入部分506;包括諸如陰極射線管(CRT)、液晶顯示器(LCD)等以及揚(yáng)聲器等的輸出部分507;包括存儲(chǔ)盤等的存儲(chǔ)部分508;以及包括諸如LAN卡、調(diào)制解調(diào)器等的網(wǎng)絡(luò)接口卡的通信部分509。通信部分509經(jīng)由諸如因特網(wǎng)的網(wǎng)絡(luò)執(zhí)行通信處理。驅(qū)動(dòng)器510也根據(jù)需要連接至I/O接口505??刹鹦督橘|(zhì)511,諸如存儲(chǔ)盤、光盤、磁光盤、半導(dǎo)體存儲(chǔ)器等等,根據(jù)需要安裝在驅(qū)動(dòng)器510上,以便于從其上讀出的計(jì)算機(jī)程序根據(jù)需要被安裝入存儲(chǔ)部分508。

特別地,根據(jù)本發(fā)明的實(shí)施方式,上文參考圖2和3描述的過程可以被實(shí)現(xiàn)為計(jì)算機(jī)軟件程序。例如,本發(fā)明的實(shí)施方式包括一種計(jì)算機(jī)程序產(chǎn)品,其包括有形地包含在計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序包含用于執(zhí)行方法200和300的程序代碼。

一般而言,本發(fā)明的各種示例實(shí)施方式可以在硬件或?qū)S秒娐贰? 軟件、邏輯,或其任何組合中實(shí)施。某些方面可以在硬件中實(shí)施,而其他方面可以在可以由控制器、微處理器或其他計(jì)算設(shè)備執(zhí)行的固件或軟件中實(shí)施。當(dāng)本發(fā)明的實(shí)施方式的各方面被圖示或描述為框圖、流程圖或使用某些其他圖形表示時(shí),將理解此處描述的方框、裝置、系統(tǒng)、技術(shù)或方法可以作為非限制性的示例在硬件、軟件、固件、專用電路或邏輯、通用硬件或控制器或其他計(jì)算設(shè)備,或其某些組合中實(shí)施。

而且,流程圖中的各框可以被看作是方法步驟,和/或計(jì)算機(jī)程序代碼的操作生成的操作,和/或理解為執(zhí)行相關(guān)功能的多個(gè)耦合的邏輯電路元件。例如,本發(fā)明的實(shí)施方式包括計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包括有形地實(shí)現(xiàn)在計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)程序,該計(jì)算機(jī)程序包含被配置為實(shí)現(xiàn)上文描述方法的程序代碼。

在公開的上下文內(nèi),計(jì)算機(jī)可讀介質(zhì)可以是包含或存儲(chǔ)用于或有關(guān)于指令執(zhí)行系統(tǒng)、裝置或設(shè)備的程序的任何有形介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是機(jī)器可讀信號(hào)介質(zhì)或機(jī)器可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以包括但不限于電子的、磁的、光學(xué)的、電磁的、紅外的或半導(dǎo)體系統(tǒng)、裝置或設(shè)備,或其任意合適的組合。機(jī)器可讀存儲(chǔ)介質(zhì)的更詳細(xì)示例包括帶有一根或多根導(dǎo)線的電氣連接、便攜式計(jì)算機(jī)存儲(chǔ)盤、存儲(chǔ)盤、隨機(jī)存儲(chǔ)存取器(RAM)、只讀存儲(chǔ)器(ROM)、可擦除可編程只讀存儲(chǔ)器(EPROM或閃存)、光存儲(chǔ)設(shè)備、磁存儲(chǔ)設(shè)備,或其任意合適的組合。

用于實(shí)現(xiàn)本發(fā)明的方法的計(jì)算機(jī)程序代碼可以用一種或多種編程語(yǔ)言編寫。這些計(jì)算機(jī)程序代碼可以提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其他可編程的數(shù)據(jù)處理裝置的處理器,使得程序代碼在被計(jì)算機(jī)或其他可編程的數(shù)據(jù)處理裝置執(zhí)行的時(shí)候,引起在流程圖和/或框圖中規(guī)定的功能/操作被實(shí)施。程序代碼可以完全在計(jì)算機(jī)上、部分在計(jì)算機(jī)上、作為獨(dú)立的軟件包、部分在計(jì)算機(jī)上且部分在遠(yuǎn)程計(jì)算機(jī)上或完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。

另外,盡管操作以特定順序被描繪,但這并不應(yīng)該理解為要求此 類操作以示出的特定順序或以相繼順序完成,或者執(zhí)行所有圖示的操作以獲取期望結(jié)果。在某些情況下,多任務(wù)或并行處理會(huì)是有益的。同樣地,盡管上述討論包含了某些特定的實(shí)施細(xì)節(jié),但這并不應(yīng)解釋為限制任何發(fā)明或權(quán)利要求的范圍,而應(yīng)解釋為對(duì)可以針對(duì)特定發(fā)明的特定實(shí)施方式的描述。本說(shuō)明書中在分開的實(shí)施方式的上下文中描述的某些特征也可以整合實(shí)施在單個(gè)實(shí)施方式中。相反地,在單個(gè)實(shí)施方式的上下文中描述的各種特征也可以分離地在多個(gè)實(shí)施方式或在任意合適的子組合中實(shí)施。

針對(duì)前述本發(fā)明的示例實(shí)施方式的各種修改、改變將在連同附圖查看前述描述時(shí)對(duì)相關(guān)技術(shù)領(lǐng)域的技術(shù)人員變得明顯。任何及所有修改將仍落入非限制的和本發(fā)明的示例實(shí)施方式范圍。此外,前述說(shuō)明書和附圖存在啟發(fā)的益處,涉及本發(fā)明的這些實(shí)施方式的技術(shù)領(lǐng)域的技術(shù)人員將會(huì)想到此處闡明的本發(fā)明的其他實(shí)施方式。

將會(huì)理解,本發(fā)明的實(shí)施方式不限于公開的特定實(shí)施方式,并且修改和其他實(shí)施方式都應(yīng)包含于所附的權(quán)利要求范圍內(nèi)。盡管此處使用了特定的術(shù)語(yǔ),但是它們僅在通用和描述的意義上使用,而并不用于限制目的。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
伊宁县| 新化县| 鸡东县| 山丹县| 徐汇区| 铁力市| 崇阳县| 望谟县| 博野县| 安新县| 元阳县| 洪湖市| 讷河市| 青岛市| 呈贡县| 三江| 德江县| 栾川县| 苏尼特左旗| 宜丰县| 新乐市| 姜堰市| 乌鲁木齐市| 哈巴河县| 体育| 来安县| 宁德市| 龙口市| 澄江县| 保靖县| 大余县| 平乡县| 错那县| 利川市| 黎平县| 农安县| 东丰县| 临桂县| 丰城市| 东乌| 荆门市|