(57)【要約】  ソリッドステートディスク（SSD）を使用しているストレージシステムの、スナップショットを取得するための方法及び装置である。SSD内の複数のマッピングテーブルは、１又は複数のポイントインタイムスナップショット及びSSDの現在のビューを作成するために必要なデータを記憶する。書込コマンドに応答して、SSDは、通常の書込プロセスを実行し、マッピングテーブルがSSDの現在のビューを表示するよう更新し、かつ、元データを、元データへのポインタのテーブルに、SSDの初期状態のスナップショットとして保存する。好適な実施形態では、SSDに備わっている、新しいロケーションにデータを書き込む能力を用いて、スナップショットを実行することで性能をほとんど又は全く失うことなく、ポイントインタイムコピーを実行する。
2012512482.tif 000002
【特許請求の範囲】
【請求項１】
ストレージデバイスのスナップショットを取得するためのシステムであって、
ストレージデバイスによる書込動作より前のデータを保持する、アドレス変換のための第１のマッピングテーブルと、ストレージデバイスによる書込動作後のデータを保持する、アドレス変換のための第２のマッピングテーブルとを備えたストレージデバイス
を備えており、該ストレージデバイスは、第１及び第２のテーブルによって保持されているデータによって、ストレージデバイスのポイントインタイムコピーが可能であることを特徴とするシステム。
【請求項２】
請求項１記載のシステムにおいて、
ストレージデバイスは、ソリッドステートディスク（SSD)であり、
第１のマッピングテーブルは、SSDのスナップショットに関連するデータを保持し、第２のマッピングテーブルは、SSDの現在のビューに関連するデータを保持し、SSDは、SSDのスナップショットを構築するために第１及び第２のマッピングテーブルを用いる
ことを特徴とするシステム。
【請求項３】
請求項２記載のシステムにおいて、
SSDは、受信された書込コマンドに応答して書き込みを実行し、かつ第１及び第２のマッピングテーブルを、書込コマンドの実行に応答したデータで更新する
ことを特徴とするシステム。
【請求項４】
請求項３記載のシステムにおいて、
SSDは、受信された書込コマンドに対してリダイレクトオンライトを実行し、かつ、第２のマッピングテーブルを、SSDの現在のビューを表示しているデータで更新する
ことを特徴とするシステム。
【請求項５】
請求項４記載のシステムにおいて、
SSDは、第１のマッピングテーブルを、書込コマンド前のSSDのポイントインタイムコピーを表示しているデータで更新し、かつ複数のスナップショットの取得を可能にするために、複数の第１及び第２のマッピングテーブルを更新する
ことを特徴とするシステム。
【請求項６】
請求項３記載のシステムにおいて、
SSDは、スナップショットが取得されるべきであることを表示するようデータを設定し、かつ、受信された書込コマンドに対してリダイレクトオンライトを実行する
こと特徴とするシステム。
【請求項７】
請求項６記載のシステムにおいて、
SSDは、スナップショットが取得されるべきであることを表示するようSSDによって設定されたデータに応答して、第１及び第２のマッピングテーブルを更新する
ことを特徴とするシステム。
【請求項８】
請求項７記載のシステムにおいて、
ファームウェアがSSD内にあり、該ファームウェアにより、第１及び第２のマッピングテーブルを更新し、かつ、少なくとも１つのSSD上にデータを記憶しているストレージシステム上で使用するための複数のSSDを更新して、SSD内に記憶されたデータセット上でシステムレベルデータのスナップショットを取得することを可能にする
ことを特徴とするシステム。
【請求項９】
請求項４記載のシステムにおいて、
スナップショットをトリガするために、データインディシアを設定するための手段を備え、
SSDは、第１のマッピングテーブルを、リダイレクトオンライトより前のSSDのポイントインタイムコピーを示しているデータで更新し、
SSDは、第２のマッピングテーブルを、SSDの現在のビューを表示しているデータで更新する
ことを特徴とするシステム。
【請求項１０】
請求項９記載のシステムにおいて、該システムはさらに、
複数のスナップショットを取得することを可能にする、複数の第１及び第２のマッピングテーブルと、
これら第１及び第２のマッピングテーブルをデータへのポインタでセットアップする手段と、
スナップショットテーブルを廃棄するための手段を含み、スナップショットを終了する手段と、
SSDに記憶されたデータセット上でシステムレベルのスナップショットを取得することを可能にするために、少なくとも１つのSSD上にデータを記憶しているストレージシステム上で使用するための複数のSSDと
を備えていることを特徴とするシステム。
【請求項１１】
請求項３記載のシステムにおいて、該システムはさらに、
SSDに記憶されたデータセット上でシステムレベルのスナップショットを取得することを可能にする、少なくとも１つのSSD上にデータを記憶しているストレージシステム上で使用するための複数のSSD
を備えていることを特徴とするシステム。
【請求項１２】
ソリッドステートディスクのスナップショットのための方法であって、該方法は、
ソリッドステートディスク（SSD）上にデータを記憶するステップと、
SSDにアドレス変換のための第１のマッピングテーブルを提供するステップと、
SSDにアドレス変換のための第２のマッピングテーブルを提供するステップと
を備えており、SSDは、第１及び第２のマッピングテーブルに保持されているデータを介して、SSDのポイントインタイムコピーが可能であることを特徴とする方法。
【請求項１３】
請求項１２記載の方法において、該方法は、
SSDのスナップショットに関連するデータを、第１のマッピングテーブルに記憶するステップと、
SSDの現在のビューに関連するデータを、第２のマッピングテーブルに記憶するステップと、
第１及び第２のマッピングテーブルを用いて、SSDのスナップショットを構築するステップと
を含んでいることを特徴とする方法。
【請求項１４】
請求項１３記載の方法において、該方法は、
書込コマンドを実行するステップと、
スナップショットコマンドを確認し、スナップショットコマンドを受信すると、スナップショットの構築を実行するステップと
を含んでいることを特徴とする方法。
【請求項１５】
請求項１４記載の方法において、該方法は、
書込コマンドのためのリダイレクトオンライトを実行するステップと、
リダイレクトオンライトより前のSSDのポイントインタイムコピーを表示しているデータで、第１のマッピングテーブルを更新するステップと、
少なくとも１つのSSD上にデータを記憶しているストレージシステム上で使用するための、複数のスナップショットの取得を提供するステップと、
複数のSSDの少なくとも１つ上で、SSD内に記憶されたデータセット上でシステムレベルのデータのスナップショットを取得することを可能にするステップと
を含んでいることを特徴とする方法。
【請求項１６】
請求項１５記載の方法において、該方法は、
書込コマンドより前のスナップショットコマンドを確認するステップと、
スナップショットコマンドを終了するステップと、
同時に複数のスナップショットをとることを可能にするために、複数の第１及び第２のマッピングテーブルを提供するステップと
を含んでいることを特徴とする方法。
【請求項１７】
請求項１３記載の方法において、該方法は、
スナップショットコマンドを確認するステップと、
書込コマンドを確認し、書込コマンドに対してリダイレクトオンライトを実行するステップと、
スナップショットコマンドに応答してポイントインタイムコピーを開始すべきかを確認し、スナップショットコマンドが受信された場合はタイムコピーの開始を実行し、スナップショットコマンドが受信されない場合はスナップショットコマンドを終了するステップと
を含んでいることを特徴とする方法。
【請求項１８】
請求項１７記載の方法は、
スナップショットコマンドが終了された場合に、第１のマッピングテーブルからデータをクリアするステップと、
同時に複数のスナップショットを撮ることを可能にするために、複数の第１及び第２のマッピングテーブルを提供するステップと、
現在のビューに関連したデータで、第２のマッピングテーブルを更新するステップと、
を含んでいることを特徴とする方法。
【請求項１９】
請求項１３記載の方法は、
スナップショットコマンドを確認するステップと、
書込コマンドを確認し、書込コマンドに対してリダイレクトオンライトを実行するステップと、
スナップショットコマンドに応答してポイントインタイムコピーを開始すべきかを確認して、スナップショットコマンドが受信されている場合はタイムコピーの開始を実行するステップと、
リダイレクトオンライトより前のSSDのポイントインタイムコピーを表示しているデータで、第１のマッピングテーブルを更新するステップと、
スナップショットコピーが受信された場合に、現在のビューに関連したデータで、第２のマッピングテーブルを更新するステップと、
同時に複数のステップを撮ることを可能にするために、複数の第１及び第２のマッピングテーブルを提供するステップと
を含んでいることを特徴とする方法。
【請求項２０】
SSDストレージシステムのポイントインタイムコピーを取得するためのシステムであって、該システムは、
SSDを含んでいるデータを記憶する手段であって、
SSDの現在のビューに関連するデータを保持する第１の参照テーブルを備えたアドレス変換のための手段と、
SSDの現在のビューに関連するデータを保持する第２の参照テーブルを備えたアドレス変換のための手段と
を備えたSSD記憶手段と、
データを書き込むための手段であって、リダイレクトオンライトを実行するための手段を含み、SSDは、SSDのスナップショットを構築するために、第１及び第２の参照テーブルを使用する、手段と、
スナップショットを取得するべきかを示すインディシアを、データに設定する手段と、
スナップショットを取得すべきかを示すインディシアをデータに設定する手段に応答して、データポインタで第１及び第２の参照テーブルを更新する手段と、
複数のスナップショットを取得することを可能にするための、複数のSSD上の複数の第１及び第２の参照テーブルと、
複数のSSDの少なくとも１つ上で、SSDに記憶されたデータセット上でシステムレベルのデータのスナップショットを取得することを可能にするための手段と、
スナップショットを終了するためのコマンドに応答して、スナップショットのデータを終了する手段と
を含んでいることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュの技術をベースとしたソリッドステート記憶に関する。
【背景技術】
【０００２】
RAID（リダンダント・アレイ・オブ・インディペンデント・ディスク）は、性能を向上し、かつ障害耐性を提供するために用いられるストレージシステム（記憶システム）である。RAIDは、２以上のハードディスクと、RAID機能を備えた専用ディスクコントローラとのセットである。RAIDは、ディスクストライピングによって性能を向上させる。これはバイト又はバイトのグループを複数のドライブにわたってインターリーブし、１又は複数のディスクに同時に読出及び書込ができるようにするものである（例：RAID０）。障害耐性は、ミラーリング又はパリティによって達成される。ミラーリングは、2つのドライブ上におけるデータの１００パーセントの複製である（例：RAID１）。
【０００３】
RAIDストレージシステムにおけるボリュームは、仮想ディスクドライブである。ボリュームは、RAIDストレージシステムに接続されたコンピュータシステムのためのディスクドライブのように見える。RAIDシステムにおけるボリュームは、いくつかの物理ハードドライブにわたっている場合や、単一の物理ドライブに完全に含まれてその一部をなしている場合、又はRAIDシステム内の複数の別の仮想ドライブにマッピングされている場合がある。エンクロージャは、１又は複数の物理ディスクドライブを収容している物理構造である。エンクロージャはさらに、RAIDコントローラを備えていてもよいし、又は接続されたコンピュータ及びRAIDコントローラが、エンクロージャ内に収容された物理ハードドライブと通信できるようにするためのストレージ接続ハードウェアを備えていてもよい。論理ユニット（LU)は、SCSI周辺デバイス内のアドレス指定可能なエンティティにとってのSCSIターム(SCSI term)である。SCSIプロトコルを介して外部からアドレス指定可能なRAIDストレージシステムにおけるボリュームは、論理ユニットとしてアドレス指定されて、論理ユニット番号（LUN）デジグネータ（指定子）が割り当てられるのが通常である。したがって、RAIDシステムにおけるボリュームは、LUNと称される場合がある。
【０００４】
ストレージエリアネットワーク（SAN）は、複数のサーバを複数のストレージデバイス及びストレージシステムに接続することが多々ある。SANによっては、任意のコンピュータがオーバーヘッド処理をすることなく、ストレージデバイス自身が、バックアップのためにデータを別のストレージデバイスにコピーすることが可能である。SANネットワークは、高い周辺チャネル速度(high peripheral channel speed)で、コンピュータ及びストレージシステム間のデータ転送を可能にする。
【０００５】
ホストアダプタは、「コントローラ」又は「ホストバスアダプタ」とも称され、1又は複数の周辺ユニットをコンピュータに接続するデバイスである。ホストアダプタは、コンピュータをSANに接続することもできる。通常、拡張カードによりバスに接続される。SCSI、SAS、ファイバチャネル、iSCSI及びインフィニバンドは、自身のコントローラをホストアダプタと称する周辺インターフェースの例である。ホストは、アプリケーションをランし、かつコンピュータに直接接続されているか又はSANによって接続されているストレージシステム及びデバイスにアクセスする。
【０００６】
フラッシュメモリ（NANDタイプ及びNORタイプの両方）は、不揮発性メモリである。フラッシュメモリの制限の1つは、バイト又はワード単位（NOR）又はページ単位（NAND）で、ランダムアクセス形式で読出又はプログラミングできるが、消去は「ブロック」単位でなければならないことである。フラッシュメモリ（特にNORフラッシュ）は、ランダムアクセスの読出動作及びプログラミング動作が可能であるが、任意のランダムアクセスのリライト動作又は消去動作をすることができない。他の制限は、フラッシュメモリの消去／書込サイクル数が、有限であることである。多くの市販のフラッシュ製品は、特にNORタイプにおいて、約１０万回の書込／消去サイクルに耐えることが保証されている。NANDフラッシュには、２つのタイプがある。すなわち、シングルレベルセル（SLC）及びマルチレベルセル（MLC)である。SLCのNANDフラッシュが、セル毎に１ビットを記憶するのに対し、MLCのNANDフラッシュは、セル毎に１又は複数のビットを記憶することができる。SLCのNANDフラッシュが、NORフラッシュと等しい書込耐性、すなわち１０万回の書込／消去サイクル、を有しているのに対し、MLCフラッシュの書込耐性は、一万回又はそれ以下の書込／消去サイクルである。NANDフラッシュは、NORよりも安価であり、かつ消去及び書込NANDはNORよりも速い。
【０００７】
NANDフラッシュのページは、書込又は読出できるメモリの最少ユニットであり、通常のサイズは２０４８バイトである。フラッシュメモリの消去可能な最少ユニットは、ブロックである。通常のブロックは６４ページすなわち１２８キロバイトを含んでいる。NANDフラッシュのアーキテクチャは、１９８９年に東芝によって導入された。これらのメモリは、ハードディスク又はメモリカード等のブロックデバイスとほぼ同様にアクセスされる。各ブロックは、多数のページから成る。ページのサイズは、５１２、２０４８、又は４０９６バイトであることが通常である。各ページには、数バイト（通常は１２〜１６バイト）が付随しており、これは誤り検出訂正チェックサムのストレージのために使用される。通常のブロックサイズは、３２ページ×５１２バイトであるブロックサイズ１６KiB、６４ページ×２０４８バイトであるブロックサイズ１２８KiB、６４ページ×４０９６バイトであるブロックサイズ２５６KiB、１２８ページ×４０９６バイトであるブロックサイズ５１２KiB等である。ページ単位で読出及びプログラミングが実行されることに対し、消去はブロック単位でしか実行することができない。
【０００８】
ソリッドステートディスク又はデバイス（SSD)は、自身の情報を記憶するためにソリッドステート技術を利用するデバイスであり、ストレージインターフェースを通じて記憶された情報へのアクセスを提供する。SSDは回転プラッタを用いるハードディスクドライブよりも速いが、それは、従来のドライブのように、読出／書込ヘッドを動作させること、及び回転しているディスクを待つことの必要がないために、機械的レイテンシ（待ち時間）がないからである。SSDは、ハードディスクよりも丈夫である。SSDは不揮発性フラッシュメモリを用いている。あるいは、SSDは、電源障害に備えてディスクドライブ又はUPSシステムによってバックアップされた揮発性DRAMメモリ又はSRAMメモリを用いてもよく、これら全てはSSDシステムの一部である。
【０００９】
従来のストレージシステムは、タイムコピー又はスナップショットと称される、ストレージシステム及びサブシステム内のデータのポイントインタイムコピーを実行することができる。スナップショットの目的の１つは、アプリケーションがデータの現在のコピーを引き続き使用している間に、バックアップ動作を実行できるようにすることである。スナップショットの別の用途は、アクティブデータセットの継続的使用に影響を及ぼすことなしに、データのコピー上でデータマイニング(mining)を可能にすることである。スナップショットを実施するための技術は、本明細書で詳述するように、「コピーオンライト”copy on write”」及び「リダイレクトオンライト”redirect on write”」である。
【００１０】
フラッシュベースのSSDは、性能及びウェアレベリング等のパラメータのためにデータ配置を最適化するアルゴリズムに従って、自身の内部物理デバイス上にデータを配置する。これらのSSDは、自身の論理ドライブ又は論理ユニットと、SSD内の物理ドライブとの間で、データアドレスを関連付けかつ変換するための、マッピングテーブル又は参照テーブルを有している。RAIDシステムと同様に、SSDは自身の論理ドライブ又は論理ユニットと、SSD内の物理ドライブとの間で、データアドレスを関連付けかつ変換するための、マッピングテーブル又は参照テーブルを有している。SSDにおいて、不揮発性メモリ内のデータは、ページにセグメント化され、通常は１２８Kブロックのデータに対して複数のデータセグメントが存在しており、各セグメントが約２Kのデータを保持している。データ（例：データセグメント）、ページ、及びフラッシュブロック（不揮発性メモリX,Y,Z等の領域）間の対応は、１又は複数のマッピングテーブルに保持されて、データの正しいアドレスを参照するためにハードウェアによって使用される。しかし、本発明とは対照的に、これらのマッピングテーブルは、データの現在のコピーをポイントするだけであり、スナップショットの作成に役立つものではない。
【００１１】
従来技術に不足しているのは、本発明によって教示されるような、ソリッドステートデバイス（SSD）のためのタイムコピーすなわちスナップショットを実行する改良されたシステムのための方法及び装置である。
【発明の概要】
【００１２】
したがって、本発明の一態様は、ソリッドステートデバイス（SSD）のための改良されたタイムコピー即ちスナップショットのための方法及び装置である。
本発明の一態様は、SSDの能力を最大限に利用するタイムコピーすなわちスナップショットを提供するものである。
本発明の別の態様は、フラッシュベースのソリッドステートデバイス（SSD）にあるアップデート機構を、ストレージシステムにあるスナップショット特性と組み合わせるものである。
本発明のさらに別の態様は、ポイントインタイムコピーすなわちスナップショットを実行するための改良された方法を達成するために、不揮発性メモリ及び参照テーブルの用途を開示するものである。
本発明のさらなる態様は、フラッシュベースのSSDがリダイレクトオンライトにおいて有している機能を利用して、適宜の参照テーブルを付加するとともにこの機能を拡張して、SSDドライブの初期の状態のポイントオンタイムスナップショットを作成する能力を備えるようにするものである。
本発明の他の態様は、１又は複数のSSD上に記憶されたデータセット上でのシステムレベルデータのスナップショットを実行し、かつこれを利用するために、SSDベースのスナップショット機構を使用できる、１又は複数のSSD上にデータを記憶するストレージシステムを、開示するものである。このシステムレベルデータのスナップショットは、当該技術で既知であるように、ストレージシステム全体に関係する任意のデータである。
【００１３】
上記の利点の全て、及び本明細書に記載した発明によって開示及び得られる他の多くの利点により、従来技術を改善することができる。
上述した又はその他の本発明の特性及び付随する利点は、以下に示す発明の詳細な説明及び添付図面を検討すれば、明らかになるであろう。
【図面の簡単な説明】
【００１４】
【図１】データが書込される前の、本発明に係るフラッシュデバイス内の２つのフラッシュブロックの略図である。
【図２】本発明に具備されるフラッシュアドレス変換のための参照テーブルである。
【図３】新しいデータが書き込まれている間の、本発明に係るフラッシュデバイス内の２つのフラッシュブロックの略図である。
【図４】書込動作が完了した後の、本発明に係るフラッシュデバイス内の２つのフラッシュブロックの略図である。
【図５】本発明による、書込動作後の本発明で見られるようなフラッシュアドレス変換のための参照テーブルの図である。
【図６】A及びBは、本発明におけるフラッシュアドレス変換のための２つの参照テーブル、すなわち、現在のビューに関するもの及び書き込み前のポイントインタイムコピーに関するものの使用を示す図である。
【図７】本発明の高レベルフロー図である。
【図８】本発明に係るスナップショットを撮るステップのより詳細なフロー図である。
【発明を実施するための形態】
【００１５】
当業者であれば、本発明の精神を逸脱しない範囲において、本発明の教示を用いて、図面に示された実施形態を変形することができるであろう。図面では、いくつかの図において類似の参照番号がふられた要素があるが、それはすでに定義されている同一の要素が存在することを示している。
本発明の好適な実施形態を、添付図面を参照して詳細に説明する。本明細書に開示するのは、本発明の実施に係る現在における最良の形態である。この記載は限定を意味するのではなく、本発明の一般原理をただ説明する目的でなされている。この詳細な説明の各見出し及び全体的な構成は、便宜上なされたものであって、本発明を制限するものではない。
【００１６】
本発明は、好ましくは、特定用途の集積回路すなわちASIC内で動作するファームウェアである。本発明は、コントローラチップ、ASIC又はマザーボードカード内のファームウェア、ソフトウェア、ハードウェア又はそれらの任意の組み合わせに存在しており、好ましくはSSD自身に存在しているが、いずれにせよ、システムが1つのユニット又はいくつかのユニットとしてパッケージされているか否かに関わらず、本発明を備えているSDDシステムは、SSDを備えている。本発明によって提供される機能は、ハードウェア及びソフトウェアの組み合わせである可能性が高い。ハードウェア及びソフトウェアの種類は実装に依存している。例示であって限定するものではないが、ソフトウェア及びホストバスアダプタによって論理ユニットがリナックスシステムに組み込まれるように、ファームウェア、ディスクコントローラチップ、ASIC及びカードを用いた論理ユニットの実装が可能である。
【００１７】
加えて、任意のソフトウェアツールが本発明の書込及びコンパイルのために使用され、C++等のオブジェクト指向言語を含めたC等の任意のコンピュータ言語で書き込まれる。さらに、ファームウェアは、主メモリストレージ及び二次メモリストレージを有するコンピュータ等の、汎用コンピュータシステムと置き換え可能である。一般的に、本発明のソフトウェアを構築かつ実装するために使用される言語次第で、ソフトウェアは、本明細書で説明かつ教示されたような連続したステージで本発明を実施するために、任意の数のクラス、ファンクション、サブルーティン、オブジェクト、変数、テンプレート、モジュール、コード行数、コードの一部、及び構成（集合的かつ一般的に、また本明細書のフロー図に表現では、「処理ステップ」、「ステップ」、「命令」、「処理」「ブロック」、「ブロックステップ」、「アプリケーション」、「モジュール」、又は「ソフトウェアモジュール」）を有している。またソフトウェアは、独立型ソフトウェアアプリケーションであるか、もしくは別のソフトウェアアプリケーションに内蔵されているか又は別のソフトウェアアプリケーションに呼び出されるかである。ソフトウェア処理又はソフトウェアモジュールは、例えばオブジェクト指向プログラミングのように（例：オーバーロード処理）、アプリケーション内のコードの一部分が、複数のファンクションを実行するように構成される。逆もまた然りで、複数のソフトウェアモジュール又は処理ステップが、本明細書に記載された単一の処理ステップでの機能を実行するよう構成されても、本発明の一般性を失うことはない。本発明の処理ステップの任意のステージで、中間的な値、変数及びデータは、後の使用のためにプログラムによって記憶される。一般的に、本発明の方法及び装置は、任意の種類のハードウェアを用いて、本発明が記憶されているソフトウェアを実行する。これには集積回路チップ内のファームウェアだけでなく、パーソナルコンピュータ、ARMプロセッサ、XScaleプロセッサ、DSP、ASIC又はプログラム可能プラットフォームであるASIC、FPGA、GPP、マイクロプロセッサ、メーンフレーム、メモリ付専用回路、又は任意の別の互換性ハードウェア又は仮想マシンを含むが、これに限定するものではない。
【００１８】
図１には、データが書込される前の、本発明に係るフラッシュデバイス内の２つのフラッシュブロックの略図が示されている。
NAND技術を用いたソリッドステートドライブは、データの以前のコピーの上に新しく書き込まれたデータを配置することはない。現在の技術では、消去できる最少データ量は、１２８Kのユーザデータである。この１２８Kブロックは、一回の動作で書込可能なユーザデータの最少量である２Kページにセグメント化される。SSDは、同一データの以前に書き込まれたコピーとは異なるロケーションに、新しく書き込まれたデータを配置するのが通常である。図１は、簡略化した例を示している。複数のデータセグメントが、フラッシュブロックＸに書き込まれている。フラッシュブロックＹは消去されており、すぐに書き込みできる状態である。このように、図１はデータの書き込み前の状態を示している。
【００１９】
図２は、本発明に係るフラッシュアドレス変換のためのマッピングテーブルすなわち参照テーブルである。このテーブルは、SSDの内部のSSDコントローラのために、図２のコラム見出しにあるいくつかの情報、すなわち、いずれの特定データ（例：データセグメント）がどのフラッシュブロック（例：フラッシュブロックＸ又はＹ）にあるか、及び、フラッシュブロックのどのページに該データがあるか（SSD内の論理ブロックに対応して）、を含む情報、を関連付ける。この略図は単純化した例であり、バージョン番号などの他のタイプの情報を含むこともできる。テーブルは、ポインタを含むこともできる。ソフトウェアから見れば、「アドレス」は「ポインタ」である。よって、アドレスのテーブルは、ポインタのテーブルである。同一の機能を実行する任意の類似構造、及び／又は、別の変数のアドレスをもつ変数を備えた同等のデータ構造も、テーブルに相当するであろう。さらに、数組のテーブルが複数のスナップショットを同時に保持することも可能である。
【００２０】
図３は、新しいデータが書込されている間の、本発明のSSD等のフラッシュデバイス内の２つのフラッシュブロックの略図を示している。フラッシュデバイスは、データセグメント２１０及び２１１のための外部ハードウェアによって動作するプログラムから、書込コマンドを受け取る。これは「新しいデータセグメント２１０」及び「新しいデータセグメント２１１」と記された矢印３０１及び矢印３０２で示されている。フラッシュデバイスは、セグメント２１０及び２１１のための新しいデータを受け入れて、かつそれらを図３のページ１及びページ２に示されている、フラッシュブロックＹの事前に消去済みの領域に書き込む。フラッシュボックスＸに変更はない。フラッシュブロックＹへの書き込み後に、図３のフラッシュボックスＸ内のページは、フラッシュボックスＸ内のブロック２１０及び２１１のデータが現在は古いデータであることを示すよう修正される。このことは、図３では、フラッシュボックスＸ内のページ１及びページ６にある「古いデータセグメント２１０」及び「古いデータセグメント２１１」のように、「古いデータ」として示されている。
【００２１】
図４は、上述した書込動作が完了した後の、本発明に係るフラッシュデバイス内の２つのフラッシュブロックの略図である。この時点で、フラッシュデバイスは自身のデータマッピングテーブルを更新して、データセグメント２１０及び２１１のためのロケーションとして、フラッシュボックスＹをポイントするようにする。データセグメントの古いコピーは、フラッシュボックスＸ全体がリクレーム(reclaim)されて再使用のための準備で消去されるまでは、フラッシュボックスＸ内に残っている。それから、フラッシュデバイス内のアドレス変換テーブルが、データセグメント２１０及び２１１の新しいアドレスに関して更新されて、図５に示されたようになる。
【００２２】
知られているように、ディスクアレイサブシステムは、ポイントインタイムコピー又はスナップショットと称される特性をサポートしている。データのスナップショットを達成するために、アレイは、元のユーザデータ及び新しく書き込まれたユーザデータの両方のコピーを保存するための「コピーオンライト」又は「リダイレクトオンライト」のいずれかのスナップショット機構を採用している。いずれの方法も、フラッシュデバイスのアドレス変換テーブルに類似した、データへのポインタを使用している。通常のスナップショット方法は、ストレージボリューム及びそのスナップショットの両方に関して、変化していないデータの共通のコピーを、そのデータの元のロケーションに保持する。書込が受信されると、ストレージシステムは、古いデータを新しいロケーションにコピーするか（コピーオンライト方法）、又は新しいデータを新しいロケーションに書き込むか（リダイレクトオンライト方法）のいずれかを実行する。両方の場合において、ストレージシステムはデータのセットを管理するので、ストレージシステムのユーザにとっては、ボリュームのポイントインタイムコピー及びボリュームの最新バージョンがあるように見える。
【００２３】
ストレージシステムレベルでスナップショットを実行するための既存方法が抱える問題の１つは、パフォーマンス（性能）に大きな悪影響を与えてしまうことである。例えば、コピーオンライト方法を使用する場合、ホストから受信した各書込コマンドに関して、ストレージシステムは、元のロケーションから古いデータを読み出し、古いデータをスナップショットロケーションにコピーし、それから、新しいデータを元のロケーションに書き込む。リダイレクトオンライトのスナップショットである場合は、スナップショットが終了した時点で、スナップショットロケーション上の新しいデータが、またもとのロケーションにコピーされなければならない。
【００２４】
本発明において、SSDは性質上、ユーザデータの以前のコピーを保持するものなので、スナップショットを実行するための能力を全く又はほとんど損なうことなく、本発明の教示に従って、現在のデータ及びスナップショットデータの両方を記憶するために用いることができる。本発明の教示に従って修正されれば、SSDは基本的に、受け取ったあらゆる書込コマンドに関してリダイレクトオンライトを実行する。複数のマッピングテーブルを有するフラッシュデバイス内にある以前のバージョンのデータをポイントすることができる、追加のアドレス変換テーブルを加えることにより、フラッシュデバイスは、デバイス内に記憶されているデータの複数のポイントインタイムコピーへのアクセスを提供することができる。
【００２５】
このように、本発明に関しては、図面を参照すると、フラッシュデバイスは、２１０及び２１１の書き込みより前のデータのポイントインタイムコピーを記憶するためのコマンドを受け取る。フラッシュデバイスは、図２の参照テーブルに示されているアドレスのための参照テーブルのコピーを、ポイントインタイムコピーのためのアドレスへのポインタとして保持する。ボリュームが更新されるとき、図５のフラッシュアドレス変換テーブルに示されているように、データの現在のビュー（書込コマンドに応答したSSD上へのデータ書込の結果を含んだ、SSDの現在の状態）は維持される。SSDは、２つの参照テーブルを備えるよう修正される。すなわち、フラッシュデバイスが、スナップショットのためのスペースがある限りにおいて、両方のテーブルのコピーを維持する結果、スナップショットは何らかの他の動作によって終了されることがない。これは図６に示した２つのテーブルに示されている。図６は、現在のビュー及び書込前のポイントインタイムコピー（SSDの初期状態のスナップショット）の両方に関する、本発明におけるフラッシュアドレス変換のための２つの参照テーブルの活用を示している。図６のAは、前述した図５と同様に、書き込み動作後のアドレス変換テーブルを示しているのに対し、図６のBは、前述した図２と同様に、書き込み動作、スナップショットすなわちポイントインタイムコピー前の、アドレス変換テーブルを示している。
【００２６】
図７は、本発明の方法の高レベルのフロー図である。本発明は、SSDを制御して本明細書で説明されたステップ及び命令に即して動作する、ハードウェア、ソフトウェア、及び／又はファームウェアの任意の組み合わせを用いて、本方法を実行する。ステップ７００の「スタート」で、本発明のプログラムは開始される。フローは、ステップ７０２の「コマンドを受け取る」に進み、そこでフラッシュデバイスは、書込コマンド、スナップショットコマンド、又は別のタイプのコマンド等のコマンドを受信し、かつ回路又は命令をトリガして動作させ、かつ／又は結果を記憶するか、もしくは通常はフラッグを設定するか又はデータインディシアを設定する。コマンドは、書込コマンドであるか、又はストレージデバイスにデータのポイントインタイムコピー（スナップショット）を記憶するためのスナップショットコマンドである。スナップショットコマンドが受信されると、フラッグ、データ、又は別のデータインディシアが、スナップショットが取得されるべきであることを示すように設定される。設定済みのこれらのデータは、ハードウェアにスナップショットイベントをトリガさせる信号すなわち命令を含んでいる。スナップショットは、書込コマンド程頻繁ではなく、ストレージシステム内で同時にアクティブ状態にあるのは、通常、単一のスナップショット又はいくつかのスナップショットである。
【００２７】
フローは次いで、ステップ７０４の「書込コマンドか？」に進む。SSDがコマンドを受け取ると、ステップ７０４に示されているように、プログラムのフローは、コマンドが書込コマンドでない場合は、「NO」分岐に沿ってステップ７０６の「他のコマンドを処理する」へ、又は、コマンドが書込コマンドである場合は、「YES」分岐に沿ってステップ７０８の「スナップショットは進行中か？」へ進む。図8と関連して詳述するように、ステップ７０８の「スナップショットは進行中か？」で、スナップショットが開始される。
【００２８】
スナップショットが進行中ではない場合、すなわちスナップショットコマンドがひとつも受信されていない場合には、フローは「NO」分岐に沿ってステップ７１０の「書込コマンドを処理する」に進み、ここで任意の通常の書込コマンド（スナップショットがない場合）が処理される。それからフローは、ステップ７１２の「現在のビューのデータポインタを更新する」に進み、当該技術で既知の方法で、SSDの現在のビューのデータポインタが更新される。
【００２９】
しかし、スナップショットが進行中である場合は、フローは「YES」分岐に沿ってステップ７１４の「現在のデータ及びポインタを保存する」に進み、そこでフラッシュデバイスは、ポイントインタイム（スナップショット）のためのアドレスへのポインタを用いて、図２又は図６（ｂ）のようなアドレスのための参照テーブルのコピーを、フラッシュ内に記憶する。続いてステップ７１６の「書込コマンドを処理する」に示されているように、書込コマンドは処理され、フローはステップ７１８の「現在のビュー及びスナップショットコピーのテーブルを更新する」に進む。ここでストレージ内のボリュームは、図５又は図６のＡのような現在のビュー（書込後の）を反映させるために、更新される。本発明を用いると、SSD固有の動作手法により、SSDによる書込コマンドとともに、スナップショットを作成することで、性能面に大きな犠牲がでるものではない。２つのテーブルを用いることで、受信した全ての書込コマンドに関してリダイレクトオンライトを実行するというSSDデバイス固有の能力を用いることが可能であり、かつ、図６のＡ及びＢ、並びに、本明細書に記載の教示によって示されているような、２つのテーブルを使用するという代償のみで、必要であればいつでも、このリダイレクトオンライトにスナップショットを構築させることが可能である。
２つのテーブルがこのようにして更新されると、スナップショットが達成されて、フローは通常に戻るよう制御され、スタートのステップ７００に戻る。
【００３０】
図８には、本発明によるスナップショットを撮る方法についての、より詳細な高レベルフロー図が示されている。スナップショット処理の開始前は、SSDは、図２に示されているようなデータへの現在のポインタのテーブルを１つ維持している。該方法は、ステップ８００の「スタート」で始まり、ステップ８０２の「コマンドを受信する」に進む。ここでスナップショットコマンドがあるかどうかがチェックされ、スナップショットコマンドが受信されていた場合には、フローはステップ８０４の「スナップショットコマンドを開始するか？」に進む。ここで本発明のシステムは、スナップショットを取得すべきか否かを表示するようインディシア（例：フラッグ又は命令）を設定する適切な手段から、スナップショットコマンドが受信されているか、をチェックする。スナップショットを取るべきであれば、フローは「YES」分岐に従ってステップ８０６の「スナップショットポインタのためのテーブルをセットアップし、スナップショット進行中のフラッグを設定する」に進む。ここで図７のボックス７１４、７１６、及び７１８で概説されたステップが実行され、これには、現在のビューのテーブル（例：図６のＡ）に加えて、第２のテーブル（例：図６のＢ）を構築するステップも含まれる。第２のテーブル（図６のＢ）は、スナップショットコマンドが処理される瞬間は、データのビューへのポインタを保持している。また、SSDコントローラはスナップショットテーブルに記録されたページを再利用することはない。
【００３１】
スナップショットコマンドが一つも開始されない場合は、フローはステップ８０８の「スナップショットコマンドを終了するか？」に進む。ここで、「NO」分岐に従ってステップ８１０の「別のコマンドを処理する」に進むと、別のコマンドを処理するためコマンドが受信される。又は、以前にスナップショットが取得されたが、これを終了又は消去したい場合は、「YES」に沿ってステップ８１２の「スナップショットポインタのためのテーブルを廃棄する。スナップショット進行中のフラッグをクリアする」に進む。ここで、スナップショットは、スナップショットポインタのためのテーブルを廃棄するステップ、及びスナップショットが進行中であること又はスナップショットを撮る必要があることを示す、進行フラッグ、データ、又はインディシアをクリアするステップ等の、該スナップショットに関連する任意のテーブルを廃棄するステップによって終了することができる。図６のＢのテーブルは廃棄され、かつフラッシュボックスＸ内のブロック２１０及び２１１の古いコピー等の図６のＡにはないが図６のＢにはある古いデータは、フラッシュボックスＸが再使用のために消去されると自由に廃棄できる。これらのステップは、スナップショットコマンドを終了するステップである。
図８に示されている全ての経路において、フローはスタートのステップ８００に戻る。
【００３２】
本発明に関するアクセスに関しては、本明細書に記載したような２つのテーブルを実現するために、アクセスは多くの手段によって提供されてよい。例えば、フラッシュデバイスは、SSD内の第２の論理ユニットを介して、自身のデバイスポート上で、又はSSD上の追加的なポートを介して、ポイントインタイムコピーへのアクセスを提供する。別の実施形態では、SSDは、独自のコマンドセットを介してアクセスを提供する。RAIDシステムすなわちホストアダプタは、ホストによって特定のコマンドが与えられるとスナップショットをトリガする、ソフトウェア又はファームウェアで提供される。
【００３３】
本発明のさらに別の態様は、１又は複数のSSD上に記憶されたデータセット上でのシステムレベルデータのスナップショットを実行かつ利用するための、本発明に係るSSDベースのスナップショット機構を用いるために、１又は複数のSSD上にデータを記憶するストレージシステムにおいて、本発明を使用することである。システムレベルデータのスナップショットは、当該分野で既知であるように、ストレージシステム全体に関係する任意のデータである。
【００３４】
本発明を上述の好適な実施形態に関連して説明したが、本明細書の教示から、該実施形態に対する数多くの修正及び／又は追加が当業者には容易にわかるであろう。例えば、SSDが明示的に言及されたが、SSDと同じように機能するストレージデバイスをSSDと置き換えることもできる。さらに、コピーオンライトのストレージ媒体に対する適宜の修正も、デバイスが本明細書の教示に従って機能するのであれば、当業者によってなされてよい。当業者は、本明細書の教示を用いて、コピーオンライトを使用する従来の回転プラッタハードディスクドライブ（HDD)を、本発明と類似の機能を実行するよう修正することもできる。これにはより多くの作業が必要である。これは、従来のHDDは、テーブルではなく幾何学計算を使用してデータを配置するからであるが、本発明の実施形態にするために、本明細書の教示に従って、マッピングテーブルの能力を備えさせることができる。この場合、HDDのコントローラは、機能面でSSDコントローラと同等であるので、ソリッドステートメモリではなく回転ディスク上で動作するという違いがあるが、本発明の技術的範囲に含まれる。
【００３５】
本発明の技術的範囲は、このような修正及び／又は追加の全てに拡張されるものであり、特許請求の範囲によってのみ規定されるものである。
【図１】
2012512482.tif 000003
【図２】
2012512482.tif 000004
【図３】
2012512482.tif 000005
【図４】
2012512482.tif 000006
【図５】
2012512482.tif 000007
【図６】
2012512482.tif 000008
【図７】
2012512482.tif 000009
【図８】
2012512482.tif 000010
【国際調査報告】
2012512482.tif 000011