技術領域
本發明的實施方式涉及層級化存儲器系統、存儲器控制器、以及用于去重(deduplication)及存儲器層級化的方法。
背景技術:
近年來,開發出包含存取速度不同的多個存儲器裝置的存儲器系統。在這樣的存儲器系統中,存儲器控制器基于多個存儲器裝置的存儲區域,對利用該存儲器系統的主計算機(主機),提供包含虛擬化的存儲區域的邏輯盤。邏輯盤還被稱作邏輯卷(logical volume)或邏輯單元(logical unit)。
多個存儲器裝置的存儲區域(物理存儲區域)為了管理而被分割為特定的單位區域。特定的單位區域通常被稱作物理區段(physical extent)。存儲器控制器將多個存儲器裝置內的任意的物理區段以與邏輯盤的大小相當的數量分配給該邏輯盤。由此,存儲器控制器構筑邏輯盤。被分配了物理區段的邏輯盤內的區域稱作邏輯區段(logical extent)。
這里,假設上述的存儲器系統包括第一存儲器裝置及第二存儲器裝置。此外,假設第一存儲器裝置其存取速度高,是固態硬盤(SSD)那樣的高速存儲器裝置。另一方面,假設第二存儲器裝置其存取速度比第一存儲器裝置低,是硬盤驅動器(HDD)那樣的低速存儲器裝置。
存儲器控制器基于存取速度的差異來區別第一存儲器裝置及第二存儲器裝置,將第一存儲器裝置及第二存儲器裝置內的物理區段層級性地組合。這樣的動作稱作存儲器層級化,應用該存儲器層級化的存儲器系統稱作層級化存儲器系統。在以下的說明中,將第一存儲器裝置以及第二存儲器裝 置分別稱作高速存儲器裝置以及低速存儲器裝置。
在層級化存儲器系統中,存儲器控制器按每個邏輯區段監視向對應的邏輯區段存取的狀況。存儲器控制器通常使用存取(輸入輸出)統計值作為表示該存取的狀況的指標。存取統計值例如由每個邏輯區段的存取次數(即,用于讀/寫的輸入輸出次數)表示。
存儲器控制器根據每個邏輯區段的存取統計值,動態地變更向邏輯區段的物理區段分配。即,存儲器控制器在對存取的頻率高的邏輯區段分配了低速存儲器裝置內的物理區段的情況下,將高速存儲器裝置內的物理區段再分配給該存取的頻率高的邏輯區段。同樣地,存儲器控制器在對存取的頻率低的邏輯區段分配了高速存儲器裝置內的物理區段的情況下,將低速存儲器裝置內的物理區段再分配給該存取的頻率低的邏輯區段。
這樣,存儲器控制器根據每個邏輯區段的存取統計值,將上位層級的物理區段的數據向下位層級的物理區段動態地再配置,將下位層級的物理區段的數據向上位層級的物理區段動態地再配置。通過該再配置(再分配),存儲器控制器能夠以有限的存儲器資源謀求邏輯盤的性能的優化。
此外,以往,開發出將存儲器系統的有限的存儲容量有效地利用的技術。作為這樣的技術之一,去重技術受到關注。通過去重技術,防止同一內容的數據被重復保存在存儲器系統中。通常,例如以稱作區塊(chunk)的小區域為單位,來判斷該數據的重復。區塊的大小通常小于區段的大小(區段大小)。
近年來,在上述那樣的層級化存儲器系統中也要求去重的應用。但是,應用去重的以往的存儲器系統中,通常以大小比區段小的區塊為單位進行去重。因此,為了在層級化存儲器系統中應用去重,優選取得邏輯盤內的各個邏輯區塊的存取統計值來代替取得邏輯盤內的各個邏輯區段的存取統計值。
于是,在應用了去重的情況下,高速存儲器裝置或低速存儲器裝置內的特定的區塊(物理區塊)的數據被用作邏輯盤內的多個區塊(邏輯區塊)的數據的可能性較高。該情況下,即使假設取得了邏輯盤內的各個邏輯區塊的存取統計值,該存取統計值也不一定表示對應的物理區塊的存取統計值。因而,即使根據這樣的每個邏輯區塊的存取統計值將物理區塊的數據 再配置,也不一定算作反映出向物理區塊存取的狀況的再配置,因而難以謀求邏輯盤的性能的優化。
技術實現要素:
本發明要解決的課題在于,提供一種以邏輯區塊為單位進行數據的去重并且能夠通過反映出向物理區塊存取的狀況的數據的再配置來優化邏輯盤的性能的、層級化存儲器系統、存儲器控制器、以及用于去重及存儲器層級化的方法。
根據實施方式,層級化存儲器系統具備第一存儲器裝置、第二存儲器裝置以及存儲器控制器。上述第一存儲器裝置包含由多個物理區塊構成的存儲區域。上述第二存儲器裝置包含由多個物理區塊構成的存儲區域,并且與上述第一存儲器裝置相比存取速度較低。上述存儲器控制器控制對上述第一存儲器裝置及第二存儲器裝置的存取,并具備結構管理部、輸入輸出控制部、去重控制部、輸入輸出管理部以及層級化控制部。上述結構管理部,根據上述第一存儲器裝置及第二存儲器裝置各自的上述存儲區域,構筑包含由多個邏輯區塊構成的虛擬化的存儲區域的邏輯盤,并將上述邏輯盤提供給利用上述層級化存儲器系統的主計算機。上述輸入輸出控制部,按照來自上述主計算機的存取請求,從上述第一存儲器裝置或第二存儲器裝置讀取數據,或者向上述第一存儲器裝置或第二存儲器裝置寫入數據。上述去重控制部,在按照上述存取請求而第一數據被虛擬地寫入第一邏輯區塊的情況下,判斷與上述第一數據同一內容的第二數據是否保存在上述第一存儲器裝置及第二存儲器裝置的某個中。在上述第二數據保存在上述第一存儲器裝置及第二存儲器裝置的某個中的、至少被分配給第二邏輯區塊的第一物理區塊中的第一情況下,為了去重,上述去重控制部將上述第一物理區塊也分配給上述第一邏輯區塊并且抑制上述第一數據的實際寫入。在上述第二數據沒有保存在上述第一存儲器裝置及第二存儲器裝置的某個中的第二情況下,上述去重控制部將上述第一存儲器裝置及第二存儲器裝置的某一方中的空的第二物理區塊分配給上述第一邏輯區塊,通過上述輸入輸出控制部,使上述第一數據寫入上述第二物理區塊。上述輸入輸出管理部取得輸入輸出統計值,該輸入輸出統計值表示向上述多個邏輯區 塊的每個邏輯區塊存取的狀況。上述層級化控制部根據上述多個邏輯區塊各自的輸入輸出統計值,取得被分配給上述多個邏輯區塊的某個邏輯區塊的物理區塊各自的輸入輸出統計值。上述層級化控制部還基于上述物理區塊各自的輸入輸出統計值執行第一再配置動作以及第二再配置動作的至少一方,上述第一再配置動作用于將分配給第三邏輯區塊的上述第二存儲器裝置內的第三物理區塊的數據再配置給上述第一存儲器裝置內的第四物理區塊,上述第二再配置動作用于將分配給第四邏輯區塊的上述第一存儲器裝置內的第五物理區塊的數據再配置給上述第二存儲器裝置內的第六物理區塊。
根據上述結構的層級化存儲器系統,能夠優化邏輯盤的性能。
附圖說明
圖1是表示一個實施方式的包含層級化存儲器系統的計算機系統的典型的硬件結構的框圖。
圖2是主要表示圖1所示的存儲器控制器的典型的功能結構的框圖。
圖3是表示該實施方式中的物理區段與物理區塊的典型關系、以及該物理區塊與邏輯區塊的典型關系的圖。
圖4是表示圖2所示的地址變換表的數據結構例的圖。
圖5是表示圖2所示的重復管理表的數據結構例的圖。
圖6是表示圖2所示的輸入輸出(IO)統計表的數據結構例的圖。
圖7是表示該實施方式中的去重的例子的圖。
圖8是表示該實施方式中的寫處理的典型順序的流程圖。
圖9是表示圖8所示的寫處理中的新區塊選擇處理的典型順序的流程圖。
圖10是用于說明新區塊選擇處理中所選擇的物理區塊被分配給指定了數據寫入的邏輯區塊的情況下的IO計數的典型接管(takeover)的圖。
圖11是用于說明為了去重而抑制向物理區塊的數據寫入的情況下的IO計數的典型接管的圖。
圖12是表示該實施方式中的讀處理的典型順序的流程圖。
圖13是表示該實施方式中的再配置處理的典型處理順序的流程圖。
圖14是表示圖13所示的再配置處理中的第一再配置動作的典型順序的流程圖。
圖15是表示圖13所示的再配置處理中的第二再配置動作的典型順序的流程圖。
圖16是表示圖13所示的再配置處理中的第三再配置動作的典型順序的流程圖。
圖17是表示該實施方式的第一變形例中的再配置處理的典型處理順序的流程圖
圖18是表示該第一變形例中的第一再配置動作的典型順序的流程圖。
圖19是表示該第一變形例中的第二再配置動作的典型順序的流程圖。
圖20是表示該第一變形例中的第三再配置動作的典型順序的流程圖。
圖21是表示該第一變形例中的再配置的第一例的圖。
圖22是表示該第一變形例中的再配置的第二例的圖。
圖23是表示該第一變形例中的再配置的第三例的圖。
圖24是表示該第一變形例中的再配置的第四例的圖。
圖25是表示該實施方式的第二變形例中的再配置的例子的圖。
圖26是表示該實施方式的第三變形例中的再配置的例子的圖。
符號說明
10…層級化存儲器系統
11…高速存儲器裝置(第一存儲器裝置)
12…低速存儲器裝置(第二存儲器裝置)
13…存儲器控制器
20…主機(主計算機)
137,138…邏輯盤
1331…地址變換表
1332…重復管理表
1333…IO(輸入輸出)統計表
1361…結構管理部
1362…IO控制部
1363…去重控制部
1364…IO管理部
1365…層級化控制部。
具體實施方式
以下,對于實施方式,參照附圖進行說明。
圖1是表示一個實施方式的包含層級化存儲器系統的計算機系統的典型的硬件結構的框圖。圖1所示的計算機系統由層級化存儲器系統10以及主計算機(以下,稱作主機)20構成。即,計算機系統具備單一的主機。但是,計算機系統也可以具備多個主機。
主機20將層級化存儲器系統10提供的邏輯盤用作自身的外部存儲器裝置。主機20例如經由主機接口總線30而與層級化存儲器系統10(更詳細地講,是層級化存儲器系統10的存儲器控制器13)連接。本實施方式中,主機接口總線30是光纖通道(FC)。但是,主機接口總線30也可以是小型計算機系統接口(SCSI)、串行連接SCSI(SAS)、因特網SCSI(iSCSI)、以太網(注冊商標)或串行高級技術附件(SATA)那樣的、FC以外的接口總線。此外,主機20也可以經由存儲區域網絡(SAN)、因特網或內聯網那樣的網絡而與層級化存儲器系統10連接。
主機20是服務器或者客戶端個人計算機(客戶端PC)那樣的物理計算機。在主機20內,用于對層級化存儲器系統10提供的邏輯盤內的數據進行存取的應用程序進行動作。按照該應用程序,主機20經由主機接口總線30利用層級化存儲器系統10。
層級化存儲器系統10具備高速存儲器裝置(第一存儲器裝置)11、低速存儲器裝置(第二存儲器裝置)12和存儲器控制器13。高速存儲器裝置11以及低速存儲器裝置12經由存儲器接口總線14而與存儲器控制器13連接。本實施方式中,存儲器接口總線14是FC(光纖通道)。但是,存儲器接口總線14也可以與主機接口總線30同樣地是FC以外的接口總線。
高速存儲器裝置11例如由具有與硬盤驅動器(HDD)之間的互換性并且存取速度比HDD高速(即存取性能好)的單一的固態硬盤(SSD)構成。另一方面,低速存儲器裝置12例如由單一的HDD構成。
因而,在本實施方式中,低速存儲器裝置12相比于高速存儲器裝置11 存取速度低(即存取性能差)。相對于此,低速存儲器裝置12的存儲容量設為比高速存儲器裝置11的存儲容量大。本實施方式中,高速存儲器裝置11被用作上位層級(高速層級、第一層級)的存儲器裝置,低速存儲器裝置12被用作下位層級(低速層級、第二層級)的存儲器裝置。另外,層級化存儲器系統10也可以具備比低速存儲器裝置12更加低速(低層級)的存儲器裝置(第三層級的存儲器裝置)。
另外,不同于本實施方式,高速存儲器裝置11也可以是搭載有閃存的閃存陣列(flash array)存儲器裝置或被稱作全閃存陣列的存儲器裝置。同樣,低速存儲器裝置12也可以是由多個HDD構成的陣列結構的存儲器裝置。
此外,也可以是,高速存儲器裝置11由FC用的HDD那樣的高速HDD構成,低速存儲器裝置12也可以由SATA用的HDD那樣的低速HDD構成。此外,低速存儲器裝置12也可以是藍光光盤(注冊商標)驅動器或DVD(注冊商標)驅動器那樣的光學式盤驅動器、或者磁帶裝置。此外,在將磁帶裝置用作低速存儲器裝置12的情況下,也可以將光學式盤驅動器用作高速存儲器裝置11。
存儲器控制器13接收從主機20提供的、利用邏輯地址的存取(讀存取或寫存取)的請求(輸入輸出請求),并執行所請求的輸入輸出。該輸入輸出的執行時,存儲器控制器13利用公知的地址變換功能,將邏輯地址變換為物理地址。邏輯地址表示邏輯盤內的地址。物理地址表示包含在高速存儲器裝置11或低速存儲器裝置12中并且與邏輯地址建立了對應的存儲區域的物理位置。存儲器控制器13根據物理地址,對高速存儲器裝置11或低速存儲器裝置12進行存取。
存儲器控制器13具備主機接口控制器(以下稱作HIF控制器)131、存儲器接口控制器(以下稱作SIF控制器)132、內存(memory)133、本地HDD 134、以及CPU 135。
HIF控制器131控制該HIF控制器131與主機20之間的數據傳送(數據傳送協議)。HIF控制器131接收來自主機的輸入輸出請求(讀請求或寫請求),并返回對該輸入輸出請求的應答。該輸入輸出(IO)請求指定從邏輯盤讀取數據、或向該邏輯盤寫入數據(即,向邏輯盤的存取)。HIF 控制器131當從主機20接收到IO(存取)請求時,將該IO請求向CPU 135傳遞。接受到IO請求的CPU 135對該IO請求進行處理。
SIF控制器132從CPU 135接收與CPU 135接收到的來自主機20的IO請求相對應的存取請求(更詳細地講,是對高速存儲器裝置11或低速存儲器裝置12的讀請求或寫請求)。SIF控制器132按照接收到的存取請求,執行向高速存儲器裝置11或低速存儲器裝置12的存取。
內存133是DRAM那樣的可改寫的易失性內存。內存133的存儲區域的一部分用于保存從本地HDD 134載入的控制程序(例如固件程序)。內存133的存儲區域的一部分用于保存從本地HDD 134載入的地址變換表1331、重復管理表1332以及輸入輸出(IO)統計表1333(圖2)。
本地HDD 134中,保存有固件(FW)程序。CPU 135在存儲器控制器13啟動時執行初始程序載入(IPL),從而將本地HDD 134中保存的FW程序的至少一部分載入內存133。IPL保存在ROM或閃式ROM(FROM)那樣的非易失性內存中。
CPU 135按照被載入到內存133中的FW程序,作為結構管理部1361、輸入輸出(IO)控制部1362、去重控制部1363、輸入輸出(IO)管理部1364以及層級化控制部1365(圖2)發揮功能。即,CPU 135通過執行在內存133中保存的FW程序,對層級化存儲器系統10整體進行控制。
本實施方式中,如圖1所示,獨立于主機20而具備存儲器控制器13。但是,存儲器控制器13也可以內置于內存20。該情況下,存儲器控制器13(更詳細地講,是存儲器控制器13的功能)也可以利用主機20具有的操作系統(OS)的功能的一部分來實現。
此外,存儲器控制器13也可以設置在主機20的卡槽上安裝而使用的卡中。此外,也可以是,存儲器控制器13的一部分內置于主機20,該存儲器控制器13的其余部分設置在卡中。此外,主機20、存儲器控制器13、高速存儲器裝置11以及低速存儲器裝置12的一部分或全部也可以收納在1個殼體中。
圖2是主要表示圖1所示的存儲器控制器13的典型功能結構的框圖。存儲器控制器13具備固件(FW)136。通過CPU 135執行FW程序而實現FW 136。FW 136包括結構管理部1361、IO控制部1362、去重控制部1363、 IO管理部1364以及層級化控制部1365。結構管理部1361、IO控制部1362、去重控制部1363、IO管理部1364以及層級化控制部1365的至少1個也可以通過硬件實現。
結構管理部1361對層級化存儲器系統10的存儲器結構進行管理。該結構管理包括:根據高速存儲器裝置11以及低速存儲器裝置12的存儲區域,構筑包含虛擬化的存儲區域(即邏輯存儲區域)的邏輯盤,并將該邏輯盤提供給主機20。
本實施方式中,為了邏輯盤的構筑(以及管理),該邏輯盤的存儲區域(邏輯存儲區域)被分割為稱作邏輯區塊的一定大小的小區域。同樣,高速存儲器裝置11以及低速存儲器裝置12的存儲區域(物理存儲區域)被分割為稱作物理區段的、大小比邏輯區塊大的區域。各物理區段進一步被分割為稱作物理區塊的、與邏輯區塊大小相同的小區域。即,各物理區段由一定數量的連續的物理區塊構成。
物理區段的大小(即區段大小)例如是8兆字節(MB),即8,388,608字節(B)。另一方面,邏輯區塊以及物理區塊的大小(即區塊大小)例如是4千字節(KB),即4,096字節(B)。但是,區段大小以及區塊大小分別不限于8MB以及4KB。
結構管理還包括:將高速存儲器裝置11以及低速存儲器裝置12的存儲區域內的物理區塊分配給邏輯盤的存儲區域內的邏輯區塊,以及對該分配的狀態進行管理。該分配的狀態的管理中使用地址變換表1331。
IO控制部1362按照來自主機20的用于數據讀取的IO請求(存取),從高速存儲器裝置11或低速存儲器裝置12讀取數據。此外,IO控制部1362按照來自主機20的用于數據寫入的IO請求,向高速存儲器裝置11或低速存儲器裝置12寫入數據。
去重控制部1363以物理區塊為單位,去除在多個物理區塊中保存同一內容的數據的情況,即所謂的數據重復。為此,在數據(第一數據)被虛擬地寫入某邏輯區塊(第一邏輯區塊)的情況下,去重控制部1363判斷與該數據同一內容的數據是否已經保存在高速存儲器裝置11或低速存儲器裝置12中。該判斷被稱作重復判斷,例如,通過將第一數據的散列值與在高速存儲器裝置11以及低速存儲器裝置12內的各個物理區塊中保存的數據 的散列值進行比較,來進行該判斷。利用重復管理表1332管理在各個物理區塊中保存的數據的散列值。
這里,假設高速存儲器裝置11或低速存儲器裝置12內的某數據(第二數據)的散列值與第一數據的散列值一致,并且第二數據保存在分配給與第一邏輯區塊不同的至少1個邏輯區塊(例如第二邏輯區塊)的第一物理區塊中。該情況下,去重控制部1363將第1物理區塊也分配給第一邏輯區塊,并且抑制將第一數據向高速存儲器裝置11或低速存儲器裝置12實際地寫入。向第一邏輯區塊的存取通過物理地存取第1物理區塊而實現。向第二邏輯區塊的存取也通過物理地存取第1物理區塊而實現。
IO管理部1364管理與來自主機20的IO請求對應的IO。該IO管理例如包括取得IO(存取)統計值(以下稱作IO計數),該IO(存取)統計值表示一定期間中向各邏輯區塊的存取的狀況。利用IO統計表1333管理每個邏輯區塊的IO計數。
層級化控制部1365將低速存儲器裝置12內的存取頻率較高的物理區塊的數據再配置給高速存儲器裝置11內的物理區塊。此外,層級化控制部1365將高速存儲器裝置11內的存取頻率較低的物理區塊的數據再配置給低速存儲器裝置12內的物理區塊。為了進行該再配置,層級化控制部1365根據每個邏輯區塊的IO計數,取得每個物理區塊的IO計數。特別是,在為了去重而將單一的物理區塊分配為多個邏輯區塊的情況下,層級化控制部1365取得該多個邏輯區塊的IO計數的合計值作為該單一的物理區塊的IO計數。單一的物理區塊被分配給多個邏輯區塊也稱作單一的物理區塊被多個邏輯區塊參照。
圖3是表示本實施方式中的物理區段與物理區塊的典型關系、以及該物理區塊與邏輯區塊的典型關系。如圖3所示,高速存儲器裝置11的存儲區域被分割為包含物理區段PE0_i的m個物理區段PE0_0~PE0_m-1。此外,低速存儲器裝置12的存儲區域被分割為包含物理區段PE1_j的n個物理區段PE1_0~PE1_n-1。即,高速存儲器裝置11以及低速存儲器裝置12分別具備物理區段PE0_0~PE0_m-1以及物理區段PE1_0~PE1_n-1。
物理區段PE0_i例如由存儲器標識符(ID)(=SID=SID0=0)和區 段(物理區段)ID(=PEID=PEIDi)表示。SID=SID0=0表示高速存儲器裝置11。PEID=PEIDi是SID=SID0=0所示的存儲器裝置(即高速存儲器裝置11)內的唯一(unique)ID,表示該存儲器裝置內的第i個物理區段。
物理區段PE1_j例如由存儲器ID(=SID=SID1=1)和區段ID(=PEID=PEIDj)表示。SID=SID1=1表示低速存儲器裝置12。PEID=PEIDj是SID=SID1=1所示的存儲器裝置(即低速存儲器裝置12)內的唯一ID,表示該存儲器裝置內的第j個物理區段。
物理區段PE0_i被分割為包含物理區塊PCi_x的p個物理區塊PCi_0~PCi_p-1,物理區段PE1_j被分割為包含物理區塊PCj_y的p個物理區塊PCj_0~PCj_p-1。即,物理區段PE0_i以及PE1_j分別具備物理區塊PCi_0~PCi_p-1以及PCj_0~PCj_p-1。
物理區段PE0_i中的物理區塊PCi_0~PCi_p-1的位置(即相對位置)由物理區段PE0_i內的偏移OFST0~OFSTp-1表示。同樣,物理區段PE1_j中的物理區塊PCj_0~PCj_p-1的位置(相對位置)由物理區段PE1_j內的偏移OFST0~OFSTp-1表示。
因而,例如,物理區塊PCi_x由存儲器ID(=SID=SID0=0)、區段ID(=PEID=PEIDi)和偏移OFSTx表示。同樣,物理區塊PCj_y由存儲器ID(=SID=SID1=1)、區段ID(=PEID=PEIDj)和偏移OFSTy表示。即,存儲器ID、區段ID和偏移的組表示物理地址。本實施方式中,物理區塊PCi_x以及PCj_y分別還由層級化存儲器系統10內的唯一物理區塊ID(PCIDα以及PCIDβ)表示。
圖3中還示出2個邏輯盤137及138。邏輯盤137及138由存儲器控制器13內的結構管理部1361構筑,并被提供給主機20。邏輯盤137的存儲區域被分割為包含邏輯區塊LC0_u的多個邏輯區塊,邏輯盤138的存儲區域被分割為包含邏輯區塊LC1_v的多個邏輯區塊。
邏輯區塊LC0_u由邏輯盤ID(=LDID=LDID0=0)和邏輯塊(logical block)地址(LBA=LBAr)表示,邏輯區塊LC1_v由邏輯盤ID(=LDID=LDID1=1)和邏輯塊地址(LBA=LBAs)表示。LDID=LDID0=0表示邏輯盤137,LDID=LDID1=1表示邏輯盤138。LBA=LBAr表示邏輯盤 137中的邏輯區塊LC0_u的開頭位置的邏輯塊地址,LBA=LBAs表示邏輯盤138中的邏輯區塊LC1_v的開頭位置的邏輯塊地址。即,邏輯盤ID(LDID)和邏輯塊地址(LBA)的組表示邏輯地址。
圖3的例子中,物理區塊PCi_x如箭頭301所示那樣被分配給邏輯區塊LC1_v。此外,物理區塊PCj_y如箭頭302所示那樣被分配給邏輯區塊LC0_u。
圖4表示圖2所示的地址變換表1331的數據結構例。地址變換表1331由2個表1331a及1331b構成。表1331a的各條目具有邏輯盤ID字段(field)、LBA字段以及物理區塊ID字段,用于保持邏輯盤ID(LDID)、LBA以及物理區塊ID(PCID)的組。即,表1331a的各條目中,邏輯盤ID以及LBA的組與物理區塊ID建立了對應。
圖4中,在表1331a的開頭的條目的邏輯盤ID字段、LBA字段以及物理區塊ID字段中保持有LDID0、LBA0以及PCID0。該情況下,表1331a的開頭的條目表示對LDID0及LBA0所示的邏輯盤137內的邏輯區塊分配了PCID0所示的物理區塊。在表1331a的第2個條目的邏輯盤ID字段、LBA字段以及物理區塊ID字段中,保持有LDID0、LBA1以及無效值。圖4中,無效值用記號“-”表示,表示對應的有效的信息(這里是PCID)為未設定。該情況下,表1331a的第2個條目表示對LDID0及LBA1所示的邏輯盤137內的邏輯區塊沒有分配物理區塊。另外,為了表示有效的信息(PCID)為未設定,也可以將對應的字段(物理區塊ID字段)設定為空欄。
表1331b的各條目具有物理區塊ID字段、存儲器ID字段、區段ID字段以及偏移字段,用于保持物理區塊ID(PCID)、存儲器ID(SID)、區段ID(PEID)以及偏移(OFST)的組。即,表1331b的各條目中,物理區塊ID與存儲器ID、區段ID以及偏移的組建立了對應。
圖4中,在表1331b的開頭的條目的物理區塊ID字段、存儲器ID字段、區段ID字段以及偏移字段中,保持有PCID0、SID0、PEID0以及OFST0。該情況下,表1331b的開頭的條目表示由PCID0所示的物理區塊是由SID0、PEID0以及OFST0所示的高速存儲器裝置11內的物理區塊。從上述的地址變換表1331的數據結構可以明確,地址變換表1331用于將由邏輯盤ID 以及LBA的組表示的邏輯區塊的地址(邏輯地址)變換為由存儲器ID、區段ID以及偏移的組表示的物理區塊的地址(物理地址)。
圖5表示圖2所示的重復管理表1332的數據結構例。重復管理表1332的各條目具有物理區塊ID字段、散列值字段以及重復計數字段,用于保持物理區塊ID(PCID)、散列值(H)以及重復計數(DCNT)的組。H表示由PCID所示的物理區塊的數據的散列值。即,本實施方式中,物理區塊的數據的散列值作為用來確定該數據的內容的代表值來使用。此外,在散列值的計算中,使用如SHA-256那樣的公知的散列函數。
圖5中,在重復管理表1332的開頭條目的物理區塊ID字段、散列值字段以及重復計數字段中,保持有PCID0、Ha以及DCNTc。該情況下,重復管理表1332的開頭的條目表示,PCID0所示的物理區塊的數據的散列值為Ha,該數據的重復計數(即重復數)為DCNTc。重復計數=DCNTc表示由PCID0所示的物理區塊被分配給DCNTc個邏輯區塊,即被DCNTc個邏輯區塊參照。
重復管理表1332的第2個條目的物理區塊ID字段、散列值字段以及重復計數字段中,保持有PCID1、無效值(H=“-”)以及0(DCNT=0)。該情況下,重復管理表1332的第2個條目表示,PCID1所示的物理區塊中不存在有效的數據,即PCID1所示的物理區塊為空區塊。
圖6表示圖2所示的IO統計表1333的數據結構例。IO統計表1333的各條目具有邏輯盤ID字段、LBA字段以及IO計數字段,用于保持邏輯盤ID(LDID)、LBA以及IO計數的組。IO計數表示對由LDID及LBA的組所示的邏輯區塊存取的次數。IO統計表1333例如在用于由層級化控制部1365進行的數據再配置的處理(再配置處理)中使用。
本實施方式中,在再配置處理中使用的IO統計表1333的內容直到下一再配置處理開始為止被作為舊IO統計表例如保存在本地HDD 134中。但是,在IO統計表1333的各條目中也可以追加舊IO計數字段。該舊IO計數字段用于將最新的再配置處理結束時的IO計數作為舊IO計數進行保持。
圖7表示本實施方式的去重的例子。圖7中,在層級化存儲器系統10的高速存儲器裝置11以及低速存儲器裝置12內,多個矩形框用實線表示。 用實線表示的矩形框表示物理區塊,該矩形框內的字符表示由該矩形框所示的物理區塊中保存的數據。圖7中,還示出邏輯盤137及138。在邏輯盤137及138內,多個矩形框用虛線表示。用虛線表示的矩形框表示邏輯區塊,該矩形框內的字符表示由該矩形框所示的邏輯區塊中虛擬地保存的數據。圖7的例子中,在高速存儲器裝置11中保存有數據A的物理區塊如虛線的箭頭所示那樣,被分配給邏輯盤137內的1個邏輯區塊和邏輯盤138內的2個邏輯區塊。由此,防止數據A重復保存在高速存儲器裝置11或低速存儲器裝置12中的情況。
接著,對本實施方式的動作進行說明。首先,參照圖8說明存儲器控制器13的HIF控制器131接收到來自主機20的寫入命令WC的情況下執行的寫入處理。圖8是表示本實施方式的寫入處理的典型順序的流程圖。
通常,寫入命令WC(以及后述的讀取命令的每一個)包含邏輯盤ID(=LDID=LDIDa)、LBA(=LBAb)以及數據傳送大小,以具有區塊(chunk)大小的整數倍大小的塊(block)為單位來表示數據傳送大小。本實施方式中為了說明的簡略化,假設塊大小等于區塊大小,并且數據傳送大小等于1塊的大小(即1區塊的大小)。
存儲器控制器13的去重控制部1363計算按照寫入命令WC而應寫入的寫入數據WD的散列值Hc(步驟S1)。接著,去重控制部1363基于散列值Hc來參照重復管理表1332,從而執行用于從重復管理表1332中搜索包含與散列值Hc相等的散列值的條目(目標條目)的動作(步驟S2)。并且,去重控制部1363判斷是否搜索到目標條目(步驟S3)。
如果沒有搜索到目標條目(步驟S3的否),則去重控制部1363判斷為,與寫入數據WD同一內容的數據不存在于高速存儲器裝置11以及低速存儲器裝置12的任一個的物理區塊中,因而不需要進行與寫入數據WD相關的去重。該情況下,去重控制部1363如以下那樣執行用于確定對寫入數據WD應被虛擬地寫入的邏輯區塊LCc(即被指定了數據寫入的邏輯區塊LCc)分配的物理區塊的動作(步驟S4)。邏輯區塊LCc由寫入命令WC中包含的(寫入命令WC指定的)LDIDa以及LBAb的組(邏輯地址)指定。
首先,去重控制部1363基于上述的LDIDa以及LBAb的組,參照地 址變換表1331內的表1331a。并且,去重控制部1363從表1331a中搜索與LDIDa及LBAb的組建立了對應的有效的物理區塊ID,從而確定對由LDIDa及LBAb的組指定的邏輯區塊LCc分配的物理區塊。
接著,去重控制部1363如以下那樣判斷是否確定出被分配給邏輯區塊LCc的物理區塊(步驟S5)。首先,如果沒有搜索出與LDIDa及LBAb的組建立了對應的有效的物理區塊ID,則去重控制部1363判斷為對邏輯區塊LCc沒有分配有物理區塊。該情況下,去重控制部1363判斷為無法確定被分配給邏輯區塊LCc的物理區塊(步驟S5的否)。
相對于此,如果搜索到有效的物理區塊ID,則去重控制部1363基于搜索到的物理區塊ID,對地址變換表1331內的表1331b進行參照。由此,去重控制部1363取得與搜索到的物理區塊ID建立了對應的存儲器ID、區段ID以及偏移的組。即,去重控制部1363將LDIDa以及LBAb的組(邏輯地址)變換為存儲器ID、區段ID以及偏移的組(物理地址)。存儲器ID、區段ID以及偏移的組表示被分配給由LDIDa以及LBAb的組指定的邏輯區塊LCc的物理區塊PCd。該情況下,去重控制部1363判斷為確定出被分配給邏輯區塊LCc的物理區塊(這里是物理區塊PCd)(步驟S5的是)。
去重控制部1363在確定出物理區塊PCd的情況下(步驟S5的是),在重復管理表1332中,參照與該確定出的物理區塊PCd的物理區塊ID建立了對應的條目中的重復計數DCNTd(步驟S6)。在物理區塊PCd至少被分配給邏輯區塊LCc的情況下,重復計數DCNTd為1以上。
接著,去重控制部1363判斷重復計數DCNTd是否為1(步驟S7)。如果重復計數DCNTd為1(步驟S7的是),則去重控制部1363判斷為所確定的物理區塊PCd僅被分配給邏輯區塊LCc。即,去重控制部1363判斷為,當前保存在物理區塊PCd中的數據不被邏輯區塊LCc以外的邏輯區塊參照,與邏輯區塊LCc以外的邏輯區塊中虛擬地保存著的數據不同。該情況下,去重控制部1363通過IO控制部1362使寫入數據WD寫入所確定的物理區塊PCd中(步驟S8)。于是,IO管理部1364將IO統計表1333中與邏輯區塊LCc(更詳細地講,是表示邏輯區塊LCc的LDIDa以及LBAb的組)建立了對應的條目(即,包含LDIDa以及LBAb的組的條目)中的IO計數遞增1(步驟S9)。由此,寫入處理結束。
相對于此,若重復計數DCNTd不為1(步驟S7的否),即重復計數DCNTd超過1,則去重控制部1363判斷為所確定的物理區塊PCd還被分配給邏輯區塊LCc以外的至少1個邏輯區塊。即,去重控制部1363判斷為,當前保存在物理區塊PCd中的數據還被邏輯區塊LCc以外的至少1個邏輯區塊參照。該情況下,去重控制部1363判斷為,寫入數據WD應被寫入與物理區塊PCd不同的空的物理區塊。
因此,去重控制部1363將重復計數DCNTd遞減1(步驟S10)。并且,去重控制部1363執行用于從高速存儲器裝置11以及低速存儲器裝置12的某一個中選擇新分配給邏輯區塊LCc的空物理區塊的新區塊選擇處理(步驟S11)。本實施方式中,假設選擇了物理區塊PCe。此時,重復管理表1332中與物理區塊PCe的物理區塊ID建立了對應的條目的散列值字段以及重復計數字段的內容分別為無效值(“-”)以及0、即初始值。
去重控制部1363通過IO控制部1362使寫入數據WD寫入所選擇的物理區塊PCe中(步驟S12)。并且,去重控制部1363對在重復管理表1332中與物理區塊PCe(新區塊)的物理區塊ID建立了對應的條目的散列值字段以及重復計數字段,分別設定所計算出的散列值(即寫入數據WD的散列值)Hc以及1(步驟S13)。即,去重控制部1363將重復管理表1332中與新區塊建立了對應的條目中的散列值以及重復計數分別從無效值(“-”)以及0更新為Hc以及1。
接著,去重控制部1363更新與邏輯區塊LCc建立了對應的地址變換表1331內條目的內容(步驟S14)。即,去重控制部1363在地址變換表1331的表1331a中將包含表示邏輯區塊LCc的LDIDa及LBAb的組在內的條目中的物理區塊ID從物理區塊PCd的物理區塊ID更新為物理區塊PCe的物理區塊ID。于是,IO管理部1364將IO統計表1333中與邏輯區塊LCc建立了對應的條目中的IO計數遞增1(步驟S9)。
另一方面,如果搜索到目標條目(步驟S3的是),則去重控制部1363判斷為,與寫入數據WD同一內容的數據已經存在于高速存儲器裝置11以及低速存儲器裝置12的某個的物理區塊中,因而需要進行與寫入數據WD相關的去重。該例中,假設與寫入數據WD同一內容的數據已經存在于物理區塊PCf中。
該情況下,去重控制部1363為了進行去重而抑制由IO控制部1362進行的寫入數據WD向新物理區塊的寫入。并且,去重控制部1363將從重復管理表1332中搜索出的條目(即與物理區塊PCf建立了對應的條目)中的重復計數遞增1(步驟S15)。
去重控制部1363若執行步驟S15,則向步驟S14前進。在步驟S14中,去重控制部1363更新與邏輯區塊LCc建立了對應的地址變換表1331內條目的內容。即,去重控制部1363在地址變換表1331的表1331a中,對包含表示邏輯區塊LCc的LDIDa以及LBAb的組在內的條目的物理區塊ID字段,設定物理區塊PCf的物理區塊ID。這樣,物理區塊PCf被新分配給邏輯區塊LCc,其結果,被分配了物理區塊PCf的(即參照物理區塊PCf的)邏輯區塊的數量遞增1。若通過去重控制部1363執行步驟S14,則IO管理部1364將IO統計表1333中與邏輯區塊LCc建立了對應的條目中的IO計數遞增1(步驟S9)。
這里,假設在步驟S3的判斷為是從而如上述那樣執行步驟S15以及S14的情況下,與物理區塊PCf不同的物理區塊例如物理區塊PCd已經被分配給邏輯區塊LCc。該情況下,去重控制部1363在步驟S14中除了上述的將地址變換表1331進行更新的處理以外,還如以下那樣執行以下的將重復管理表1332進行更新的處理。
首先,將與物理區塊PCd建立了對應的重復管理表1332內條目稱作特定條目。由于在步驟S15及S14即將被執行時物理區塊PCd被分配給邏輯區塊LCc,從而特定條目中的重復計數為1以上。如果特定條目中的重復計數為1,則去重控制部1363將該特定條目中的散列值以及重復計數分別更新為無效值(“-”)以及0。相對于此,如果特定條目中的重復計數超過1,則去重控制部1363將該重復計數遞減1。
接著,假設去重控制部1363無法確定出被分配給邏輯區塊LCc的物理區塊(步驟S5的否)。該情況下,去重控制部1363判斷為沒有對邏輯區塊LCc分配有效的物理區塊。因此,去重控制部1363選擇應向邏輯區塊LCc新分配的空的物理區塊(新區塊)(步驟S16)。本實施方式中,將低速存儲器裝置12內的空的物理區塊選擇為新區塊。但是,也可以將高速存儲器裝置11內的空的物理區塊選擇為新區塊。此外,這樣的選擇規則例如 也可以由用戶經由主機20預先指定。本實施方式中,假設選擇了物理區塊PCg。
去重控制部1363通過IO控制部1362使寫入數據WD寫入所選擇的物理區塊PCg中(步驟S12)。并且,去重控制部1363對在重復管理表1332中與物理區塊PCg(新區塊)的物理區塊ID建立了對應的條目的散列值字段以及重復計數字段,分別設定所計算出的散列值Hc以及1(步驟S13)。
并且,去重控制部1363更新與邏輯區塊LCc建立了對應的地址變換表1331內條目的內容(步驟S14)。即,去重控制部1363在地址變換表1331的表1331a中,將包含表示邏輯區塊LCc的LDIDa及LBAb的組的條目中的物理區塊ID(=“-”)更新為物理區塊PCg的物理區塊ID。于是,IO管理部1364將IO統計表1333中與邏輯區塊LCc建立了對應的條目中的IO計數遞增1(步驟S9)。
接著,對于圖8所示的寫入處理中的新區塊選擇處理(步驟S11),參照圖9進行說明。圖9是表示新區塊選擇處理的典型順序的流程圖。
首先,去重控制部1363在IO統計表1333中取得與表示邏輯區塊LCc(即被指定了數據寫入的邏輯區塊LCc)的LDIDa及LBAb的組建立了對應的條目中的輸入輸出計數(=IOCNTnew)(步驟S21)。接著,去重控制部1363從最新的再配置處理結束時的、低速存儲器裝置12內的物理區塊的IO計數之中選擇最大的IO計數(=IOCNTmax)(步驟S22)。去重控制部1363通過計算低速存儲器裝置12內的每個物理區塊被分配的全部邏輯區塊的IO計數的合計值,來取得該每個物理區塊的IO計數。去重控制部1363在合計值的計算中使用最新的再配置處理結束時的IO統計表1333即舊IO統計表。
接著,去重控制部1363比較IOCNTnew以及IOCNTmax的大小,例如判斷IOCNTnew是否比IOCNTmax大(步驟S23)。如果IOCNTnew比IOCNTmax大(步驟S23的是),則去重控制部1363判斷為對邏輯區塊LCc的存取頻率足夠高。該情況下,去重控制部1363將高速存儲器裝置11內的空的物理區塊選擇為新區塊(步驟S24)。并且,去重控制部1363結束新區塊選擇處理(圖8的步驟S11)。
相對于此,如果IOCNTnew不比IOCNTmax大(步驟S23的否),則 去重控制部1363判斷為對邏輯區塊LCc的存取頻率低。該情況下,去重控制部1363將低速存儲器裝置12內的空的物理區塊選擇為新區塊(步驟S25)。并且,去重控制部1363結束新區塊選擇處理(圖8的步驟S11)。
接著,參照圖10,說明去重控制部1363將新區塊選擇處理(圖8的步驟S11)中選擇為新區塊的物理區塊分配給被指定了數據寫入的邏輯區塊的情況下的IO計數的典型接管。圖10中,物理區塊PCa如箭頭101、102以及103所示那樣,被分配給邏輯區塊LCa、LCb以及LCc。物理區塊PCa中保存有數據A。該情況下,邏輯區塊LCa、LCb以及LCc中虛擬地保存有數據A。
本實施方式中,物理區塊PCa的IOCNT由被分配了該物理區塊PCa的邏輯區塊LCa、LCb以及LCc的IOCNT的合計值表示。圖10中,邏輯區塊LCa、LCb以及LCc的IO計數(IOCNT)分別為3、1以及2。因而,物理區塊PCa的IOCNT為6。
在這樣的狀態下,假設數據B向邏輯區塊LCc的寫入如箭頭104所示那樣被請求。并且,圖9的流程圖所示的新區塊選擇處理中,假設物理區塊PCb被選擇為應向邏輯區塊LCc分配的新區塊。該情況下,物理區塊PCa的分配目的地如箭頭105所示那樣減少為邏輯區塊LCa以及LCb這2個。并且,對于邏輯區塊LCc,取代物理區塊PCa而將物理區塊PCb如箭頭106所示那樣分配邏輯區塊LCc。
物理區塊PCb中被寫入數據B。因而數據B被虛擬地寫入邏輯區塊LCc。由此,邏輯區塊LCc的IOCNT從2遞增為3。該情況下,層級化控制部1365將該邏輯區塊LCc的遞增后的IOCNT(=3)接管作為物理區塊PCb的IOCNT。即,物理區塊PCb的IOCNT接管邏輯區塊LCc的遞增后的IOCNT(=3)。另一方面,物理區塊PCa的IOCNT減少為邏輯區塊LCa及LCb的IOCNT(3及1)的合計值(=4)。
接著,參照圖11來說明為了去重而抑制向物理區塊的數據寫入的情況、即對物理區塊分配的邏輯區塊的數量遞增1的情況下的IO計數的典型接管。圖11中,假設物理區塊PCb處于圖10中的數據B的寫入后的狀態。該狀態下,物理區塊PCa如箭頭101及102所示那樣被分配給邏輯區塊LCa及LCb,物理區塊PCb如箭頭106所示那樣被分配給邏輯區塊LCc。在物 理區塊PCa中保存有數據A,在物理區塊PCb中保存有數據B。該情況下,在邏輯區塊LCa及LCb中虛擬地保存有數據A,在邏輯區塊LCc中虛擬地保存有數據B。物理區塊PCa的IOCNT由被分配了該物理區塊PCa的邏輯區塊LCa及LCb的IOCNT(3及1)的合計值(4)表示。另一方面,物理區塊PCc的IOCNT由被分配了該物理區塊PCc的邏輯區塊LCc的IOCNT(3)表示。
在這樣的狀態下,假設數據A向邏輯區塊LCc的寫入如箭頭107所示那樣被請求。數據A已經存在于物理區塊PCa中。因此,去重控制部1363為了去重而抑制向當前被分配給邏輯區塊LCc的物理區塊PCb的數據A的寫入。該情況下,物理區塊PCa的分配目的地如箭頭108所示那樣增加為邏輯區塊LCa、LCb以及LCc這3個。即,物理區塊PCa如箭頭109所示那樣還被分配給邏輯區塊LCc。由此,數據A雖不被寫入新的物理區塊,但被虛擬地寫入邏輯區塊LCc。因而,邏輯區塊LCc的IOCNT從3遞增為4。該情況下,層級化控制部1365將對請求寫入數據A之前的物理區塊PCa的IOCNT(4)加上邏輯區塊LCc的遞增后的IOCNT(4)而得到的值(8)接管作為該物理區塊PCa的IOCNT。即,物理區塊PCa的IOCNT接管請求寫入數據A之前的值(4)與邏輯區塊LCc的遞增后的IOCNT(4)的合計值(8)。由此,物理區塊PCa的IOCNT增加邏輯區塊LCc的遞增后的IOCNT的值(4)。
接著,參照圖12說明在本實施方式中HIF控制器131接收到來自主機20的讀取命令RC的情況下執行的讀取處理。圖12是表示本實施方式的讀取處理的典型順序的流程圖。
首先,假設讀取命令RC指定了來自邏輯區塊LCh的數據讀取(虛擬的數據讀取)。該情況下,存儲器控制器13的IO控制部1362,與在上述的寫入處理中由去重控制部1363執行的步驟S4(圖8)同樣地確定被分配給邏輯區塊LCh的物理區塊(步驟S31)。
接著,IO控制部1362從所確定的物理區塊中讀取數據(步驟S32)。被讀取的數據通過HIF控制器131傳送至主機20。于是,IO管理部1364將IO統計表1333中與邏輯區塊LCh建立了對應的條目中的IO計數遞增1(步驟S33)。由此,讀取處理結束。
接著,參照圖13說明在本實施方式中用于將物理區塊的數據進行再配置的再配置處理。圖13是表示本實施方式中的再配置處理的典型處理順序的流程圖。該再配置處理按預先決定的調度(schedule)(例如定期地)執行。但是,再配置處理也可以在例如由用戶經由主機20指定的定時執行。
下面,假設應執行再配置處理的定時到來。于是,層級化控制部1365如以下那樣執行再配置處理。首先,層級化控制部1365將全部的有效物理區塊以被分配了該物理區塊的邏輯區塊的IO計數(IOCNT)的合計值的降序排序(步驟S41)。這里,關于用于取得IO計數的合計值的方法,以物理區塊為PCa、物理區塊PCa的物理區塊ID為PCIDa的情況為例進行說明。
首先,層級化控制部1365從重復管理表1332中與物理區塊ID=PCIDa建立了對應的條目取得重復計數DCNTa。這里,假設重復計數DCNTa超過1。層級化控制部1365在地址變換表1331的表1331a中參照與物理區塊ID=PCIDa建立了對應的全部條目。與物理區塊ID=PCIDa建立了對應的條目的數量與重復計數DCNTa一致。
層級化控制部1365從與物理區塊ID=PCIDa建立了對應的全部條目(DCNTa個條目)中,取得被分配了物理區塊PCa的全部邏輯區塊(DCNTa個邏輯區塊)的邏輯盤ID及LBA的組。層級化控制部1365在IO統計表1333中,從與取得的全部邏輯區塊的邏輯盤ID及LBA的組分別建立了對應的條目中取得IO計數。并且,層級化控制部1365計算所取得的IO計數的合計值,作為物理區塊PCa的IO計數。另外,重復計數DCNTa為1的情況下,地址變換表1331內的僅1條目與物理區塊ID=PCIDa建立了對應。該情況下,層級化控制部1365取得IO統計表1333中對與上述的1條目中的邏輯盤ID及LBA的組建立了對應的條目設定的IO計數,作為物理區塊PCa的IO計數。
層級化控制部1365若執行步驟S41,則將實際使用量Cau與許可量Cpu進行比較(步驟S42)。實際使用量Cau是指高速存儲器裝置11中實際被使用的(即被分配給邏輯區塊的群的物理區塊的群的)容量(第一容量)。許可量Cpu是指高速存儲器裝置11中許可使用的(上限的)容量(第二容量)。
接著,層級化控制部1365基于上述的比較結果,判斷實際使用量Cau是否等于許可量Cpu(步驟S43)。如果實際使用量Cau不等于許可量Cpu(步驟S43的否),則層級化控制部1365判斷實際使用量Cau是否小于許可量Cpu(步驟S44)。
如果實際使用量Cau小于許可量Cpu(步驟S44的是),則層級化控制部1365重復第一再配置動作(步驟S46)直到第一條件成立(步驟S45)。接著,層級化控制部1365結束再配置處理。第一條件是,未達到許可量Cpu的使用量Cau變得與該許可量Cpu相等。關于第一再配置動作在后面敘述。
相對于此,如果實際使用量Cau不是小于許可量Cpu(步驟S44的否)從而實際使用量Cau超過許可量Cpu,則層級化控制部1365重復第二再配置動作(步驟S48)直到第二條件成立(步驟S47)。接著,層級化控制部1365結束再配置處理。第二條件是,超過許可量Cpu的使用量Cau變得與該許可量Cpu相等。關于第二再配置動作在后面敘述。
另一方面,如果使用量Cau等于許可量Cpu(步驟S43的是),則層級化控制部1365重復第三再配置動作(步驟S50)直到第三條件成立(步驟S49)。接著,層級化控制部1365結束再配置處理。第三條件是,高速存儲器裝置11內的有效物理區塊的IO計數中的最小的IO計數成為低速存儲器裝置12內的有效物理區塊的IO計數中的最大的IO計數以上。有效物理區塊是指被分配給邏輯區塊的物理區塊即非空的物理區塊。關于第三再配置動作在后面敘述。
接著,參照圖14說明圖13所示的再配置處理中的第一再配置動作(步驟S46)。圖14是表示第一再配置動作的典型順序的流程圖。首先,層級化控制部1365根據上述的排序處理(圖13的步驟S41)的結果,從低速存儲器裝置12內的未選擇的物理區塊的群中,選擇IO計數為最大的物理區塊(步驟S51)。
接著,層級化控制部1365將所選擇的物理區塊內的數據向高速存儲器裝置11內的空的物理區塊進行拷貝(再配置)(步驟S52)。這里,假設拷貝源的物理區塊(即所選擇的物理區塊)的物理區塊ID為PCIDcs,拷貝目的地的物理區塊的物理區塊ID為PCIDcd。此外,假設拷貝目的地的 物理區塊被分配給邏輯區塊LCu_w。該情況下,地址變換表1331的表1331a中與邏輯區塊LCu_w(表示邏輯區塊LCu_w的邏輯盤ID及LBA的組)建立了對應的條目的物理區塊ID字段中設定有PCIDcd。
層級化控制部1365若執行步驟S52,則將地址變換表1331中的、與拷貝源的物理區塊(即所選擇的物理區塊)建立了對應的條目的內容如以下那樣更新(步驟S53)。首先,層級化控制部1365確定地址變換表1331內的表1331a中的、與拷貝源的物理區塊建立了對應的條目(即設定有PCIDcs的條目)。并且,層級化控制部1365將所確定的條目中的物理區塊ID字段的內容從PCIDcs變更為PCIDcd。由此,被分配給邏輯區塊LCu_w的物理區塊從拷貝源的物理區塊變更為拷貝目的地的物理區塊。
此外,層級化控制部1365通過去重控制部1363更新重復管理表1332中的、與拷貝源的物理區塊以及拷貝目的地的物理區塊建立了對應的條目的內容(步驟S54)。即,去重控制部1363將重復管理表1332中的、與拷貝源的物理區塊建立了對應的條目的散列值字段以及重復計數字段的內容交換為重復管理表1332中的、與拷貝目的地的物理區塊建立了對應的條目的散列值字段以及重復計數字段的內容(無效值以及0)。這樣,層級化控制部1365結束第一再配置動作(圖13的步驟S46)。另外,步驟S54也可以在步驟S53之前執行。
接著,參照圖15說明圖13所示的再配置處理中的第二再配置動作(步驟S48)。圖15是表示第二再配置動作的典型順序的流程圖。首先,層級化控制部1365根據上述的排序處理的結果,從高速存儲器裝置11內的未選擇的物理區塊的群中,選擇IO計數為最小的物理區塊(步驟S61)。
接著,層級化控制部1365將所選擇的物理區塊內的數據向低速存儲器裝置12內的空的物理區塊進行拷貝(步驟S62)。接著,層級化控制部1365與上述的步驟S53(圖14)同樣地更新地址變換表1331中的、與拷貝源的物理區塊建立了對應的條目的內容(步驟S63)。
接著,層級化控制部1365使重復管理表1332中的、與拷貝源的物理區塊以及拷貝目的地的物理區塊建立了對應的條目的內容,通過去重控制部1363而與上述的步驟S54(圖14)同樣地更新(步驟S64)。這樣,層級化控制部1365結束第二再配置動作(圖13的步驟S48)。
接著,參照圖16說明圖13所示的再配置處理中的第三再配置動作(步驟S50)。圖16是表示第三再配置動作的典型順序的流程圖。第三再配置動作由與第一再配置動作及第二再配置動作相當的2個再配置動作構成。
首先,層級化控制部1365執行與第一再配置動作(圖14的步驟S51~S54)相當的再配置動作(步驟S71~S74)。如有必要,在關于上述的第一再配置動作的說明中,希望將步驟S51~S54替換為步驟S71~S74。接著,層級化控制部1365執行與第二再配置動作(圖15的步驟S61~S64)相當的再配置動作(步驟S75~S78)。如有必要,在關于上述的第二再配置動作的說明中,希望將步驟S61~S64替換為步驟S75~S78。
如上述那樣,根據本實施方式,去重控制部1363以邏輯區塊為單位將數據的重復排除。另一方面,層級化控制部1365根據由IO管理部1364取得的多個邏輯區塊各自的IO計數,取得被分配給多個邏輯區塊的某個邏輯區塊的物理區塊各自的IO計數。并且,層級化控制部1365根據物理區塊各自的IO計數(即向物理區塊存取的狀況),以物理區塊為單位來執行高速存儲器裝置11以及低速存儲器裝置12之間(即層級間)的數據的再配置。由此,本實施方式能夠以邏輯區塊為單位將數據的重復排除,并且能夠實現反映出向物理區塊存取的狀況的數據的再配置。由此,根據本實施方式,能夠優化邏輯盤的性能。
另外,步驟S75~S78也可以在步驟S71~S74之前執行。此外,也可以是,取代上述的2個拷貝處理(步驟S72及S76),層級化控制部1365例如在步驟S75之后執行將在步驟S71中選擇出的物理區塊內的數據和在步驟S75中選擇出的物理區塊內的數據進行交換的處理。
此外,也可以在圖11所示那樣的、伴隨被分配給物理區塊的邏輯區塊的數量遞增1而進行的IO計數的接管時,執行與上述的第一再配置動作相當的再配置動作。圖11的例子假定與物理區塊PCa中保存的數據A同一內容的數據被虛擬地寫入邏輯區塊LCc的情況。該情況下,為了去重,抑制向物理區塊新寫入與數據A同一內容的數據,物理區塊PCa也被分配給邏輯區塊LCc。圖11的例子中,通過該分配,被分配了物理區塊PCa的邏輯區塊的數量從2遞增為3。由此,物理區塊PCa的IOCNT也從4增加為8。此時,假設物理區塊PCa是低速存儲器裝置12內的物理區塊。該情況 下,層級化控制部1365從最新的再配置處理結束時的、高速存儲器裝置112內的物理區塊的IO計數中,選擇最小的IO計數(=IOCNTmin)。并且,如果物理區塊PCa的IOCNT超過IOCNTmin,則層級化控制部1365判斷為物理區塊PCa的存取頻率上升。因此,層級化控制部1365將物理區塊PCa的數據,與第一再配置動作同樣地再配置給高速存儲器裝置11內的空的物理區塊。
同樣,也可以在圖10所示那樣的、伴隨向特定的邏輯區塊分配新區塊(物理區塊)而進行的向該新區塊的IO計數的接管時,執行與上述的第二再配置動作相當的再配置動作。圖10的例子中,向邏輯區塊LCc新分配物理區塊Pcb的結果是,被分配了物理區塊PCa的邏輯區塊的數量從3減少為2。由此,物理區塊PCa的IOCNT也從6減少為4。此時,假設物理區塊PCa是高速存儲器裝置11內的物理區塊。該情況下,層級化控制部1365從最新的再配置處理結束時的、低速存儲器裝置12內的物理區塊的IO計數之中,選擇最大的IO計數(=IOCNTmax)。并且,如果物理區塊PCa的IOCNT小于IOCNTmax,則層級化控制部1365判斷為物理區塊PCa的存取頻率下降。因此,與第二再配置動作同樣地,層級化控制部1365將物理區塊PCa的數據再配置給低速存儲器裝置12內的空的物理區塊。
<第一變形例>
接著,說明上述實施方式的第一變形例。第一變形例的特征在于,應用基于區段執行的再配置處理。以下,參照圖17說明第一變形例的再配置處理。圖17是表示第一變形例的再配置處理的典型處理順序的流程圖。以下的說明中,將高速存儲器裝置11內的物理區段稱作高速區段,將低速存儲器裝置12內的物理區段稱作低速區段。
下面,假設應執行再配置處理的定時到來。于是,層級化控制部1365如以下那樣執行再配置處理。首先,層級化控制部1365執行與上述實施方式中的再配置處理的步驟S41~S43(圖13)相當的步驟S81~S83。如有必要,在關于上述實施方式的再配置處理的說明中,希望將步驟S41~S43替換為步驟S81~S83。
層級化控制部1365在步驟S83中判斷實際使用量Cau是否等于許可量Cpu。如果實際使用量Cau不等于許可量Cpu(步驟S83的否),則層級化 控制部1365判斷實際使用量Cau是否小于許可量Cpu(步驟S84)。
如果實際使用量Cau小于許可量Cpu(步驟S84的是),則層級化控制部1365重復第一再配置動作(步驟S86)直到上述的第一條件成立(步驟S85)。如后述那樣基于區段執行第一再配置動作(步驟S86)這一點,與上述實施方式的第一再配置動作(圖13的步驟S46)不同。
相對于此,如果實際使用量Cau不小于許可量Cpu(步驟S84的否),則層級化控制部1365重復第二再配置動作(步驟S88)直到上述的第二條件成立(步驟S87)。如后述那樣基于區段執行第二再配置動作(步驟S88)這一點,與上述實施方式的第二再配置動作(圖13的步驟S48)不同。
另一方面,如果使用量Cau等于許可量Cpu(步驟S83的是),則層級化控制部1365重復第三再配置動作(步驟S90)直到上述的第三條件成立(步驟S89)。如后述那樣基于區段執行第三再配置動作(步驟S90)這一點,與上述實施方式的第三再配置動作(圖13的步驟S50)不同。
接著,參照圖18說明圖17所示的再配置處理中的第一再配置動作(步驟S86)。圖18是表示第一變形例的第一再配置動作的典型順序的流程圖。首先,層級化控制部1365如以下那樣尋找包含至少1個空區塊的使用中的高速區段(步驟S91)。
第一變形例中,空區塊的物理區塊ID在重復管理表1332中由包含設定有無效值(“-”)的散列值字段的條目的物理區塊字段來表示。另外,空區塊的物理區塊ID也可以由空區塊列表來表示。這里,假設空區塊為PCfc,空區塊PCfc的物理區塊ID為PCIDfc。此外,假設包含空區塊PCfc的物理區段的區段ID為PEIDfc。該情況下,層級化控制部1365在地址變換表1331的表1331b中取得對包含SID0以及PEIDfc的全部條目的物理區塊字段所設定的物理區塊ID。
層級化控制部1365根據所取得的物理區塊ID參照重復管理表1332進行,從而尋找該取得的物理區塊ID的至少1個物理區塊ID與有效散列值建立了對應的條目。如果找到這樣的條目,則層級化控制部1365判斷為,由PEIDfc所示的物理區段是包含空區塊的使用中的高速區段。
另外,存儲器控制器13也可以具備用于管理高速存儲器裝置11以及低速存儲器裝置12內的各個物理區段的狀態的區段管理表。假設該區段管 理表具有與各個物理區段建立了對應的條目,并包含對應的物理區段中的使用中的物理區塊的列表和空的物理區塊的列表的至少一方、以及表示對應的物理區段是使用中或空的某個的標志。該情況下,層級化控制部1365根據該管理表,能夠簡單地尋找包含空區塊的使用中的高速區段(或低速區段)。此外,層級化控制部1365根據該管理表,還能夠尋找空的高速區段(或低速區段)。
此外,層級化控制部1365若執行步驟S91,則判斷是否找到目標的高速區段(即包含空區塊的使用中的高速區段)(步驟S92)。如果沒能找到目標的高速區段(步驟S92的否),則層級化控制部1365選擇空的高速區段(步驟S93)。接著,層級化控制部1365將物理區段中的物理區塊的數量p設定給變量t(步驟S94)。接著,層級化控制部1365前進至步驟S98。
相對于此,如果找到目標的高速區段(步驟S92的是),則層級化控制部1365選擇該目標的高速區段(步驟S95)。接著,層級化控制部1365檢測所選擇的高速區段內的空區塊的數量q(步驟S96),將檢測出的數量q設定給變量t(步驟S97)。接著,層級化控制部1365前進至步驟S98。明顯地,q為1以上且小于p。
步驟S98中,層級化控制部1365從低速存儲器裝置12(低速區段的群)內的未選擇的區塊的群之中,選擇IO計數為上位的t個區塊。接著,層級化控制部1365將所選擇的t個區塊內的數據拷貝到(再配置到)所選擇的高速區段內的t個空區塊(步驟S99)。如果拷貝目的地的t個區塊是步驟S95所選擇的使用中的高速區段內的空區塊的情況下,該使用中的高速區段的部分空狀態(所謂的蟲蛀狀態)通過步驟S99的拷貝而被解除。
接著,層級化控制部1365更新地址變換表1331中的、與拷貝源的t個區塊建立了對應的條目的內容(步驟S100)。即,層級化控制部1365將地址變換表1331中的、與拷貝源的t個區塊建立了對應的t個條目中的物理區塊ID字段的內容,變更為拷貝目的地的t個區塊的物理區塊ID。
此外,層級化控制部1365通過去重控制部1363來更新重復管理表1332中的、與拷貝源的t個區塊以及拷貝目的地的t個區塊建立了對應的條目的內容(步驟S101)。即,去重控制部1363將重復管理表1332中的、與拷 貝源的t個區塊建立了對應的條目的散列值字段以及重復計數字段的內容交換為重復管理表1332中的、與拷貝目的地的t個區塊建立了對應的條目的散列值字段以及重復計數字段的內容(無效值以及0)。于是,層級化控制部1365結束第一再配置動作(圖17的步驟S86)。另外,步驟S101也可以在步驟S100之前執行。
接著,參照圖19說明圖17所示的再配置處理中的第二再配置動作(步驟S88)。圖19是表示第一變形例的第二再配置動作的典型順序的流程圖。首先,層級化控制部1365尋找包含至少1個空區塊的使用中的低速區段(步驟S111)。這里,假設空區塊是PCfd,空區塊PCfd的物理區塊ID是PCIDfd。此外,假設包含空區塊PCfd的物理區段的區段ID是PEIDfd。該情況下,層級化控制部1365在地址變換表1331的表1331b中取得對包含SID1及PEIDfd的全部條目的物理區塊字段所設定的物理區塊ID。
層級化控制部1365基于所取得的物理區塊ID對重復管理表1332進行參照,從而尋找該取得的物理區塊ID的至少1個物理區塊ID與有效散列值建立了對應的條目。如果找到這樣的條目,則層級化控制部1365判斷為,由PEIDfd所示的物理區段是包含空區塊的使用中的低速區段。
此外,層級化控制部1365若執行步驟S111,則判斷是否找到目標的低速區段(即包含空區塊的使用中的低速區段)(步驟S112)。如果沒能找到目標的低速區段(步驟S112的否),則層級化控制部1365選擇空的低速區段(步驟S113)。接著,與上述的步驟S93(圖18)同樣地,層級化控制部1365將物理區段中的物理區塊的數量p設定給變量t(步驟S114)。接著,層級化控制部1365向步驟S118前進。
相對于此,如果找到目標的低速區段(步驟S112的是),則層級化控制部1365選擇該目標的低速區段(步驟S115)。接著,層級化控制部1365檢測所選擇的低速區段內的空區塊的數量q(步驟S116),與上述的步驟S97(圖18)同樣地將檢測出的數量q設定給變量t(步驟S117)。接著,層級化控制部1365向步驟S118前進。
在步驟S118中,層級化控制部1365從高速存儲器裝置11(高速區段的群)內的未選擇的區塊的群之中,選擇IO計數為下位的t個區塊。接著,層級化控制部1365將所選擇的t個區塊內的數據拷貝到(再配置到)所選 擇的低速區段內的t個空區塊(步驟S119)。如果,在拷貝目的地的t個區塊是在步驟S115中選擇的使用中的低速區段內的空的區塊的情況下,該使用中的低速區段的部分空狀態通過步驟S119的拷貝而被解除。
接著,層級化控制部1365與上述的步驟S100(圖18)同樣地更新地址變換表1331中的、與拷貝源的t個區塊建立了對應的條目的內容(步驟S120)。此外,層級化控制部1365通過去重控制部1363而與上述的步驟S101(圖18)同樣地更新重復管理表1332中的、與拷貝源的t個區塊以及拷貝目的地的t個區塊建立了對應的條目的內容(步驟S121)。這樣,層級化控制部1365結束第二再配置動作(圖17的步驟S88)。另外,步驟S121也可以在步驟S120之前執行。
接著,參照圖20說明圖17所示的再配置處理中的第三再配置動作(步驟S90)。圖20是表示第一變形例的第三再配置動作的典型順序的流程圖。首先,層級化控制部1365從低速區段的群內的未選擇的區塊的群之中,選擇IO計數為上位的p個區塊(即構成1個物理區段的數量的區塊)(步驟S131)。并且,層級化控制部1365將所選擇的p個區塊內的數據拷貝到(再配置到)空的高速區段內的p個區塊(步驟S132)。
接著,層級化控制部1365更新地址變換表1331中的、與拷貝源的p個區塊建立了對應的條目的內容(步驟S133)。即,層級化控制部1365將地址變換表1331中的、與拷貝源的p個區塊建立了對應的p個條目中的物理區塊ID字段的內容,變更為拷貝目的地的高速區段內的p個區塊的物理區塊ID。
此外,層級化控制部1365通過去重控制部1363而更新重復管理表1332中的、與拷貝源的p個區塊以及拷貝目的地的高速區段內的p個區塊建立了對應的條目的內容(步驟S134)。即,去重控制部1363將重復管理表1332中的、與拷貝源的p個區塊建立了對應的條目的散列值字段以及重復計數字段的內容,交換為重復管理表1332中的、與拷貝目的地的p個區塊建立了對應的條目的散列值字段以及重復計數字段的內容(無效值以及0)。
步驟S131~S134相當于在圖18所示的第一再配置動作中S92的判斷為否的情況下執行的處理。另外,步驟S134也可以在步驟S133之前執行。
接著,層級化控制部1365從高速區段的群內的未選擇的區塊的群之中, 選擇IO計數為下位的p個區塊(步驟S135)。并且,層級化控制部1365將所選擇的p個區塊內的數據拷貝到(再配置到)空的低速區段內的p個區塊(步驟S136)。
接著,層級化控制部1365更新地址變換表1331中的、與拷貝源的p個區塊建立了對應的條目的內容(步驟S137)。即,層級化控制部1365將地址變換表1331中的、與拷貝源的p個區塊建立了對應的p個條目中的物理區塊ID字段的內容,變更為拷貝目的地的低速區段內的p個區塊的物理區塊ID。
此外,層級化控制部1365通過去重控制部1363來更新重復管理表1332中的、與拷貝源的p個區塊以及拷貝目的地的低速區段內的p個區塊建立了對應的條目的內容(步驟S138)。即,去重控制部1363將重復管理表1332中的、與拷貝源的p個區塊建立了對應的條目的散列值字段以及重復計數字段的內容,交換為重復管理表1332中的、與拷貝目的地的p個區塊建立了對應的條目的散列值字段以及重復計數字段的內容(無效值以及0)。這樣,層級化控制部1365結束第三再配置動作(圖17的步驟S90)。
步驟S135~S138相當于在圖19所示的第二再配置動作中S112的判斷為否的情況下執行的處理。另外,步驟S138也可以在步驟S137之前執行。此外,步驟S135~S138也可以在步驟S131~S134之前執行。
接著,參照圖21~24說明第一變形例的再配置的例子。圖21表示再配置的第一例。第一例是指在圖18所示的第一再配置動作中S92的判斷為否的情況下的再配置(步驟S99)、或者圖20所示的第三再配置動作中的再配置(步驟S132)的例子。圖21中,高速存儲器裝置11包含空的物理(高速)區段110,低速存儲器裝置12包含使用中的物理(低速)區段121、122以及123。
低速區段121、122以及123分別包含保存有數據A、B以及C的物理區塊。假設分別保存有數據A、B以及C的3個物理區塊是在步驟S98(圖18)或S131(圖20)中選擇的p(t=p)個物理區塊的一部分。圖21的例子中,在步驟S98或S131中選擇的p個物理區塊的數據(即包含數據A、B以及C的p個數據)被再配置于高速存儲器裝置11內的空的高速區段110。
圖22表示第一變形例的再配置的第二例。第二例是指在圖18所示的第一再配置動作中S92的判斷為是的情況下的再配置(步驟S99)的例子。圖22中,高速存儲器裝置11包含使用中的高速區段111以及112,低速存儲器裝置12與圖21的例子同樣地包含使用中的低速區段121、122以及123。假設高速區段111以及112分別包含q1個以及q2個空的物理區塊。
如上述那樣,低速區段121、122以及123分別包含保存有數據A、B以及C的物理區塊。假設分別保存有數據A及B的2個物理區塊是在最初的步驟S98(圖18)中選擇的q1(t=q=q1)個物理區塊的一部分,保存有數據C的物理區塊是在第2次的步驟S98中選擇的q2(t=q=q2)個物理區塊的一部分。圖22的例子中,在最初的步驟S98中選擇的q1個物理區塊的數據(即包含數據A及B的q1個數據)被再配置于高速存儲器裝置11內的高速區段111中包含的q1個空的物理區塊。同樣,在第2次的步驟S98中選擇的q2個物理區塊的數據(即包含數據C的q2個數據)被再配置于高速存儲器裝置11內的高速區段112中包含的q2個空的物理區塊。
圖23表示第一變形例的再配置的第三例。第三例是指在圖19所示的第二再配置動作中S112的判斷為否的情況下的再配置(步驟S119)、或者圖20所示的第三再配置動作中的再配置(步驟S136)的例子。圖23中,高速存儲器裝置11包含使用中的高速區段113、114以及115,低速存儲器裝置12包含空的低速區段120。
高速區段113、114以及115分別包含保存有數據R、S以及T的物理區塊。假設分別保存有數據R、S以及T的3個物理區塊是在步驟S118(圖19)或S135(圖20)中選擇的p(t=p)個物理區塊的一部分。圖23的例子中,在步驟S118或S135中選擇的p個物理區塊的數據(即包含數據R、S以及T的p個數據)被再配置于低速存儲器裝置12內的空的低速區段120。
圖24表示第一變形例的再配置的第四例。第四例是指在圖19所示的第二再配置動作中S112的判斷為是的情況下的再配置(步驟S119)的例子。圖24中,與圖23的例子同樣,高速存儲器裝置11包含使用中的高速區段113、114以及115,低速存儲器裝置12包含使用中的低速區段124以及125。假設低速區段124以及125分別包含q3個以及q4個空的物理區 塊。
如上述那樣,高速區段113、114以及115分別包含保存有數據R、S以及T的物理區塊。假設保存有數據R的物理區塊是在最初的步驟S118(圖19)中選擇的q3(t=q=q3)個物理區塊的一部分,分別保存有數據S以及T的2個物理區塊是在第2次的步驟S118中選擇的q4(t=q=q4)個物理區塊的一部分。圖24的例子中,在最初的步驟S118中選擇的q3個物理區塊的數據(即包含數據R的q3個數據)被再配置于低速存儲器裝置12內的低速區段124中包含的q3個空的物理區塊。同樣,在第2次的步驟S118中選擇的q4個物理區塊的數據(即包含數據S以及T的q4個數據)被再配置于低速存儲器裝置12內的低速區段125中包含的q4個空的物理區塊。
<第二變形例>
接著,說明上述實施方式的第二變形例。第一變形例的再配置處理中,以物理區塊為單位選擇拷貝源。因此在第一變形例中,每當執行再配置處理時,會在包含拷貝源的物理區塊的物理區段中發生分片化(fragmentation),在某個時刻需要進行碎片整理(defragmentation)處理。因此,第二變形例的特征在于,為了降低物理區段(特別是低速區段)的分片化,當從低速存儲器裝置12向高速存儲器裝置11再配置數據時,以物理區段為單位來選擇拷貝源。因此,在第二變形例中,物理區段內的所有物理區塊的IO計數的例如合計值(或平均值)被用作該物理區段的IO計數。
以下,對于第二變形例,以與第一變形例不同的點為中心進行說明。第二變形例中,層級化控制部1365例如通過與第一變形例的第三再配置動作中的步驟S131(圖20)相當的處理,從未選擇的低速區段群之中選擇IO計數為最上位的低速區段作為拷貝源。此外,層級化控制部1365為了確保所選擇的低速區段內的p個物理區塊的數據的拷貝(再配置)目的地,從高速區段群之中選擇多個使用中的高速區段作為拷貝目的地。多個使用中的高速區段的每一個包含至少1個空的物理區塊,并且多個使用中的高速區段中分別包含的空的物理區塊的合計為p以上。并且,層級化控制部1365將所選擇的低速區段內的p個物理區塊的數據再配置給所選擇的多個高速 區段內的p個空的物理區塊。
圖25表示第二變形例的上述的再配置的例子。圖25中,高速存儲器裝置11包含使用中的高速區段116、117以及118。高速區段116、117以及118分別包含至少1個空的物理區塊,并且高速區段116、117以及118中分別包含的空的物理區塊的合計為p以上。低速存儲器裝置12包含使用中的低速區段126。低速區段126的p個物理區塊為使用中,在該p個物理區塊中,保存有包含數據A、B以及C的p個數據。
圖25中,假設低速區段126被選擇為拷貝源,高速區段116、117以及118被選擇為拷貝目的地。該情況下,層級化控制部1365將低速區段126的p個物理區塊中保存的包含數據A、B以及C的p個數據,拷貝到(再配置到)高速區段116、117以及118內的p個空的物理區塊。由此,低速區段126能夠作為空區段進行利用。
根據第二變形例,能夠防止在拷貝源的(包含物理區塊的)低速區段中由于再配置動作而產生分片化。此外,拷貝目的地的(包含物理區塊的)多個高速區段中的分片化通過再配置動作而降低。特別是,如果拷貝目的地的多個高速區段中包含的空的物理區塊的合計與p一致,則該多個高速區段中的分片化被解除。另外,第二變形例中的上述的再配置動作也可以替代為第一變形例中的第一再配置動作而執行。
<第三變形例>
接著,說明上述實施方式的第三變形例。第三變形例的特征在于,為了降低在第一變形例中產生的那樣的物理區段(特別是高速區段)的分片化,在與第二變形例相反地從高速存儲器裝置11向低速存儲器裝置12再配置數據時,以物理區段為單位來選擇拷貝源。
以下,對于第三變形例,以與第一及第二變形例不同的點為中心進行說明。第三變形例中,層級化控制部1365例如通過與第一變形例的第三再配置動作中的步驟S135(圖20)相當的處理,從未選擇的高速區段群之中選擇IO計數為最下位的高速區段作為拷貝源。此外,層級化控制部1365為了確保所選擇的高速區段內的p個物理區塊的數據的拷貝(再配置)目的地,從低速區段群之中選擇多個使用中的低速區段作為拷貝目的地。多個使用中的低速區段的每一個包含至少1個空的物理區塊,并且多個使用 中的低速區段中分別包含的空的物理區塊的合計為p以上。并且,層級化控制部1365將所選擇的高速區段內的p個物理區塊的數據再配置給所選擇的多個低速區段內的p個空的物理區塊。
圖26表示第三變形例中的上述的再配置的例子。圖26中,高速存儲器裝置11包含使用中的高速區段119。高速區段119的p個物理區塊為使用中,該p個物理區塊中,保存有包含數據R、S以及T的p個數據。低速存儲器裝置12包含使用中的低速區段127以及128。低速區段127以及128分別包含至少1個空的物理區塊,并且低速區段127以及128中分別包含的空的物理區塊的合計為p以上。
圖26中,假設高速區段119被選擇為拷貝源,低速區段127以及128被選擇為拷貝目的地。該情況下,層級化控制部1365將高速區段119的p個物理區塊中保存的包含數據R、S以及T的p個數據,拷貝到(再配置到)低速區段127以及128內的p個空的物理區塊。由此,高速區段119能夠作為空區段進行利用。
根據第三變形例,能夠防止在拷貝源的(包含物理區塊的)高速區段中由于再配置動作而發生分片化。此外,拷貝目的地的(包含物理區塊的)多個低速區段中的分片化通過再配置動作而降低。特別是,如果拷貝目的地的多個低速區段中包含的空的物理區塊的合計與p一致,則該多個高速區段的分片化被解除。另外,第三變形例中的上述的再配置動作也可以替代為第一變形例中的第二再配置動作而執行。
根據以上說明的至少1個實施方式,以邏輯區塊為單位將數據的重復排除,并且通過反映出向物理區塊存取的狀況的數據的再配置,能夠優化邏輯盤的性能。
對本發明的幾個實施方式進行了說明,但這些實施方式是作為例子提示的,并不意欲限定發明的范圍。這些新的實施方式能夠以其他各種各樣的方式實施,在不脫離發明主旨的范圍內,能夠進行各種省略、替換、變更。這些實施方式及其變形包含在發明的范圍及主旨中,并且包含在權利要求所記載的發明及其同等范圍內。