(57)【特許請求の範囲】
【請求項１】
複数の不揮発メモリデバイスを有しネットワークに接続された複数のノードを有し、
前記複数の不揮発メモリデバイスの各々は、不揮発メモリを有し、
前記複数の不揮発メモリデバイスのうちの２以上の不揮発メモリデバイスの各々が、データの圧縮又は解凍を行う機能である圧縮機能を有し、
第１のノードは、
データを伸張しないで読み出すためのリードコマンドであって、圧縮データに対応した論理アドレスを指定した非伸張リードコマンドを、第１の不揮発メモリデバイスに送信し、
転送対象のデータのノード間転送のためのコマンドであって、前記非伸張リードコマンドに応答して前記第１の不揮発メモリデバイスの圧縮機能により伸張されること無しに前記第１の不揮発メモリデバイスから読み出された前記圧縮データを転送対象とした転送コマンドを、前記ネットワーク経由で、第２のノードに送信し、
前記第２のノードは、
前記転送コマンドを受信し、
前記転送コマンドに応答して、前記圧縮データをライト対象としたライトコマンドを、第２の不揮発メモリデバイスに送信し、
前記圧縮データは、圧縮されたデータであり、
前記第１の不揮発メモリデバイスは、前記複数の不揮発メモリデバイスのうち、前記圧縮データを格納している不揮発メモリを有する不揮発メモリデバイスであり、
前記第１のノードは、前記複数のノードのうち、前記第１の不揮発メモリデバイスを有するノードであり、
前記第２のノードは、前記複数のノードのうち、前記第１のノード以外のいずれかのノードであり、
前記第２の不揮発メモリデバイスは、前記複数の不揮発メモリデバイスのうち、前記第２のノードが有する不揮発メモリデバイスであり、
前記第１のノードは、
データを圧縮してから書き込むためのライトコマンドであり前記圧縮データに対応した圧縮前データをライト対象とした圧縮ライトコマンドを前記第１の不揮発メモリデバイスに送信し、
前記第１の不揮発メモリデバイスの不揮発メモリ内の前記圧縮データは、前記第１の不揮発メモリデバイスにより、前記圧縮ライトコマンドに応答して前記圧縮前データが前記第１の不揮発メモリデバイスの圧縮機能を用いて圧縮されたものであり、
前記第１の不揮発メモリデバイスは、不揮発メモリの他にバッファを有し、
前記第１のノードは、前記第１の不揮発メモリデバイスが提供する論理アドレス空間のうちの指定された論理アドレス毎に、データサイズと圧縮データサイズとを管理するようになっており、
前記第１のノードは、
前記圧縮前データを圧縮して前記バッファに書き込むためのライトコマンドであって前記圧縮前データをデータサイズとして指定した圧縮バッファライトコマンドを、第１の不揮発メモリデバイスに送信し、
前記圧縮バッファライトコマンドに応答して、前記圧縮前データが圧縮されたものである圧縮データのサイズを圧縮データサイズとして、その圧縮データを格納したバッファ内領域のアドレスをバッファアドレスとして、その圧縮データのライト先の論理アドレスを論理アドレスとしてそれぞれ含んだ応答を、前記第１の不揮発メモリデバイスから受信し、
ライト先の論理アドレスと、前記受信した応答が表す圧縮データサイズ及びバッファアドレスとを指定したライトコマンドであって、前記バッファ内領域における前記圧縮データをライト対象としたバッファデータライトコマンドを、前記第１の不揮発メモリデバイスに送信し、
前記圧縮ライトコマンドの送信は、前記圧縮バッファライトコマンド及び前記バッファデータライトコマンドの送信であり、
前記第１のノードは、指定された論理アドレス及び圧縮データサイズに従う論理アドレス範囲を、前記バッファデータライトコマンドを送信してからそのコマンドに対する応答を受信するまで、別のライトコマンドでその論理アドレス範囲に属する論理アドレスが指定されないようロックをかけるようになっており、
前記第１の不揮発メモリデバイスの不揮発メモリ内の前記圧縮データは、前記第１の不揮発メモリデバイスにより、前記圧縮バッファライトコマンド及び前記バッファデータライトコマンドに応答して前記圧縮前データが圧縮されたものである前記圧縮データが前記バッファ内領域に格納されその圧縮データが前記バッファ内領域から前記第１の不揮発メモリデバイスの不揮発メモリに格納されたものである、
スケールアウト型のストレージシステム。
【請求項２】
複数の不揮発メモリデバイスを有しネットワークに接続された複数のノードを有し、
前記複数の不揮発メモリデバイスの各々は、不揮発メモリを有し、
前記複数の不揮発メモリデバイスのうちの２以上の不揮発メモリデバイスの各々が、データの圧縮又は解凍を行う機能である圧縮機能を有し、
第１のノードは、
データを伸張しないで読み出すためのリードコマンドであって、圧縮データに対応した論理アドレスを指定した非伸張リードコマンドを、第１の不揮発メモリデバイスに送信し、
転送対象のデータのノード間転送のためのコマンドであって、前記非伸張リードコマンドに応答して前記第１の不揮発メモリデバイスの圧縮機能により伸張されること無しに前記第１の不揮発メモリデバイスから読み出された前記圧縮データを転送対象とした転送コマンドを、前記ネットワーク経由で、第２のノードに送信し、
前記第２のノードは、
前記転送コマンドを受信し、
前記転送コマンドに応答して、前記圧縮データをライト対象としたライトコマンドを、第２の不揮発メモリデバイスに送信し、
前記圧縮データは、圧縮されたデータであり、
前記第１の不揮発メモリデバイスは、前記複数の不揮発メモリデバイスのうち、前記圧縮データを格納している不揮発メモリを有する不揮発メモリデバイスであり、
前記第１のノードは、前記複数のノードのうち、前記第１の不揮発メモリデバイスを有するノードであり、
前記第２のノードは、前記複数のノードのうち、前記第１のノード以外のいずれかのノードであり、
前記第２の不揮発メモリデバイスは、前記複数の不揮発メモリデバイスのうち、前記第２のノードが有する不揮発メモリデバイスであり、
前記第１のノードは、
データを圧縮してから書き込むためのライトコマンドであり前記圧縮データに対応した圧縮前データをライト対象とした圧縮ライトコマンドを前記第１の不揮発メモリデバイスに送信し、
前記第１の不揮発メモリデバイスの不揮発メモリ内の前記圧縮データは、前記第１の不揮発メモリデバイスにより、前記圧縮ライトコマンドに応答して前記圧縮前データが前記第１の不揮発メモリデバイスの圧縮機能を用いて圧縮されたものであり、
前記第１のノードは、前記第１の不揮発メモリデバイスが提供する論理アドレス空間のうちの指定された論理アドレス毎に、データサイズと圧縮データサイズとを管理するようになっており、
前記圧縮ライトコマンドは、前記圧縮前データをデータサイズとして、前記圧縮前データのライト先の論理アドレスを論理アドレスとしてそれぞれ指定した圧縮ライトコマンドであり、
前記第１のノードは、
前記圧縮ライトコマンドに応答して、前記圧縮前データが圧縮されたものである圧縮データのサイズを圧縮データサイズとして含んだ応答を、前記第１の不揮発メモリデバイスから受信し、
前記第１のノードは、指定された論理アドレス及びデータサイズに従う論理アドレス範囲を、前記圧縮ライトコマンドを送信してからそのコマンドに対する応答を受信するまで、別のライトコマンドでその論理アドレス範囲に属する論理アドレスが指定されないようロックをかけるようになっており、
前記第１のノードは、複数の実論理アドレス範囲を詰めて並ばせるためのコマンドである論理アドレス整理コマンドを、前記第１の不揮発メモリデバイスに送信し、
前記複数の実論理アドレス範囲の各々は、実際のデータ格納範囲としての論理アドレス範囲である、
スケールアウト型のストレージシステム。
【請求項３】
複数の不揮発メモリデバイスを有しネットワークに接続された複数のノードを有し、
前記複数の不揮発メモリデバイスの各々は、不揮発メモリを有し、
前記複数の不揮発メモリデバイスのうちの２以上の不揮発メモリデバイスの各々が、データの圧縮又は解凍を行う機能である圧縮機能を有し、
第１のノードは、
データを伸張しないで読み出すためのリードコマンドであって、圧縮データに対応した論理アドレスを指定した非伸張リードコマンドを、第１の不揮発メモリデバイスに送信し、
転送対象のデータのノード間転送のためのコマンドであって、前記非伸張リードコマンドに応答して前記第１の不揮発メモリデバイスの圧縮機能により伸張されること無しに前記第１の不揮発メモリデバイスから読み出された前記圧縮データを転送対象とした転送コマンドを、前記ネットワーク経由で、第２のノードに送信し、
前記第２のノードは、
前記転送コマンドを受信し、
前記転送コマンドに応答して、前記圧縮データをライト対象としたライトコマンドを、第２の不揮発メモリデバイスに送信し、
前記圧縮データは、圧縮されたデータであり、
前記第１の不揮発メモリデバイスは、前記複数の不揮発メモリデバイスのうち、前記圧縮データを格納している不揮発メモリを有する不揮発メモリデバイスであり、
前記第１のノードは、前記複数のノードのうち、前記第１の不揮発メモリデバイスを有するノードであり、
前記第２のノードは、前記複数のノードのうち、前記第１のノード以外のいずれかのノードであり、
前記第２の不揮発メモリデバイスは、前記複数の不揮発メモリデバイスのうち、前記第２のノードが有する不揮発メモリデバイスであり、
前記第１のノードは、
データを圧縮してから書き込むためのライトコマンドであり前記圧縮データに対応した圧縮前データをライト対象とした圧縮ライトコマンドを前記第１の不揮発メモリデバイスに送信し、
前記第１の不揮発メモリデバイスの不揮発メモリ内の前記圧縮データは、前記第１の不揮発メモリデバイスにより、前記圧縮ライトコマンドに応答して前記圧縮前データが前記第１の不揮発メモリデバイスの圧縮機能を用いて圧縮されたものであり、
前記第１のノードは、
前記圧縮ライトコマンドに応答して、前記圧縮データのサイズを圧縮データサイズとして、その圧縮データのライト先の論理アドレスを論理アドレスとしてそれぞれ含んだ応答を、前記第１の不揮発メモリデバイスから受信し、
前記受信した応答に含まれる前記圧縮データのライト先の論理アドレスについて、その応答が表す圧縮データサイズと、前記圧縮データの圧縮前のデータのサイズであるデータサイズとを管理し、
前記第１のノードは、データの削除要求を受信した場合、前記データに対応する前記圧縮データのライト先の論理アドレスを解放するためのコマンドであるアドレス解放コマンドを、前記第１の不揮発メモリデバイスに送信する、
スケールアウト型のストレージシステム。
【請求項４】
複数の不揮発メモリデバイスを有しネットワークに接続された複数のノードで構成されたスケールアウト型のストレージシステムの記憶制御方法であって、
第１のノードにより、データを伸張しないで読み出すためのリードコマンドであって、圧縮データに対応した論理アドレスを指定した非伸張リードコマンドを、第１の不揮発メモリデバイスに送信し、
前記第１のノードにより、転送対象のデータのノード間転送のためのコマンドであって、前記非伸張リードコマンドに応答して前記第１の不揮発メモリデバイスの圧縮機能により伸張されること無しに前記第１の不揮発メモリデバイスから読み出された前記圧縮データを転送対象とした転送コマンドを、前記ネットワーク経由で、第２のノードに送信し、
前記第２のノードにより、前記転送コマンドを受信し、
前記第２のノードにより、前記転送コマンドに応答して、前記圧縮データをライト対象としたライトコマンドを、第２の不揮発メモリデバイスに送信し、
前記圧縮データは、圧縮されたデータであり、
前記第１の不揮発メモリデバイスは、前記複数の不揮発メモリデバイスのうち、前記圧縮データを格納している不揮発メモリを有する不揮発メモリデバイスであり、
前記第１のノードは、前記複数のノードのうち、前記第１の不揮発メモリデバイスを有するノードであり、
前記第２のノードは、前記複数のノードのうち、前記第１のノード以外のいずれかのノードであり、
前記第２の不揮発メモリデバイスは、前記複数の不揮発メモリデバイスのうち、前記第２のノードが有する不揮発メモリデバイスであり、
前記第１及び第２の不揮発メモリデバイスの各々は、データの圧縮又は解凍を行う機能である圧縮機能を有し、
前記第１のノードは、
データを圧縮してから書き込むためのライトコマンドであり前記圧縮データに対応した圧縮前データをライト対象とした圧縮ライトコマンドを前記第１の不揮発メモリデバイスに送信し、
前記第１の不揮発メモリデバイスの不揮発メモリ内の前記圧縮データは、前記第１の不揮発メモリデバイスにより、前記圧縮ライトコマンドに応答して前記圧縮前データが前記第１の不揮発メモリデバイスの圧縮機能を用いて圧縮されたものであり、
前記第１の不揮発メモリデバイスは、不揮発メモリの他にバッファを有し、
前記第１のノードは、前記第１の不揮発メモリデバイスが提供する論理アドレス空間のうちの指定された論理アドレス毎に、データサイズと圧縮データサイズとを管理し、
前記第１のノードは、
前記圧縮前データを圧縮して前記バッファに書き込むためのライトコマンドであって前記圧縮前データをデータサイズとして指定した圧縮バッファライトコマンドを、第１の不揮発メモリデバイスに送信し、
前記圧縮バッファライトコマンドに応答して、前記圧縮前データが圧縮されたものである圧縮データのサイズを圧縮データサイズとして、その圧縮データを格納したバッファ内領域のアドレスをバッファアドレスとして、その圧縮データのライト先の論理アドレスを論理アドレスとしてそれぞれ含んだ応答を、前記第１の不揮発メモリデバイスから受信し、
ライト先の論理アドレスと、前記受信した応答が表す圧縮データサイズ及びバッファアドレスとを指定したライトコマンドであって、前記バッファ内領域における前記圧縮データをライト対象としたバッファデータライトコマンドを、前記第１の不揮発メモリデバイスに送信し、
前記圧縮ライトコマンドの送信は、前記圧縮バッファライトコマンド及び前記バッファデータライトコマンドの送信であり、
前記第１のノードは、指定された論理アドレス及び圧縮データサイズに従う論理アドレス範囲を、前記バッファデータライトコマンドを送信してからそのコマンドに対する応答を受信するまで、別のライトコマンドでその論理アドレス範囲に属する論理アドレスが指定されないようロックをかけ、
前記第１の不揮発メモリデバイスの不揮発メモリ内の前記圧縮データは、前記第１の不揮発メモリデバイスにより、前記圧縮バッファライトコマンド及び前記バッファデータライトコマンドに応答して前記圧縮前データが圧縮されたものである前記圧縮データが前記バッファ内領域に格納されその圧縮データが前記バッファ内領域から前記第１の不揮発メモリデバイスの不揮発メモリに格納されたものである、
記憶制御方法。
【請求項５】
複数の不揮発メモリデバイスを有しネットワークに接続された複数のノードで構成されたスケールアウト型のストレージシステムの記憶制御方法であって、
第１のノードにより、データを伸張しないで読み出すためのリードコマンドであって、圧縮データに対応した論理アドレスを指定した非伸張リードコマンドを、第１の不揮発メモリデバイスに送信し、
前記第１のノードにより、転送対象のデータのノード間転送のためのコマンドであって、前記非伸張リードコマンドに応答して前記第１の不揮発メモリデバイスの圧縮機能により伸張されること無しに前記第１の不揮発メモリデバイスから読み出された前記圧縮データを転送対象とした転送コマンドを、前記ネットワーク経由で、第２のノードに送信し、
前記第２のノードにより、前記転送コマンドを受信し、
前記第２のノードにより、前記転送コマンドに応答して、前記圧縮データをライト対象としたライトコマンドを、第２の不揮発メモリデバイスに送信し、
前記圧縮データは、圧縮されたデータであり、
前記第１の不揮発メモリデバイスは、前記複数の不揮発メモリデバイスのうち、前記圧縮データを格納している不揮発メモリを有する不揮発メモリデバイスであり、
前記第１のノードは、前記複数のノードのうち、前記第１の不揮発メモリデバイスを有するノードであり、
前記第２のノードは、前記複数のノードのうち、前記第１のノード以外のいずれかのノードであり、
前記第２の不揮発メモリデバイスは、前記複数の不揮発メモリデバイスのうち、前記第２のノードが有する不揮発メモリデバイスであり、
前記第１及び第２の不揮発メモリデバイスの各々は、データの圧縮又は解凍を行う機能である圧縮機能を有し、
前記第１のノードは、
データを圧縮してから書き込むためのライトコマンドであり前記圧縮データに対応した圧縮前データをライト対象とした圧縮ライトコマンドを前記第１の不揮発メモリデバイスに送信し、
前記第１の不揮発メモリデバイスの不揮発メモリ内の前記圧縮データは、前記第１の不揮発メモリデバイスにより、前記圧縮ライトコマンドに応答して前記圧縮前データが前記第１の不揮発メモリデバイスの圧縮機能を用いて圧縮されたものであり、
前記第１のノードは、前記第１の不揮発メモリデバイスが提供する論理アドレス空間のうちの指定された論理アドレス毎に、データサイズと圧縮データサイズとを管理し、
前記圧縮ライトコマンドは、前記圧縮前データをデータサイズとして、前記圧縮前データのライト先の論理アドレスを論理アドレスとしてそれぞれ指定した圧縮ライトコマンドであり、
前記第１のノードは、
前記圧縮ライトコマンドに応答して、前記圧縮前データが圧縮されたものである圧縮データのサイズを圧縮データサイズとして含んだ応答を、前記第１の不揮発メモリデバイスから受信し、
前記第１のノードは、指定された論理アドレス及びデータサイズに従う論理アドレス範囲を、前記圧縮ライトコマンドを送信してからそのコマンドに対する応答を受信するまで、別のライトコマンドでその論理アドレス範囲に属する論理アドレスが指定されないようロックをかけ、
前記第１のノードは、複数の実論理アドレス範囲を詰めて並ばせるためのコマンドである論理アドレス整理コマンドを、前記第１の不揮発メモリデバイスに送信し、
前記複数の実論理アドレス範囲の各々は、実際のデータ格納範囲としての論理アドレス範囲である、
記憶制御方法。
【請求項６】
複数の不揮発メモリデバイスを有しネットワークに接続された複数のノードで構成されたスケールアウト型のストレージシステムの記憶制御方法であって、
第１のノードにより、データを伸張しないで読み出すためのリードコマンドであって、圧縮データに対応した論理アドレスを指定した非伸張リードコマンドを、第１の不揮発メモリデバイスに送信し、
前記第１のノードにより、転送対象のデータのノード間転送のためのコマンドであって、前記非伸張リードコマンドに応答して前記第１の不揮発メモリデバイスの圧縮機能により伸張されること無しに前記第１の不揮発メモリデバイスから読み出された前記圧縮データを転送対象とした転送コマンドを、前記ネットワーク経由で、第２のノードに送信し、
前記第２のノードにより、前記転送コマンドを受信し、
前記第２のノードにより、前記転送コマンドに応答して、前記圧縮データをライト対象としたライトコマンドを、第２の不揮発メモリデバイスに送信し、
前記圧縮データは、圧縮されたデータであり、
前記第１の不揮発メモリデバイスは、前記複数の不揮発メモリデバイスのうち、前記圧縮データを格納している不揮発メモリを有する不揮発メモリデバイスであり、
前記第１のノードは、前記複数のノードのうち、前記第１の不揮発メモリデバイスを有するノードであり、
前記第２のノードは、前記複数のノードのうち、前記第１のノード以外のいずれかのノードであり、
前記第２の不揮発メモリデバイスは、前記複数の不揮発メモリデバイスのうち、前記第２のノードが有する不揮発メモリデバイスであり、
前記第１及び第２の不揮発メモリデバイスの各々は、データの圧縮又は解凍を行う機能である圧縮機能を有し、
前記第１のノードは、
データを圧縮してから書き込むためのライトコマンドであり前記圧縮データに対応した圧縮前データをライト対象とした圧縮ライトコマンドを前記第１の不揮発メモリデバイスに送信し、
前記第１の不揮発メモリデバイスの不揮発メモリ内の前記圧縮データは、前記第１の不揮発メモリデバイスにより、前記圧縮ライトコマンドに応答して前記圧縮前データが前記第１の不揮発メモリデバイスの圧縮機能を用いて圧縮されたものであり、
前記第１のノードは、
前記圧縮ライトコマンドに応答して、前記圧縮データのサイズを圧縮データサイズとして、その圧縮データのライト先の論理アドレスを論理アドレスとしてそれぞれ含んだ応答を、前記第１の不揮発メモリデバイスから受信し、
前記受信した応答に含まれる前記圧縮データのライト先の論理アドレスについて、その応答が表す圧縮データサイズと、前記圧縮データの圧縮前のデータのサイズであるデータサイズとを管理し、
前記第１のノードは、データの削除要求を受信した場合、前記データに対応する前記圧縮データのライト先の論理アドレスを解放するためのコマンドであるアドレス解放コマンドを、前記第１の不揮発メモリデバイスに送信する、
記憶制御方法。
【請求項７】
複数の不揮発メモリデバイスを有しネットワークに接続されスケールアウト型のストレージシステムを構成する複数のノードのうちのいずれかのノードとしてのストレージ装置であって、
前記不揮発メモリデバイスに接続された１以上のインターフェースである第１のインターフェース部と、
前記ネットワークに接続された１以上のインターフェースである第２のインターフェース部と、
前記第１及び第２のインターフェース部に接続された１以上のプロセッサであるプロセッサ部と
を有し、
前記不揮発メモリデバイスは、
不揮発メモリと、
データの圧縮又は解凍を行う機能である圧縮機能と
を有し、
前記不揮発メモリデバイスが、第１の圧縮データを格納している不揮発メモリを有する不揮発メモリデバイスである場合、前記プロセッサ部が、
データを伸張しないで読み出すためのリードコマンドであって、前記第１の圧縮データに対応した論理アドレスを指定した非伸張リードコマンドを、前記不揮発メモリデバイスに送信し、
転送対象のデータのノード間転送のためのコマンドであって、前記非伸張リードコマンドに応答して前記不揮発メモリデバイスの圧縮機能により伸張されること無しに前記不揮発メモリデバイスから読み出された前記第１の圧縮データを転送対象とした転送コマンドを、前記ネットワーク経由で、前記１以上のノードのいずれかに送信し、
転送対象のデータのノード間転送のためのコマンドであって、第２の圧縮データを転送対象とした転送コマンドを受信した場合、前記プロセッサ部が、
その受信した転送コマンドに応答して、前記第２の圧縮データをライト対象としたライトコマンドを、前記不揮発メモリデバイスに送信し、
前記第１及び第２の圧縮データの各々は、圧縮されたデータであり、
前記プロセッサ部は、
データを圧縮してから書き込むためのライトコマンドであり前記圧縮データに対応した圧縮前データをライト対象とした圧縮ライトコマンドを前記不揮発メモリデバイスに送信し、
前記不揮発メモリデバイスの不揮発メモリ内の前記圧縮データは、前記不揮発メモリデバイスにより、前記圧縮ライトコマンドに応答して前記圧縮前データが前記不揮発メモリデバイスの圧縮機能を用いて圧縮されたものであり、
前記不揮発メモリデバイスは、不揮発メモリの他にバッファを有し、
前記プロセッサ部は、前記不揮発メモリデバイスが提供する論理アドレス空間のうちの指定された論理アドレス毎に、データサイズと圧縮データサイズとを管理し、
前記プロセッサ部は、
前記圧縮前データを圧縮して前記バッファに書き込むためのライトコマンドであって前記圧縮前データをデータサイズとして指定した圧縮バッファライトコマンドを、前記不揮発メモリデバイスに送信し、
前記圧縮バッファライトコマンドに応答して、前記圧縮前データが圧縮されたものである圧縮データのサイズを圧縮データサイズとして、その圧縮データを格納したバッファ内領域のアドレスをバッファアドレスとして、その圧縮データのライト先の論理アドレスを論理アドレスとしてそれぞれ含んだ応答を、前記不揮発メモリデバイスから受信し、
ライト先の論理アドレスと、前記受信した応答が表す圧縮データサイズ及びバッファアドレスとを指定したライトコマンドであって、前記バッファ内領域における前記圧縮データをライト対象としたバッファデータライトコマンドを、前記不揮発メモリデバイスに送信し、
前記圧縮ライトコマンドの送信は、前記圧縮バッファライトコマンド及び前記バッファデータライトコマンドの送信であり、
前記プロセッサ部は、指定された論理アドレス及び圧縮データサイズに従う論理アドレス範囲を、前記バッファデータライトコマンドを送信してからそのコマンドに対する応答を受信するまで、別のライトコマンドでその論理アドレス範囲に属する論理アドレスが指定されないようロックをかけ、
前記不揮発メモリデバイスの不揮発メモリ内の前記圧縮データは、前記不揮発メモリデバイスにより、前記圧縮バッファライトコマンド及び前記バッファデータライトコマンドに応答して前記圧縮前データが圧縮されたものである前記圧縮データが前記バッファ内領域に格納されその圧縮データが前記バッファ内領域から前記不揮発メモリデバイスの不揮発メモリに格納されたものである、
ストレージ装置。
【請求項８】
複数の不揮発メモリデバイスを有しネットワークに接続されスケールアウト型のストレージシステムを構成する複数のノードのうちのいずれかのノードとしてのストレージ装置であって、
前記不揮発メモリデバイスに接続された１以上のインターフェースである第１のインターフェース部と、
前記ネットワークに接続された１以上のインターフェースである第２のインターフェース部と、
前記第１及び第２のインターフェース部に接続された１以上のプロセッサであるプロセッサ部と
を有し、
前記不揮発メモリデバイスは、
不揮発メモリと、
データの圧縮又は解凍を行う機能である圧縮機能と
を有し、
前記不揮発メモリデバイスが、第１の圧縮データを格納している不揮発メモリを有する不揮発メモリデバイスである場合、前記プロセッサ部が、
データを伸張しないで読み出すためのリードコマンドであって、前記第１の圧縮データに対応した論理アドレスを指定した非伸張リードコマンドを、前記不揮発メモリデバイスに送信し、
転送対象のデータのノード間転送のためのコマンドであって、前記非伸張リードコマンドに応答して前記不揮発メモリデバイスの圧縮機能により伸張されること無しに前記不揮発メモリデバイスから読み出された前記第１の圧縮データを転送対象とした転送コマンドを、前記ネットワーク経由で、前記１以上のノードのいずれかに送信し、
転送対象のデータのノード間転送のためのコマンドであって、第２の圧縮データを転送対象とした転送コマンドを受信した場合、前記プロセッサ部が、
その受信した転送コマンドに応答して、前記第２の圧縮データをライト対象としたライトコマンドを、前記不揮発メモリデバイスに送信し、
前記第１及び第２の圧縮データの各々は、圧縮されたデータであり、
前記プロセッサ部は、
データを圧縮してから書き込むためのライトコマンドであり前記圧縮データに対応した圧縮前データをライト対象とした圧縮ライトコマンドを前記不揮発メモリデバイスに送信し、
前記不揮発メモリデバイスの不揮発メモリ内の前記圧縮データは、前記不揮発メモリデバイスにより、前記圧縮ライトコマンドに応答して前記圧縮前データが前記不揮発メモリデバイスの圧縮機能を用いて圧縮されたものであり、
前記プロセッサ部は、前記不揮発メモリデバイスが提供する論理アドレス空間のうちの指定された論理アドレス毎に、データサイズと圧縮データサイズとを管理するようになっており、
前記圧縮ライトコマンドは、前記圧縮前データをデータサイズとして、前記圧縮前データのライト先の論理アドレスを論理アドレスとしてそれぞれ指定した圧縮ライトコマンドであり、
前記プロセッサ部は、
前記圧縮ライトコマンドに応答して、前記圧縮前データが圧縮されたものである圧縮データのサイズを圧縮データサイズとして含んだ応答を、前記不揮発メモリデバイスから受信し、
前記プロセッサ部は、指定された論理アドレス及びデータサイズに従う論理アドレス範囲を、前記圧縮ライトコマンドを送信してからそのコマンドに対する応答を受信するまで、別のライトコマンドでその論理アドレス範囲に属する論理アドレスが指定されないようロックをかけるようになっており、
前記プロセッサ部は、複数の実論理アドレス範囲を詰めて並ばせるためのコマンドである論理アドレス整理コマンドを、前記不揮発メモリデバイスに送信し、
前記複数の実論理アドレス範囲の各々は、実際のデータ格納範囲としての論理アドレス範囲である、
ストレージ装置。
【請求項９】
複数の不揮発メモリデバイスを有しネットワークに接続されスケールアウト型のストレージシステムを構成する複数のノードのうちのいずれかのノードとしてのストレージ装置であって、
前記不揮発メモリデバイスに接続された１以上のインターフェースである第１のインターフェース部と、
前記ネットワークに接続された１以上のインターフェースである第２のインターフェース部と、
前記第１及び第２のインターフェース部に接続された１以上のプロセッサであるプロセッサ部と
を有し、
前記不揮発メモリデバイスは、
不揮発メモリと、
データの圧縮又は解凍を行う機能である圧縮機能と
を有し、
前記不揮発メモリデバイスが、第１の圧縮データを格納している不揮発メモリを有する不揮発メモリデバイスである場合、前記プロセッサ部が、
データを伸張しないで読み出すためのリードコマンドであって、前記第１の圧縮データに対応した論理アドレスを指定した非伸張リードコマンドを、前記不揮発メモリデバイスに送信し、
転送対象のデータのノード間転送のためのコマンドであって、前記非伸張リードコマンドに応答して前記不揮発メモリデバイスの圧縮機能により伸張されること無しに前記不揮発メモリデバイスから読み出された前記第１の圧縮データを転送対象とした転送コマンドを、前記ネットワーク経由で、前記１以上のノードのいずれかに送信し、
転送対象のデータのノード間転送のためのコマンドであって、第２の圧縮データを転送対象とした転送コマンドを受信した場合、前記プロセッサ部が、
その受信した転送コマンドに応答して、前記第２の圧縮データをライト対象としたライトコマンドを、前記不揮発メモリデバイスに送信し、
前記第１及び第２の圧縮データの各々は、圧縮されたデータであり、
前記プロセッサ部は、
データを圧縮してから書き込むためのライトコマンドであり前記圧縮データに対応した圧縮前データをライト対象とした圧縮ライトコマンドを前記不揮発メモリデバイスに送信し、
前記不揮発メモリデバイスの不揮発メモリ内の前記圧縮データは、前記不揮発メモリデバイスにより、前記圧縮ライトコマンドに応答して前記圧縮前データが前記不揮発メモリデバイスの圧縮機能を用いて圧縮されたものであり、
前記プロセッサ部は、
前記圧縮ライトコマンドに応答して、前記圧縮データのサイズを圧縮データサイズとして、その圧縮データのライト先の論理アドレスを論理アドレスとしてそれぞれ含んだ応答を、前記不揮発メモリデバイスから受信し、
前記受信した応答に含まれる前記圧縮データのライト先の論理アドレスについて、その応答が表す圧縮データサイズと、前記圧縮データの圧縮前のデータのサイズであるデータサイズとを管理し、
前記プロセッサ部は、データの削除要求を受信した場合、前記データに対応する前記圧縮データのライト先の論理アドレスを解放するためのコマンドであるアドレス解放コマンドを、前記不揮発メモリデバイスに送信する、
ストレージ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、スケールアウト型のストレージシステムに関する。
【背景技術】
【０００２】
近年、スケールアウト型のストレージシステムが増えてきている。スケールアウト型のストレージシステムの特長の１つは、初期においては最低限の要件を満たす小規模なシステム構成から始めて、拡張が必要になったら、それに合わせてシステムを拡張していくというアプローチを採ることが可能な事である。この特長から、スケールアウト型のストレージシステムはクラウド環境やアーカイブ環境の基盤等に利用されている。【０００３】
他方、All Flash Array（以下、ＡＦＡ）と呼ばれるストレージ装置（全ての記憶デバイスがフラッシュデバイスであるストレージ装置）の登場により、記憶デバイスへのアクセス性能の高速化、システム構成の小型・軽量化、及び、システム全体の省電力化が可能である。ＡＦＡは、搭載するフラッシュデバイスがＨＤＤ（Hard Disk Drive）に比べビットコストが高い面を、格納するデータを圧縮することで、ビットコストを下げることを行うのが一般的となっている。データ圧縮機能を有するフラッシュデバイスについては、特許文献１に記載されている。【０００４】
ところで、スケールアウト型のストレージシステムにおけるデータ保証は、Erasure Coding技術による複数ノードに跨がったデータの冗長化（多重化を含む）によって実現される。特許文献２には、ノード内のプロセッサがデータ転送を制御することで、複数のノードに冗長データを分散して配置する技術が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】US2012/0317333
【特許文献２】US8601473
【発明の概要】
【発明が解決しようとする課題】
【０００６】
このデータ冗長化の際のノード間のデータ転送処理に関して、転送元ノードと転送先ノードの各々が有する記憶デバイスが、ＨＤＤである場合、一般に、ＨＤＤのアクセス速度と、ノード間を繋ぐネットワークの帯域との関係から、ＨＤＤがボトルネックとなる傾向にある。【０００７】
一方、転送元ノードと転送先ノードの各々が有する記憶デバイスが、フラッシュデバイスのような不揮発メモリデバイスである場合、不揮発メモリデバイスのアクセス速度と、ノード間を繋ぐネットワークの帯域との関係から、ノード間を繋ぐネットワークがボトルネックとなる可能性が大きい。
【課題を解決するための手段】
【０００８】
スケールアウト型のストレージシステムは、複数の不揮発メモリデバイスを有しネットワークに接続された複数のノードを有する。複数の不揮発メモリデバイスの各々は、不揮発メモリを有する。複数の不揮発メモリデバイスのうちの２以上の不揮発メモリデバイスの各々が、データの圧縮又は解凍を行う機能である圧縮機能を有する。第１のノードは、データを伸張しないで読み出すためのリードコマンドであって、圧縮データに対応した論理アドレスを指定した非伸張リードコマンドを、第１の不揮発メモリデバイスに送信する。第１のノードは、転送対象のデータのノード間転送のためのコマンドであって、非伸張リードコマンドに応答して第１の不揮発メモリデバイスの圧縮機能により伸張されること無しに第１の不揮発メモリデバイスから読み出された圧縮データを転送対象とした転送コマンドを、ネットワーク経由で、第２のノードに送信する。第２のノードは、転送コマンドを受信する。第２のノードは、受信した転送コマンドに応答して、圧縮データをライト対象としたライトコマンドを、第２の不揮発メモリデバイスに送信する。圧縮データは、圧縮されたデータである。第１の不揮発メモリデバイスは、複数の不揮発メモリデバイスのうち、圧縮データを格納している不揮発メモリを有する不揮発メモリデバイスである。第１のノードは、複数のノードのうち、第１の不揮発メモリデバイスを有するノードである。第２のノードは、複数のノードのうち、第１のノード以外のいずれかのノードである。第２の不揮発メモリデバイスは、複数の不揮発メモリデバイスのうち、第２のノードが有する不揮発メモリデバイスである。
【発明の効果】
【０００９】
転送元ノードと転送先ノードの各々が有する記憶デバイスが不揮発メモリデバイスであっても、ノード間を繋ぐネットワークがボトルネックとなる可能性を軽減できる。
【図面の簡単な説明】
【００１０】
【図１】実施例１の概要を示す。
【図２】ノードとＦＭデバイス間の通信の一例の概要を示す。
【図３】ストレージシステムの物理構成を示す。
【図４】ストレージシステムの論理構成を示す。
【図５】実施例１に係る容量管理の一例を示す。
【図６】実施例１に係るシステム管理テーブルの構成を示す。
【図７】ＦＭ管理テーブルの構成を示す。
【図８】実施例１に係る圧縮ライト処理の流れの詳細を示す。
【図９】実施例１に係る圧縮ライト処理におけるシステム管理テーブルを示す。
【図１０】実施例１に係る圧縮ライト処理におけるＦＭ管理テーブルを示す。
【図１１】多重化処理の流れの詳細の一部を示す。
【図１２】多重化処理の流れの詳細の残りを示す。
【図１３】多重化処理におけるシステム管理テーブルを示す。
【図１４】多重化処理におけるＦＭ管理テーブルを示す。
【図１５】実施例２に係る圧縮ライト処理の流れの詳細を示す。
【図１６】実施例２に係る圧縮ライト処理におけるシステム管理テーブルを示す。
【図１７】実施例２に係る圧縮ライト処理におけるＦＭ管理テーブルを示す。
【図１８】実施例２において実論理アドレス範囲間に隙間（空き論理アドレス範囲）が生じるメカニズムを示す。
【図１９】実施例２において実論理アドレス範囲を詰めることを示す。
【図２０】実施例３に係る圧縮ライト処理の流れの詳細を示す。
【図２１】実施例３に係る圧縮ライト処理におけるシステム管理テーブルを示す。
【図２２】実施例３に係る圧縮ライト処理におけるＦＭ管理テーブルを示す。
【図２３】実施例３に係るアドレス解放を示す。
【図２４】実施例４に係る容量管理の一例を示す。
【図２５】実施例５に係るシステム管理テーブルの構成を示す。
【発明を実施するための形態】
【００１１】
以下の説明では、「ａｂｃテーブル」の表現にて情報を説明することがあるが、情報は、テーブル以外のデータ構成で表現されていてもよい。データ構成に依存しないことを示すために「ａｂｃテーブル」のうちの少なくとも１つを「ａｂｃ情報」と呼ぶことができる。また、以下の説明において、各テーブルの構成は一例であり、１つのテーブルは、２以上のテーブルに分割されてもよいし、２以上のテーブルの全部または一部が１つのテーブルであってもよい。
【００１２】
また、以下の説明では、「インターフェース部」は、１以上のインターフェースを含む。１以上のインターフェースは、１以上の同種のインターフェースデバイス（例えば１以上のＮＩＣ（Network Interface Card））であってもよいし２以上の異種のインターフェースデバイス（例えばＮＩＣとＨＢＡ（Host Bus Adapter））であってもよい。
【００１３】
また、以下の説明では、「記憶部」は、１以上のメモリを含む。記憶部に関して少なくとも１つのメモリは、揮発性メモリでよい。記憶部は、主に、プロセッサ部による処理の際に使用される。
【００１４】
また、以下の説明では、「プロセッサ部」は、１以上のプロセッサを含む。少なくとも１つのプロセッサは、典型的には、ＣＰＵ（Central Processing Unit）のようなマイクロプロセッサである。１以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
【００１５】
また、以下の説明では、「ｋｋｋ機能」の表現にて機能を説明することがあるが、機能は、１以上のコンピュータプログラムがプロセッサ部によって実行されることで実現されてもよいし、１以上のハードウェア回路（例えばＦＰＧＡ（Field-Programmable Gate Array）又はＡＳＩＣ（Application Specific Integrated Circuit））によって実現されてもよい。プログラムがプロセッサ部によって処理部が実現される場合、定められた処理が、適宜に記憶部（例えばメモリ）及び／又はインターフェース部（例えば通信ポート）等を用いながら行われるため、機能はプロセッサ部の少なくとも一部とされてもよい。機能を主語として説明された処理は、プロセッサ部あるいはそのプロセッサ部を有する装置が行う処理としてもよい。各機能の説明は一例であり、複数の機能が１つの機能にまとめられたり、１つの機能が複数の機能に分割されたりしてもよい。
【００１６】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部（例えばメモリ）及び／又はインターフェース部（例えば通信ポート）等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理としてもよい。また、プロセッサは、処理の一部または全部を行うハードウエア回路を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記録媒体（例えば非一時的な記録媒体）であってもよい。また、以下の説明において、２以上のプログラムが１つのプログラムとして実現されてもよいし、１つのプログラムが２以上のプログラムとして実現されてもよい。
【００１７】
また、以下の説明では、「ストレージ装置」は、記憶デバイスにデータを格納する機能を有する装置であればよい。このため、ストレージ装置は、ファイルサーバのような計算機（例えば汎用計算機）であってもよい。
【００１８】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号を使用し、同種の要素を区別して説明する場合は、要素の識別番号を使用することがある。
【実施例１】
【００１９】
図１は、実施例１の概要を示す。なお、以下の説明では、混同を避けるため、クライアントからストレージシステムへの要求を「要求」と言い、ノードからＦＭデバイスへの要求を「コマンド」と言うことにする。【００２０】
スケールアウト型のストレージシステム（以下、ストレージシステム）２００は、ネットワーク１８１に接続された複数のノード１２１Ａ〜１２１Ｃを有する。複数のノード１２１Ａ〜１２１Ｃは、複数のＦＭ（フラッシュメモリ）デバイス１０１Ａ〜１０１Ｃを有する。ネットワーク１８１にクライアント１１１が接続されている。【００２１】
ＦＭデバイス１０１は、ＦＭ（フラッシュメモリ）１５４と、圧縮機能１５３と、メモリ２１１と、それらに接続されたＣＴＬ（ＦＭコントローラ）１５１とを有する。圧縮機能１５３は、データの圧縮又は解凍を行う機能であり、本実施例ではハードウェア回路である。【００２２】
本実施例では、ライト要求に従うデータを書き込む処理であるライト処理の１つとして、圧縮ライト処理が行われる。圧縮ライト処理とは、ＦＭデバイス１０１内の圧縮機能１５３によりデータを圧縮して書き込む処理である。【００２３】
圧縮ライト処理の概要は、例えば次の通りである。すなわち、ノード１２１Ａが、クライアント１１１からライト要求を受信する（Ｓ１０１）。ノード１２１Ａは、ライト対象データ（受信したライト要求に従うファイルのデータ）を圧縮して書き込むことのコマンドである圧縮ライトコマンドをＦＭデバイス１０１Ａに送信する（Ｓ１０２）。ＦＭデバイス１０１ＡのＣＴＬ１５１Ａが、その圧縮ライトコマンドに応答して、圧縮ライトコマンドに従うライト対象データ（圧縮前のデータ）を圧縮機能１５３Ａにより圧縮し、圧縮データ（圧縮されたライト対象データ）をＦＭ１５４Ａに書き込む（Ｓ１０３）。【００２４】
また、本実施例では、多重化処理が行われる。多重化処理とは、データを多重化する処理、すなわち、多重化対象のデータを、２以上のノード１２１（２以上のノード１２１の２以上のＦＭデバイス１０１）に分散する処理である。多重化処理では、多重化対象のデータが、ネットワーク１８１経由でノード間転送される。「ノード間転送」とは、ノード１２１から別のノード１２１への転送を意味する。本実施例に係る多重化処理では、多重化対象のデータが圧縮データの場合、圧縮データが伸張されることなく圧縮された状態のままノード間転送される。【００２５】
多重化処理の概要は、例えば次の通りである。ノード１２１Ａ（第１のノードの一例）が、データを伸張しないで読み出すためのリードコマンドである非伸張リードコマンドを、ＦＭデバイス１０１Ａ（第１の不揮発メモリデバイスの一例）に送信する（Ｓ１１１）。ＦＭデバイス１０１ＡのＣＴＬ１５１Ａが、その非伸張リードコマンドに応答して、ＦＭ１５４Ａから圧縮データを読み出し、圧縮データをノード１２１Ａに返す（Ｓ１１２）。ノード１２１Ａは、その圧縮データを転送対象とした転送コマンド（転送対象のデータのノード間転送のためのコマンド）を、ネットワーク１８１経由で、ノード１２１Ｂ（第２のノードの一例）に送信する（Ｓ１１３）。ノード１２１Ｂは、その転送コマンドに応答して、その転送コマンドに従う圧縮データを書き込むためのライトコマンドを、ＦＭデバイス１０１Ｂ（第２の不揮発メモリデバイスの一例）に送信する（Ｓ１１４）。ＦＭデバイス１０１ＢのＣＴＬ１５１Ｂが、そのライトコマンドに応答して、そのコマンドに従うライト対象データ（圧縮データ）をＦＭ１５４Ｂに書き込む（Ｓ１１５）。【００２６】
図２は、ノード１２１ＡとＦＭデバイス１０１Ａ間の通信の一例の概要を示す。【００２７】
ノード１２１Ａは、メモリ２２２Ａ及びＣＰＵ２２１Ａを有する。上述した圧縮ライトコマンド及び非伸張リードコマンドはＣＰＵ２２１Ａにより発行される。【００２８】
圧縮ライトコマンドの発行に関しては、例えば次の通りである（実線を参照）。メモリ２２２Ａにライト対象データが格納されており、ノード１２１ＡのＣＰＵ２２１が、そのライト対象データの圧縮ライトコマンドをＦＭデバイス１０１Ａに送信する（Ｓ２０１）。その圧縮ライトコマンドに付随して、メモリ２２２Ａ内のライト対象データが、ＦＭデバイス１０１Ａのメモリ２１１Ａに転送される（Ｓ２０２）。ＦＭデバイス１０１ＡのＣＴＬ１５１Ａが、ノード１２１Ａからの圧縮ライトコマンドに対する完了応答をノード１２１Ａに返す（Ｓ２０３）。ＣＴＬ１５１Ａが、メモリ２１１Ａ内のライト対象データ（圧縮前のデータ）を圧縮機能１５３Ａにより圧縮し（Ｓ２０４）、圧縮データ（圧縮されたライト対象データ）をメモリ２１１Ａに格納し（Ｓ２０５）、メモリ２１１Ａ内の圧縮データをＦＭ１５４Ａに書き込む（Ｓ２０６）。【００２９】
非伸張リードコマンドの発行に関しては、例えば次の通りである（破線を参照）。ノード１２１Ａが、非伸張リードコマンドをＦＭデバイス１０１Ａに送信する（Ｓ２１１）。ＦＭデバイス１０１ＡのＣＴＬ１５１Ａが、その非伸張リードコマンドに応答して、ＦＭ１５４Ａから圧縮データを読み出し、その圧縮データをメモリ２１１Ａに書き込む（Ｓ２１２）。ＦＭデバイス１０１ＡのＣＴＬ１５１Ａ及びノード１２１ＡのＣＰＵ２２１Ａにより、ＦＭデバイス１０１Ａのメモリ２１１Ａからノード１２１Ａのメモリ２２２Ａに圧縮データが転送される（Ｓ２１３）。ＣＴＬ１５１Ａが、ノード１２１Ａからの非伸張リードコマンドに対する完了応答をノード１２１Ａに返す（Ｓ２１４）。【００３０】
以下、本実施例を詳細に説明する。【００３１】
図３は、ストレージシステムの物理構成を示す。【００３２】
ストレージシステム２００が、複数のノード１２１Ａ〜１２１Ｃを有する。ノード１２１の数は２以上であればよい。【００３３】
複数のノード１２１Ａ〜１２１Ｃは、複数のＦＭデバイス１０１Ａ〜１０１Ｃを有する。本実施例では、ノード１２１とＦＭデバイス１０１の対応は、１：１であるが、１：１に限らないでよい（例えば１：Ｎ（Ｎは２以上の整数）で対応してもよい）。また、本実施例によれば、ノード１２１ｋ（ｋ＝Ａ、Ｂ、…）が有する構成要素の各々について、参照符号の末尾は、ｋである。【００３４】
複数のノード１２１Ａ〜１２１Ｃは、ネットワーク１８１に接続される。ノード１２１間は、クライアント１１１が接続されるフロントエンドのネットワーク１８１に代えて、バックエンドのネットワークを介して接続されてもよく、ノード間転送は、バックエンドのネットワーク経由で行われてもよい。【００３５】
ノード１２１Ａを例に取り、ノード１２１のハードウェア構成を説明する。ノード１２１Ａは、ＦＥ（フロントエンド）インターフェース２２３Ａと、ＢＥ（バックエンド）インターフェース２２４Ａと、メモリ２２２Ａと、それらに接続されたＣＰＵ２２１Ａとを有する。ＦＥインターフェース２２３Ａは、第２のインターフェース部の一例であり、ネットワーク１８１に接続される。ＢＥインターフェース２２４Ａは、第１のインターフェース部の一例であり、ＦＭデバイス１０１Ａが接続される。メモリ２２２Ａは、記憶部の一例であり、プログラムや情報を格納する。プログラムは、例えば、後述の上位層と、記憶制御機能を実現するためのプログラムと、ＯＳカーネルと、ドライバとを含む。情報は、例えば、圧縮機能管理テーブル１７１Ａと、システム管理テーブル４００Ａとを含む。ＣＰＵ２２１Ａは、プロセッサ部の一例であり、メモリ２２２Ａ内のプログラムを実行する。【００３６】
ＦＭデバイス１０１Ａを例に取り、ＦＭデバイス１０１のハードウェア構成を説明する。ＦＭデバイス１０１Ａは、ＦＭ１５４Ａと、圧縮機能１５３Ａと、メモリ２１１Ａと、インターフェース２１２と、それらに接続されたＣＴＬ１５１Ａとを有する。インターフェース２１２には、ノード１２１Ａ（ＢＥインターフェース２２４Ａ）が接続される。メモリ２１１Ａには、例えばバッファ（記憶領域）７５０Ａを設けることができる。また、メモリ２１１Ａは、プログラムや情報を格納する。プログラムは、例えばファームウェアを含む。情報は、例えば、ＦＭ管理テーブル５００Ａを含む。【００３７】
図４は、ストレージシステムの論理構成を示す。なお、以下の説明では、混同を避けるため、クライアント１１１からの要求を「要求」と言い、上位層１３１からの要求を「指示」と言い、記憶制御機能１３０からの要求を「コマンド」と言うことにする。【００３８】
ストレージシステム２００は、例えば、分散システム、クラスタシステム或いはクラウドシステムである。ストレージシステム２００は、例えば、ネットワーク１８１に接続されているクライアント１１１に、論理ボリュームを提供する。クライアント１１１は、ストレージシステムにＩ／Ｏ（Input/Output）要求を送信する計算機である。Ｉ／Ｏ要求は、ライト要求又はリード要求である。Ｉ／Ｏ要求では、例えば、Ｉ／Ｏ対象のファイルのファイル名が指定される。クライアント１１１は、Ｉ／Ｏ要求の発行元の一例である。Ｉ／Ｏ要求の発行元は、クライアント１１１に代えて、例えば、ノード１２１において実行されるＶＭ（Virtual Machine）であってもよいし、後述の上位層１３１（例えばアプリケーションプログラム）であってもよい。【００３９】
ＦＭデバイス１０１は、不揮発メモリデバイスの一例である。ＦＭ１５４は、不揮発メモリの一例である。ＦＭ１５４は、例えば、ＮＡＮＤフラッシュメモリ、すなわち、それぞれが複数の物理ページで構成された複数の物理ブロックを有する。ＣＴＬ１５１は、例えばプロセッサ部であり、複数種類のＩ／Ｏコマンド、具体的には、例えば、後述する通常Ｉ／Ｏコマンドと圧縮Ｉ／Ｏコマンドを受け付けることができる。また、ＣＴＬ１５１は、論理アドレス空間を提供する。ＣＴＬ１５１は、論理アドレスと物理アドレスの対応関係を管理し、アドレス変換を実行できる。圧縮機能１５３は、本実施例ではハードウェア回路であるが、ＣＴＬ１５１がプログラムを実行することにより実現されてもよい。【００４０】
ノード１２１は、サーバのようなストレージ装置であり、例えばファイルサーバである。ノード１２１は、上位層１３１、記憶制御機能１３０、ＯＳカーネル１３５及びドライバ１３６を有する。上位層１３１、ＯＳカーネル１３５及びドライバ１３６の各々は、ノード１２１内のプロセッサ部によって実行されるプログラムであり、記憶制御機能１３０は、ノード１２１内のプロセッサ部がプログラムを実行することにより実現される機能である。【００４１】
上位層１３１は、クライアント１１１からＩ／Ｏ要求を受け付けそのＩ／Ｏ要求に従うＩ／Ｏ指示を出すプログラム、例えばアプリケーションプログラムである。【００４２】
記憶制御機能１３０は、上位層１３１からのＩ／Ｏ指示（又はクライアント１１１からのＩ／Ｏ要求）に従うＩ／Ｏを制御する機能である。記憶制御機能１３０は、圧縮チェック機能１３２、圧縮機能１３３及びアドレス管理機能１３４を有する。また、記憶制御機能１３０は、圧縮機能管理テーブル１７１及びシステム管理テーブル４００を管理する。機能１３２〜１３４のいずれも、ノード１２１内のプロセッサ部がプログラムを実行することにより実現される機能である。圧縮チェック機能１３２は、Ｉ／Ｏ先のＦＭデバイス１０１が圧縮機能１５３を有するか否かをチェックする機能と、読出し元のＦＭデバイス１０１内の圧縮機能１５３と同等の圧縮機能を有するＦＭデバイス１０１に接続されているノードを探すノード探索を実行する機能とのうちの少なくとも１つの機能を含んだ機能である。圧縮機能１３３は、データの圧縮又は解凍を行う機能である。アドレス管理機能１３４は、ＦＭデバイス１０１から提供される論理アドレス空間における論理アドレスを管理する機能である。圧縮機能管理テーブル１７１は、少なくとも自ノード１２１（そのテーブル１７１を有するノード１２１）以外の各ノード１２１について、圧縮機能１３３及び圧縮機能１５３に関する詳細（例えば、圧縮機能の有無、圧縮アルゴリズムの種類）を表す情報を保持する。【００４３】
記憶制御機能１３０は、上位層１３１からのＩ／Ｏ指示（又はクライアント１１１からのＩ／Ｏ要求）に従うＩ／Ｏコマンドとして、複数種類のＩ／Ｏコマンド、例えば、通常Ｉ／Ｏコマンドと、圧縮Ｉ／Ｏコマンドとを選択的に発行できる。通常Ｉ／Ｏコマンドは、ノード１２１の圧縮機能１３３による圧縮又は伸張が必要されるデータのＩ／Ｏコマンドである。圧縮Ｉ／Ｏコマンドは、ノード１２１の圧縮機能１３３による圧縮又は伸張が必要されないデータのＩ／Ｏコマンドである。圧縮Ｉ／Ｏコマンドの一例が、上述した圧縮ライトコマンド及び非伸張リードコマンドである。圧縮Ｉ／Ｏコマンドでは、ＦＭデバイス１０１の圧縮機能１５３による圧縮又は伸張が必要とされるかされないかが指定される。つまり、圧縮Ｉ／Ｏコマンドにより、ノード１２１Ａの圧縮機能１３３による圧縮又は伸張無しにＩ／Ｏ対象のデータを圧縮又は伸張したり、圧縮データ（圧縮されたデータ）をそのまま（ＦＭデバイス１０１の圧縮機能１５３による圧縮又は伸張無しに）書き込む又は読み出すことをしたりすることができる。なお、本実施例において、通常Ｉ／Ｏコマンド及び圧縮機能１３３は必ずしも無くてもよい。Ｉ／Ｏコマンドとその応答は、ＯＳカーネル１３５及びドライバ１３６を経由する（記憶制御機能１３０とＦＭデバイス１０１間の実線矢印を参照）。【００４４】
ＯＳカーネル１３５は、記憶制御機能１３０からのＩ／Ｏコマンドをドライバ１３６に転送したり、ドライバ１３６経由の応答（Ｉ／Ｏコマンドに対する応答であってＦＭデバイス１０１からの応答）を記憶制御機能１３０に転送したりする。その応答を記憶制御機能１３０が受けた場合、Ｉ／Ｏ指示に対する応答が記憶制御機能１３０から上位層１３１に返されてよい。その応答が上位層１３１に返された場合、上位層１３１が、Ｉ／Ｏ要求に対する応答をクライアント１１１に返してよい。【００４５】
ドライバ１３６は、ＦＭデバイス１０１のドライバである。【００４６】
各ノード１２１は、少なくとも１つのＦＭデバイス１０１を内蔵していてもよい。言い換えれば、ＦＭデバイス１０１は、ノード１２１の外付けに限らず、ノード１２１に内蔵されていてもよい。【００４７】
また、各ノード１２１は、ハイパーバイザ（図示せず）を有していてよい。ハイパーバイザが、サーバとして動作するサーバＶＭと、ストレージとして動作するストレージＶＭとを生成してよい。サーバＶＭが、上位層１３１を含み、ストレージＶＭが、記憶制御機能１３０、ＯＳカーネル１３５及びドライバ１３６を含んでもよい。【００４８】
また、複数のノード１２１に跨った処理システム（例えば分散型システム）１９０が実現される。処理システム１９０は、上位層１３１及び記憶制御機能１３０を含む。上位層１３１（１３１Ａ及び１３１Ｂ）及び記憶制御機能１３０（１３０Ａ及び１３０Ｂ）は、複数のノード１２１に跨っていてよい。処理システム１９０が、クライアント１１１に論理ボリュームを提供してよい。処理システム１９０が、論理ボリュームの記憶容量のうちの使用量（或いは空き容量）を管理してよい。【００４９】
いずれのノード１２１も、ネットワーク１８１経由で、クライアント１１１からＩ／Ｏ要求を受けることができる。また、いずれのノード１２１も、他のノード１２１との間で、データ転送を行うことができる（ノード１２１間の実線矢印を参照）。【００５０】
以下、圧縮ライト処理（太い破線を参照）と、多重化処理（太い一点鎖線を参照）との一例を説明する。【００５１】
＜圧縮ライト処理＞【００５２】
圧縮ライト処理では、ノード１２１Ａの圧縮機能１３３は使用されない。ノード１２１Ａがクライアント１１１からライト要求を受けた場合、圧縮チェック機能１３２Ａが、ＦＭデバイス１０１Ａに圧縮機能１５３Ａが有るか否かをチェックする（圧縮機能１５３ＡがＦＭデバイス１０１Ａに有ることが予め分かっていればそのチェックはスキップされてよい）。圧縮機能１５３が無い場合、ノード１２１Ａの圧縮機能１３３の使用に切り替えること、すなわち、圧縮機能１５３Ａが無くても、圧縮データの書込みと、後述の多重化処理でのノード間転送の転送対象を圧縮データとすることを維持することができる。【００５３】
チェック結果が真の場合、記憶制御機能１３０Ａは、ライト対象データ（ライト要求に従うファイルのデータ）を圧縮して書き込むことのコマンドである圧縮ライトコマンド（圧縮Ｉ／Ｏコマンドの一例）をＦＭデバイス１０１Ａに送信する。ＦＭデバイス１０１ＡのＣＴＬ１５１Ａが、その圧縮ライトコマンドを受信する。ＣＴＬ１５１Ａが、そのコマンドに応答して、そのコマンドに従うライト対象データ（圧縮前のデータ）を圧縮機能１５３Ａにより圧縮し、圧縮データ（圧縮されたライト対象データ）をＦＭ１５４Ａに書き込む。なお、太い鎖線には示されていないが、ＣＴＬ１５１Ａは、圧縮ライトコマンドに対する応答（完了応答）を返す。【００５４】
＜多重化処理＞【００５５】
多重化処理は、ライト処理の完了（例えば、圧縮ライトコマンドに対する完了応答の受信）に応答して開始されてもよいし、ライト処理の完了とは非同期に開始されてもよい。以下、多重化対象のデータが、上記の圧縮ライト処理においてＦＭ１５４Ａに書き込まれた圧縮データであるとする。【００５６】
ノード１２１Ａの記憶制御機能１３０Ａが、多重化対象の圧縮データに対応した論理アドレスを指定した非伸張リードコマンド（圧縮Ｉ／Ｏコマンドの一例）を、ＦＭデバイス１０１Ａに送信する。ＦＭデバイス１０１ＡのＣＴＬ１５１Ａが、その非伸張リードコマンドを受信する。ＣＴＬ１５１Ａが、そのコマンドに応答して、そのコマンド指定されている論理アドレスに対応した物理アドレスが指す物理領域（ＦＭ１５４Ａにおける領域）から圧縮データを読み出し、その圧縮データを（圧縮機能１５３Ａによりその圧縮データを伸張すること無し）にノード１２１Ａに返す。【００５７】
記憶制御機能１３０Ａは、その読み出された圧縮データを転送対象とした転送コマンドを、ネットワーク１８１経由で、ノード１２１Ｂに送信する。【００５８】
ノード１２１Ｂの記憶制御機能１３０Ｂが、その転送コマンドを受信し、その転送コマンドに応答して、その転送コマンドに従う圧縮データをライト対象としたライトコマンドを、ＦＭデバイス１０１Ｂに送信する。本実施例では、そのライトコマンドは、データを圧縮しないで書き込むための非圧縮ライトコマンド（圧縮Ｉ／Ｏコマンドの一例）である。ＦＭデバイス１０１ＢのＣＴＬ１５１Ｂが、その非圧縮ライトコマンドを受信する。ＣＴＬ１５１Ｂが、その非圧縮ライトコマンドに応答して、そのコマンドに従うライト対象データ（圧縮データ）をそのまま（圧縮機能１５３Ｂによる圧縮無しに）ＦＭ１５４Ｂに書き込む。これにより、重複した圧縮処理、すなわち、ノード間転送の対象が圧縮データであるが故に起こり得る課題を、避けることができる。【００５９】
なお、ノード１２１Ｂは、ＦＭデバイス１０１Ａの圧縮機能１５３Ａと同等の圧縮機能１５３Ｂを有するＦＭデバイス１０１Ｂを有するノードである。例えば、圧縮チェック機能１３２Ａが、ノード１２１Ａ以外のノードのうち、圧縮機能１５３Ａ（多重化対象のデータを圧縮した圧縮機能）と同等の圧縮機能を有するＦＭデバイス１０１を有するノード１２１を、圧縮機能管理テーブル１７１Ａを参照して探すことであるノード探索を実行し、ノード１２１Ｂは、そのノード探索により見つかったノードである。圧縮データの転送先が、圧縮機能１５３Ａと同等の圧縮機能１５３Ｂを有するＦＭデバイス１０１Ｂに接続されたノード１２１Ｂである。このため、ノード１２１Ｂが、圧縮データの圧縮前データをリード対象としたリード要求をクライアント１１１から受けても、ノード１２１Ｂが、圧縮機能１５３Ｂによりその圧縮データを伸張するためのコマンドである伸張リードコマンド（圧縮Ｉ／Ｏコマンドの一例）をＦＭデバイス１０１Ｂに送信することで、その圧縮データがＦＭデバイス１０１Ｂの圧縮機能１５３Ｂにより伸張されたデータである圧縮前データをＦＭデバイス１０１Ｂから受けて、その圧縮前データをクライアント１１１に返すことができる。【００６０】
また、多重化処理（又は、リード処理）において、記憶制御機能１３０Ａの圧縮チェック機能１３２Ａが、リード対象のデータを格納しているＦＭデバイス１０１Ａが圧縮機能１５３Ａを有するか否かをチェックしてよい（圧縮機能１５３ＡがＦＭデバイス１０１Ａに有ることが予め分かっていればそのチェックはスキップされてよい）。そして、そのチェック結果が真の場合、記憶制御機能１３０Ａが、上述の非伸張リードコマンドをＦＭデバイス１０１Ａに送信してもよい。例えば、リード処理において、伸張されたデータが必要であるにも関わらず圧縮機能１５３Ａが無い場合、ノード１２１Ａの圧縮機能１３３Ａの使用に切り替えること、すなわち、圧縮機能１５３Ａが無くても、伸張されたデータを取得することができる。なお、圧縮機能１３３Ａの圧縮アルゴリズムは、圧縮機能１５３Ａの圧縮アルゴリズムと同等である。【００６１】
上述の説明によれば、多重化処理において、圧縮データを転送対象としたノード間転送が可能である。このため、ネットワーク１８１の負荷を軽減でき、以って、ノード１２１の記憶デバイスとしてＦＭデバイス１０１が採用されても、ネットワーク１８１がボトルネックとなる可能性を軽減することができる。【００６２】
また、上述の説明によれば、圧縮Ｉ／Ｏコマンドの一例である非伸張リードコマンド及び非圧縮ライトコマンドにより、圧縮データの非伸張状態での転送が可能である。【００６３】
また、上述の説明によれば、上位層１３１より下位にある記憶制御機能１３０によって、圧縮に関する処理（例えば、圧縮Ｉ／Ｏコマンドが利用できるか否か（圧縮機能を有するか否か）のチェック）が行われる。これにより、上位層１３１には、圧縮による影響を意識させないことができる。【００６４】
また、上述の説明によれば、圧縮を、ノード１２１内のプロセッサ部（ＣＰＵ）ではなく、ＦＭデバイス１０１が行う。このため、ノード１２１内のプロセッサ部による圧縮／伸張処理オーバヘッドがなく、システム性能向上が期待できる。【００６５】
ストレージシステム２００は、クライアント１１１に論理ボリュームを提供するが、本実施例では、以下の容量管理が採用される。【００６６】
図５は、容量管理の一例を示す。【００６７】
例えば、ＦＭデバイス１０１Ａ〜１０１Ｃが、それぞれ、１ＴＢの論理アドレス空間をノード１２１Ａ〜１２１Ｃに提供したとする。１ＴＢ（論理アドレス空間の容量）は、ＦＭ１５４の物理記憶容量と同じであるとする。【００６８】
そして、ノード１２１Ａ〜１２１Ｃも、それぞれ、１ＴＢの論理記憶空間を提供する。結果として、クライアント１１１からは、３ＴＢ（＝１ＴＢ×３（ノード数））の論理ボリュームが見える。【００６９】
本実施例に係る容量管理によれば、クライアント１１１から２ＴＢのデータのライト要求を受け、２ＴＢのデータの圧縮後のデータサイズが１ＴＢとなった場合、ライト要求に従うライト対象のデータのデータサイズは、１ＴＢであると管理される。例えば、ノード１２１の圧縮機能１３３が圧縮を行った場合は、記憶制御機能１３０によって圧縮後のデータサイズが特定される。ＦＭデバイスの圧縮機能１５３が圧縮を行った場合は、圧縮後のデータサイズを表す値を含んだ通知（例えば、Ｉ／Ｏコマンドに対する応答）がノード１２１に送られる。故に、処理システム１９０は、３ＴＢの論理ボリュームの使用量は１ＴＢであって空き容量は２ＴＢであると管理できる。結果として、処理システム１９０により管理される空き容量と、ＦＭデバイス１０１Ａ〜１０１Ｃの合計空き容量とが一致する。【００７０】
図６は、システム管理テーブルの構成を示す。【００７１】
システム管理テーブル４００は、処理システム１９０が保持するテーブルである。システム管理テーブル４００は、ストレージシステム２００に格納されたファイル毎に、エントリを有する。エントリは、圧縮状況４０１、ファイル名４０２、論理アドレス４０３、バッファアドレス４０６、データサイズ４０４及び圧縮データサイズ４０５といった情報を保持する。圧縮状況４０１は、ファイル（データ）が圧縮データであるか否かを表す。ファイル名４０２は、ファイルの名前を表す。論理アドレス４０３は、ファイルの格納先を示す論理アドレスを表す。バッファアドレス４０６は、バッファ領域（ＦＭデバイス１０１のメモリ２１１に設けられたバッファにおける領域）のアドレスを表す。データサイズ４０４は、ファイルのサイズを表す。圧縮データサイズ４０５は、ファイルの圧縮後のサイズ（圧縮データのサイズ）を表す。【００７２】
記憶制御機能１３０は、システム管理テーブル４００の論理アドレス４０３及び圧縮データサイズ４０５を基に、論理アドレス空間における空きの論理アドレス範囲を特定することができる。【００７３】
なお、本実施例では、複数のＦＭデバイス１０１において論理アドレスは重複しない。このため、論理アドレスからＦＭデバイス１０１を特定することができる。【００７４】
また、本実施例では、システム管理テーブル４００の内容は、処理システム１９０において共通でよい。具体的には、例えば、全てのノード１２１の各々が、システム管理テーブル４００を有してよい。システム管理テーブル４００の同期処理が行われてよい。例えば、いずれかのノード１２１においてシステム管理テーブル４００が更新された場合、そのノード１２１以外の各ノード１２１におけるシステム管理テーブル４００が同様に更新されてよい。【００７５】
図７は、ＦＭ管理テーブルの構成を示す。【００７６】
ＦＭ管理テーブル５００は、ＦＭデバイス１０１が保持するテーブルである。ＦＭ管理テーブル５００は、そのテーブル５００を保持するＦＭデバイス１０１が提供する論理アドレス空間における論理アドレス毎に、エントリを有する。エントリは、圧縮状況５０１、論理アドレス５０２、バッファアドレス５０６、物理アドレス５０３、データサイズ５０４及び圧縮データサイズ５０５といった情報を保持する。圧縮状況５０１は、論理アドレスが示す格納先に存在するデータ（以下、この段落において「対象データ」）が圧縮データであるか否かを表す。論理アドレス５０２は、論理アドレスを表す。物理アドレスは、論理アドレスに割り当てられた物理アドレスを表す。データサイズ５０４は、対象データ（対象データが圧縮データであれば圧縮前のデータ）のサイズを表す。圧縮データサイズ５０５は、圧縮データのサイズを表す。対象データが、非圧縮データ（圧縮されていないデータ）であれば、圧縮データサイズ５０５は無効な値（例えば“-”）でよい。【００７７】
以下、圧縮ライト処理及び多重化処理の詳細を説明する。なお、以下、本実施例における圧縮ライト処理を、「第１の圧縮ライト処理」と言う。【００７８】
図８は、第１の圧縮ライト処理の流れの詳細を示す。ノード１２１Ａ及びＦＭデバイス１０１Ａを例に取る。【００７９】
ライトコマンドでは、ライト先の論理アドレス範囲を指定する必要がある。ライトコマンド処理中（ライトコマンドを発行してから完了応答を受信するまで）、そのライトコマンドで指定された論理アドレス範囲の少なくとも一部が別のライトコマンドで指定されることの無いよう、記憶制御機能１３０Ａはその論理アドレス範囲をロックする。このため、圧縮ライトコマンドで指定された論理アドレス範囲は正確であることが望ましい。【００８０】
論理アドレス範囲は、本実施例では、論理アドレスとデータサイズとの組合せで定義される。圧縮ライトコマンドによれば、ライト対象データのＦＭ１５４に対する書込みは、ライト対象データの圧縮後に行われる。このため、ＦＭ１５４に圧縮データが書き込まれる前に記憶制御機能１３０Ａが圧縮データサイズを知ることが望ましい。【００８１】
そこで、第１の圧縮ライト処理によれば、圧縮データがＦＭデバイス１０１のバッファに一時的に格納され、圧縮データサイズが記憶制御機能１３０Ａに通知された後に、圧縮データがＦＭ１２１に書き込まれる。【００８２】
具体的には、以下の通りである。【００８３】
ノード１２１Ａが、クライアント１１１からライト要求を受信する（Ｓ８０１）。ライト要求では、ファイル名“Ｉ”と、ファイルのデータサイズ“α”と指定されている。記憶制御機能１３０Ａが、そのファイル名“Ｉ”とデータサイズ“α”を、システム管理テーブル４００Ａに登録する（図９の参照符号４００Ａ−９−１を参照）。【００８４】
記憶制御機能１３０Ａが、ＦＭデバイス１０１Ａの圧縮機能の有無をチェックする（Ｓ８０２）。【００８５】
Ｓ８０２のチェック結果が真の場合、記憶制御機能１３０Ａが、圧縮前データ（ライト要求に従うデータ）を圧縮してバッファに書き込むための圧縮バッファライトコマンドをＦＭデバイス１０１Ａに送信する（Ｓ８０３）。そのコマンドでは、圧縮前データのデータサイズ“α”が指定される。【００８６】
ＦＭデバイス１０１ＡのＣＴＬ１５１Ａが、ノード１２１Ａからの圧縮バッファライトコマンドに応答して、Ｓ８０４及びＳ８０５を実行する。すなわち、ＣＴＬ１５１Ａが、そのコマンドに従うデータを圧縮機能１５３Ａにより圧縮し、圧縮データをバッファに書き込む（Ｓ８０４）。ＣＴＬ１５１Ａは、そのコマンドに対する応答を、ノード１２１Ａに返す（Ｓ８０５）。その応答では、圧縮状況“〇”（圧縮されたことを意味する値）、バッファアドレス“ｉ”（圧縮データを格納した領域（バッファ内の領域）のアドレス）、データサイズ“α”（圧縮前データのサイズ）及び圧縮データサイズ“β”（圧縮データのサイズ）が指定される。典型的には、βはαより小さい。また、Ｓ８０５では、ＣＴＬ１５１Ａが、圧縮状況“〇”、バッファアドレス“ｉ”、データサイズ“α”及び圧縮データサイズ“β”をＦＭ管理テーブル５００Ａに登録する（図１０の参照符号５００Ａ−１０−１を参照）。【００８７】
記憶制御機能１３０Ａが、Ｓ８０６を実行する。すなわち、記憶制御機能１３０Ａが、ＦＭデバイス１０１Ａからの応答で指定されている圧縮状況“〇”、バッファアドレス“ｉ”及び圧縮データサイズ“β”を、システム管理テーブル４００Ａに追記する（図９の参照符号４００Ａ−９−２を参照）。記憶制御機能１３０Ａが、圧縮データサイズ“β”と、システム管理テーブル４００Ａから特定される空き論理アドレス範囲とを基に、ライト先として指定する論理アドレス“Ａ”を決定する。記憶制御機能１３０Ａが、その論理アドレス“Ａ”を、システム管理テーブル４００Ａに追記する（図９の参照符号４００Ａ−９−３を参照）。【００８８】
記憶制御機能１３０Ａが、バッファ内領域における圧縮データをライト対象としたバッファデータライトコマンド（圧縮Ｉ／Ｏコマンドの一例）を、ＦＭデバイス１０１Ａに送信する（Ｓ８０７）。そのコマンドでは、論理アドレス“Ａ”と、受信した応答が表す圧縮データサイズ“β”及びバッファアドレス“ｉ”とが指定される。【００８９】
ＦＭデバイス１０１ＡのＣＴＬ１５１Ａが、ノード１２１Ａからのバッファデータライトコマンドに応答して、Ｓ８０８及びＳ８０９を実行する。すなわち、ＣＴＬ１５１Ａが、指定された論理アドレス“Ａ”に、圧縮データサイズ“β”に基づき空きの物理アドレス“ｂ”を割り当て、論理アドレス“Ａ”及び物理アドレス“ｂ”をＦＭ管理テーブル５００Ａに追記する（図１０の参照符号５００Ａ−１０−２を参照）。ＣＴＬ１５１Ａが、バッファアドレス“ｉ”及び圧縮データサイズ“β”に基づき、バッファ内領域における圧縮データを、指定された論理アドレス“Ａ”に割り当てた物理アドレス“ｂ”が示す物理領域（ＦＭ１５１Ａにおける領域）に書き込む（Ｓ８０８）。ＣＴＬ１５１Ａが、そのコマンドに対する応答を、ノード１２１Ａに返す（Ｓ８０９）。Ｓ８０９では、ＣＴＬ１５１Ａが、バッファアドレス“ｉ”を解放する、具体的には、バッファアドレス“ｉ”をＦＭ管理テーブル５００Ａから削除する（図１０の参照符号５００Ａ−１０−３を参照）。【００９０】
ノード１２１Ａの記憶制御機能１３０Ａが、その応答を受けて、Ｓ８１０を実行する。すなわち、記憶制御機能１３０Ａが、バッファアドレス“ｉ”をシステム管理テーブル４００Ａから削除する（図９の参照符号４００Ａ−９−４を参照）。【００９１】
第１の圧縮ライト処理によれば、ＦＭ１５４Ａに圧縮データを書き込む前にノード１２１Ａが圧縮データサイズを知ることができるので、ノード１２１Ａによりロックされる論理アドレス範囲を正確な範囲とする（言い換えれば、論理アドレスを無駄なく使用する）ことができる。【００９２】
図１１及び図１２は、多重化処理の流れの詳細を示す。【００９３】
ノード１２１Ａが、多重化要求をクライアント１１１から受信する（Ｓ１１０１）。多重化要求では、多重化対象のファイルのファイル名“Ｉ”と、そのファイルのデータサイズ“α”とが指定されている。【００９４】
記憶制御機能１３０Ａが、多重化対象のファイルのファイル名“Ｉ”に対応した論理アドレス“Ａ”をシステム管理テーブルから特定し、特定した論理アドレス“Ａ”に対応したＦＭデバイス１０１Ａの圧縮機能の有無をチェックする（Ｓ１１０２）。【００９５】
Ｓ１１０２のチェック結果が真の場合、記憶制御機能１３０Ａが、多重化対象のファイルのファイル名“Ｉ”に対応した値、すなわち、圧縮状況“○”、論理アドレス“Ａ”、データサイズ“α”及び圧縮データサイズ“β”を特定し（Ｓ１１０３）、特定した値に基づく非伸張リードコマンド（圧縮Ｉ／Ｏコマンドの一例）を、ＦＭデバイス１０１Ａに送信する（Ｓ１１０４）。そのコマンドでは、圧縮状況“×”、論理アドレス“Ａ”及びデータサイズ“α”及び圧縮データサイズ“β”が指定される。圧縮状況“×”は、対象のデータが圧縮されていないことを意味する。ここで圧縮状況が“×”とされる理由は後述する。【００９６】
ＦＭデバイス１０１ＡのＣＴＬ１５１Ａが、ノードＡからの非伸張リードコマンドに応答して、Ｓ１１０５及びＳ１１０６を実行する。すなわち、ＣＴＬ１５１Ａが、そのコマンド指定されている論理アドレス“Ａ”に対応した物理アドレス“ｂ”が指す物理領域（ＦＭ１５４Ａにおける領域）から圧縮データを読み出す（Ｓ１１０５）。ＣＴＬ１５１Ａが、その圧縮データを、そのまま（圧縮機能１５３Ａによりその圧縮データを伸張すること無し）にノード１２１Ａに返す（Ｓ１１０６）。【００９７】
記憶制御機能１３０Ａが、ノード探索を実行する（Ｓ１１０７）。ノード探索とは、ノード１２１Ａ以外のノードのうち、圧縮機能１５３Ａ（多重化対象のデータを圧縮した圧縮機能）と同等の圧縮機能を有するＦＭデバイス１０１を有するノード１２１を、圧縮機能管理テーブル１７１Ａを参照して探すことである。このノード探索により、ノード１２１Ｂが見つかったとする。【００９８】
記憶制御機能１３０Ａは、その読み出された圧縮データを転送対象とした転送コマンドを、ネットワーク１８１経由で、Ｓ１１０７で見つかったノード１２１Ｂに送信する（Ｓ１１０８）。転送コマンドでは、圧縮状況“〇”、ファイル名“Ｉ”（圧縮データの圧縮前データ（ファイル）のファイル名）、データサイズ“α”、圧縮データサイズ“β”、転送元“Node#1”（転送元ノード１２１ＡのＩＤ）及び転送先“Node#2”（転送先ノード１２１ＢのＩＤ）が指定される。【００９９】
ノード１２１Ｂの記憶制御機能１３０Ｂが、その転送コマンドに応答して、Ｓ１１０９及びＳ１１１０を実行する。すなわち、記憶制御機能１３０Ｂが、転送コマンドで指定されている値（圧縮状況“〇”、ファイル名“Ｉ”、データサイズ“α”及び圧縮データサイズ“β”） をシステム管理テーブル４００Ｂに登録する（Ｓ１１０９）（図１３の参照符号４００Ｂ−１３−１を参照）。記憶制御機能１３０Ｂが、その転送コマンドに従う圧縮データをライト対象としたライトコマンドであって、データを圧縮しないで書き込むための非圧縮ライトコマンド（圧縮Ｉ／Ｏコマンドの一例）を、ＦＭデバイス１０１Ｂに送信する（Ｓ１１１０）。そのコマンドでは、圧縮状況“〇”、論理アドレス“Ｃ”、データサイズ“α”及び圧縮データサイズ“β”が指定される。論理アドレス“Ｃ”は、転送対象の圧縮データのライト先として、Ｓ１１１０において決定された論理アドレスである。記憶制御機能１３０Ｂは、Ｓ１１１０において、論理アドレス“Ｃ”をシステム管理テーブル４００Ｂに追記する（図１３の参照符号４００Ｂ−１３−２を参照）。【０１００】
ＦＭデバイス１０１ＢのＣＴＬ１５１Ｂが、ノード１２１Ｂからの非圧縮ライトコマンドに応答して、Ｓ１１１１及びＳ１１１２を実行する。すなわち、ＣＴＬ１５１Ｂが、そのコマンドで指定されている圧縮状況“〇”、論理アドレス“Ｃ”、データサイズ“α”及び圧縮データサイズ“β”をＦＭ管理テーブル５００Ｂに登録する（図１４の参照符号５００Ｂ−１４−１を参照）。ＣＴＬ１５１Ｂが、論理アドレス“Ｃ”に、圧縮データサイズ“β”に基づき空きの物理アドレス“ｄ”を割り当て、物理アドレス“ｄ”をＦＭ管理テーブル５００Ａに追記する（図１４の参照符号５００Ｂ−１４−２を参照）。ＣＴＬ１５１Ｂが、そのコマンドに従うライト対象データ（圧縮データ）を、そのまま（圧縮機能１５３Ｂによる圧縮無しに）、割り当てた物理アドレス“ｄ”が示す物理領域（ＦＭ１５１Ｂにおける領域）に書き込む（Ｓ１１１１）。ＣＴＬ１５１Ｂが、そのコマンドに対する応答を、ノード１２１Ｂに返す（Ｓ１１１２）。【０１０１】
以上が、実施例１の説明である。実施例１において、圧縮Ｉ／Ｏコマンドでは、常に、圧縮状況として、“○”と“×”のいずれかが指定されてもよい。別の言い方をすれば、いずれのＦＭデバイス１０１のＣＴＬ１５１も、下記の処理を行ってよい。下記の処理によれば、圧縮状況“×”が指定されたライトコマンドが、圧縮ライトコマンドであり、圧縮状況“○”が指定されたライトコマンドが、非圧縮ライトコマンドである。また、圧縮状況“×”が指定されたリードコマンドが、非伸張リードコマンドであり、圧縮状況“○”が指定されたリードコマンドが、伸張リードコマンドである。下記によれば、Ｓ１１０４のリードコマンドで圧縮状況“×”が指定される理由は、ＦＭデバイス１０１Ａによってデータが伸張されることを避けるためである。
（＊）圧縮状況“×”が指定されたライトコマンドを受けた場合、ライト対象データを圧縮機能１５３により圧縮してＦＭ１５４に書き込む。つまり、この場合、ライト対象は非圧縮データ（圧縮されていないデータ）であるとの扱いとなる。
（＊）圧縮状況“○”が指定されたライトコマンドを受けた場合、ライト対象データを圧縮機能１５３により圧縮すること無しにＦＭ１５４に書き込む。つまり、この場合、ライト対象は圧縮データであるとの扱いとなる。
（＊）圧縮状況“○”が指定されたリードコマンドを受けた場合、リード対象データをＦＭ１５４から読み出し、そのデータを圧縮機能１５３により伸張し、伸張したデータを返す。つまり、この場合、リード対象は非圧縮データであるとの扱いとなる。
（＊）圧縮状況“×”が指定されたリードコマンドを受けた場合、リード対象データをＦＭ１５４から読み出し、そのデータを圧縮機能１５３により伸張すること無しに返す。つまり、この場合、リード対象は圧縮データであるとの扱いとなる。
【実施例２】
【０１０２】
実施例２を説明する。その際、実施例１との相違点を主に説明し、実施例１との共通点については説明を省略又は簡略する。【０１０３】
実施例２では、第１の圧縮ライト処理に代えて、第２の圧縮ライト処理が採用される。【０１０４】
図１５は、第２の圧縮ライト処理の流れの詳細を示す。ノード１２１Ａ及びＦＭデバイス１０１Ａを例に取る。【０１０５】
第１の圧縮ライト処理では、圧縮バッファライトコマンドとバッファデータライトコマンドという２つのライトコマンドを発行する必要があり、且つ、バッファアドレスをノード１２１Ａが知る必要がある。【０１０６】
そこで、第２の圧縮ライト処理によれば、発行するライトコマンドは１つで済み、且つ、バッファアドレスをノード１２１Ａが知る必要が無い。【０１０７】
具体的には、以下の通りである。【０１０８】
ノード１２１Ａが、クライアント１１１からライト要求を受信し（Ｓ１５０１）、ＦＭデバイス１０１Ａの圧縮機能の有無をチェックする（Ｓ１５０２）。【０１０９】
Ｓ１５０２のチェック結果が真の場合、記憶制御機能１３０Ａが、圧縮前データ（ライト要求に従うデータ）を圧縮してＦＭ１５４に書き込むための圧縮ライトコマンドをＦＭデバイス１０１Ａに送信する（Ｓ１５０３）。そのコマンドでは、論理アドレス“Ａ”及びデータサイズ“α”が指定される。論理アドレス“Ａ”は、データのライト先として、Ｓ１５０３において決定された論理アドレスである。Ｓ１５０３において、記憶制御機能１３０Ａが、ファイル名“Ｉ”、論理アドレス“Ａ”及びデータサイズ“α”をシステム管理テーブル４００Ａに登録する（図１６の参照符号４００Ａ−１６−１を参照）。ファイル名“Ｉ”及びデータサイズ“α”は、受信したライト要求で指定されている値である。【０１１０】
ＦＭデバイス１０１ＡのＣＴＬ１５１Ａが、ノード１２１Ａからの圧縮ライトコマンドに応答して、Ｓ１５０４及びＳ１５０５を実行する。すなわち、ＣＴＬ１５１Ａが、そのコマンドに従うデータを圧縮機能１５３Ａにより圧縮し、圧縮データをＦＭ１５１Ａに書き込む（Ｓ１５０４）。ＣＴＬ１５１Ａが、そのコマンドに対する応答を、ノード１２１Ａに返す（Ｓ１５０５）。Ｓ１５０４において、ＣＴＬ１５１Ａは、論理アドレス“Ａ”及びデータサイズ“α”をＦＭ管理テーブル５００Ａに登録する（図１７の参照符号５００Ａ−１７−１を参照）。また、Ｓ１５０４において、ＣＴＬ１５４Ａは、論理アドレス“Ａ”に、圧縮データサイズ“β”に基づき物理アドレス“ｂ”を割り当てる。圧縮データのライト先は、物理アドレス“ｂ”が示す物理領域（ＦＭ１５１Ａにおける領域）である。また、Ｓ１５０４において、ＣＴＬ１５１Ａは、圧縮状況“○”、圧縮データサイズ“β”及び物理アドレス“ｂ”をＦＭ管理テーブル５００Ａに追記する（図１７の参照符号５００Ａ−１７−２を参照）。Ｓ１５０５の応答では、圧縮状況“〇”、論理アドレス“Ａ”及びデータサイズ“α”及び圧縮データサイズ“β”が指定される。【０１１１】
ノード１２１Ａの記憶制御機能１３０Ａが、ＦＭデバイス１０１Ａからの応答で指定されている圧縮状況“○”及び圧縮データサイズ“β”を、システム管理テーブル４００Ａに追記する（Ｓ１５０６）（図１６の参照符号４００Ａ−１６−２を参照）。【０１１２】
第２の圧縮ライト処理によれば、ライトコマンドは１つで済み、且つ、ノード１２１Ａがバッファアドレスを知る必要が無い。【０１１３】
なお、実施例２でも、記憶制御機能１３０Ａは、ライトコマンド処理中、そのライトコマンドで指定された論理アドレス範囲の少なくとも一部が別のライトコマンドで指定されることの無いよう、その論理アドレス範囲をロックする。【０１１４】
しかし、実施例２では、図１８に示すように、ロック論理アドレス範囲（ロックされる論理アドレス範囲）は、論理アドレス“Ａ”と、圧縮前データのデータサイズ“α”で定義される範囲である。一方、実論理アドレス範囲（実際のデータ格納範囲としての論理アドレス範囲）の定義には、データサイズ“α”に代えて圧縮データサイズ“β”が使用される。このため、ロック論理アドレス範囲は、実論理アドレス範囲より大きい。別のライトコマンドでは、ロック論理アドレス範囲と重複しない論理アドレス範囲が指定される。結果として、実論理アドレス範囲間に隙間ができる。このようなことが繰り返されると、論理アドレス空間に、複数の空き論理アドレス範囲が分散することになる。【０１１５】
そこで、記憶制御機能１３０Ａは、複数の実論理アドレス範囲を詰めて並ばせるためのコマンドである論理アドレス整理コマンドを、ＦＭデバイス１０１Ａに送信する。例えば、下記の（ｐ１）及び（ｐ２）のいずれが行われてもよい。
（ｐ１）論理アドレス整理コマンドにおいて、論理アドレス範囲毎に、変更前の論理アドレスと、変更後の論理アドレスとが指定される。ＦＭデバイス１０１ＡのＣＴＬ１５１Ａが、そのコマンドに応答して、ＦＭ管理テーブル５００Ａにおける変更前の論理アドレスを、それぞれ変更後の論理アドレスに変更する。記憶制御機能１３０Ａが、システム管理テーブル４００Ａにおける変更前の論理アドレスを、論理アドレス整理コマンドで指定した変更後の論理アドレスにそれぞれ変更する。
（ｐ２）ＦＭデバイス１０１ＡのＣＴＬ１５１Ａが、そのコマンドに応答して、ＦＭ管理テーブル５００Ａにおける変更前の論理アドレスを、それぞれ変更後の論理アドレスに変更し、そのコマンドに対する応答を返す。その応答で、変更前の論理アドレスと変更後の論理アドレスとが指定されている。記憶制御機能１３０Ａが、システム管理テーブル４００Ａにおける変更前の論理アドレスを、その応答で指定されている変更後の論理アドレスにそれぞれ変更する。【０１１６】
論理アドレス整理コマンドにより、一旦は、論理アドレス空間に、複数の空き論理アドレス範囲が分散しても、実論理アドレス範囲を詰めることで、そのような空き論理アドレス範囲を無くすことができる。
【実施例３】
【０１１７】
実施例３を説明する。その際、実施例１及び２との相違点を主に説明し、実施例１及び２との共通点については説明を省略又は簡略する。【０１１８】
実施例３では、第１及び第２の圧縮ライト処理に代えて、第３の圧縮ライト処理が採用される。【０１１９】
図２０は、第３の圧縮ライト処理の流れの詳細を示す。ノード１２１Ａ及びＦＭデバイス１０１Ａを例に取る。【０１２０】
第１及び第２の圧縮ライト処理では、ノード１２１Ａが、ライトコマンドで論理アドレスを指定する必要がある。つまり、ノード１２１Ａが、論理アドレス空間のうちの空きの論理アドレス範囲を管理する必要がある。【０１２１】
そこで、第３の圧縮ライト処理によれば、ノード１２１Ａに代えて、ＦＭデバイス１０１Ａが、論理アドレス空間のうちの空きの論理アドレス範囲を管理する。【０１２２】
具体的には、以下の通りである。【０１２３】
ノード１２１Ａが、クライアント１１１からライト要求を受信し（Ｓ２００１）、ＦＭデバイス１０１Ａの圧縮機能の有無をチェックする（Ｓ２００２）。【０１２４】
Ｓ２００２のチェック結果が真の場合、記憶制御機能１３０Ａが、圧縮前データ（ライト要求に従うデータ）を圧縮してＦＭ１５４に書き込むための圧縮ライトコマンドをＦＭデバイス１０１Ａに送信する（Ｓ２００３）。そのコマンドでは、データサイズ“α”が指定されるものの、論理アドレスは指定されない。Ｓ２００３において、記憶制御機能１３０Ａが、ファイル名“Ｉ”及びデータサイズ“α”をシステム管理テーブル４００Ａに登録する（図２１の参照符号４００Ａ−２１−１を参照）。【０１２５】
ＦＭデバイス１０１ＡのＣＴＬ１５１Ａが、ノード１２１Ａからの圧縮ライトコマンドに応答して、Ｓ２００４及びＳ２００５を実行する。すなわち、ＣＴＬ１５１Ａが、そのコマンドに従うデータを圧縮機能１５３Ａにより圧縮し、圧縮データをＦＭ１５１Ａに書き込む（Ｓ２００４）。ＣＴＬ１５１Ａが、そのコマンドに対する応答を、ノード１２１Ａに返す（Ｓ２００５）。Ｓ２００４において、ＣＴＬ１５１Ａは、データサイズ“α”をＦＭ管理テーブル５００Ａに登録する（図２２の参照符号５００Ａ−２２−１を参照）。また、Ｓ２００４において、ＣＴＬ１５１Ａは、ＦＭ管理テーブル５００Ａから特定される空き論理アドレス範囲と、圧縮データのサイズ“β”とを基に、圧縮データのライト先とする論理アドレス“Ａ”を決定する。また、Ｓ２００４において、ＣＴＬ１５４Ａは、論理アドレス“Ａ”に、圧縮データサイズ“β”に基づき物理アドレス“ｂ”を割り当てる。圧縮データのライト先は、物理アドレス“ｂ”が示す物理領域（ＦＭ１５１Ａにおける領域）である。また、Ｓ２００４において、ＣＴＬ１５１Ａは、圧縮状況“○”、論理アドレス“Ａ”、圧縮データサイズ“β”及び物理アドレス“ｂ”をＦＭ管理テーブル５００Ａに追記する（図２２の参照符号５００Ａ−２２−２を参照）。Ｓ２００５の応答では、圧縮状況“〇”、論理アドレス“Ａ”及びデータサイズ“α”及び圧縮データサイズ“β”が指定される。【０１２６】
ノード１２１Ａの記憶制御機能１３０Ａが、ＦＭデバイス１０１Ａからの応答で指定されている圧縮状況“○”、論理アドレス“Ａ”及び圧縮データサイズ“β”を、システム管理テーブル４００Ａに追記する（Ｓ２００６）（図２１の参照符号４００Ａ−２１−２を参照）。【０１２７】
第３の圧縮ライト処理によれば、ノード１２１Ａが、ライトコマンドで論理アドレスを指定する必要（論理アドレス空間のうちの空きの論理アドレス範囲を管理する必要）が無く、ノード１２１Ａの負荷を低減することができる。また、第３の圧縮ライト処理によれば、複数の空き論理アドレス範囲が分散することも無い。【０１２８】
なお、実施例３では、ノード１２１Ａが、ファイルの削除要求を受信した場合に、記憶制御機能１３０Ａが、その削除対象のファイル（圧縮前のデータ）に対応した論理アドレスを解放するためのコマンドであるアドレス解放コマンドを、ＦＭデバイス１０１Ａに送信する。例えば、アドレス解放コマンドの送信前は、ＦＭ管理テーブル５００Ａは、図２３の参照符号５００Ａ−２３−１に示される通りであるとする。この状態において、ノード１２１Ａが、ファイル名“Ｉ”が指定された削除要求を受信した場合に、記憶制御機能１３０Ａが、そのファイル名“Ｉ”に対応した論理アドレス“Ａ”をシステム管理テーブル４００Ａから特定し、論理アドレス“Ａ”を指定したアドレス解放コマンドを、ＦＭデバイス１０１Ａに送信する。ＦＭデバイス１０１のＣＴＬ１５１Ａは、そのコマンドに応答して、論理アドレス“Ａ”に対応した値（但し物理アドレス“ｂ”を除く）をＦＭ管理テーブル５００Ａから削除する（図２３の参照符号５００Ａ−２３−２を参照）。これにより、論理アドレス“Ａ”が解放される。なお、物理アドレス“ｂ”が残る理由は、その物理アドレス“ｂ”が示す物理領域に削除対象データ（無効データ）が存在することを管理するためである。【０１２９】
また、実施例３では、システム管理テーブル４００Ａに、論理アドレスが登録されなくてもよく、その場合、ＦＭ管理テーブル５００Ａに、圧縮前データに対応したファイル名が登録されてもよい。ノード１２１ＡからＦＭデバイス１０１Ａへのコマンドで、ファイル名が指定されてもよい。
【実施例４】
【０１３０】
実施例４を説明する。その際、実施例１〜３との相違点を主に説明し、実施例１〜３との共通点については説明を省略又は簡略する。【０１３１】
図２４は、実施例４に係る容量管理の一例を示す。【０１３２】
例えば、ＦＭデバイス１０１Ａ〜１０１Ｃが、それぞれ、１ＴＢの論理アドレス空間をノード１２１Ａ〜１２１Ｃに提供したとする。ここでは、１ＴＢ（論理アドレス空間の容量）は、ＦＭ１５４の物理記憶容量と同じである。【０１３３】
ＦＭデバイス１０１Ａ〜１０１Ｃの各々の最大圧縮率が１／８であるとする（圧縮率＝（圧縮データのデータサイズ）／（圧縮前データのデータサイズ））。そこで、ノード１２１Ａ〜１２１Ｃが、それぞれ、８ＴＢの論理記憶空間を提供する。８ＴＢは、１ＴＢ（論理アドレス空間の容量）の８倍（最大圧縮率の逆数）である。結果として、クライアント１１１からは、２４ＴＢ（＝８ＴＢの×３（ノード数））の論理ボリュームが見える。【０１３４】
実施例４によれば、クライアント１１１から２ＴＢのデータのライト要求を受けた場合、そのデータの圧縮後のデータサイズに関係なく、２ＴＢが消費され、クライアント１１１にとって、残りの容量が２２ＴＢ（２４ＴＢ−２ＴＢ）となる。ライト要求に従うデータの量が、論理ボリュームの使用量となるので、空き容量（残容量）の管理が容易である。なお、あるタイミングで空き容量の調整が行われてよい。
【実施例５】
【０１３５】
図２５は、実施例５に係るシステム管理テーブルの構成を示す。【０１３６】
システム管理テーブル５００は、ＦＭデバイス１０１からの論理アドレス空間に属する論理アドレス毎に、圧縮データサイズを表す。【０１３７】
本実施例によれば、ノード１２１の記憶制御機能１３０は、論理アドレスを指定したＩ／Ｏコマンド（例えばライトコマンド）に対して圧縮データサイズを表す値を含んだ応答を受信した場合、その値（圧縮データサイズ）を、指定した論理アドレスに関連付ける。つまり、記憶制御機能１３０は、指定した論理アドレスに対応するエントリ（システム管理テーブルにおける領域）に、応答に含まれている値（圧縮データサイズ）を登録する。【０１３８】
記憶制御機能１３０は、圧縮データサイズの値が関連付けられていない論理アドレス（圧縮データサイズのエントリが空きである論理アドレス）を、利用可能な論理アドレスと判定する。【０１３９】
以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【符号の説明】
【０１４０】
１２１：ノード
【図１】
0006798002.tif 000002
【図２】
0006798002.tif 000003
【図３】
0006798002.tif 000004
【図４】
0006798002.tif 000005
【図５】
0006798002.tif 000006
【図６】
0006798002.tif 000007
【図７】
0006798002.tif 000008
【図８】
0006798002.tif 000009
【図９】
0006798002.tif 000010
【図１０】
0006798002.tif 000011
【図１１】
0006798002.tif 000012
【図１２】
0006798002.tif 000013
【図１３】
0006798002.tif 000014
【図１４】
0006798002.tif 000015
【図１５】
0006798002.tif 000016
【図１６】
0006798002.tif 000017
【図１７】
0006798002.tif 000018
【図１８】
0006798002.tif 000019
【図１９】
0006798002.tif 000020
【図２０】
0006798002.tif 000021
【図２１】
0006798002.tif 000022
【図２２】
0006798002.tif 000023
【図２３】
0006798002.tif 000024
【図２４】
0006798002.tif 000025
【図２５】
0006798002.tif 000026