本發(fā)明涉及計算機領(lǐng)域,尤其涉及輸入輸出控制方法和裝置。
背景技術(shù):
:常見的存儲系統(tǒng),主機通過網(wǎng)絡(luò)和控制器連接,控制器下掛存儲設(shè)備??刂破鲯呙柘聮斓拇鎯υO(shè)備,將存儲設(shè)備以邏輯單元號(LogicalUnitNumber,LUN)的形式向主機呈現(xiàn)。在存儲領(lǐng)域,LUN是指邏輯存儲空間,其編號稱為LUNID。業(yè)界實踐中,還有另外一種命名方式,把邏輯存儲空間稱為LU(logicunit),而其編號稱為LUN(LogicUnitNumber)。這兩種命名方式并沒有實質(zhì)的不同,本發(fā)明實施例使用前一種命名方式?,F(xiàn)有技術(shù)中,當(dāng)主機(Host)想要對某個LUN進行讀寫操作時,首先向控制器下發(fā)讀寫命令,然后由控制器根據(jù)LUNID找到對應(yīng)的存儲設(shè)備,并對存儲設(shè)備進行數(shù)據(jù)讀寫操作。例如,Host0要把數(shù)據(jù)寫入LUN0,首先Host0向控制器0下發(fā)寫命令,然后控制器0找到和LUN0對應(yīng)的存儲設(shè)備disk0,將數(shù)據(jù)寫入disk0。由于存儲系統(tǒng)中可能存在著多個控制器,每個控制器下連接多個存儲設(shè)備,每個控制器針對其下連接的多個存儲設(shè)備從LUN0開始順序分配LUNID,因此存在同一LUNID對應(yīng)多個存儲設(shè)備的可能,例如,控制器0下連接了兩個存儲設(shè)備,這兩個存儲設(shè)備的LUNID分別為LUN0和LUN1,控制器1下也連接了兩個存儲設(shè)備,這兩個存儲設(shè)備的LUNID分別為LUN0和LUN1,當(dāng)主機通過LUNID想要對某個LUN進行讀寫操作時,可能出現(xiàn)該LUNID對應(yīng)多 個存儲設(shè)備,導(dǎo)致主機根據(jù)該LUNID進行讀寫操作,無法找到該讀寫操作具體針對的存儲設(shè)備。技術(shù)實現(xiàn)要素:本發(fā)明實施例提供輸入輸出控制方法和裝置,可以找到輸入輸出操作具體針對的存儲設(shè)備。第一方面,提供了一種輸入輸出控制方法,應(yīng)用于輸入輸出(Input/Output,I/O)控制裝置中,所述I/O控制裝置位于控制器和主機之間,所述控制器的數(shù)量為至少2個,每個控制器和一個控制器編號(ID)對應(yīng),所述I/O控制裝置用于管理主機LUN,每個主機LUN擁有一個主機LUNID,所述主機LUNID是對所有控制器的控制器LUNID進行統(tǒng)一編號后生成的,每個主機LUNID對應(yīng)一個控制器LUNID,所述I/O控制裝置預(yù)存有對應(yīng)關(guān)系表,所述對應(yīng)關(guān)系表中,記錄有主機LUNID對應(yīng)的控制器LUNID、以及各控制器LUNID的歸屬控制器ID,所述方法包括:接收主機發(fā)送的針對主機LUNID的I/O操作命令,所述I/O操作命令中攜帶有待訪問主機LUNID,所述I/O操作命令是寫數(shù)據(jù)命令、數(shù)據(jù)備份命令或讀數(shù)據(jù)命令中的一種;使用所述待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述待訪問主機LUNID對應(yīng)的待訪問控制器LUNID,以及控制器LUN的歸屬控制器的待訪問控制器ID;把所述I/O操作命令中的所述待訪問主機LUNID替換成所述待訪問控制器LUNID后,把所述I/O操作命令發(fā)往所述待訪問控制器ID所代表的控制器進行操作訪問。結(jié)合第一方面,在第一方面的第一種可能的實施方式中,所述I/O操作命令包括寫數(shù)據(jù)命令,所述寫數(shù)據(jù)命令中攜帶有第一待訪問主機LUNID和第一初始邏輯區(qū)塊地址(LogicBlockAddress,LBA);每個待訪問控制器LUN ID對應(yīng)多個虛擬塊標(biāo)識;所述對應(yīng)關(guān)系表中,還記錄有控制器LUNID、虛擬塊標(biāo)識與存儲設(shè)備標(biāo)識、存儲設(shè)備塊標(biāo)識的對應(yīng)關(guān)系;每個存儲設(shè)備標(biāo)識對應(yīng)多個存儲設(shè)備塊標(biāo)識;所述使用所述待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述待訪問主機LUNID對應(yīng)的待訪問控制器LUNID,以及控制器LUN的歸屬控制器的待訪問控制器ID,包括:使用所述第一待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述第一待訪問主機LUNID對應(yīng)的第一待訪問控制器LUNID,以及控制器LUN的歸屬控制器的第一待訪問控制器ID;所述方法還包括:對所述第一初始LBA進行解析,得到所述第一待訪問控制器LUNID的第一初始虛擬塊標(biāo)識;使用所述第一待訪問控制器LUNID和所述第一初始虛擬塊標(biāo)識在所述對應(yīng)關(guān)系表中進行查找,獲得所述第一待訪問控制器LUNID和所述第一初始虛擬塊標(biāo)識對應(yīng)的第一存儲設(shè)備標(biāo)識和第一初始存儲設(shè)備塊標(biāo)識;所述把所述I/O操作命令中的所述待訪問主機LUNID替換成所述待訪問控制器LUNID后,把所述I/O操作命令發(fā)往所述待訪問控制器ID所代表的控制器進行操作訪問,包括:把所述寫數(shù)據(jù)命令中的所述第一待訪問主機LUNID替換成所述第一待訪問控制器LUNID,以及,把所述寫數(shù)據(jù)命令中的所述第一初始LBA替換成所述第一初始存儲設(shè)備塊標(biāo)識后,把所述寫數(shù)據(jù)命令發(fā)往所述第一待訪問控制器ID所代表的控制器進行操作訪問。結(jié)合第一方面或第一方面的第一種可能的實施方式,在第一方面的第二種可能的實施方式中,所述I/O操作命令包括數(shù)據(jù)備份命令,所述數(shù)據(jù)備份命令中攜帶有第二待訪問主機LUNID和第二初始LBA;每個待訪問控制器LUNID對應(yīng)多個虛擬塊標(biāo)識;所述對應(yīng)關(guān)系表中,還記錄有控制器LUNID、虛擬 塊標(biāo)識與存儲設(shè)備標(biāo)識、存儲設(shè)備塊標(biāo)識的對應(yīng)關(guān)系;每個存儲設(shè)備標(biāo)識對應(yīng)多個存儲設(shè)備塊標(biāo)識;所述使用所述待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述待訪問主機LUNID對應(yīng)的待訪問控制器LUNID,以及控制器LUN的歸屬控制器的待訪問控制器ID,包括:使用所述第二待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述第二待訪問主機LUNID對應(yīng)的第二待訪問控制器LUNID,以及控制器LUN的歸屬控制器的第二待訪問控制器ID;所述方法還包括:對所述第二初始LBA進行解析,得到所述第二待訪問控制器LUNID的第二初始虛擬塊標(biāo)識;使用所述第二待訪問控制器LUNID和所述第二初始虛擬塊標(biāo)識在所述對應(yīng)關(guān)系表中進行查找,獲得所述第二待訪問控制器LUNID和所述第二初始虛擬塊標(biāo)識對應(yīng)的第二存儲設(shè)備標(biāo)識和第二初始存儲設(shè)備塊標(biāo)識;所述把所述I/O操作命令中的所述待訪問主機LUNID替換成所述待訪問控制器LUNID后,把所述I/O操作命令發(fā)往所述待訪問控制器ID所代表的控制器進行操作訪問,包括:把所述數(shù)據(jù)備份命令中的所述第二待訪問主機LUNID替換成所述第二待訪問控制器LUNID,以及,把所述數(shù)據(jù)備份命令中的所述第二初始LBA替換成所述第二初始存儲設(shè)備塊標(biāo)識后,把所述數(shù)據(jù)備份命令發(fā)往所述第二待訪問控制器ID所代表的控制器進行操作訪問。結(jié)合第一方面或第一方面的第一種或第二種可能的實施方式,在第一方面的第三種可能的實施方式中,所述I/O操作命令包括讀數(shù)據(jù)命令,所述讀數(shù)據(jù)命令中攜帶有第三待訪問主機LUNID和第三初始LBA;每個待訪問控制器LUNID對應(yīng)多個虛擬塊標(biāo)識;所述對應(yīng)關(guān)系表中,還記錄有控制器LUNID、虛擬塊標(biāo)識與存儲設(shè)備標(biāo)識、存儲設(shè)備塊標(biāo)識的對應(yīng)關(guān)系;每個存儲設(shè)備標(biāo) 識對應(yīng)多個存儲設(shè)備塊標(biāo)識;所述使用所述待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述待訪問主機LUNID對應(yīng)的待訪問控制器LUNID,以及控制器LUN的歸屬控制器的待訪問控制器ID,包括:使用所述第三待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述第三待訪問主機LUNID對應(yīng)的第三待訪問控制器LUNID,以及控制器LUN的歸屬控制器的第三待訪問控制器ID;所述方法還包括:對所述第三初始LBA進行解析,得到所述第三待訪問控制器LUNID的第三初始虛擬塊標(biāo)識;使用所述第三待訪問控制器LUNID和所述第三初始虛擬塊標(biāo)識在所述對應(yīng)關(guān)系表中進行查找,獲得所述第三待訪問控制器LUNID和所述第三初始虛擬塊標(biāo)識對應(yīng)的第三存儲設(shè)備標(biāo)識和第三初始存儲設(shè)備塊標(biāo)識;所述把所述I/O操作命令中的所述待訪問主機LUNID替換成所述待訪問控制器LUNID后,把所述I/O操作命令發(fā)往所述待訪問控制器ID所代表的控制器進行操作訪問,包括:把所述讀數(shù)據(jù)命令中的所述第三待訪問主機LUNID替換成所述第三待訪問控制器LUNID,以及,把所述讀數(shù)據(jù)命令中的所述第三初始LBA替換成所述第三初始存儲設(shè)備塊標(biāo)識后,把所述讀數(shù)據(jù)命令發(fā)往所述第三待訪問控制器ID所代表的控制器進行操作訪問。結(jié)合第一方面或第一方面的第一種或第二種或第三種可能的實施方式,在第一方面的第四種可能的實施方式中,所述方法還包括:根據(jù)用戶配置的存儲設(shè)備塊的大小,建立所述對應(yīng)關(guān)系表。第二方面,提供了一種I/O控制裝置,所述I/O控制裝置位于控制器和主機之間,所述控制器的數(shù)量為至少2個,每個控制器和一個控制器ID對應(yīng),所述I/O控制裝置用于管理主機LUN,每個主機LUN擁有一個主機LUNID, 所述主機LUNID是對所有控制器的控制器LUNID進行統(tǒng)一編號后生成的,每個主機LUNID對應(yīng)一個控制器LUNID,所述I/O控制裝置預(yù)存有對應(yīng)關(guān)系表,所述對應(yīng)關(guān)系表中,記錄有主機LUNID對應(yīng)的控制器LUNID、以及各控制器LUNID的歸屬控制器ID,所述裝置包括:接收單元,用于接收主機發(fā)送的針對主機LUNID的I/O操作命令,所述操作命令中攜帶有待訪問主機LUNID,所述I/O操作命令是寫數(shù)據(jù)命令、數(shù)據(jù)備份命令或讀數(shù)據(jù)命令中的一種;查找單元,用于使用所述接收單元接收的待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述待訪問主機LUNID對應(yīng)的待訪問控制器LUNID,以及控制器LUN的歸屬控制器的待訪問控制器ID;發(fā)送單元,用于把所述接收單元接收的I/O操作命令中的所述待訪問主機LUNID替換成所述查找單元獲得的待訪問控制器LUNID后,把所述I/O操作命令發(fā)往所述待訪問控制器ID所代表的控制器進行操作訪問。結(jié)合第二方面,在第二方面的第一種可能的實施方式中,所述接收單元接收的I/O操作命令包括寫數(shù)據(jù)命令,所述寫數(shù)據(jù)命令中攜帶有第一待訪問主機LUNID和第一初始LBA;每個待訪問控制器LUNID對應(yīng)多個虛擬塊標(biāo)識;所述對應(yīng)關(guān)系表中,還記錄有控制器LUNID、虛擬塊標(biāo)識與存儲設(shè)備標(biāo)識、存儲設(shè)備塊標(biāo)識的對應(yīng)關(guān)系;每個存儲設(shè)備標(biāo)識對應(yīng)多個存儲設(shè)備塊標(biāo)識;所述查找單元,具體用于使用所述接收單元接收的第一待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述第一待訪問主機LUNID對應(yīng)的第一待訪問控制器LUNID,以及控制器LUN的歸屬控制器的第一待訪問控制器ID;所述裝置還包括:解析單元,用于對所述接收單元接收的第一初始LBA進行解析,得到所述第一待訪問控制器LUNID的第一初始虛擬塊標(biāo)識;所述查找單元,還用于使用所述查找單元獲得的第一待訪問控制器LUN ID和所述解析單元得到的第一初始虛擬塊標(biāo)識在所述對應(yīng)關(guān)系表中進行查找,獲得所述第一待訪問控制器LUNID和所述第一初始虛擬塊標(biāo)識對應(yīng)的第一存儲設(shè)備標(biāo)識和第一初始存儲設(shè)備塊標(biāo)識;所述發(fā)送單元,具體用于把所述接收單元接收的寫數(shù)據(jù)命令中的所述第一待訪問主機LUNID替換成所述查找單元獲得的第一待訪問控制器LUNID,以及,把所述寫數(shù)據(jù)命令中的所述第一初始LBA替換成所述查找單元獲得的第一初始存儲設(shè)備塊標(biāo)識后,把所述寫數(shù)據(jù)命令發(fā)往所述查找單元獲得的第一待訪問控制器ID所代表的控制器進行操作訪問。結(jié)合第二方面或第二方面的第一種可能的實施方式,在第二方面的第二種可能的實施方式中,所述接收單元接收的I/O操作命令包括數(shù)據(jù)備份命令,所述數(shù)據(jù)備份命令中攜帶有第二待訪問主機LUNID和第二初始LBA;每個待訪問控制器LUNID對應(yīng)多個虛擬塊標(biāo)識;所述對應(yīng)關(guān)系表中,還記錄有控制器LUNID、虛擬塊標(biāo)識與存儲設(shè)備標(biāo)識、存儲設(shè)備塊標(biāo)識的對應(yīng)關(guān)系;每個存儲設(shè)備標(biāo)識對應(yīng)多個存儲設(shè)備塊標(biāo)識;所述查找單元,具體用于使用所述接收單元接收的第二待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述第二待訪問主機LUNID對應(yīng)的第二待訪問控制器LUNID,以及控制器LUN的歸屬控制器的第二待訪問控制器ID;所述裝置還包括:解析單元,用于對所述接收單元接收的第二初始LBA進行解析,得到所述第二待訪問控制器LUNID的第二初始虛擬塊標(biāo)識;所述查找單元,還用于使用所述查找單元獲得的第二待訪問控制器LUNID和所述解析單元得到的第二初始虛擬塊標(biāo)識在所述對應(yīng)關(guān)系表中進行查找,獲得所述第二待訪問控制器LUNID和所述第二初始虛擬塊標(biāo)識對應(yīng)的第二存儲設(shè)備標(biāo)識和第二初始存儲設(shè)備塊標(biāo)識;所述發(fā)送單元,具體用于把所述接收單元接收的數(shù)據(jù)備份命令中的所述 第二待訪問主機LUNID替換成所述查找單元獲得的第二待訪問控制器LUNID,以及,把所述數(shù)據(jù)備份命令中的所述第二初始LBA替換成所述查找單元獲得的第二初始存儲設(shè)備塊標(biāo)識后,把所述數(shù)據(jù)備份命令發(fā)往所述查找單元獲得的第二待訪問控制器ID所代表的控制器進行操作訪問。結(jié)合第二方面或第二方面的第一種或第二種可能的實施方式,在第二方面的第三種可能的實施方式中,所述接收單元接收的I/O操作命令包括讀數(shù)據(jù)命令,所述讀數(shù)據(jù)命令中攜帶有第三待訪問主機LUNID和第三初始LBA;每個待訪問控制器LUNID對應(yīng)多個虛擬塊標(biāo)識;所述對應(yīng)關(guān)系表中,還記錄有控制器LUNID、虛擬塊標(biāo)識與存儲設(shè)備標(biāo)識、存儲設(shè)備塊標(biāo)識的對應(yīng)關(guān)系;每個存儲設(shè)備標(biāo)識對應(yīng)多個存儲設(shè)備塊標(biāo)識;所述查找單元,具體用于使用所述接收單元接收的第三待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述第三待訪問主機LUNID對應(yīng)的第三待訪問控制器LUNID,以及控制器LUN的歸屬控制器的第三待訪問控制器ID;所述裝置還包括:解析單元,用于對所述接收單元接收的第三初始LBA進行解析,得到所述第三待訪問控制器LUNID的第三初始虛擬塊標(biāo)識;所述查找單元,還用于使用所述查找單元獲得的第三待訪問控制器LUNID和所述解析單元得到的第三初始虛擬塊標(biāo)識在所述對應(yīng)關(guān)系表中進行查找,獲得所述第三待訪問控制器LUNID和所述第三初始虛擬塊標(biāo)識對應(yīng)的第三存儲設(shè)備標(biāo)識和第三初始存儲設(shè)備塊標(biāo)識;所述發(fā)送單元,具體用于把所述接收單元接收的讀數(shù)據(jù)命令中的所述第三待訪問主機LUNID替換成所述查找單元獲得的第三待訪問控制器LUNID,以及,把所述讀數(shù)據(jù)命令中的所述第三初始LBA替換成所述查找單元獲得的第三初始存儲設(shè)備塊標(biāo)識后,把所述讀數(shù)據(jù)命令發(fā)往所述查找單元獲得的第三待訪問控制器ID所代表的控制器進行操作訪問。結(jié)合第二方面或第二方面的第一種或第二種或第三種可能的實施方式,在第二方面的第四種可能的實施方式中,所述裝置還包括:對應(yīng)關(guān)系建立單元,用于根據(jù)用戶配置的存儲設(shè)備塊的大小,建立所述對應(yīng)關(guān)系表。第三方面,提供了一種I/O控制裝置,所述I/O控制裝置位于控制器和主機之間,所述控制器的數(shù)量為至少2個,每個控制器和一個控制器ID對應(yīng),所述I/O控制裝置用于管理主機LUN,每個主機LUN擁有一個主機LUNID,所述主機LUNID是對所有控制器的控制器LUNID進行統(tǒng)一編號后生成的,每個主機LUNID對應(yīng)一個控制器LUNID,所述I/O控制裝置預(yù)存有對應(yīng)關(guān)系表,所述對應(yīng)關(guān)系表中,記錄有主機LUNID對應(yīng)的控制器LUNID、以及各控制器LUNID的歸屬控制器ID,所述裝置包括:存儲器和處理器;所述存儲器,用于存儲程序指令;所述處理器,用于根據(jù)所述存儲器中存儲的程序指令執(zhí)行以下操作:接收主機發(fā)送的針對主機LUNID的I/O操作命令,所述I/O操作命令中攜帶有待訪問主機LUNID,所述I/O操作命令是寫數(shù)據(jù)命令、數(shù)據(jù)備份命令或讀數(shù)據(jù)命令中的一種;使用所述待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述待訪問主機LUNID對應(yīng)的待訪問控制器LUNID,以及控制器LUN的歸屬控制器的待訪問控制器ID;把所述I/O操作命令中的所述待訪問主機LUNID替換成所述待訪問控制器LUNID后,把所述I/O操作命令發(fā)往所述待訪問控制器ID所代表的控制器進行操作訪問。結(jié)合第三方面,在第三方面的第一種可能的實施方式中,所述I/O操作命令包括寫數(shù)據(jù)命令,所述寫數(shù)據(jù)命令中攜帶有第一待訪問主機LUNID和第一初始LBA;每個待訪問控制器LUNID對應(yīng)多個虛擬塊標(biāo)識;所述對應(yīng)關(guān)系表中,還記錄有控制器LUNID、虛擬塊標(biāo)識與存儲設(shè)備標(biāo)識、存儲設(shè)備塊標(biāo) 識的對應(yīng)關(guān)系;每個存儲設(shè)備標(biāo)識對應(yīng)多個存儲設(shè)備塊標(biāo)識;所述處理器執(zhí)行所述使用所述待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述待訪問主機LUNID對應(yīng)的待訪問控制器LUNID,以及控制器LUN的歸屬控制器的待訪問控制器ID的操作,包括:使用所述第一待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述第一待訪問主機LUNID對應(yīng)的第一待訪問控制器LUNID,以及控制器LUN的歸屬控制器的第一待訪問控制器ID;所述處理器還用于根據(jù)所述存儲器中存儲的程序指令執(zhí)行以下操作:對所述第一初始LBA進行解析,得到所述第一待訪問控制器LUNID的第一初始虛擬塊標(biāo)識;使用所述第一待訪問控制器LUNID和所述第一初始虛擬塊標(biāo)識在所述對應(yīng)關(guān)系表中進行查找,獲得所述第一待訪問控制器LUNID和所述第一初始虛擬塊標(biāo)識對應(yīng)的第一存儲設(shè)備標(biāo)識和第一初始存儲設(shè)備塊標(biāo)識;所述處理器執(zhí)行所述把所述I/O操作命令中的所述待訪問主機LUNID替換成所述待訪問控制器LUNID后,把所述I/O操作命令發(fā)往所述待訪問控制器ID所代表的控制器進行操作訪問的操作,包括:把所述寫數(shù)據(jù)命令中的所述第一待訪問主機LUNID替換成所述第一待訪問控制器LUNID,以及,把所述寫數(shù)據(jù)命令中的所述第一初始LBA替換成所述第一初始存儲設(shè)備塊標(biāo)識后,把所述寫數(shù)據(jù)命令發(fā)往所述第一待訪問控制器ID所代表的控制器進行操作訪問。結(jié)合第三方面或第三方面的第一種可能的實施方式,在第三方面的第二種可能的實施方式中,所述I/O操作命令包括數(shù)據(jù)備份命令,所述數(shù)據(jù)備份命令中攜帶有第二待訪問主機LUNID和第二初始LBA;每個待訪問控制器LUNID對應(yīng)多個虛擬塊標(biāo)識;所述對應(yīng)關(guān)系表中,還記錄有控制器LUNID、虛擬塊標(biāo)識與存儲設(shè)備標(biāo)識、存儲設(shè)備塊標(biāo)識的對應(yīng)關(guān)系;每個存儲設(shè)備標(biāo)識對應(yīng)多個存儲設(shè)備塊標(biāo)識;所述處理器執(zhí)行所述使用所述待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述待訪問主機LUNID對應(yīng)的待訪問控制器LUNID,以及控制器LUN的歸屬控制器的待訪問控制器ID的操作,包括:使用所述第二待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述第二待訪問主機LUNID對應(yīng)的第二待訪問控制器LUNID,以及控制器LUN的歸屬控制器的第二待訪問控制器ID;所述處理器還用于根據(jù)所述存儲器中存儲的程序指令執(zhí)行以下操作:對所述第二初始LBA進行解析,得到所述第二待訪問控制器LUNID的第二初始虛擬塊標(biāo)識;使用所述第二待訪問控制器LUNID和所述第二初始虛擬塊標(biāo)識在所述對應(yīng)關(guān)系表中進行查找,獲得所述第二待訪問控制器LUNID和所述第二初始虛擬塊標(biāo)識對應(yīng)的第二存儲設(shè)備標(biāo)識和第二初始存儲設(shè)備塊標(biāo)識;所述處理器執(zhí)行所述把所述I/O操作命令中的所述待訪問主機LUNID替換成所述待訪問控制器LUNID后,把所述I/O操作命令發(fā)往所述待訪問控制器ID所代表的控制器進行操作訪問的操作,包括:把所述數(shù)據(jù)備份命令中的所述第二待訪問主機LUNID替換成所述第二待訪問控制器LUNID,以及,把所述數(shù)據(jù)備份命令中的所述第二初始LBA替換成所述第二初始存儲設(shè)備塊標(biāo)識后,把所述數(shù)據(jù)備份命令發(fā)往所述第二待訪問控制器ID所代表的控制器進行操作訪問。結(jié)合第三方面或第三方面的第一種或第二種可能的實施方式,在第三方面的第三種可能的實施方式中,所述I/O操作命令包括讀數(shù)據(jù)命令,所述讀數(shù)據(jù)命令中攜帶有第三待訪問主機LUNID和第三初始LBA;每個待訪問控制器LUNID對應(yīng)多個虛擬塊標(biāo)識;所述對應(yīng)關(guān)系表中,還記錄有控制器LUNID、虛擬塊標(biāo)識與存儲設(shè)備標(biāo)識、存儲設(shè)備塊標(biāo)識的對應(yīng)關(guān)系;每個存儲設(shè)備標(biāo)識對應(yīng)多個存儲設(shè)備塊標(biāo)識;所述處理器執(zhí)行所述使用所述待訪問主機LUNID在所述對應(yīng)關(guān)系表中進 行查找,獲得所述待訪問主機LUNID對應(yīng)的待訪問控制器LUNID,以及控制器LUN的歸屬控制器的待訪問控制器ID的操作,包括:使用所述第三待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述第三待訪問主機LUNID對應(yīng)的第三待訪問控制器LUNID,以及控制器LUN的歸屬控制器的第三待訪問控制器ID;所述處理器還用于根據(jù)所述存儲器中存儲的程序指令執(zhí)行以下操作:對所述第三初始LBA進行解析,得到所述第三待訪問控制器LUNID的第三初始虛擬塊標(biāo)識;使用所述第三待訪問控制器LUNID和所述第三初始虛擬塊標(biāo)識在所述對應(yīng)關(guān)系表中進行查找,獲得所述第三待訪問控制器LUNID和所述第三初始虛擬塊標(biāo)識對應(yīng)的第三存儲設(shè)備標(biāo)識和第三初始存儲設(shè)備塊標(biāo)識;所述處理器執(zhí)行所述把所述I/O操作命令中的所述待訪問主機LUNID替換成所述待訪問控制器LUNID后,把所述I/O操作命令發(fā)往所述待訪問控制器ID所代表的控制器進行操作訪問的操作,包括:把所述讀數(shù)據(jù)命令中的所述第三待訪問主機LUNID替換成所述第三待訪問控制器LUNID,以及,把所述讀數(shù)據(jù)命令中的所述第三初始LBA替換成所述第三初始存儲設(shè)備塊標(biāo)識后,把所述讀數(shù)據(jù)命令發(fā)往所述第三待訪問控制器ID所代表的控制器進行操作訪問。結(jié)合第三方面或第三方面的第一種或第二種或第三種可能的實施方式,在第三方面的第四種可能的實施方式中,所述處理器還用于根據(jù)所述存儲器中存儲的程序指令執(zhí)行以下操作:根據(jù)用戶配置的存儲設(shè)備塊的大小,建立所述對應(yīng)關(guān)系表。本發(fā)明實施例提供了一種輸入輸出控制方法,I/O控制裝置接收主機發(fā)送的針對主機LUNID的I/O操作命令,該I/O操作命令中攜帶有待訪問主機LUNID,使用待訪問主機LUNID在對應(yīng)關(guān)系表中進行查找,獲得待訪問主機LUNID對應(yīng)的待訪問控制器LUNID,以及控制器LUN的歸屬控制器的待訪問控制器 ID;把該I/O操作命令中的待訪問主機LUNID替換成待訪問控制器LUNID后,把該I/O操作命令發(fā)往待訪問控制器ID所代表的控制器進行操作訪問。本發(fā)明實施例中,由于主機LUNID是對所有控制器的控制器LUNID進行統(tǒng)一編號后生成的,因此,主機LUNID具有唯一性,I/O控制裝置根據(jù)主機LUNID能夠路由到相應(yīng)的控制器,由該控制器找到輸入輸出操作具體針對的存儲設(shè)備。附圖說明圖1為本發(fā)明實施例提供的輸入輸出控制方法所基于的硬件拓撲圖;圖2為本發(fā)明實施例一提供的輸入輸出控制方法流程圖;圖3為本發(fā)明實施例二提供的輸入輸出控制方法流程圖;圖4為本發(fā)明實施例二提供的另一輸入輸出控制方法流程圖;圖5為本發(fā)明實施例二提供的另一輸入輸出控制方法流程圖;圖6為本發(fā)明實施例提供的I/O細粒度分發(fā)邏輯圖;圖7為本發(fā)明實施例提供的讀數(shù)據(jù)流程示意圖;圖8為本發(fā)明實施例提供的寫數(shù)據(jù)流程示意圖;圖9為本發(fā)明實施例三提供的輸入輸出控制裝置結(jié)構(gòu)圖;圖10為本發(fā)明實施例四提供的輸入輸出控制裝置結(jié)構(gòu)圖。具體實施方式下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進一步的詳細描述。為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。為便于對本發(fā)明實施例的理解,下面將結(jié)合附圖以具體實施例做進一步的解釋說明,實施例并不構(gòu)成對本發(fā)明實施例的限定。當(dāng)本發(fā)明實施例提及“第一”、“第二”等序數(shù)詞時,除非根據(jù)上下文其確實表達順序之意,應(yīng)當(dāng)理解為僅僅起區(qū)分的作用。圖1為本發(fā)明實施例提供的輸入輸出控制方法所基于的硬件拓撲圖,其中,一個或多個主機(Host)101和輸入輸出(Input/Output,I/O)控制裝置102相連,I/O控制裝置102通過網(wǎng)絡(luò)與多個控制器103相連,控制器103下掛多個存儲設(shè)備(disk)104。I/O控制裝置102接收來自主機101的I/O操作命令,例如,讀寫命令,通過一系列算法,將讀寫命令路由到指定的控制器103中,由控制器103根據(jù)讀寫命令從存儲設(shè)備104讀寫數(shù)據(jù)。其中,本發(fā)明實施例提供了輸入輸出控制方法和輸入輸出控制裝置,該輸入輸出控制方法也可稱為輸入/輸出控制方法或I/O控制方法或IO控制方法,該輸入輸出控制裝置也可稱為輸入/輸出控制裝置或I/O控制裝置或IO控制裝置,不論是哪種叫法含義均相同。圖2為本發(fā)明實施例一提供的輸入輸出控制方法流程圖,該方法基于圖1所示的硬件拓撲,本發(fā)明實施例提供的輸入輸出控制方法具體由I/O控制裝置來執(zhí)行,I/O控制裝置位于控制器和主機之間,控制器的數(shù)量為至少2個,每個控制器和一個控制器ID對應(yīng),I/O控制裝置用于管理主機LUN,每個主機LUN擁有一個主機LUNID,主機LUNID是對所有控制器的控制器LUNID進行統(tǒng)一編號后生成的,每個主機LUNID對應(yīng)一個控制器LUNID,I/O控制裝置預(yù)存有對應(yīng)關(guān)系表,對應(yīng)關(guān)系表中,記錄有主機LUNID對應(yīng)的控制器LUNID、以及各控制器LUNID的歸屬控制器ID,該方法包括:步驟201,接收主機發(fā)送的針對主機LUNID的I/O操作命令,該I/O操作命令中攜帶有待訪問主機LUNID,該I/O操作命令是寫數(shù)據(jù)命令、數(shù)據(jù)備份命令或讀數(shù)據(jù)命令中的一種。在寫數(shù)據(jù)的同時經(jīng)常還要進行數(shù)據(jù)備份,與通常地做法不同,本發(fā)明實 施例中不是由控制器之間進行數(shù)據(jù)同步,而是由I/O控制裝置同時進行寫數(shù)據(jù)命令和數(shù)據(jù)備份命令的I/O分發(fā),從而一方面減輕了控制器的壓力,另一方面數(shù)據(jù)同步的效果更好。本發(fā)明實施例中,對于某個控制器下的所有存儲設(shè)備而言,把每個存儲設(shè)備的存儲空間劃分成多個塊(chunk),每個塊的大小相同,從每個存儲設(shè)備中拿出相同數(shù)量的塊,共同組成一個邏輯上的存儲單位,這個邏輯上的存儲單位就是控制器LUN。把多個控制器的控制器LUN的ID,重新進行統(tǒng)一編號,形成主機LUNID。舉例來說,控制器A下面掛了3個磁盤,分別是磁盤A、磁盤B、磁盤C。磁盤A包括:chunk1、chunk2、chunk3,磁盤B包括:chunk1、chunk2、chunk3,磁盤C也包括:chunk1、chunk2、chunk3。此時,可以把磁盤A的chunk1、磁盤B的chunk1以及磁盤C的chunk1劃分到一起供控制器使用,稱之為一個控制器LUN,將該控制器LUN命名為LUNA,LUNA為該控制器LUN的控制器LUNID。以此類推,假設(shè)控制器A擁有3個LUN,其ID分別為LUNA、LUNB、LUNC??刂破鰾也擁有3個LUN,其ID分別為LUNA、LUNB、LUNC。由上可見,控制器A和控制器B的控制器LUNID存在重復(fù)。本發(fā)明實施例中,為了避免LUNID的重復(fù),I/O控制裝置把不同控制器的控制器LUNID重新進行統(tǒng)一編號,例如,對上述6個LUN的ID重新編號,重新編號為LUN1、LUN2、LUN3、LUN4、LUN5、LUN6,這6個重新編號的LUNID所代表的LUN,就是主機LUN。對主機而言,它只能識別主機LUNID,而不能識別控制器LUNID。對控制器而言,它只能識別控制器LUN,而不能識別主機LUN。因此,需要通過I/O控制裝置,完成主機LUNID和控制器LUNID二者之間的映射。本發(fā)明實施例中,可以由用戶配置存儲設(shè)備塊的大小,I/O控制裝置根據(jù)用戶配置的存儲設(shè)備塊的大小,建立上述對應(yīng)關(guān)系表,對應(yīng)關(guān)系表中,記錄 有主機LUNID對應(yīng)的控制器LUNID、以及各控制器LUNID的歸屬控制器ID,還記錄有控制器LUNID、虛擬塊標(biāo)識與存儲設(shè)備標(biāo)識、存儲設(shè)備塊標(biāo)識的對應(yīng)關(guān)系;每個存儲設(shè)備標(biāo)識對應(yīng)多個存儲設(shè)備塊標(biāo)識;并由I/O控制裝置將主機LUNID上報給主機。步驟202,使用待訪問主機LUNID在對應(yīng)關(guān)系表中進行查找,獲得待訪問主機LUNID對應(yīng)的待訪問控制器LUNID,以及控制器LUN的歸屬控制器的待訪問控制器ID。此外,也可以根據(jù)預(yù)設(shè)的算法,確定待訪問主機LUNID對應(yīng)的待訪問控制器LUNID和待訪問控制器ID。步驟203,把該I/O操作命令中的待訪問主機LUNID替換成待訪問控制器LUNID后,把該I/O操作命令發(fā)往待訪問控制器ID所代表的控制器進行操作訪問。由于同一控制器下的控制器LUNID均不相同,因此控制器可以根據(jù)控制器LUNID找到該I/O操作命令具體針對的存儲設(shè)備。本發(fā)明實施例提供了一種輸入輸出控制方法,I/O控制裝置接收主機發(fā)送的針對主機LUNID的I/O操作命令,該I/O操作命令中攜帶有待訪問主機LUNID,使用待訪問主機LUNID在對應(yīng)關(guān)系表中進行查找,獲得待訪問主機LUNID對應(yīng)的待訪問控制器LUNID,以及控制器LUN的歸屬控制器的待訪問控制器ID;把I/O操作命令中的待訪問主機LUNID替換成待訪問控制器LUNID后,把該I/O操作命令發(fā)往待訪問控制器ID所代表的控制器進行操作訪問。本發(fā)明實施例中,由于主機LUNID是對所有控制器的控制器LUNID進行統(tǒng)一編號后生成的,因此,主機LUNID具有唯一性,I/O控制裝置根據(jù)主機LUNID能夠路由到相應(yīng)的控制器,由該控制器找到輸入輸出操作具體針對的存儲設(shè)備。圖3為本發(fā)明實施例二提供的輸入輸出控制方法流程圖,其中,I/O操作命令具體為寫數(shù)據(jù)命令,該寫數(shù)據(jù)命令中攜帶有第一待訪問主機LUNID和第 一初始(LogicBlockAddress,LBA);每個待訪問控制器LUNID對應(yīng)多個虛擬塊標(biāo)識;對應(yīng)關(guān)系表中,還記錄有控制器LUNID、虛擬塊標(biāo)識與存儲設(shè)備標(biāo)識、存儲設(shè)備塊標(biāo)識的對應(yīng)關(guān)系;每個存儲設(shè)備標(biāo)識對應(yīng)多個存儲設(shè)備塊標(biāo)識,該方法包括:步驟301,I/O控制裝置接收主機發(fā)送的寫數(shù)據(jù)命令,該寫數(shù)據(jù)命令中攜帶有第一待訪問主機LUNID和第一初始LBA。其中,LBA可以意指某個數(shù)據(jù)區(qū)塊的地址或是某個地址所指向的數(shù)據(jù)區(qū)塊,本發(fā)明實施例中,后續(xù)可以通過對第一初始LBA進行解析,得到第一待訪問控制器LUNID的第一初始虛擬塊標(biāo)識。步驟302,使用第一待訪問主機LUNID在對應(yīng)關(guān)系表中進行查找,獲得第一待訪問主機LUNID對應(yīng)的第一待訪問控制器LUNID,以及控制器LUN的歸屬控制器的第一待訪問控制器ID。步驟303,對第一初始LBA進行解析,得到第一待訪問控制器LUNID的第一初始虛擬塊標(biāo)識。步驟304,使用第一待訪問控制器LUNID和第一初始虛擬塊標(biāo)識在對應(yīng)關(guān)系表中進行查找,獲得第一待訪問控制器LUNID和第一初始虛擬塊標(biāo)識對應(yīng)的第一存儲設(shè)備標(biāo)識和第一初始存儲設(shè)備塊標(biāo)識。本發(fā)明實施例中,還可以包括建立對應(yīng)關(guān)系表的過程,其中,可以根據(jù)用戶配置的存儲設(shè)備塊的大小,建立對應(yīng)關(guān)系表,通過上述方式可以實現(xiàn)I/O粒度大小靈活可配,根據(jù)不同的應(yīng)用場景選擇粒度大小,以達到最佳性能,進一步支持負載均衡。步驟305,把該寫數(shù)據(jù)命令中的第一待訪問主機LUNID替換成第一待訪問控制器LUNID,以及,把該寫數(shù)據(jù)命令中的第一初始LBA替換成第一初始存儲設(shè)備塊標(biāo)識后,把該寫數(shù)據(jù)命令發(fā)往第一待訪問控制器ID所代表的控制器進行操作訪問。本發(fā)明實施例提供了一種輸入輸出控制方法,主機LUN與存儲設(shè)備不再 是一一對應(yīng)的,存儲設(shè)備被劃分成了多個存儲設(shè)備塊,通過主機LUN與存儲設(shè)備標(biāo)識和初始存儲設(shè)備塊標(biāo)識建立對應(yīng)關(guān)系,可以實現(xiàn)將針對同一主機LUN的寫操作分發(fā)到不同存儲設(shè)備的存儲設(shè)備塊中,從而將一條通道上的I/O壓力分散到多條通道上,因此有效實現(xiàn)了負載均衡??蛇x地,參照圖4,該方法還可以包括數(shù)據(jù)備份的處理流程,I/O操作命令具體為數(shù)據(jù)備份命令,該數(shù)據(jù)備份命令中攜帶有第二待訪問主機LUNID和第二初始LBA;每個待訪問控制器LUNID對應(yīng)多個虛擬塊標(biāo)識;對應(yīng)關(guān)系表中,還記錄有控制器LUNID、虛擬塊標(biāo)識與存儲設(shè)備標(biāo)識、存儲設(shè)備塊標(biāo)識的對應(yīng)關(guān)系;每個存儲設(shè)備標(biāo)識對應(yīng)多個存儲設(shè)備塊標(biāo)識,上述數(shù)據(jù)備份的處理流程具體包括:步驟401,I/O控制裝置接收主機發(fā)送的數(shù)據(jù)備份命令,該數(shù)據(jù)備份命令中攜帶有第二待訪問主機LUNID和第二初始LBA。步驟402,使用第二待訪問主機LUNID在對應(yīng)關(guān)系表中進行查找,獲得第二待訪問主機LUNID對應(yīng)的第二待訪問控制器LUNID,以及控制器LUN的歸屬控制器的第二待訪問控制器ID。步驟403,對第二初始LBA進行解析,得到第二待訪問控制器LUNID的第二初始虛擬塊標(biāo)識。步驟404,使用第二待訪問控制器LUNID和第二初始虛擬塊標(biāo)識在對應(yīng)關(guān)系表中進行查找,獲得第二待訪問控制器LUNID和第二初始虛擬塊標(biāo)識對應(yīng)的第二存儲設(shè)備標(biāo)識和第二初始存儲設(shè)備塊標(biāo)識。步驟405,把該數(shù)據(jù)備份命令中的第二待訪問主機LUNID替換成第二待訪問控制器LUNID,以及,把該數(shù)據(jù)備份命令中的第二初始LBA替換成第二初始存儲設(shè)備塊標(biāo)識后,把該數(shù)據(jù)備份命令發(fā)往第二待訪問控制器ID所代表的控制器進行操作訪問。通常地,數(shù)據(jù)備份時,控制器之間會進行頻繁的數(shù)據(jù)同步,增加了控制器的壓力。本發(fā)明實施例中,通過I/O控制裝置統(tǒng)籌管理I/O的分發(fā),能夠 緩解數(shù)據(jù)同步時控制器上的壓力??蛇x地,參照圖5,該方法還可以包括讀數(shù)據(jù)的處理流程,該I/O操作命令具體為讀數(shù)據(jù)命令,該讀數(shù)據(jù)命令中攜帶有第三待訪問主機LUNID和第三初始LBA;每個待訪問控制器LUNID對應(yīng)多個虛擬塊標(biāo)識;對應(yīng)關(guān)系表中,還記錄有控制器LUNID、虛擬塊標(biāo)識與存儲設(shè)備標(biāo)識、存儲設(shè)備塊標(biāo)識的對應(yīng)關(guān)系;每個存儲設(shè)備標(biāo)識對應(yīng)多個存儲設(shè)備塊標(biāo)識,上述讀數(shù)據(jù)的處理流程具體包括:步驟501,I/O控制裝置接收主機發(fā)送的讀數(shù)據(jù)命令,該讀數(shù)據(jù)命令中攜帶有第三待訪問主機LUNID和第三初始LBA。步驟502,使用第三待訪問主機LUNID在對應(yīng)關(guān)系表中進行查找,獲得第三待訪問主機LUNID對應(yīng)的第三待訪問控制器LUNID,以及控制器LUN的歸屬控制器的第三待訪問控制器ID。步驟503,對第三初始LBA進行解析,得到第三待訪問控制器LUNID的第三初始虛擬塊標(biāo)識。步驟504,使用第三待訪問控制器LUNID和第三初始虛擬塊標(biāo)識在對應(yīng)關(guān)系表中進行查找,獲得第三待訪問控制器LUNID和第三初始虛擬塊標(biāo)識對應(yīng)的第三存儲設(shè)備標(biāo)識和第三初始存儲設(shè)備塊標(biāo)識。步驟505,把該讀數(shù)據(jù)命令中的第三待訪問主機LUNID替換成第三待訪問控制器LUNID,以及,把該讀數(shù)據(jù)命令中的第三初始LBA替換成第三初始存儲設(shè)備塊標(biāo)識后,把該讀數(shù)據(jù)命令發(fā)往第三待訪問控制器ID所代表的控制器進行操作訪問。參照圖6所示的I/O細粒度分發(fā)邏輯圖,在原有技術(shù)中,主機管理的主機邏輯單元號(HostLUN)和控制器管理的存儲設(shè)備(disk)是一一對應(yīng)的,而在I/O細粒度分發(fā)的系統(tǒng)中,HostLUN和disk的映射關(guān)系不再是一一對應(yīng)。每個disk均勻地分割成多個更小的單元,以塊(chunk)來表示這個更小的單元,disk上的chunk編號從0開始遞增。取多個disk中的chunk,在I/O 控制裝置中構(gòu)建成一個個虛擬邏輯單元號(DevLUN),DevLUN能夠被控制器所識別,因此DevLUN也稱為控制器LUN,DevLUN由I/O控制裝置保存管理。主機中的HostLUN不再和disk一一對應(yīng),而是和I/O控制裝置中的DevLUN一一對應(yīng),即一個HostLUN將以chunk為單位,映射到不同控制器中的不同disk上。I/O控制裝置管理HostLUN和DevLUN的映射關(guān)系表、DevLUN的chunk和disk的chunk的映射關(guān)系表,并負責(zé)I/O消息的分發(fā),其中,上述映射關(guān)系表也可以稱為對應(yīng)關(guān)系表。chunk的粒度大小可配置,每個chunk的大小相同。主機對指定LUN進行頻繁的I/O操作的時候,I/O控制裝置會以chunk為單元,將I/O操作分發(fā)到不同控制器的不同disk中,從而達到負載均衡的效果。合理地規(guī)劃LUN上的chunk和disk的chunk的映射關(guān)系,以及合理地配置chunk的大小,能夠達到更好的負載均衡的效果。本發(fā)明實施例中的輸入輸出控制方法具體可以包括兩個處理階段:路由表構(gòu)建和讀寫流程。路由表構(gòu)建可以由控制器和I/O控制裝置共同來完成,先由控制器掃描下掛的存儲設(shè)備,將disk分割為一組chunk,多個disk就分割為多組chunk,每組chunk的編號(ID)都從0開始遞增,呈現(xiàn)給管理軟件;管理軟件將不同disk的各個chunk劃分給不同的DevLUN;控制器將diskchunk和DevLUNchunk的映射關(guān)系以表的形式存儲;并向I/O控制裝置上報此映射表,該映射表也可以稱為對應(yīng)關(guān)系表。該映射表的一條映射關(guān)系中可以包括I/O控制裝置標(biāo)識(I/OCUID)、虛擬邏輯單元號標(biāo)識(DevLUNID)、虛擬塊標(biāo)識(DevChunkID)、控制器標(biāo)識(CtrlID)、存儲設(shè)備標(biāo)識(DiskID)、存儲設(shè)備塊標(biāo)識(DiskChunkID)這幾個字段,具體可以如表一所示。表一I/OCUIDDevLUNIDDevChunkIDCtrlIDDiskIDDiskChunkIDI/O控制裝置接收到控制器上報的映射表,根據(jù)I/OCUID選擇歸屬于自己控制的信息,在本地構(gòu)建路由表。參見表二,路由表中以DevLUN為單位,記錄了每個DevLUN有多少個chunk組成,以及每個DevLUN上的chunk對應(yīng)的DiskChunk的信息,該信息包括DiskChunk所屬的控制器標(biāo)識、DiskID和DiskChunkID。表二讀寫流程中,主要涉及路由方式,具體地,主機下發(fā)讀寫命令,命令中包含HostLUNID和起始LBA;I/O控制裝置在本地路由表中尋找未使用過的DevLUN,建立HostLUN和DevLUN的一一對應(yīng)關(guān)系,并標(biāo)記該DevLUN已使用;I/O控制裝置根據(jù)起始LBA,解析出對應(yīng)的DevChunkID;I/O控制裝置可以根據(jù)DevLUNID和DevChunkID,在路由表中找到唯一確定的DiskChunkID、DiskID、CtrlID,根據(jù)CtrlID將命令路由給指定的控制器;控制器根據(jù)DiskChunkID和DiskID對該disk的指定區(qū)塊進行讀寫操作。參照圖7所示的讀數(shù)據(jù)流程,主機下發(fā)讀命令,命令中帶有HostLUNID和起始LBA;I/O控制裝置接收到讀命令后,采用前面介紹的路由方式,將命令分發(fā)到指定的控制器;控制器接收到讀命令后,將數(shù)據(jù)從指定disk區(qū)塊讀出來;控制器直接將讀數(shù)據(jù)搬運到主機。參照圖8所示的寫數(shù)據(jù)流程,主機下發(fā)寫命令,命令中帶有HostLUNID和起始LBA;I/O控制裝置接收到寫命令后,采用前面介紹的路由方式,將命 令分發(fā)到指定的控制器;控制器接收到寫命令后,向主機返回已準備好(ready)消息,主機將數(shù)據(jù)搬運到控制器;控制器將數(shù)據(jù)寫入指定disk的區(qū)塊。如果需要進行數(shù)據(jù)備份,I/O控制裝置通過備份算法,找到備份數(shù)據(jù)將要寫入的存儲區(qū)塊,再根據(jù)前面介紹的路由方式,將命令分發(fā)到指定的控制器;控制器接收到寫備份命令后,向主機返回ready消息,主機將數(shù)據(jù)再備份給此控制器,控制器將備份數(shù)據(jù)寫入指定disk的區(qū)塊。圖9為本發(fā)明實施例三提供的輸入輸出控制裝置結(jié)構(gòu)圖,該裝置用于執(zhí)行本發(fā)明實施例提供的輸入輸出控制方法,該裝置包括:接收單元901,用于接收主機發(fā)送的針對主機LUNID的I/O操作命令,所述操作命令中攜帶有待訪問主機LUNID,所述I/O操作命令是寫數(shù)據(jù)命令、數(shù)據(jù)備份命令或讀數(shù)據(jù)命令中的一種;查找單元902,用于使用所述接收單元901接收的待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述待訪問主機LUNID對應(yīng)的待訪問控制器LUNID,以及控制器LUN的歸屬控制器的待訪問控制器ID;發(fā)送單元903,用于把所述接收單元901接收的I/O操作命令中的所述待訪問主機LUNID替換成所述查找單元902獲得的待訪問控制器LUNID后,把所述I/O操作命令發(fā)往所述待訪問控制器ID所代表的控制器進行操作訪問??蛇x地,所述接收單元901接收的I/O操作命令包括寫數(shù)據(jù)命令,所述寫數(shù)據(jù)命令中攜帶有第一待訪問主機LUNID和第一初始邏輯區(qū)塊地址LBA;每個待訪問控制器LUNID對應(yīng)多個虛擬塊標(biāo)識;所述對應(yīng)關(guān)系表中,還記錄有控制器LUNID、虛擬塊標(biāo)識與存儲設(shè)備標(biāo)識、存儲設(shè)備塊標(biāo)識的對應(yīng)關(guān)系;每個存儲設(shè)備標(biāo)識對應(yīng)多個存儲設(shè)備塊標(biāo)識;所述查找單元902,具體用于使用所述接收單元901接收的第一待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述第一待訪問主機LUNID 對應(yīng)的第一待訪問控制器LUNID,以及控制器LUN的歸屬控制器的第一待訪問控制器ID;所述裝置還包括:解析單元904,用于對所述接收單元901接收的第一初始LBA進行解析,得到所述第一待訪問控制器LUNID的第一初始虛擬塊標(biāo)識;所述查找單元902,還用于使用所述查找單元902獲得的第一待訪問控制器LUNID和所述解析單元904得到的第一初始虛擬塊標(biāo)識在所述對應(yīng)關(guān)系表中進行查找,獲得所述第一待訪問控制器LUNID和所述第一初始虛擬塊標(biāo)識對應(yīng)的第一存儲設(shè)備標(biāo)識和第一初始存儲設(shè)備塊標(biāo)識;所述發(fā)送單元903,具體用于把所述接收單元901接收的寫數(shù)據(jù)命令中的所述第一待訪問主機LUNID替換成所述查找單元902獲得的第一待訪問控制器LUNID,以及,把所述寫數(shù)據(jù)命令中的所述第一初始LBA替換成所述查找單元902獲得的第一初始存儲設(shè)備塊標(biāo)識后,把所述寫數(shù)據(jù)命令發(fā)往所述查找單元902獲得的第一待訪問控制器ID所代表的控制器進行操作訪問??蛇x地,所述接收單元901接收的I/O操作命令包括數(shù)據(jù)備份命令,所述數(shù)據(jù)備份命令中攜帶有第二待訪問主機LUNID和第二初始邏輯區(qū)塊地址LBA;每個待訪問控制器LUNID對應(yīng)多個虛擬塊標(biāo)識;所述對應(yīng)關(guān)系表中,還記錄有控制器LUNID、虛擬塊標(biāo)識與存儲設(shè)備標(biāo)識、存儲設(shè)備塊標(biāo)識的對應(yīng)關(guān)系;每個存儲設(shè)備標(biāo)識對應(yīng)多個存儲設(shè)備塊標(biāo)識;所述查找單元902,具體用于使用所述接收單元901接收的第二待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述第二待訪問主機LUNID對應(yīng)的第二待訪問控制器LUNID,以及控制器LUN的歸屬控制器的第二待訪問控制器ID;所述裝置還包括:解析單元904,用于對所述接收單元901接收的第二初始LBA進行解析,得到所述第二待訪問控制器LUNID的第二初始虛擬塊標(biāo)識;所述查找單元902,還用于使用所述查找單元902獲得的第二待訪問控制器LUNID和所述解析單元904得到的第二初始虛擬塊標(biāo)識在所述對應(yīng)關(guān)系表中進行查找,獲得所述第二待訪問控制器LUNID和所述第二初始虛擬塊標(biāo)識對應(yīng)的第二存儲設(shè)備標(biāo)識和第二初始存儲設(shè)備塊標(biāo)識;所述發(fā)送單元903,具體用于把所述接收單元901接收的數(shù)據(jù)備份命令中的所述第二待訪問主機LUNID替換成所述查找單元902獲得的第二待訪問控制器LUNID,以及,把所述數(shù)據(jù)備份命令中的所述第二初始LBA替換成所述查找單元902獲得的第二初始存儲設(shè)備塊標(biāo)識后,把所述數(shù)據(jù)備份命令發(fā)往所述查找單元902獲得的第二待訪問控制器ID所代表的控制器進行操作訪問??蛇x地,所述接收單元901接收的I/O操作命令包括讀數(shù)據(jù)命令,所述讀數(shù)據(jù)命令中攜帶有第三待訪問主機LUNID和第三初始邏輯區(qū)塊地址LBA;每個待訪問控制器LUNID對應(yīng)多個虛擬塊標(biāo)識;所述對應(yīng)關(guān)系表中,還記錄有控制器LUNID、虛擬塊標(biāo)識與存儲設(shè)備標(biāo)識、存儲設(shè)備塊標(biāo)識的對應(yīng)關(guān)系;每個存儲設(shè)備標(biāo)識對應(yīng)多個存儲設(shè)備塊標(biāo)識;所述查找單元902,具體用于使用所述接收單元901接收的第三待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述第三待訪問主機LUNID對應(yīng)的第三待訪問控制器LUNID,以及控制器LUN的歸屬控制器的第三待訪問控制器ID;所述裝置還包括:解析單元904,用于對所述接收單元901接收的第三初始LBA進行解析,得到所述第三待訪問控制器LUNID的第三初始虛擬塊標(biāo)識;所述查找單元902,還用于使用所述查找單元902獲得的第三待訪問控制器LUNID和所述解析單元904得到的第三初始虛擬塊標(biāo)識在所述對應(yīng)關(guān)系表中進行查找,獲得所述第三待訪問控制器LUNID和所述第三初始虛擬塊標(biāo)識對應(yīng)的第三存儲設(shè)備標(biāo)識和第三初始存儲設(shè)備塊標(biāo)識;所述發(fā)送單元903,具體用于把所述接收單元901接收的讀數(shù)據(jù)命令中的所述第三待訪問主機LUNID替換成所述查找單元902獲得的第三待訪問控制器LUNID,以及,把所述讀數(shù)據(jù)命令中的所述第三初始LBA替換成所述查找單元902獲得的第三初始存儲設(shè)備塊標(biāo)識后,把所述讀數(shù)據(jù)命令發(fā)往所述查找單元902獲得的第三待訪問控制器ID所代表的控制器進行操作訪問??蛇x地,所述裝置還包括:對應(yīng)關(guān)系建立單元905,用于根據(jù)用戶配置的存儲設(shè)備塊的大小,建立所述對應(yīng)關(guān)系表。圖10為本發(fā)明實施例四提供的輸入輸出控制裝置結(jié)構(gòu)圖,該裝置用于執(zhí)行本發(fā)明實施例提供的輸入輸出控制方法,該裝置包括:存儲器1001;處理器1002;存儲器1001,用于存儲程序指令;處理器1002,用于根據(jù)存儲器1001中存儲的程序指令,執(zhí)行以下操作:接收主機發(fā)送的針對主機LUNID的I/O操作命令,所述I/O操作命令中攜帶有待訪問主機LUNID,所述I/O操作命令是寫數(shù)據(jù)命令、數(shù)據(jù)備份命令或讀數(shù)據(jù)命令中的一種;使用所述待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述待訪問主機LUNID對應(yīng)的待訪問控制器LUNID,以及控制器LUN的歸屬控制器的待訪問控制器ID;把所述I/O操作命令中的所述待訪問主機LUNID替換成所述待訪問控制器LUNID后,把所述I/O操作命令發(fā)往所述待訪問控制器ID所代表的控制器進行操作訪問??蛇x地,所述I/O操作命令包括寫數(shù)據(jù)命令,所述寫數(shù)據(jù)命令中攜帶有第一待訪問主機LUNID和第一初始LBA;每個待訪問控制器LUNID對應(yīng)多個虛擬塊標(biāo)識;所述對應(yīng)關(guān)系表中,還記錄有控制器LUNID、虛擬塊標(biāo)識與存 儲設(shè)備標(biāo)識、存儲設(shè)備塊標(biāo)識的對應(yīng)關(guān)系;每個存儲設(shè)備標(biāo)識對應(yīng)多個存儲設(shè)備塊標(biāo)識;所述處理器1002執(zhí)行所述使用所述待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述待訪問主機LUNID對應(yīng)的待訪問控制器LUNID,以及控制器LUN的歸屬控制器的待訪問控制器ID的操作,包括:使用所述第一待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述第一待訪問主機LUNID對應(yīng)的第一待訪問控制器LUNID,以及控制器LUN的歸屬控制器的第一待訪問控制器ID;所述處理器1002還用于根據(jù)所述存儲器1001中存儲的程序指令執(zhí)行以下操作:對所述第一初始LBA進行解析,得到所述第一待訪問控制器LUNID的第一初始虛擬塊標(biāo)識;使用所述第一待訪問控制器LUNID和所述第一初始虛擬塊標(biāo)識在所述對應(yīng)關(guān)系表中進行查找,獲得所述第一待訪問控制器LUNID和所述第一初始虛擬塊標(biāo)識對應(yīng)的第一存儲設(shè)備標(biāo)識和第一初始存儲設(shè)備塊標(biāo)識;所述處理器1002執(zhí)行所述把所述I/O操作命令中的所述待訪問主機LUNID替換成所述待訪問控制器LUNID后,把所述I/O操作命令發(fā)往所述待訪問控制器ID所代表的控制器進行操作訪問的操作,包括:把所述寫數(shù)據(jù)命令中的所述第一待訪問主機LUNID替換成所述第一待訪問控制器LUNID,以及,把所述寫數(shù)據(jù)命令中的所述第一初始LBA替換成所述第一初始存儲設(shè)備塊標(biāo)識后,把所述寫數(shù)據(jù)命令發(fā)往所述第一待訪問控制器ID所代表的控制器進行操作訪問。可選地,所述I/O操作命令包括數(shù)據(jù)備份命令,所述數(shù)據(jù)備份命令中攜帶有第二待訪問主機LUNID和第二初始LBA;每個待訪問控制器LUNID對應(yīng)多個虛擬塊標(biāo)識;所述對應(yīng)關(guān)系表中,還記錄有控制器LUNID、虛擬塊標(biāo)識與存儲設(shè)備標(biāo)識、存儲設(shè)備塊標(biāo)識的對應(yīng)關(guān)系;每個存儲設(shè)備標(biāo)識對應(yīng)多個 存儲設(shè)備塊標(biāo)識;所述處理器1002執(zhí)行所述使用所述待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述待訪問主機LUNID對應(yīng)的待訪問控制器LUNID,以及控制器LUN的歸屬控制器的待訪問控制器ID的操作,包括:使用所述第二待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述第二待訪問主機LUNID對應(yīng)的第二待訪問控制器LUNID,以及控制器LUN的歸屬控制器的第二待訪問控制器ID;所述處理器1002還用于根據(jù)所述存儲器1001中存儲的程序指令執(zhí)行以下操作:對所述第二初始LBA進行解析,得到所述第二待訪問控制器LUNID的第二初始虛擬塊標(biāo)識;使用所述第二待訪問控制器LUNID和所述第二初始虛擬塊標(biāo)識在所述對應(yīng)關(guān)系表中進行查找,獲得所述第二待訪問控制器LUNID和所述第二初始虛擬塊標(biāo)識對應(yīng)的第二存儲設(shè)備標(biāo)識和第二初始存儲設(shè)備塊標(biāo)識;所述處理器1002執(zhí)行所述把所述I/O操作命令中的所述待訪問主機LUNID替換成所述待訪問控制器LUNID后,把所述I/O操作命令發(fā)往所述待訪問控制器ID所代表的控制器進行操作訪問的操作,包括:把所述數(shù)據(jù)備份命令中的所述第二待訪問主機LUNID替換成所述第二待訪問控制器LUNID,以及,把所述數(shù)據(jù)備份命令中的所述第二初始LBA替換成所述第二初始存儲設(shè)備塊標(biāo)識后,把所述數(shù)據(jù)備份命令發(fā)往所述第二待訪問控制器ID所代表的控制器進行操作訪問??蛇x地,所述I/O操作命令包括讀數(shù)據(jù)命令,所述讀數(shù)據(jù)命令中攜帶有第三待訪問主機LUNID和第三初始LBA;每個待訪問控制器LUNID對應(yīng)多個虛擬塊標(biāo)識;所述對應(yīng)關(guān)系表中,還記錄有控制器LUNID、虛擬塊標(biāo)識與存儲設(shè)備標(biāo)識、存儲設(shè)備塊標(biāo)識的對應(yīng)關(guān)系;每個存儲設(shè)備標(biāo)識對應(yīng)多個存儲設(shè)備塊標(biāo)識;所述處理器1002執(zhí)行所述使用所述待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述待訪問主機LUNID對應(yīng)的待訪問控制器LUNID,以及控制器LUN的歸屬控制器的待訪問控制器ID的操作,包括:使用所述第三待訪問主機LUNID在所述對應(yīng)關(guān)系表中進行查找,獲得所述第三待訪問主機LUNID對應(yīng)的第三待訪問控制器LUNID,以及控制器LUN的歸屬控制器的第三待訪問控制器ID;所述處理器1002還用于根據(jù)所述存儲器1001中存儲的程序指令執(zhí)行以下操作:對所述第三初始LBA進行解析,得到所述第三待訪問控制器LUNID的第三初始虛擬塊標(biāo)識;使用所述第三待訪問控制器LUNID和所述第三初始虛擬塊標(biāo)識在所述對應(yīng)關(guān)系表中進行查找,獲得所述第三待訪問控制器LUNID和所述第三初始虛擬塊標(biāo)識對應(yīng)的第三存儲設(shè)備標(biāo)識和第三初始存儲設(shè)備塊標(biāo)識;所述處理器1002執(zhí)行所述把所述I/O操作命令中的所述待訪問主機LUNID替換成所述待訪問控制器LUNID后,把所述I/O操作命令發(fā)往所述待訪問控制器ID所代表的控制器進行操作訪問的操作,包括:把所述讀數(shù)據(jù)命令中的所述第三待訪問主機LUNID替換成所述第三待訪問控制器LUNID,以及,把所述讀數(shù)據(jù)命令中的所述第三初始LBA替換成所述第三初始存儲設(shè)備塊標(biāo)識后,把所述讀數(shù)據(jù)命令發(fā)往所述第三待訪問控制器ID所代表的控制器進行操作訪問??蛇x地,所述處理器1002還用于根據(jù)所述存儲器1001中存儲的程序指令執(zhí)行以下操作:根據(jù)用戶配置的存儲設(shè)備塊的大小,建立所述對應(yīng)關(guān)系表。專業(yè)人員應(yīng)該還可以進一步意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能 一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認為超出本發(fā)明的范圍。結(jié)合本文中所公開的實施例描述的方法或算法的步驟可以用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。軟件模塊可以置于隨機存儲器(RAM)、內(nèi)存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或
技術(shù)領(lǐng)域:
內(nèi)所公知的任意其它形式的存儲介質(zhì)中。以上所述的具體實施方式,對本發(fā)明的目的、技術(shù)方案和有益效果進行了進一步詳細說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實施方式而已,并不用于限定本發(fā)明的保護范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。當(dāng)前第1頁1 2 3