(57)【要約】【課題】スナップショット管理に関するホストの負荷を低減し、ストレージシステムの高速化を図る。【解決手段】ホスト計算機１０１は、スナップショットの作成を望む場合には、スナップショット作成要求を示す指示を記憶装置に対して送信し、記憶装置１０３の制御部１０４が、ユーザデータ領域１０７からユーザデータを読み出し、読み出したユーザデータをスナップショット領域１０８に格納することにより、スナップショットを作成する構成とした。これにより、スナップショット作成の負荷を、ホスト１０１と記憶装置１０３とで分散する。また、スナップショット作成のために、ホスト１０１と記憶装置１０３間でやり取りするデータ量を少なくすることができる。【選択図】　図１
2004118413.tif 000002
【特許請求の範囲】
【請求項１】
ホスト計算機と、記憶装置とを有するストレージシステムであって、
前記記憶装置は、前記ホスト計算機から受け取ったユーザデータを格納するためのユーザデータ領域と、前記ユーザデータに対するスナップショットを格納するためのスナップショット領域と、制御部とを含み、
前記ホスト計算機は、前記スナップショットの作成を望む場合には、前記スナップショットの作成要求を示す指示を前記記憶装置に対して送信し、
前記制御部は、前記スナップショットの作成要求を示す前記指示を受信した場合には、前記ユーザデータ領域から前記ユーザデータを読み出し、該読み出したユーザデータを前記スナップショット領域に格納することを特徴とするストレージシステム。
【請求項２】
請求項１に記載のストレージシステムにおいて、前記ホスト計算機と前記記憶装置とは、予め定められたインタフェースにより接続され、
前記ホスト計算機は、前記スナップショット作成要求を示す指示として、前記インタフェースのプロトコルに従った、予め定めた一つのコマンドを作成して送信することを特徴とするストレージシステム。
【請求項３】
接続されているホスト計算機から受け取ったユーザデータを格納するためのユーザデータ領域と、前記ユーザデータに対するスナップショットを格納するためのスナップショット領域と、制御部とを有し、
前記制御部は、前記ホスト計算機から、前記スナップショットの作成要求を示す指示を受信した場合、前記ユーザデータ領域から前記ユーザデータを読み出し、該読み出したユーザデータを前記スナップショット領域に格納することを特徴とする記憶装置。
【請求項４】
請求項３に記載の記憶装置において、前記制御部は、前記スナップショットの作成要求を示す前記指示として、前記ホスト計算機との接続に用いられているインタフェースのプロトコルに従った、予め定めた一つのコマンドを受信することを特徴とする記憶装置。
【請求項５】
請求項４に記載の記憶装置において、前記コマンドは、前記ユーザデータの更新を指示するために用いられるコマンドに、前記スナップショットの作成要求を示す部分と、前記スナップショットの世代情報を示す部分とを追加したものであることを特徴とする記憶装置。
【請求項６】
請求項５に記載の記憶装置において、前記制御部は、前記コマンドを受信した場合、該コマンドによって更新を指示された前記ユーザデータを、前記ユーザデータ領域から読み出して前記スナップショット領域に格納することにより前記スナップショットを作成した後、前記ホスト計算機から受け取った新たなユーザデータを前記ユーザデータ領域に格納することを特徴とする記憶装置。
【請求項７】
請求項３に記載の記憶装置において、前記スナップショット領域に格納されている前記スナップショットについての情報を格納するための管理情報記憶領域をさらに有し、
前記スナップショット領域には、複数の前記スナップショットを格納可能であり、前記管理情報記憶領域は、複数の前記スナップショットごとに、該スナップショットの世代情報を記憶する部分と、該スナップショットが格納されていた前記ユーザデータ領域のアドレス情報を記憶する部分と、該スナップショットが格納されている前記スナップショット領域のアドレス情報を記憶する部分とを含むことを特徴とする記憶装置。
【請求項８】
請求項３に記載のストレージシステムにおいて、前記制御部は、前記ホスト計算機から、前記スナップショットを用いて前記ユーザデータを復元する指示を受信した場合は、前記スナップショット記憶領域から前記スナップショットを読み出し、前記ユーザデータ領域の前記スナップショットに対応する領域に格納することにより前記ユーザデータを復元する特徴とするストレージシステム。
【請求項９】
演算部と、コマンドを作成して接続されている記憶装置に対して送信するコマンド作成部とを有し、
前記演算部は、前記記憶装置に格納されているユーザデータのスナップショットの作成を望む場合には、前記コマンド作成部にその旨を指示し、
前記コマンド作成部は、前記演算部から前記指示を受けた場合、前記スナップショット作成要求を示す予め定められた一つのコマンドを作成し、前記記憶装置に対して送信することを特徴とするホスト計算機。
【請求項１０】
請求項９に記載のホスト計算機において、前記コマンド作成部は、前記コマンドとして、前記記憶装置にデータの更新を指示するために用いる予め定められたコマンドに、前記スナップショットの作成を要求する指示を示す部分と、前記スナップショットの世代情報を示す部分とを追加したものを作成し送信することを特徴とするホスト計算機。
【請求項１１】
ホスト計算機と、記憶装置とを有するストレージシステムのスナップショット作成方法であって、
前記ホスト計算機は、前記スナップショットの作成要求を示す一つのコマンドを前記記憶装置に対して送信し、
前記記憶装置は、前記一つのコマンドを受信し、該コマンドにしたがって、ユーザデータ領域からユーザデータを読み出し、スナップショット領域に格納することにより、前記スナップショットを作成することを特徴とするスナップショット作成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ホスト計算機と記憶装置とを有するストレージシステムにおけるスナップショット作成及び管理機能に関する。
【０００２】
【従来の技術】
コンピュータに外部接続されているストレージ装置は、記憶しているデータが、ストレージ装置の障害、ソフトウエアの欠陥、誤動作などにより喪失されたても、それを復元可能にするために、定期的にバックアップを行う構成を備えたものが知られている。このバックアップの作成作業の最中にデータが更新されるとデータに不整合が生じるため、バックアップとしての意味をなさなくなる。このため、バックアップ作業中は、データの整合性を保障する必要がある。
【０００３】
バックアップされるデータの整合性を保障するためには、バックアップ作成作業中にバックアッププログラム以外のプログラムを停止させ、データにアクセスさせないようにすることが考えられるが、高可用性が要求されるシステムでは、プログラムを長時間停止させることができない。このためバックアップ操作中に、他のプログラムがデータを更新することを妨げず、なおかつバックアップ開始時点におけるデータのコピーを得ることができる仕組みを提供する必要がある。このように、ある時点におけるデータのコピーを、従来よりスナップショットと呼んでいる。
【０００４】
スナップショットの作成方法としては、例えば、以下のような方法が知られている。この方法は、バックアップ開始時点から書込み等の更新がなされたブロックのみ、更新前のオリジナルデータを別のバッファ（スナップショットバッファ）にコピーして保存する。そして、スナップショットの読み出し要求に対しては、スナップショットバッファの内容と、更新していないブロックのオリジナルデータを合成することによりバックアップ開始時点のデータを作成し、転送する。この方法は、更新がなされたブロックのみをスナップショットバッファに保存するため、スナップショットバッファの容量が小さくて済むという利点がある。このように、指定された時点でのスナップショットを作成しつつ、データの更新が可能な状態を提供する仕組みは、スナップショット管理方法と呼ばれている。
【０００５】
従来、ハードディスク、ＪＢＯＤ（Ｊｕｓｔ　Ｂｕｎｃｈ　Ｏｆ　Ｄｉｓｋｓ）、ＮＡＳ（ＮｅｔｗｏｒｋＡｔｔａｃｈｅｄ　Ｓｔｏｒａｇｅ）等のストレージ装置やストレージシステムを用いた計算機システムの場合には、スナップショットを作成管理する機能を持ったソフトウエアをホスト計算機システム、または、バックアップサーバ等のセカンダリホストに搭載することにより、スナップショットの作成や読み出しを行っている。なお、上述のＪＢＯＤとは、複数のハードディスクを１つの大容量ディスクとして利用できるようにする技術である。
【０００６】
ＮＡＳにおいてスナップショットを作成管理するソフトウェアとしては、例えば、ＣＤＰ社のＰＳＭ（Ｐｒｅｓｉｄｅｎｔ　Ｓｔｏｒａｇｅ　Ｍａｎａｇｅｒ）があり、文献ＦＯＲ　ＩＭＭＥＤＩＡＴＥ　ＲＥＬＥＡＳＥ　Ｃｏｌｕｍｂｉａ　Ｄａｔａ　Ｐｒｏｄｕｃｔｓ　Ｌｉｃｅｎｓｅｓ　ＮＡＳ　Ｄａｔａ　Ｐｒｏｔｅｃｔｉｏｎ　ｔｏ　Ｍｉｃｒｏｓｏｆｔ　Ｃｏｒｐｏｒａｔｉｏｎ　ｆｏｒ　Ｉｎｃｌｕｓｉｏｎ　ｉｎ　Ｓｅｒｖｅｒ　Ａｐｐｌｉａｎｃｅ　Ｋｉｔで紹介されている。ＰＳＭは、オペレーションシステム（Ｏｐｅｒａｔｉｎｇ　Ｓｙｓｔｅｍ）がウィンドウズ（登録商標）２０００（Ｗｉｎｄｏｗｓ（登録商標）２０００）であるホスト計算機上で動作し、ホスト計算機とネットワークで接続されているＮＡＳに格納されているデータのスナップショットを作成管理するソフトウエアである。また、セカンダリホストで、スナップショット作成および管理を行うソフトウエアとしては、ＥＭＣ社のＳｎａｐＶｉｅｗ　Ｓｏｆｔｗａｒｅなどがあり、文献　ＳｎａｐｓｈｏｔＶｉｅｗで紹介されている。
【０００７】
【発明が解決しようとする課題】
従来のようにスナップショット作成管理用ソフトウエアをホスト計算機に搭載する構成の場合、外部記憶装置に格納されているデータのスナップショットを作成管理する際に、ホスト計算機システムのＣＰＵでソフトウエアを実行させるため、ホスト計算機の負荷が増大する。また、この構成では、スナップショットを作成する際、ホスト計算機と外部記憶装置とを接続するインタフェースを使ってスナップショットデータを転送する必要があり、ホスト計算機と外部記憶装置間のインタフェース負荷も増大する。一方、スナップショット作成管理用のソフトウエアをセカンダリホストに搭載する構成の場合、スナップショット作成管理のために、ホスト計算機システムとは別にセカンダリホストを追加しなければならない。
【０００８】
本発明の目的は、スナップショット管理に関するホストの負荷を低減し、ストレージシステムの高速化を図ることにある。
【０００９】
【課題を解決するための手段】
上記課題を解決するため、本発明では、ホスト計算機は、スナップショットの作成を望む場合には、スナップショット作成要求を示す指示を記憶装置に対して送信し、記憶装置の制御部が、ユーザデータ領域からユーザデータを読み出し、読み出したユーザデータをスナップショット領域に格納することにより、スナップショットを作成する構成とした。これにより、スナップショット作成の負荷を、ホストと記憶装置とで分散する。また、スナップショット作成のために、ホストと記憶装置間でやり取りするデータ量を少なくすることができる。
【００１０】
なお、スナップショット作成要求を示す指示として、ホスト計算機と記憶装置とを接続するインタフェースのプロトコルに従った、予め定めた一つのコマンドを用いることができる。このコマンドは、例えば、インタフェースのプロトコルによって定められた、データの更新を指示するためのコマンドに、スナップショットの作成を要求する指示を示す部分と、前記スナップショットの世代情報を示す部分とを追加したものを用いることができる。
【００１１】
【発明の実施の形態】
本発明の一実施の形態について説明する。
【００１２】
まず、第１の実施の形態のストレージシステムについて説明する。第１の実施の形態のストレージシステムは、図１に示したように、ホスト計算機（以下ホストと称す）１０１と、外部記憶装置としてハードディスク装置１０３とを含んでいる。ホスト１０１は、ＳＣＳＩバス１０２により、ハードディスク装置１０３と接続されている。ハードディスク装置１０３は、ディスク制御部１０４とディスクドライブ１０５とを含み、両者は、ＥＳＤＩと呼ばれるドライブインタフェース１０６によって接続されている。
【００１３】
ディスクドライブ１０５は、内蔵するハードディスクに、ユーザーデータ領域１０７とスナップショット領域１０８とを有する。ユーザーデータ領域１０７は、ホスト１０１から転送されたユーザデータ（ソースデータ）を格納する領域である。スナップショット領域１０８は、ソースデータに対するスナップショットを格納する領域である。本実施の形態においてスナップショットとは、ある時点におけるソースデータのイメージ（コピー）をいう。本実施の形態では、ハードディスク装置１０３は、ホスト１０１からのスナップショット作成を要求するＳＣＳＩコマンドを契機として、ディスク制御部１０４により、ユーザーデータ領域１０７のソースデータのスナップショットをスナップショット領域１０８に作成し管理する。ホスト１０１がスナップショット作成を要求するために用いるＳＣＳＩコマンドの内容については、後で詳しく説明する。ホスト１０１は、図示していないがＣＰＵとＳＣＳＩドライバとを内蔵している。スナップショット作成を要求する際には、ＣＰＵの指示に従ってＳＣＳＩドライバが後述のＳＣＳＩコマンドを作成し、ＳＣＳＩバス１０２を介してハードディスク装置１０３に送信する。
【００１４】
ハードディスク装置１０３のディスク制御部１０４の構成を図３を用いて説明する。ディスク制御部１０４は、ＳＣＳＩコントローラ３０２、ドライブキャッシュ３０６、ディスクフォーマッタ３０７，ＲＡＭ３０５，ＲＯＭ３０４、ＣＰＵ３０３，ドライブ制御回路３０８、制御バス３１０、データバス３０９を含んでいる。
【００１５】
ＳＣＳＩコントローラ３０２は、ＳＣＳＩバス１０２に接続されている。ＳＣＳＩコントローラ３０２は、トランシーバおよびレシーバ、ＳＣＳＩプロトコル制御回路、ＤＭＡ回路を内蔵し、ホスト１０１とハードディスク装置１０３との間でＳＣＳＩデータ送受信、ＳＣＳＩコマンド受信、ＳＣＳＩ　ＭＥＳＳＡＧＥ送受信、ＳＣＳＩ　Ｓｔａｔｕｓ送信を制御する。ＳＣＳＩコントローラ３０２は、ＳＣＳＩバス１０２を介してホスト１０１から受け取ったＳＣＳＩデータを、一時的にドライブキャッシュ３０６に格納する。また、ＳＣＳＩコントローラ３０２は、ＳＣＳＩ割込み信号３１４を発生させ、ＳＣＳＩバス１０２上で発生したイベント、およびＳＣＳＩコントローラ３０２の状態変化をＣＰＵ３０３に通知する。
【００１６】
ＲＡＭ３０５は、ホスト１０１から受信したＳＣＳＩコマンドを格納するためのＳＣＳＩコマンドキュー格納領域３１６と、スナップショットの管理テーブルを格納するためのスナップショット管理テーブル格納領域３１５とを含む。
【００１７】
ＣＰＵ３０３は、制御バス３１０を用いて、ＲＯＭ３０４に予め格納されているプログラムを読み出し、これを実行することにより、ＳＣＳＩコマンド、ＳＣＳＩ　ＭＥＳＳＡＧＥの解釈、実行を制御するとともに、スナップショット作成および管理を行う。また、ＣＰＵ３０３は、ディスク制御部１０４の各構成要素を制御することでディスク制御部１０４を統括制御する。ＣＰＵ３０３は、プログラム実行に伴う一時的な制御情報をＲＡＭ３０５に格納し、参照する。また、ＳＣＳＩコントローラ３０２が、上述のＳＣＳＩ割り込み信号３１４を発生させることによりホスト１０１からのＳＣＳＩコマンドの受信をＣＰＵ３０３に通知した場合、ＣＰＵ３０３は、ＳＣＳＩコマンドをＲＡＭ３０５のＳＣＳＩコマンドキュー格納領域３１６にキューイングする。ＣＰＵ３０３は、ＳＣＳＩコマンドキュー格納領域３１６にＳＣＳＩコマンドが存在しなくなるまで、ＳＣＳＩコマンドを解釈し、処理し、処理が完了したＳＣＳＩコマンドをＳＣＳＩコマンドキュー格納領域３１６からデキューする。
【００１８】
ドライブキャッシュ３０６は、ＳＣＳＩコントローラ３０２とディスクドライブ１０５のデータ転送速度の差を吸収するための一時的なバッファである。
【００１９】
ディスクフォーマッタ３０７は、ディスクドライブ１０５が内蔵するディスクにデータを記憶させる際の物理的なフォーマットを管理する。また、ディスクフォーマッタ３０７は、ディスクドライブ１０５からのデータの読み出し動作およびデータの書き込み動作を制御する。また、ディスクドライブ１０５から読み出されたリードデータ３１２を受け取るとともに、ディスクドライブ１０５に書き込むべきライトデータを受け渡す。さらに、ディスクフォーマッタ３０７は、ドライブキャッシュ３０６とディスクドライブ１０５間のデータ転送を制御する。また、ディスクフォーマッタ３０７は、論理アドレスと物理アドレスを変換するテーブルを有している。
【００２０】
データバス３０９は、ＳＣＳＩ　コントローラ３０２とドライブキャッシュ３０６との間、および、ディスクフォーマッタ３０７とドライブキャッシュ３０６との間のデータ転送を行う３２ビットの内部バスである。
【００２１】
ドライブ制御回路３０８は、ディスクドライブ１０５のヘッド位置決め制御や媒体円板の定回転制御を行うモータドライバなどを含むハードウエアであり、ヘッド位置決め制御信号や、媒体円板を回転させるスピンドルモータを制御する信号などのドライブ制御信号３１３を入出力する。
【００２２】
つぎに、スナップショット管理テーブル格納領域３１５に格納されるスナップショット管理テーブル３１５ａの構成を図９を用いて説明する。本実施の形態では、スナップショット管理テーブル３１５ａは、４個のエントリ（スナップショット）を登録するための４つの領域９１１〜９１４を有し、それぞれのエントリ領域９１１〜９１４は１６バイトである。各エントリ領域９１１〜９１４には、ＡＧＥ記憶領域９０１、ソースデータアドレス記憶領域９０２、スナップショットデータアドレス記憶領域９０３、記録長記憶領域９０４が含まれている。ＡＧＥ記憶領域９０１は、該当するスナップショットの世代番号を記憶する２バイトの領域である。ソースデータアドレス記憶領域９０２は、スナップショットデータに対応するユーザーデータの先頭のＳＣＳＩ論理アドレスを格納する４バイトの領域である。スナップショットデータアドレス記憶領域９０３は、ディスクドライブ１０５のスナップショット領域１０８におけるスナップショットデータの先頭アドレスを記憶する４バイトの領域である。記録長記憶領域９０４は、スナップショットデータのデータ長を記憶する２バイトの領域である。
【００２３】
本実施の形態では、ホスト１０１がスナップショット作成を要求する際に、ＳＣＳＩコマンドを用いる。ここで、ホスト１０１がスナップショット作成を要求する際に用いるＳＣＳＩコマンドの構成について説明する。図２に、スナップショット作成を要求するＳＣＳＩコマンドのＣＤＢ（Ｃｏｍｍａｎｄ　Ｄｅｓｃｒｉｐｔｏｒ　Ｂｌｏｃｋ）フォーマットを示す。図２に示すように、本実施の形態では、ＳＣＳＩのＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドにおいて、従来使用されていなかったＢＹＴＥ１のＢＩＴ１、ＢＩＴ２をＳＮＰ２０１として用い、ＢＹＴＥ６をＡＧＥ２０２として用いる。このスナップショットの作成を要求するコマンドは、ＳＮＰ２０１およびＡＧＥ２０２以外の部分は、通常のＳＣＳＩのＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドの通りであり、コマンドがＥＸＴＥＮＤＥＤ　ＷＲＩＴＥであることを示す２Ａｈ（ただしｈは、数字を１６進数で表していることを示している）が設定されたＯＰＥＲＡＴＩＯＮ　ＣＯＤＥ２０３、ホスト１０１から転送するライトデータの書き込みを行うユーザデータ領域１０７の論理アドレスを示すＬＯＧＩＣＡＬ　ＢＬＯＣＫ　ＡＤＤＲＥＳＳ２０４〜２０７、書き込むべきデータの長さを示すＴＲＡＮＳＦＥＲ　ＬＥＮＧＴＨ２０８〜２０９を含んでいる。
【００２４】
ＳＮＰ２０１は、スナップショット作成を指示する２ビットであり、デフォルト値は００ｈ（ただしｈは、数字を１６進数で表していることを示している）である。ＳＮＰ２０１が０３ｈにセットされているときは、このコマンドのＬＯＧＩＣＡＬ　ＢＬＯＣＫ　ＡＤＤＲＥＳＳ２０４〜２０７が指定するユーザデータ領域１０７のデータのスナップショット作成した後、ＬＯＧＩＣＡＬ　ＢＬＯＣＫ　ＡＤＤＲＥＳＳ２０４〜２０７で指定するユーザデータ領域１０７にホスト１０１からの転送されたライトデータを格納することを示す。一方、ＳＮＰ２０１が０１ｈにセットされているときは、このコマンドのＬＯＧＩＣＡＬ　ＢＬＯＣＫ　ＡＤＤＲＥＳＳ２０４〜２０７で指定するユーザデータ領域１０７のスナップショットの作成のみを要求していることを示し、ホスト１０１からのライトデータは転送されないことを示す。
【００２５】
ＡＧＥ２０２は、作成するスナップショットの世代を示す番号を指定する８ビットの領域である。この世代を示す番号は、図９のＡＧＥ記憶領域９０１に格納される。
【００２６】
よって、ホスト１０１は、スナップショット作成を要求する場合、ＳＮＰ２０１を０１ｈまたは０３ｈに設定し、スナップショット作成を要求すべきデータが格納されているユーザデータ領域１０７の論理アドレスをＬｏｇｉｃａｌ　Ｂｌｏｃｋ　Ａｄｄｒｅｓｓ２０４〜２０７に設定し、データ長をＴｒａｎｓｆｅｒ　Ｌｅｎｇｔｈ２０８〜２０９に設定し、さらにＡＧＥ２０２に世代番号を設定することにより図２のようなＣＤＢフォーマットを作成して、ハードディスク装置１０３に送信する。また、ホスト１０１は、ＳＮＰ２０１を０３ｈに設定しているときは、ライトデータの転送を行う。また、ホスト１０１がＳＮＰ２０１を０１ｈに設定したときは、ライトデータの転送は行わない。
【００２７】
ＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドのＳＮＰ２０１が０１ｈまたは０３ｈで指定されたコマンドを受信したハードディスク装置１０３は、ＡＧＥ２０２で指定された世代番号をスナップショット管理テーブル３１５ａのＡＧＥ記憶領域９０１に格納し、ＬｏｇｉｃａｌＢｌｏｃｋ　Ａｄｄｒｅｓｓ２０４〜２０７で指定された論理アドレスをソースデータアドレス記憶領域９０２に格納する。また、Ｔｒａｎｓｆｅｒ　Ｌｅｎｇｔｈ２０８〜２０９で指定されたデータ長を記録長記憶領域９０４に格納する。また、ハードディスク装置１０３は、スナップショット領域１０８にスナップショットを記憶する領域を割り当て、該領域の先頭論理アドレスをスナップショットデータアドレス記憶領域９０３に格納する。また、前記コマンドのＬｏｇｉｃａｌ　Ｂｌｏｃｋ　Ａｄｄｒｅｓｓ２０４〜２０７で指定されたユーザデータ領域１０７の論理アドレスからＴｒａｎｓｆｅｒ　Ｌｅｎｇｔｈ２０８〜２０９で指定された長さの領域分のデータについて、そのコピー（スナップショット）をスナップショット領域１０８内の前記割り当てた領域に作成する。また、ＳＮＰ２０１に０３ｈがセットされ手いる場合には、さらに、前記Ｌｏｇｉｃａｌ　Ｂｌｏｃｋ　Ａｄｄｒｅｓｓ２０４〜２０７からＴｒａｎｓｆｅｒ　Ｌｅｎｇｔｈ２０８〜２０９で指定された長さの領域に、ホスト１０１からの転送されたライトデータを格納する。なお、ハードディスク装置１０３の詳しい動作については、後で具体的に説明する。
【００２８】
次に、ホスト１０１が、スナップショット読み出しを要求する際に用いるＳＣＳＩコマンドのＣＤＢフォーマットを図４を用いて説明する。このＣＤＢフォーマットは、ＳＣＳＩのＥＸＴＥＮＤＥＤ　ＲＥＡＤコマンドの、従来使われていなかったＢＹＴＥ１のＢＩＴ１をＳＮＰ４０１として用い、ＢＹＴＥ６をＡＧＥ４０２として用いる。ＳＮＰ４０１およびＡＧＥ４０２以外の部分は、通常のＳＣＳＩのＥＸＴＥＮＤＥＤ　ＲＥＡＤコマンドの通りであり、コマンドがＥＸＴＥＮＤＥＤ　ＲＥＡＤであることを示すＯＰＥＲＡＴＩＯＮ　ＣＯＤＥ４０３、読み出してホスト１０１に転送すべきスナップショットの論理アドレスを示すＬＯＧＩＣＡＬ　ＢＬＯＣＫ　ＡＤＤＲＥＳＳ４０４〜４０７、読み出すべきデータの長さを示すＴＲＡＮＳＦＥＲ　ＬＥＮＧＴＨ４０８〜４０９を含んでいる。
【００２９】
ＳＮＰ４０１は、スナップショット読み出しを指示するビットであり、デフォルト値は００ｈである。ＳＮＰ４０１が０１ｈにセットされているときは、前記コマンドで指定する領域のスナップショットの読み出しを要求していることを示す。ＡＧＥ４０２は、読み出すスナップショットの世代番号を指定する８ビットの領域であり、図９のＡＧＥ記憶領域９０１に格納されている番号に対応している。
【００３０】
ホスト１０１は、スナップショット読み出しを要求する場合、ＳＮＰ４０１を０１ｈに設定し、読み出すべきデータの論理アドレスをＬｏｇｉｃａｌ　Ｂｌｏｃｋ　Ａｄｄｒｅｓｓ４０４〜４０７　に設定し、読み出すべきデータ長をＴｒａｎｓｆｅｒ　Ｌｅｎｇｔｈ４０８〜４０９に設置し、さらにＡＧＥ４０２に世代番号を設定することによりＣＤＢを作成し、ハードディスク装置１０３に送信する。なお、ホスト１０１がｔｒａｎｓｆｅｒ　ｌｅｎｇｔｈに００ｈを設定したときは、リードデータの転送は行われない。
【００３１】
ＳＮＰ４０１に０１ｈがセットされ、ｔｒａｎｓｆｅｒ　ｌｅｎｇｔｈ　４０８〜４０９に００ｈ以外がセットされているＥＸＴＥＮＤＥＤ　ＲＥＡＤコマンドを受信したハードディスク装置１０３は、スナップショット管理テーブル３１５ａのＡＧＥ記憶領域９０１を参照し、該当する世代番号のエントリのスナップショットデータアドレス記憶領域９０３のアドレスに対応するスナップショットをスナップショット領域１０８から読み出す。このスナップショットを、ソースデータの未変更領域のデータ、すなわちユーザーデータ領域１０７のデータであって、スナップショットが登録されていないソースデータアドレス記憶領域９０２と組み合わせることにより、全体のスナップショットデータを復元し、ホスト１０１に転送する。一方、ＳＮＰ４０１に０１ｈがセットされ、ｔｒａｎｓｆｅｒ　ｌｅｎｇｔｈ４０８〜４０９に００ｈがセットされているＥＸＴＥＮＤＥＤ　ＲＥＡＤコマンドを受信したハードディスク装置１０３は、スナップショット管理テーブル３１５ａを参照して、スナップショット領域１０８から該当する世代のスナップショットを読み出し、このスナップショットを用いて、ＥＸＴＥＮＤＥＤ　ＲＥＡＤコマンドのＬｏｇｉｃａｌ　Ｂｌｏｃｋ　Ａｄｄｒｅｓｓ４０４〜４０７で指定されたアドレスからＴｒａｎｓｆｅｒ　Ｌｅｎｇｔｈ４０８〜４０９のデータ長分のユーザーデータを、該当するユーザーデータ領域に復元し格納する。なお、ハードディスク装置１０３の詳しい動作については後で具体的に説明する。
【００３２】
つぎに、ホスト１０１がハードディスク装置１０３のスナップショット作成機能を設定変更するために用いる、ＳＣＳＩコマンドのＣＤＢフォーマットを図６を用いて説明する。このＣＤＢフォーマットは、ＳＣＳＩのＭｏｄｅ　Ｓｅｌｅｃｔコマンドのページ０Ａｈ（コントロールモードパラメータ）を用いたものであり、ページ０ＡｈのＢｙｔｅ４のビット５、ビット４をスナップショット管理機能を設定するためのビット（ＳＮＰＳＴＥＮ６０１）として用いる。このうち、ビット４をスナップショット作成ＥＮＡＢＬＥビット（ＳＮＰＳＴＷＥ６０１ａ）、ビット５をスナップショットリードＥＮＡＢＬＥ（ＳＮＰＳＴＲＥ６０１ｂ）ビットとして用いる。
【００３３】
ＳＮＰＳＴＷＥ６０１ａを１に設定した図６のＳＣＳＩコマンドを受け取ったハードディスク装置１０３は、ＲＡＭ３０５の予め定めた領域に１を格納する等することによりこれを記憶し、その後のハードウエアリセット以降、ハードディスク装置１０３は、ホスト１０１からスナップショット作成を要求するコマンドを契機に、スナップショットを作成、管理する。一方、ＳＮＰＴＷＥ６０１ａを０に設定した図６のＳＣＳＩコマンドを受け取ったハードディスク装置１０３は、ＲＡＭ３０５の前記予め定めた領域に０を格納する等によりこれを記憶し、その後のハードウエアリセット以降、スナップショット作成を行わない。よって、ホスト１０１からスナップショット作成を要求するコマンドを受信しても、スナップショットを作成せず、コマンドを終了し、ホスト１０１にＣＨＥＣＫ　ＣＯＮＤＩＴＩＯＮを報告する。
【００３４】
また、ＳＮＰＳＴＲＥ６０１ｂを１に設定すると、ＲＡＭ３０５の別の予め定めた領域に１を格納する等によりこれを記憶し、その後のハードウエアリセット以降、ハードディスク装置１０３は、ホスト１０１からスナップショット読み出しを要求するコマンドを契機に、スナップショットを読み出す。一方、ＳＮＰＴＲＥ６０１ｂを０に設定すると、ＲＡＭ３０５の別の予め定めた領域に０を格納する等によりこれを記憶し、その後のハードウエアリセット以降、ハードディスク装置１０３は、スナップショット作成を行わない。よって、ホスト１０１からスナップショット読み出しを要求するコマンドを受信しても、スナップショットを読み出さず、コマンドを終了し、ホスト１０１にＣＨＥＣＫ　ＣＯＮＤＩＴＩＯＮを報告する。
【００３５】
つぎに、ホスト１０１が、ハードディスク装置１０３のユーザーデータとスナップショットとにアクセスする際の動作について、図５を用いて説明する。図５のように、ホスト１０１は、ハードディスク装置１０３のユーザデータ領域１０７のボリュームをローカルディスクＤに論理的に割り当てて使用している。また、スナップショットを格納するスナップショット領域１０８にローカルディスクＥを論理的に割り当てて使用している。ホスト１０１は、ユーザデータ領域１０７のデータを書き込みをする際には、通常のＳＣＳＩコマンドであるＥＸＴＥＮＤＥＤ　ＷＲＩＴＥを作成して送信する。同様に、読み出しをする際には、通常のＥＸＴＥＮＤＥＤ　ＲＥＡＤを作成して送信する。一方、ホスト１０１は、スナップショットの作成を要求する際には、ＥＸＴＥＮＤＥＤ　ＷＲＩＴＥを利用した図２のＣＤＢフォーマットのＳＣＳＩコマンドを作成して送信する。同様に、読み出しをする際には、ＥＸＴＥＮＤＥＤ　ＲＥＡＤを利用した図４のＣＤＢフォーマットのＳＣＳＩコマンドを作成して送信する。通常のＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドと図２のＣＤＢフォーマットのコマンドとの違い、ならびに、通常のＥＸＴＥＮＤＥＤ　ＲＥＡＤコマンドと図４のＣＤＢフォーマットのコマンドとの違いは、図２、図４に示したようにＳＮＰ２０１、ＳＮＰ４０１のビットと、ＡＧＥ２０２、ＡＧＥ４０２のビットだけである。よって、ホスト１０１は、ローカルディスクＤ（ユーザデータ領域１０７）のユーザデータをアクセスする場合には、内蔵するＣＰＵが、内蔵するＳＣＳＩドライバに指示を出し、ＳＣＳＩドライバが予め格納されたプログラムを実行することにより、通常通りに、ＥＸＴＥＮＤＥＤ　ＲＥＡＤコマンドまたは、ＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドのＬｏｇｉｃａｌ　ＡｄｄｒｅｓｓとＴｒａｎｓｆｅｒ　Ｌｅｎｇｔｈを設定してＳＣＳＩバス１０２を介してハードディスク装置１０３に送信する。一方、ローカルディスクＥ（スナップショット領域１０８）のスナップショットにアクセスするときは、内蔵するＣＰＵが、内蔵するＳＣＳＩドライバに指示を出し、ＳＣＳＩドライバが予め格納されたプログラムを実行することにより、図２，図４のフォーマットのＥＸＴＥＮＤＥＤ　ＲＥＡＤコマンドまたは、ＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドのＬｏｇｉｃａｌ　Ａｄｄｒｅｓｓ２０４〜２０７または４０４〜４０７とＴｒａｎｓｆｅｒ　Ｌｅｎｇｔｈ２０８〜２０９または４０８〜４０８を設定し、さらに、ＳＮＰ２０１またはＳＮＰ４０１とＡＧＥ２０２またはＡＧＥ４０２を設定してハードディスク装置１０３に送信する。
【００３６】
つぎに、図７のフローチャートを用いて、ハードディスク装置１０３が、ホスト１０１からのスナップショット作成要求を処理する動作について説明する。
【００３７】
ＳＣＳＩコントローラ３０２は、既に述べたように、ホスト１０１からＳＣＳＩコマンドを受け取った場合、これをＳＣＳＩ割り込み信号３１４によりＣＰＵ３０３に通知する。信号３１４を受けたＣＰＵ３０３は、ＲＯＭ３０４からプログラムを読み込んで実行することにより、コマンド解釈を行う。これにより、ＳＣＳＩコマンドがＥＸＴＥＮＤＥＤ　ＷＲＩＴＥである場合には、図７のフローチャートのように動作する。
【００３８】
まず、ＣＰＵ３０３は、ホスト１０１から受け取ったＳＣＳＩコマンドがＥＸＴＥＮＤＥＤＷＲＩＴＥであるかどうか判定する（図７のステップ７０１）。具体的には、図２に示すようにＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドのＣＤＢ　ＢＹＴＥ０は２Ａｈであるので、ＣＰＵ３０３は、ホスト１０１から受信したＳＣＳＩコマンドのＣＤＢ　ＢＹＴＥ０が２Ａｈかどうかを判別することにより、ＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドであるかどうかを判定する。処理すべきＳＣＳＩコマンドがＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドであれば、つぎのステップ７０２に進み、スナップショット作成が許可されているか判定する。一方、ステップ７０１で、処理するＳＣＳＩコマンドがＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドでなければ、図７の処理を終了し、ＥＸＴＥＮＤＥＤ　ＷＲＩＴＥ以外のそのＳＣＳＩコマンドの解釈を行い、その処理を実行する。
【００３９】
ステップ７０２においては、最も最近受け取った図６のＭｏｄｅ　Ｓｅｌｅｃｔコマンドにおいて、スナップショット作成が許可されていたかどうかを判定する。すなわち、前述したＲＡＭ３０５の予め定めた領域に１が格納されているかどうかを検出すること等によりスナップショットの作成の許可されているかどうかを判定する。ステップ７０２においてスナップショット作成が許可されている場合には、ステップ７０３に進み、さらにスナップショット作成要求があるかどうかを判定する。一方、スナップショット作成が許可されていない場合には、ステップ７０６へ進み、通常のＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンド処理を実行する。
【００４０】
ステップ７０３では、ステップ７０１で判定したＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドが、スナップショット作成要求コマンドであるかどうか判定する。具体的には、ＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドのＳＮＰ２０１の値が０１ｈまたは０３ｈである場合に、スナップショット作成要求があると判定し、ステップ７０４に進む。一方、ステップ７０３において、スナップショット作成要求がない場合には、ステップ７０６へ進み、ＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンド処理を実行する。
【００４１】
ステップ７０４では、サブルーチンプログラムをＲＯＭ３０４から読み込んで実行することにより、スナップショット管理テーブル３１５ａに管理情報を格納する。具体的には、スナップショット管理テーブル３１５ａのＡＧＥ記憶領域９０１の下位バイトに、ＥＸＴＥＮＤＥＤ　ＷＲＩＴＥ　コマンドのＡＧＥ２０２の値（世代番号）を格納し、ソースデータアドレス記憶領域９０２にＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドのＬｏｇｉｃａｌ　Ｂｌｏｃｋ　Ａｄｄｒｅｓｓ２０４〜２０７の値を格納し、さらに、記録長記憶領域９０４にＴｒａｎｓｆｅｒ　Ｌｅｎｇｔｈ２０８〜２０９の値を格納する。また、スナップショット領域１０８にスナップショットを記憶する領域を割り当て、記憶する領域の先頭アドレスをスナップショットアドレス記憶領域９０３に記憶する。
【００４２】
次に、ステップ７０５に進み、サブルーチンプログラムをＲＯＭ３０４から読み込んで実行することにより、ユーザーデータ領域１０７のうち、前記コマンドのＬｏｇｉｃａｌ　Ｂｌｏｃｋ　Ａｄｄｒｅｓｓ２０４〜２０７で指定された論理アドレスからＴｒａｎｓｆｅｒ　Ｌｅｎｇｔｈ２０８〜２０９で指定された長さの領域分のデータについて、そのコピー（スナップショット）をスナップショット領域１０８内の前記割り当てた領域に作成する。
【００４３】
つぎに、ステップ７０６に進み、サブルーチンプログラムをＲＯＭ３０４から読み込んで実行することにより、ＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドを実行する。すなわち、ホスト１０１からＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドで指定された長さのライトデータをＳＣＳＩバス１０２を介して受信して、このデータを前記コマンドで指定されたＬｏｇｉｃａｌ　Ｂｌｏｃｋ　Ａｄｄｒｅｓｓ２０４〜２０７に対応する領域に書き込む。これにより、スナップショット作成処理を終了する。
【００４４】
これにより、ＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドでホスト１０１から受信したデータをユーザデータ領域１０７内の指定された領域に書き込む前に、書き込みが行われる領域のデータをスナップショット領域１０８にコピーすることができる。これにより、書き込み前のデータの復元をユーザが望んだ場合には、スナップショット領域１０８のスナップショットと、ユーザデータ領域１０７の未変更データとを組み合わせることにより、復元が可能になる。
【００４５】
なお、上記ステップ７０２において、スナップショット作成が許可されていない場合、ステップ７０６に進み、通常のＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドを実行するが、このとき、実行しようとするＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドのＳＮＰ２０１が１でスナップショットの作成を要求している場合には、通常のＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドの処理のためのプログラムでは対応できない。この場合、ＣＰＵ３０３は、スナップショットの作成が許可されていないが、スナップショット作成を要求しているＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドを受け取っている旨をホスト１０１に対して報告する。
【００４６】
つぎに、図８のフローチャート用いて、ハードディスク装置１０３が、ホスト１０１からのスナップショット読み出し要求を処理する動作について説明する。
【００４７】
ＣＰＵ３０３は、ＳＣＳＩコマンドがＥＸＴＥＮＤＥＤ　ＲＥＡＤである場合、これを解釈して実行するためのサブルーチンを呼び出して実行することにより、以下のように処理する。
【００４８】
まず、ＣＰＵ３０３は、ホスト１０１から受け取ったＥＸＴＥＮＤＥＤ　ＲＥＡＤコマンドがスナップショット読み出し要求であるかどうか判定する（図８のステップ８０１）。具体的には、ＣＰＵ３０３は、ホスト１０１から受け取った図４のＥＸＴＥＮＤＥＤ　ＲＥＡＤコマンドのＳＮＰ４０１に１にセットされているかどうかどうかを判別することにより、スナップショット読み出し要求であると判定する。ＳＮＰ４０１に１がセットされたスナップショット読み出し要求コマンドである場合には、ステップ８０２に進む。一方、スナップショット読み出し要求コマンドではない場合には、ステップ８０６に進み、通常のＳＣＳＩ　ＲＥＡＤコマンド実行のためのサブルーチンを読み出して、その処理を実行した後、スナップショット読みだし処理のサブルーチンを終了し、呼び出し元のプログラムに戻る。
【００４９】
ステップ８０２では、スナップショット管理テーブル３１５ａを検索し、ＥＸＴＥＮＤＥＤ　ＲＥＡＤコマンドで要求されたスナップショットが存在するかどうかを判定する。本実施の形態では、下記の（１）（２）の条件がどちらも成立するときに、該当コマンドで要求されたスナップショットが存在すると判定する。
（１）スナップショット管理テーブル３１５ａのエントリのうち、ＡＧＥ記憶領域９０１の下位１バイトが、該当ＥＸＴＥＮＤＥＤ　ＲＥＡＤコマンドのＡＧＥ４０２と一致するものがある。
（２）（１）を満足するスナップショット管理テーブル３１５ａのエントリのソースデータアドレス記憶部９０２が記憶するアドレスが、該当ＥＸＴＥＮＤＥＤ　ＲＥＡＤコマンドで指定されたＬｏｇｉｃａｌ　Ｂｌｏｃｋ　Ａｄｄｒｅｓｓ４０４〜４０７からＴｒａｎｓｆｅｒ　Ｌｅｎｇｔｈ　４０８〜４０９の範囲内にある。
【００５０】
これにより、要求されたスナップショットが存在すると判定された場合、ステップ８０３に進み、該当ＥＸＴＥＮＤＥＤ　ＲＥＡＤコマンドがデータ復元要求をしているかどうか判定する。具体的には、該当ＥＸＴＥＮＤＥＤ　ＲＥＡＤコマンドのＴｒａｎｓｆｅｒ　Ｌｅｎｇｔｈ４０８〜４０９の値が００ｈであるとき、データ復元要求であると判定し、ステップ８０４に進む。ステップ８０４では、スナップショット管理テーブル３１５ａの該当エントリのスナップショットデータアドレス記憶領域９０３に記憶されているアドレスを先頭アドレスとし、記録長記憶領域９０４に記憶されている記録長分のデータを、スナップショット領域１０８から読み出し、ユーザーデータ領域１０７の該当ソースデータアドレス記憶領域９０２の記憶されているアドレスを先頭アドレスとしてコピーすることにより、ソースデータを復元する。復元後、スナップショット読み出し処理サブルーチンを終了し、呼び出し元のプログラムに戻る。
【００５１】
一方、ステップ８０３において、スナップデータ復元要求でないとき、すなわち、該当ＥＸＴＥＮＤＥＤ　ＲＥＡＤコマンドのＴｒａｎｓｆｅｒ　Ｌｅｎｇｔｈ４０８〜４０９の値が００ｈではないときには、ステップ８０５に進む。ステップ８０５では、転送済みデータ量を０ｈ、および、転送Ｌｏｇｉｃａｌ　Ｂｌｏｃｋ　Ａｄｄｒｅｓｓポインタに該当ＥＸＴＥＮＤＥＤ　ＲＥＡＤコマンドのＬｏｇｉｃａｌ　Ｂｌｏｃｋ　Ａｄｄｒｅｓｓ４０４〜４０７の値を代入する。その後、転送済みデータ量と該当ＥＸＴＥＮＤＥＤ　ＲＥＡＤコマンドでの要求転送長（Ｔｒａｎｓｆｅｒ　Ｌｅｎｇｔｈ４０８〜４０９の値）を比較し、一致していなければ、スナップショットを読み出し転送するか判定し（ステップ８０７）、該当するスナップショット（図８の８０８）、または該当するユーザーデータを読み出し転送する（図８の８０９）。転送後、転送Ｌｏｇｉｃａｌ　Ｂｌｏｃｋ　Ａｄｄｒｅｓｓポインタおよび転送済みデータ量を更新し（ステップ８１０）、ステップ８０５に戻り、転送済みデータ量と要求転送長を比較する。ステップ８０５から８１０までの処理を、転送済みデータ量が要求転送長と一致するまで繰り返す。要求されたデータをすべて送信したら、本サブルーチンを終了し、呼び出し元のプログラムに戻る。
【００５２】
上述してきたように、本実施の形態によれば、一つのＳＣＳＩコマンドにより指示を受けたハードディスク装置１０３自身がスナップショットを作成するため、従来のホスト１０１がスナップショット作成を実行する場合と比較して、高速にスナップショットを作成できる。
【００５３】
比較として、従来のようにホストがハードディスク装置の動作の制御を行うことにより、スナップショットの作成およびスナップショット作成後のハードディスク装置のデータの更新する場合のホストの動作について簡単に説明する。この場合、ホストには以下の３つの指示を送信する必要がある。
（１）　ホストは、該当データをハードディスク装置から読み出す指示をハードディスク装置に与える。
（２）　読み出したデータを、ハードディスク装置のスナップショットを保存する領域に書き込む指示を、ホストがハードディスク装置に与える。
（３）更新するデータをホストからハードディスク装置に受け渡し、ハードディスク装置の該当領域に書き込む指示を、ホストがハードディスク装置に与える。
【００５４】
また、上記３つの指示を受信するたびに、ハードディスク装置は、そのＳＣＳＩコマンドを処理する必要があった。
【００５５】
これに対し、本実施の形態では、ＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドを利用した図２のＣＤＢフォーマットを用いることにより、スナップショット作成およびデータの更新を１つのＳＣＳＩコマンドで処理できる。このため、ハードディスク装置に送信するＳＣＳＩコマンドを、従来よりも２つ削減でき、ＳＣＳＩコマンド解釈など、ハードディスク装置１０３内でのＳＣＳＩコマンドを処理するオーバーヘッドが削減され、高速にスナップショットを作成可能である。
【００５６】
また、スナップショット作成を要求するコマンドとして、ＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドを用い、スナップショットの復元や転送を要求するコマンドとしてＥＸＴＥＮＤＥＤＲＥＡＤコマンドを用い、特別な新しいコマンドを用いない。これにより、本実施の形態のスナップショット作成および読み出しを要求するコマンドを作成するためにホスト１０１側に必要なプログラムを、従来のＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドおよびＥＸＴＥＮＤＥＤ　ＲＥＡＤコマンドを作成するプログラムを利用して比較的容易に作成することができる。同様に、ハードディスク装置１０３が、スナップショット作成および読み出しを要求するコマンドを解釈および実行するためのプログラムについても、従来のＥＸＴＥＮＤＥＤ　ＷＲＩＴＥコマンドおよびＥＸＴＥＮＤＥＤ　ＲＥＡＤコマンドの解釈および実行するためのプログラムを利用して比較的容易に作成することができる。
【００５７】
また、上述の本実施例では、ホスト１０１とハードディスク装置１０３の間のインタフェースとして、ＳＣＳＩを用いているが、このインタフェースはＵＬＰ（ＵｐｐｅｒＬａｙｅｒ　Ｐｒｏｔｏｃｏｌ）がＳＣＳＩであればよく、ＦＣ−ＡＬやｉＳＣＳＩ（ＳＣＳＩ　ｏｖｅｒ　ＩＰ）を用いることができる。
【００５８】
次に、本発明の第２の実施の形態を図１０、図１１を用いて説明する。
【００５９】
第１の実施の形態では、スナップショット管理機能を変更するための手段として、図６のＣＤＢフォーマットのＳＣＳＩコマンドを用いたが、第２の実施の形態では、ハードディスク装置１０３に配置したジャンパ１００１により、スナップショット管理機能を変更する。これ以外の構成については、第１の実施の形態と同様である。
【００６０】
具体的には、図１０のように、ハードディスク装置１０３のディスク制御部１０４には、ジャンパ１００１が追加されている。ジャンパ１００１は、ハードディスク装置１０３の機能および初期状態を初期設定するための８ビットのハードウエアジャンパであり、ユーザが設定可能なように、ハードディスク装置１０３の筐体１１００に図１１のように備えられている。ジャンパ１００１は、ＣＰＵ３０３のポートに直接接続されている。ＣＰＵ３０３は、電源起動時およびハードディスク装置１０３のハードウエアリセット時の初期化ルーチンにおいて、ジャンパ１００１の値を参照し、ジャンパ１００１の設定に従ってハードディスク装置１０３を制御する。
【００６１】
ジャンパ１００１は、図１１のように、ビット０（ｂ０）〜ビット７（ｂ７）に対応する８組のピンが配列された構成である。各組のピンは、それぞれ縦に２本の端子を並べることにより構成され、２本の端子を短絡させたピンの組み１、短絡させていない開放ピンの組みは０を示す。図１１の例では、ジャンパ１００１のビット０（ｂ０）のピンおよびビット１（ｂ１）のピンがユーザの操作によって短絡している状態を示しており、この短絡によりビット０およびビット１には１が設定され、他のビットには０が設定されている。第２の実施の形態では、ジャンパ１００１のビット０（ｂ０）を、スナップショット作成ＥＮＡＢＬＥビット（ＳＮＰＳＴＷＥ１１０１）、ビット１（ｂ１）をスナップショットリードＥＮＡＢＬＥ（ＳＮＰＳＴＲＥ１１０２）ビットとして用いる。
【００６２】
ＣＰＵ３０３は、ジャンパ１１００のＳＮＰＳＴＷＥ１１０１が短絡されて１に設定されると、その後のハードウエアリセット以降、ホスト１０１からスナップショット作成を要求するコマンドを契機に、スナップショットを作成、管理する。また、ＳＮＰＴＷＥ１１０１を開放され０に設定されると、その後のハードウエアリセット以降、ＣＰＵ３０３は、スナップショット作成を行わない。よって、ホスト１０１からスナップショット作成を要求するコマンドを受信しても、スナップショットを作成せず、コマンドを終了し、ホスト１０１にＣＨＥＣＫ　ＣＯＮＤＩＴＩＯＮを報告する。
【００６３】
一方、ＣＰＵ３０３は、ジャンパ１００１のＳＮＰＳＴＲＥ１１０２が短絡されて１に設定されると、その後のハードウエアリセット以降、ホスト１０１からスナップショット読み出しを要求するコマンドを契機に、スナップショットを読み出す。また、ＳＮＰＴＲＥ１１０２が開放され０に設定されると、その後のハードウエアリセット以降、ＣＰＵ３０３は、スナップショット読み出しを行わない。よって、ホスト１０１からスナップショット読み出しを要求するコマンドを受信しても、スナップショットを読み出さず、コマンドを終了し、ホスト１０１にＣＨＥＣＫ　ＣＯＮＤＩＴＩＯＮを報告する。
【００６４】
スナップショット作成および読み出しの動作、および、ハードディスク装置１０３内の他の部分の構成については、第１の実施の形態と同様であるので説明を省略する。なお、ジャンパ１００１の設定と、第１の実施の形態のスナップショット作成管理機能を変更設定する図６のＳＣＳＩコマンドの指示とが相反する場合には、予め定められた一方の指示を優先させるように構成することができる。例えば、ＣＰＵ３０３は、スナップショット管理機能を変更設定する図６のコマンドの指示をジャンパ１００１の設定による指示よりも優先する構成にすることができる。
次に、本発明の第３の実施の形態を図１２を用いて説明する。第３の実施の形態は、図１２のように、本発明を適用したストレージシステムである。図１２のストレージシステムは、ＳＡＮ（Ｓｔｏｒａｇｅ　Ａｒｅａ　Ｎｅｔｗｏｒｋ）１２０４上にホスト１０１Ａ、ホスト１０１Ｂ、ホスト１０１Ｃ、Ｖｉｒｔｕａｌｉｚａｔｉｏｎ　Ｓｅｒｖｅｒ１２０１、記憶装置１２０３ａ、記憶装置１２０３ｂ、ＪＢＯＤ１２０２が接続されており、記憶装置１２０３ａ、１２０３ｂ、ＪＢＯＤ１２０２がＳｔｏｒａｇｅ　Ｐｏｏｌ１２０５を構成している。Ｖｉｒｔｕａｌｉｚａｔｉｏｎ　Ｓｅｒｖｅｒ１２０１は、Ｓｔｏｒａｇｅ　Ｐｏｏｌ１１２０５内のボリュームを仮想ストレージとして各ホストに提供している。
【００６５】
ＪＢＯＤ１２０３は、第１の実施の形態のハードディスク装置１０３を複数内蔵した構成であり、それぞれのハードディスク装置１０３がスナップショット管理機能を有する。Ｖｉｒｔｕａｌｉｚａｔｉｏｎ　Ｓｅｒｖｅｒ１２０１は、仮想ストレージの管理を行い、仮想ストレージのスナップショット管理も行っている。ＪＢＯＤ１２０２は、内蔵する複数のハードディスク装置１０３がそれぞれスナップショット管理機能を有するので、Ｖｉｒｔｕａｌｉｚａｔｉｏｎ　Ｓｅｒｖｅｒ１２０１はＪＢＯＤ１２０３で構成される仮想ボリュームのスナップショット管理を行う必要がなく、第１の実施の形態のホスト１０１のようにＳＣＳＩコマンドによりスナップショットの作成や読み出しの指示を出すのみでよい。これにより、図１２のようなＳＡＮ１２０４を用いたストレージシステムにおいて、Ｖｉｒｔｕａｌｉｚａｔｉｏｎ　Ｓｅｒｖｅｒ１２０１の負荷が低減するという効果が得られる。
【００６６】
上述してきたように、本発明によれば、第１及び第２の実施の形態のようにホスト１０１とハードディスク１０３を含むストレージシステム、また、第３の実施の形態のようにＪＢＯＤ１２０２を含む外部記憶装置が接続されたストレージシステムにおいて、スナップショット管理機能を有するハードディスクやＪＢＯＤ１２０２を提供することができる。よって、従来、ホスト１０１やＶｉｒｔｕａｌｉｚａｔｉｏｎ　Ｓｅｒｖｅｒ１２０１が行っていたスナップショット管理を、ハードディスク装置１０３またはＪＢＯＤ１２０２が自身で行うため、スナップショット管理に関する負荷を分散させることができる。これにより、ホスト１０１のＣＰＵ負荷の軽減を図ることができるとともに、ホスト１０１とハードディスク装置１０３等の外部記憶装置との間のインタフェース負荷の軽減、ならびにＳＡＮ１２０４等のネットワークの不可を軽減を図ることができ、ストレージシステムの高速化を図ることができる。
【００６７】
【発明の効果】
上述してきたように、本発明によれば、スナップショット管理に関する負荷を分散させ、ストレージシステムの高速化を図ることができる。
【図面の簡単な説明】
【図１】図１は、本発明の第１の実施の形態の、ホスト計算機１０１およびハードディスク装置１０３とを含むストレージシステム構成を示すブロック図である。
【図２】図２は、第１の実施の形態のストレージシステムにおいて、ホスト１０１がハードディスク１０３に対してスナップショット作成を要求するために用いるＳＣＳＩコマンドのＣＤＢフォーマットを示す説明図である。
【図３】図３は、第１の実施の形態のストレージシステムにおいて、ハードディスク装置１０３のディスク制御部１０４の構成を示す説明図である。
【図４】図４は、第１の実施の形態のストレージシステムにおいて、ホスト１０１がハードディスク１０３に対してスナップショット読み出しを要求するために用いるＳＣＳＩコマンドのＣＤＢフォーマットを示す説明図である。
【図５】図５は、第１の実施の形態のストレージシステムにおいて、ホスト１０１は、ローカルディスクＤをハードディスク装置１０３のユーザデータ領域１０７に論理的に割り当て、ローカルディスクＥをスナップショット領域１０８に論理的に割り当てていることを示す説明図である。
【図６】図６は、第１の実施の形態のストレージシステムにおいて、ホスト１０１がハードディスク装置１０３のスナップショット作成機能を設定変更するために用いる、ＳＣＳＩコマンドのＣＤＢフォーマットを示す説明図である。
【図７】図７は、第１の実施の形態のストレージシステムにおいて、ハードディスク装置１０３が、ホスト１０１からのスナップショット作成要求を実行する動作を示すフローチャートである。
【図８】図８は、第１の実施の形態のストレージシステムにおいて、ハードディスク装置１０３が、ホスト１０１からのスナップショット読み出し要求を実行する動作を示すフローチャートである。
【図９】図９は、第１の実施の形態のストレージシステムにおいて、ハードディスク装置１０３のＲＡＭ３０５に格納されるスナップショット管理テーブル３１５ａのテーブルフォーマットを示す説明図である。
【図１０】図１０は、第２の実施の形態のストレージシステムにおいて、ハードディスク装置１０３のディスク制御部１０４の構成を示す説明図である。
【図１１】図１１は、第２の実施の形態のストレージシステムにおいて、ハードディスク装置１０３に設けられたジャンパ１００１の構成を示す説明図である。図１１は第二の実施例のジャンパの構成を示す図である。
【図１２】図１２は、第３の実施の形態のストレージシステムの構成を示す説明図である。
【符号の説明】
１０１…ホスト、　　　　　　　１０２…ＳＣＳＩバス、
１０３…ハードディスク装置、　１０４…ディスク制御部、
１０５…ディスクドライブ、　　１０６…ドライブインタフェース、
１０７…ユーザーデータ領域、　１０８…スナップショット領域、
２０１…ＳＮＰ、　　　　　　　　　２０２…ＡＧＥ、
３０２…ＳＣＳＩ　コントローラ、　　３０３…ＣＰＵ、
３０４…ＲＯＭ、　　　　　　　３０５…ＲＡＭ、
３０６…ドライブキャッシュ、　３０７…ディスクフォーマッタ、
３０８…ドライブ制御回路、　　３０９…データバス、
３１０…制御バス、　　　　　　３１２…ドライブリード・ライトデータ、
３１３…ドライブ制御信号、　　３１４…ＳＣＳＩ割り込み、
３１５…スナップショット管理テーブル、
３１６…ＳＣＳＩコマンドキュー、　４０１…ＳＮＰ、
４０２…ＡＧＥ、　　　　　　　　　　９０１…ＡＧＥ記憶領域、
９０２…ソースデータアドレス記憶領域、
９０３…スナップショットアドレス記憶領域、
９０４…記録長記憶領域、　　　１００１…ジャンパ。
【図１】
2004118413.tif 000003
【図２】
2004118413.tif 000004
【図３】
2004118413.tif 000005
【図４】
2004118413.tif 000006
【図５】
2004118413.tif 000007
【図６】
2004118413.tif 000008
【図７】
2004118413.tif 000009
【図８】
2004118413.tif 000010
【図９】
2004118413.tif 000011
【図１０】
2004118413.tif 000012
【図１１】
2004118413.tif 000013
【図１２】
2004118413.tif 000014