(57)【要約】【課題】最下層の物理ディスクの不良ブロック等の情報から、その不良ブロックに対応する最上位層のファイルを特定する。【解決手段】ＮＡＳシステム１００を構成するＮＡＳサーバ２００は、ネットワークドライバ２１０、ファイルシステム２２０、ＬＶＭドライバ２３０、ＳＣＳＩドライバ２４０等の階層状のドライバを備えている。各層には、ネットワークドライバioctl２１１、ファイルシステムioctl２２１、ＬＶＭドライバioctl２３１、ＳＣＳＩドライバioctl２４１がそれぞれ設けられている。これらは、ioctlコマンドやＳＣＳＩコマンド等のコマンドと、ＦＣケーブル２で接続されたＳＡＮストレージ３００の物理ディスク３３０−１乃至３３０−Ｎの不良ブロック領域に関する情報等の各種情報を各層間で伝達する。【選択図】図１
2010181980.tif 000002
【特許請求の範囲】
【請求項１】
１または複数の物理ディスクを用いて構築された論理ボリュームに対するファイルの入出力を管理するファイル管理装置であって、
階層的に実装された複数のドライバソフトウェアを実行することにより、前記論理ボリュームに対するファイルの入出力を行うファイルサーバと、
各階層の前記ドライバソフトウェアにそれぞれ設けられ、前記物理ディスクの不良ブロック領域に関する情報の取得を指示するためのコマンドを下位層に伝達し、前記物理ディスクの不良ブロック領域に関する情報を上位層に伝達する伝達部と、
前記伝達部により伝達された前記コマンドに従って、前記物理ディスクの不良ブロック領域に関する情報を検出して、前記伝達部に出力する検出部と、
を備えるファイル管理装置。
【請求項２】
前記複数のドライバソフトウェアは、
上位のコンピュータとの間のネットワークを介した通信を制御するネットワークドライバと、
前記ファイルを操作するためのファイルシステムと、
前記論理ボリュームを管理する論理ボリュームドライバと、
前記論理ボリュームを構成する前記物理ディスクに対するアクセスを制御するＳＣＳＩドライバと、
を含むことを特徴とする請求項１に記載のファイル管理装置。
【請求項３】
前記論理ボリュームドライバに設けられた前記伝達手段は、下位層から伝達されてきた前記物理ディスクの前記不良ブロックの領域を、対応する論理ボリュームの領域に変換し、上位層に向けて伝達する
ことを特徴とする請求項２に記載のファイル管理装置。
【請求項４】
１または複数の物理ディスクを用いて構築された論理ボリュームに対するファイルの入出力を管理するファイル管理方法であって、
前記論理ボリュームに対するファイルの入出力を行うためにファイルサーバに階層的に実装された複数のドライバソフトウェアにそれぞれ設けられた伝達部を用いて、前記物理ディスクの不良ブロック領域に関する情報の取得を指示するためのコマンドを下位層に向かって伝達する第１の伝達ステップと、
前記伝達された前記コマンドに従って、前記物理ディスクの不良ブロック領域に関する情報を検出して、前記伝達部に出力する検出ステップと、
検出された前記物理ディスクの不良ブロック領域に関する情報を、前記伝達部を用いて上位層の前記ドライバソフトウェアに伝達する第２の伝達ステップと、
を含むファイル管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１または複数の物理ディスクを用いて構築された論理ボリュームに対するファイルの入出力を管理するファイル管理装置およびファイル管理方法に関する。
【背景技術】
【０００２】
近年、ディスク容量の最適化などを目的として、複数の物理ディスクを用いて１つの仮想的な論理ディスクを形成し、その論理ディスクに対してファイル入出力を行うディスクシステムが導入されている。このようなディスクシステムの一例に、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）が搭載されたディスクアレイ装置がある。このディスクアレイ装置は、装置単独で物理ディスク媒体面の定期的な読み出しを行うことにより、不良ブロックを早めに検出し、ＲＡＩＤの冗長化機能を用いて、不良ブロックが別セクタに割り付けられてデータを復旧する。すなわち、ＲＡＩＤが搭載されたディスクアレイ装置では、物理ディスクの媒体不良に対し、冗長化機能によりリカバリ可能な仕組みが構築されている。
【０００３】
しかしながら、ＲＡＩＤが搭載されたディスクアレイ装置においても、物理ディスクに発生した障害の規模が大きすぎ、冗長性が不十分な状態に陥ることがある。このような場合には、ＲＡＩＤの冗長化機能によるデータの復旧（リカバリ）が困難となるので、障害が発生した物理ディスクを交換した後、データ（ファイル）をバックアップ媒体からリストアして復旧（リカバリ）する必要がある。このリカバリ作業においては、物理ディスクの不良ブロックがどのファイルに該当するかを調べるために、全ファイルを実際に読み出しているのが現状である。
【０００４】
また、特許文献１には、ＲＡＩＤ機能を搭載したディスクアレイ装置において、設定情報を専用のインタフェースを介して保存および参照することにより、ユーザによる操作ミスやソフトウェアのバグ等による不正アクセスから設定情報をガードする手法が開示されている。
【０００５】
また、特許文献２には、ストレージネットワークにおける実ボリュームと仮想ボリュームの対応関係を管理するとともに、障害情報に基づいて仮想ボリュームを実ボリュームに関連付ける手法が開示されている。
【０００６】
また、特許文献３には、入出力装置を制御するデバイスドライバにエラー情報を格納するエラー情報格納域を設け、エラーが検出されたときにエラー情報をエラー情報格納域に退避させ、アプリケーションテストプログラムから送られてくるエラー情報獲得のためのioctlシステムコールに応じて、上記エラー情報格納域に退避させたエラー情報をアプリケーションテストプログラムに転送する手法が開示されている。この手法を用いれば、ＯＳ（Operating System）の中核となる基本カーネルには手を加えることなく、かつソースプログラムの互換性を保ちながら、アプリケーションテストプログラムによりエラー情報を得ることができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００５−２６７５３０号公報
【特許文献２】特開２００７−１７２００３号公報
【特許文献３】特開平０７−０１３８８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
最近のディスクシステムでは、その仮想化を実現しているソフトウェア（ドライバ）が階層化され、その階層がますます深くなっている。ソフトウェアの階層が深くなると、最下層の物理ディスクの不良ブロック箇所から、影響を受ける最上位層のファイルを特定することが困難となる。
【０００９】
上述のように、ＲＡＩＤの冗長化機能によりリカバリが困難な場合には、物理ディスクの不良ブロックがどのファイルに対応するのかを、全ファイルを実際に読み出して調査していたが、このような読み出しは、ディスクの大容量化により、極めて長い時間を要するものとなっている。このような背景から、全ファイルを読み出さなくても、最下層の物理ディスク不良ブロックの情報から、最上位層のファイルを特定する方法の立案が望まれている。
【００１０】
特許文献１の手法では、専用のインタフェースを介してのみ設定情報を保存または参照することはできるが、ディスクの不良箇所に対応するファイルを特定することはできない。また、特許文献２の手法では、障害情報に基づいて実ボリュームと仮想ボリュームとを関連付けることはできるが、ディスクの不良箇所に対応するファイルを特定することはできない。さらに、特許文献３の手法では、専用のioctlシステムコールを用いて、入出力装置の診断結果をデバイスドライバとアプリケーションテストプログラム間で受け渡すことはできるが、デバイスドライバのみがioctlシステムコールを受信し応答する機能を有しているため、デバイスドライバが複数の階層からなる場合、ディスクの不良箇所に対応するファイルを特定することはできない。
【００１１】
本発明は、上記問題点に鑑みてなされたものであり、複数の階層化されたソフトウェアを介してファイル単位でストレージにアクセスするサーバにおいて、全ファイルを読み出さなくても、最下層の物理ディスクの不良ブロック等の情報から、その不良ブロックに対応する最上位層のファイルを特定することができるファイル管理装置及びファイル管理方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、本発明の第１の観点に係るファイル管理装置は、
１または複数の物理ディスクを用いて構築された論理ボリュームに対するファイルの入出力を管理するファイル管理装置であって、
階層的に実装された複数のドライバソフトウェアを実行することにより、前記論理ボリュームに対するファイルの入出力を行うファイルサーバと、
各階層の前記ドライバソフトウェアにそれぞれ設けられ、前記物理ディスクの不良ブロック領域に関する情報の取得を指示するためのコマンドを下位層に伝達し、前記物理ディスクの不良ブロック領域に関する情報を上位層に伝達する伝達部と、
前記伝達部により伝達された前記コマンドに従って、前記物理ディスクの不良ブロック領域に関する情報を検出して、前記伝達部に出力する検出部と、
を備える。
【００１３】
また、本発明の第２の観点に係るファイル管理方法は、
１または複数の物理ディスクを用いて構築された論理ボリュームに対するファイルの入出力を管理するファイル管理方法であって、
前記論理ボリュームに対するファイルの入出力を行うためにファイルサーバに階層的に実装された複数のドライバソフトウェアにそれぞれ設けられた伝達部を用いて、前記物理ディスクの不良ブロック領域に関する情報の取得を指示するためのコマンドを下位層に向かって伝達する第１の伝達ステップと、
前記伝達された前記コマンドに従って、前記物理ディスクの不良ブロック領域に関する情報を検出して、前記伝達部に出力する検出ステップと、
検出された前記物理ディスクの不良ブロック領域に関する情報を、前記伝達部を用いて上位層の前記ドライバソフトウェアに伝達する第２の伝達ステップと、
を含む。
【発明の効果】
【００１４】
本発明によれば、階層化されたドライバソフトウェアに設けられた伝達部を用いて、階層間で、物理ディスクの不良ブロック領域に関する情報の取得を指示するためのコマンドや不良ブロック領域に関する情報を受け渡すことができるので、最下層の物理ディスクの不良ブロック領域等の情報から、その不良ブロック領域に対応する最上位層のファイルを容易に特定することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態に係るＮＡＳシステムの構成例を示すブロック図である。
【図２】ネットワークドライバの処理手順を説明するためのフローチャートである。
【図３】ファイルシステムの処理手順を説明するためのフローチャートである。
【図４】ＬＶＭドライバの処理手順を説明するためのフローチャートである。
【図５】ＳＣＳＩドライバの処理手順を説明するためのフローチャートである。
【図６】ＦＣ  ＨＢＡドライバの処理手順を説明するためのフローチャートである。
【図７】コントローラの処理手順を説明するためのフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態に係るＮＡＳ（Network Attached Storage）システム１００について説明する。図１に示すように、ＮＡＳシステム１００は、ＮＡＳサーバ２００と、ＳＡＮ（Storage Area Network）ストレージ３００と、を備えている。ＮＡＳサーバ２００とＳＡＮストレージ３００とは、ＦＣ（Fibre Channel）ケーブル２によって接続されている。また、ＮＡＳシステム１００には、ネットワーク網１を介して、図示しないＮＡＳクライアントや管理コンピュータ等が接続されている。
【００１７】
ＮＡＳサーバ２００は、ネットワークドライバ２１０と、ファイルシステム２２０と、ＬＶＭ（Logical Volume Manager）ドライバ２３０と、ＳＣＳＩ（Small Computer System Interface）ドライバ２４０と、ＦＣ  ＨＢＡ（Fibre Channel Host Bus Adapter）ドライバ２５０とを備えている。これらのドライバ２１０、２２０，２３０、２４０、２５０は、階層化されてＮＡＳサーバ２００に実装されている。
【００１８】
ネットワークドライバ２１０は、上位のコンピュータ（ＮＡＳクライアントや管理コンピュータ等）との間のネットワーク網１を介した通信を制御する。ファイルシステム２２０は、ＳＡＮストレージ３００における、後述する論理ディスク３２０に格納されるファイルを操作する。ＬＶＭドライバ２３０は、論理ディスク３２０における論理ボリュームを管理する。ＳＣＳＩドライバ２４０は、ＳＣＳＩ規格に従って、ＳＡＮストレージ３００の物理ディスク３３０−１乃至３３０−Ｎに対するアクセスを制御する。ＦＣ  ＨＢＡドライバ２５０は、ＦＣケーブル２のファイバーチャネル制御を行う。
【００１９】
ネットワークドライバ２１０は、ネットワークドライバioctl２１１を有する。ファイルシステム２２０は、ファイルシステムioctl２２１を有する。ＬＶＭドライバ２３０は、ＬＶＭドライバioctl２３１を有する。ＳＣＳＩドライバ２４０はＳＣＳＩドライバioctl２４１を有する。これらは、後述する物理ディスク３３０−１乃至３３０−Ｎの不良ブロックの情報を取得するために、各ドライバに実装されている。
【００２０】
ＳＡＮストレージ３００は、コントローラ３１０と、論理ディスク３２０と、を備えている。
【００２１】
論理ディスク３２０は、物理ディスク３３０−１乃至３３０−Ｎ（Ｎは任意の自然数）を備えている。論理ディスク３２０の実体は、物理ディスク３３０−１乃至３３０−Ｎである。コントローラ３１０は、ＮＡＳサーバ２００の指示の下で、論理ディスク３２０（論理ボリューム）に対するファイルの入出力を制御するとともに、物理ディスク３３０−１乃至３３０−Ｎの不良ブロックに関する情報を検出し、ＦＣケーブル２を介してＮＡＳサーバ２００に送信する。
【００２２】
ここでは、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）等の技術によって、複数の物理ディスク３３０−１乃至３３０−Ｎから仮想的な１つの論理ディスク３２０が構築されている。この論理ディスク３２０上に、論理ボリュームが形成される。
【００２３】
次に、ＮＡＳサーバ２００において、各階層に設けられた共通のインタフェース（この例の場合、ネットワークドライバioctl２１１、ファイルシステムioctl２２１、ＬＶＭドライバioctl２３１、ＳＣＳＩドライバioctl２４１）を用いて、コマンドや情報を各階層間で伝達することにより、物理ディスク３３０−１乃至３３０−Ｎの不良ブロックに対応するファイルを特定する手順について説明する。
【００２４】
ネットワーク網１に接続されたＮＡＳクライアントまたは管理コンピュータ等において、物理ディスク３３０−１乃至３３０−Ｎの不良ブロック領域に関する情報の取得を指示するためコマンドであるioctlコマンドが発行されると、このioctlコマンドは、ＮＡＳクライアントまたは管理コンピュータから発信され、ネットワーク網１を経由してＮＡＳシステム１００を構成するＮＡＳサーバ２００内のネットワークドライバ２１０に到達する。
【００２５】
ネットワークドライバ２１０は、ネットワークドライバ２１０に設けられたネットワークドライバioctl２１１によりioctlコマンドを受信し、そのioctlコマンドをそのままファイルシステム２２０に設けられたファイルシステムioctl２２１に伝達する。
【００２６】
ファイルシステム２２０は、ファイルシステムioctl２２１によって受信されたioctlコマンドを下位層のＬＶＭドライバ２３０に対して発行する。ＬＶＭドライバ２３０のＬＶＭドライバioctl２３１は、上位層のファイルシステム２２０のファイルシステムioctl２２１によって発行されたioctlコマンドを、下位層のＳＣＳＩドライバ２４０に対して発行する。
【００２７】
ＳＣＳＩドライバ２４０のＳＣＳＩドライバioctl２４１は、受信したioctlコマンドを、ＳＡＮストレージ３００の物理ディスク３３０−１乃至３３０−Ｎの不良ブロックに関する情報を取得可能なＳＣＳＩコマンド（Read Buffer）に変換し、このＳＣＳＩコマンド（Read Buffer）をＦＣ  ＨＢＡドライバ２５０に対して発行する。
【００２８】
ＦＣ  ＨＢＡドライバ２５０は、ＳＣＳＩドライバioctl２４１により発行されたＳＣＳＩコマンド（Read Buffer）を、ＦＣケーブル２を経由してＳＡＮストレージ３００内のコントローラ３１０に伝達する。
【００２９】
ＳＡＮストレージ３００内のコントローラ３１０は、ＳＣＳＩコマンド（Read Buffer）に従って、物理ディスク３３０−１乃至３３０−Ｎの不良ブロックに関する情報を取得する。そして、その情報をＳＣＳＩコマンド（Read Buffer）で指示された論理ディスク３２０に関する情報（物理ディスク３３０−１乃至３３０−Ｎの不良ブロックに対応する論理ディスク３２０上のファイルを特定する情報）に変換する。その後、その情報をＦＣケーブル２経由で、ＮＡＳサーバ２００のＦＣ  ＨＢＡドライバ２５０に送信する。
【００３０】
ＦＣ  ＨＢＡドライバ２５０は、ＦＣケーブル２経由で送られてきた物理ディスク３３０−１乃至３３０−Ｎの不良ブロックに対応する論理ディスク３２０上のファイルを特定する情報を、ＳＣＳＩドライバ２４０のＳＣＳＩドライバioctl２４１に伝達する。
【００３１】
ＳＣＳＩドライバ２４０に設けられたＳＣＳＩドライバioctl２４１は、ＦＣ  ＨＢＡドライバ２５０より伝達されてきた物理ディスク３３０−１乃至３３０−Ｎの不良ブロックに対応する論理ディスク３２０上のファイルを特定する情報をＬＶＭドライバ２３０に対応する所定の形式に変換し、ＬＶＭドライバ２３０のＬＶＭドライバioctl２３１に伝達する。
【００３２】
ＬＶＭドライバ２３０のＬＶＭドライバioctl２３１は、ＳＣＳＩドライバioctl２４１より伝達されてきた物理ディスク３３０−１乃至３３０−Ｎの不良ブロックに対応する論理ディスク３２０上のファイルを特定する情報に基づき、物理ディスク３３０−１乃至３３０−Ｎの不良ブロックの領域を対応する論理ディスク３２０上の論理ボリューム領域に変換し、この論理ボリューム領域をファイルシステム２２０のファイルシステムioctl２２１に伝達する。
【００３３】
ファイルシステム２２０のファイルシステムioctl２２１は、ＬＶＭドライバ２３０より伝達されてきた論理ボリューム領域に基づき、物理ディスク３３０−１乃至３３０−Ｎの不良ブロックの領域に対応するファイルのデータ部およびメタデータ（例えば、ファイルの位置、ファイル名、更新日時、アクセス権限等のファイルを管理するための情報）を取得し、ネットワークドライバ２１０のネットワークドライバioctl２１１に伝達する。
【００３４】
ネットワークドライバ２１０のネットワークドライバioctl２１１は、この物理ディスク３３０−１乃至３３０−Ｎの不良ブロックの領域に対応するファイルのデータ部およびメタデータを、ネットワーク網１を経由して、ＮＡＳクライアントまたは管理コンピュータ等に送信する。
【００３５】
ＮＡＳクライアントまたは管理コンピュータ等は、物理ディスク３３０−１乃至３３０−Ｎの不良ブロックの領域に対応するファイルのデータ部およびメタデータから、このファイルを特定することができる。
【００３６】
以下、図２乃至図７のフローチャートを参照して、各階層の詳細な処理手順について説明する。
【００３７】
まず、ネットワークドライバ２１０の処理手順について説明する。図２に示すように、ネットワークドライバ２１０は、ネットワーク網１を介してＮＡＳクライアントや管理コンピュータ等から送信されてくるioctlコマンドを、ネットワークドライバioctl２１１によが受信したか否かを判定する（ステップＳ１）。
【００３８】
ネットワーク網１を介して送信されてくるioctlコマンドを受信したと判定した場合（ステップＳ１でＹｅｓ）、ネットワークドライバ２１０は、ネットワークドライバioctl２１１に、受信したioctlコマンドを、ファイルシステム２２０のファイルシステムioctl２２１へそのまま伝達させる（ステップＳ３）。
【００３９】
一方、ネットワーク網１を介して送信されてくるioctlコマンドを受信していないと判定した場合（ステップＳ１でＮｏ）、ネットワークドライバ２１０は、下位層のファイルシステム２２０のファイルシステムioctl２２１から伝達されてくる情報を、ネットワークドライバioctl２１１が、受信したか否かを判定する（ステップＳ２）。下位層のファイルシステム２２０のファイルシステムioctl２２１から伝達されてくる情報を受信していないと判定した場合（ステップＳ２でＮｏ）、ネットワークドライバ２１０は、ステップＳ１に戻り、ステップＳ１以降の処理を繰り返し実行する。
【００４０】
一方、ステップＳ２において下位層のファイルシステム２２０のファイルシステムioctl２２１から伝達される情報を受信したと判定した場合（ステップＳ２でＹｅｓ）、ネットワークドライバ２１０は、ネットワークドライバioctl２１１に、下位層にあるファイルシステム２２０から受信した情報（この例では、物理ディスク３３０−１乃至３３０−Ｎの不良ブロックの領域に対応するファイルのデータ部およびメタデータ）を、ネットワーク網１を経由してＮＡＳクライアントや管理コンピュータに送信させる。
【００４１】
ステップＳ３またはステップＳ４の処理が終了すると、本処理を終了する。本処理は、ネットワークドライバ２１０によって繰り返し実行される。
【００４２】
次に、ファイルシステム２２０の処理手順について説明する。図３に示すように、まず、ファイルシステム２２０は、上位層のネットワークドライバ２１０から伝達されてくるioctlコマンドを、ファイルシステムioctl２２１が受信したか否かを判定する（ステップＳ１１）。
【００４３】
上位層のネットワークドライバ２１０のネットワークドライバioctl２１１から伝達されてくるioctlコマンドを受信したと判定した場合（ステップＳ１１でＹｅｓ）、ファイルシステム２２０は、ファイルシステムioctl２２１に、受信したioctlコマンドをＬＶＭドライバ２３０に対して発行させる（ステップＳ１３）。
【００４４】
一方、上位層のネットワークドライバ２１０のネットワークドライバioctl２１１から伝達されてくるioctlコマンドを受信していないと判定した場合（ステップＳ１１でＮｏ）、ファイルシステム２２０は、下位層のＬＶＭドライバ２３０のＬＶＭドライバioctl２３１から伝達されてくる情報を、ファイルシステムioctl２２１が受信したか否かを判定する（ステップ１２）。
【００４５】
下位層のＬＶＭドライバ２３０のＬＶＭドライバioctl２３１から伝達されてくる情報を受信していないと判定した場合（ステップＳ１２でＮｏ）、ファイルシステム２２０は、ステップＳ１１に戻り、ステップＳ１１以降の処理を繰り返し実行する。
【００４６】
一方、下位層のＬＶＭドライバ２３０のＬＶＭドライバioctl２３１から伝達されてくる情報を受信したと判定した場合（ステップＳ１２でＹｅｓ）、ファイルシステム２２０は、ファイルシステムioctl２２１に、ＬＶＭドライバ２３０のＬＶＭドライバioctl２３１から伝達されてくる情報（物理ディスク３３０−１乃至３３０−Ｎの不良ブロックの領域に対応する論理ディスク３２０上の論理ボリューム領域）に基づいて取得した情報（物理ディスク３３０−１乃至３３０−Ｎの不良ブロックの領域に対応するファイルのデータ部およびメタデータ）を、ネットワークドライバ２１０のネットワークドライバioctl２１１へ伝達させる（ステップＳ１４）。
【００４７】
ステップＳ１３またはステップＳ１４の処理が終了すると、本処理を終了する。本処理は、ファイルシステム２２０によって繰り返し実行される。
【００４８】
次に、ＬＶＭドライバ２３０の処理手順について説明する。図４に示すように、まず、ＬＶＭドライバ２３０は、上位層のファイルシステム２２０のファイルシステムioctl２２１から伝達されてくるioctlコマンドを、ＬＶＭドライバioctl２３１が、受信したか否かを判定する（ステップＳ２１）。
【００４９】
上位層のファイルシステム２２０のファイルシステムioctl２２１から伝達されてくるioctlコマンドを受信したと判定した場合（ステップＳ２１でＹｅｓ）、ＬＶＭドライバ２３０は、ＬＶＭドライバioctl２３１に、受信したioctlコマンドを、下位層のＳＣＳＩドライバ２４０に対して発行させる（ステップＳ２３）。
【００５０】
一方、上位層のファイルシステム２２０のファイルシステムioctl２２１から伝達されてくるioctlコマンドを受信していないと判定した場合（ステップＳ２１でＮｏ）、ＬＶＭドライバ２３０は、下位層のＳＣＳＩドライバ２４０のＳＣＳＩドライバioctl２４１から伝達されてくる情報を、ＬＶＭドライバioctl２３１が受信したか否かを判定する（ステップＳ２２）。
【００５１】
下位層のＳＣＳＩドライバ２４０のＳＣＳＩドライバioctl２４１から伝達されてくる情報を受信していないと判定した場合（ステップＳ２２でＮｏ）、ＬＶＭドライバ２３０は、ステップＳ２１に戻り、ステップＳ２１以降の処理を繰り返し実行する。
【００５２】
一方、下位層のＳＣＳＩドライバ２４０のＳＣＳＩドライバioctl２４１から伝達されてくる情報を受信したと判定した場合（ステップＳ２２でＹｅｓ）、ＬＶＭドライバ２３０は、ＬＶＭドライバioctl２３１に、ＳＣＳＩドライバ２４０のＳＣＳＩドライバioctl２４１から伝達されてくる情報（物理ディスク３３０−１乃至３３０−Ｎの不良ブロックに対応する論理ディスク３２０上のファイルを特定する情報）を、物理ディスク３３０−１乃至３３０−Ｎの不良ブロックの領域に対応する論理ディスク３２０上の論理ボリューム領域に変換させる（ステップＳ２４）。そして、ＬＶＭドライバ２３０は、ＬＶＭドライバioctl２３１に、この論理ボリューム領域をファイルシステム２２０のファイルシステムioctl２２１へ伝達させる（ステップＳ２４）。
【００５３】
ステップＳ２３またはステップＳ２４の処理が終了すると、本処理を終了する。本処理は、ＬＶＭドライバ２３０によって繰り返し実行される。
【００５４】
次に、ＳＣＳＩドライバ２４０の処理手順について説明する。図５に示すように、まず、ＳＣＳＩドライバ２４０は、上位層のＬＶＭドライバ２３０のＬＶＭドライバioctl２３１から伝達されてくるioctlコマンドを、ＳＣＳＩドライバioctl２４１が、受信したか否かを判定する（ステップＳ３１）。
【００５５】
上位層のＬＶＭドライバ２３０のＬＶＭドライバioctl２３１から伝達されてくるioctlコマンドを受信したと判定した場合（ステップＳ３１でＹｅｓ）、ＳＣＳＩドライバ２４０は、ＳＣＳＩドライバioctl２４１に、受信したioctlコマンドをＳＣＳＩコマンド（Read Buffer)に変換させた後、下位層のＦＣ  ＨＢＡドライバ２５０に対して発行させる（ステップＳ３３）。
【００５６】
一方、上位層のＬＶＭドライバ２３０のＬＶＭドライバioctl２３１から伝達されてくるioctlコマンドを受信していないと判定した場合（ステップＳ３１でＮｏ）、ＳＣＳＩドライバ２４０は、下位層のＦＣ  ＨＢＡドライバ２５０から伝達されてくる情報をＳＣＳＩドライバioctl２４１が受信したか否かを判定する（ステップＳ３２）。
【００５７】
下位層のＦＣ  ＨＢＡドライバ２５０から伝達されてくる情報を受信していないと判定した場合（ステップＳ３２でＮｏ）、ＳＣＳＩドライバ２４０は、ステップＳ３１に戻り、ステップＳ３１以降の処理を繰り返し実行する。
【００５８】
一方、下位層のＦＣ  ＨＢＡドライバ２５０から伝達されてくる情報を受信したと判定した場合（ステップＳ３２でＹｅｓ）、ＳＣＳＩドライバ２４０は、ＳＣＳＩドライバioctl２４１に、ＦＣ  ＨＢＡドライバ２５０から伝達されてくる情報をＬＶＭドライバ２３０の対応する形式に変換させた後、変換した情報を、ＬＶＭドライバ２３０のＬＶＭドライバioctl２３１に伝達させる（ステップＳ３４）。
【００５９】
ステップＳ３３またはステップＳ３４の処理が終了すると、本処理を終了する。本処理は、ＳＣＳＩドライバ２４０によって繰り返し実行される。
【００６０】
次に、ＦＣ  ＨＢＡドライバ２５０の処理手順について説明する。図６に示すように、まず、ＦＣ  ＨＢＡドライバ２５０は、上位層のＳＣＳＩドライバ２４０のＳＣＳＩドライバioctl２４１から伝達されてくるＳＣＳＩコマンド（Read Buffer)を受信したか否かを判定する（ステップＳ４１）。
【００６１】
上位層のＳＣＳＩドライバ２４０のＳＣＳＩドライバioctl２４１から伝達されてくるＳＣＳＩコマンド（Read Buffer)を受信したと判定した場合（ステップＳ４１でＹｅｓ）、ＦＣ  ＨＢＡドライバ２５０は、受信したＳＣＳＩコマンド（Read Buffer)を、ＦＣケーブル２を経由してＳＡＮストレージ３００のコントローラ３１０に伝達する（ステップＳ４３）。
【００６２】
一方、上位層のＳＣＳＩドライバ２４０のＳＣＳＩドライバioctl２４１から伝達されてくるＳＣＳＩコマンド（Read Buffer)を受信していないと判定した場合（ステップＳ４１でＮｏ）、ＦＣ  ＨＢＡドライバ２５０は、ＳＡＮストレージ３００のコントローラ３１０から、物理ディスク３３０−１乃至３３０−Ｎの不良ブロックの領域に対応する論理ディスク３２０上の領域を特定するための情報を受信したか否かを判定する（ステップＳ４２）。
【００６３】
その結果、ＦＣケーブル２を経由してＳＡＮストレージ３００のコントローラ３１０から送信されてくる物理ディスク３３０−１乃至３３０−Ｎの不良ブロックの領域に対応する論理ディスク３２０上の領域を特定するための情報を受信していないと判定した場合（ステップＳ４２でＮｏ）、ＦＣ  ＨＢＡドライバ２５０は、ステップＳ４１に戻り、ステップＳ４１以降の処理を繰り返し実行する。
【００６４】
一方、ＦＣケーブル２を経由してＳＡＮストレージ３００のコントローラ３１０から送信されてくる物理ディスク３３０−１乃至３３０−Ｎの不良ブロックの領域に対応する論理ディスク３２０上の領域を特定するための情報を受信したと判定した場合（ステップＳ４２でＹｅｓ）、ＦＣ  ＨＢＡドライバ２５０は、ＳＡＮストレージ３００のコントローラ３１０から受信した情報（物理ディスク３３０−１乃至３３０−Ｎの不良ブロックの領域に対応する論理ディスク３２０上の領域を特定するための情報）を、上位層のＳＣＳＩドライバ２４０のＳＣＳＩドライバioctl２４１に伝達する（ステップＳ４４）。
【００６５】
ステップＳ４３またはステップＳ４４の処理が終了すると、本処理を終了する。本処理は、ＦＣ  ＨＢＡドライバ２５０によって繰り返し実行される。
【００６６】
次に、ＳＡＮストレージ３００のコントローラ３１０の処理手順について説明する。図７に示すように、コントローラ３１０は、ＮＡＳサーバ２００のＦＣ  ＨＢＡドライバ２５０からＦＣケーブル２を経由して伝達されてきたＳＣＳＩコマンド（Read Buffer）を受信したと判定されるまで待つ（ステップＳ５１）。
【００６７】
ＮＡＳサーバ２００のＦＣ  ＨＢＡドライバ２５０からＦＣケーブル２を経由して伝達されてきたＳＣＳＩコマンド（Read Buffer）を受信したと判定した場合（ステップＳ５１でＹｅｓ）、コントローラ３１０は、ＮＡＳサーバ２００のＦＣ  ＨＢＡドライバ２５０からＦＣケーブル２を経由して伝達されてきたＳＣＳＩコマンド（Read Buffer）を実行する（ステップＳ５２）。続いて、コントローラ３１０は、それによって得られた物理ディスク３３０−１乃至３３０−Ｎの不良ブロックの領域に関する情報を、論理ディスク３２０上の領域を特定するための情報に変換する。続いて、コントローラ３１０は、その情報をＦＣケーブル２経由でＦＣ  ＨＢＡドライバ２５０に伝達する。その後、本処理を終了する。本処理は、コントローラ３１０によって繰り返し実行される。
【００６８】
このようにして、ネットワーク網１経由で送られてくるioctlコマンド（最下層の物理ディスクの不良ブロックの情報を取得するためのコマンド）は、図２のステップＳ３、図３のステップＳ１３、図４のステップＳ２３、図５のステップＳ３３、図６のステップＳ４３、図７のステップＳ５２の処理により最終的にＳＣＳＩコマンドに変換された後、コントローラ３１０に伝達される。
【００６９】
さらに、コントローラ３１０に伝達された情報（最下層の物理ディスクの不良ブロックの情報）は、図７のステップＳ５２、図６のステップＳ４４、図５のステップＳ３４、図４のステップＳ２４、図３のステップＳ１４、図２のステップＳ４の処理により、最終的にファイルのデータ部およびメタデータに変換された後、ネットワーク網１経由でＮＡＳクライアントや管理コンピュータに送信される。
【００７０】
以上説明したように、本実施の形態により、階層化されたドライバソフトウェア２１０２２０、２３０、２４０に設けられた各ドライバのioctl２１１，２２１、２３１、２４１等を用いて、階層間で、物理ディスク３３０−１乃至３３０−Ｎの不良ブロック領域に関する情報の取得を指示するためのioctlコマンドや不良ブロック領域に関する情報を受け渡す。不良ブロック領域に関する情報は、上位層に伝達される間に、その不良ブロック領域に対応するファイルに関する情報に変換されるので、全ファイルを読み出さなくても、最下層の物理ディスクの不良ブロック領域等の情報から、その不良ブロック領域に対応する最上位層のファイルを容易に特定することができる。
【００７１】
また、ioctlコマンドを発行することにより、ファイルにアクセスする前にファイルがアクセス可能か否かを認識することができるので、バックアップ等を行う場合、アクセス不能なファイルを迂回することができる。
【００７２】
さらに、ネットワーク網１に接続されたＮＡＳクライアントや管理コンピュータのアプリケーションプログラムにより監視や通報が可能となるため、アクセス不能なファイルの自動復旧を実現することができる。
【００７３】
なお、本発明は上記実施の形態に限定されず、種々の変形及び応用が可能である。例えば、上記実施の形態では、本発明をＮＡＳサーバ２００に適用する場合について説明したが、その他の各種サーバに適用することができる。
【００７４】
また、上記実施の形態では、ＳＣＳＩインタフェースを用いるようにしたが、その他のインタフェースを用いることもできる。
【産業上の利用可能性】
【００７５】
本発明は、ストレージ装置を接続して仮想ファイルを使用するファイルシステムに適用することができる。
【符号の説明】
【００７６】
１  ネットワーク網
２  ＦＣケーブル
１００  ＮＡＳシステム
２００  ＮＡＳサーバ
２１０  ネットワークドライバ（ドライバソフトウェア）
２１１  ネットワークドライバioctl
２２０  ファイルシステム（ドライバソフトウェア）
２２１  ファイルシステムioctl
２３０  ＬＶＭドライバ（ドライバソフトウェア）
２３１  ＬＶＭドライバioctl
２４０  ＳＣＳＩドライバ（ドライバソフトウェア）
２４１  ＳＣＳＩドライバioctl
２５０  ＦＣ  ＨＢＡ ドライバ
３００  ＳＡＮストレージ
３１０  コントローラ
３２０  論理ディスク
３３０−１〜３３０−Ｎ  物理ディスク
【図１】
2010181980.tif 000003
【図２】
2010181980.tif 000004
【図３】
2010181980.tif 000005
【図４】
2010181980.tif 000006
【図５】
2010181980.tif 000007
【図６】
2010181980.tif 000008
【図７】
2010181980.tif 000009