(57)【要約】【課題】  ディスク装置に特別な機能を持たせずに、かつディスクアクセスコマンドに特別な機能を追加することなく、コマンドの対象となるアドレス範囲を限定して、コマンドの実行順序を最適化できるコマンド制御方法とそれを用いたネットワークストレージシステムを提供する。【解決手段】  クライアントからのファイルアクセス要求を受け付ける要求受付手段１１０と、その要求をディスクアクセスコマンドに変換するファイルシステム制御手段１１１を含む、一つ以上のディスク装置９１３，９１４が接続するネットワークストレージシステム１０３に、ファイルシステム制御手段１１１が変換したディスクアクセスコマンドを受け付け、ファイルシステム制御手段１１１が管理する情報を用いてコマンドを分類し、分類したコマンド毎にコマンドの送出順序を最適化するコマンドコントローラ９１２を設ける。【選択図】  図９
2005250582.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介してクライアントからのファイルアクセス要求を受け付け、ディスク装置にアクセスするネットワークストレージシステムであって、
上記ネットワークストレージシステムは、要求受付手段と、ファイルシステム制御手段と、コマンドコントローラと一つ以上のディスク装置を有し、
要求受付手段は、クライアントからのファイルアクセス要求を受け付けファイルシステム制御手段に転送し、
ファイルシステム制御手段は、該ファイルアクセス要求をディスクアクセスコマンドに変換してコマンドコントローラに転送し、
コマンドコントローラは、ファイルシステム制御手段が管理する配置情報を用いて、ディスク装置に送出するディスクアクセスコマンドの順序を変更することを特徴とするネットワークストレージシステム。
【請求項２】
前記コマンドコントローラは、転送されたコマンドの流量が多い場合のみ、ディスク装置に送出するディスクアクセスコマンドの順序を変更することを特徴とする請求項１記載のネットワークストレージシステム。
【請求項３】
前記配置情報は、ディスクアクセスコマンドのアクセス対象がシステム領域あるいはユーザ領域かを識別するアドレス情報であることを特徴とする請求項１記載のネットワークストレージシステム。
【請求項４】
前記コマンドコントローラは、前記ファイルシステム制御手段が管理する配置情報を保持するテーブルと、コマンドの選択順序を制御するためのポリシー情報を保持するテーブルを有することを特徴とする請求項１記載のネットワークストレージシステム。
【請求項５】
前記ネットワークストレージシステムのコマンドコントローラは、
ファイルシステム制御手段が管理する配置情報とコマンドの選択順序を制御するポリシー情報を設定する手段と、
前記配置情報を用いて複数のコマンドを分類する手段と、
前記ポリシー情報に従って複数のコマンドを選択する手段を備えることを特徴とする請求項１記載のネットワークストレージシステム。
【請求項６】
前記コマンドコントローラは、受け付けたディスクアクセスコマンドのアクセス対象となるアドレス情報と再配置先のアドレス情報の対応関係を保持するマッピングテーブルを備え、マッピングテーブルの情報に従って、コマンドを再構築する手段を備えることを特徴とする請求項１記載のネットワークストレージシステム。
【請求項７】
前記マッピングテーブルは、ディスク装置を識別するための装置識別子と論理ブロックアドレスを含むことを特徴とする請求項６記載のネットワークストレージシステム。
【請求項８】
ディスク装置に対してディスクアクセスコマンドを送出するコマンドコントローラであって、
コマンドコントローラは、該コマンドコントローラの外部から設定される配置情報と、コマンド分類手段と、コマンド選択手段を有し、
前記配置情報を利用して、前記ディスクアクセスコマンドを分類し、分類した中からディスクアクセスコマンドを選択し、そのコマンドの送出順序を制御することを特徴とするコマンドコントローラ。
【請求項９】
前記コマンドコントローラは、
コマンドコントローラが受け付けたコマンドの流量を監視する監視手段と、
監視手段の監視結果に応じて、コマンドの送出順序を制御するかどうかを判定する判定手段を有することを特徴とする請求項８記載のコマンドコントローラ。
【請求項１０】
前記コマンドコントローラは、監視手段がコマンドの流量が少ないと判断した場合には、コマンドの送出順序を制御しないと判定することを特徴とする請求項９記載のコマンドコントローラ。
【請求項１１】
前記コマンド分類手段は、
コマンドのアクセス対象アドレスを特定するアドレス解析手段と、
アクセス対象アドレスと前記配置情報を比較するアドレス比較手段と、
比較結果に従いコマンドをバッファに登録するバッファ登録手段からなり、
コマンド選択手段は、
バッファを選択するバッファ選択手段と、
バッファの空き状況と、バッファを選択した経過時間と、前に連続してディスク装置に送出したコマンド数から、コマンドを送出すべきかどうかを判定する判定手段と、
判定手段の結果を受けて選択したバッファからコマンドを選択する手段と、
選択したコマンドを送出するコマンド送出手段からなることを特徴とする請求項８記載のコマンドコントローラ。
【請求項１２】
前記コマンド選択手段は、さらに、
前記コマンドのアクセス対象アドレスを変更するかどうかを判定する手段と、
判定結果に従い、前期コマンドの対象アドレスを変更してコマンドを再構築する手段を有することを特徴とする請求項８記載のコマンドコントローラ。
【請求項１３】
前記コマンドコントローラは、コマンドコントローラの外部から前記配置情報を設定する手段を有することを特徴とする請求項８記載のコマンドコントローラ。
【請求項１４】
ネットワークを介してクライアントからのファイルアクセス要求を受け付け、それをディスクアクセスコマンドに変換するシステム制御部と一つ以上のディスク装置を有するネットワークストレージシステムにおけるコマンド制御方法であって、
上記ネットワークストレージシステムは、システム制御部からのディスクアクセスコマンドを受け付け、ディスク装置に転送するコマンドコントローラを有し、
上記コマンドコントローラにおけるコマンド制御方法は、
ディスクアクセスコマンドを解析するステップと、
解析したディスクアクセスコマンドに含まれるアドレス情報とシステム制御部が管理する配置情報を比較するステップと、
比較結果からディスクアクセスコマンドを分類するステップからなることを特徴とするネットワークストレージシステムにおけるコマンド制御方法。
【請求項１５】
前記コマンド制御方法は、さらに、
コマンドコントローラに投入されるディスクアクセスコマンドの流量を監視するステップと、
コマンドの流量に従って、コマンドの送出順序を制御するかどうかを判定するステップからなることを特徴とする請求項１４記載のネットワークストレージシステムにおけるコマンド制御方法。
【請求項１６】
前記コマンド制御方法は、さらに、
分類したコマンドのうち、同一の分類に属するコマンドを連続して選択してディスク装置に送出するコマンド選択ステップからなることを特徴とする請求項１４記載のネットワークストレージシステムにおけるコマンド制御方法。
【請求項１７】
前記コマンド制御方法は、さらに、
システム制御部が管理する配置情報をコマンドコントローラに設定するステップを含むことを特徴とする請求項１４記載のネットワークストレージシステムにおけるコマンド制御方法。
【請求項１８】
前記コマンド制御方法は、さらに、
分類したコマンドのアクセス対象アドレス情報を変更するかどうかを判定するステップと、
判定結果に従い、分類したコマンドのアクセス対象アドレス情報を別のアドレス情報に付け替えるステップを含むことを特徴とする請求項１４記載のネットワークストレージシステムにおけるコマンド制御方法。
【請求項１９】
ディスクアクセスコマンドを受け付けディスク装置に送出するコマンドコントローラにおけるコマンド制御方法であって、
コマンドコントローラは、コマンドコントローラの外部から設定される配置情報とポリシー情報を保持し、
前記コマンド制御方法は、
コマンドを受け付け、そのコマンドを解析してコマンドのアクセス対象アドレスを特定するステップと、
前記配置情報とアクセス対象アドレスを比較し、コマンドを分類するステップと、
分類したコマンドをコマンド格納手段に登録するステップと、
前記ポリシー情報に従いコマンド格納手段に登録されたコマンドを選択するステップと、
選択したコマンドをディスク装置に送出するステップを有することを特徴とするコマンドコントローラにおけるコマンド制御方法。
【請求項２０】
前記コマンド制御方法は、
コマンドコントローラに投入されるコマンドの流量を監視するステップと、
流量監視結果に従い、コマンドの送出順序を制御するかどうかを判定するステップを有することを特徴とする請求項１９記載のコマンドコントローラにおけるコマンド制御方法。
【請求項２１】
前記コマンドコントローラは、コマンドのアクセス対象のアドレス情報と別のアドレス情報を対応付けるマッピング情報を保持し、
前記コマンド制御方法は、さらに、
分類したコマンドのアクセス対象アドレス情報を変更するかどうかを判定するステップと、
判定結果に従い、マッピング情報に従って分類したコマンドのアクセス対象アドレス情報を別のアドレス情報に付け替えるステップを含むことを特徴とする請求項１９記載のコマンドコントローラにおけるコマンド制御方法。
【請求項２２】
前記配置情報とポリシー情報は、ＩＰネットワークを介してｉＳＣＳＩインタフェースを用いて設定することを特徴とする請求項１９記載のコマンドコントローラにおけるコマンド制御方法。
【請求項２３】
前記マッピング情報は、ディスク装置を識別する情報と論理ブロックアドレスを含むことを特徴とする請求項２１記載のコマンドコントローラにおけるコマンド制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアントのデータを格納するディスク装置に対するディスクアクセスコマンド制御方法およびディスクアクセスコマンド制御機能を備えたネットワークストレージシステムに関する。
【背景技術】
【０００２】
近年のネットワーク技術の発展によりクライアント計算機に格納すべきデータ量が飛躍的に増大している。それに伴い、ＤＡＳ（Ｄｉｒｅｃｔ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）の大容量化やネットワークに接続したストレージシステム（ネットワークストレージ）の導入が進みつつある。
【０００３】
ＤＡＳは、クライアント計算機にＳＣＳＩ等のインタフェースを用いて直接接続されたストレージデバイスである。ＤＡＳ上のデータは直接接続するクライアント計算機を介してのみアクセス可能である。
【０００４】
一方、ネットワークストレージは、ネットワークに接続したストレージシステムである。複数のクライアント計算機間でデータを共有できるため、ＤＡＳよりも効率よく共有データを管理することができる。ネットワークストレージの例としては、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）で接続されてブロックアクセスを提供するＳＡＮストレージ、ＩＰネットワークやＩｎｆｉｎｉｂａｎｄ等で接続されてブロックアクセスを提供するｉＳＣＳＩストレージ、ファイルアクセスを提供するＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）がある。
【０００５】
ＤＡＳやｉＳＣＳＩストレージにファイルを保持する場合、クライアント計算機は、まず物理的なストレージデバイス（物理ディスク）を一つ以上の論理的なディスク（パーティション）に分割し、フォーマットする必要がある。各パーティションは、クライアント計算機のＯＳ（オペレーティングシステム）がサポートするファイルシステムの形式でフォーマットされる。例えば、クライアント計算機のＯＳがＷｉｎｄｏｗｓ（登録商標）の場合は、通常ＮＴＦＳあるいはＦＡＴ形式でフォーマットされる。クライアント計算機のＯＳがＵＮＩＸ（登録商標）の場合、通常ｅｘｔ２ファイルシステムあるいはｅｘｔ３ファイルシステムの形式でフォーマットされる。これ以外のファイルシステムの形式でもＯＳがサポートしていればパーティションをその形式でフォーマットすることができる。
【０００６】
一般にファイルシステムは、ユーザのデータのほかに、システムがユーザデータを管理するために使用する情報も保持する。例えば、ＮＴＦＳ形式でパーティションをフォーマットした場合には、パーティションの中の各ディスクブロックの空き情報を管理する領域や、各ファイルの実データを書き込むためのディスクブロックのアドレスを管理する領域があらかじめ確保される。ＯＳはこれらの領域に保持される情報を使用してユーザファイルを管理する。そのため、このようなファイルシステムでは、ユーザがディスク装置に対してデータを書き込む場合に、管理データも書き込む必要がある。
【０００７】
様々なファイルシステム形式の中で、近年、ジャーナリングを行うファイルシステムが多用されてきている。ジャーナリングは、ＯＳやユーザがディスク装置に対してデータを書き込むたびにあらかじめ確保したログ領域にその履歴を記録する。障害が発生しシステムダウンした場合でもログに記録された情報を使用することで、データの消失を最小限に抑えて正常にシステムを再起動できる。ジャーナリングを行うファイルシステムでは、障害が発生しても元の状態に戻れるように、ユーザからのデータ書き込みに応答して随時ＯＳがログを記録する必要がある。
【０００８】
一般に、このようなファイルシステム形式では、ユーザデータを格納するディスク装置のディスクブロック領域と、ＯＳが使用する管理データを格納するディスク装置内のディスクブロック領域とを分けて管理する。そのため、ログを含む管理データに対するアクセスが頻発するジャーナリングファイルシステムでは、ユーザデータに対するディスクアクセスとＯＳの管理データに対するディスクアクセスが混在し、飛び飛びのディスクブロックに対するアクセスが多発する。ディスク装置は、連続したディスクブロックに対する書き込みであれば短時間でアクセスすることができるが、飛び飛びのディスクブロックに対してはアクセス時間が長くなり、その結果性能が大幅に低下してしまう。
【０００９】
このようなディスク装置に対する非効率なアクセスを最適化するための方法として、ディスク装置の持つ情報を利用してディスク装置側でディスクアクセスコマンドの実行順序を制御する技術が開示されている。
【００１０】
例えば、特許文献１には、複数のディスクアクセスコマンドを多重に受け付け、キューバッファに保持できるディスク装置において、ディスク装置がキューイングしたディスクアクセスコマンド群に対して、ヘッドの移動時間やヘッドの現在位置からコマンド開始セクタまでのディスクの回転時間を計算し、その２つの時間から待ち時間を計算し、その待ち時間が最小となるコマンドを選択して実行することで、コマンドの処理時間を短縮する技術が開示されている。
【００１１】
また、特許文献２には、複数のディスクドライブで構成するディスク装置システムにおけるコマンド処理を高速化する技術が開示されている。特許文献２では、並び替えキューと待機キューの２種類のコマンドキューを持ち、実行するコマンドは、並び替えキューから選択し、新たに入ってくるコマンドは待機キューに入れる。これにより、ＲＡＩＤのようにコマンドが複数のディスクドライブを使用する場合に、ディスクドライブの一つにアクセス待ちが発生しても、他ディスクドライブにアクセスできるようになるため、ディスクアクセス性能を改善できる。
【００１２】
さらに、特許文献３には、ディスクドライブでキューイングされたＩ／Ｏコマンドの実行順序を変更するためのスケジューリングアルゴリズムとそれを適用した装置が開示されている。この方法では、シーク時間と特定のヘッドからターゲットの物理セクタに移動するまでの時間からなるディスクアクセス時間を短縮するため、キューイングされたコマンド群に対して、ディスクコントローラが各コマンドのｅｘｐｅｃｔｅｄ  ａｃｃｅｓｓ  ｔｉｍｅを概算し、その時間が最も短いものを選択してコマンドを実行することによりディスクＩ／Ｏの平均アクセス時間を改善できる。
【特許文献１】特開平５−２７９１１号公報
【特許文献２】特開平６−２５９１９８号公報
【特許文献３】米国特許公報６５７４６７６号（ＵＳ６５７４６７６Ｂ１）
【発明の開示】
【発明が解決しようとする課題】
【００１３】
上記特許文献１及び特許文献２及び特許文献３に記載された技術では、ディスク装置に機能を追加し、リオーダキューの中のコマンド群に対して、ヘッドの移動時間やディスクの回転時間といったディスク装置の持つ情報を利用してコマンドの実行順序を制御する。
【００１４】
先に述べたように、ＤＡＳやＮＡＳはますます大容量化している。しかしながら、上記特許文献１及び特許文献２及び特許文献３では、ディスク装置が大容量になるほど、リオーダするコマンド群がアクセス対象とするディスクブロックが広範囲となり、リオーダ処理の効率が悪くなる。
【００１５】
これを解決するために、コマンドのリオーダ対象アドレスの範囲を限定するコマンド制御方法が必要である。
【００１６】
また、上記特許文献１及び特許文献２及び特許文献３では、コマンドの実行順序を制御するためにディスク装置に機能を追加する必要があり、汎用的なディスク装置を用いたＮＡＳに適用するのが難しい。
【００１７】
これを解決するために、ディスク装置に特別な機能を持たなくてもコマンドの実行順序を最適化できるコマンド制御方法が必要である。
【００１８】
さらに、上記特許文献１及び特許文献２及び特許文献３では、ディスク装置に機能を追加するため、ディスク装置が複数存在する場合には、複数のディスク装置に跨った広範囲の最適化ができず、コマンド処理効率が悪い。
【００１９】
これを解決するため、ディスク装置が複数存在する場合に、複数のディスク装置に跨ってコマンドの実行順序を最適化するコマンド制御方法が必要である。
【００２０】
本発明の第１の課題は、ディスクアクセスコマンドの実行順序を最適化するため、ディスクアクセスコマンドの対象となるアドレス範囲を限定できるコマンド制御方法を提供することにある。
【００２１】
本発明の第２の課題は、ディスク装置に特別な機能を持たせずに、ディスクアクセスコマンドの実行順序を最適化できるコマンド制御方法を提供することにある。
【００２２】
本発明の第３の課題は、ディスク装置が複数存在する場合に、複数のディスク装置に跨ってディスクアクセスコマンドの実行順序を最適化できるコマンド制御方法を提供することにある。
【課題を解決するための手段】
【００２３】
本発明の第１の課題は、クライアントからのファイルアクセス要求を受け付ける要求受付手段と、その要求をディスクアクセスコマンドに変換するファイルシステム制御手段を含む、一つ以上のディスク装置が接続するネットワークストレージシステムに、ファイルシステム制御手段が変換したディスクアクセスコマンドを受け付け、ファイルシステム制御手段が管理する配置情報を用いてディスクアクセスコマンドを分類し、分類したコマンド毎にコマンドの送出順序を最適化するコマンドコントローラを設けることで解決できる。
【００２４】
本発明の第２の課題は、ディスクアクセスコマンドを分類するために、ファイルシステム制御手段が作成するディスクアクセスコマンドに特別な情報を埋め込むのではなく、ファイルシステム制御手段が管理する配置情報を記録するアドレス管理テーブルと、分類したディスクアクセスコマンドをどのように送出するかを制御する情報を記録するポリシーテーブルと、それらの情報をテーブルに登録するための手段を設けることで解決できる。
【００２５】
本発明の第３の課題は、第１及び２の課題を解決する手段に加えて、複数のディスク装置が接続するネットワークストレージシステムのコマンドコントローラに、さらに、ディスクアクセスコマンドの対象アドレス情報と再配置先のアドレス情報の対応関係を記録するマッピングテーブルとマッピング手段を設けることで解決できる。
【００２６】
一つ以上のディスク装置が接続するネットワークストレージシステムにおいて、要求受付手段がクライアントからのファイルアクセス要求を受け付け、ファイルシステム制御手段がそのファイルアクセス要求をディスクアクセスコマンドに変換し、コマンドコントローラが、ファイルシステム制御手段が管理する情報を利用してディスクアクセスコマンドを分類して、分類したコマンド毎にその送出順序を変更できるため、コマンドのアクセス対象のアドレス範囲を限定して効率よくコマンドの送出順序を最適化できる。
【００２７】
また、一つ以上のディスク装置が接続するネットワークストレージシステムにおいて、ファイルシステム制御手段が管理する配置情報をコマンドコントローラに設けたアドレス管理テーブルに記録し、さらにコマンドの送出順序を制御するための情報をコマンドコントローラに設けたポリシーテーブルに記録するため、ファイルシステム制御手段から送出されるディスクアクセスコマンドに特別な情報を付加することなく、ディスクアクセスコマンドを分類して効率よくコマンドの送出順序を最適化できる。
【００２８】
さらに、一つ以上のディスク装置が接続するネットワークストレージシステムにおいて、特定のディスクアクセスコマンドのアクセス対象アドレス情報を別のアドレス情報に変更するための対応関係をマッピングテーブルに記録し、コマンドコントローラのコマンド選択手段がマッピングテーブルを利用してディスクアクセスコマンドのアドレスを付け替えることができるため、広範囲にわたって効率よくコマンドの送出順序を最適化できる。
【発明の効果】
【００２９】
一つ以上のディスク装置が接続するネットワークストレージシステムにおいて、コマンドコントローラが、ファイルアクセス制御手段が管理する情報を利用してディスクアクセスコマンドを分類し、分類したディスクアクセスコマンド毎に送出順序を変更することができる。これにより、ディスクアクセスコマンドを最適化するためのアドレス範囲を限定して効率よくコマンドの送出順序を最適化することができる。その結果、ディスクアクセス時間を削減できる。
【００３０】
また、一つ以上のディスク装置が接続するネットワークストレージシステムにおいて、コマンドコントローラに、ファイルアクセス制御手段が管理する情報を保持するため、コマンドコントローラがこの情報を利用することができる。これにより、ディスクアクセスコマンドに特別な情報を付加しなくてもコマンドコントローラにおいて、ディスクアクセスコマンドを分類できる。その結果、汎用のディスク装置を使用できるようになる。
【００３１】
さらに、一つ以上のディスク装置が接続するネットワークストレージシステムにおいて、コマンドコントローラにディスクアクセスコマンドがアクセス対象とするアドレスを変換するためのマッピングテーブルを持つことで、複数のディスク装置に跨って、コマンドの送出順序を最適化することができる。
【発明を実施するための最良の形態】
【００３２】
＜代表的実施の形態＞
図１に本発明の実施の形態であるネットワークストレージシステムの全体の構成例を示す。ネットワークストレージシステムを含む情報処理システムは、クライアント１００〜１０１、ネットワーク１０２、ネットワークストレージシステム１０３で構成する。本実施の形態では、クライアント１００〜１０１がネットワークストレージシステム１０３を使用してファイル共有を行っている場合に、ディスク装置に対して送出するコマンドの順序を最適化する方法について詳細に説明する。
【００３３】
クライアント１００〜１０１は、ＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）クライアントプログラムあるいはＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）を介して、ネットワーク１０２経由で、ネットワークストレージシステム１０３にアクセスする。ここで、クライアントとしてＮＦＳとＣＩＦＳのみを例に採ったが、これ以外の標準的なファイルアクセスプロトコルを利用してもよい。その他のファイルアクセスプロトコルとしては、ＡＦＰ（Ａｐｐｌｅ  Ｆｉｌｅ  Ｐｒｏｔｏｃｏｌ）やＮＣＰ（Ｎｅｔｗａｒｅ  Ｃｏｒｅ  Ｐｒｏｔｏｃｏｌｓ）等がある。
【００３４】
ネットワーク１０２は、ＩＰネットワークであれば、ローカルエリアネットワーク（ＬＡＮ）でも、ワイドエリアネットワーク（ＷＡＮ）でもよい。
【００３５】
ネットワークストレージシステム１０３は、システム制御部１０４と、コマンドコントローラ１１２、ディスク装置１１３で構成する。
【００３６】
システム制御部１０４とコマンドコントローラ１１２間、コマンドコントローラ１１２とディスク装置１１３間は、標準的なディスクアクセスインタフェースをやり取りする。具体的には、ＳＣＳＩインタフェースを用いて、ＳＣＳＩコマンドをやり取りする。
【００３７】
システム制御部１０４は、要求受付手段１１０とファイルシステム制御手段１１１を含む。システム制御部１０４は、専用装置であってもよいし、汎用サーバ、ワークステーション、あるいはパーソナルコンピュータなどでもよい。ＯＳを搭載する標準的な計算機であればどれでもよい。本発明の実施の形態では、要求受付手段１１０とファイルシステム制御手段１１１はＯＳに内蔵されているものとする。要求受付手段１１０およびファイルシステム制御手段１１１の詳細については後述する。
【００３８】
ディスク装置１１３はディスクアクセスコマンドを受け付けるコマンドインタフェースを持ち、データの読み書きを行う。これはディスクアクセスのための標準的なインタフェースを持つものであればなんでもよい。ディスクアクセスのための標準的なインタフェースとしては、例えばＳＣＳＩインタフェースがある。本発明の実施の形態では、ディスク装置１１３はＳＣＳＩインタフェースを持つ。ディスク装置１１３に対する読み書きはＳＣＳＩコマンドを用いて行う。ＳＣＳＩコマンドは、読み出し・書き込み等の命令を示すコマンド部分と、そのコマンドがアクセス対象とするディスク装置の位置を示すアドレス部分から構成される。アドレス部分は、ＬＵＮと論理ブロックアドレス（ＬＢＡ）を含む。ディスク装置は、上位から転送されてくるＳＣＳＩコマンドの論理ブロックアドレスを解析し、論理ブロックアドレスをディスクの物理アドレス（シリンダやセクタやトラック）に変換して、データの読み書きを行う。
【００３９】
要求受付手段１１０は、クライアント１００〜１０１からのマウント要求を処理する。また要求受付手段１１０は、クライアント１００〜１０１からのファイルアクセス要求を受け付け、そのファイルアクセス要求をファイルシステム制御手段１１１に転送する。マウントとは、ネットワークを介してアクセスするネットワークストレージシステムのファイルシステムをクライアント計算機のファイルシステムの一部分にする処理である。例えば、ＣＩＦＳクライアントの場合、マウント処理とは、ネットワークストレージシステム１０３のファイルシステムをクライアント計算機のネットワークドライブに割り当てることである。マウント処理により、クライアントはネットワーク上に分散するストレージ装置をあたかもクライアントのローカルファイルシステムのようにアクセスできる。本実施の形態では、クライアント１００〜１０１は、前述のＮＦＳプロトコルあるいはＣＩＦＳプロトコルを用いて、要求受付手段１１０にアクセスする。要求受付手段１１０におけるＮＦＳプロトコルあるいはＣＩＦＳプロトコルを使用したファイルアクセスは、公知の技術を用いて実現できるため、ここでは詳細には説明しない。
【００４０】
ファイルシステム制御手段１１１は、要求受付手段１１０から受け取ったファイルアクセス要求を解析し、ディスク装置１１３が解釈可能なディスクアクセスコマンドに変換する。本発明では、ＳＣＳＩインタフェースを使用しているため、ファイルシステム制御手段１１１はファイルアクセス要求をＳＣＳＩコマンドに変換する。また、ファイルシステム制御手段１１１は、ネットワークストレージシステムが搭載するＯＳがサポートするファイルシステム形式でディスク装置１１３のフォーマット処理も行う。これらの処理は、公知の技術であるため詳細には説明しない。
【００４１】
ＵＮＩＸ（登録商標）系のＯＳとしては、サン・マイクロシステムズ社のＳｏｌａｒｉｓ、インターナショナル・ビジネス・マシーン社（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎ）のＡＩＸ、ヒューレット・パッカード社（Ｈｅｗｌｅｔｔ−Ｐａｃｋａｒｄ  Ｃｏｍｐａｎｙ）のＨＰ―ＵＸ、Ｌｉｎｕｘ、及び、ＦｒｅｅＢＳＤ等がある。各ＯＳは、複数のファイルシステム形式をサポートする。ＵＮＩＸ系のＯＳがサポートするファイルシステム形式としては、ｅｘｔ２やｅｘｔ３がある。また、Ｗｉｎｄｏｗｓ（登録商標）系のＯＳがサポートするファイルシステム形式としては、ＦＡＴやＮＴＦＳ等がある。そのほかにも、ＸＦＳやＪＦＳやＲｅｉｓｅｒＦＳのようなファイルシステム形式もある。これらファイルシステム形式でディスク装置をフォーマットすることにより、ディスク装置１１３においてファイルの読み書きができるようになる。
【００４２】
コマンドコントローラ１１２は、システム制御部１０４から転送される複数のディスクアクセスコマンドを受け付け、ファイルシステム制御手段１１１が管理するファイルの配置情報を利用してそれらを分類し、分類に従ってディスクアクセスコマンド群を効率よくディスク装置１１３に転送する。コマンドコントローラ１１２、およびその分類方法、選択方法が本発明で特徴となる部分である。システム制御部１０４から転送されるコマンドは、システム制御部１０４上で稼動するアプリケーションが直接発行する場合もあれば、先に説明したようにファイルシステム制御手段１１１から転送される場合もある。また、本発明の実施の形態では、ディスクアクセスコマンドはＳＣＳＩコマンドとする。
【００４３】
コマンドコントローラ１１２は、コマンド分類手段１２０、コマンド選択手段１２１、アドレス更新手段１２２、テーブル設定手段１２３、アドレス管理テーブル１３０、ポリシーテーブル１３１、コマンドバッファ１３２で構成する。
【００４４】
コマンド分類手段１２０は、システム制御部１０４からディスクアクセスコマンドを受け付け、アドレス管理テーブル１３０の内容に従ってディスクアクセスコマンドを分類する。コマンド分類手段１２０の詳細については後述する。また、アドレス管理テーブル１３０の詳細についても後述する。
【００４５】
コマンド選択手段１２１は、ポリシーテーブル１３１の内容に従い、コマンドバッファ１３２に保持したディスクアクセスコマンド群から特定のディスクアクセスコマンドを選択し、ディスク装置１１３に送出する。ポリシーテーブル１３１の詳細およびコマンド選択手段１２１の詳細については後述する。
【００４６】
アドレス更新手段１２２は、一定時間毎に、ファイルシステム制御手段１１１が管理するファイルの配置情報を調査し、アドレス管理テーブル１３０の内容を更新する。アドレス更新手段１２２の詳細については後述する。
【００４７】
テーブル設定手段１２３は、テーブルの初期化を行う。具体的にはコマンド分類手段１２０の分類対象項目をアドレス管理テーブル１３０に設定する。また、テーブル設定手段１２３は、ポリシーテーブル１３１にポリシーを設定する。ファイルシステム制御手段１１１がディスク装置をフォーマットするときに自動的に分類項目やポリシーが設定されるように、特別なコマンドシーケンスを用意してもよいし、管理者がコンソールやＷｅｂサーバ経由でアドレス管理テーブル１３０に値を設定できるようにしてもよい。Ｗｅｂサーバ経由の場合、例えばコマンドコントローラ１１２にＡｐａｃｈｅのようなＷｅｂサーバを搭載し、クライアントがＷｅｂブラウザを使用して分類項目を設定すればよい。また、ポリシーテーブル１３１に設定する値は、ディスク装置１１３の性能や使用方法に合わせて調整すればよい。
【００４８】
アドレス管理テーブル１３０は、システム制御部１０４のファイルシステム制御手段１１１が管理する配置情報を利用して、特定のファイル群とディスクアクセスコマンドに含まれる論理ブロックアドレスの対応関係を記録する。アドレス管理テーブル１３０は、コマンド分類手段１２０により参照され、アドレス更新手段１２２により更新される。ファイルシステム制御手段１１１は、各ファイルをディスク装置１１３に格納するために、各ファイルのデータがどの論理ブロックアドレスに配置されているかという配置情報を管理している。そこで、この配置情報をアドレス管理テーブル１３０に記録する。例えば、大容量のファイル群をユーザが使用するファイルとシステムが使用する管理ファイルという２種類に分類する場合には、ユーザが使用するファイルが配置される論理ブロックアドレスの範囲とシステムが使用するファイルが配置される論理ブロックアドレスの範囲を記録する。図２にアドレス管理テーブル１３０の構造を示す。２０１の行は、コマンド分類識別子を示す。コマンド分類識別子は、分類対象項目毎に一意な値である。ここでは、ＣＩＤ＝０はユーザが使用するファイルに対してアクセスするコマンドを表わし、ＣＩＤ＝１はシステムが使用するファイルに対してアクセスするコマンドを表わす。２０２の行は、コマンド分類識別子に属するディスクアクセスコマンドがアクセスする可能性のある論理ブロックアドレスの最小値ＭＩＮを示す。２０３の行は、コマンド分類の識別子に属するディスクアクセスコマンドがアクセスする可能性のある論理ブロックアドレスの最大値ＭＡＸを示す。図２の例では、ＣＩＤ＝０に分類されるコマンドはアドレス０から９９９の範囲にアクセスし、ＣＩＤ＝１に分類されるコマンドはアドレス１０００から２００００の範囲にアクセスする。本発明の実施の形態では、コマンド分類項目を２つ設定するためコマンド分類識別子を２つ設け、ユーザファイル群とシステムファイル群という分類でテーブルに記録をしたが、ユーザファイル群をより詳細に分類し、特定ユーザのファイルを配置する論理ブロックアドレスの範囲を記録してもよい。あるいはログファイルのような特定のシステムファイルを配置する論理ブロックアドレスの範囲を記録してもよい。さらに、プライオリティの高いファイル群とそれらを配置した論理ブロックアドレスの範囲の対応関係を記録してもよい。また、本発明の実施の形態のように、分類対象項目が２つしかないような場合には、いずれか一方の論理ブロックアドレスの範囲のみを記録してもよい。また、本発明の実施の形態では、各コマンド分類識別子の属するアドレス範囲を一組の最小値と最大値で表わしたが、各識別子に対して、複数の最小値と最大値の組み合わせを記録してもよい。このようにファイルシステム制御手段１１１が管理する配置情報を利用することにより、コマンドコントローラ１１２が、ディスクアクセスコマンドに含まれる論理ブロックアドレスから、そのディスクアクセスコマンドのアクセス対象ファイルを特定することができる。アドレス管理テーブル１３０の登録方法および更新方法については後述する。
【００４９】
ポリシーテーブル１３１は、コマンド選択手段１２１により参照され、テーブル設定手段１２３により設定される。ポリシーテーブル１３１は、分類したディスクアクセスコマンド群のディスク装置への送出単位を記録する。送出単位は、時間であってもよいし、個数であってもよい。図３にポリシーテーブル１３１の構造を示す。ポリシーテーブル１３１では、コマンド分類識別子毎にコマンド選択ポリシーを設定する。本発明の実施の形態におけるコマンド選択ポリシーは、最大送出単位ＣＭＡＸ、最大経過時間ＴＭＡＸ、重み付けとする。３０２の行は、最大送出単位ＣＭＡＸを示す。図３では、ＣＩＤ＝０の場合、最大５個までコマンドを連続して送出する。ＣＩＤ＝１の場合、最大３個まで、コマンドを連続して送出する。３０３の行は、最大経過時間ＴＭＡＸを示す。特定のコマンドバッファを選択してから、最大ＴＭＡＸ経過したら、コマンドバッファを選択しなおす。３０４の行は、重み付けである。複数のコマンドバッファを、どのように選択するかを示す。図３の場合、重み付けが１対１で設定されているため、ＣＩＤ＝０に対応するコマンドバッファとＣＩＤ＝１に対応するコマンドバッファを均等に選択する。本発明の実施の形態では、コマンド分類識別子ＣＩＤごとにポリシーを設定したが、複数のコマンド分類識別子で同じポリシーを設定してもよい。また、本発明では、３つのポリシーを設定したが、それ以外のポリシーを設定してもよい。設定するポリシーはディスク装置の性能やネットワークストレージシステム上で稼動するアプリケーションの性質に合わせて設定すればよい。
【００５０】
コマンドバッファ１３２は、コマンド分類手段１２０が分類したディスクアクセスコマンド群を保持する。コマンドバッファ１３２は、複数面用意し、各面をコマンド分類識別子に対応させ、コマンド分類識別子に対応するコマンドを登録する。本発明の実施の形態では、コマンド分類手段１２０が分類したコマンドがコマンド分類識別子ＣＩＤ＝０に属する場合、コマンドバッファ１４０に登録し、コマンド分類識別子ＣＩＤ＝１に属する場合、コマンドバッファ１４１に登録する。本発明の実施の形態では、コマンドバッファ１３２をコマンドバッファ１４０およびコマンドバッファ１４１のように複数面用意したが、複数面用意しなくてもよい。コマンド分類手段１２０がディスクアクセスコマンドを識別できる方法であれば、どのような方法でもよい。
【００５１】
次に、図４を用いてコマンド分類手段１２０の詳細について説明する。コマンド分類手段１２０は、アドレス解析部４０１、アドレス比較部４０２、バッファ登録部４０３で構成する。アドレス解析部４０１はシステム制御部１０４から受け付けたディスクアクセスコマンドを解析し、アドレス情報を抽出する。より具体的には、論理ブロックアドレスを抽出する。アドレス比較部４０２は、アドレス解析部４０１で抽出した論理ブロックアドレスと、アドレス管理テーブル１３０に登録された論理ブロックアドレスを比較し、コマンド分類識別子を特定する。バッファ登録部４０３は、アドレス比較部４０２で特定したコマンド分類識別子に対応するコマンドバッファにコマンドを登録する。
【００５２】
次に、図５を用いてコマンド選択手段１２１の詳細について説明する。コマンド選択手段１２１は、バッファ選択部５０１、コマンド送出判定部５０２、コマンド選択部５０３、コマンド送出部５０４、送出カウンタ５１０で構成する。
【００５３】
バッファ選択部５０１は、ポリシーテーブル１３１を参照してコマンドバッファ１３２のいずれかの面を選択する。コマンド送出判定部５０２は、選択したコマンドバッファが空か、あるいは一定時間が経過したか、あるいは送出カウンタ５１０の値Ｃｎｔがポリシーテーブル１３１に設定されているＣｍａｘに到達したかどうかを判定する。送出カウンタ５１０については後述する。コマンド選択部５０３は、バッファ選択部５０１で選択したコマンドバッファに保持したコマンド群から、コマンドを選択する。例えば、論理ブロックアドレスが連続するような順番に選択する。あるいは同じ論理ブロックアドレスに対する複数の書き込みコマンドが存在する場合、後のコマンドのみディスク装置に転送するといった最適化も行うことも考えられる。コマンド送出部５０４は、コマンド選択部５０３で選択したコマンドをディスク装置に対して送出する。
【００５４】
送出カウンタ５１０は、コマンドバッファを選択した後、ディスク装置に送出したコマンド数を管理する。このカウンタは、コマンドバッファが選択されると初期化され、選択したコマンドバッファに登録されているコマンドをディスク装置に送出するたびに、インクリメントされる。コマンドバッファに多くのコマンドが登録されている場合には、ポリシーテーブル１３１のＣＭＡＸに登録された数だけ、連続してディスク装置に送出することができる。
【００５５】
次に、コマンドコントローラ１１２が行うコマンド制御処理について説明する。コマンド制御処理は、コマンド分類処理とコマンド選択処理からなる。コマンド分類処理とコマンド選択処理は、並列に動作する。
【００５６】
図６にコマンド分類処理フローを示す。コマンドコントローラ１１２はシステム制御部１０４からディスクアクセスコマンドを受け付けると、コマンド分類手段１２０を呼びだす。プロセス６０２では、システム制御部１０４から受け付けたディスクアクセスコマンドを解析し、アドレス情報、本発明の実施の形態では論理ブロックアドレスを抽出する。次に、プロセス６０３では、アドレス管理テーブル１３０に設定されたアドレス範囲と、抽出した論理ブロックアドレスを比較する。そして、プロセス６０４において、そのディスクアクセスコマンドがどのコマンド分類識別子に属するかを特定する。最後に、プロセス６０５において、そのディスクアクセスコマンドをコマンドバッファ１３２のコマンド分類識別子に対応するバッファに登録する。ＣＩＤ＝０であれば、コマンドバッファ１４０に登録し、ＣＩＤ＝１であれば、コマンドバッファ１４１に登録する。
【００５７】
コマンド選択手段１２１はコマンドコントローラ１１２に常駐している。図７にコマンド選択処理フローを示す。プロセス７０２において、ポリシーテーブル１３１に設定された内容に従って、コマンドバッファ１３２のいずれかの面を選択する。例えば、図３に示すポリシーテーブル１３１では、コマンドバッファを均等に選択するように重み付けされているため、最初にＣＩＤ＝０に属するコマンドバッファ１４０を選択する。そして、プロセス７０３において、そのバッファから連続していくつのコマンドを送出したかを示す送出カウンタ５０１に０をセットする。そして、経過時間を測定するためのタイマーをスタートする。プロセス７０４では、選択したコマンドバッファが空か、あるいは一定時間が経過したか、あるいは送出カウンタ５１０の値ＣｎｔがＣｍａｘに到達したかどうかを判定する。これらの条件のいずれかが成立した場合には、プロセス７０２に戻って、バッファを選択しなおす。
【００５８】
これらの条件が成立しない場合には、プロセス７０５において選択したバッファからコマンドを選択する。最も簡単な選択方法は、ＦＩＦＯ形式でコマンドを選択する。あるいは、コマンドのアクセス対象の論理ブロックアドレスが連続になるように順序を入れ替えて選択してもよい。
【００５９】
そしてプロセス７０６では、そのディスクアクセスコマンドをディスク装置に対して送出する。最後に、プロセス７０７において送出カウンタ５１０の値Ｃｎｔをインクリメントしてプロセス７０４に戻る。
【００６０】
次に、アドレス更新手段１２２におけるアドレス管理テーブル１３０の更新処理について説明する。ディスク装置１１３をフォーマット直後は、システムが管理するファイルも少なく、またユーザファイルもない状態である。ところが、クライアントがネットワークストレージシステム１０３を使い続けていくと、ディスク装置１１３に保持されるユーザファイルの数も増大し、それに伴いユーザファイルを管理するシステムファイルやそのためのディスク領域も増大する。それにより、アドレス管理テーブル１３０に登録した論理ブロックアドレスの範囲が異なってくる。テーブル更新手段１２２は、一定時間毎にアドレス管理テーブル１３０の登録内容を更新する。
【００６１】
更新にあたっては、３つの方法が考えられる。第１の方法は、ファイルシステム制御手段１１１に問い合わせる方法である。この方法は、ファイルシステム制御手段１１１が管理する情報がどこにあるかが分からない場合に使用する。ファイルシステム制御手段１１１とアドレス更新手段１２２のそれぞれに問い合わせを行うためのエージェントを用意する。アドレス更新手段１２２は、一定時間毎にファイルシステム制御手段１１１に管理情報を問い合わせ、問い合わせの結果、ファイルシステム制御手段１１１がそのときのファイル群とアドレスの対応関係をアドレス更新手段１２２に通知する。アドレス更新手段１２２は、その情報を利用してアドレス管理テーブル１３０の登録内容を更新する。第２の方法は、あらかじめファイルシステム制御手段１１１が管理情報を置いておく論理ブロックアドレスが分かっている場合に使用する。アドレス更新手段１２２が一定時間毎に、ファイルシステム制御手段１１１が管理情報を配置するディスク領域に直接アクセスし、データを読み出す。第３の方法は、ファイルシステム制御手段１１１に機能を追加し、ファイルシステム制御手段１１１が管理するファイルの配置情報が変わるたびに、アドレス更新手段１２２にその変更を通知する方法である。その他、管理者がファイルシステム制御手段１１１にアクセスしてアドレス範囲を調査し、その結果を手動でアドレス管理テーブル１３０に設定することも可能である。アドレス更新手段１２２が、ファイルシステム制御手段１１１が管理する論理ブロックアドレスの範囲が変更になったことを知る方法であれば、いずれの方法でもよい。
【００６２】
次に、本実施の形態におけるコマンド制御処理全体の流れについて図１、図２、図３、図６、図７を用いて説明する。アドレス管理テーブル１３０、ポリシーテーブル１３１、マッピングテーブル、コマンドバッファ１３２はネットワークストレージシステム１０３構築時にあらかじめ初期化する。アドレス管理テーブル１３０には初期値として、システムが使用する領域とユーザが使用する領域の２種類を設定し、ディスク装置１１３がファイルシステム制御手段１１１によりフォーマットされた後、コマンド分類識別子に対応するアドレス範囲があらかじめ設定されるようにする。ポリシーテーブル１３１にもあらかじめ図３に示すポリシーを設定する。これらの情報は、ネットワークストレージシステム１０３の構築時に、テーブル設定手段１２３を介してアドレス管理テーブル１３０に設定する。
【００６３】
図１のクライアント１００および１０１がいくつかのファイルに対して書き込みを行っている状況を想定する。クライアント１００および１０１にファイルを書き込むと、要求受付手段１１０がファイルアクセス要求を受け付け、ファイルシステム制御手段１１１がその要求をディスクアクセスコマンドに変換して、コマンドコントローラ１１２に送出する。図８にファイルシステム制御手段１１１から送出されるディスクアクセスコマンドの例を示す。ディスクアクセスコマンドは、ディスクアクセス命令と論理ブロックアドレス（１０進表示）とデータサイズを含む。ここでは、ファイルシステム制御手段１１１から連続して６個のディスクアクセスコマンドが転送されてきた例について説明する。
【００６４】
コマンド分類手段１２０はファイルシステム制御手段１１１から送出されたディスクアクセスコマンドを１番目（８０１）から順次受け取り、コマンド分類処理を開始する。次に図６を用いて、コマンド分類処理を説明する。コマンド分類処理では、プロセス６０２で１番目のディスクアクセスコマンド８０１を解析し、コマンド８０１の論理ブロックアドレス「６４０」を抽出する。プロセス６０３では、アドレス管理テーブル１３０に設定されたアドレスと抽出したコマンドアドレスを比較する。コマンドのアドレスは「６４０」であるため、コマンド分類識別子はＣＩＤ＝０となる。次に、プロセス６０５においてＣＩＤ＝０に属するコマンドバッファ１４０にこのコマンドを登録する。２番目以降のコマンドも同様に処理をする。その結果、コマンドバッファ１４０には、＃１（コマンド８０１）、＃３（コマンド８０３）、＃５（コマンド８０５）のコマンドが登録され、コマンドバッファ１４１には、＃２（コマンド８０２）、＃４（コマンド８０４）、＃６（コマンド８０６）が登録される。
【００６５】
コマンド選択手段１２１は、まず図７のプロセス７０２で、ＣＩＤ＝０のコマンドを保持するコマンドバッファ１４０を選択する。プロセス７０３では、送出カウンタ５１０を初期化し、あわせてコマンドバッファを選択している経過時間を測定するタイマーをスタートする。プロセス７０４では、条件が成立するかどうかを判定する。タイマーの値は０、コマンドバッファ１４０は空でなく、送出カウンタ５１０の値はＣＭＡＸの値よりも小さいため、条件判定は“ＮＯ”となる。次にプロセス７０５において、コマンドバッファ１４０に登録されたコマンドから一つを選択する。コマンドがＦＩＦＯ形式で選択される場合には、＃１（コマンド８０１）が選択される。プロセス７０６では、コマンド８０１をディスク装置に送出して、プロセス７０７で送出カウンタ５１０の値を１にインクリメントしプロセス７０４に戻る。
【００６６】
プロセス７０４では、選択したコマンドバッファ１４０にまだコマンドがあるため、条件判定が“ＮＯ”となり、プロセス７０５で＃３（コマンド８０３）が選択される。そして、コマンド８０３はプロセス７０６でディスク装置に送出され、プロセス７０７では、送出カウンタ５１０の値が２にインクリメントされる。
【００６７】
同様に＃５（コマンド８０５）がディスク装置に送出され、プロセス７０４では、コマンドバッファが空となる。その結果、条件判定が“ＹＥＳ”となり、プロセス７０２を行う。
【００６８】
プロセス７０２では、図３に示したポリシーテーブル１３１の重み付けでは、バッファ選択は均等であるため、次にコマンドバッファ１４１が選択される。そして、プロセス７０３において、送出カウンタ５１０に０をセットし、経過時間を計測するタイマーを開始する。プロセス７０４では、先の説明と同じように、最初は条件が成立しないため、条件判定の結果“ＮＯ”となり、プロセス７０５ではコマンドバッファ１４１から＃２（コマンド８０２）を選択する。そして、プロセス７０６では、コマンドをディスク装置に送出し、プロセス７０７で送出カウンタ５１０の値を１に増加する。そして、プロセス７０４の条件判定に戻る。
【００６９】
同様に、＃４（コマンド８０４）と＃６（コマンド８０６）をディスク装置１１３に送出して、処理待ち状態となる。これらの処理の結果、ディスク装置は、＃１（コマンド８０１）、＃３（コマンド８０３）、＃５（コマンド８０５）、＃２（コマンド８０２）、＃４（コマンド８０４）、＃６（コマンド８０６）の順序でデータの書き込みを行えるようになり、ディスクアクセスを効率よく行える。
【００７０】
（実施の形態の変形例１）
上述した代表的実施の形態では、ディスク装置が一つの場合について、ファイルシステム制御手段が管理するアドレス情報を用いて、ディスクアクセスコマンドの送出順序を制御する方法について説明した。
【００７１】
ジャーナリングファイルシステムを使用するような場合、システムが管理する特定のファイル、例えばログファイル、への書き込みが頻発する。代表的実施の形態では、システムが管理する情報を保持するディスク領域へのアクセスとユーザファイルを保持するディスク領域へのアクセスを分類することで、アクセスのローカリティを高め、ディスク装置に対するアクセスを効率よく行えるようにした。しかしながら、同一のディスク装置に対するアクセスの場合、書き込みが逐次化されてしまう。そこで、変形例１では、ログファイルのみを別のディスク装置に書き込むことにより、ディスク装置をより効率よく使用できるようにする。
【００７２】
図９に変形例１におけるネットワークストレージシステムの全体構成を示す。変形例１では、ネットワークストレージシステム１０３が複数のディスク装置（ディスク装置９１３およびディスク装置９１４）を備え、コマンドコントローラ９１２にマッピングテーブル９３３とマッピング手段９２４を備えることが、代表的実施の形態とは異なる部分である。また、コマンド選択手段９２１における処理も、代表的実施の形態とは異なる。さらに、ネットワークストレージシステム１０３に複数のディスク装置を備えるため、アドレス管理テーブル９３０を、複数のディスク装置を識別するための装置識別子に対応して持つことも代表的実施の形態とは異なる。ディスク装置対応にコマンド選択ポリシーを変更する場合には、ポリシーテーブル９３１を装置識別子対応に持てばよい。あるいは、装置識別子とコマンド分類識別子ＣＩＤの組み合わせ毎にアドレス管理テーブル９３０あるいはポリシーテーブル９３１の値を設定してもよい。
【００７３】
マッピングテーブル９３３は、特定のファイルのみを別のディスク装置に配置する場合や、ディスクアクセスコマンドのアクセス対象データを別のアドレスに再配置する場合に使用する。ディスクアクセスコマンドのアクセス対象データを別の論理ブロックアドレスに再配置する場合とは、ディスク装置にフラグメンテーションが発生しているような状況で、フラグメンテーションを解消する場合に相当する。マッピングテーブル９３３は、元のアドレスと再配置先のアドレスの対応関係を記録する。アドレスには、装置識別子と論理ブロックアドレスを含む。装置識別子は、複数のディスク装置を識別する情報である。変形例１では、ディスク装置が２台の場合について説明したが、ディスク装置が１台の場合、装置識別子を記録しなくてもよい。また３台以上の場合は、台数に対応した識別子を記録すればよい。
【００７４】
マッピング手段９２４は、マッピングフラグ９５０とマッピングアドレス９５１を含む。マッピング手段９２４は、ディスクアクセスコマンドがアクセス対象とするディスクアドレスを別のアドレスに変更する場合に、マッピングフラグ９５０に１を設定し、マッピングアドレス９５１あるいはマッピングテーブル９３３に値を設定する。マッピングアドレス９５１は、特定のファイルの保管されているディスクアドレスを別のアドレスに変更する場合や、特定の分類に属するファイル全てを別のアドレスにシフトする場合に使用する。マッピングテーブル９３３は、ディスクアドレスの使用状況に応じて、再配置先アドレスを柔軟に変更する場合に使用する。例えば、特定のファイルにアクセスするディスクアクセスコマンド全てを再配置する場合には、再配置先の初期論理ブロックアドレスと装置識別子をマッピングアドレス９５１に設定すればよい。
【００７５】
マッピングフラグ９５０およびマッピングアドレス９５１は、ネットワークストレージシステム構築時にあらかじめ設定されるようにしてもよいし、運用後、クライアント計算機やコンソールを利用して管理者が設定できるようにしてもよい。ネットワークストレージシステム構築時にあらかじめ設定する場合には、ファイルシステム制御手段１１１がディスク装置９１３および９１４をフォーマットする場合に、フォーマット時のオプションメニューとして選択し設定できるようにし、管理者がオプションメニューを選択した場合に、コマンドコントローラ９１２のマッピングフラグ９５０およびマッピングアドレス９５１に値が設定されるようにしてもよい。この場合、独自のインタフェースを用いて設定してもよいし、Ｗｅｂインタフェースを用いて設定できるようにしてもよい。クライアント計算機からコマンドコントローラ９１２に値を設定する方法であれば、どんな方法を用いてもよい。
【００７６】
マッピング手段９２４を用いて、マッピングテーブル９３３に値を設定する場合、再配置先のディスク装置の使用状況を知る必要がある。ディスク装置の使用状況は、オンデマンドあるいは一定時間ごとにファイルシステム制御手段１１１に問い合わせるか、ディスク装置の使用状況を管理するディスク領域を直接読み出すことにより知ることができる。ファイルシステム制御手段１１１は、通常、ディスク装置９１３および９１４の空き情報を、ディスク装置９１３および９１４の特定のアドレス範囲で管理する。そこで、そのアドレス範囲にあるデータを読み出すことにより、それぞれのディスク装置の空き情報を知ることができる。マッピング手段９２４は、受け付けたディスクアクセスコマンドの対象アドレスを再配置する場合には、まず、再配置先のディスク装置の空き情報を調査する。マッピングテーブル９３３は元のアドレス情報と再配置先のアドレス情報を管理できれば、どのように設定してもよい。再配置のポリシーとしては、特定の分類に属する書き込み系のディスクアクセスコマンドのディスクアクセス対象アドレスが連続になるように設定してもよいし、ディスクアクセスコマンドのアクセス履歴を記録しておき、離れたディスク領域に対するアクセスが特定のパターンで発生するかどうかをチェックし、そのような場合にアドレス情報を変更するようにマッピングテーブル９３３に値を設定してもよい。
【００７７】
図１０に変形例１におけるコマンド選択手段９２１の構成を示す。変形例１では、コマンド選択手段９２１は、代表的実施の形態におけるコマンド選択手段１２１の構成要素に加えて、マッピング判定部１０００とコマンド再構築部１００１を含む。
【００７８】
マッピング判定部１０００は、マッピングフラグ９５０をチェックし、マッピング変更が設定されているかどうかを判定する。また、コマンド再構築部１００１は、マッピング変更が設定されている場合、即ちマッピングフラグ９５０に１が設定されている場合に、コマンドのアクセス対象アドレス情報をマッピングアドレス９５１あるいはマッピングテーブル９３３の内容に従って再配置先アドレスに変更して、コマンドを再構築する。
【００７９】
図１１にコマンド選択手段９２１におけるコマンド選択処理フローを示す。ここでは、コマンド選択処理の中に、マッピング処理を埋め込む例について説明する。プロセス１１０２、１１０３、１１０４、１１０５、１１０６の処理は、代表的実施の形態における図７のコマンド選択処理フローのプロセス７０２、７０３、７０４、７０５、７０７と同等である。プロセス１１０５において、選択したコマンドバッファからコマンドを選択すると、プロセス１１０７において、コマンドの対象アドレスを変更するかどうかを判定する。このとき、マッピングテーブル９３３にマッピング変更情報が設定されていれば、プロセス１１０８を処理する。マッピング変更情報が設定されているかどうかは、マッピングフラグ９５０の値をチェックすることにより判定できる。条件判定の結果、マッピングフラグの値が０であれば、プロセス１１０８を行うことなくプロセス１１０９においてコマンドをそのままアクセス対象のディスク装置に送出する。マッピングフラグに１がセットされていた場合、プロセス１１０８において、コマンドのアクセス対象のアドレス情報をマッピング先のアドレス情報に変更してコマンドを再構成する。そしてプロセス１１０９において、コマンドをディスク装置に対して送出する。
【００８０】
（実施の形態の変形例２）
上述の代表的実施の形態では、ファイルシステム制御手段１１１とディスク装置１１３の間では、ＳＣＳＩインタフェースを用いて、ＳＣＳＩコマンドを制御するコマンドコントローラについて説明した。実施の形態の変形例２では、ファイルシステム制御手段とコマンドコントローラの間で、ｉＳＣＳＩインタフェースを使用する点が代表的実施の形態および変形例１とは異なる。
【００８１】
図１２は、本発明の実施の形態の変形例２におけるネットワークストレージシステム全体の構成例を示す。変形例２におけるシステム制御部１２０４は、リモートディスク制御手段１２１５を含む点が、代表的実施の形態および変形例１とは異なる。また、コマンドコントローラ１２１２にも、リモートディスク制御手段１２２５を含む点も先の実施例とは異なる。また、システム制御部１２０４とコマンドコントローラ１２１２は、内部ネットワーク１２０５で接続する。内部ネットワーク１２０５は標準的なＩＰネットワークである。ここでは、ネットワーク１２０２と内部ネットワーク１２０５を独立に設けたが、同一のネットワークに接続してもよい。
【００８２】
リモートディスク制御手段１２１５は、ファイルシステム制御手段１２１１から受け取ったディスクアクセスコマンドをｉＳＣＳＩコマンドにパッキングし、内部ネットワーク１２０５に転送する。変形例２では、ディスクアクセスコマンドとして、ＳＣＳＩコマンドを使用しているものとする。また、コマンドコントローラ１２１２のリモートディスク制御手段１２２５は、内部ネットワーク１２０５から受け取ったｉＳＣＳＩコマンドをアンパッキングし、ディスクアクセスコマンドに変換して、コマンド分類手段１２２０に転送する。コマンド分類手段１２２０に転送されたディスクアクセスコマンドは、代表的実施の形態および変形例１と同様に処理される。ここで、リモートディスク制御手段１２１５および１２２５は公知の技術で実現できるため、詳細については説明を省略する。しかしながら、変形例２では、アドレス管理テーブル１２３０、ポリシーテーブル１２３１、マッピング手段１２２４に設けるマッピングフラグ及びマッピングアドレスを設定する場合に、ｉＳＣＳＩプロトコルに規定されているテキストコマンドＴｅｘｔ  Ｒｅｑｕｅｓｔ  ＰＤＵｓ（Ｐｒｏｔｏｃｏｌ  Ｄａｔａ  Ｕｎｉｔｓ）とＴｅｘｔ  Ｒｅｓｐｏｎｓｅ  ＰＤＵｓを使用する。ｉＳＣＳＩプロトコルでは、リモートディスク制御手段１２１５と１２２５の間でディスクアクセスコマンド以外のテキストコマンドをやり取りできる。そこで、変形例２では、ファイルシステム制御手段１２１１が管理するアドレス情報の設定、アドレス管理テーブル１２３０の更新、クライアント計算機やコンソール経由で管理者が設定するポリシーやマッピング情報のやり取りのためのテキストコマンドを用意する。これにより、ファイルシステム制御手段１２１１とコマンドコントローラ１２１２の間における情報を独自のインタフェースではなく、ｉＳＣＳＩインタフェースを用いてやり取りできるようになる。
【００８３】
（実施の形態の変形例３）
上述の代表的実施の形態のネットワークストレージシステムおよび変形例１および変形例２に示すネットワークストレージシステムでは、ディスク装置とシステム制御部とは独立して、コマンドを最適化するコマンドコントローラを設けた。変形例３では、コマンドコントローラをシステム制御部に内蔵する。この場合、システム制御部に、アドレス管理テーブルやポリシーテーブル、マッピングテーブルに値を設定するためのインタフェースを備える。
【００８４】
（実施の形態の変形例４）
上述の代表的実施の形態のネットワークストレージシステムでは、ディスク装置とシステム制御部とは別にコマンドを最適化するコマンドコントローラを設けた。また、変形例３では、コマンドコントローラをシステム制御部に内蔵した。代表的実施の形態の変形例４では、コマンドコントローラをディスク装置に内蔵する。
【００８５】
変形例４では、ディスク装置が、アドレス管理テーブルやポリシーテーブル、マッピングテーブルに値を設定するためのインタフェースを備える。
【００８６】
（実施の形態の変形例５）
上述の代表的実施の形態および変形例では、コマンドコントローラが定常的に動作し、コマンドの最適化を行っていた。クライアントからのファイルアクセスが頻発する場合には、コマンド最適化の効果が大きいが、クライアントからのファイルアクセスが少ない場合には、コマンドの最適化の効果が小さいため、コマンドを最適化する必要はない。
【００８７】
そこで、変形例５では、管理者あるいはシステムがコマンド最適化を必要としないと判断する場合には、コマンドコントローラを使用せず、直接ディスク装置に対してコマンドを送出する。それにより、最適化が必要ない場合には、コマンドを解析するオーバヘッドを削減することができる。
【００８８】
図１３に変形例５におけるネットワークストレージシステムの構成を示す。図９に示す変形例１の構成に比べて、コマンド最適化フラグ１３００、アクセス頻度フラグ１３０１、アクセス頻度監視手段１３０２、コマンド最適化判定手段１３０３が追加されている。変形例５では、変形例１に対して機能を追加した例を示すが、代表的実施の形態のネットワークストレージシステムにも、変形例２および３および４のネットワークストレージシステムのいずれに対しても適用可能である。
【００８９】
コマンド最適化フラグ１３００は、コマンドの最適化を行うかどうかを示すフラグである。ネットワークストレージシステム構築時等に、設定ウィザード等を用いて管理者がコマンド最適化を指示した場合に、１がセットされる。設定ウィザードはコンソールを用いて立ち上げてもよいし、Ｗｅｂサーバ経由で立ち上げてもよい。いずれの場合でも、コマンドコントローラの設定ウィザードあるいはシーケンスの中に、コマンドの最適化を行うかどうかを指定する項目があればよい。また、コマンド最適化フラグ１３００は、ネットワークストレージシステムの構築後であっても、セットあるいはリセットできる。この場合は、ネットワークストレージシステムの管理ウィザードに、コマンド最適化を指定あるいは解除する項目を含める。
【００９０】
アクセス頻度フラグ１３０１は、コマンドコントローラ９１２に投入されるディスクアクセスコマンドが多いかどうかを示す。アクセス頻度監視手段１３０２によりセット、リセットされる。
【００９１】
アクセス頻度監視手段１３０２は、コマンドコントローラ９１２に投入されるディスクアクセスコマンドを監視し、監視間隔Ｔｃに投入されるコマンドが一定量Ｔｍａｘを超えると、アクセス頻度フラグ１３０１に１をセットする。監視間隔Ｔｃおよびコマンド量Ｔｍａｘの値は、設定ウィザード等によりあらかじめ設定される。これにより、ディスクアクセスコマンドがあまり投入されないような場合には、コマンドを解析して分類することはせずに直接ディスク装置に対して転送できるため、コマンド解析のオーバヘッドを削減できる。ただし、マッピングを変更しているかどうかのチェックは行う。
【００９２】
コマンド最適化判定手段１３０３は、コマンド最適化フラグ１３００とアクセス頻度フラグ１３０１を用いて、コマンドの最適化を行うかどうかを判定する。
【００９３】
図１４に変形例５におけるコマンド処理のフローを示す。プロセス１４０２では、コマンド最適化フラグ１３００をチェックし、コマンドを最適化する必要があるかどうかを判定する。コマンド最適化フラグ１３００の値が０である場合、コマンドを最適化しないため、プロセス１４０７を行い、そのコマンドをディスク装置に対して送出する。コマンド最適化フラグ１３００の値が１である場合、コマンドを最適化するため、次のプロセスを行う。プロセス１４０３では、アクセス頻度フラグ１３０１に１がセットされているかどうかを判定する。アクセス頻度フラグ１３０１に１がセットされている場合、プロセス１４０４を行う。アクセス頻度フラグ１３０１の値が０の場合は、プロセス１４０６を行う。プロセス１４０２とプロセス１４０３がコマンド最適化判定処理に相当する。
【００９４】
プロセス１４０４は、コマンド分類処理を行う。コマンド分類処理の内部フローは代表的実施の形態と同じである。プロセス１４０５では、コマンド選択処理を行う。ここで、コマンド選択処理とは、コマンドバッファ９３２からコマンドを選択する部分までとする。そして次に、プロセス１４０６において、コマンドマッピング処理を行う。コマンドマッピング処理は図１１のプロセス１１０７とプロセス１１０８に相当する。コマンドマッピング処理は、まずマッピングフラグ９５０の値をチェックし、１がセットされている場合にはマッピングテーブル９３３を参照してコマンドのアクセス対象アドレスをマッピング先に変更する。従って、マッピングフラグ９５０に１がセットされていない場合には、コマンドを解析することはない。最後に、プロセス１４０７では、コマンドをディスク装置に対して送出する。
【００９５】
以上のように、変形例５では、コマンドの最適化が必要でない場合や、コマンドコントローラ９１２が処理するディスクアクセスコマンド数が少ない場合には、コマンドを解析せずに、ディスク装置に対してコマンドを送出することができるため、より柔軟にコマンドの最適化を行うことができる。
【図面の簡単な説明】
【００９６】
【図１】本発明の実施の形態であるネットワークストレージシステムの全体構成を示すブロック図である。
【図２】上記実施の形態におけるアドレス管理テーブルの構成を示す図である。
【図３】上記実施の形態におけるポリシーテーブルの構成を示す図である。
【図４】上記実施の形態におけるコマンド分類手段の構成を示す図である。
【図５】上記実施の形態におけるコマンド選択手段の構成を示す図である。
【図６】上記実施の形態におけるコマンド分類手段の処理フローを示す図である。
【図７】上記実施の形態におけるコマンド選択手段の処理フローを示す図である。
【図８】上記実施の形態におけるディスクアクセスコマンドの例を示す図である。
【図９】代表的実施の形態の変形例１であるネットワークストレージシステムの全体構成を示すブロック図である。
【図１０】変形例１のコマンド選択手段の構成を示す図である。
【図１１】変形例１のコマンド選択手段の処理フローを示す図である。
【図１２】代表的実施の形態の変形例２であるネットワークストレージシステムの全体構成を示すブロック図である。
【図１３】代表的実施の形態の変形例５であるネットワークストレージシステムの全体構成を示すブロック図である。
【図１４】変形例５のコマンド処理のフローを示す図である。
【符号の説明】
【００９７】
１００，１０１…クライアント、１０２…ネットワーク、１０３…ネットワークストレージシステム、１０４…システム制御部、１１０…要求受付手段、１１１，１２１１…ファイルシステム制御手段、１１２，９１２，１２１２…コマンドコントローラ、１１３，９１３〜９１４…ディスク装置、１２０，１２２０…コマンド分類手段、１２１，１２２１…コマンド選択手段、１２２，１２２２…アドレス更新手段、１２３，１２２３…テーブル設定手段、１３０…アドレス管理テーブル、１３１…ポリシーテーブル、１３２，１４０〜１４１…コマンドバッファ、４０１…アドレス解析部、４０２…アドレス比較部、４０３…バッファ登録部、５０１…バッファ選択部、５０２…コマンド送出判定部、５０３…コマンド選択部、５０４…コマンド送出部、５１０…送出カウンタ、９２４…マッピング手段、９３３…マッピングテーブル、９５０…マッピングフラグ、９５１…マッピングアドレス、１０００…マッピング判定部、１００１…コマンド再構築部、１２１５，１２２５…リモートディスク制御手段、１３００…コマンド最適化フラグ、１３０１…アクセス頻度フラグ、１３０２…アクセス頻度監視手段、１３０３…コマンド最適化判定手段。
【図１】
2005250582.tif 000003
【図２】
2005250582.tif 000004
【図３】
2005250582.tif 000005
【図４】
2005250582.tif 000006
【図５】
2005250582.tif 000007
【図６】
2005250582.tif 000008
【図７】
2005250582.tif 000009
【図８】
2005250582.tif 000010
【図９】
2005250582.tif 000011
【図１０】
2005250582.tif 000012
【図１１】
2005250582.tif 000013
【図１２】
2005250582.tif 000014
【図１３】
2005250582.tif 000015
【図１４】
2005250582.tif 000016