(57)【特許請求の範囲】
【請求項１】
ホストに適用されるデータ移行方法であって、前記ホストが複数のソリッドステートディスク(SSD)に接続され、前記複数のSSDが相互接続され、各SSDが移行キャッシュを伴って構成され、前記データ移行方法は、
ソースSSDの中の移行される予定のデータの移行データ情報を取得してターゲットSSDを決定し、
前記ターゲットSSDの移行キャッシュのアクセス情報および前記移行データ情報に従って読取り命令を生成し、前記読取り命令を前記ソースSSDに送信するステップであって、前記読取り命令が、前記読取り命令に対応し前記ソースSSDのフラッシュメモリの中にあるデータブロックを前記ターゲットSSDの前記移行キャッシュへと読み込むように前記ソースSSDに命令するために使用される、ステップと、
前記ソースSSDによって送信される読取り完了フィードバック命令が受信された後で、前記ターゲットSSDの前記移行キャッシュの中の前記データブロックを前記ターゲットSSDのフラッシュメモリへ書き込むように前記ターゲットSSDに命令するために、書込み命令を前記ターゲットSSDに送信するステップとを備える、データ移行方法。
【請求項２】
前記ホストが起動されるときに前記SSDのコントローラのレジスタから各SSDの前記移行キャッシュの情報を読み取るステップと、
前記読み取られた移行キャッシュ情報に従って各SSDの前記移行キャッシュに前記アクセス情報を割り振り、各SSDに対応する前記アクセス情報を前記ホストに記録するステップとをさらに備える、請求項1に記載のデータ移行方法。
【請求項３】
前記ターゲットSSDのアクセス情報および前記移行データ情報に従って読取り命令を生成する前記ステップが、
前記ターゲットSSDの前記アクセス情報の中の前記ターゲットSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記移行される予定のデータを複数のデータブロックへと分割し、前記分割された複数のデータブロックの移行データ情報および前記ターゲットSSDに対応する前記アクセス情報に従って、前記読取り命令を生成するステップを備える、請求項1または2に記載のデータ移行方法。
【請求項４】
前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、前記分割された複数のデータブロックがすべて移行されているかどうかを決定し、前記分割された複数のデータブロックがすべて移行されてはいない場合、移行されていないデータブロックから1つのデータブロックを決定し、前記決定されたデータブロックのために新しい読取り命令を生成するステップをさらに備え、前記新しい読取り命令の宛先アドレスが、前記書込み完了フィードバック命令を送信する前記ターゲットSSDである、請求項3に記載のデータ移行方法。
【請求項５】
前記ターゲットSSDのアクセス情報および前記移行データ情報に従って読取り命令を生成する前記ステップが、
前記ターゲットSSDの前記アクセス情報の中の前記ターゲットSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記ターゲットSSDに現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報および前記ターゲットSSDに対応する前記アクセス情報に従って前記読取り命令を生成するステップを備える、請求項1または2に記載のデータ移行方法。
【請求項６】
前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、移行されていない移行される予定のデータがあるかどうかを決定し、移行されていない移行される予定のデータがある場合、移行されていない前記移行される予定のデータの移行データ情報に従って1つのデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報に従って新しい読取り命令を生成するステップをさらに備え、前記新しい読取り命令の宛先アドレスが、前記書込み完了フィードバック命令を送信する前記ターゲットSSDである、請求項5に記載のデータ移行方法。
【請求項７】
2つ以上のターゲットSSDがあり、前記読取り命令を生成する間に、1つの読取り命令が各ターゲットSSDのために生成され、前記生成された複数の読取り命令が前記ソースSSDに送信される、請求項1から6のいずれか一項に記載のデータ移行方法。
【請求項８】
ホストに適用されるデータ移行方法であって、前記ホストが複数のソリッドステートディスク(SSD)に接続され、前記複数のSSDが互いに相互接続され、各SSDが移行キャッシュを伴って構成され、前記データ移行方法は、
ソースSSDの中の移行される予定のデータの移行データ情報を取得してターゲットSSDを決定し、
前記ソースSSDの移行キャッシュのアクセス情報および前記移行データ情報に従って読取り命令を生成し、前記読取り命令を前記ソースSSDに送信するステップであって、前記読取り命令が、前記読取り命令に対応し前記ソースSSDのフラッシュメモリの中にあるデータブロックを前記ソースSSDの前記移行キャッシュへと読み込むように前記ソースSSDに命令するために使用される、ステップと、
前記ソースSSDによって送信される読取り完了フィードバック命令が受信された後で、前記ソースSSDの前記移行キャッシュの中の前記データブロックを前記ターゲットSSDのフラッシュメモリへと書き込むように前記ターゲットSSDに命令するために、書込み命令を前記ターゲットSSDに送信するステップとを備える、データ移行方法。
【請求項９】
前記ホストが起動されるときに前記SSDのコントローラのレジスタから各SSDの前記移行キャッシュの情報を読み取るステップと、
前記読み取られた移行キャッシュ情報に従って各SSDの前記移行キャッシュに前記アクセス情報を割り振り、各SSDに対応する前記アクセス情報を前記ホストに記録するステップとをさらに備える、請求項8に記載のデータ移行方法。
【請求項１０】
前記ソースSSDのアクセス情報および前記移行データ情報に従って読取り命令を生成する前記ステップが、
前記ソースSSDの前記アクセス情報の中の前記ソースSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記移行される予定のデータを複数のデータブロックへと分割し、前記分割された複数のデータブロックの移行データ情報および前記ソースSSDに対応する前記アクセス情報に従って、前記読取り命令を生成するステップを備える、請求項8または9に記載のデータ移行方法。
【請求項１１】
前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、前記分割された複数のデータブロックがすべて移行されているかどうかを決定し、前記分割された複数のデータブロックがすべて移行されてはいない場合、移行されていないデータブロックから1つのデータブロックを決定し、前記決定されたデータブロックのために新しい読取り命令を生成するステップをさらに備える、請求項10に記載のデータ移行方法。
【請求項１２】
前記ソースSSDのアクセス情報および前記移行データ情報に従って読取り命令を生成する前記ステップが、
前記ソースSSDの前記アクセス情報の中の前記ソースSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記ターゲットSSDに現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報および前記ソースSSDに対応する前記アクセス情報に従って前記読取り命令を生成するステップを備える、請求項8または9に記載のデータ移行方法。
【請求項１３】
前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、移行されていない移行される予定のデータがあるかどうかを決定し、移行されていない移行される予定のデータがある場合、移行されていない前記移行される予定のデータの移行データ情報に従ってデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報に従って新しい読取り命令を生成するステップをさらに備える、請求項12に記載のデータ移行方法。
【請求項１４】
ソースソリッドステートディスク(SSD)に適用されるデータ移行方法であって、前記データ移行方法は、
データ移行命令を受信するステップであって、前記データ移行命令がターゲットSSDの移行キャッシュのアクセス情報を搬送する、ステップと、
前記ターゲットSSDの前記移行キャッシュの前記アクセス情報および前記ソースSSDのフラッシュメモリの中の移行される予定のデータの移行データ情報に従って読取り命令を生成するステップと、
前記読取り命令に対応し前記ソースSSDの前記フラッシュメモリの中にあるデータブロックを前記ターゲットSSDの前記移行キャッシュへと読み込むために、前記読取り命令を実行するステップと、
前記読取り命令の実行が完了した後で、前記ターゲットSSDの前記移行キャッシュの中の前記データブロックを前記ターゲットSSDのフラッシュメモリへ書き込むように前記ターゲットSSDに命令するために、書込み要求を前記ターゲットSSDに送信するステップであって、前記書込み要求が前記ターゲットSSDの前記移行キャッシュのアクセス情報を搬送する、ステップとを備える、データ移行方法。
【請求項１５】
前記ソースSSDの移行キャッシュ情報を前記ソースSSDのコントローラのレジスタの中に設定するステップをさらに備え、その結果、起動するときに、ホストが、前記レジスタに設定された前記移行キャッシュ情報を読み取り、前記読み取られた移行キャッシュ情報に従って前記アクセス情報を各SSDの前記移行キャッシュに割り振り、各SSDに対応する前記アクセス情報を前記ホストに記録する、請求項14に記載のデータ移行方法。
【請求項１６】
前記ターゲットSSDに対応する前記アクセス情報および前記ソースSSDのフラッシュメモリの中の移行される予定のデータの移行データ情報に従って読取り命令を生成する前記ステップが、
前記ターゲットSSDの前記アクセス情報の中の前記ターゲットSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記移行される予定のデータを複数のデータブロックへと分割し、前記分割された複数のデータブロックの移行データ情報および前記ターゲットSSDに対応する前記アクセス情報に従って、前記読取り命令を生成するステップを備える、請求項15に記載のデータ移行方法。
【請求項１７】
前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、前記分割された複数のデータブロックがすべて移行されているかどうかを決定し、前記分割された複数のデータブロックがすべて移行されてはいない場合、移行されていないデータブロックから1つのデータブロックを決定し、前記決定されたデータブロックのための新しい読取り命令を生成するステップをさらに備え、前記新しい読取り命令の宛先アドレスが、前記書込み完了フィードバック命令を送信する前記ターゲットSSDである、請求項16に記載のデータ移行方法。
【請求項１８】
前記ターゲットSSDに対応する前記アクセス情報および前記ソースSSDのフラッシュメモリの中の移行される予定のデータの移行データ情報に従って読取り命令を生成する前記ステップが、
前記ターゲットSSDの前記アクセス情報の中の前記ターゲットSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記ターゲットSSDに現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報および前記ターゲットSSDに対応する前記アクセス情報に従って前記読取り命令を生成するステップを備える、請求項14に記載のデータ移行方法。
【請求項１９】
前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、移行されていない移行される予定のデータがあるかどうかを決定し、移行されていない移行される予定のデータがある場合、移行されていない前記移行される予定のデータの移行データ情報に従って、現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報に従って新しい読取り命令を生成するステップをさらに備え、前記新しい読取り命令の宛先アドレスが、前記書込み完了フィードバック命令を送信する前記ターゲットSSDである、請求項18に記載のデータ移行方法。
【請求項２０】
2つ以上の前記ターゲットSSDがあり、前記読取り命令を生成する間に、1つの読取り命令が各ターゲットSSDのために生成される、請求項14から19のいずれか一項に記載のデータ移行方法。
【請求項２１】
ソースソリッドステートディスク(SSD)に適用されるデータ移行方法であって、前記データ移行方法は、
データ移行命令を受信するステップであって、前記データ移行命令が前記ソースSSDの移行キャッシュのアクセス情報およびターゲットSSD情報を搬送する、ステップと、
前記ソースSSDの前記移行キャッシュの前記アクセス情報および前記ソースSSDのフラッシュメモリの中の移行される予定のデータの移行データ情報に従って読取り命令を生成するステップと、
前記読取り命令に対応し前記ソースSSDの前記フラッシュメモリの中にあるデータブロックを前記ソースSSDの前記移行キャッシュへと読み込むために、前記読取り命令を実行するステップと、
前記読取り命令の実行が完了した後で、前記ソースSSDの前記移行キャッシュの中の前記データブロックをターゲットSSDのフラッシュメモリへ書き込むように前記ターゲットSSDに命令するために、書込み要求を前記ターゲットSSD情報に対応する前記ターゲットSSDへ送信するステップであって、前記書込み要求が前記ソースSSDの前記移行キャッシュのアクセス情報を搬送する、ステップとを備える、データ移行方法。
【請求項２２】
前記ソースSSDの前記移行キャッシュのサイズを前記ソースSSDのコントローラのレジスタの中に設定するステップをさらに備え、その結果、起動するときに、ホストが、移行キャッシュ情報を読み取り、前記読み取られた移行キャッシュ情報に従って前記アクセス情報を前記ソースSSDの前記移行キャッシュに割り振る、請求項21に記載のデータ移行方法。
【請求項２３】
前記ソースSSDに対応する前記アクセス情報および前記ソースSSDのフラッシュメモリの中の移行される予定のデータの移行データ情報に従って読取り命令を生成する前記ステップが、
前記ソースSSDの前記アクセス情報の中の前記ソースSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記移行される予定のデータを複数のデータブロックへと分割し、前記分割された複数のデータブロックの移行データ情報および前記ソースSSDに対応する前記アクセス情報に従って、前記読取り命令を生成するステップを備える、請求項21または22に記載のデータ移行方法。
【請求項２４】
前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、前記分割された複数のデータブロックがすべて移行されているかどうかを決定し、前記分割された複数のデータブロックがすべて移行されてはいない場合、移行されていないデータブロックから1つのデータブロックを決定し、前記決定されたデータブロックのための新しい読取り命令を生成するステップをさらに備える、請求項23に記載のデータ移行方法。
【請求項２５】
前記ソースSSDに対応する前記アクセス情報および前記ソースSSDのフラッシュメモリの中の移行される予定のデータの移行データ情報に従って読取り命令を生成する前記ステップが、
前記ソースSSDの前記アクセス情報の中の前記ソースSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報および前記ソースSSDに対応する前記アクセス情報に従って前記読取り命令を生成するステップを備える、請求項21または22に記載のデータ移行方法。
【請求項２６】
前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、移行されていない移行される予定のデータがあるかどうかを決定し、移行されていない移行される予定のデータがある場合、移行されていない前記移行される予定のデータの移行データ情報に従って、現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報に従って新しい読取り命令を生成するステップをさらに備える、請求項25に記載のデータ移行方法。
【請求項２７】
ソースソリッドステートディスクSSDに適用されるデータ移行方法であって、前記データ移行方法は、
データ移行命令を受信するステップであって、前記データ移行命令がターゲットSSDのコントローラのレジスタのアクセス情報を搬送する、ステップと、
前記ターゲットSSDの前記コントローラの前記レジスタの前記アクセス情報および前記ソースSSDのフラッシュメモリの中の移行される予定のデータの移行されるデータ情報に従って、読取り命令を生成するステップと、
前記読取り命令に対応し前記ソースSSDの前記フラッシュメモリの中のデータブロックを前記ターゲットSSDの前記コントローラの前記レジスタへと読み込むために前記読取り命令を実行し、前記読取り命令の実行が完了した後で、前記ターゲットSSDの前記コントローラの前記レジスタの中の前記データブロックを前記ターゲットSSDのフラッシュメモリへ書き込むように前記ターゲットSSDに命令するために、書込み要求を前記ターゲットSSDに送信するステップとを備え、前記書込み要求が、前記ターゲットSSDの前記コントローラの前記レジスタの前記アクセス情報を搬送する、データ移行方法。
【請求項２８】
複数のソリッドステートディスク(SSD)に接続されるホストであって、前記ホストは、
ソースSSDの中の移行される予定のデータの移行データ情報を取得してターゲットSSDを決定し、前記ターゲットSSDの移行キャッシュのアクセス情報および前記移行データ情報に従って読取り命令を生成し、前記読取り命令を前記ソースSSDに送信するように構成される、読取り命令モジュールであって、前記読取り命令が、前記読取り命令に対応し前記ソースSSDのフラッシュメモリの中にあるデータブロックを前記ターゲットSSDの前記移行キャッシュへと読み込むように前記ソースSSDに命令するために使用される、読取り命令モジュールと、
前記ソースSSDによって送信される読取り完了フィードバック命令が受信された後で、前記ターゲットSSDの前記移行キャッシュの中の前記データブロックを前記ターゲットSSDのフラッシュメモリへ書き込むように前記ターゲットSSDに命令するために、書込み命令を前記ターゲットSSDに送信するように構成される、書込み命令モジュールとを備える、ホスト。
【請求項２９】
前記ホストが起動するときに、各SSDのコントローラのレジスタの中に設定され各SSDのために構成される移行キャッシュ情報を読み取り、前記読み取られた移行キャッシュ情報に従って各SSDの前記移行キャッシュに前記アクセス情報を割り振り、各SSDに対応する前記アクセス情報を前記ホストに記録するように構成される、割振りモジュールをさらに備える、請求項28に記載のホスト。
【請求項３０】
前記読取り命令モジュールが、前記ターゲットSSDの前記アクセス情報および前記移行データ情報に従って前記読取り命令を生成するとき、前記ホストが特に、
前記ターゲットSSDの前記アクセス情報の中の前記ターゲットSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記移行される予定のデータを複数のデータブロックへと分割し、前記分割された複数のデータブロックの移行データ情報および前記ターゲットSSDに対応する前記アクセス情報に従って、前記読取り命令を生成するように構成される、請求項28または29に記載のホスト。
【請求項３１】
前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、前記分割された複数のデータブロックがすべて移行されているかどうかを決定し、前記分割された複数のデータブロックがすべて移行されてはいない場合、移行されていないデータブロックから1つのデータブロックを決定し、前記決定されたデータブロックのために新しい読取り命令を生成するように構成される、決定モジュールをさらに備え、前記新しい読取り命令の宛先アドレスが、前記書込み完了フィードバック命令を送信する前記ターゲットSSDである、請求項30に記載のホスト。
【請求項３２】
前記読取り命令モジュールが、前記ターゲットSSDの前記アクセス情報および前記移行データ情報に従って前記読取り命令を生成するとき、前記ホストが特に、前記ターゲットSSDの前記アクセス情報の中の前記ターゲットSSDの前記移行キャッシュの長さ、および前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記ターゲットSSDに現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報および前記ターゲットSSDに対応する前記アクセス情報に従って前記読取り命令を生成するように構成される、請求項28または29に記載のホスト。
【請求項３３】
前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、移行されていない移行される予定のデータがあるかどうかを決定し、移行されていない移行される予定のデータがある場合、移行されていない前記移行される予定のデータの移行データ情報に従って1つのデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報に従って新しい読取り命令を生成するように構成される、決定モジュールをさらに備え、前記新しい読取り命令の宛先アドレスが、前記書込み完了フィードバック命令を送信する前記ターゲットSSDである、請求項32に記載のホスト。
【請求項３４】
2つ以上の前記ターゲットSSDがあり、前記読取り命令を生成するときに、前記読取り命令モジュールが、各ターゲットSSDのために1つの読取り命令を生成し、生成された複数の読取り命令を前記ソースSSDに送信する、請求項28から33のいずれか一項に記載のホスト。
【請求項３５】
複数のソリッドステートディスク(SSD)に接続されるホストであって、前記複数のSSDが互いに接続され、各SSDが移行キャッシュを伴って構成され、前記ホストは、
ソースSSDの中の移行される予定のデータの移行データ情報を取得してターゲットSSDを決定し、前記ソースSSDの移行キャッシュのアクセス情報および前記移行データ情報に従って読取り命令を生成し、前記読取り命令を前記ソースSSDに送信するように構成される、読取り命令モジュールであって、前記読取り命令が、前記読取り命令に対応し前記ソースSSDのフラッシュメモリの中にあるデータブロックを前記ソースSSDの前記移行キャッシュへと読み込むように前記ソースSSDに命令するために使用される、読取り命令モジュールと、
前記ソースSSDによって送信される読取り完了フィードバック命令が受信された後で、前記ソースSSDの前記移行キャッシュの中の前記データブロックを前記ターゲットSSDのフラッシュメモリへ書き込むように前記ターゲットSSDに命令するために、書込み命令を前記ターゲットSSDに送信するように構成される、書込み命令モジュールとを備える、ホスト。
【請求項３６】
前記ホストが起動するときに、各SSDのコントローラのレジスタの中に設定され各SSDのために構成される移行キャッシュ情報を読み取り、前記読み取られた移行キャッシュ情報に従って各SSDの前記移行キャッシュに前記アクセス情報を割り振り、各SSDに対応する前記アクセス情報を前記ホストに記録するように構成される割振りモジュール
をさらに備える、請求項35に記載のホスト。
【請求項３７】
前記読取り命令モジュールが、前記ソースSSDの前記アクセス情報および前記移行データ情報に従って前記読取り命令を生成するとき、前記ホストが特に、
前記ソースSSDの前記アクセス情報の中の前記ソースSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記移行される予定のデータを複数のデータブロックへと分割し、前記分割された複数のデータブロックの移行データ情報および前記ソースSSDに対応する前記アクセス情報に従って、前記読取り命令を生成するように構成される、請求項35または36に記載のホスト。
【請求項３８】
前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、前記分割された複数のデータブロックがすべて移行されているかどうかを決定し、前記分割された複数のデータブロックがすべて移行されてはいない場合、移行されていないデータブロックから1つのデータブロックを決定し、前記決定されたデータブロックのために新しい読取り命令を生成するように構成される、決定モジュールをさらに備える、請求項37に記載のホスト。
【請求項３９】
前記読取り命令モジュールが、前記ソースSSDの前記アクセス情報および前記移行データ情報に従って前記読取り命令を生成するとき、前記ホストが特に、
前記ソースSSDの前記アクセス情報の中の前記ソースSSDの前記移行キャッシュの長さ、および前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記ターゲットSSDに現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報および前記ソースSSDに対応する前記アクセス情報に従って前記読取り命令を生成するように構成される、請求項35または36に記載のホスト。
【請求項４０】
前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、移行されていない移行される予定のデータがあるかどうかを決定し、移行されていない移行される予定のデータがある場合、移行されていない前記移行される予定のデータの移行データ情報に従ってデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報に従って新しい読取り命令を生成するように構成される、決定モジュールをさらに備える、請求項39に記載のホスト。
【請求項４１】
ソースソリッドステートディスク(SSD)であって、前記SSDは、
データ移行命令を受信し、前記データ移行命令がターゲットSSDの移行キャッシュのアクセス情報を搬送し、前記ターゲットSSDの前記移行キャッシュの前記アクセス情報および前記ソースSSDのフラッシュメモリの中の移行される予定のデータの移行データ情報に従って読取り命令を生成するように構成される、読取り命令モジュールと、
前記読取り命令に対応し前記ソースSSDの前記フラッシュメモリの中にあるデータブロックを前記ターゲットSSDの移行キャッシュへと読み込むために、前記読取り命令を実行するように構成される、読取りモジュールと、
前記読取り命令の実行が完了した後で、前記ターゲットSSDの前記移行キャッシュの中の前記データブロックを前記ターゲットSSDのフラッシュメモリへ書き込むように前記ターゲットSSDに命令するために、書込み要求を前記ターゲットSSDに送信するように構成される、書込み命令モジュールとを備え、前記書込み要求が前記ターゲットSSDの前記移行キャッシュのアクセス情報を搬送する、SSD。
【請求項４２】
前記ソースSSDの移行キャッシュのサイズを前記ソースSSDのコントローラのレジスタの中に設定するように構成される、設置モジュールをさらに備え、その結果、ホストが、起動するときに、移行キャッシュ情報を読み取り、前記読み取られた移行キャッシュ情報に従って前記アクセス情報を前記ソースSSDの前記移行キャッシュに割り振る、請求項41に記載のSSD。
【請求項４３】
前記読取り命令モジュールが、前記ターゲットSSDに対応する前記アクセス情報および前記ソースSSDの前記フラッシュメモリの中の前記移行される予定のデータの前記移行データ情報に従って前記読取り命令を生成するとき、前記SSDが特に、
前記ターゲットSSDの前記アクセス情報の中の前記ターゲットSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記移行される予定のデータを複数のデータブロックへと分割し、前記分割された複数のデータブロックの移行データ情報および前記ターゲットSSDに対応する前記アクセス情報に従って、前記読取り命令を生成するように構成される、請求項41または42に記載のSSD。
【請求項４４】
前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、前記分割された複数のデータブロックがすべて移行されているかどうかを決定し、前記分割された複数のデータブロックがすべて移行されてはいない場合、移行されていないデータブロックから1つのデータブロックを決定し、前記決定されたデータブロックのための新しい読取り命令を生成するように構成される、決定モジュールをさらに備え、前記新しい読取り命令の宛先アドレスが、前記書込み完了フィードバック命令を送信する前記ターゲットSSDである、請求項43に記載のSSD。
【請求項４５】
前記読取り命令モジュールが、前記ターゲットSSDに対応する前記アクセス情報および前記ソースSSDの前記フラッシュメモリの中の前記移行される予定のデータの前記移行データ情報に従って前記読取り命令を生成するとき、前記SSDが特に、
前記ターゲットSSDの前記アクセス情報の中の前記ターゲットSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記ターゲットSSDに現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報および前記ターゲットSSDに対応する前記アクセス情報に従って前記読取り命令を生成するように構成される、請求項41または42に記載のSSD。
【請求項４６】
前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、移行されていない移行される予定のデータがあるかどうかを決定し、移行されていない移行される予定のデータがある場合、移行されていない前記移行される予定のデータの移行データ情報に従って、現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報に従って新しい読取り命令を生成するように構成される、決定モジュールをさらに備え、前記新しい読取り命令の宛先アドレスが、前記書込み完了フィードバック命令を送信する前記ターゲットSSDである、請求項45に記載のSSD。
【請求項４７】
2つ以上の前記ターゲットSSDがあり、前記読取り命令を生成する間に、1つの読取り命令が各ターゲットSSDのために生成される、請求項41から46のいずれか一項に記載のSSD。
【請求項４８】
ソースソリッドステートディスクSSDであって、前記SSDは、
データ移行命令を受信し、前記データ移行命令が前記ソースSSDの移行キャッシュのアクセス情報およびターゲットSSD情報を搬送し、前記ソースSSDの前記移行キャッシュの前記アクセス情報および前記ソースSSDのフラッシュメモリの中の移行される予定のデータの移行データ情報に従って読取り命令を生成するように構成される、読取り命令モジュールと、
前記読取り命令に対応し前記ソースSSDの前記フラッシュメモリの中にあるデータブロックを前記ソースSSDの前記移行キャッシュへと読み込むために、前記読取り命令を実行するように構成される、読取りモジュールと、
前記読取り命令の実行が完了した後で、前記ソースSSDの前記移行キャッシュの中の前記データブロックをターゲットSSDのフラッシュメモリへ書き込むように前記ターゲットSSDに命令するために、書込み要求を前記ターゲットSSD情報に対応する前記ターゲットSSDに送信するように構成される、書込み命令モジュールであって、前記書込み要求が前記ソースSSDの前記移行キャッシュのアクセス情報を搬送する、書込み命令モジュールとを備える、SSD。
【請求項４９】
前記ソースSSDの前記移行キャッシュのサイズを前記ソースSSDのコントローラのレジスタの中に設定されるように構成される、設置モジュールをさらに備え、その結果、ホストが、起動するときに、移行キャッシュ情報を読み取り、前記読み取られた移行キャッシュ情報に従って前記アクセス情報を前記ソースSSDの前記移行キャッシュに割り振る、請求項48に記載のSSD。
【請求項５０】
前記読取り命令モジュールが、前記ソースSSDに対応する前記アクセス情報および前記ソースSSDの前記フラッシュメモリの中の前記移行される予定のデータの前記移行データ情報に従って前記読取り命令を生成するとき、前記SSDが特に、
前記ソースSSDの前記アクセス情報の中の前記ソースSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記移行される予定のデータを複数のデータブロックへと分割し、前記分割された複数のデータブロックの移行データ情報および前記ソースSSDに対応する前記アクセス情報に従って、前記読取り命令を生成するように構成される、請求項48または49に記載のSSD。
【請求項５１】
前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、前記分割された複数のデータブロックがすべて移行されているかどうかを決定し、前記分割された複数のデータブロックがすべて移行されてはいない場合、移行されていないデータブロックから1つのデータブロックを決定し、前記決定されたデータブロックのための新しい読取り命令を生成するように構成される、決定モジュールをさらに備える、請求項50に記載のSSD。
【請求項５２】
前記読取り命令モジュールが、前記ソースSSDに対応する前記アクセス情報および前記ソースSSDの前記フラッシュメモリの中の前記移行される予定のデータの前記移行データ情報に従って前記読取り命令を生成するとき、前記SSDが特に、
前記ソースSSDの前記アクセス情報の中の前記ソースSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報および前記ソースSSDに対応する前記アクセス情報に従って前記読取り命令を生成するように構成される、請求項48または49に記載のSSD。
【請求項５３】
前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、移行されていない移行される予定のデータがあるかどうかを決定し、移行されていない移行される予定のデータがある場合、移行されていない前記移行される予定のデータの移行データ情報に従って、現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報に従って新しい読取り命令を生成するように構成される、決定モジュールをさらに備える、請求項52に記載のSSD。
【請求項５４】
各読取り命令がソースアドレスおよび宛先アドレスを備え、前記ソースアドレスが各読取り命令に従って読み取られるデータブロックのアドレスであり、前記宛先アドレスが前記ソースSSDの前記移行キャッシュの第1のアクセスアドレスである、請求項48から53のいずれか一項に記載のSSD。
【請求項５５】
ソースソリッドステートディスクSSDであって、
データ移行命令を受信し、前記データ移行命令がターゲットSSDのコントローラのレジスタのアクセス情報を搬送し、前記ターゲットSSDの前記コントローラの前記レジスタの前記アクセス情報および前記ソースSSDのフラッシュメモリの中の移行される予定のデータの移行されるデータ情報に従って読取り命令を生成するように構成される、読取り命令モジュールと、
前記読取り命令に対応し前記ソースSSDの前記フラッシュメモリの中にあるデータブロックを前記ターゲットSSDの前記コントローラの前記レジスタへと読み込むために、前記読取り命令を実行するように構成される、読取りモジュールと、
前記読取り命令の実行が完了した後で、前記ターゲットSSDの前記コントローラの前記レジスタの中の前記データブロックを前記ターゲットSSDのフラッシュメモリへ書き込むように前記ターゲットSSDに命令するために、書込み要求を前記ターゲットSSDに送信するように構成される、書込み命令モジュールであって、前記書込み要求が前記ターゲットSSDの前記コントローラの前記レジスタの前記アクセス情報を搬送する、書込み命令モジュールとを備える、SSD。
【請求項５６】
請求項1から7のいずれか一項に記載の方法をホストに実行させる、プログラム。
【請求項５７】
請求項8から13のいずれか一項に記載の方法をホストに実行させる、プログラム。
【請求項５８】
請求項14から20のいずれか一項に記載の方法をソースSSDに実行させる、プログラム。
【請求項５９】
請求項21から26のいずれか一項に記載の方法をソースSSDに実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ技術の分野に関し、具体的には、ストレージデバイス間でデータを移行するための方法に関する。
【背景技術】
【０００２】
ソリッドステートディスク(Solid State Disk、SSD)のコストが下がり続け、高性能および低遅延を特徴とする不揮発性メモリエクスプレス(Non-Volatile Memory Express、NVMe)が発展するにつれて、現在、NVMe規格に基づくSSDが、従来の機械的なハードディスクを徐々に置き換え、ストレージシステムにおける主要な記憶媒体になっている。
【０００３】
実際の応用では、データはストレージシステムの中のSSD間で頻繁に移行される必要がある。たとえば、ストレージシステムには、大量のSSDおよび大きな容量があるので、比較的故障の確率が高い。データ喪失を避けるために、無効化されることになるSSD、すなわち無効化される予定のSSDは、事前に特定される必要があり、そして無効化される予定のSSDの中のデータは、バックアップのために別のSSDに移行される。
【０００４】
従来技術では、データがSSD間で移行されるとき、ストレージシステムのホストのメモリにおけるデータ移行に専用のメモリ空間を最初に割り振る必要があり、次いでホストの中央処理装置(Central Processing Unit、CPU)がソースSSD(データの移行元のSSD、たとえば、検出された無効化される予定のSSD)の中のデータをメモリ空間へと読み込み、最後に、メモリ空間の中のデータをターゲットSSD(データの移行先のSSD)に書き込む。従来技術では、データがSSD間で移行されるとき、移行されるデータについて、データ送信プロセスがホストのCPUによって制御される必要があり、その結果、ホストのCPU帯域幅が占有されるということが知られ得る。このようにして、別のSSDの中のデータへの通常のアクセスが影響を受け、ストレージシステム全体の性能が影響を受ける。ストレージシステムの性能に対するSSD間でのデータ移行の影響を減らすために、SSD間のデータ移行の間に占有されるホストのCPU帯域幅が普通は制限される。その結果、SSD間のデータ移行は、過度に長い時間を要し、データ喪失の危険性を高める。加えて、SSD間のデータ移行のための帯域幅が限られている場合であっても、ストレージシステムの性能は依然として影響を受ける。
【発明の概要】
【課題を解決するための手段】
【０００５】
本発明の実施形態は、SSD間でデータを移行するための方法を提供する。データ移行の間、ホストのCPU帯域幅は占有されないので、ストレージシステムの性能に影響を与えず、データ移行速度を確保する。
【０００６】
第1の態様によれば、本発明の実施形態はデータ移行方法を提供し、データ移行方法はホストに適用される。ホストは複数のSSDに接続され、複数のSSDは互いに接続される。各SSDは移行キャッシュを伴って構成され、各SSDの移行キャッシュのアクセス情報はホストに記録される。ホストまたはホストに接続される別のSSDは、アクセス情報に従って各SSDの移行キャッシュにアクセスする。たとえば、ホストに接続されるSSDはSSD0〜SSD24である。任意のSSD(たとえば、SSD0)によって提供されるキャッシュは、アクセス情報に従って、ホストおよび別のSSD(SSD1〜SSD24)によってアクセスされ得る。
【０００７】
データ移行方法は、
ソースSSDの中の移行される予定のデータの移行データ情報を取得してターゲットSSDを決定し、ターゲットSSDに対応するアクセス情報および移行データ情報に従って読取り命令を生成し、読取り命令をソースSSDに送信するステップであって、読取り命令が、読取り命令に対応しソースSSDのフラッシュメモリの中にあるデータブロックをターゲットSSDの移行キャッシュへと読み込むようにソースSSDに命令するために使用される、ステップと、
ソースSSDによって送信される読取り完了フィードバック命令が受信された後で、ターゲットSSDのキャッシュの中のデータブロックをターゲットSSDのフラッシュメモリへ書き込むようにターゲットSSDに命令するために、書込み命令をターゲットSSDに送信するステップとを含む。
【０００８】
このようにして、ストレージシステムの中のSSDのキャッシュは、データ移行プロセスにおいてデータキャッシュとして使用される。したがって、データが移行されるとき、移行されるデータはホストを使用することによっては送信されないので、移行されるデータはホストのCPU帯域幅を占有せず、ストレージシステムの性能に対する影響が大きく低減され、データ移行速度が確保される。
【０００９】
任意選択で、各SSDのために構成される移行キャッシュ情報は、SSDのコントローラのレジスタにおいて設定される。このようにして、起動するとき、ホストは、各SSDの移行キャッシュの構成を実装するために、SSDのコントローラのレジスタから各SSDの移行キャッシュ情報を読み取り、読み取られた移行キャッシュ情報に従って各SSDの移行キャッシュにアクセス情報を割り振り、アクセス情報を記録することができる。
【００１０】
前述の解決法によれば、SSDは自身のキャッシュを移行キャッシュとして使用することができる。したがって、データ移行プロセスにおいて、移行されたデータがホストのメモリを使用して送信される必要がない。
【００１１】
読取り命令を生成する2つの方式がある。方式1:移行される予定のデータが、ターゲットSSDのアクセス情報の中のターゲットSSDの移行キャッシュの長さおよび移行データ情報の中の移行される予定のデータのデータ量に従って、複数のデータブロックへと分割され、読取り命令は、分割された複数のデータブロックの移行データ情報およびターゲットSSDに対応するアクセス情報に従って生成される。
【００１２】
方式1に基づくと、読取り命令に従って移行されたデータブロックがターゲットSSDに移行された後で、ターゲットSSDは書込み完了フィードバック命令をホストに送信する。書込み完了フィードバック命令を受信した後で、ホストは、分割を通じて以前に取得されたデータブロックがすべて移行されるかどうかを決定し、データブロックがすべて移行されてはいない場合、移行されていないデータブロックから1つのデータブロックを決定し、分割を通じて以前に取得されたデータブロックがすべてターゲットSSDに移行されるまで、決定されたデータブロックを移行するために、決定されたデータブロックのための新しい読取り命令を生成する。
【００１３】
方式1を使用することによって、ソースSSDの中の移行される予定のデータはデータブロックへと分割される。このようにして、読取り命令の生成の間に、分割を通じて取得されたデータブロックは、読取り命令を生成するために直接取得され、取得されたデータブロックは移行のために読み取られる。
【００１４】
方式2:ターゲットSSDに現在移行されるデータブロックの移行データ情報が、ターゲットSSDのアクセス情報の中のターゲットSSDの移行キャッシュの長さおよび移行データ情報の中の移行される予定のデータのデータ量に従って取得され、読取り命令が、データブロックの取得された移行データ情報およびターゲットSSDに対応するアクセス情報に従って生成される。
【００１５】
方式2に基づいて、読取り命令に従って移行されるデータブロックがターゲットSSDに移行された後で、ターゲットSSDは書込み完了フィードバック命令をホストに送信する。ターゲットSSDによって送信される書込み完了フィードバック命令を受信した後で、ホストは、移行されていない移行される予定のデータがあるかどうかを決定し、移行されていない移行される予定のデータがある場合、移行されていない移行される予定のデータの移行データ情報に従って1つのデータブロックの移行データ情報を取得し、すべての移行される予定のデータがターゲットSSDに移行されるまで、取得されたデータブロックを移行するために、データブロックの取得された移行データ情報に従って新しい読取り命令を生成する。
【００１６】
方式2を使用することによって、読取り命令の生成の間に、読取り命令に従って移行される必要があるデータブロックは、移行される予定のデータを分割することによって取得され得る。
【００１７】
前述の様々な実装形態において、各読取り命令は、ソースアドレスおよび宛先アドレスを含む。ソースアドレスは各読取り命令に従って読み取られるデータブロックの論理アドレスであり、宛先アドレスはターゲットSSDの移行キャッシュの第1のアクセスアドレスである。
【００１８】
このようにして、ソースSSDは、読取り命令の中のソースアドレス情報に従って移行される予定のデータブロックを取得し、読み取られたデータブロックの中の移行される予定のデータブロックを宛先アドレスによって示される移行キャッシュに一時的に記憶することができる。
【００１９】
前述の様々な実装形態において、複数のターゲットSSDがあってもよい。読取り命令の生成の間に、1つの読取り命令が各ターゲットSSDのために生成され、生成された複数の読取り命令がソースSSDに送信される。
【００２０】
このようにして、ソースSSDの中の移行される予定のデータは、複数のターゲットSSDへ同時に移行され得るので、ソースSSDにおける移行される予定のデータの移行が加速する。
【００２１】
加えて、上述の様々な実装形態において、ソースSSDの中の移行される予定のデータの移行データ情報を取得する前に、方法はさらに、
あらかじめ設定されたデータ移行条件を検出するステップと、
あらかじめ設定されたデータ移行条件が検出されるとき、ソースSSDの中の移行される予定のデータの移行データ情報を取得するステップとを含み得る。
【００２２】
あらかじめ設定された移行条件は、無効化前の故障がソースSSDにおいて発生したこと、またはデータ移行コマンドが受信されたことが、検出されることであり得る。
【００２３】
第2の態様によれば、本発明のある実施形態は別のデータ移行方法を提供する。第2の態様において提供されるデータ移行方法もホストに適用される。ホストとSSDとの間の接続の関係は、第1の態様において提供されるデータ移行方法における関係と同じである。各SSDはまた、移行キャッシュを伴って構成される。
【００２４】
第2の態様において提供されるデータ移行方法と、第1の態様において提供されるデータ移行方法との主な違いは、第2の態様において提供されるデータ移行方法では、ホストが、読取り命令に対応しソースSSDの中にあるデータブロックをソースSSDの移行キャッシュへ移行するようにソースSSDに命令するために、読取り命令をソースSSDに送信し、次いで、ソースSSDの移行キャッシュの中のデータブロックをターゲットSSDのフラッシュメモリへ移行するようにターゲットSSDに命令するために、書込み命令をターゲットSSDに送信するということにある。
【００２５】
第2の態様において提供されるデータ移行方法において、移行される予定のデータブロックはまず、ソースSSDの移行キャッシュに移行される。したがって、読取り命令を生成するとき、ホストは、読取り命令の宛先アドレスをソースSSDの移行キャッシュのアクセス情報に設定し、書込み命令を生成するとき、ホストは、書込み命令のソースアドレスをソースSSDの移行キャッシュのアクセス情報に設定する。このようにして、ソースSSDは、読取り命令に従って、読取り命令に対応するデータブロックをソースSSDの移行キャッシュに移行することができ、ターゲットSSDは、書込み命令に従って、ソースSSDの移行キャッシュの中のデータブロックをターゲットSSDのフラッシュメモリに書き込むことができる。
【００２６】
加えて、データ分割の間に、データはソースSSDの移行キャッシュの長さにも従って分割される。
【００２７】
他のことは、第1の態様において提供されるデータ移行方法の場合と同じである。関連する説明への参照を行うことができ、詳細は本明細書では説明されない。
【００２８】
第3の態様によれば、本発明のある実施形態は別のデータ移行方法を提供する。第3の態様において提供されるデータ移行方法もホストに適用される。ホストとSSDとの間の接続の関係は、第1の態様において提供されるデータ移行方法における関係と同じである。各SSDはまた、移行キャッシュを伴って構成される。
【００２９】
第3の態様において提供されるデータ移行方法と、第1の態様において提供されるデータ移行方法との主な違いは、ターゲットSSDを決定した後で、ホストが、ターゲットSSDのアクセス情報をデータ移行命令に追加し、ソースSSDの中の移行される予定のデータをターゲットSSDの移行キャッシュへ移行するようにソースSSDに命令するために、データ移行命令をソースSSDに送信し、次いで、ソースSSDが、ターゲットSSDの移行キャッシュの中のデータをターゲットSSDのフラッシュメモリへ書き込むようにターゲットSSDに命令するために、書込み要求をターゲットSSDに送信するということにある。ソースSSDの中の移行される予定のデータの移行を完了した後で、ソースSSDは、移行完了フィードバック命令をホストに送信する。このようにして、ホストは、データ移行プロセスにおいて、データを移行する必要も、データの読取りおよび書込みの制御を実行する必要もないので、データ移行プロセスにおいて占有されるCPU帯域幅をさらに低減し、ストレージシステムの性能に対する影響をさらに低減する。
【００３０】
第4の態様によれば、本発明のある実施形態は別のデータ移行方法を提供する。第4の態様において提供されるデータ移行方法もホストに適用される。ホストとSSDとの間の接続の関係は、第1の態様において提供されるデータ移行方法の場合と同じである。各SSDはまた、移行キャッシュを伴って構成される。
【００３１】
第4の態様において提供されるデータ移行方法と、第3の態様において提供されるデータ移行方法との主な違いは、ホストが、ソースSSDの中の移行される予定のデータをソースSSDの移行キャッシュへ移行するようにソースSSDに命令するために、ソースSSDの移行キャッシュのアクセス情報およびターゲットSSD情報をデータ移行命令に追加し、次いで、ソースSSDが、ソースSSDの移行キャッシュの中のデータをターゲットSSDのフラッシュメモリへ書き込むようにターゲットSSDに命令するために、書込み要求をターゲットSSDに送信するということにある。
【００３２】
第5の態様によれば、本発明のある実施形態は別のデータ移行方法を提供する。第5の態様において提供されるデータ移行方法はSSDに適用される。SSDとホストとの間の接続の関係は、第1の態様において提供されるデータ移行方法における関係と同じである。SSDはまた、移行キャッシュを伴って構成される。
【００３３】
第5の態様において提供されるデータ移行方法は、第3の態様において提供されるデータ移行方法に対応する。すなわち、ホストによって送信されターゲットSSDのアクセス情報を搬送するデータ移行命令が受信された後で、ソースSSDの中の移行される予定のデータが移行される。ソースSSDによってデータを移行する方式は、第1の態様において提供されるデータ移行方法における方式と同じである。違いは、第5の態様の実装形態では、読取り命令の生成と実行の両方がソースSSDによって完了されるということのみにある。加えて、読取り命令に従って読取り命令に対応するデータブロックをターゲットSSDの移行キャッシュへと読み込んだ後で、ソースSSDは、ターゲットSSDのアクセス情報を書込み要求に追加し、書込み要求をターゲットSSDに送信するので、ターゲットSSDは、書込み要求に従って、ターゲットSSDの移行キャッシュの中のデータブロックをターゲットSSDのフラッシュメモリに書き込む。
【００３４】
第6の態様によれば、本発明のある実施形態は別のデータ移行方法を提供する。第6の態様において提供されるデータ移行方法はSSDに適用される。SSDとホストとの間の接続の関係は、第1の態様において提供されるデータ移行方法における関係と同じである。SSDはまた、移行キャッシュを伴って構成される。
【００３５】
第6の態様において提供されるデータ移行方法は、第4の態様において提供されるデータ移行方法に対応する。すなわち、ホストによって送信されソースSSDのアクセス情報およびターゲットSSD情報を搬送するデータ移行命令が受信された後で、ソースSSDの中の移行される予定のデータが移行される。ソースSSDによってデータを移行する方式は、第2の態様において提供されるデータ移行方法における方式と同じである。違いは、第6の態様の実装形態では、読取り命令の生成と実行の両方がソースSSDによって完了されるということにのみある。加えて、読取り命令に従って読取り命令に対応するデータブロックをソースSSDの移行キャッシュへと読み込んだ後で、ソースSSDは、ソースSSDのアクセス情報を書込み要求に追加し、書込み要求をターゲットSSDに送信するので、ターゲットSSDは、ソースSSDの移行キャッシュの中のデータブロックを書込み要求に従ってターゲットSSDのフラッシュメモリに書き込む。
【００３６】
第7の態様によれば、本発明のある実施形態は別のデータ移行方法を提供する。第7の態様において提供されるデータ移行方法はSSDに適用される。SSDとホストとの間の接続の関係は、第1の態様において提供されるデータ移行方法における関係と同じである。しかしながら、第7の態様のある実装形態では、SSDは移行キャッシュなしで構成される。データ移行プロセスにおいて、データ移行は主に、SSDのコントローラのレジスタを使用することによって実行される。
【００３７】
第7の態様において提供されるデータ移行方法は、第3の態様において提供されるデータ移行方法と類似している。違いは、ホストが移行命令をソースSSDに送信するとき、移行命令がターゲットSSDのコントローラのレジスタのアクセス情報を搬送するということにのみある。ソースSSDが移行命令に従って読取り命令を生成するとき、データはターゲットSSDのコントローラのレジスタの長さに従って分割される。生成された読取り命令の宛先アドレスは、ターゲットSSDのコントローラのレジスタのアクセス情報である。ターゲットSSDに送信される書込み要求はまた、ターゲットSSDのコントローラのレジスタのアクセス情報を搬送する。このようにして、ソースSSDは、読取り命令に対応しソースSSDの中にあるデータブロックをターゲットSSDのコントローラのレジスタへと読み込むために、読取り命令を実行することができる。ターゲットSSDは、書込み要求に従って、ターゲットSSDのコントローラのレジスタの中のデータブロックをターゲットSSDのフラッシュメモリへと読み込むことができる。
【００３８】
第8の態様によれば、本発明のある実施形態はホストを提供する。ホストは複数のSSDに接続され、複数のSSDは互いに接続される。各SSDは移行キャッシュを伴って構成され、各SSDの移行キャッシュのアクセス情報はホストに記録される。ホストまたはホストに接続される別のSSDは、アクセス情報に従って各SSDの移行キャッシュにアクセスする。
【００３９】
ホストは、読取り命令モジュールおよび書込み命令モジュールを含む。読取り命令モジュールは、ソースSSDの中の移行される予定のデータの移行データ情報を取得してターゲットSSDを決定し、ターゲットSSDに対応するアクセス情報および移行データ情報に従って読取り命令を生成し、読取り命令をソースSSDに送信するように構成され、読取り命令は、読取り命令に対応しソースSSDのフラッシュメモリの中にあるデータブロックをターゲットSSDの移行キャッシュへと読み込むようにソースSSDに命令するために使用される。書込み命令モジュールは、ソースSSDによって送信される読取り完了フィードバック命令が受信された後で、ターゲットSSDのキャッシュの中のデータブロックをターゲットSSDのフラッシュメモリへ書き込むようにターゲットSSDに命令するために、書込み命令をターゲットSSDに送信するように構成される。
【００４０】
第8の態様の第1の可能な実装形態では、ホストはさらに割振りモジュールを含み、割振りモジュールは、ホストに接続されるSSDによって提供される移行キャッシュにアクセス情報を割り振るように構成される。具体的な割振り方式については、第1の態様の第1の可能な実装形態を参照されたい。
【００４１】
読取り命令モジュールによって読取り命令を生成する2つの方式がある。それに対応して、新しい読取り命令を生成する2つの方式もある。詳細については、第1の態様における読取り命令および新しい読取り命令を生成する2つの方式の説明を参照されたい。
【００４２】
読取り命令モジュールによって生成される読取り命令の構造は、第1の態様における読取り命令の構造と同じであり、本明細書では説明されない。
【００４３】
同様に、複数のターゲットSSDがあってもよい。読取り命令の生成の間に、読取り命令モジュールは、各ターゲットSSDのために1つの読取り命令を生成し、生成された複数の読取り命令をソースSSDに送信する。
【００４４】
第9の態様によれば、本発明のある実施形態はホストも提供する。ホストは、第8の態様におけるホストと同じ、SSDとの接続の関係を有する。各SSDはまた、移行キャッシュを伴って構成される。
【００４５】
第9の態様におけるホストと第8の態様におけるホストとの主な違いは、第9の態様では、ホストの読取り命令モジュールが、読取り命令に対応しソースSSDの中にあるデータブロックをソースSSDの移行キャッシュへ移行するようにソースSSDに命令するために、読取り命令をソースSSDに送信し、書込み命令モジュールが、ソースSSDの移行キャッシュの中のデータブロックをターゲットSSDのフラッシュメモリへ移行するようにターゲットSSDに命令するために、書込み命令をターゲットSSDに送信するということにある。
【００４６】
第9の態様では、ホストはまず、移行される予定のデータブロックをソースSSDの移行キャッシュに移行するので、ホストが読取り命令を生成すると、ホストは、読取り命令の宛先アドレスをソースSSDの宛先キャッシュのアクセス情報に設定し、ホストが書込み命令を生成すると、ホストは、書込み命令のソースアドレスをソースSSDの移行キャッシュのアクセス情報に設定する。このようにして、ソースSSDは、読取り命令に従って、読取り命令に対応するデータブロックをソースSSDの移行キャッシュに移行することができ、ターゲットSSDは、書込み命令に従って、ソースSSDの移行キャッシュの中のデータブロックをターゲットSSDのフラッシュメモリに書き込むことができる。
【００４７】
加えて、移行される予定のデータを分割するとき、読取り命令モジュールはまた、ソースSSDの移行キャッシュの長さに従ってデータを分割する。
【００４８】
他のものは、第8の態様において提供されるホストのモジュールと同じ機能を実行する。関連する説明を参照されたく、詳細は本明細書では説明されない。
【００４９】
第10の態様によれば、本発明のある実施形態は別のホストを提供する。ホストは、第8の態様におけるホストと同じ、SSDとの接続の関係を有する。各SSDはまた、移行キャッシュを伴って構成される。
【００５０】
第10の態様におけるホストと第8の態様におけるホストとの主な違いは、ホストが移行命令モジュールを含むということにある。ターゲットSSDを決定した後で、移行命令モジュールは、ターゲットSSDのアクセス情報をデータ移行命令に追加し、データ移行命令をソースSSDに送信する。第8の態様における読取り命令モジュール、書込み命令モジュール、および決定モジュールによって実行される機能はすべて、第10の態様におけるソースSSDによって実行される。このようにして、ホストは、データ移行プロセスにおいて、データを移行する必要も、データの読取りおよび書込みの制御を実行する必要もないので、データ移行プロセスにおいて占有されるCPU帯域幅をさらに低減し、ストレージシステムの性能に対する影響をさらに減らす。
【００５１】
第11の態様によれば、本発明のある実施形態はさらにホストを提供する。ホストは、第1の態様におけるホストと同じ、SSDとの接続の関係を有する。各SSDはまた、移行キャッシュを伴って構成される。
【００５２】
第11の態様におけるホストと第10の態様におけるホストとの主な違いは、ホストの移行命令モジュールが、ソースSSDの中の移行される予定のデータをソースSSDの移行キャッシュへ移行するようにソースSSDに命令するために、ソースSSDの移行キャッシュのアクセス情報およびターゲットSSD情報をデータ移行命令に追加し、次いで、ソースSSDが、ソースSSDの移行キャッシュの中のデータをターゲットSSDのフラッシュメモリへ書き込むようにターゲットSSDに命令するために、書込み要求をターゲットSSDに送信するということにある。
【００５３】
第12の態様によれば、本発明のある実施形態はSSDを提供する。SSDとホストとの間の接続の関係は、第1の態様におけるホストとSSDとの間の接続の関係と同じである。各SSDはまた、移行キャッシュを伴って構成される。
【００５４】
第12の態様において提供されるSSDは、第10の態様において提供されるホストに対応する。SSDは、読取り命令モジュール、読取りモジュール、および書込み命令モジュールを含む。読取り命令モジュールは、ホストによって送信されターゲットSSDのアクセス情報を搬送するデータ移行命令を受信した後で、読取り命令を生成し、読取りモジュールは、ソースSSDの中の移行される予定のデータを移行するために読取り命令を実行する。ソースSSDによってデータを移行する方式は、第8の態様において提供されるデータ移行方法における方式と同じである。違いは、第12の態様の実装形態では、読取り命令の生成および実行がソースSSDの読取り命令モジュールおよび読取りモジュールによって完了されるということにのみある。読取りモジュールが読取り命令に従って読取り命令に対応するデータブロックをターゲットSSDの移行キャッシュへと読み込んだ後で、書込み命令モジュールは、ターゲットSSDのアクセス情報を書込み要求に追加し、書込み要求をターゲットSSDに送信するので、ターゲットSSDは、書込み要求に従って、ターゲットSSDの移行キャッシュの中のデータブロックをターゲットSSDのフラッシュメモリに書き込む。
【００５５】
第13の態様によれば、本発明のある実施形態は別のSSDを提供する。SSDとホストとの間の接続の関係は、第1の態様におけるホストとSSDとの間の接続の関係と同じである。SSDはまた、移行キャッシュを伴って構成される。
【００５６】
第13の態様におけるSSDは、第11の態様におけるホストに対応し、SSDはまた、読取り命令モジュール、読取りモジュール、および書込み命令モジュールを含む。読取り命令モジュールが、ホストによって送信されソースSSDのアクセス情報およびターゲットSSD情報を搬送するデータ移行命令を受信した後で、読取りモジュールはソースSSDの中の移行される予定のデータを移行する。ソースSSDによってデータを移行する方式は、第9の態様において提供されるデータ移行方式と同じである。違いは、第13の態様の実装形態では、読取り命令の生成および実行がソースSSDの読取り命令モジュールおよび読取りモジュールによって完了されるということにのみある。加えて、読取りモジュールが読取り命令に従って読取り命令に対応するデータブロックをソースSSDの移行キャッシュへと読み込んだ後で、書込み命令モジュールは、ソースSSDのアクセス情報を書込み要求に追加し、書込み要求をターゲットSSDに送信するので、ターゲットSSDは、ソースSSDの移行キャッシュの中のデータブロックを書込み要求に従ってターゲットSSDのフラッシュメモリに書き込む。
【００５７】
第14の態様によれば、本発明のある実施形態は別のSSDを提供する。SSDとホストとの間の接続の関係は、第1の態様におけるホストとSSDとの間の接続の関係と同じである。第14の態様では、SSDは移行キャッシュなしで構成される。データ移行プロセスにおいて、データ移行は主に、SSDのコントローラのレジスタを使用することによって実行される。
【００５８】
第14の態様におけるSSDはまた、読取り命令モジュール、読取りモジュール、および書込み命令モジュールを含む。モジュールによって実行される機能は、第5の態様におけるSSDのモジュールによって実行される機能と類似している。違いは、ホストが移行命令をソースSSDに送信するときに、移行命令がターゲットSSDのコントローラのレジスタのアクセス情報を搬送するということにのみある。読取り命令モジュールが移行命令に従って読取り命令を生成するとき、データは、ターゲットSSDのコントローラのレジスタの長さに従って分割される。生成される読取り命令の宛先アドレスは、ターゲットSSDのコントローラのレジスタのアクセス情報である。ターゲットSSDへ書込み命令モジュールによって送信される書込み要求はまた、ターゲットSSDのコントローラのレジスタのアクセス情報を搬送する。このようにして、ソースSSDの読取りモジュールは、読取り命令に対応しソースSSDの中にあるデータブロックをターゲットSSDのコントローラのレジスタへと読み込むために、読取り命令を実行することができる。ターゲットSSDは、ターゲットSSDのコントローラのレジスタの中のデータブロックを、書込み要求に従って、ターゲットSSDのフラッシュメモリへと読み込むことができる。
【００５９】
本発明の上述の実施形態の様々な実装形態により、ストレージシステムの中のSSDのキャッシュまたはレジスタは、データ移行プロセスにおいてデータキャッシュとして使用され得る。したがって、データ移行の間に、移行されるデータはホストを使用することによって送信されないので、移行されるデータはホストのCPU帯域幅を占有せず、それにより、ストレージシステムの性能に対する影響を大きく低減し、データ移行速度を確保する。
【００６０】
本発明または従来技術の実施形態における技術的な解決策をより明確に説明するために、以下では、実施形態または従来技術を説明するために必要とされる添付の図面を簡単に説明する。明らかに、以下の説明における添付の図面は、本発明のいくつかの実施形態を示すに過ぎず、当業者はそれでも、創造的な努力なしでこれらの添付の図面から他の図面を導くことができる。
【図面の簡単な説明】
【００６１】
【図１】ストレージシステムのアーキテクチャ図である。
【図２】従来技術におけるSSD間でデータを移行するための方法のフローチャートである。
【図３】本発明の第1の実施形態によるストレージシステムのアーキテクチャ図である。
【図４】本発明の第1の実施形態によるSSDのための移行キャッシュを構成するための方法のフローチャートである。
【図５】本発明の第1の実施形態によるデータ移行方法のフローチャートである。
【図６】第1の実施形態におけるストレージシステムの中にありデータ移行方法に対応するホストおよびSSDの機能ブロック図である。
【図７】本発明の第2の実施形態によるデータ移行方法のフローチャートである。
【図８Ａ】本発明の第3の実施形態によるデータ移行方法のフローチャートである。
【図８Ｂ】本発明の第3の実施形態によるデータ移行方法のフローチャートである。
【図９】第3の実施形態における、ストレージシステムの中にありデータ移行方法に対応するホストおよびSSDの機能ブロック図である。
【図１０Ａ】本発明の第4の実施形態によるデータ移行方法のフローチャートである。
【図１０Ｂ】本発明の第4の実施形態によるデータ移行方法のフローチャートである。
【図１１】本発明の第5の実施形態によるストレージシステムの中のホストおよびSSDの機能ブロック図である。
【発明を実施するための形態】
【００６２】
以下は、本発明の実施形態における添付の図面を参照して本発明の実施形態の技術的な解決策を明確かつ完全に説明する。明らかに、説明される実施形態は本発明の実施形態のすべてではなく一部に過ぎない。創造的な努力なしで本発明の実施形態に基づいて当業者により得られるすべての他の実施形態が、本発明の保護範囲に入るものとする。
【００６３】
図1に示されるように、図1はストレージシステムのアーキテクチャ図である。ストレージシステムは、ホスト10と、周辺構成要素相互接続エクスプレス(Peripheral component interconnection express、PCIe)スイッチ11を使用することによってホスト10に接続される複数のSSD(すなわち、SSD0〜SSD24)とを含む。ホスト10はCPU101およびメモリ102を含む。
【００６４】
実際の応用では、データ移行は普通、2つのSSD間で実行される必要がある。たとえば、ホスト10が無効化される予定のSSDを検出するとき、無効化される予定のSSDの中のデータは、無効化される予定のSSDが無効化された後で引き起こされるデータ喪失を防ぐために、別のSSDに移行される必要がある。本明細書では、データの移行元のSSDがソースSSDとして使用され、データの移行先のディスクがターゲットSSDとして使用される。図1に示されるように、SSD2の中のデータがSSD24に移行される必要があるとき、SSD2がソースSSDであり、SSD24がターゲットSSDである。図2を参照すると、以下は、従来技術におけるソースSSDの中のデータをターゲットSSDに移行するための方法を説明する。
【００６５】
図2に示されるように、ステップS201において、SSD2の中のデータが外へ移行される必要があること、たとえば、SSD2の中のデータが無効になるべきであることを、CPU101が検出するとき、CPU101は、SSD2の中のデータをSSD24に移行するために、別のSSDから、ターゲットSSD、すなわちSSD24を選択する。
【００６６】
ステップS202:CPU101が、データ移行に専用の移行メモリ空間をメモリ102に適用し、移行される予定のデータのデータ量を取得する。
【００６７】
ステップS203:CPU101が、移行メモリ空間の長さおよび移行される予定のデータの取得されたデータ量に従って読取り命令を生成し、読取り命令をSSD2に送信する。
【００６８】
ステップS204:SSD2が、読取り命令に従って、読取り命令に対応しSSD2の中にあるデータブロックを移行メモリ空間へと読み込む。
【００６９】
ステップS205:読取り命令の実行を完了した後で、SSD2が読取り完了フィードバック命令をホスト10に送信する。
【００７０】
ステップS206:CPU101が、読取り完了フィードバック命令に従って書込み命令をSSD24に送信する。
【００７１】
ステップS207:SSD24が、受信されたデータ書込み命令に従って、移行メモリ空間の中のデータブロックをSSD24に書き込む。
【００７２】
ステップS208:SSD24が、書込み完了フィードバック命令をホスト10に送信する。
【００７３】
ステップS209:SSD24によって送信される書込み完了フィードバック命令を受信した後で、CPU101が、SSD2の中のすべての移行される予定のデータの移行が完了したかどうかを決定し、移行が完了していない場合、ステップS203に戻り、SSD2の中の移行される予定のデータの移行を続けるために新しい読取り命令を生成し、または移行が完了している場合、データ移行手順を終了する。
【００７４】
従来技術では、ソースSSDの中のデータがターゲットSSDに移行されるとき、データ移行プロセスがホスト10によって制御される必要があり、移行がメモリ102を使用することによって実行される必要があることが、上述のデータ移行方法から知られ得る。この方法では、ホスト10のCPU101の、データ移行の間に占有される帯域幅が制限されている場合であっても、ストレージシステムの性能が依然として影響を受ける。加えて、CPUの帯域幅制限が、またはデータ移行の帯域幅制限すらも、非常に遅いデータ移行速度を招き、移行されるデータを喪失する危険性を高めるので、ストレージシステムの信頼性に影響を与える。
【００７５】
本発明の実施形態において提供されるデータ移行方法によれば、データがソースSSDからターゲットSSDに移行されるとき、データは、移行プロセスにおいてホストのメモリを通過せず、ホストのCPU帯域幅を占有することなくPCIeスイッチのインターフェースを使用することによって直接送信される。したがって、ストレージシステムの性能は影響を受けない。加えて、データ移行速度はホストのCPU帯域幅によって制限されないので、データ移行速度が高まる。以下では、複数の実施形態を使用することによって、本発明において提供されるデータ移行方法を説明する。
【００７６】
第1の実施形態
図3に示されるように、図3は、本発明の第1の実施形態によるストレージシステムのアーキテクチャ図である。第1の実施形態におけるストレージシステムのアーキテクチャは、基本的に図1の従来技術のストレージシステムのアーキテクチャと同じであり、ホスト30、PCIeスイッチ31、およびSSD0〜SSD24を含む。SSD0〜SSD24は、PCIeスイッチ31を使用することによって互いに接続される。
【００７７】
ホスト30は、CPU301およびメモリ302を含む。CPU301は、ホスト30によって提供されるいくつかの機能を実装するために、たとえば、SSD0〜SSD24におけるデータのアクセスおよび移行を制御するために、メモリ302の中のアプリケーションプログラム303を実行するように構成される。メモリ302はさらに、SSD0〜SSD24のメタデータ304を記憶する。メタデータ304は、各SSDに記憶されているデータについての情報、たとえば、記憶されているデータのデータ量および記憶されているデータの論理アドレス情報を記録する。
【００７８】
SSD0〜SSD24は基本的に同じ構造を有する。以下の説明は、例としてSSD2を使用することによって各SSDの構造を説明する。図3に示されるように、SSD2は、主要コントローラ221、直接メモリアクセス(Direct Memory Access、DMA)コントローラ224、キャッシュ223、およびフラッシュメモリ225を含む。主要コントローラ221は、ホスト30からのアクセスコマンドに従ってフラッシュメモリ225におけるデータのアクセスを制御するために、ホスト30によって送信されるデータアクセスコマンドを受信するように構成される。DMAコントローラ224は、別のデバイスのメモリ、たとえばホスト30のメモリ、または別のSSDのキャッシュに直接アクセスすることができる。キャッシュ223は、フラッシュメモリ225から読み取られるデータまたはフラッシュメモリ225に書き込まれるべきデータを、主要コントローラ221またはDMAコントローラ224が実行するとき、または一時的に記憶するときに必要とされる、プログラム命令を記憶する。フラッシュメモリは、SSDの主記憶要素であり、SSDに書き込まれるデータ226を記憶するように構成される。
【００７９】
この実施形態では、各SSDは、ホスト30および別のSSDによるアクセスのためのキャッシュを提供することができる。ホスト30および別のSSDによるアクセスのために各SSDによってキャッシュを提供するための方法については、図4に示されるフローチャートを参照されたい。ホストおよび別のSSDによるアクセスのために各SSDによって提供されるキャッシュは、以下では移行キャッシュと呼ばれる。
【００８０】
ステップS401:各SSDが、SSDのコントローラ221のレジスタ222に移行キャッシュのキャッシュ情報を設定する。この実施形態では、キャッシュ情報は移行キャッシュのサイズを含む。各SSDの移行キャッシュのサイズは、具体的な適用環境に従って決定されてよく、たとえば、ストレージシステムの性能、SSDのキャッシュのサイズ、およびSSDのインターフェース帯域幅などの要因に従って決定されてよい。すべてのSSDの移行キャッシュが、同じサイズを有することがあり、または異なるサイズを有することがある。一部のSSDがホストおよび別のSSDによる使用のためにキャッシュを提供する必要がないとき、SSDはレジスタ222においてキャッシュのサイズを0に設定することができる。
【００８１】
ステップS402:ホスト30のBIOSブート段階の間に、ホスト30が、SSDの主要コントローラ221のレジスタ222から各SSDの移行キャッシュ情報を読み取り、読み取られた移行キャッシュ情報に従って各SSDの移行キャッシュにアクセス情報を別々に割り振り、各SSDのメタデータ304に、SSDへ割り振られるアクセス情報を記録し、アクセス情報はSSDの移行キャッシュの第1のアクセスアドレスおよび長さを含む。第1のアクセスアドレスはホストのメモリの中のアドレス情報であり、アドレス情報はSSDの移行キャッシュの開始アドレス情報に対応する。ホストがSSDのキャッシュにアクセスする必要があるとき、ホストは、メモリ302の中の第1のアクセスアドレスをまず発見する必要があり、第1のアクセスアドレスに従ってSSDの移行キャッシュにアクセスする。
【００８２】
ステップS403:ホスト30が、各SSDのレジスタに、SSDの移行キャッシュに割り振られたアクセス情報を別々に書き込む。特定の実装形態では、第1のアクセスアドレスのみが書き込まれ得る。
【００８３】
ステップS404:各SSDが、キャッシュ223から移行キャッシュとして、設定されたキャッシュサイズと同じサイズを有するキャッシュ空間を選択し、アクセス情報と移行キャッシュとの間に対応付け関係を確立する。
【００８４】
このようにして、ホスト30は、アクセス情報を使用することによって各SSDの移行キャッシュにアクセスすることができ、または、各SSDの移行キャッシュは、アクセス情報を使用することによってそのSSD以外の別のSSDによってアクセスされ得る。たとえば、移行キャッシュが上述の方法を使用することによってSSD0のために構成される場合、ホストまたはSSD1〜SSD24は、アクセス情報を使用することによって移行キャッシュにアクセスすることができる。
【００８５】
各SSDの移行キャッシュが決定された後で、SSD間のデータ移行は、移行キャッシュを使用することによって実行され得る。具体的な移行方法が図5において示される。
【００８６】
ステップS501:ホストがあらかじめ設定されたデータ移行条件を検出する。
【００８７】
あらかじめ設定されたデータ移行条件は、ストレージシステムの中のSSDが無効であると決定されること、またはデータ移行要求が受信されることであり得る。移行要求はアプリケーションまたは別のデバイスからのものである。
【００８８】
ステップS502:あらかじめ設定されたデータ移行条件が検出されるとき、ホストは、ソースSSDの中の移行される予定のデータの移行データ情報を取得し、ターゲットSSDを決定する。
【００８９】
ホスト30は、メモリ302に記憶されているソースSSDのメタデータから、ソースSSDの中の移行される予定のデータの移行データ情報を取得する。移行データ情報は、移行される予定のデータのデータ量および論理アドレスを含む。
【００９０】
ターゲットSSDは、ユーザによって決定されてよく、または、事前にソースSSDのために設定されるバックアップディスクであってよい。1つまたは複数のターゲットSSDがあってよく、具体的な量はデータ移行速度の要件に従って決定されてよい。
【００９１】
ターゲットSSDを決定するとき、ユーザは、各SSDに記憶されているデータ量およびSSDのビジー/アイドル状態に従ってターゲットSSDを選択することができ、すなわち、比較的少ないデータ量を記憶しており現在比較的アイドル状態であるSSDを、ターゲットSSDとして選択することができる。
【００９２】
ステップS503:ターゲットSSDおよび移行データ情報に対応するアクセス情報に従って読取り命令を生成する。
【００９３】
この実装形態では、読取り命令を生成する2つの方式が提供される。方式1:移行される予定のデータがまず、ターゲットSSDのアクセス情報の中にある、ターゲットSSDによって提供される移行キャッシュの長さと、移行データ情報の中の移行される予定のデータのデータ量とに従って、複数のデータブロックへと分割される。各データブロックの長さは、移行キャッシュの長さ以下である。普通は、各データブロックの長さは移行キャッシュの長さに等しく、各データブロックの論理アドレスは、移行される予定のデータの論理アドレスおよび分割を通じて取得されたデータブロックの長さに従って決定され得る。加えて、各ターゲットSSDに対して、1つのデータブロックが取得され、1つの読取り命令が生成される。
【００９４】
方式2:読取り命令の生成の間に、すべての移行される予定のデータが分割されるのではなく、代わりに、1つのデータブロックだけが、1つのターゲットSSDのために分割を通じて取得される。分割を通じて取得されたデータブロックの長さは、移行キャッシュの長さ以下である。普通は、分割を通じて取得されたデータブロックの長さは移行キャッシュの長さに等しい。次いで、分割を通じて取得されたデータブロックの論理アドレスが決定され、読取り命令が分割を通じて取得されたデータブロックのために生成される。
【００９５】
読取り命令はソースアドレスおよび宛先アドレスを含む。ソースアドレスは、読取り命令に従って読み取られるデータブロックの論理アドレスであり、宛先アドレスは、ターゲットSSDの移行キャッシュの第1のアクセスアドレスである。複数のターゲットSSDが決定されるとき、複数の読取り命令を生成するために、1つのデータブロックが、移行される予定のデータの論理アドレスの昇順で各ターゲットSSDのために取得される。
【００９６】
ステップS504:ホスト30が読取り命令をソースSSDに送信する。
【００９７】
複数のターゲットSSDに従って複数の読取り命令を生成するとき、ホスト30は順番に、生成順序に従って複数の読取り命令をソースSSDに送信する。
【００９８】
ステップS505:読取り命令を受信した後で、ソースSSDは、読取り命令に対応しソースSSDのフラッシュメモリ225の中にあるデータブロックを、ターゲットSSDの移行キャッシュへと読み込む。
【００９９】
この実装形態では、読取り命令を受信した後で、ソースSSDの主要コントローラは、読取り命令の中のソースアドレスに従って、ソースSSDのフラッシュメモリからソースアドレスに対応するデータブロックを発見して、次いで宛先アドレスに従って、宛先アドレスによって示されるターゲットSSDのキャッシュへデータブロックを書き込むように、ソースSSDのDMAコントローラ224に命令する。データブロックをターゲットSSDのキャッシュに書き込むとき、DMAコントローラ224はまず、PCIeスイッチを使用することによって、データブロックおよび宛先アドレスを宛先アドレスによって示されるターゲットSSDに送信する。次いで、ターゲットSSDは、宛先アドレスの中の第1のアクセスアドレスに従って、第1のアクセスアドレスに対応する移行キャッシュの物理アドレスを発見し、次いでデータブロックを移行キャッシュに記憶する。
【０１００】
ステップS506:すべてのデータブロックをターゲットSSDの移行キャッシュへと読み込んだ後で、ソースSSDは、読取り完了フィードバック命令をホスト30に送信する。
【０１０１】
ステップS507:ソースSSDによって送信された読取り完了フィードバック命令を受信した後で、ホスト30が書込み命令をターゲットSSDに送信し、書込み命令はソースアドレスおよび宛先アドレスを含み、書込み命令のソースアドレスはターゲットSSDの移行キャッシュのアクセス情報であり、書込み命令の宛先アドレスは、ターゲットSSDのフラッシュメモリの中にありデータブロックを記憶する、ストレージ空間に対応する論理アドレスである。
【０１０２】
ステップS508:ターゲットSSDが、書込み命令のソースアドレスに従ってターゲットSSDの移行キャッシュからデータブロックを読み取り、宛先アドレスに従ってターゲットSSDのフラッシュメモリに移行キャッシュの中のデータブロックを書き込む。
【０１０３】
ステップS509:ターゲットSSDがデータブロックの書込みを完了した後で、ターゲットSSDが書込み完了フィードバック命令をホスト30に送信する。
【０１０４】
ステップS510:書込み完了フィードバック命令を受信した後で、ホスト30が、ソースSSDの中の移行される予定のデータがすべて移行されたかどうかを決定する。
【０１０５】
ステップS511:ソースSSDの中の移行される予定のデータがすべて移行されてはいない場合、新しい読取り命令を生成し、ステップS504に戻る。または、ソースSSDの中の移行される予定のデータがすべて移行されている場合、データ移行手順を終了する。生成された新しい読取り命令の宛先アドレスは、フィードバック命令を送信するターゲットSSDの移行キャッシュのアクセス情報である。複数のフィードバック命令を受信した後で、ホスト30が、各フィードバック命令のための1つの新しい読取り命令を生成する。
【０１０６】
ステップS503において読取り命令を生成する方式が方式1である場合、ステップS511において、移行されていないデータブロックから1つのデータブロックが決定され、決定されたデータブロックのために新しい読取り命令が生成される。
【０１０７】
ステップS503における読取り命令を生成する方式が方式2である場合、ステップS511において、1つのデータブロックを取得するために、移行されていない移行される予定のデータが分割され、分割を通じて新しく取得されたデータブロックに従って新しい読取り命令が生成される。
【０１０８】
上述の実施形態において提供される方法によれば、ソースSSDの中のデータを、ホスト30のメモリを使用せずにターゲットSSDへ直接送信することができる。したがって、ホスト30のCPU帯域幅が占有されず、SSD間のデータ移行の速度が向上する。
【０１０９】
図6に示されるように、図6は、この実施形態における図3に示されるホスト30およびストレージシステムの中のSSDの機能ブロック図である(データ移行のためのソースSSDおよびターゲットSSDのブロック図のみが図に示されている)。ホスト30は、割振りモジュール601、読取り命令モジュール602、書込み命令モジュール603、および決定モジュール604を含む。SSDは、設置モジュール605、対応付けモジュール606、読取りモジュール607、および書込みモジュール608を含む。図では、すべてのSSDが同じ機能モジュールを含む。しかしながら、実際の応用では、データの移行元のソースSSDとしてSSDが使用されるとき、書込みモジュール608によって実行される機能は実行されず、データの移行先のターゲットSSDとしてSSDが使用されるとき、読取りモジュール607によって実行される機能は実行されない。
【０１１０】
データ移行プロセスに従って、以下ではホストおよびSSDの各モジュールによって実行される機能を説明する。
【０１１１】
各SSDの設置モジュール605は、ホストおよび別のSSDによるアクセスのために、SSDの中に移行キャッシュを設ける機能を実装するために、ホスト30の割振りモジュール601と協調する。これは、図4における、ホストによるアクセスのためにSSDによってキャッシュを提供するための方法に対応する。具体的には、SSDの設置モジュール605は、SSDのコントローラ221のレジスタ222に移行キャッシュのキャッシュ情報を設定するように構成される。具体的な設置方式については、ステップS401の説明を参照されたい。
【０１１２】
ホスト30の割振りモジュール601は、ホスト30のBIOSブート段階の間に、SSDの主要コントローラ221のレジスタ222から各SSDの移行キャッシュ情報を読み取り、読み取られた移行キャッシュ情報に従って各SSDの移行キャッシュへ別々にアクセス情報を割り振り、各SSDのメタデータ304に、SSDへ割り振られたアクセス情報を記録し、SSDの移行キャッシュへ割り振られるアクセス情報を各SSDのレジスタへ別々に書き込むように構成される。具体的な割振り方式については、ステップS402の説明を参照されたい。
【０１１３】
対応付けモジュール606は、移行キャッシュとしてのキャッシュ223から、設定されたキャッシュサイズと同じサイズを有するキャッシュ空間を選択し、アクセス情報と移行キャッシュとの間に対応付け関係を確立するように構成される。これはステップS404に対応する。
【０１１４】
ホスト30の読取り命令モジュール602は、あらかじめ設定されたデータ移行条件を検出し、あらかじめ設定されたデータ移行条件が検出されると、ソースSSDの中の移行される予定のデータの移行データ情報を取得してターゲットSSDを決定し、ターゲットSSDに対応するアクセス情報および移行データ情報に従って読取り命令を生成し、生成された読取り命令をソースSSDに送信するように構成される。読取り命令モジュール602によって実行される機能は、ステップS501〜S504に対応する。読取り命令を生成する2つの方式は、ステップS503における方式と同じであり、本明細書では説明されない。
【０１１５】
読取り命令を受信した後で、ソースSSDは、読取り命令に対応しソースSSDのフラッシュメモリの中にあるデータブロックを、ターゲットSSDの移行キャッシュへと読み込む。すべてのデータブロックがターゲットSSDの移行キャッシュへと読み込まれた後で、ソースSSDは、読取り完了フィードバック命令をホスト30に送信する。ソースSSDのフラッシュメモリからデータを読み取るプロセスについては、ステップS505およびS506の説明を参照されたい。
【０１１６】
ソースSSDによって送信される読取り完了フィードバック命令を受信した後で、ホストの書込み命令モジュール603は、書込み命令をターゲットSSDに送信する。書込み命令モジュール603によって実行される機能は、ステップS507に対応する。
【０１１７】
ターゲットSSDの書込みモジュール608は、書込み命令に従ってターゲットSSDの中のキャッシュアドレスをターゲットSSDのフラッシュメモリに書き込み、キャッシュアドレスの書込みが完了した後で、書込み完了フィードバック命令をホスト30に送信する。
【０１１８】
ホスト30の決定モジュール604は、ソースSSDの中の移行される予定のデータがすべて移行されたかどうかを決定し、ソースSSDの中の移行される予定のデータがすべて移行されてはいない場合、新しい読取り命令を生成し、新しい読取り命令をソースSSDに送信し、または、ソースSSDの中の移行される予定のデータがすべて移行されている場合、データ移行プロセスを終了する。新しい読取り命令を生成する方式については、ステップS511の関連する説明を参照されたい。
【０１１９】
第2の実施形態
第2の実施形態と第1の実施形態との違いは、第2の実施形態では、ソースSSDの中の移行される予定のデータがソースSSDの移行キャッシュへとまず読み込まれ、次いでソースSSDの移行キャッシュの中のデータがターゲットSSDへ書き込まれるということにのみある。以下では、フローチャートを参照して、第2の実施形態におけるデータ移行方法を説明する。
【０１２０】
第2の実施形態では、ストレージシステムのアーキテクチャは、図3のアーキテクチャと同じである。ストレージシステムの中のSSDはまた、ホストおよび別のSSDによるアクセスのためのキャッシュを提供する。したがって、以下の説明では、第2の実施形態は、依然として図3のアーキテクチャを使用することによって説明される。加えて、ホストおよび別のSSDによるアクセスのためにSSDによりキャッシュを提供するための方法は、第1の実施形態の方式と同じである。詳細については図4の説明を参照されたく、詳細は本明細書では説明されない。
【０１２１】
図7を参照すると、以下では、第2の実施形態における、ソースSSDの中の移行される予定のデータをターゲットSSDに移行するための方法を説明する。
【０１２２】
ステップS701:検出ホストがあらかじめ設定されたデータ移行条件を検出する。このステップは第1の実施形態のステップS501と同じであり、本明細書では説明されない。
【０１２３】
ステップS702:あらかじめ設定されたデータ移行条件が検出されると、ホストがターゲットSSDを決定する。ターゲットSSDを決定する方式も第1の実施形態のステップS502における方式と同じであり、本明細書では説明されない。
【０１２４】
第2の実施形態では、ソースSSDの中の移行される予定のデータが、ソースSSDのキャッシュの中の移行キャッシュへと読み込まれる必要があるので、ステップS703において、読取り命令が、ソースSSDのアクセス情報および移行データ情報に従って生成される。
【０１２５】
ソースSSDのアクセス情報および移行データ情報に従って読取り命令を生成する2つの方式もある。
【０１２６】
方式1:移行される予定のデータが、ソースSSDのアクセス情報の中のソースSSDの移行キャッシュの長さと、移行データ情報の中の移行される予定のデータのデータ量とに従って、複数のデータブロックへと分割され、読取り命令が、分割された複数のデータブロックの移行データ情報およびソースSSDに対応するアクセス情報に従って生成される。
【０１２７】
方式2:ターゲットSSDに現在移行されるデータブロックの移行データ情報が、ソースSSDのアクセス情報の中のソースSSDの移行キャッシュの長さと、移行データ情報の中の移行される予定のデータのデータ量とに従って取得され、読取り命令が、データブロックの取得された移行データ情報およびソースSSDに対応するアクセス情報に従って生成される。
【０１２８】
読取り命令のソースアドレスはソースSSDによって読み取られるデータブロックの論理アドレスであり、宛先アドレスはソースSSDの移行キャッシュの第1のアクセスアドレスである。
【０１２９】
読取り命令がステップS704を使用することによってソースSSDに送信された後で、ステップS705において、ソースSSDは、読取り命令に従って、読取り命令に対応しソースSSDのフラッシュメモリの中にあるデータブロックを、ソースSSDの移行キャッシュへと読み込む。
【０１３０】
すべてのデータブロックがソースSSDの移行キャッシュへと読み取られた後で、ステップS706において、ソースSSDはまた、読取り完了フィードバック命令を生成し、読取り完了フィードバック命令をホストに送信する。
【０１３１】
ステップS707:読取り完了フィードバック命令を受信した後で、ホストが書込み命令をターゲットSSDに送信する。書込み命令のソースアドレスは、読取り命令に従って読み取られるデータブロックの論理アドレスである。宛先アドレスは、ターゲットSSDのフラッシュメモリの中にありデータブロックを記憶するために使用される、ストレージ空間の論理アドレスである。
【０１３２】
ステップS708:ターゲットSSDが、書込み命令に従ってソースSSDの移行キャッシュの中のデータブロックをターゲットSSDに書き込む。
【０１３３】
具体的には、書込み命令を受信した後で、ターゲットSSDは、PCIeスイッチを使用することによってDMA方式でターゲットSSDのキャッシュへ、ソースSSDの移行キャッシュに記憶されているデータブロックを書き込むように、ターゲットSSDのDMAコントローラに命令する。
【０１３４】
DMAコントローラがDMA方式でソースSSDの移行キャッシュの中のデータブロックを取得するとき、DMAコントローラは、ソースSSDの第1のアクセスアドレスをソースSSDに送信する。ソースSSDは、第1のアクセスアドレスに従って、ソースSSDの移行キャッシュに記憶されているデータブロックを取得し、次いで、PCIeスイッチを使用することによってデータブロックをターゲットSSDのフラッシュメモリに書き込む。
【０１３５】
ステップS709:ターゲットSSDがデータブロックの書込みを完了した後で、ターゲットSSDが書込み完了フィードバック命令をホストに送信する。
【０１３６】
ステップS710:書込み完了フィードバック命令を受信した後で、ホストが、ソースSSDの中の移行される予定のデータがすべて移行されたかどうかを決定する。
【０１３７】
ステップS711:ソースSSDの中の移行される予定のデータがすべて移行されてはいない場合、新しい読取り命令を生成し、ステップS704に戻る。または、ソースSSDの中の移行される予定のデータがすべて移行されている場合、データ移行手順を終了する。
【０１３８】
ステップS703の読取り命令を生成する方式が方式1である場合、ステップS711において、1つのデータブロックが、移行されていないデータブロックから決定され、新しい読取り命令が、決定されたデータブロックのために生成される。
【０１３９】
ステップS703の読取り命令を生成する方式が方式2である場合、ステップS711において、移行されていない移行される予定のデータが、1つのデータブロックを取得するために分割され、新しい読取り命令が、分割を通じて新しく取得されたデータブロックに従って生成される。
【０１４０】
第2の実施形態では、ホストおよびSSDの機能ブロック図は、第1の実施形態におけるホストおよびSSDに含まれる機能モジュールと同じであるが、一部の機能モジュールは異なる機能を実行する。
【０１４１】
ホストの割振りモジュール601ならびにSSDの設置モジュール605および対応付けモジュール606は、第1の実施形態におけるモジュールと同じ機能を実行する。これは本明細書では説明されない。
【０１４２】
本実施形態では、ソースSSDのフラッシュメモリの中のデータはまず、ソースSSDの移行キャッシュに移行される。したがって、読取り命令モジュール602が読取り命令を生成するとき、生成された読取り命令の宛先アドレスは、ソースSSDの移行キャッシュのアクセス情報である。このようにして、ソースSSDの読取りモジュール607は、読取り命令に従って、読取り命令に対応するデータブロックをソースSSDの移行キャッシュへと読み込む。ホストの書込み命令モジュール603によって送信される書込み命令のソースアドレスは、ソースSSDの移行キャッシュのアクセス情報である。ターゲットSSDの書込みモジュールは、書込み命令に従って、ソースSSDの移行キャッシュの中のデータブロックをターゲットSSDのフラッシュメモリに移行する。
【０１４３】
他の部分は第1の実施形態の場合と同じであり、本明細書では説明されない。
【０１４４】
第3の実施形態
第3の実施形態と第1の実施形態との違いは、第3の実施形態では、ソースSSDの中のデータが移行される必要があることを検出するときに、ホストのSSDが移行コマンドをソースSSDに送信するだけでよいということにある。ソースSSDは、移行コマンドに従って、ソースSSDのフラッシュメモリの中の移行される予定のデータをターゲットSSDに移行することができる。ソースSSDのキャッシュの中のデータがすべて移行された後で、ソースSSDは、移行完了フィードバック命令をホストに送信するだけでよい。このようにして、データ移行プロセス全体において、ホストは、ソースSSDとコマンドを2回交換するだけでよく、しかしデータ移行プロセスに参加する必要がないので、SSD間のデータ移行の間に占有されるホスト帯域幅がさらに減る。以下では、フローチャートを参照して、第3の実施形態のデータ移行方法を説明する。
【０１４５】
第3の実施形態では、ストレージシステムのアーキテクチャは図3のアーキテクチャと同じである。ストレージシステムの中のSSDはまた、ホストおよび別のSSDによるアクセスのための移行キャッシュを提供する。したがって、以下の説明では、第3の実施形態が、依然として図3のアーキテクチャに基づいて説明される。加えて、ホストおよび別のSSDによるアクセスのためにSSDによって移行キャッシュを提供するための方法は、第1の実施形態における方法と同じである。詳細については図4の説明を参照されたく、詳細は本明細書では説明されない。
【０１４６】
図8Aおよび図8Bを参照すると、以下では、第3の実施形態における、ソースSSDの中の移行される予定のデータをターゲットSSDに移行するための方法を説明する。
【０１４７】
ステップS801:検出ホストが、あらかじめ設定されたデータ移行条件を検出する。このステップは、第1の実施形態におけるステップS501と同じであり、本明細書では説明されない。
【０１４８】
ステップS802:あらかじめ設定されたデータ移行条件が検出されると、ホストがターゲットSSDを決定する。ターゲットSSDを決定する方式も第1の実施形態のステップS502における方式と同じであり、本明細書では説明されない。
【０１４９】
ステップS803:ホストがデータ移行命令をソースSSDに送信し、データ移行命令はターゲットSSDに対応するアクセス情報を搬送する。
【０１５０】
ステップS804:ソースSSDが、ソースSSDの中の移行される予定のデータと、ターゲットSSDに対応し受信された移行命令において搬送されるアクセス情報とに従って、読取り命令を生成する。
【０１５１】
この実施形態では、ソースSSDによる読取り命令を生成する2つの方式がある。方式1:移行される予定のデータが、ターゲットSSDのアクセス情報の中にある、ターゲットSSDによって提供される移行キャッシュの長さと、ソースSSDの中の移行される予定のデータのデータ量とに従って、複数のデータブロックへと分割される。各データブロックの長さは移行キャッシュの長さに等しい。加えて、各データブロックのストレージアドレスは、移行される予定のデータのストレージアドレスと、分割を通じて取得されるデータブロックの長さとに従って決定され得る。加えて、各ターゲットSSDに対して、1つのデータブロックが取得され、1つの読取り命令が生成される。本明細書でのストレージアドレスはSSDの中のデータの論理アドレスであり、SSDに記憶されているデータは、SSDの中のデータの論理アドレスと物理アドレスとの間の対応付け関係に従って発見され得ることに留意されたい。
【０１５２】
方式2:読取り命令の生成の間に、すべての移行される予定のデータが分割されるのではなく、代わりに、1つだけのデータブロックが1つのターゲットSSDのために分割を通じて取得される。分割を通じて取得されるデータブロックのストレージアドレスが決定され、次いで読取り命令が分割を通じて取得されるデータブロックのために生成される。
【０１５３】
読取り命令はソースアドレスおよび宛先アドレスを含む。ソースアドレスは、読取り命令に従って読み取られるデータブロックのストレージアドレスであり、宛先アドレスは、ターゲットSSDの移行キャッシュの第1のアクセスアドレスである。複数のターゲットSSDが決定されるとき、複数の読取り命令を生成するために、移行される予定のデータのストレージアドレスの昇順で、1つのデータブロックが各ターゲットSSDのために取得される。
【０１５４】
ステップS805:ソースSSDが、読取り命令に対応しソースSSDのフラッシュメモリの中にあるデータブロックをターゲットSSDの移行キャッシュへと読み込むために、読取り命令を実行する。
【０１５５】
この実施形態では、読取り命令に対応しソースSSDのフラッシュメモリの中にあるデータブロックは、ソースSSDのDMAコントローラを使用することによっても、ターゲットSSDの移行キャッシュへと読み込まれる。DMAコントローラによってデータブロックを読み取るプロセスは、第1の実施形態におけるプロセスと同じである。詳細については、第1の実施形態のステップS505の関連する説明を参照されたい。
【０１５６】
ステップS806:読取り命令の実行を完了した後で、ソースSSDは書込み要求をターゲットSSDに送信し、書込み要求はターゲットSSDの移行キャッシュのアクセス情報を含む。
【０１５７】
ステップS807:ターゲットSSDが、書込み要求に従って書込み命令を生成する。書込み命令は、ソースアドレスおよび宛先アドレスを含む。書込み命令のソースアドレスは、ターゲットSSDの移行キャッシュのアクセス情報であり、書込み命令の宛先アドレスは、ターゲットSSDのフラッシュメモリの中にありデータブロックを記憶するために使用される、ストレージアドレスである。
【０１５８】
ステップS808:ターゲットSSDの移行キャッシュの中のデータブロックをターゲットSSDのフラッシュメモリに書き込むために、書込み命令を実行する。
【０１５９】
ステップS809:書込みを完了した後で、ターゲットSSDが書込み完了フィードバック命令をソースSSDに送信する。
【０１６０】
ステップS810:書込み完了フィードバック命令を受信した後で、ソースSSDが、移行される予定のデータがすべて移行されているかどうかを決定し、移行される予定のデータがすべて移行されてはいない場合、ステップS811を実行する。または、移行される予定のデータがすべて移行されている場合、ステップS812を実行する。
【０１６１】
ステップS811:新しい読取り命令を生成し、次いでステップS805に戻る。ステップS804の読取り命令を生成する方式が方式1である場合、ステップS811において、ソースSSDが、移行されていないデータブロックから1つのデータブロックを決定し、決定されたデータブロックのために新しい読取り命令を生成する。
【０１６２】
ステップS804の読取り命令を生成する方式が方式2である場合、ステップS811において、ソースSSDが、移行されていない移行される予定のデータを分割することによって1つのデータブロックを取得し、分割を通じて新しく取得されたデータブロックに従って新しい読取り命令を生成する。
【０１６３】
ステップS812:ソースSSDが、移行完了フィードバック命令をホストに送信し、移行完了フィードバック命令を受信した後で、ホストがデータ移行方法を終了し得る。
【０１６４】
図9に示されるように、図9は、第3の実施形態のホストおよびSSDのブロック図である。ホストは、割振りモジュール901および移行命令モジュール902を含む。SSDは、設置モジュール903、対応付けモジュール904、読取り命令モジュール905、読取りモジュール906、書込み命令モジュール907、書込みモジュール908、および決定モジュール909を含む。この実施形態では、ホストの割振りモジュール901ならびにSSDの設置モジュール903および対応付けモジュール904によって実行される機能は、第1の実施形態の割振りモジュール601、設置モジュール605、および対応付けモジュール606の機能と同じであり、本明細書では説明されない。
【０１６５】
ホストの移行命令モジュール902は、あらかじめ設定されたデータ移行条件が検出されると、ターゲットSSDを決定し、データ移行命令をソースSSDに送信するように構成され、データ移行命令は、ターゲットSSDに対応するアクセス情報を搬送する。
【０１６６】
ソースSSDの読取り命令モジュール905は、ソースSSDの中の移行される予定のデータと、ターゲットSSDに対応し受信された移行命令において搬送されるアクセス情報とに従って、読取り命令を生成するように構成される。読取り命令を生成する2つの方式については、ステップS804の説明を参照されたい。
【０１６７】
ソースSSDの読取りモジュール906は、読取り命令を実行し、読取り命令に対応しソースSSDのフラッシュメモリの中にあるデータブロックをターゲットSSDの移行キャッシュへと読み込むように構成される。これはステップS805に対応する。
【０１６８】
読取り命令の実行が完了した後で、ソースSSDの書込み命令モジュール907は、書込み要求をターゲットSSDに送信し、書込み要求は、ターゲットSSDの移行キャッシュのアクセス情報を含む。
【０１６９】
ターゲットSSDの書込みモジュール908は、書込み要求に従って書込み命令を生成する。書込み命令は、ソースアドレスおよび宛先アドレスを含む。書込み命令のソースアドレスは、ターゲットSSDの移行キャッシュのアクセス情報であり、書込み命令の宛先アドレスは、ターゲットSSDのフラッシュメモリの中にありデータブロックを記憶するために使用される、ストレージアドレスである。ターゲットSSDの移行キャッシュの中のデータブロックは、書込み命令に従ってターゲットSSDのフラッシュメモリに書き込まれ、書込みが完了した後で、書込み完了フィードバック命令がソースSSDに送信される。
【０１７０】
書込み完了フィードバック命令を受信した後で、ソースSSDの決定モジュール909は、移行される予定のデータがすべて移行されているかどうかを決定し、移行される予定のデータがすべて移行されてはいない場合、新しい読取り命令を生成し、または移行される予定のデータがすべて移行されている場合、移行完了フィードバック命令をホストに送信するので、ホストがデータ移行を終了する。新しい読取り命令を生成する方式はステップS811における方式と同じであり、本明細書では説明されない。
【０１７１】
第4の実施形態
第4の実施形態と第3の実施形態は類似しており、ソースSSDの中の移行される予定のデータがターゲットSSDに移行されるとき、ソースSSDの中の移行される予定のデータがまずソースSSDの移行キャッシュに移行され、次いでソースSSDの移行キャッシュの中のデータがターゲットSSDのフラッシュメモリに移行されるという点のみが異なる。
【０１７２】
第4の実施形態では、ストレージシステムのアーキテクチャは図3のアーキテクチャと同じである。ストレージシステムの中のSSDはまた、ホストによるアクセスのためのキャッシュを提供する。したがって、以下の説明では、第4の実施形態は依然として、図3のアーキテクチャに基づいて説明される。加えて、ホストによる使用のためにSSDによりキャッシュを提供するための方法は、第1の実施形態の方法と同じである。詳細については、図4の説明を参照されたく、詳細は本明細書では説明されない。
【０１７３】
図10Aおよび図10Bを参照すると、以下は、第4の実施形態におけるソースSSDの中の移行される予定のデータをターゲットSSDに移行するための方法を説明する。
【０１７４】
ステップS1001:検出ホストがあらかじめ設定されたデータ移行条件を検出する。このステップは、第1の実施形態のステップS501と同じであり、本明細書では説明されない。
【０１７５】
ステップS1002:あらかじめ設定されたデータ移行条件が検出されると、ホストがターゲットSSDを決定する。ターゲットSSDを決定する方式も第1の実施形態のステップS502の方式と同じであり、本明細書では説明されない。
【０１７６】
ステップS1003:ホストがデータ移行命令をソースSSDに送信し、データ移行命令はソースSSDに対応するアクセス情報およびターゲットSSD情報を搬送する。
【０１７７】
ステップS1004:ソースSSDが、ソースSSDの中の移行される予定のデータと、ソースSSDに対応し受信された移行命令において搬送されるアクセス情報とに従って、読取り命令を生成する。
【０１７８】
ソースSSDによって読取り命令を生成する方式は、第3の実施形態におけるソースSSDにより読取り命令を生成する2つの方式と類似している。違いは、生成された読取り命令の宛先アドレスがソースSSDに対応するアクセス情報であるということにのみある。
【０１７９】
ステップS1005:ソースSSDが、読取り命令に対応しソースSSDのフラッシュメモリの中にあるデータブロックをソースSSDの移行キャッシュへと読み込むために、読取り命令を実行する。
【０１８０】
ステップS1006:読取り命令の実行を完了した後で、ソースSSDがターゲットSSD情報に対応するターゲットSSDに書込み要求を送信し、書込み要求はソースSSDの移行キャッシュのアクセス情報を搬送する。
【０１８１】
ステップS1007:ターゲットSSDが書込み要求に従って書込み命令を生成し、書込み命令のソースアドレスがソースSSDに対応するアクセス情報であり、書込み命令の宛先アドレスは、ターゲットSSDのフラッシュメモリの中にありソースSSDの移行キャッシュにデータブロックを記憶するために使用されるアドレスである。
【０１８２】
ステップS1008:ターゲットSSDが、ソースSSDの移行キャッシュの中のデータブロックをターゲットSSDのフラッシュメモリに移行するために、書込み命令を実行する。
【０１８３】
ステップS1009:書込み命令の実行を完了した後で、ターゲットSSDが書込み完了フィードバック命令をソースSSDに送信する。
【０１８４】
ステップS1010:書込み完了フィードバック命令を受信した後で、ソースSSDが、移行される予定のデータがすべて移行されているかどうかを決定し、移行される予定のデータがすべて移行されてはいない場合、ステップS1011を実行する。または、移行される予定のデータがすべて移行されている場合、ステップS1012を実行する。
【０１８５】
ステップS1011:新しい読取り命令を生成し、次いでステップS1005に戻る。ステップS1004における読取り命令を生成する方式が方式1である場合、ステップS1011において、ソースSSDが、移行されていないデータブロックから1つのデータブロックを決定し、決定されたデータブロックのために新しい読取り命令を生成する。
【０１８６】
ステップS1004における読取り命令を生成する方式が方式2である場合、ステップS1011において、ソースSSDが、移行されていない移行される予定のデータを分割することによって1つのデータブロックを取得し、分割を通じて新しく取得されたデータブロックに従って新しい読取り命令を生成する。
【０１８７】
ステップS1012:ソースSSDが移行完了フィードバック命令をホストに送信し、移行完了フィードバック命令を受信した後で、ホストがデータ移行方法を終了し得る。
【０１８８】
第4の実施形態において、ホストおよびSSDの機能ブロック図は、第1の実施形態におけるホストおよびSSDに含まれる機能モジュールと同じであるが、一部の機能モジュールは異なる機能を実行する。
【０１８９】
ホストの割振りモジュール901ならびにSSDの設置モジュール903および対応付けモジュール904によって実行される機能は、第1の実施形態におけるホストの割振りモジュール601、ならびにSSDの設置モジュール605および対応付けモジュール606の機能と同じであり、本明細書では説明されない。
【０１９０】
この実施形態では、ソースSSDのフラッシュメモリの中のデータがまず、ソースSSDの移行キャッシュに移行される。したがって、読取り命令モジュール905が読取り命令を生成するとき、生成される読取り命令の宛先アドレスは、ソースSSDの移行キャッシュのアクセス情報である。このようにして、ソースSSDの読取りモジュール906は、読取り命令に従って、読取り命令に対応するデータブロックをソースSSDの移行キャッシュへと読み込む。書込み命令モジュール907によって送信される書込み要求は、ソースSSDの移行キャッシュのアクセス情報を搬送する。ターゲットSSDの書込みモジュールは、書込み要求に従って書込み命令を生成し、書込み命令を実行してソースSSDの移行キャッシュの中のデータブロックをターゲットSSDのフラッシュメモリに移行する。書込み命令のソースアドレスは、ソースSSDに対応するアクセス情報であり、書込み命令の宛先アドレスは、ターゲットSSDのフラッシュメモリの中にありソースSSDの移行キャッシュにデータブロックを記憶するために使用されるアドレスである。
【０１９１】
他の部分は、第3の実施形態においてホストおよびSSDに含まれるモジュールの場合と同じ機能を有する。これは本明細書では説明されない。
【０１９２】
第5の実施形態
第5の実施形態では、ストレージシステムの中のSSDは、ホストおよび別のSSDによるアクセスのためのキャッシュを提供する必要がなく、代わりに、SSD間のデータ移行は、SSDの中のコントローラのレジスタを使用することによって実行される。
【０１９３】
ストレージシステムのアーキテクチャは、図3のアーキテクチャと同じである。SSDのコントローラのレジスタを使用することによってSSD間のデータを移行するための方法は、第3の実施形態において提供されるデータ移行方法に類似している。違いは、ターゲットSSDに対応するアクセス情報がターゲットSSDのコントローラのレジスタについての情報であるということにのみある。レジスタについての情報は、レジスタの第1のアクセスアドレスおよびレジスタの長さを含む。従来技術では、レジスタのアクセス情報はホストに記録される。したがって、ホストは、ターゲットSSDのコントローラのレジスタについての情報を直接取得することができる。以下では、図8Aおよび図8Bに示される第3の実施形態のデータ移行方法を参照して、この実施形態のデータ移行方法を説明する。この実施形態では、SSDに対応するアクセス情報は、SSDのコントローラのレジスタについての情報である。したがって、ターゲットSSDに対応し、ホストによって送信される移行命令において搬送される情報は、ターゲットSSDのコントローラのレジスタについての情報である(図8AのステップS804に対応する)。このようにして、読取り命令を生成するステップ(図8AのステップS804に対応する)では、データブロックが、分割を通じて取得され、レジスタの長さなどのターゲットSSDのコントローラのレジスタについての情報に従って読み取られる。生成される読取り命令の宛先アドレスは、ターゲットSSDのコントローラのレジスタのアクセス情報である。それに対応して、この実施形態では、読取り命令を実行するステップ(図8AのステップS805に対応する)では、ソースSSDが、読取り命令に対応しソースSSDのフラッシュメモリの中にあるデータブロックを、ターゲットSSDのコントローラのレジスタへと読み込む。加えて、書込み要求を送信するステップ(図8BのステップS806に対応する)において、書込み要求はまた、ターゲットSSDのコントローラのレジスタのアクセス情報を搬送する。ターゲットSSDによって生成される書込み命令のソースアドレスは、レジスタのアクセス情報である。したがって、ターゲットSSDは、書込み命令に従って、ターゲットSSDのコントローラのレジスタの中のデータブロックをターゲットSSDのフラッシュメモリに書き込むことができる。他のステップは基本的に第3の実施形態のステップと同じである。詳細については、図8Aおよび図8Bの関連する説明を参照されたい。
【０１９４】
図11は、第5の実施形態におけるホストおよびSSDのブロック図である。第5の実施形態では、SSDは、ホストおよび別のSSDによるアクセスのための移行キャッシュを提供する必要がない。したがって、設置モジュールまたは対応付けモジュールがなく、それに対応して、ホストは割振りモジュールを含まない。具体的には、図11に示されるように、ホストは移行命令モジュール1101を含み、SSD(ソースSSDおよびターゲットSSDを含む)は、読取り命令モジュール1102、読取りモジュール1103、書込み命令モジュール1104、書込みモジュール1105、および決定モジュール1106を含む。
【０１９５】
SSDに対応するアクセス情報は、この実施形態ではSSDのコントローラのレジスタについての情報であるので、ターゲットSSDに対応し、ホストの移行命令モジュール1101によって送信される移行命令において搬送される情報は、ターゲットSSDのコントローラのレジスタについての情報である。読取り命令モジュール1102が読取り命令を生成するとき、データブロックは、分割を通じて取得され、レジスタの長さなどのターゲットSSDのコントローラのレジスタについての情報に従って読み取られる。生成される読取り命令の宛先アドレスは、ターゲットSSDのコントローラのレジスタのアクセス情報である。それに対応して、ソースSSDの読取りモジュール1103は、読取り命令に対応しソースSSDのフラッシュメモリの中にあるデータブロックを、ターゲットSSDのコントローラのレジスタへと読み込む。加えて、ソースSSDの書込み命令モジュール1104が書込み要求を送信するとき、書込み要求はまた、ターゲットSSDのコントローラのレジスタのアクセス情報を搬送する。ターゲットSSDの書込み命令モジュール1104によって生成される書込み命令のソースアドレスは、レジスタのアクセス情報である。したがって、ターゲットSSDの書込みモジュール1105は、書込み命令に従って、ターゲットSSDのコントローラのレジスタの中のデータブロックをターゲットSSDのフラッシュメモリに書き込むことができる。他のモジュールによって実行される機能は基本的に、第3の実施形態における対応するモジュールによって実行される機能と同じである。詳細については、図9の関連するモジュールの説明を参照されたい。詳細は本明細書では説明されない。
【０１９６】
上記は、本発明の実施形態において提供される、データ移行方法、ホスト、およびソリッドステートディスクを詳細に説明する。本明細書では、本発明の原理および実装形態を説明するために具体的な例が使用され、実施形態の説明は、本発明の方法および中核の考えを理解するのを助けることのみが意図されている。加えて、当業者は、本発明の考えに従って、具体的な実装形態および適用範囲に対して修正を行うことができる。最後に、本明細書の内容は本発明に対する限定として解釈されるべきではない。
【符号の説明】
【０１９７】
10  ホスト
11  PCIeスイッチ
30  ホスト
31  PCIeスイッチ
101  CPU
102  メモリ
221  主要コントローラ
222  レジスタ
223  キャッシュ
224  DMAコントローラ
225  フラッシュメモリ
226  データ
301  CPU
302  メモリ
303  アプリケーションプログラム
304  SSDメタデータ
601  割振りモジュール
602  読取り命令モジュール
603  書込み命令モジュール
604  決定モジュール
605  設置モジュール
606  対応付けモジュール
607  読取りモジュール
608  書込みモジュール
901  割振りモジュール
902  移行命令モジュール
903  設置モジュール
904  対応付けモジュール
905  読取り命令モジュール
906  読取りモジュール
907  書込み命令モジュール
908  書込みモジュール
909  決定モジュール
1101  移行命令モジュール
1102  読取り命令モジュール
1103  読取りモジュール
1104  書込み命令モジュール
1105  書込みモジュール
1106  決定モジュール
【図１】
0006848060.tif 000002
【図２】
0006848060.tif 000003
【図３】
0006848060.tif 000004
【図４】
0006848060.tif 000005
【図５】
0006848060.tif 000006
【図６】
0006848060.tif 000007
【図７】
0006848060.tif 000008
【図８Ａ】
0006848060.tif 000009
【図８Ｂ】
0006848060.tif 000010
【図９】
0006848060.tif 000011
【図１０Ａ】
0006848060.tif 000012
【図１０Ｂ】
0006848060.tif 000013
【図１１】
0006848060.tif 000014