器1012上確保保存分配表241的儲存區(qū)域,并將內(nèi)容初始化),向服務(wù)器刀片1002(假設(shè)為服務(wù)器刀片1002-1)通知分配表的基地址(圖3:S1的處理)。此時,控制器以保存有存在多個的分配表中服務(wù)器刀片1002-1要訪問的分配表的存儲設(shè)備存儲器1012上的起始地址為基礎(chǔ)生成基地址,并通知所生成的基地址。由此,在決定I/o指令的發(fā)行目的地時,服務(wù)器刀片1002-1?1002-8能夠訪問控制器1001內(nèi)的八個分配表中自身要訪問的分配表。此外,分配表241在存儲設(shè)備存儲器1012上的保存位置可以事先固定地決定出,也可以在生成分配表時由控制器1001動態(tài)地決定。
[0125](索引表)
[0126]實施例1的存儲控制器21以在I/O指令中包含的服務(wù)器3 (或在服務(wù)器3上動作的虛擬計算機(jī))的信息(S_ID)為基礎(chǔ),導(dǎo)出8比特的索引編號,服務(wù)器3利用索引編號決定了分配表內(nèi)訪問目的地。另外,控制器21在索引表600中管理S_ID與索引編號之間的對應(yīng)關(guān)系的信息。實施例2中的控制器1001也同樣地,保持索引表600,管理S_ID與索引編號之間的對應(yīng)關(guān)系的信息。
[0127]另外,與分配表同樣地,實施例2中的控制器1001針對每個與控制器1001連接的服務(wù)器刀片1002來管理索引表600。因此,具有與服務(wù)器刀片1002的臺數(shù)同等數(shù)量的索引表 600。
[0128](刀片服務(wù)器側(cè)管理信息)
[0129]為了使本發(fā)明的實施例2的刀片服務(wù)器1002進(jìn)行I/O分配處理,利用刀片服務(wù)器1002維護(hù)管理的信息與實施例1的服務(wù)器3 (的分配部35)所具有的信息(檢索數(shù)據(jù)表3010、分配表基地址信息3110、分配表讀取目的地CTL#信息3120)相同。在實施例2的刀片服務(wù)器1002中,這些信息保存在ASIC1024的內(nèi)部RAM10246中。
[0130](I/O處理的流程)
[0131]接著,利用圖15、16,說明在服務(wù)器刀片1002向存儲控制器模塊1001發(fā)送I/O請求(以讀請求為例)時的處理概要。該處理的流程與實施例1的圖3記載的流程相同。此夕卜,在實施例2中的計算機(jī)系統(tǒng)1000中,在初始設(shè)定時,也進(jìn)行圖3的S1、S2的處理(生成分配表,發(fā)送分配表的讀取目的地、分配表基地址信息),但在圖15、16中省略了該處理。
[0132]最初,服務(wù)器刀片1002的MPU1021進(jìn)行I/O指令的生成(S1001)。與實施例1同樣地,在I/o指令的參數(shù)中包含有能夠確定出發(fā)送源服務(wù)器刀片1002的信息即S_ID以及訪問對象LU的LUN。另外,在為讀請求的情況下,在I/O指令的參數(shù)中包含有應(yīng)保存讀數(shù)據(jù)的存儲器1022上的地址。MPU1021將生成的I/O指令的參數(shù)保存在存儲器1022中。在將I/O指令的參數(shù)保存在存儲器1022中之后,MPU1021向ASIC1024通知I/O指令保存完畢(S1002)。此時,MPU1021通過向服務(wù)器用麗1空間10247的規(guī)定的地址寫入信息,來進(jìn)行向ASIC1024的通知。
[0133]從MPU1021受理了指令保存完畢的通知的ASIC1024的處理器(LRP10244)從存儲器1022讀取I/O指令的參數(shù),并保存在ASIC1024的內(nèi)部RAM10246中(S1004),進(jìn)行參數(shù)的加工(S1005)。由于在服務(wù)器刀片1002側(cè)與存儲控制器模塊1001側(cè)指令的參數(shù)的格式不同(例如在由服務(wù)器刀片1002創(chuàng)建的指令參數(shù)中包含有讀數(shù)據(jù)保存目的地存儲器地址,但其為在存儲控制器模塊1001中不需要的參數(shù)),所以進(jìn)行去掉存儲控制器模塊1001中不需要的信息等的處理。
[0134]在S1006中,ASIC1024的LRP10244計算分配表241的訪問地址。該處理為與在實施例I的圖3、圖7中說明的S4(S41?S45)相同的處理,LRP10244從檢索數(shù)據(jù)表3010獲取與在I/O指令中包含的S_ID對應(yīng)的索引編號,將該索引編號作為基礎(chǔ)計算出訪問地址。而且,與實施例1同樣地,有時索引編號的檢索也會失敗導(dǎo)致計算訪問地址失敗,在該情況下,LRP10244與實施例1同樣地,生成偽地址。
[0135]在S1007中,進(jìn)行與圖3的S6同樣的處理。LRP10244讀取利用表讀取目的地CTL#3120確定出的控制器1001(1001-1或1001-2)的分配表241的規(guī)定地址(在S1006中計算出的分配表241的訪問地址)的信息。由此,判明具有訪問對象LU的所有者權(quán)限的處理器(處理器內(nèi)核)。
[0136]S1008為與實施例1的S7(圖3)同樣的處理。LRP10244將在S1005中加工了的指令參數(shù)寫入存儲設(shè)備存儲器1012。此外,在圖15中,僅記載了在S1007的處理中的作為分配表的讀取目的地的控制器1001與S1008的處理中的指令參數(shù)的寫入目的地控制器1001相同的情況下的例子。在此,與實施例1同樣地,也會發(fā)生如下的情形:在S1007中判明的具有訪問對象LU的所有者權(quán)限的處理器內(nèi)核所屬的控制器1001與作為分配表的讀取目的地的控制器1001不同,在該情況下,指令參數(shù)的寫入目的地自然為具有訪問對象LU的所有者權(quán)限的處理器內(nèi)核所屬的控制器1001上的存儲設(shè)備存儲器1012。
[0137]另外,由于在實施例2的控制器1001中存在多個處理器內(nèi)核10111,所以判斷在S1007中判明的具有訪問對象LU的所有者權(quán)限的處理器內(nèi)核的識別編號是在0x00?0x07的范圍內(nèi)還是在0x08?OxOF的范圍內(nèi),在識別編號為0x00?0x07的范圍內(nèi)的情況下,向在控制器1001-1的存儲設(shè)備存儲器1012-1上設(shè)置的指令隊列寫入指令參數(shù),在為0x08?OxOF的范圍的情況下,向在控制器1001-2的存儲設(shè)備存儲器1012-2上設(shè)置的指令隊列寫入指令參數(shù)。
[0138]例如當(dāng)在S1007中判明的具有訪問對象LU的所有者權(quán)限的處理器內(nèi)核的識別編號為0x01,發(fā)行指令的服務(wù)器刀片為服務(wù)器刀片1002-1時,LRP10244在存儲設(shè)備存儲器1012上設(shè)置的服務(wù)器刀片1002-1用的八個指令隊列中的內(nèi)核0x01用的指令隊列中保存指令參數(shù)。在保存指令參數(shù)之后,LRP10244向存儲控制器模塊1001的處理器內(nèi)核10111(具有訪問對象LU的所有者權(quán)限的處理器內(nèi)核)通知指令參數(shù)保存完畢。
[0139]此外,與實施例1同樣地,在S1007的處理中,有時在ASIC1024上的檢索數(shù)據(jù)表中沒有登記服務(wù)器刀片1002(或在服務(wù)器刀片1002上運轉(zhuǎn)的虛擬計算機(jī))的3_10,所以索引編號的檢索失敗,其結(jié)果為,不能判明具有訪問對象LU的所有者權(quán)限的處理器內(nèi)核。在該情況下,與實施例1同樣地,LRP10244向事先決定的特定的處理器內(nèi)核(與實施例1同樣地,將該處理器內(nèi)核稱為“代表MP”)發(fā)送I/O指令。也就是,在代表MP用的指令隊列中保存指令參數(shù),在保存指令參數(shù)之后,向代表MP通知指令參數(shù)保存完畢。
[0140]在S1009中,存儲控制器模塊1001的處理器內(nèi)核10111從指令隊列獲取I/O指令參數(shù),以所獲取的I/o指令參數(shù)為基礎(chǔ),進(jìn)行讀數(shù)據(jù)的準(zhǔn)備。具體來說,從HDD1007讀取數(shù)據(jù),并保存在存儲設(shè)備存儲器1012的高速緩存區(qū)域內(nèi)等。在S1010中,處理器內(nèi)核10111生成用于傳送在高速緩存區(qū)域中保存的讀數(shù)據(jù)DMA傳送用參數(shù),并保存在自身的存儲設(shè)備存儲器1012內(nèi)。若DMA傳送用參數(shù)保存完畢,則處理器內(nèi)核10111向ASIC1024的LRP10244通知保存完畢(S1010)。具體來說,該通知是通過向控制器1001用的MM1空間(10248或10249)的規(guī)定地址寫入信息來實現(xiàn)的。
[0141]在SlOll中,LRP10244從存儲設(shè)備存儲器1012讀取DMA傳送參數(shù)。接著,在S1012中,讀取在S1004中保存了的來自服務(wù)器刀片1002的I/O指令參數(shù)。在SlOlI中讀取的DMA傳送參數(shù)中包含有保存有讀數(shù)據(jù)的傳送源存儲器地址(存儲設(shè)備存儲器1012上地址),在來自服務(wù)器刀片1002的I/O指令參數(shù)中包含有讀數(shù)據(jù)的傳送目的地存儲器地址(服務(wù)器刀片1002的存儲器1022上地址),因此,在S1013中,LRP10244利用這些信息,生成用于將存儲設(shè)備存儲器1012上的讀數(shù)據(jù)傳送給服務(wù)器刀片1002的存儲器1022的DMA傳送列表,并保存在內(nèi)部RAM10246內(nèi)。此后,在S1014中,若LRP10244向DMA控制器10245指示DMA傳送開始(啟動),則DMA控制器10245基于在S1013中在內(nèi)部RAM10246保存的DMA傳送列表,從存儲設(shè)備存儲器1012向服務(wù)器刀片1002的存儲器1022實施數(shù)據(jù)傳送(S1015)。
[0142]若在S1015中的數(shù)據(jù)傳送完畢,則DMA控制器10245向LRP10244通知數(shù)據(jù)傳送完畢(S1016)。若LRP10244受理數(shù)據(jù)傳送完畢的通知,則創(chuàng)建I/O指令完畢的狀態(tài)信息,并向服務(wù)器刀片1002的存儲器1022、存儲控制器模塊1001的存儲設(shè)備存儲器1012寫入狀態(tài)信息(S1017)。另外,向服務(wù)器刀片1002的MPU1021及存儲控制器模塊1001的處理器內(nèi)核10111通知處理完畢,讀處理結(jié)束。
[0143](在索引編號的檢索失敗的情況下的處理)
[0144]接著,利用圖17,說明在索引編號的檢索失敗的情況下的處理(例如在服務(wù)器刀片1002 (或在服務(wù)器刀片1002上運轉(zhuǎn)的虛擬計算機(jī))最初向控制器1002發(fā)行了 I/O請求時等)。該處理與實施例1中的圖8的處理相同。
[0145]若代表MP接收I/O指令(相當(dāng)于圖15:S1008),則參照在I/O指令中包含的S_ID和LUN及LDEV管理表200,判斷自身是否具有訪問對象的LU的所有者權(quán)限(Sll)。在有所有者權(quán)限的情況下,自身實施下一個S12的處理,在沒有所有者權(quán)限的情況下,代表MP向具有所有者權(quán)限的處理器內(nèi)核發(fā)送I/O指令,具有所有者權(quán)限的處理器內(nèi)核從代表MP接收I/O指令(S11’)。另外,在代表MP發(fā)送I/O指令時,還一并發(fā)送該I/O指令的發(fā)行源的服務(wù)器刀片1002的信息(表示為服務(wù)器刀片1002-1?1002-8中哪個服務(wù)器刀片的信息)。
[0146]在S12中,處理器內(nèi)核處理接收到的I/O請求,并將處理結(jié)果送回至服務(wù)器3。在S12中,在接收了 I/O指令的處理器內(nèi)核具有所有者權(quán)限的情況下,進(jìn)行圖15、16記載的S1009?S1017的處理。在接收了 I/O指令的處理器內(nèi)核不具有所有者權(quán)限的情況下,被傳送來I/O指令的處理器內(nèi)核(具有所有者權(quán)限的處理器內(nèi)核)實施S1009的處理,并且向代表MP所在的控制器1001傳送數(shù)據(jù),由代表MP實施S1010此后的處理。
[0147]S13’以后的處理為與實施例1的S13(圖8)以后的處理同樣的處理。此外,在實施例2的控制器1001中,在具有由在S1008中接收的I/O指令指定的卷的所有者權(quán)限的處理器內(nèi)核與接收了 I/O指令的處理器內(nèi)核不同的情況下,具有所有者權(quán)限的處理器內(nèi)核進(jìn)行S13’以后的處理。在圖17中記載有在該情況下的處理流程。但是,作為其他實施方式,也能夠采用接收了 I/O指令的處理器內(nèi)核進(jìn)行S13’以后的處理的方式。
[0148]在將在直到S12為止處理了的I/O指令中包含的S_ID與索引編號建立對應(yīng)關(guān)系時,處理器內(nèi)核參照指令發(fā)行源的服務(wù)器刀片1002用的索引表600,檢索還沒有與任何S_ID建立對應(yīng)關(guān)系的索引編號,選擇任一個索引編號。因為設(shè)為能夠確定出指令發(fā)行源的服務(wù)器刀片1002用的索引表600,所以實施S13’的處理的處理器內(nèi)核在S11’中從接收了 I/O指令的處理器內(nèi)核(代表MP)接收確定指令發(fā)行源的服務(wù)器刀片1002的信息。然后,在與所選的索引編號(索引#602)對應(yīng)的行的S_ID601欄中登記在I/O指令中包含的S_ID。
[0149]S14’的處理與實施例1的S14(圖8)相同,但與實施例1的不同點在于,按每個服務(wù)器刀片1002存在分配表241,因此,更新指令發(fā)行源的服務(wù)器刀片1002用的分配表241。
[0150]最后,在S15中,處理器內(nèi)核將在S13中對S_ID建立了對應(yīng)關(guān)系的索引編號的信息寫入指令發(fā)行源的服務(wù)器刀片1002的ASIC1024內(nèi)的檢索數(shù)據(jù)表3010。此外,如上所述,由于控制器1001的MPU1011(及處理器內(nèi)核10111)不能夠向內(nèi)部RAM10246上的檢索數(shù)據(jù)表3010直接寫入數(shù)據(jù),所以處理器內(nèi)核通過向CTLl用麗1空間10248(或CTL2用麗1空間10249)的規(guī)定地址寫入,來將S_ID的信息反映在檢索數(shù)據(jù)表3010中。
[0151](指令的多重處理)
[0152]在實施例1中,說明了分配模塊33從服務(wù)器3的MPU31接收第一指令,并能夠在進(jìn)行第一指令的發(fā)送目的地的決定處理的期間內(nèi),從MPU31接收第二指令并進(jìn)行處理。實施例2的ASIC1024也同樣,能夠在同一時期處理多個指令,該處理與實施例1的圖9的處理相同。
[0153](在生成LU時的處理、發(fā)生故障時的處理)
[0154]另外,在實施例2的計算機(jī)系統(tǒng)中也同樣實施在實施例1中說明的生成LU時的處理或發(fā)生故障時的處理。由于處理的流程與在實施例1中說明的相同,所以省略詳細(xì)的說明。此