JP2020501249A - データ移行方法、ホスト、およびソリッドステートディスク - Google Patents

データ移行方法、ホスト、およびソリッドステートディスク Download PDF

Info

Publication number
JP2020501249A
JP2020501249A JP2019528048A JP2019528048A JP2020501249A JP 2020501249 A JP2020501249 A JP 2020501249A JP 2019528048 A JP2019528048 A JP 2019528048A JP 2019528048 A JP2019528048 A JP 2019528048A JP 2020501249 A JP2020501249 A JP 2020501249A
Authority
JP
Japan
Prior art keywords
ssd
data
migration
target
migrated
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2019528048A
Other languages
English (en)
Other versions
JP6848060B2 (ja
Inventor
▲閣▼ 杜
▲閣▼ 杜
▲ユ▼ 胡
▲ユ▼ 胡
建▲岑▼ 侯
建▲岑▼ 侯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2020501249A publication Critical patent/JP2020501249A/ja
Priority to JP2021033491A priority Critical patent/JP2021106002A/ja
Application granted granted Critical
Publication of JP6848060B2 publication Critical patent/JP6848060B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

本発明の実施形態は、データ移行方法、ホスト、およびSSDに関する。ストレージシステムのホストは複数のSSDに接続され、複数のSSDが互いに接続される。各SSDは移行キャッシュを伴って構成され、各SSDは1つのアクセス情報に対応する。データ移行方法は、ソースSSDの中の移行される予定のデータの移行データ情報を取得してターゲットSSDを決定し、読取り命令に対応しソースSSDのフラッシュメモリの中にあるデータブロックをターゲットSSDの移行キャッシュへと読み込むようにソースSSDに命令するために、ターゲットSSDに対応するアクセス情報および移行データ情報に従って読取り命令を生成するステップと、ソースSSDによって送信される読取り完了フィードバック命令が受信された後で、ターゲットSSDのキャッシュの中のデータブロックをターゲットSSDのフラッシュメモリへ書き込むようにターゲットSSDに命令するために、書込み命令を送信するステップとを含む。このようにして、データがSSD間で移行されるとき、データはホストのメモリを使用することによって移行されないので、ストレージシステムの性能に対する影響が減り、データ移行速度を確保する。

Description

本発明は、ストレージ技術の分野に関し、具体的には、ストレージデバイス間でデータを移行するための方法に関する。
ソリッドステートストレージデバイス(Solid Static Disk、SSD)のコストが下がり続け、高性能および低遅延を特徴とする不揮発性メモリエクスプレス(Non-Volatile Memory Express、NVMe)が発展するにつれて、現在、NVMe規格に基づくSSDディスクが、従来の機械的なハードディスクを徐々に置き換え、ストレージシステムにおける主要な記憶媒体になっている。
実際の応用では、データはストレージシステムの中のSSD間で頻繁に移行される必要がある。たとえば、ストレージシステムには、大量のSSDディスクおよび大きな容量があるので、比較的故障の確率が高い。データ喪失を避けるために、無効化されることになるSSD、すなわち無効化される予定のSSDは、事前に特定される必要があり、そして無効化される予定のSSDの中のデータは、バックアップのために別のSSDに移行される。
従来技術では、データがSSD間で移行されるとき、ストレージシステムのホストのメモリにおけるデータ移行に専用のメモリ空間を最初に割り振る必要があり、次いでホストの中央処理装置(Central Processing Unit)がソース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〜SSD224)によってアクセスされ得る。
データ移行方法は、
ソース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の態様によれば、本発明のある実施形態は別のデータ移行方法を提供する。第6の態様において提供されるデータ移行方法は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の態様におけるホストとの主な違いは、第8の態様では、ホストの読取り命令モジュールが、読取り命令に対応しソースSSDの中にあるデータブロックをソースSSDの移行キャッシュへ移行するようにソースSSDに命令するために、読取り命令をソースSSDに送信し、書込み命令モジュールが、ソースSSDの移行キャッシュの中のデータブロックをターゲットSSDのフラッシュメモリへ移行するようにターゲットSSDに命令するために、書込み命令をターゲットSSDに送信するということにある。
第8の態様では、ホストはまず、移行される予定のデータブロックをソース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の態様において提供されるデータ移行方法における方式と同じである。違いは、第8の態様の実装形態では、読取り命令の生成および実行がソース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の中のデータが無効になるべきであることを、CPU10が検出するとき、CPU10は、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を含む。SSD1〜SSD24は、PCIeスイッチ31を使用することによって互いに接続される。
ホスト30は、CPU301およびメモリ302を含む。CPU301は、ホスト30によって提供されるいくつかの機能を実装するために、たとえば、SSD0〜SSD24におけるデータのアクセスおよび移行を制御するために、メモリの中のアプリケーションプログラム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のメタデータ204に、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のキャッシュへデータブロックを書き込むように、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である場合、ステップ511において、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のメタデータ204に、SSDへ割り振られたアクセス情報を記録し、SSDの移行キャッシュへ割り振られるアクセス情報を各SSDのレジスタへ別々に書き込むように構成される。具体的な割振り方式については、ステップS402の説明を参照されたい。
対応付けモジュール606は、移行キャッシュとしてのキャッシュ223から、設定されたキャッシュサイズと同じサイズを有するキャッシュ空間を選択し、アクセス情報と移行キャッシュとの間に対応付け関係を確立するように構成される。これはステップS404に対応する。
SSDの読取り命令モジュール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の説明を参照されたく、詳細は本明細書では説明されない。
図6を参照すると、以下では、第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のアクセスアドレスである。
読取り命令がステップ604を使用することによってソースSSDに送信された後で、ステップS605において、ソース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の中の移行される予定のデータがすべて移行されてはいない場合、新しい読取り命令を生成し、ステップS604に戻る。または、ソースSSDの中の移行される予定のデータがすべて移行されている場合、データ移行手順を終了する。
ステップS703の読取り命令を生成する方式が方式1である場合、ステップS611において、1つのデータブロックが、移行されていないデータブロックから決定され、新しい読取り命令が、決定されたデータブロックのために生成される。
ステップS703の読取り命令を生成する方式が方式2である場合、ステップ711において、移行されていない移行される予定のデータが、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は、第2の実施形態のホストおよび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の移行キャッシュへと読み込むように構成される。これはステップ805に対応する。
読取り命令の実行が完了した後で、ソースSSDの書込み命令モジュール907は、書込み要求をターゲットSSDに送信し、書込み要求は、ターゲットSSDの移行キャッシュのアクセス情報を含む。
ターゲットSSDの書込みモジュール908は、書込み要求に従って書込み命令を生成する。書込み命令は、ソースアドレスおよび宛先アドレスを含む。書込み命令のソースアドレスは、ターゲットSSDの移行キャッシュのアクセス情報であり、書込み命令の宛先アドレスは、ターゲットSSDのフラッシュメモリの中にありデータブロックを記憶するために使用される、ストレージアドレスである。ターゲットSSDの移行キャッシュの中のデータブロックは、書込み命令に従ってターゲットSSDのフラッシュメモリに書き込まれ、書込みが完了した後で、書込み完了フィードバック命令がソースSSDに送信される。
書込み完了フィードバック命令を受信した後で、ソースSSDの決定モジュール909は、移行される予定のデータがすべて移行されているかどうかを決定し、移行される予定のデータがすべて移行されてはいない場合、新しい読取り命令を生成し、または移行される予定のデータがすべて移行されている場合、移行完了フィードバック命令をホストに送信するので、ホストがデータ移行を終了する。新しい命令を生成する方式はステップS811における方式と同じであり、本明細書では説明されない。
第4の実施形態
第4の実施形態と第3の実施形態は類似しており、ソースSSDの中の移行される予定のデータがターゲットSSDに移行されるとき、ソースSSDの中の移行される予定のデータがまずソースSSDの移行キャッシュに移行され、次いでソースSSDの移行キャッシュの中のデータがターゲットSSDのフラッシュメモリに移行されるという点のみが異なる。
第3の実施形態では、ストレージシステムのアーキテクチャは図3のアーキテクチャと同じである。ストレージシステムの中のSSDはまた、ホストによるアクセスのためのキャッシュを提供する。したがって、以下の説明では、第3の実施形態は依然として、図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の読取りモジュール607は、読取り命令に従って、読取り命令に対応するデータブロックをソース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の書込み命令モジュール1105によって生成される書込み命令のソースアドレスは、レジスタのアクセス情報である。したがって、ターゲットSSDの書込みモジュール1106は、書込み命令に従って、ターゲットSSDのコントローラのレジスタの中のデータブロックをターゲットSSDのフラッシュメモリに書き込むことができる。他のモジュールによって実行される機能は基本的に、第3の実施形態における対応するモジュールによって実行される機能と同じである。詳細については、図9の関連するモジュールの説明を参照されたい。詳細は本明細書では説明されない。
上記は、本発明の実施形態において提供される、コンピュータデバイスが起動するときのIOデバイス登録技術を詳細に説明する。本明細書では、本発明の原理および実装形態を説明するために具体的な例が使用され、実施形態の説明は、本発明の方法および中核の考えを理解するのを助けることのみが意図されている。加えて、当業者は、本発明の考えに従って、具体的な実装形態および適用範囲に対して修正を行うことができる。最後に、本明細書の内容は本発明に対する限定として解釈されるべきではない。
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 決定モジュール
本発明は、ストレージ技術の分野に関し、具体的には、ストレージデバイス間でデータを移行するための方法に関する。
ソリッドステートディスク(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 決定モジュール

Claims (72)

  1. ホストに適用されるデータ移行方法であって、前記ホストが複数のソリッドステートディスクSSDに接続され、前記複数のSSDが相互接続され、各SSDが移行キャッシュを伴って構成され、各SSDが1つのアクセス情報に対応し、前記ホストまたは前記SSD以外の別のSSDが前記アクセス情報に従って各SSDの前記移行キャッシュにアクセスし、前記データ移行方法が、
    ソースSSDの中の移行される予定のデータの移行データ情報を取得してターゲットSSDを決定し、前記ターゲットSSDに対応するアクセス情報および前記移行データ情報に従って読取り命令を生成し、前記読取り命令を前記ソースSSDに送信するステップであって、前記読取り命令が、前記読取り命令に対応し前記ソースSSDのフラッシュメモリの中にあるデータブロックを前記ターゲットSSDの移行キャッシュへと読み込むように前記ソースSSDに命令するために使用される、ステップと、
    前記ソースSSDによって送信される読取り完了フィードバック命令が受信された後で、前記ターゲットSSDの前記移行キャッシュの中の前記データブロックを前記ターゲットSSDのフラッシュメモリへ書き込むように前記ターゲットSSDに命令するために、書込み命令を前記ターゲットSSDに送信するステップとを備える、データ移行方法。
  2. 前記ホストが起動されるときに前記SSDのコントローラのレジスタから各SSDの前記移行キャッシュの情報を読み取るステップと、
    前記読み取られた移行キャッシュ情報に従って各SSDの前記移行キャッシュに前記アクセス情報を割り振り、各SSDに対応する前記アクセス情報を前記ホストに記録するステップとをさらに備える、請求項1に記載のデータ移行方法。
  3. 前記ターゲットSSDのアクセス情報および前記移行データ情報に従って読取り命令を生成する前記ステップが、
    前記ターゲットSSDの前記アクセス情報の中の前記ターゲットSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記移行される予定のデータを複数のデータブロックへと分割し、前記分割された複数のデータブロックの移行データ情報および前記ターゲットSSDに対応する前記アクセス情報に従って、前記読取り命令を生成するステップを備える、請求項1または2に記載のデータ移行方法。
  4. 前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、前記分割された複数のデータブロックがすべて移行されているかどうかを決定し、前記分割された複数のデータブロックがすべて移行されてはいない場合、移行されていないデータブロックから1つのデータブロックを決定し、前記決定されたデータブロックのために新しい読取り命令を生成するステップをさらに備え、前記新しい読取り命令の宛先アドレスが、前記書込み完了フィードバック命令を送信する前記ターゲットSSDである、請求項3に記載のデータ移行方法。
  5. 前記ターゲットSSDのアクセス情報および前記移行データ情報に従って読取り命令を生成する前記ステップが、
    前記ターゲットSSDの前記アクセス情報の中の前記ターゲットSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記ターゲットSSDに現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報および前記ターゲットSSDに対応する前記アクセス情報に従って前記読取り命令を生成するステップを備える、請求項1または2に記載のデータ移行方法。
  6. 前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、移行されていない移行される予定のデータがあるかどうかを決定し、移行されていない移行される予定のデータがある場合、移行されていない前記移行される予定のデータの移行データ情報に従って1つのデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報に従って新しい読取り命令を生成するステップをさらに備え、前記新しい読取り命令の宛先アドレスが、前記書込み完了フィードバック命令を送信する前記ターゲットSSDである、請求項5に記載のデータ移行方法。
  7. 各読取り命令がソースアドレスおよび宛先アドレスを備え、前記ソースアドレスが各読取り命令に従って読み取られるデータブロックの論理アドレスであり、前記宛先アドレスが前記ターゲットSSDの前記移行キャッシュの第1のアクセスアドレスである、請求項1から6のいずれか一項に記載のデータ移行方法。
  8. 前記ターゲットSSDが複数のターゲットSSDであり、前記読取り命令を生成する間に、1つの読取り命令が各ターゲットSSDのために生成され、前記生成された複数の読取り命令が前記ソースSSDに送信される、請求項1から7のいずれか一項に記載のデータ移行方法。
  9. ホストに適用されるデータ移行方法であって、前記ホストが複数のソリッドステートディスクSSDに接続され、前記複数のSSDが互いに相互接続され、各SSDが移行キャッシュを伴って構成され、各SSDが1つのアクセス情報に対応し、前記ホストまたは前記SSD以外の別のSSDが前記アクセス情報に従って各SSDの前記移行キャッシュにアクセスし、前記データ移行方法が、
    ソースSSDの中の移行される予定のデータの移行データ情報を取得してターゲットSSDを決定し、前記ソースSSDに対応するアクセス情報および前記移行データ情報に従って読取り命令を生成し、前記読取り命令を前記ソースSSDに送信するステップであって、前記読取り命令が、前記読取り命令に対応し前記ソースSSDのフラッシュメモリの中にあるデータブロックを前記ソースSSDの移行キャッシュへと読み込むように前記ソースSSDに命令するために使用される、ステップと、
    前記ソースSSDによって送信される読取り完了フィードバック命令が受信された後で、前記ソースSSDの前記移行キャッシュの中の前記データブロックを前記ターゲットSSDのフラッシュメモリへと書き込むように前記ターゲットSSDに命令するために、書込み命令を前記ターゲットSSDに送信するステップとを備える、データ移行方法。
  10. 前記ホストが起動されるときに前記SSDのコントローラのレジスタから各SSDの前記移行キャッシュの情報を読み取るステップと、
    前記読み取られた移行キャッシュ情報に従って各SSDの前記移行キャッシュに前記アクセス情報を割り振り、各SSDに対応する前記アクセス情報を前記ホストに記録するステップとをさらに備える、請求項9に記載のデータ移行方法。
  11. 前記ソースSSDのアクセス情報および前記移行データ情報に従って読取り命令を生成する前記ステップが、
    前記ソースSSDの前記アクセス情報の中の前記ソースSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記移行される予定のデータを複数のデータブロックへと分割し、前記分割された複数のデータブロックの移行データ情報および前記ソースSSDに対応する前記アクセス情報に従って、前記読取り命令を生成するステップを備える、請求項9または10に記載のデータ移行方法。
  12. 前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、前記分割された複数のデータブロックがすべて移行されているかどうかを決定し、前記分割された複数のデータブロックがすべて移行されてはいない場合、移行されていないデータブロックから1つのデータブロックを決定し、前記決定されたデータブロックのために新しい読取り命令を生成するステップをさらに備える、請求項11に記載のデータ移行方法。
  13. 前記ソースSSDのアクセス情報および前記移行データ情報に従って読取り命令を生成する前記ステップが、
    前記ソースSSDの前記アクセス情報の中の前記ソースSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記ターゲットSSDに現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報および前記ソースSSDに対応する前記アクセス情報に従って前記読取り命令を生成するステップを備える、請求項9または10に記載のデータ移行方法。
  14. 前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、移行されていない移行される予定のデータがあるかどうかを決定し、移行されていない移行される予定のデータがある場合、移行されていない前記移行される予定のデータの移行データ情報に従ってデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報に従って新しい読取り命令を生成するステップをさらに備える、請求項13に記載のデータ移行方法。
  15. 各読取り命令がソースアドレスおよび宛先アドレスを備え、前記ソースアドレスが各読取り命令に従って読み取られるデータブロックの論理アドレスであり、前記宛先アドレスが前記ソースSSDの前記移行キャッシュの第1のアクセスアドレスである、請求項9から14のいずれか一項に記載のデータ移行方法。
  16. ホストに適用されるデータ移行方法であって、前記ホストが複数のソリッドステートディスク(SSD)に接続され、前記複数のSSDが相互接続され、各SSDが移行キャッシュを伴って構成され、各SSDが1つのアクセス情報に対応し、前記ホストまたは前記SSD以外の別のSSDが前記アクセス情報に従って各SSDの前記移行キャッシュにアクセスし、前記データ移行方法が、
    データ移行命令をソースSSDに送信するステップを備え、前記データ移行命令がターゲットSSDに対応するアクセス情報を搬送し、その結果、前記ソースSSDが、前記ターゲットSSDに対応する前記アクセス情報および前記ソースSSDの中の移行される予定のデータに従って読取り命令を生成し、前記読取り命令に対応し前記ソースSSDのフラッシュメモリの中にあるデータブロックを前記ターゲットSSDの移行キャッシュへと読み込むために前記読取り命令を実行し、前記読取り命令の実行を完了した後で、前記ターゲットSSDの前記キャッシュの中の前記データブロックを前記ターゲットSSDのフラッシュメモリへ書き込むように前記ターゲットSSDに命令するために書込み要求を前記ターゲットSSDに送信する、データ移行方法。
  17. 起動するときに、前記ホストによって、前記SSDのコントローラのレジスタの中に設定される各SSDの移行キャッシュ情報を読み取るステップと、
    前記読み取られた移行キャッシュ情報に従って各SSDの前記移行キャッシュに前記アクセス情報を割り振り、各SSDに対応する前記アクセス情報を前記ホストに記録するステップとをさらに備える、請求項16に記載のデータ移行方法。
  18. 前記データ移行命令が複数のターゲットSSDに対応するアクセス情報を搬送する、請求項16または17に記載のデータ移行方法。
  19. ソリッドステートディスクSSDに適用されるデータ移行方法であって、前記SSDが、ホストに接続され、かつ前記ホストに接続される別のSSDに接続され、前記ホストに接続される前記SSDが移行キャッシュを伴って構成され、前記ホストに接続される各SSDが1つのアクセス情報に対応し、前記ホストまたは前記SSD以外の別のSSDが前記アクセス情報に従って各SSDの前記移行キャッシュにアクセスし、前記データ移行方法が、
    ソースSSDとして前記SSDによって、データ移行命令を受信するステップであって、前記データ移行命令がターゲットSSDに対応するアクセス情報を搬送する、ステップと、
    前記ターゲットSSDに対応する前記アクセス情報および前記ソースSSDのフラッシュメモリの中の移行される予定のデータの移行データ情報に従って読取り命令を生成するステップと、
    前記読取り命令に対応し前記ソースSSDの前記フラッシュメモリの中にあるデータブロックを前記ターゲットSSDの移行キャッシュへと読み込むために、前記読取り命令を実行するステップと、
    前記読取り命令の実行が完了した後で、前記ターゲットSSDの前記移行キャッシュの中の前記データブロックを前記ターゲットSSDのフラッシュメモリへ書き込むように前記ターゲットSSDに命令するために、書込み要求を前記ターゲットSSDに送信するステップであって、前記書込み要求が前記ターゲットSSDの前記移行キャッシュのアクセス情報を搬送する、ステップとを備える、データ移行方法。
  20. 前記ソースSSDの移行キャッシュ情報を前記ソースSSDのコントローラのレジスタの中に設定するステップをさらに備え、その結果、起動するときに、前記ホストが、前記レジスタに設定された前記移行キャッシュ情報を読み取り、前記読み取られた移行キャッシュ情報に従って前記アクセス情報を各SSDの前記移行キャッシュに割り振り、各SSDに対応する前記アクセス情報を前記ホストに記録する、請求項19に記載のデータ移行方法。
  21. 前記ターゲットSSDに対応する前記アクセス情報および前記ソースSSDのフラッシュメモリの中の移行される予定のデータの移行データ情報に従って読取り命令を生成する前記ステップが、
    前記ターゲットSSDの前記アクセス情報の中の前記ターゲットSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記移行される予定のデータを複数のデータブロックへと分割し、前記分割された複数のデータブロックの移行データ情報および前記ターゲットSSDに対応する前記アクセス情報に従って、前記読取り命令を生成するステップを備える、請求項20に記載のデータ移行方法。
  22. 前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、前記分割された複数のデータブロックがすべて移行されているかどうかを決定し、前記分割された複数のデータブロックがすべて移行されてはいない場合、移行されていないデータブロックから1つのデータブロックを決定し、前記決定されたデータブロックのための新しい読取り命令を生成するステップをさらに備え、前記新しい読取り命令の宛先アドレスが、前記書込み完了フィードバック命令を送信する前記ターゲットSSDである、請求項21に記載のデータ移行方法。
  23. 前記ターゲットSSDに対応する前記アクセス情報および前記ソースSSDのフラッシュメモリの中の移行される予定のデータの移行データ情報に従って読取り命令を生成する前記ステップが、
    前記ターゲットSSDの前記アクセス情報の中の前記ターゲットSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記ターゲットSSDに現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報および前記ターゲットSSDに対応する前記アクセス情報に従って前記読取り命令を生成するステップを備える、請求項19に記載のデータ移行方法。
  24. 前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、移行されていない移行される予定のデータがあるかどうかを決定し、移行されていない移行される予定のデータがある場合、移行されていない前記移行される予定のデータの移行データ情報に従って、現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報に従って新しい読取り命令を生成するステップをさらに備え、前記新しい読取り命令の宛先アドレスが、前記書込み完了フィードバック命令を送信する前記ターゲットSSDである、請求項23に記載のデータ移行方法。
  25. 各読取り命令がソースアドレスおよび宛先アドレスを備え、前記ソースアドレスが各読取り命令に従って読み取られるデータブロックのアドレスであり、前記宛先アドレスが前記ターゲットSSDの前記移行キャッシュの第1のアクセスアドレスである、請求項19から24のいずれか一項に記載のデータ移行方法。
  26. 前記ターゲットSSDが複数のターゲットSSDであり、前記読取り命令を生成する間に、1つの読取り命令が各ターゲットSSDのために生成される、請求項19から25のいずれか一項に記載のデータ移行方法。
  27. ホストに適用されるデータ移行方法であって、前記ホストが複数のソリッドステートディスクSSDに接続され、前記複数のSSDが相互接続され、各SSDが移行キャッシュを伴って構成され、各SSDが1つのアクセス情報に対応し、前記ホストが前記アクセス情報に従って各SSDの前記移行キャッシュにアクセスし、前記データ移行方法が、
    データ移行命令をソースSSDに送信するステップを備え、前記データ移行命令が前記ソースSSDに対応するアクセス情報およびターゲットSSD情報を搬送し、その結果、前記ソースSSDが、前記ソースSSDに対応する前記アクセス情報および前記ソースSSDのフラッシュメモリの中の移行される予定のデータに従って読取り命令を生成し、前記読取り命令に対応し前記ソースSSDの前記フラッシュメモリの中にあるデータブロックを前記ソースSSDの移行キャッシュへと読み込むために前記読取り命令を実行し、前記読取り命令の実行が完了した後で、前記ソースSSDの前記移行キャッシュの中の前記データブロックをターゲットSSDのフラッシュメモリへ書き込むように前記ターゲットSSDに命令するために書込み要求を前記ターゲットSSD情報に対応する前記ターゲットSSDへ送信し、前記書込み要求は前記ソースSSDの前記移行キャッシュのアクセス情報を搬送する、データ移行方法。
  28. 起動するときに、前記ホストによって、前記SSDのコントローラのレジスタの中に設定される各SSDの移行キャッシュ情報を読み取るステップと、
    前記読み取られた移行キャッシュ情報に従って各SSDの前記移行キャッシュに前記アクセス情報を割り振り、各SSDに対応する前記アクセス情報を前記ホストに記録するステップとをさらに備える、請求項27に記載のデータ移行方法。
  29. ソリッドステートディスクSSDに適用されるデータ移行方法であって、前記SSDが、ホストに接続され、かつ前記ホストに接続される別のSSDに接続され、前記ホストに接続される前記SSDが移行キャッシュを伴って構成され、前記ホストに接続される各SSDが1つのアクセス情報に対応し、前記ホストまたは前記SSD以外の別のSSDが前記アクセス情報に従って各SSDの前記移行キャッシュにアクセスし、前記データ移行方法が、
    ソースSSDとして前記SSDによって、データ移行命令を受信するステップであって、前記データ移行命令が前記ソースSSDおよびターゲットSSD情報に対応するアクセス情報を搬送する、ステップと、
    前記ソースSSDに対応する前記アクセス情報および前記ソースSSDのフラッシュメモリの中の移行される予定のデータの移行データ情報に従って読取り命令を生成するステップと、
    前記読取り命令に対応し前記ソースSSDの前記フラッシュメモリの中にあるデータブロックを前記ソースSSDの移行キャッシュへと読み込むために、前記読取り命令を実行するステップと、
    前記読取り命令の実行が完了した後で、前記ソースSSDの前記移行キャッシュの中の前記データブロックをターゲットSSDのフラッシュメモリへ書き込むように前記ターゲットSSDに命令するために、書込み要求を前記ターゲットSSD情報に対応する前記ターゲットSSDへ送信するステップであって、前記書込み要求が前記ソースSSDの前記移行キャッシュのアクセス情報を搬送する、ステップとを備える、データ移行方法。
  30. 前記ソースSSDの前記移行キャッシュのサイズを前記ソースSSDのコントローラのレジスタの中に設定するステップをさらに備え、その結果、起動するときに、前記ホストが、前記移行キャッシュ情報を読み取り、前記読み取られた移行キャッシュ情報に従って前記アクセス情報を前記ソースSSDの前記移行キャッシュに割り振る、請求項29に記載のデータ移行方法。
  31. 前記ソースSSDに対応する前記アクセス情報および前記ソースSSDのフラッシュメモリの中の移行される予定のデータの移行データ情報に従って読取り命令を生成する前記ステップが、
    前記ソースSSDの前記アクセス情報の中の前記ソースSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記移行される予定のデータを複数のデータブロックへと分割し、前記分割された複数のデータブロックの移行データ情報および前記ソースSSDに対応する前記アクセス情報に従って、前記読取り命令を生成するステップを備える、請求項29または30に記載のデータ移行方法。
  32. 前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、前記分割された複数のデータブロックがすべて移行されているかどうかを決定し、前記分割された複数のデータブロックがすべて移行されてはいない場合、移行されていないデータブロックから1つのデータブロックを決定し、前記決定されたデータブロックのための新しい読取り命令を生成するステップをさらに備える、請求項31に記載のデータ移行方法。
  33. 前記ソースSSDに対応する前記アクセス情報および前記ソースSSDのフラッシュメモリの中の移行される予定のデータの移行データ情報に従って読取り命令を生成する前記ステップが、
    前記ソースSSDの前記アクセス情報の中の前記ソースSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報および前記ソースSSDに対応する前記アクセス情報に従って前記読取り命令を生成するステップを備える、請求項29または30に記載のデータ移行方法。
  34. 前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、移行されていない移行される予定のデータがあるかどうかを決定し、移行されていない移行される予定のデータがある場合、移行されていない前記移行される予定のデータの移行データ情報に従って、現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報に従って新しい読取り命令を生成するステップをさらに備える、請求項33に記載のデータ移行方法。
  35. 各読取り命令がソースアドレスおよび宛先アドレスを備え、前記ソースアドレスが各読取り命令に従って読み取られるデータブロックのアドレスであり、前記宛先アドレスが前記ソースSSDの前記移行キャッシュの第1のアクセスアドレスである、請求項29から34のいずれか一項に記載のデータ移行方法。
  36. ソリッドステートディスクSSDに適用されるデータ移行方法であって、前記SSDが、ホストに接続され、かつ前記ホストに接続される別のSSDに接続され、前記データ移行方法が、
    ソースSSDとして前記SSDによって、データ移行命令を受信するステップであって、前記データ移行命令がターゲットSSDのコントローラのレジスタのアクセス情報を搬送する、ステップと、
    前記ターゲットSSDの前記コントローラの前記レジスタの前記アクセス情報および前記ソースSSDのフラッシュメモリの中の移行される予定のデータの移行されるデータに従って、読取り命令を生成するステップと、
    前記読取り命令に対応し前記ソースSSDの前記フラッシュメモリの中のデータブロックを前記ターゲットSSDの前記コントローラの前記レジスタへと読み込むために前記読取り命令を実行し、前記読取り命令の実行が完了した後で、前記ターゲットSSDの前記コントローラの前記レジスタの中の前記データブロックを前記ターゲットSSDのフラッシュメモリへ書き込むように前記ターゲットSSDに命令するために、書込み要求を前記ターゲットSSDに送信するステップとを備え、前記書込み要求が、前記ターゲットSSDの前記コントローラの前記レジスタの前記アクセス情報を搬送する、データ移行方法。
  37. 複数のソリッドステートディスクSSDに接続されるホストであって、前記複数のSSDが互いに接続され、各SSDが移行キャッシュを伴って構成され、各SSDが1つのアクセス情報に対応し、前記ホストまたは前記SSD以外の別のSSDが前記アクセス情報に従って各SSDの前記移行キャッシュにアクセスし、前記ホストが、
    ソースSSDの中の移行される予定のデータの移行データ情報を取得してターゲットSSDを決定し、前記ターゲットSSDに対応するアクセス情報および前記移行データ情報に従って読取り命令を生成し、前記読取り命令を前記ソースSSDに送信するように構成される、読取り命令モジュールであって、前記読取り命令が、前記読取り命令に対応し前記ソースSSDのフラッシュメモリの中にあるデータブロックを前記ターゲットSSDの移行キャッシュへと読み込むように前記ソースSSDに命令するために使用される、読取り命令モジュールと、
    前記ソースSSDによって送信される読取り完了フィードバック命令が受信された後で、前記ターゲットSSDの前記移行キャッシュの中の前記データブロックを前記ターゲットSSDのフラッシュメモリへ書き込むように前記ターゲットSSDに命令するために、書込み命令を前記ターゲットSSDに送信するように構成される、書込み命令モジュールとを備える、ホスト。
  38. 前記ホストが起動するときに、各SSDのコントローラのレジスタの中に設定され各SSDのために構成される移行キャッシュ情報を読み取り、前記読み取られた移行キャッシュ情報に従って各SSDの前記移行キャッシュに前記アクセス情報を割り振り、各SSDに対応する前記アクセス情報を前記ホストに記録するように構成される、割振りモジュールをさらに備える、請求項37に記載のホスト。
  39. 前記読取り命令モジュールが、前記ターゲットSSDの前記アクセス情報および前記移行データ情報に従って前記読取り命令を生成するとき、前記ホストが特に、
    前記ターゲットSSDの前記アクセス情報の中の前記ターゲットSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記移行される予定のデータを複数のデータブロックへと分割し、前記分割された複数のデータブロックの移行データ情報および前記ターゲットSSDに対応する前記アクセス情報に従って、前記読取り命令を生成するように構成される、請求項37または38に記載のホスト。
  40. 前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、前記分割された複数のデータブロックがすべて移行されているかどうかを決定し、前記分割された複数のデータブロックがすべて移行されてはいない場合、移行されていないデータブロックから1つのデータブロックを決定し、前記決定されたデータブロックのために新しい読取り命令を生成するように構成される、決定モジュールをさらに備え、前記新しい読取り命令の宛先アドレスが、前記書込み完了フィードバック命令を送信する前記ターゲットSSDである、請求項39に記載のホスト。
  41. 前記読取り命令モジュールが、前記ターゲットSSDの前記アクセス情報および前記移行データ情報に従って前記読取り命令を生成するとき、前記ホストが特に、前記ターゲットSSDの前記アクセス情報の中の前記ターゲットSSDの前記移行キャッシュの長さ、および前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記ターゲットSSDに現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報および前記ターゲットSSDに対応する前記アクセス情報に従って前記読取り命令を生成するように構成される、請求項37または38に記載のホスト。
  42. 前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、移行されていない移行される予定のデータがあるかどうかを決定し、移行されていない移行される予定のデータがある場合、移行されていない前記移行される予定のデータの移行データ情報に従って1つのデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報に従って新しい読取り命令を生成するように構成される、決定モジュールをさらに備え、前記新しい読取り命令の宛先アドレスが、前記書込み完了フィードバック命令を送信する前記ターゲットSSDである、請求項41に記載のホスト。
  43. 各読取り命令がソースアドレスおよび宛先アドレスを備え、前記ソースアドレスが各読取り命令に従って読み取られるデータブロックの論理アドレスであり、前記宛先アドレスが前記ターゲットSSDの前記移行キャッシュの第1のアクセスアドレスである、請求項37から42のいずれか一項に記載のホスト。
  44. 前記ターゲットSSDが複数のターゲットSSDであり、前記読取り命令を生成するときに、前記読取り命令モジュールが、各ターゲットSSDのために1つの読取り命令を生成し、生成された複数の読取り命令を前記ソースSSDに送信する、請求項37から43のいずれか一項に記載のホスト。
  45. 複数のソリッドステートディスクSSDに接続されるホストであって、前記複数のSSDが互いに接続され、各SSDが移行キャッシュを伴って構成され、各SSDが1つのアクセス情報に対応し、前記ホストまたは前記SSD以外の別のSSDが前記アクセス情報に従って各SSDの前記移行キャッシュにアクセスし、前記ホストが、
    ソースSSDの中の移行される予定のデータの移行データ情報を取得してターゲットSSDを決定し、前記ソースSSDに対応するアクセス情報および前記移行データ情報に従って読取り命令を生成し、前記読取り命令を前記ソースSSDに送信するように構成される、読取り命令モジュールであって、前記読取り命令が、前記読取り命令に対応し前記ソースSSDのフラッシュメモリの中にあるデータブロックを前記ソースSSDの移行キャッシュへと読み込むように前記ソースSSDに命令するために使用される、読取り命令モジュールと、
    前記ソースSSDによって送信される読取り完了フィードバック命令が受信された後で、前記ソースSSDの前記移行キャッシュの中の前記データブロックを前記ターゲットSSDのフラッシュメモリへ書き込むように前記ターゲットSSDに命令するために、書込み命令を前記ターゲットSSDに送信するように構成される、書込み命令モジュールとを備える、ホスト。
  46. 前記ホストが起動するときに、各SSDのコントローラのレジスタの中に設定され各SSDのために構成される移行キャッシュ情報を読み取り、前記読み取られた移行キャッシュ情報に従って各SSDの前記移行キャッシュに前記アクセス情報を割り振り、各SSDに対応する前記アクセス情報を前記ホストに記録するように構成される割振りモジュール
    をさらに備える、請求項45に記載のホスト。
  47. 前記読取り命令モジュールが、前記ソースSSDの前記アクセス情報および前記移行データ情報に従って前記読取り命令を生成するとき、前記ホストが特に、
    前記ソースSSDの前記アクセス情報の中の前記ソースSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記移行される予定のデータを複数のデータブロックへと分割し、前記分割された複数のデータブロックの移行データ情報および前記ソースSSDに対応する前記アクセス情報に従って、前記読取り命令を生成するように構成される、請求項45または46に記載のホスト。
  48. 前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、前記分割された複数のデータブロックがすべて移行されているかどうかを決定し、前記分割された複数のデータブロックがすべて移行されてはいない場合、移行されていないデータブロックから1つのデータブロックを決定し、前記決定されたデータブロックのために新しい読取り命令を生成するように構成される、決定モジュールをさらに備える、請求項47に記載のホスト。
  49. 前記読取り命令モジュールが、前記ソースSSDの前記アクセス情報および前記移行データ情報に従って前記読取り命令を生成するとき、前記ホストが特に、
    前記ソースSSDの前記アクセス情報の中の前記ソースSSDの前記移行キャッシュの長さ、および前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記ターゲットSSDに現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報および前記ソースSSDに対応する前記アクセス情報に従って前記読取り命令を生成するように構成される、請求項45または46に記載のホスト。
  50. 前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、移行されていない移行される予定のデータがあるかどうかを決定し、移行されていない移行される予定のデータがある場合、移行されていない前記移行される予定のデータの移行データ情報に従ってデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報に従って新しい読取り命令を生成するように構成される、決定モジュールをさらに備える、請求項49に記載のホスト。
  51. 各読取り命令がソースアドレスおよび宛先アドレスを備え、前記ソースアドレスが各読取り命令に従って読み取られるデータブロックの論理アドレスであり、前記宛先アドレスが前記ソースSSDの前記移行キャッシュの第1のアクセスアドレスである、請求項45から50のいずれか一項に記載のホスト。
  52. 複数のソリッドステートディスクSSDに接続されるホストであって、前記複数のSSDが互いに接続され、各SSDが移行キャッシュを伴って構成され、各SSDが1つのアクセス情報に対応し、前記ホストまたは前記SSD以外の別のSSDが前記アクセス情報に従って各SSDの前記移行キャッシュにアクセスし、前記ホストが、
    データ移行命令をソースSSDに送信するように構成される、移行命令モジュールを備え、前記データ移行命令がターゲットSSDに対応するアクセス情報を搬送するので、前記ソースSSDが、前記ターゲットSSDに対応する前記アクセス情報および前記ソースSSDの中の移行される予定のデータに従って読取り命令を生成し、前記読取り命令に対応し前記ソースSSDのフラッシュメモリの中にあるデータブロックを前記ターゲットSSDの移行キャッシュへと読み込むために前記読取り命令を実行し、前記読取り命令の実行を完了した後で、前記ターゲットSSDの前記キャッシュの中の前記データブロックを前記ターゲットSSDのフラッシュメモリへと書き込むように前記ターゲットSSDに命令するために書込み要求を前記ターゲットSSDに送信する、ホスト。
  53. 前記ホストが起動するときに、各SSDのコントローラのレジスタの中に設定される各SSDの移行キャッシュ情報を読み取り、前記読み取られた移行キャッシュ情報に従って各SSDの前記移行キャッシュに前記アクセス情報を割り振り、各SSDに対応する前記アクセス情報を前記ホストに記録するように構成される、割振りモジュールをさらに備える、請求項52に記載のホスト。
  54. 前記データ移行命令が複数のターゲットSSDに対応するアクセス情報を搬送する、請求項51または52に記載のホスト。
  55. ホストに接続され、前記ホストに接続される別のソリッドステートディスクSSDに接続される、SSDであって、前記ホストに接続される前記SSDが移行キャッシュを伴って構成され、前記ホストに接続される各SSDが1つのアクセス情報に対応し、前記ホストまたは前記SSD以外の別のSSDが、前記アクセス情報に従って各SSDの前記移行キャッシュにアクセスし、前記SSDが、
    前記SSDがソースSSDとして使用されるとき、データ移行命令を受信し、前記データ移行命令がターゲットSSDに対応するアクセス情報を搬送し、前記ターゲットSSDに対応する前記アクセス情報および前記ソースSSDのフラッシュメモリの中の移行される予定のデータの移行データ情報に従って読取り命令を生成するように構成される、読取り命令モジュールと、
    前記読取り命令に対応し前記ソースSSDの前記フラッシュメモリの中にあるデータブロックを前記ターゲットSSDの移行キャッシュへと読み込むために、前記読取り命令を実行するように構成される、読取りモジュールと、
    前記読取り命令の実行が完了した後で、前記ターゲットSSDの前記移行キャッシュの中の前記データブロックを前記ターゲットSSDのフラッシュメモリへ書き込むように前記ターゲットSSDに命令するために、書込み要求を前記ターゲットSSDに送信するように構成される、書込み命令モジュールとを備え、前記書込み要求が前記ターゲットSSDの前記移行キャッシュのアクセス情報を搬送する、SSD。
  56. 前記ソースSSDの移行キャッシュのサイズを前記ソースSSDのコントローラのレジスタの中に設定するように構成される、設置モジュールをさらに備え、その結果、前記ホストが、起動するときに、移行キャッシュ情報を読み取り、前記読み取られた移行キャッシュ情報に従って前記アクセス情報を前記ソースSSDの前記移行キャッシュに割り振る、請求項55に記載のSSD。
  57. 前記読取り命令モジュールが、前記ターゲットSSDに対応する前記アクセス情報および前記ソースSSDの前記フラッシュメモリの中の前記移行される予定のデータの前記移行データ情報に従って前記読取り命令を生成するとき、前記SSDが特に、
    前記ターゲットSSDの前記アクセス情報の中の前記ターゲットSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記移行される予定のデータを複数のデータブロックへと分割し、前記分割された複数のデータブロックの移行データ情報および前記ターゲットSSDに対応する前記アクセス情報に従って、前記読取り命令を生成するように構成される、請求項55または56に記載のSSD。
  58. 前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、前記分割された複数のデータブロックがすべて移行されているかどうかを決定し、前記分割された複数のデータブロックがすべて移行されてはいない場合、移行されていないデータブロックから1つのデータブロックを決定し、前記決定されたデータブロックのための新しい読取り命令を生成するように構成される、決定モジュールをさらに備え、前記新しい読取り命令の宛先アドレスが、前記書込み完了フィードバック命令を送信する前記ターゲットSSDである、請求項57に記載のSSD。
  59. 前記読取り命令モジュールが、前記ターゲットSSDに対応する前記アクセス情報および前記ソースSSDの前記フラッシュメモリの中の前記移行される予定のデータの前記移行データ情報に従って前記読取り命令を生成するとき、前記SSDが特に、
    前記ターゲットSSDの前記アクセス情報の中の前記ターゲットSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記ターゲットSSDに現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報および前記ターゲットSSDに対応する前記アクセス情報に従って前記読取り命令を生成するように構成される、請求項55または56に記載のSSD。
  60. 前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、移行されていない移行される予定のデータがあるかどうかを決定し、移行されていない移行される予定のデータがある場合、移行されていない前記移行される予定のデータの移行データ情報に従って、現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報に従って新しい読取り命令を生成するように構成される、決定モジュールをさらに備え、前記新しい読取り命令の宛先アドレスが、前記書込み完了フィードバック命令を送信する前記ターゲットSSDである、請求項59に記載のSSD。
  61. 各読取り命令がソースアドレスおよび宛先アドレスを備え、前記ソースアドレスが各読取り命令に従って読み取られるデータブロックのアドレスであり、前記宛先アドレスが前記ターゲットSSDの前記移行キャッシュの第1のアクセスアドレスである、請求項55から60のいずれか一項に記載のSSD。
  62. 前記ターゲットSSDが複数のターゲットSSDであり、前記読取り命令を生成する間に、1つの読取り命令が各ターゲットSSDのために生成される、請求項55から61のいずれか一項に記載のSSD。
  63. 複数のソリッドステートディスクSSDに接続されるホストであって、前記複数のSSDが互いに接続され、各SSDが移行キャッシュを伴って構成され、各SSDが1つのアクセス情報に対応し、前記ホストが前記アクセス情報に従って各SSDの前記移行キャッシュにアクセスし、前記ホストが、
    データ移行命令をソースSSDに送信するように構成される、移行命令モジュールを備え、前記データ移行命令が、前記ソースSSDに対応するアクセス情報およびターゲットSSD情報を搬送し、その結果、前記ソースSSDが、前記ソースSSDに対応する前記アクセス情報および前記ソースSSDのフラッシュメモリの中の移行される予定のデータに従って読取り命令を生成し、前記読取り命令に対応し前記ソースSSDの前記フラッシュメモリの中にあるデータブロックを前記ソースSSDの移行キャッシュへと読み込むために前記読取り命令を実行し、前記読取り命令の実行を完了した後で、前記ソースSSDの前記移行キャッシュの中の前記データブロックをターゲットSSDのフラッシュメモリへ書き込むように前記ターゲットSSDに命令するために、書込み要求を前記ターゲットSSD情報に対応する前記ターゲットSSDに送信する、ホスト。
  64. 前記ホストが起動するときに、各SSDのコントローラのレジスタの中に設定される各SSDの移行キャッシュ情報を読み取り、前記読み取られた移行キャッシュ情報に従って各SSDの前記移行キャッシュに前記アクセス情報を割り振り、各SSDに対応する前記アクセス情報を前記ホストに記録するように構成される、割振りモジュールをさらに備える、請求項63に記載のホスト。
  65. ホストに接続され、前記ホストに接続される別のソリッドステートディスクSSDに接続される、SSDであって、前記ホストに接続される前記SSDが移行キャッシュを伴って構成され、前記ホストに接続される各SSDが1つのアクセス情報に対応し、前記ホストまたは前記SSD以外の別のSSDが、前記アクセス情報に従って各SSDの前記移行キャッシュにアクセスし、前記SSDが、
    前記SSDがソースSSDとして使用されるとき、データ移行命令を受信し、前記データ移行命令が前記ソースSSDに対応するアクセス情報およびターゲットSSD情報を搬送し、前記ソースSSDに対応する前記アクセス情報および前記ソースSSDのフラッシュメモリの中の移行される予定のデータの移行データ情報に従って読取り命令を生成するように構成される、読取り命令モジュールと、
    前記読取り命令に対応し前記ソースSSDの前記フラッシュメモリの中にあるデータブロックを前記ソースSSDの移行キャッシュへと読み込むために、前記読取り命令を実行するように構成される、読取りモジュールと、
    前記読取り命令の実行が完了した後で、前記ソースSSDの前記移行キャッシュの中の前記データブロックをターゲットSSDのフラッシュメモリへ書き込むように前記ターゲットSSDに命令するために、書込み要求を前記ターゲットSSD情報に対応する前記ターゲットSSDに送信するように構成される、書込み命令モジュールであって、前記書込み要求が前記ソースSSDの前記移行キャッシュのアクセス情報を搬送する、書込み命令モジュールとを備える、SSD。
  66. 前記ソースSSDの前記移行キャッシュのサイズを前記ソースSSDのコントローラのレジスタの中に設定されるように構成される、設置モジュールをさらに備え、その結果、前記ホストが、起動するときに、移行キャッシュ情報を読み取り、前記読み取られた移行キャッシュ情報に従って前記アクセス情報を前記ソースSSDの前記移行キャッシュに割り振る、請求項65に記載のSSD。
  67. 前記読取り命令モジュールが、前記ソースSSDに対応する前記アクセス情報および前記ソースSSDの前記フラッシュメモリの中の前記移行される予定のデータの前記移行データ情報に従って前記読取り命令を生成するとき、前記SSDが特に、
    前記ソースSSDの前記アクセス情報の中の前記ソースSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、前記移行される予定のデータを複数のデータブロックへと分割し、前記分割された複数のデータブロックの移行データ情報および前記ソースSSDに対応する前記アクセス情報に従って、前記読取り命令を生成するように構成される、請求項65または66に記載のSSD。
  68. 前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、前記分割された複数のデータブロックがすべて移行されているかどうかを決定し、前記分割された複数のデータブロックがすべて移行されてはいない場合、移行されていないデータブロックから1つのデータブロックを決定し、前記決定されたデータブロックのための新しい読取り命令を生成するように構成される、決定モジュールをさらに備える、請求項67に記載のSSD。
  69. 前記読取り命令モジュールが、前記ソースSSDに対応する前記アクセス情報および前記ソースSSDの前記フラッシュメモリの中の前記移行される予定のデータの前記移行データ情報に従って前記読取り命令を生成するとき、前記SSDが特に、
    前記ソースSSDの前記アクセス情報の中の前記ソースSSDの前記移行キャッシュの長さおよび前記移行データ情報の中の前記移行される予定のデータのデータ量に従って、現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報および前記ソースSSDに対応する前記アクセス情報に従って前記読取り命令を生成するように構成される、請求項65または66に記載のSSD。
  70. 前記ターゲットSSDによって送信される書込み完了フィードバック命令を受信し、移行されていない移行される予定のデータがあるかどうかを決定し、移行されていない移行される予定のデータがある場合、移行されていない前記移行される予定のデータの移行データ情報に従って、現在移行されるデータブロックの移行データ情報を取得し、前記データブロックの前記取得された移行データ情報に従って新しい読取り命令を生成するように構成される、決定モジュールをさらに備える、請求項69に記載のSSD。
  71. 各読取り命令がソースアドレスおよび宛先アドレスを備え、前記ソースアドレスが各読取り命令に従って読み取られるデータブロックのアドレスであり、前記宛先アドレスが前記ソースSSDの前記移行キャッシュの第1のアクセスアドレスである、請求項65から70のいずれか一項に記載のSSD。
  72. ホストに接続され、前記ホストに接続される別のソリッドステートディスクSSDに接続される、SSDであって、
    前記SSDがソースSSDとして使用されるとき、データ移行命令を受信し、前記データ移行命令がターゲットSSDのコントローラのレジスタのアクセス情報を搬送し、前記ターゲットSSDの前記コントローラの前記レジスタの前記アクセス情報および前記ソースSSDのフラッシュメモリの中の移行される予定のデータの移行されるデータに従って読取り命令を生成するように構成される、読取り命令モジュールと、
    前記読取り命令に対応し前記ソースSSDの前記フラッシュメモリの中にあるデータブロックを前記ターゲットSSDの前記コントローラの前記レジスタへと読み込むために、前記読取り命令を実行するように構成される、読取りモジュールと、
    前記読取り命令の実行が完了した後で、前記ターゲットSSDの前記コントローラの前記レジスタの中の前記データブロックを前記ターゲットSSDのフラッシュメモリへ書き込むように前記ターゲットSSDに命令するために、書込み要求を前記ターゲットSSDに送信するように構成される、書込み命令モジュールであって、前記書込み要求が前記ターゲットSSDの前記コントローラの前記レジスタの前記アクセス情報を搬送する、書込み命令モジュールとを備える、SSD。
JP2019528048A 2016-11-26 2016-11-26 データ移行方法、ホスト、およびソリッドステートディスク Active JP6848060B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2021033491A JP2021106002A (ja) 2016-11-26 2021-03-03 データ移行方法、ホスト、およびソリッドステートディスク

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2016/107368 WO2018094708A1 (zh) 2016-11-26 2016-11-26 数据迁移的方法、主机、及固态存储设备

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2021033491A Division JP2021106002A (ja) 2016-11-26 2021-03-03 データ移行方法、ホスト、およびソリッドステートディスク

Publications (2)

Publication Number Publication Date
JP2020501249A true JP2020501249A (ja) 2020-01-16
JP6848060B2 JP6848060B2 (ja) 2021-03-24

Family

ID=62194551

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2019528048A Active JP6848060B2 (ja) 2016-11-26 2016-11-26 データ移行方法、ホスト、およびソリッドステートディスク
JP2021033491A Pending JP2021106002A (ja) 2016-11-26 2021-03-03 データ移行方法、ホスト、およびソリッドステートディスク

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2021033491A Pending JP2021106002A (ja) 2016-11-26 2021-03-03 データ移行方法、ホスト、およびソリッドステートディスク

Country Status (5)

Country Link
US (3) US10795599B2 (ja)
EP (2) EP3926454A1 (ja)
JP (2) JP6848060B2 (ja)
CN (2) CN108475229B (ja)
WO (1) WO2018094708A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11200193B2 (en) * 2019-03-14 2021-12-14 Marvell Asia Pte, Ltd. Transferring data between solid state drives (SSDs) via a connection between the SSDs
CN110750521A (zh) * 2019-10-25 2020-02-04 北京浪潮数据技术有限公司 一种数据迁移方法、装置、设备及计算机可读存储介质
US11256448B2 (en) * 2019-12-16 2022-02-22 Samsung Electronics Co., Ltd. Network storage gateway
CN112114753B (zh) * 2020-09-17 2022-09-30 杭州海康威视系统技术有限公司 一种数据写入方法、装置及设备
CN115113798B (zh) * 2021-03-17 2024-03-19 中国移动通信集团山东有限公司 一种应用于分布式存储的数据迁移方法、系统及设备
CN115543221B (zh) * 2022-11-29 2023-03-14 苏州浪潮智能科技有限公司 固态硬盘的数据迁移方法、装置、电子设备及存储介质
CN115543225B (zh) * 2022-11-30 2023-03-24 苏州浪潮智能科技有限公司 数据处理方法、系统、装置、计算机存储介质及电子设备
CN117389485B (zh) * 2023-12-13 2024-03-01 苏州元脑智能科技有限公司 存储性能优化方法、装置、存储系统、电子设备和介质
CN117851304A (zh) * 2024-03-07 2024-04-09 济南浪潮数据技术有限公司 一种硬盘更换方法、装置、设备及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006018642A (ja) * 2004-07-02 2006-01-19 Victor Co Of Japan Ltd Dma転送制御装置
US20130173855A1 (en) * 2012-01-03 2013-07-04 Samsung Electronics Co., Ltd. Method of operating storage device including volatile memory and nonvolatile memory
WO2014129161A1 (ja) * 2013-02-20 2014-08-28 パナソニック株式会社 無線アクセス装置および無線アクセスシステム
JP2016503925A (ja) * 2013-09-24 2016-02-08 華為技術有限公司Huawei Technologies Co.,Ltd. データマイグレーション方法、データマイグレーション装置及びストレージデバイス
JP2016170696A (ja) * 2015-03-13 2016-09-23 株式会社東芝 メモリコントローラ、記憶装置、データ転送システム、データ転送方法、及びデータ転送プログラム
JP2016536732A (ja) * 2013-09-30 2016-11-24 マイクロン テクノロジー, インク. 不揮発性メモリデバイスにおける揮発性メモリアーキテクチャ及び関連コントローラ

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5680640A (en) * 1995-09-01 1997-10-21 Emc Corporation System for migrating data by selecting a first or second transfer means based on the status of a data element map initialized to a predetermined state
JP3617437B2 (ja) 2000-09-13 2005-02-02 日本電気株式会社 データコピー方法およびデータコピー用プログラムを記録したプログラム記録媒体
JP2006301820A (ja) 2005-04-19 2006-11-02 Hitachi Ltd ストレージシステム及びストレージシステムのデータ移行方法
CN101446924B (zh) * 2008-12-16 2013-04-17 成都市华为赛门铁克科技有限公司 一种数据存储及获取方法、系统
KR101671334B1 (ko) 2010-07-27 2016-11-02 삼성전자주식회사 메모리 장치와 이의 데이터 제어방법
US8345489B2 (en) * 2010-09-02 2013-01-01 International Business Machines Corporation Caching scheme synergy for extent migration between tiers of a storage system
US8555019B2 (en) * 2010-09-08 2013-10-08 International Business Machines Corporation Using a migration cache to cache tracks during migration
EP2583161A1 (en) * 2010-10-14 2013-04-24 Hitachi, Ltd. Data migration system and data migration method
US8832386B2 (en) * 2011-09-27 2014-09-09 Hitachi, Ltd. Management server and data migration method
US9645917B2 (en) 2012-05-22 2017-05-09 Netapp, Inc. Specializing I/O access patterns for flash storage
US20200387575A1 (en) * 2013-02-15 2020-12-10 Emc Corporation Migrating virtual machines using asynchronous transfer and synchronous acceleration
JP6005566B2 (ja) * 2013-03-18 2016-10-12 株式会社東芝 情報処理システム、制御プログラムおよび情報処理装置
US9055119B2 (en) * 2013-03-26 2015-06-09 Vmware, Inc. Method and system for VM-granular SSD/FLASH cache live migration
KR20150037364A (ko) * 2013-09-30 2015-04-08 삼성전자주식회사 캐시 마이그레이션 관리 방법 및 이를 적용한 호스트 시스템
WO2015056301A1 (ja) * 2013-10-15 2015-04-23 株式会社日立製作所 ストレージシステム及びキャッシュ制御方法
CN103946828B (zh) 2013-10-29 2017-02-22 华为技术有限公司 数据处理系统和数据处理的方法
WO2015089798A1 (zh) 2013-12-19 2015-06-25 华为技术有限公司 一种数据迁移方法和装置
US9311012B2 (en) * 2014-02-19 2016-04-12 Hitachi, Ltd. Storage system and method for migrating the same
US10776033B2 (en) * 2014-02-24 2020-09-15 Hewlett Packard Enterprise Development Lp Repurposable buffers for target port processing of a data transfer
US9547592B2 (en) * 2014-07-29 2017-01-17 International Business Machines Corporation Cache mobility
US10013177B2 (en) * 2015-04-20 2018-07-03 Hewlett Packard Enterprise Development Lp Low write amplification in solid state drive
CN106326030B (zh) * 2015-06-26 2020-03-20 伊姆西Ip控股有限责任公司 用于存储系统中的软切换的方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006018642A (ja) * 2004-07-02 2006-01-19 Victor Co Of Japan Ltd Dma転送制御装置
US20130173855A1 (en) * 2012-01-03 2013-07-04 Samsung Electronics Co., Ltd. Method of operating storage device including volatile memory and nonvolatile memory
WO2014129161A1 (ja) * 2013-02-20 2014-08-28 パナソニック株式会社 無線アクセス装置および無線アクセスシステム
JP2016503925A (ja) * 2013-09-24 2016-02-08 華為技術有限公司Huawei Technologies Co.,Ltd. データマイグレーション方法、データマイグレーション装置及びストレージデバイス
JP2016536732A (ja) * 2013-09-30 2016-11-24 マイクロン テクノロジー, インク. 不揮発性メモリデバイスにおける揮発性メモリアーキテクチャ及び関連コントローラ
JP2016170696A (ja) * 2015-03-13 2016-09-23 株式会社東芝 メモリコントローラ、記憶装置、データ転送システム、データ転送方法、及びデータ転送プログラム

Also Published As

Publication number Publication date
EP3926454A1 (en) 2021-12-22
CN113655952A (zh) 2021-11-16
EP3537304A1 (en) 2019-09-11
US11644994B2 (en) 2023-05-09
US20200363977A1 (en) 2020-11-19
JP2021106002A (ja) 2021-07-26
US20190278507A1 (en) 2019-09-12
US11960749B2 (en) 2024-04-16
CN108475229A (zh) 2018-08-31
CN108475229B (zh) 2021-07-16
US20230350595A1 (en) 2023-11-02
WO2018094708A1 (zh) 2018-05-31
US10795599B2 (en) 2020-10-06
JP6848060B2 (ja) 2021-03-24
EP3537304B1 (en) 2021-03-17
EP3537304A4 (en) 2019-11-20

Similar Documents

Publication Publication Date Title
JP6848060B2 (ja) データ移行方法、ホスト、およびソリッドステートディスク
TWI699654B (zh) 租戶感知儲存共享平台、其方法與其製品
US11003368B2 (en) Compound storage system and storage control method to configure change associated with an owner right to set the configuration change
EP3663928B1 (en) Data migration method and system and intelligent network card
JP5309259B2 (ja) ストレージ装置及びその制御方法
US7743209B2 (en) Storage system for virtualizing control memory
JP7482905B2 (ja) ストレージシステム、メモリ管理方法、および管理ノード
US20160266923A1 (en) Information processing system and method for controlling information processing system
JP6569477B2 (ja) ストレージ制御装置、および制御プログラム
WO2014166409A1 (en) Migrating data across storages with dissimilar allocation sizes
WO2019127490A1 (zh) 一种数据访问方法及存储阵列
JP6975202B2 (ja) 瞬断からの回復処理方法及び装置、並びにコンピュータ読み取り可能な記憶媒体
JP6767653B2 (ja) 記憶装置、情報処理システム、記憶装置の起動方法及びプログラム
WO2014147786A1 (ja) ストレージシステム及びデータ管理方法
WO2015040728A1 (ja) 情報処理装置,情報処理方法,プログラム,記録媒体
WO2014115184A1 (en) Storage system and control method for storage system
JP2008129854A (ja) ブロックデバイス制御装置及びプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190724

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190724

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200709

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200713

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201013

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210118

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210201

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210303

R150 Certificate of patent or registration of utility model

Ref document number: 6848060

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250