(57)【要約】【課題】  ファイルのデータを保護すると共にファイルに対する追記を許容すること、ファイルの特定範囲のみについてデータを保護すること。【解決手段】ＣＰＵ１１は、クライアントコンピュータ３０〜３２から記憶装置２０に格納されているファイルに対する書き込み要求を受信すると、対象ファイルのオブジェクト管理テーブルを参照して、対象ファイルのＷＯＲＭ属性を確認する。ＣＰＵ１１は、ＷＯＲＭ範囲管理テーブルを参照して、書き込み対象範囲がＷＯＲＭ範囲に設定されているか否かを判定する。ＣＰＵ１１は、書き込み対象範囲がＷＯＲＭ範囲に設定されていない場合には、対象ファイルに対する書き込みを実行する。ＣＰＵ１１は、書き込みデータに対するＷＯＲＭ化が設定されている場合には、ＷＯＲＭ範囲管理テーブルを更新して書き込んだデータについてＷＯＲＭ化の設定を行う。【選択図】  図１
2006092276.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置に格納されているファイルに対するアクセスを管理する計算機であって、
前記記憶装置に格納されている前記ファイルに対するデータの書き込み要求があった場合には、前記ファイルに関連づけられている情報であって、ファイルにおける変更が許容されない範囲を示す変更非許容範囲についての情報を少なくとも含む属性情報を取得する属性情報取得部と、
取得された前記属性情報を参照して、前記ファイルに対するデータの書き込みの対象範囲が前記変更非許容範囲以外の範囲であるか否かを判定する判定手段と、
前記ファイルに対するデータの書き込みの対象範囲が前記変更非許容範囲に含まれると判定された場合には、前記ファイルに対するデータの書き込みを実行しないアクセス制御手段とを備える計算機。
【請求項２】
請求項１に記載の計算機において、
前記アクセス制御手段は、前記ファイルに対するデータの書き込みの対象範囲が前記変更非許容範囲に含まれないと判定された場合には、前記ファイルに対するデータの書き込みを実行する計算機。
【請求項３】
請求項２に記載の計算機はさらに、
前記ファイルに対するデータの書き込みが実行された場合に、前記ファイルにおける対象範囲について変更を許容しない変更非許容範囲を設定する変更非許容範囲設定手段と、
前記設定された変更非許容範囲を前記属性情報に反映する属性情報変更手段とを備える計算機。
【請求項４】
請求項１に記載の計算機はさらに、
前記ファイルに対して変更を許容しない前記変更非許容範囲を設定する変更非許容範囲設定手段と、
前記設定された変更非許容範囲を前記属性情報に反映する属性情報変更手段とを備える計算機。
【請求項５】
請求項１に記載の計算機はさらに、
前記ファイルに対するデータの書き込みの要求が追記の要求であるか否かを判定する追記判定手段を備え、
前記属性情報にはさらに、前記ファイルに対するデータの追記を許容するか否かを示す追記許容情報が含まれており、
前記アクセス制御手段は、前記ファイルに対するデータの書き込みの要求が追記の要求であると共に、前記ファイルに対するデータの書き込みの対象範囲が前記変更非許容範囲に含まれないと判定され、さらに前記ファイルの前記追記許容情報が前記ファイルに対する追記の許容を示す場合には、前記ファイルに対するデータの追記を実行する計算機。
【請求項６】
請求項５に記載の計算機はさらに、
前記ファイルに対するデータの追記が実行された場合に、前記ファイルにおける対象範囲について変更を許容しない変更非許容範囲を設定する変更非許容範囲設定手段と、
前記設定された変更非許容範囲を前記属性情報に反映する属性情報変更手段とを備える計算機。
【請求項７】
請求項１に記載の計算機はさらに、
前記記憶装置は、１または複数の前記ファイルを含むディレクトリを有し、
前記ディレクトリにはディレクトリに含まれる前記１または複数のファイルに対する変更を許容するか否かを示すディレクトリ属性情報が関連づけられており、
前記計算機はさらに、
前記ディレクトリ属性情報が前記変更を許容しないことを示すディレクトリにおいて新規のファイルが生成された場合には、前記新規に生成されたファイルに対して前記属性情報を付与する属性情報付与手段を備える計算機。
【請求項８】
請求項１に記載の計算機はさらに、
前記属性情報を格納する属性情報記憶部を備え、
前記属性情報取得手段は、前記属性情報記憶部から前記ファイルに関連づけられている前記属性情報を取得する計算機。
【請求項９】
請求項１ないし請求項８のいずれかに記載の計算機において、
前記記憶装置は複数の記憶ディスク装置から構成されていると共に、前記計算機内部に配置されている計算機。
【請求項１０】
請求項１ないし請求項８のいずれかに記載の計算機において、
前記記憶装置は複数の記憶ディスク装置から構成されていると共に、前記計算機の外部に配置されている計算機。
【請求項１１】
記憶装置に対するアクセスを管理する計算機であって、
前記記憶装置にファイルを作成するファイル作成手段と、
前記作成されたファイルに対してデータを書き込むデータ書き込み手段と、
前記ファイルに対するデータの書き込み毎に、前記ファイルにおける前記書き込まれたデータの格納位置についてデータの変更を許可しない変更不許可を設定する設定手段とを備える計算機。
【請求項１２】
記憶装置に対するアクセスを管理する計算機であって、
１または複数のデータから構成されると共に、前記記憶装置における前記１または複数のデータの格納位置の情報および前記記憶装置における識別情報とを有するファイルを前記記憶装置に作成するファイル作成手段と、
前記ファイルに関連づけられている情報であって、ファイルにおいて変更が許容されない前記データの格納位置を示す変更非許容情報を少なくとも含む属性情報を格納する記憶部と、
前記記憶装置に対するアクセス要求命令を受信する受信手段と、
前記受信されたアクセス要求命令が前記記憶装置に対するデータの書き込み要求であるか否かを判定する命令判定手段と、
前記受信されたアクセス要求命令が前記記憶装置に対するデータの書き込み要求である場合には、前記識別情報を用いてデータの書き込み対象となるファイルを特定し、前記記憶部から前記属性情報を取得して前記ファイルに対するデータの書き込み位置が前記変更非許容情報に含まれる前記格納位置と重複するか否かを判定する格納位置判定手段と、
前記ファイルに対するデータの書き込み位置が前記変更非許容情報に含まれる前記格納位置と重複すると判定された場合には、前記ファイルに対するデータの書き込みを実行しないアクセス制御手段とを備える計算機。
【請求項１３】
請求項１２に記載の計算機において、
前記アクセス制御手段は、前記ファイルに対するデータの書き込み位置が前記変更非許容情報に含まれる前記格納位置と重複しないと判定されると共に、前記データの書き込み位置が前記データの格納位置の情報に記述されている前記ファイルを構成するデータの最終格納位置よりも大きい場合には、前記ファイルに対する追記処理としてのデータの書き込みを実行し、
前記計算機は更に、前記データの前記書き込み位置から書き込み終了位置までを変更を許容しない格納位置に設定する変更非許容範囲設定手段と、
前記設定された変更非許容範囲を前記属性情報に反映する属性情報変更手段とを備える計算機。
【請求項１４】
請求項１２に記載の計算機において、
前記アクセス制御手段は、前記ファイルに対するデータの書き込み位置が前記変更非許容情報に含まれる前記格納位置と重複しないと判定されると共に、前記データの書き込み位置が前記データの格納位置の情報に記述されている前記ファイルを構成するデータの最終格納位置よりも小さい場合には、前記ファイルに対する上書き処理としてのデータの書き込みを実行する計算機。
【請求項１５】
記憶装置に格納されているファイルに対するアクセスの管理方法であって、
前記記憶装置に格納されている前記ファイルに対するデータの書き込み要求があった場合には、前記ファイルに関連づけられている情報であって、ファイルにおける変更が許容されない範囲を示す変更非許容範囲についての情報を少なくとも含む属性情報を取得し、
取得した前記属性情報を参照して、前記ファイルに対するデータの書き込みの対象範囲が前記変更非許容範囲以外の範囲であるか否かを判定し、
前記ファイルに対するデータの書き込みの対象範囲が前記変更非許容範囲に含まれると判定した場合には、前記ファイルに対するデータの書き込みを実行しない管理方法。
【請求項１６】
記憶装置に対するアクセスの管理方法であって、
１または複数のデータから構成されると共に、前記記憶装置における前記１または複数のデータの格納位置の情報および前記記憶装置における識別情報とを有するファイルを前記記憶装置に作成し、
前記記憶装置に対するアクセス要求命令を受信し、
前記受信したアクセス要求命令が前記記憶装置に対するデータの書き込み要求であると判定した場合には、前記ファイルに関連づけられている情報であって、ファイルにおいて変更が許容されない前記データの格納位置を示す変更非許容情報を少なくとも含む属性情報を取得し、
前記識別情報を用いてデータの書き込み対象となるファイルを特定し、
前記記憶部から前記属性情報を取得して前記ファイルに対するデータの書き込み位置が前記変更非許容情報に含まれる前記格納位置と重複するか否かを判定し、
前記ファイルに対するデータの書き込み位置が前記変更非許容情報に含まれる前記格納位置と重複すると判定した場合には、前記ファイルに対するデータの書き込みを実行しない管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のディスク装置を備えるディスクアレイ装置、およびディスクアレイ装置の制御方法に関する。
【背景技術】
【０００２】
近年、ストレージアレイ装置に格納されているデータについて、長期間にわたってデータの内容の維持を保証することが要求されている。例えば、ファイル単位にて、ファイルをＷＯＲＭ（Write-Once, Read-Many）化を実現する技術が知られている（例えば、非特許文献１参照）。
【０００３】
【非特許文献１】"WORM Storage on Magnetic Disks Using Snaplock Compliance and SnapLock Enterprise", Network Appliance社 Technical Report [TR3263] 9/2003, http://www.netapp.com/tech_library/3263.html
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のＷＯＲＭ化技術では、新規作成ファイルや追記中のファイルについては、全データの書き込みが完了し、ファイルの内容が確定してからでなければＷＯＲＭ化することができなかった。したがって、ファイルの内容が確定していない、例えば、書き込み途中のファイルについては、データを保証することができないという問題があった。すなわち、ログファイルのように、１つのファイルについて継続して追記が実行されるファイルでは、ＷＯＲＭ化によってデータを保護することができないという問題があった。
【０００５】
また、ファイルをＷＯＲＭ化するか否かをボリューム単位にて管理しなければならず、使い勝手が悪いという問題があった。さらに、従来のＷＯＲＭ化技術では、ファイル全体をＷＯＲＭ化するかしないか決定しなければならず、ファイルの一部のデータについてＷＯＲＭ化することができないという問題があった。
【０００６】
本発明は上記課題を解決するためになされたものであり、ファイルのデータを保護すると共にファイルに対する追記を許容すること、ファイルの特定範囲についてデータの保護を可能にすることを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために本発明の第１の態様は、記憶装置に格納されているファイルに対するアクセスを管理する計算機を提供する。本発明の第１の態様に係る計算機は、前記記憶装置に格納されている前記ファイルに対するデータの書き込み要求があった場合には、前記ファイルに関連づけられている情報であって、ファイルにおける変更が許容されない範囲を示す変更非許容範囲についての情報を少なくとも含む属性情報を取得する属性情報取得部と、取得された前記属性情報を参照して、前記ファイルに対するデータの書き込みの対象範囲が前記変更非許容範囲以外の範囲であるか否かを判定する判定手段と、前記ファイルに対するデータの書き込みの対象範囲が前記変更非許容範囲に含まれると判定された場合には、前記ファイルに対するデータの書き込みを実行しないアクセス制御手段とを備えることを特徴とする。
【０００８】
本発明の第１の態様に係る計算機によれば、ファイルに対するデータの書き込みの対象範囲が変更非許容範囲以外の範囲であるか否かを判定し、ファイルに対するデータの書き込みの対象範囲が変更非許容範囲に含まれると判定された場合には、ファイルに対するデータの書き込みを実行しないので、ファイルの特定範囲についてデータの保護を可能にすることができる。
【０００９】
本発明の第１の態様に係る計算機はさらに、前記ファイルに対するデータの書き込みの要求が追記の要求であるか否かを判定する追記判定手段を備え、前記属性情報にはさらに、前記ファイルに対するデータの追記を許容するか否かを示す追記許容情報が含まれており、前記アクセス制御手段は、前記ファイルに対するデータの書き込みの要求が追記の要求であると共に、前記ファイルに対するデータの書き込みの対象範囲が前記変更非許容範囲に含まれないと判定され、さらに前記ファイルの前記追記許容情報が前記ファイルに対する追記の許容を示す場合には、前記ファイルに対するデータの追記を実行しても良い。
【００１０】
この構成を備えることにより、ファイルのデータを保護すると共にファイルに対する追記を許容することができる。
【００１１】
本発明の第２の態様は、記憶装置に対するアクセスを管理する計算機を提供する。本発明の第２の態様に係る計算機は、前記記憶装置にファイルを作成するファイル作成手段と、前記作成されたファイルに対してデータを書き込むデータ書き込み手段と、前記ファイルに対するデータの書き込み毎に、前記ファイルにおける前記書き込まれたデータの格納位置についてデータの変更を許可しない変更不許可を設定する設定手段とを備えることを特徴とする。
【００１２】
本発明の第２の態様に係る計算機によれば、ファイルのデータを保護すると共にファイルに対する追記を許容すること、ファイルの特定範囲についてデータの保護を可能にすることができる。
【００１３】
本発明の第３の態様は、記憶装置に対するアクセスを管理する計算機を提供する。本発明の第３の態様に係る計算機は、１または複数のデータから構成されると共に、前記記憶装置における前記１または複数のデータの格納位置の情報および前記記憶装置における識別情報とを有するファイルを前記記憶装置に作成するファイル作成手段と、前記ファイルに関連づけられている情報であって、ファイルにおいて変更が許容されない前記データの格納位置を示す変更非許容情報を少なくとも含む属性情報を格納する記憶部と、前記記憶装置に対するアクセス要求命令を受信する受信手段と、前記受信されたアクセス要求命令が前記記憶装置に対するデータの書き込み要求であるか否かを判定する命令判定手段と、前記受信されたアクセス要求命令が前記記憶装置に対するデータの書き込み要求である場合には、前記識別情報を用いてデータの書き込み対象となるファイルを特定し、前記記憶部から前記属性情報を取得して前記ファイルに対するデータの書き込み位置が前記変更非許容情報に含まれる前記格納位置と重複するか否かを判定する格納位置判定手段と、前記ファイルに対するデータの書き込み位置が前記変更非許容情報に含まれる前記格納位置と重複すると判定された場合には、前記ファイルに対するデータの書き込みを実行しないアクセス制御手段とを備えることを特徴とする。
【００１４】
本発明の第３の態様に係る計算機によれば、ファイルの特定範囲についてデータの保護を可能にすることができる。
【００１５】
本発明の第１〜第３の態様に係る計算機は、この他に記憶装置の管理方法、記憶装置の管理制御プログラム、および記憶装置の管理制御プログラムを記録したコンピュータが読み取り可能な記録媒体としても実現され得る。
【発明を実施するための最良の形態】
【００１６】
以下、本発明に係る計算機および記憶装置の管理方法について図面を参照しつつ、いくつかの実施例に基づいて説明する。
【００１７】
・第１の実施例：
システムの構成：
図１〜図２を参照して第１の実施例に係る計算機について説明する。図１は第１の実施例に係る計算機を含む記憶システムの概略構成を示す説明図である。図２は第１の実施例に係る計算機が備えるメモリに格納されるモジュールを示す説明図である。
【００１８】
第１の実施例における計算機１０は、いわゆるＮＡＳ（Network Attached Storage）ヘッドとして機能する記憶装置を内蔵しないサーバコンピュータであり、外部の記憶装置２０およびネットワーク４０と接続されている。ネットワーク４０は、イーサネット（登録商標）によって構築されているローカルエリアネットワーク（ＬＡＮ）であり、通信プロトコルとしてＴＣＰ／ＩＰプロトコルを用いてデータの伝送が実行される。ネットワーク４０には、クライアントコンピュータ３０、３１、３２が接続されており、クライアントコンピュータ３０〜３２は、計算機１０を介して記憶装置２０に対してアクセスして、記憶装置２０に格納されている情報資源を活用する。なお、ネットワーク４０はルータ４１を介して、インターネット４１に接続されていても良く、この場合、計算機１０は、インターネット４２を介してクライアントコンピュータ３０〜３１からのアクセスを受け付ける。
【００１９】
計算機１０は、ＣＰＵ１１、メモリ１２、リアエンドＩ／Ｏインターフェース１３、フロントエンドＩ／Ｏインターフェース１４を備えている。ＣＰＵ１１、メモリ１２、リアエンドＩ／Ｏインターフェース１３、フロントエンドＩ／Ｏインターフェース１４は相互にバスを介して接続されている。ＣＰＵ１１は、メモリ１２に格納されている各種プログラム、モジュールを実行する演算処理装置である。メモリ１２は、いわゆる内部記憶装置であり、各種モジュール等を記憶する不揮発性メモリおよび演算処理結果を一時的に格納する揮発性メモリの双方を含む。リアエンドＩ／Ｏインターフェース１３は、例えば、ストレージアリアネットワーク（ＳＡＮ）を介して記憶装置２０と接続されている。ＳＡＮではファイバチャネル、ｉＳＣＳＩといった通信プロトコルが用いられる。フロントエンドＩ／Ｏインターフェース１４は、ネットワーク４０に接続されており、ＴＣＰ／ＩＰプロトコルによってクライアントコンピュータ３０〜３２との間でコマンド、データの授受を実行する。
【００２０】
記憶装置２０は、ディスアレイコントローラ２１、接続インターフェース２２、複数のディスク装置２３、Ｉ／Ｏインターフェース２４を備えている。ディスクアレイコントローラ２１は、制御プログラムを実行することによって、記憶装置２０における各種制御処理を実行する制御回路である。ディスクアレイコントローラ２１、接続インターフェース２２を介して複数のディスク装置２３と接続されている。
【００２１】
ディスク装置２３は、複数の磁気ハードディスクドライブによって構成されるディスクアレイ装置であり、複数のハードディスクドライブによって１または複数の論理ボリュームを提供し、あるいは、１つのハードディスクドライブによって１または複数の論理ボリュームを提供する。Ｉ／Ｏインターフェース２４は、計算機１０のリアＩ／Ｏインターフェース１３と信号線を介して接続されている。
【００２２】
クライアントコンピュータ３０〜３２は、例えば、各種データを入力または出力するための端末装置であり、記憶装置２０に対するデータの書き込み、記憶装置２０からのデータの読み出しを実行する。なお、クライアントコンピュータ３０〜３２は、１つであってもよく、あるいは、４つ以上備えられてもよい。
【００２３】
図２を参照して、メモリ１２に格納されている各種プログラム、モジュールについて説明する。メモリ１２には、コマンド処理プログラムＰｒ１、Ｉ／Ｏ処理プログラムＰｒ２、ＷＯＲＭ制御プログラムＰｒ３、オブジェクト管理テーブルＴｂ１、ＷＯＲＭ範囲管理テーブルＴｂ２が格納されている。なお、各種プログラムおよびモジュールは、所定のオペレーティングシステム上において作動する。
【００２４】
コマンド処理プログラムＰｒ１は、クライアントコンピュータ３０〜３２から受信したコマンドの解釈、コマンド実行モジュールに対するコマンドの転送を実行するプログラムであり、例えば、実行すべきコマンドがデータの上書きコマンドであるか、追記コマンドであるか、読み出しコマンドであるかを判定する。
【００２５】
Ｉ／Ｏ処理プログラムＰｒ２は、クライアントコンピュータ３０〜３２、記憶装置２０との間におけるデータおよびコマンドの送受信を制御するためのプログラムである。
【００２６】
ＷＯＲＭ制御プログラムＰｒ３は、本実施例において主要な各種制御を実行するためのプログラムであり、ファイルの一部または全部について、１度書き込みを行った後は読み出しのみを許容するＷＯＲＭ処理を実行するための各種処理を実行する。ＷＯＲＭ制御プログラムＰｒ３は、属性情報取得モジュールＭｄ１、判定モジュールＭｄ２、アクセス制御モジュールＭｄ３、変更非許容範囲設定モジュールＭｄ４、属性情報変更モジュールＭｄ５、追記判定モジュールＭｄ６、属性情報付与モジュールＭｄ７、ファイル作成モジュールＭｄ８、格納位置判定モジュールＭｄ９を備えている。
【００２７】
属性情報取得モジュールＭｄ１は、アクセスの対象となっているファイルに関連付けられている、ファイルの種々の属性、例えば、変更が許容されない範囲を示す変更非許容範囲についての情報を含むオブジェクト管理テーブルＴｂ１を介して、ＷＯＲＭ範囲管理テーブルＴｂ２を取得するためのモジュールである。判定モジュールＭｄ２は、ファイルに対するデータの書き込み先がＷＯＲＭ範囲管理テーブルＴｂ２に記述されているＷＯＲＭ範囲外であるか否かを判定するためのモジュールである。アクセス制御モジュールＭｄ３は、ファイルに対するデータの書き込み先がＷＯＲＭ範囲に含まれる場合にはファイル（記憶装置２０）に対するデータの書き込みを実行せず、ファイルに対するデータの書き込み先がＷＯＲＭ範囲に含まれない場合にはファイル（記憶装置２０）に対するデータの書き込みを実行するモジュールである。アクセス制御モジュールＭｄ３はまた、ファイルに対する書き込み要求が追記の要求の場合には、オブジェクト管理テーブルＴｂ１においてファイルに対する追記が許可されている場合にはファイルに対するデータの追記を実行し、追記が許可されていない場合には、ファイルに対するデータの追記を実行しない。
【００２８】
変更非許容範囲設定モジュールＭｄ４は、ファイルにおけるＷＯＲＭ範囲（変更非許容範囲）を設定するためのモジュールである。属性情報変更モジュールＭｄ５は、変更非許容範囲設定モジュールＭｄ４により設定されたＷＯＲＭ範囲をＷＯＲＭ範囲管理テーブルＴｂ２に反映させたり、変更非許容範囲設定モジュールＭｄ４により設定されたＷＯＲＭ属性をオブジェクト管理テーブルＴｂ１に反映させるためのモジュールである。追記判定モジュールＭｄ６は、ファイルに対する書き込み要求が追記の要求であるか否かを判定するモジュールである。属性情報付与モジュールＭｄ７は、ＷＯＲＭ設定されているディレクトリにおいて新規のファイルが生成された場合には、新規のファイルに対して所定のＷＯＲＭ属性を付与するモジュールである。ファイル作成モジュールＭｄ８は、所定のディレクトリに、新規のファイル（オブジェクト管理テーブルＴｂ１ｆ）を作成（オープン）するためのモジュールである。格納位置判定モジュールＭｄ９は、ファイルに対するデータの書き込み位置がＷＯＲＭ範囲管理テーブルＴｂ２に記述されているＷＯＲＭ範囲の格納範囲外であるか否かを判定するためのモジュールである。
【００２９】
オブジェクト管理テーブルＴｂ１は、ファイルを構成するデータ（データブロック）を指し示すポインタ、あるいは、サブディレクトリを指し示すポインタを備えるテーブルとして機能する。オブジェクト管理テーブルＴｂ１およびＷＯＲＭ範囲管理テーブルＴｂ２について図３〜図７を参照して説明する。図３はファイル用のオブジェクト管理テーブルＴｂ１ｆの一例を示す説明図である。図４はＷＯＲＭ属性の組合せと可能なファイル操作との対応関係を示す説明図である。図５はＷＯＲＭ範囲管理テーブルＴｂ２の一例を示す説明図である。図６はディレクトリ用のオブジェクト管理テーブルＴｂ１ｄの一例を示す説明図である。図７はＷＯＲＭ属性の組合せと可能なディレクトリ操作との対応関係を示す説明図である。
【００３０】
図３に示すファイル用のオブジェクト管理テーブルＴｂ１ｆは、ファイルを一意に識別するための識別番号、オブジェクト管理テーブルが管理する種類、ファイルのサイズ、権限情報、所有者情報、作成および更新日時といった一般的なファイルの属性、ＷＯＲＭの対象がファイルの全部（１）、一部（２）、なし（０）のいずれであるかを示すＷＯＲＭ対象範囲、設定されたＷＯＲＭの有効期限を示すＷＯＲＭ有効期限、ＷＯＲＭ化されたファイルに対する追記が許可（１）、不許可（０）のいずれであるかを示すＷＯＲＭ追記許可、追記されたデータのＷＯＲＭ化を行う（１）、行わない（０）のいずれであるかを示す更新後ＷＯＲＭ属性といったＷＯＲＭに関する属性を有している。
【００３１】
ＷＯＲＭ属性の組み合わせと可能なファイル操作の関係について図４を参照して説明する。ＷＯＲＭ対象範囲が（０）に設定される場合には、ファイルにはＷＯＲＭの対象となる対象範囲がないことを意味し、通常のファイルと同様にしてファイル全体への上書・追記・削除が可能となる。ＷＯＲＭ対象範囲が（１）に設定される場合には、ファイルの全部がＷＯＲＭの対象となっていることを意味し、ＷＯＲＭ有効期限には無期限を示す（−１）または具体的な年月日が記述される。この場合には、従来のＷＯＲＭ化ファイルと同様にしてファイル全体への上書・追記・削除ができない。
【００３２】
ＷＯＲＭ対象範囲が（２）に設定される場合には、ファイルの一部がＷＯＲＭの対象となっていることを意味し、ＷＯＲＭ有効期限は各範囲毎にＷＯＲＭ範囲管理テーブルＴｂ２によって規定されるためＮＵＬＬとされる。ＷＯＲＭ範囲管理テーブルＴｂ２は、各ファイルに対応するＷＯＲＭ範囲管理テーブルＴｂ２へのポインタによって特定される。ＷＯＲＭ追記許可の値が（０）の場合には、追記が許可されないためファイルの一部（ＷＯＲＭ化されている部分）への上書・追記・削除ができない。一方、ＷＯＲＭ追記許可の値が（１）の場合には、追記が許可されるためファイルの一部（ＷＯＲＭ化されている部分）への上書・削除はできないものの、追記は許される。さらに、この場合、更新後ＷＯＲＭ属性の値が（０）の場合には、追記部分はＷＯＲＭ化されず、更新後ＷＯＲＭ属性の値が（１）の場合には、追記部分はＷＯＲＭ化される。
【００３３】
ファイル用のオブジェクト管理テーブルＴｂ１ｆはさらに、ファイルのＷＯＲＭ範囲を示すＷＯＲＭ範囲管理テーブルＴｂ２へのポインタ、ファイルに属するデータブロックへのポインタをそれぞれ備えている。これら各ポインタは、例えば、論理ブロックアドレス（ＬＢＡ）の基準値、例えば、０値からのオフセット値として記述されている。すなわち、論理ブロックアドレスとオフセット値によって、論理ボリュームにおける、各データブロックまたはＷＯＲＭ範囲管理テーブルＴｂ２の論理的な格納位置（アドレス）が特定される。特定された論理アドレスは記憶装置２０におけるディスクアレイコントローラ２１によって物理アドレスに変換され、所定のディスク装置２３の物理的なアドレス（格納位置）が特定される。なお、１のファイルを構成するデータブロックが複数の場合には、直接複数のデータブロックをポイントするための複数のオフセット値が格納されていてもよく、あるいは、間接的に複数のデータブロックをポイントするために多段のポインタ群をポイントするためのオフセット値が格納されていても良い。
【００３４】
図５に示すＷＯＲＭ範囲管理テーブルＴｂ２は、ファイルを構成するデータのうち、ＷＯＲＭ化する範囲を開始オフセットと終了オフセットで特定する。開始オフセットと終了オフセットで特定される各範囲には、有効期限が設定されている。有効期限が切れた後であっても、直ちには上書・削除は有効とならず、ＷＯＲＭ属性解除処理を実行して初めて、制限なく上書・削除が可能となる。
【００３５】
図６に示すディレクトリ用のオブジェクト管理テーブルＴｂ１ｄは、ファイル用のオブジェクト管理テーブルＴｂ１ｆと同様の構成を備えており、ディレクトリを一意に識別するための識別番号、オブジェクト管理テーブルが管理する種類、ディレクトリのサイズ、権限情報、所有者情報、作成および更新日時といった一般的なディレクトリの属性、ＷＯＲＭの対象がディレクトリの全部（１）、一部（２）、なし（０）のいずれであるかを示すＷＯＲＭ対象範囲、設定されたＷＯＲＭの有効期限を示すＷＯＲＭ有効期限、ＷＯＲＭ化されたディレクトリに含まれるファイルに対する追記が許可（１）、不許可（０）のいずれであるかを示すＷＯＲＭ追記許可、ディレクトリに含まれるファイルに追記されたデータのＷＯＲＭ化を行う（１）、行わない（０）のいずれであるかを示す更新後ＷＯＲＭ属性といったＷＯＲＭに関する属性を有している。
【００３６】
ＷＯＲＭ属性の組み合わせと可能なディレクトリ操作との関係について図７を参照して説明する。ＷＯＲＭ対象範囲が（０）に設定される場合には、ディレクトリにはＷＯＲＭの対象でないことを意味し、通常のディレクトリと同様にしてディレクトリ内部への新規ファイル・ディレクトリの作成・削除が可能となる。ＷＯＲＭ対象範囲が（１）に設定される場合には、ディレクトリの全部がＷＯＲＭの対象となっていることを意味し、ＷＯＲＭ有効期限には無期限を示す（−１）または具体的な年月日が記述される。この場合には、ディレクトリ内部への新規ファイル・ディレクトリの作成・削除ができない。
【００３７】
ＷＯＲＭ対象範囲が（２）に設定される場合には、ディレクトリの一部がＷＯＲＭの対象となっていることを意味し、ＷＯＲＭ有効期限には無期限を示す（−１）または具体的な年月日が記述される。対象がディレクトリの場合には、ファイルにおけるＷＯＲＭ範囲を示すＷＯＲＭ範囲管理テーブルＴｂ２へのポインタは無効（ＮＵＬＬ）とされる。ＷＯＲＭ追記許可の値は（１：許可）に設定され、ディレクトリ内部への新規ファイル・ディレクトリの作成はできるが削除はできない。更新後ＷＯＲＭ属性の値が（０）の場合には、ディレクトリ内部に新規に作成されたファイルには通常ファイルの属性が与えられる。一方、更新後ＷＯＲＭ属性の値が（１）の場合には、ディレクトリ内部に新規に作成されたファイルにはＷＯＲＭの属性が与えられる。
【００３８】
ディレクトリ用のオブジェクト管理テーブルＴｂ１ｄはさらに、ディレクトリに含まれるサブディレクトリまたはファイルを特定するポインタをそれぞれ備えている。これら各ポインタは、例えば、論理ブロックアドレス（ＬＢＡ）の基準値、例えば、０値からのオフセット値として記述されている。すなわち、論理ブロックアドレスとオフセット値によって、論理ボリュームにおける、ディレクトリまたはファイルの論理的な格納位置（アドレス）が特定される。
【００３９】
図８を参照して、ファイルシステムの論理構造について説明する。図８はファイルシステムの論理構造の一例を示す説明図である。図８に示すように、識別番号２のディレクトリ内にあるファイルhogeに対するアクセスが実行される際には、クライアントコンピュータ３０〜３２から、ファイルhogeを特定するための識別番号、ファイルhogeを格納するディレクトリを特定するためのファイル名およびモード（read-only、read-write等）がファイルシステムを備える計算機１０に送られてくる。計算機１０のオペレーティングシステム（ＯＳ）は、該当ファイルのopenに成功すると、該当ファイルの識別番号を返す。なお、新規ファイルの場合には対応するオブジェクト管理テーブルが作成される。
【００４０】
計算機１０は、ルートディレクトリ（そのディレクトリに含まれるファイル、ディレクトリの名前、オブジェクト管理テーブルＴｂ１を示すポインタのリストを格納するデータブロック）を通じて、指定されたディレクトリの識別番号に基づき該当する識別番号、図８の例では識別番号２、のオブジェクト管理テーブルをポイント（取得）する。続いて、識別番号２のディレクトリのオブジェクト管理テーブルによって、対応するディレクトリデータブロックがポイントされる。ポイントされたディレクトリデータブロックにはファイルhogeのオブジェクト管理テーブル（識別番号２６）に対するポインタが用意されており、かかるポインタによって識別番号２６のオブジェクト管理テーブルがポイントされる。識別番号２６のオブジェクト管理テーブルには既述のようにファイルを構成する実データを格納するデータブロックに対するポインタが記述されているので、かかるポインタによってファイルhogeが特定される。
【００４１】
一方、識別番号２のディレクトリ内にある識別番号１７のサブディレクトリ内に格納されているファイルgccに対するアクセスが実行される際には、識別番号２のディレクトリのオブジェクト管理テーブルによって、ディレクトリデータブロックがポイントされ、リストデータによって識別番号３２のサブディレクトリのオブジェクト管理テーブルがポイントされる。識別番号３２のサブディレクトリのオブジェクト管理テーブルによって、識別番号１７のサブディレクトリのオブジェクト管理テーブルがポイントされ、識別番号１７のサブディレクトリのオブジェクト管理テーブルによって、ファイルgccのオブジェクト管理テーブル（識別番号４２）がポイントされる。識別番号４２のオブジェクト管理テーブルに記述されているファイルgccを構成する実データを格納するデータブロックに対するポインタによってファイルgccが特定される。
【００４２】
特定したファイルに対するデータの書き込み処理において、既存ファイルの一部に書き込み対象範囲が存在する場合や、新規ファイルの先頭や中間部分を空の状態にして穴あきファイルを作成する場合には、識別番号とオフセットを指定してseek操作が行われてから、実データの書き込み処理が実行される。この場合、新規ファイルに対して、先頭アドレスから１ＫＢの実データを書き込む際には、オブジェクト管理テーブルＴｂ１上のファイルサイズは１ＫＢであるが、たとえば、２ＴＢまでseekした後に実データを書き込む場合には、ファイルサイズは２ＴＢ＋１ＫＢとなる。
【００４３】
図９を参照して第１の実施例におけるデータの書き込み処理について説明する。図９は第１の実施例に係る計算機１０によって実行されるデータの書き込み処理の処理ルーチンを示すフローチャートである。
【００４４】
本処理は、クライアントコンピュータ３０〜３２におけるキーボード、マウス等の入力機器を介して、ユーザからデータの書き込み要求（コマンド）が計算機１０に入力され、ＣＰＵ１１によってコマンド処理プログラムＰｒ１、ＷＯＲＭ制御プログラムＰｒ３が実行されることによって開始される。クライアントコンピュータ３０〜３２から要求（コマンド）を受け取ると、ＣＰＵ１１はコマンドの種別を判断し、書き込みコマンドであると判断した場合には、以下の書き込み処理を実行する。
【００４５】
ＣＰＵ１１は、書き込みが要求されているデータ、クライアントコンピュータ３０〜３２から入力されたファイル名に対応する、データを書き込むべきファイルのオブジェクト管理テーブルＴｂ１ｆを取得する（ステップＳ１００）。ＣＰＵ１１は取得したオブジェクト管理テーブルＴｂ１ｆを参照してＷＯＲＭ判定値を判定する（ステップＳ１０１）。ＣＰＵ１１は、オブジェクト管理テーブルＴｂ１ｆにおけるＷＯＲＭ判定値が全部（１）の場合には（ステップＳ１０１：全部）、ファイル全体へのデータの上書・追記が許容されないので、書き込み権限エラーをクライアントコンピュータ３０〜３２に返して（ステップＳ１０２）、本処理ルーチンを終了する。
【００４６】
ＣＰＵ１１は、オブジェクト管理テーブルＴｂ１ｆにおけるＷＯＲＭ判定値が一部（２）の場合には（ステップＳ１０１：一部）、書き込み要求がファイルに対する追記の要求であるか否かを判定する（ステップＳ１０３）。すなわち、書き込み要求が、ファイルを構成する既存データの書き換え（上書き）であるのか、ファイルを構成する既存データに対する追記であるのかを判定する。具体的には、書き込みが要求されている開始オフセット値（論理アドレス）が、ファイルにおける既存データの最終オフセット値（論理アドレス）よりも大きいか否かによって判定される。
【００４７】
ＣＰＵ１１は、書き込み要求がファイルに対する上書きの要求である、すなわち、開始オフセット値がファイルサイズ以下であると判定した場合には（ステップＳ１０３：Ｎｏ）、データの書き込み対象範囲がＷＯＲＭ範囲に含まれているか否かを判定する（ステップＳ１０４）。具体的には、ＣＰＵ１１は対象となるファイルのオブジェクト管理テーブルＴｂ１ｆによってポイントされるＷＯＲＭ範囲管理テーブルＴｂ２を参照し、データの書き込み対象範囲が、ＷＯＲＭ範囲と重複するか否かを判定する。ここで、書き込み対象範囲は、開始オフセット値およびデータサイズによって定まる書き込み終了オフセット値によって規定され、ＷＯＲＭ範囲は、ＷＯＲＭ管理テーブルＴｂ２中の開始オフセット値〜終了オフセット値によって規定される。
【００４８】
ＣＰＵ１１は、書き込み対象範囲がＷＯＲＭ範囲に含まれないと判定した場合には（ステップＳ１０４：Ｎｏ）、データの書き込みを行う（ステップＳ１０５）。具体的には、ＣＰＵ１１は記憶装置２０のディスクアレイコントローラ２１に対して、ディスク装置２３に対するデータの書き込みを指示すると共に、オブジェクト管理テーブルＴｂ１ｆにおけるポインタを更新する。ＣＰＵ１１から書き込み指示を受けたディスクアレイコントローラ２１は、指示された論理的な書き込み対象範囲（アドレス）を物理的な書き込み対象範囲（アドレス）に変換してディスク装置２３に対するデータ（データブロック）の書き込みを実行すると共に、その対応関係をアドレス変換テーブルに記録する。
【００４９】
ＣＰＵ１１は、書き込み対象範囲がＷＯＲＭ範囲に含まれると判定した場合には（ステップＳ１０４：Ｙｅｓ）、ＷＯＲＭ範囲に対するデータの上書きは許容されていないので、書き込み権限エラーをクライアントコンピュータ３０〜３２に返して（ステップＳ１０２）、本処理ルーチンを終了する。書き込み対象範囲がＷＯＲＭ範囲に含まれる態様として、書き込みがファイル全体への上書きである場合、書き込みがファイルの一部への上書きであるが、対象となる書き込み範囲はＷＯＲＭ設定されている場合の２つの態様がある。
【００５０】
ＣＰＵ１１は、ステップＳ１０３にて、書き込み要求が追記の要求であると判定した場合には（ステップＳ１０３：Ｙｅｓ）、オブジェクト管理テーブルＴｂ１ｆを参照してＷＯＲＭ追記許可値を判定する（ステップＳ１０６）。ＣＰＵ１１は、オブジェクト管理テーブルＴｂ１ｆにおけるＷＯＲＭ追記許可値が不許可（０）であると判定した場合には（ステップＳ１０６：Ｎｏ）、対象ファイルに対する追記が許容されていないので、書き込み権限エラーをクライアントコンピュータ３０〜３２に返して（ステップＳ１０２）、本処理ルーチンを終了する。
【００５１】
ＣＰＵ１１は、オブジェクト管理テーブルＴｂ１ｆにおけるＷＯＲＭ追記許可値が許可（１）であると判定した場合には（ステップＳ１０６：Ｙｅｓ）、ステップＳ１０５に移行して、ファイルに対する追記データの書き込みを実行する。具体的には、ＣＰＵ１１は記憶装置２０のディスクアレイコントローラ２１に対して、ディスク装置２３に対するデータの書き込みを指示すると共に、追記したデータ（データブロック）に対するポインタをオブジェクト管理テーブルＴｂ１ｆに追記する。
【００５２】
データの書き込みを終えると、ＣＰＵ１１は、対象ファイルのオブジェクト管理テーブルＴｂ１ｆを参照して、更新後ＷＯＲＭ値を判定する（ステップＳ１０７）。ＣＰＵ１１はオブジェクト管理テーブルＴｂ１ｆにおける更新後ＷＯＲＭ値がＷＯＲＭ（１）の場合には（ステップＳ１０７：ＷＯＲＭ）、ファイルの一部またはファイルに追記されたデータについてＷＯＲＭの設定を行うためにＷＯＲＭ範囲管理テーブルＴｂ２の更新を行って（ステップＳ１０８）、本処理ルーチンを終了する。
【００５３】
ＷＯＲＭ範囲管理テーブルＴｂ２の更新は、ファイルの一部またはファイルに追記されたデータの開始オフセット値と終了オフセット値とをＷＯＲＭ範囲管理テーブルＴｂ２に追記し、追記されたＷＯＲＭ範囲に対する有効期限として、ファイル作成時における有効期限が記述される。なお、後述するように、有効期限を延長することは可能である。
【００５４】
ＣＰＵ１１はオブジェクト管理テーブルＴｂ１ｆにおける更新後ＷＯＲＭ値が通常（０）の場合には（ステップＳ１０７：通常）、ファイルの一部またはファイルに追記されたデータをＷＯＲＭ化することなく、すなわち通常データとして、本処理ルーチンを終了する。
【００５５】
図１０を参照して第１の実施例における新規ファイルオープン処理について説明する。図１０は第１の実施例に係る計算機１０によって実行される新規ファイルオープン処理の処理ルーチンを示すフローチャートである。
【００５６】
本処理は、クライアントコンピュータ３０〜３２におけるキーボード、マウス等の入力機器を介して、ユーザから新規ファイルの作成（オープン）要求が計算機１０に入力され、ＣＰＵ１１によってコマンド処理プログラムＰｒ１、ＷＯＲＭ制御プログラムＰｒ３が実行されることによって開始される。クライアントコンピュータ３０〜３２から要求（コマンド）を受け取ると、ＣＰＵ１１はコマンドの種別を判断し、ファイルオープンコマンドであると判断した場合には、以下のファイルオープン処理を実行する。
【００５７】
ＣＰＵ１１は、ファイル名、有効期限の入力を受け（ステップＳ２００）、ファイルが関連する上位ディレクトリ、すなわち、ファイルが作成されるディレクトリ、あるいは、ファイル作成ディレクトリがサブディレクトリの場合には上位のディレクトリ、のオブジェクト管理テーブルＴｂ１ｄを参照してＷＯＲＭ判定値を判定する（ステップＳ２０１）。ここで、ファイル名については必須の入力項目であるが、有効期限についてはＷＯＲＭ設定をしないファイルについては必ずしも必須の入力項目ではない。
【００５８】
ＣＰＵ１１は、上位ディレクトリのオブジェクト管理テーブルＴｂ１ｄにおけるＷＯＲＭ判定値が全部（１）の場合には（ステップＳ２０１：全部）、上位ディレクトリ内への新規ファイルの作成は許されないので、クライアントコンピュータ３０〜３２に返す新規ファイルオープンエラーのステータスを発行して（ステップＳ２０２）、本処理ルーチンを終了する。
【００５９】
ＣＰＵ１１は、上位ディレクトリのオブジェクト管理テーブルＴｂ１ｄにおけるＷＯＲＭ判定値が一部（２）の場合には（ステップＳ２０１：一部）、上位ディレクトリのオブジェクト管理テーブルＴｂ１ｄにおける更新後ＷＯＲＭ値を判定する（ステップＳ２０３）。ＣＰＵ１１は上位ディレクトリのオブジェクト管理テーブルＴｂ１ｄにおける更新後ＷＯＲＭ値がＷＯＲＭ（１）の場合には（ステップＳ２０３：ＷＯＲＭ）、新規作成ファイルはＷＯＲＭファイルとして作成されるので、新規ファイル用のオブジェクト管理テーブルＴｂ１ｆをオープンして（ステップＳ２０４）、本処理ルーチンを終了する。
【００６０】
新規ファイル用のオブジェクト管理テーブルＴｂ１ｆの初期値は、ＷＯＲＭ対象範囲：一部（２）、ＷＯＲＭ追記許可：許可（１）、更新後ＷＯＲＭ属性：ＷＯＲＭ（１）に設定される。また、有効期限には、有効期限の入力があった場合には入力された有効期限が設定され、有効期限の入力がなかった場合には上位ディレクトリに規定されている有効期限が承継される。
【００６１】
ＣＰＵ１１は、上位ディレクトリのオブジェクト管理テーブルＴｂ１ｄにおける更新後ＷＯＲＭ値が通常（０）の場合には（ステップＳ２０３：通常）、新規作成ファイルは通常ファイルとして作成されるので、新規作成ファイルを通常ファイルとしてオープンし（ステップＳ２０５）、本処理ルーチンを終了する。
【００６２】
ＣＰＵ１１は、上位ディレクトリのオブジェクト管理テーブルＴｂ１ｄにおけるＷＯＲＭ判定値がなし（０）の場合には（ステップＳ２０１：なし）、新規作成ファイルは通常ファイルとして作成されるので、新規作成ファイルを通常ファイルとしてオープンし（ステップＳ２０５）、本処理ルーチンを終了する。
【００６３】
図１１を参照して第１の実施例におけるＷＯＲＭ属性設定処理について説明する。図１１は第１の実施例に係る計算機１０によって実行されるＷＯＲＭ属性設定処理の処理ルーチンを示すフローチャートである。
【００６４】
本処理は、例えば、クライアントコンピュータ３０〜３２におけるキーボード、マウス等の入力機器を介して、ユーザから既存ファイルに対するＷＯＲＭ化の要求が計算機１０に入力され、ＣＰＵ１１によってコマンド処理プログラムＰｒ１、ＷＯＲＭ制御プログラムＰｒ３が実行されることによって開始される。クライアントコンピュータ３０〜３２から要求（コマンド）を受け取ると、ＣＰＵ１１はコマンドの種別を判断し、ＷＯＲＭ属性設定コマンドであると判断した場合には、以下のＷＯＲＭ属性設定処理を実行する。
【００６５】
ＣＰＵ１１は、クライアントコンピュータ３０〜３２から、設定の対象となるファイル名、ファイルの対象範囲（開始・終了オフセット）、有効期限を取得し（ステップＳ３００）、ＷＯＲＭの設定範囲がファイルに対して適切であるか否かを判定する（ステップＳ３０１）。具体的には、入力されたファイルの対象範囲（オフセット範囲）が対象ファイルのサイズ（オフセット範囲）以下であるか否かが判定される。なお、有効期限の入力は任意である。
【００６６】
ＣＰＵ１１は、ＷＯＲＭの設定範囲がファイルに対して適切でない、すなわち、入力されたオフセット範囲が対象ファイルサイズよりも大きいと判定した場合には（ステップＳ３０１：Ｎｏ）、以降の処理を実行することができないので、クライアントコンピュータ３０〜３２に対してＷＯＲＭ属性設定エラーを返して（ステップＳ３０２）、本処理ルーチンを終了する。
【００６７】
ＣＰＵ１１は、ＷＯＲＭの設定範囲がファイルに対して適切である、すなわち、入力されたオフセット範囲が対象ファイルサイズ以下であると判定した場合には（ステップＳ３０１：Ｙｅｓ）、対象ファイルのオブジェクト管理テーブルＴｂ１ｆを参照してＷＯＲＭ対象範囲値を判定する（ステップＳ３０３）。ＣＰＵ１１は、ＷＯＲＭ対象範囲値が一部（２）であると判定した場合は（ステップＳ３０３：一部）、ＷＯＲＭ範囲管理テーブルＴｂ２を更新して本処理ルーチンを終了する。具体的には、入力されたオフセット範囲をＷＯＲＭ範囲管理テーブルＴｂ２に記述し、有効期限が入力されている場合には入力された有効期限を、有効期限が入力されていない場合には無限（−１）を有効期限として記述する。
【００６８】
ＣＰＵ１１は、ＷＯＲＭ対象範囲値が全部（１）またはなし（０）であると判定した場合は（ステップＳ３０３：全部／なし）、オブジェクト管理テーブルＴｂ１ｆを更新して本処理ルーチンを終了する。具体的には、オブジェクト管理テーブルＴｂ１ｆにおける、ＷＯＲＭ対象範囲を一部（２）に、ＷＯＲＭ追記許可を許可（１）に、更新後ＷＯＲＭ属性をＷＯＲＭ（１）に変更する。また、入力されたオフセット範囲をＷＯＲＭ範囲管理テーブルＴｂ２に記述し、有効期限が入力されている場合には入力された有効期限を、有効期限が入力されていない場合には無限（−１）を有効期限として記述する。
【００６９】
図１２を参照して第１の実施例におけるＷＯＲＭ属性解除処理について説明する。図１２は第１の実施例に係る計算機１０によって実行されるＷＯＲＭ属性解除処理の処理ルーチンを示すフローチャートである。
【００７０】
本処理は、例えば、クライアントコンピュータ３０〜３２におけるキーボード、マウス等の入力機器を介して、ユーザから既存ファイルに対するＷＯＲＭ属性の解除の要求が計算機１０に入力され、ＣＰＵ１１によってコマンド処理プログラムＰｒ１、ＷＯＲＭ制御プログラムＰｒ３が実行されることによって開始される。クライアントコンピュータ３０〜３２から要求（コマンド）を受け取ると、ＣＰＵ１１はコマンドの種別を判断し、ＷＯＲＭ属性解除コマンドであると判断した場合には、以下のＷＯＲＭ属性解除処理を実行する。
【００７１】
ＣＰＵ１１は、クライアントコンピュータ３０〜３２から、設定の対象となるファイル名、ファイルの対象範囲（開始・終了オフセット）、有効期限を取得し（ステップＳ４００）、ＷＯＲＭの解除範囲がファイルに対して適切であるか否かを判定する（ステップＳ４０１）。具体的には、入力されたファイルの対象範囲（オフセット範囲）が対象ファイルのサイズ（オフセット範囲）以下であるか否かが判定される。なお、有効期限の入力は任意である。
【００７２】
ＣＰＵ１１は、ＷＯＲＭの解除範囲がファイルに対して適切でない、すなわち、入力されたオフセット範囲が対象ファイルサイズよりも大きいと判定した場合には（ステップＳ４０１：Ｎｏ）、以降の処理を実行することができないので、クライアントコンピュータ３０〜３２に対してＷＯＲＭ属性解除権限エラーを返して（ステップＳ４０２）、本処理ルーチンを終了する。
【００７３】
ＣＰＵ１１は、ＷＯＲＭの解除範囲がファイルに対して適切である、すなわち、入力されたオフセット範囲が対象ファイルサイズ以下であると判定した場合には（ステップＳ４０１：Ｙｅｓ）、対象ファイルのオブジェクト管理テーブルＴｂ１ｆを参照してＷＯＲＭ対象範囲値を判定する（ステップＳ４０３）。
【００７４】
ＣＰＵ１１は、ＷＯＲＭ対象範囲値がなし（０）であると判定した場合には（ステップＳ４０３：なし）、対象ファイルにはＷＯＲＭ属性が設定されていないので、本処理ルーチンを終了する。
【００７５】
ステップＳ４０３において、ＣＰＵ１１は、ＷＯＲＭ対象範囲値が一部（２）であると判定した場合は（ステップＳ４０３：一部）、ＷＯＲＭ範囲管理テーブルＴｂ２を参照して入力されたオフセット範囲がＷＯＲＭ範囲に含まれるか否かを判定する（ステップＳ４０４）。ＣＰＵ１１は、入力されたオフセット範囲がＷＯＲＭ範囲に含まれていないと判定した場合には（ステップＳ４０４：Ｎｏ）、解除すべきＷＯＲＭ範囲が存在しないので、本処理ルーチンを終了する。
【００７６】
ＣＰＵ１１は、入力されたオフセット範囲がＷＯＲＭ範囲に含まれていると判定した場合には（ステップＳ４０４：Ｙｅｓ）、入力されたオフセット範囲に対応するＷＯＲＭ範囲の有効期限値を判定する。ＣＰＵ１１は、入力されたオフセット範囲に対応するＷＯＲＭ範囲の有効期限値が有効であると判定した場合には（ステップＳ４０５：有効）、クライアントコンピュータ３０〜３２に対してＷＯＲＭ属性解除権限エラーを返して（ステップＳ４０２）、本処理ルーチンを終了する。すなわち、本実施例においては、有効期限が有効である場合には、ＷＯＲＭ属性を解除することができない。
【００７７】
ＣＰＵ１１は、入力されたオフセット範囲に対応するＷＯＲＭ範囲の有効期限値が無効であると判定した場合には（ステップＳ４０５：無効）、入力されたオフセット範囲をＷＯＲＭ範囲管理テーブルＴｂ２から削除して（ステップＳ４０６）、本処理ルーチンを終了する。
【００７８】
ステップＳ４０３において、ＣＰＵ１１は、対象範囲値が全部（１）であると判定した場合には（ステップＳ４０３：全部）、オブジェクト管理テーブルＴｂ１ｆのＷＯＲＭ有効期限値を判定する（ステップＳ４０７）。ＣＰＵ１１は、ＷＯＲＭ有効期限値が有効であると判定した場合には（ステップＳ４０７：有効）、クライアントコンピュータ３０〜３２に対してＷＯＲＭ属性解除権限エラーを返して（ステップＳ４０２）、本処理ルーチンを終了する。すなわち、既述の通り、本実施例においては、有効期限が有効である場合には、ＷＯＲＭ属性を解除することができない。
【００７９】
ＣＰＵ１１は、ＷＯＲＭ有効期限値が無効であると判定した場合には（ステップＳ４０７：無効）、オブジェクト管理テーブルＴｂ１ｆを更新して（ステップＳ４０８）、本処理ルーチンを終了する。具体的には、オブジェクト管理テーブルＴｂ１ｆにおけるＷＯＲＭ対象範囲を一部（２）に、有効期限をＮＵＬＬに変更し、入力されたオフセット範囲以外のファイル範囲をＷＯＲＭ範囲管理テーブルＴｂ２に記述する。ＷＯＲＭ範囲管理テーブルＴｂ２における有効期限は、有効期限が入力されている場合には入力された有効期限に設定され、入力されていない場合にはオブジェクト管理テーブルＴｂ１ｆに記述されていた有効期限を承継する。
【００８０】
図１３を参照して第１の実施例におけるＷＯＲＭ有効期限設定処理について説明する。図１３は第１の実施例に係る計算機１０によって実行されるＷＯＲＭ有効期限設定処理の処理ルーチンを示すフローチャートである。
【００８１】
本処理は、クライアントコンピュータ３０〜３２におけるキーボード、マウス等の入力機器を介して、ユーザから既存のファイルに対してＷＯＲＭ有効期限設定の要求が計算機１０に入力され、ＣＰＵ１１によってコマンド処理プログラムＰｒ１、ＷＯＲＭ制御プログラムＰｒ３が実行されることによって開始される。クライアントコンピュータ３０〜３２から要求（コマンド）を受け取ると、ＣＰＵ１１はコマンドの種別を判断し、ＷＯＲＭ有効期限設定コマンドであると判断した場合には、以下のＷＯＲＭ有効期限設定処理を実行する。
【００８２】
ＣＰＵ１１は、クライアントコンピュータ３０〜３２から、設定の対象となるファイル名、ファイルの対象範囲（開始・終了オフセット）、有効期限を取得し（ステップＳ５００）、ＷＯＲＭの有効期限設定範囲がファイルに対して適切であるか否かを判定する（ステップＳ５０１）。具体的には、入力されたファイルの対象範囲（オフセット範囲）が対象ファイルのサイズ（オフセット範囲）以下であるか否かが判定される。
【００８３】
ＣＰＵ１１は、ＷＯＲＭの有効期限設定範囲がファイルに対して適切でない、すなわち、入力されたオフセット範囲が対象ファイルサイズよりも大きいと判定した場合には（ステップＳ５０１：Ｎｏ）、以降の処理を実行することができないので、クライアントコンピュータ３０〜３２に対してＷＯＲＭ有効期限設定エラーを返して（ステップＳ５０２）、本処理ルーチンを終了する。
【００８４】
ＣＰＵ１１は、ＷＯＲＭの有効期限設定範囲がファイルに対して適切である、すなわち、入力されたオフセット範囲が対象ファイルサイズ以下であると判定した場合には（ステップＳ５０１：Ｙｅｓ）、対象ファイルのオブジェクト管理テーブルＴｂ１ｆを参照してＷＯＲＭ対象範囲値を判定する（ステップＳ５０３）。
【００８５】
ＣＰＵ１１は、ＷＯＲＭ対象範囲値が全部（１）または、なし（０）であると判定した場合には（ステップ５０３：全部／なし）、クライアントコンピュータ３０〜３２に対してＷＯＲＭ有効期限設定エラーを返して（ステップＳ５０２）、本処理ルーチンを終了する。すなわち、ＷＯＲＭ対象範囲が全部の場合には一旦設定された有効期限の変更は許されず、一方、ＷＯＲＭ対象範囲がなしの場合には有効期限はＮＵＬＬな項目だからである。
【００８６】
ＣＰＵ１１は、ＷＯＲＭ対象範囲値が一部（２）であると判定した場合には（ステップ５０３：一部）、入力されたオフセット範囲がＷＯＲＭ範囲と一致するか否かを判定する（ステップＳ５０４）。具体的には、対象ファイルのオブジェクト管理テーブルＴｂ１ｆを介してＷＯＲＭ範囲管理テーブルＴｂ２を参照し、入力されたオフセット範囲が設定されているＷＯＲＭ範囲と一致するか否かを判定する。
【００８７】
ＣＰＵ１１は、入力されたオフセット範囲がＷＯＲＭ範囲と一致しないと判定した場合には（ステップＳ５０４：Ｎｏ）、クライアントコンピュータ３０〜３２に対してＷＯＲＭ有効期限設定エラーを返して（ステップＳ５０２）、本処理ルーチンを終了する。すなわち、入力されたオフセット範囲とＷＯＲＭ範囲とが一致しない場合には、入力されたオフセット範囲は、対象ファイルに対して適切なオフセット範囲ではないからである。
【００８８】
ＣＰＵ１１は、入力されたオフセット範囲がＷＯＲＭ範囲と一致すると判定した場合には（ステップＳ５０４：Ｙｅｓ）、既設定の有効期限が入力された有効期限よりも新しいか否かを判定する（ステップＳ５０５）。具体的には、ＣＰＵ１１は、ＷＯＲＭ範囲管理テーブルＴｂ２を参照して、入力された有効期限と入力されたオフセット範囲に対応するＷＯＲＭ範囲の有効期限とを用いて判定する。
【００８９】
ＣＰＵ１１は、入力された有効期限が既設定の有効期限よりも古いと判定した場合には（ステップＳ５０５：Ｎｏ）、クライアントコンピュータ３０〜３２に対してＷＯＲＭ有効期限設定エラーを返して（ステップＳ５０２）、本処理ルーチンを終了する。すなわち、本実施例では、有効期限を短縮する変更は認められず、有効期限を延長する変更のみが認められるからである。
【００９０】
ＣＰＵ１１は、入力された有効期限が既設定の有効期限よりも新しいと判定した場合には（ステップＳ５０５：Ｙｅｓ）、ＷＯＲＭ範囲管理テーブルＴｂ２を更新して、本処理ルーチンを終了する。具体的には、ＣＰＵ１１は、ＷＯＲＭ範囲管理テーブルＴｂ２における、入力されたオフセット範囲に対応するＷＯＲＭ範囲の有効期限を、入力された有効期限に設定する。
【００９１】
以上説明したように、第１の実施例に係る計算機１０によれば、ＷＯＲＭ範囲をオフセット単位にてＷＯＲＭ範囲管理テーブルＴｂ２に記述するので、ファイル全体に対してのみならず、ファイルの一部について変更非許容範囲（ＷＯＲＭ範囲）を設定することができる。したがって、ファイルの使用形態に応じて、柔軟に上書きを許容するＷＯＲＭファイルを作成することができる。例えば、変更非許容な（ＷＯＲＭ化されている）ファイルに対してデータを追記することができる。
【００９２】
また、ファイルを部分単位にて変更非許容範囲を設定することができるので、ファイルに対して書き込まれた部分（データ）から順次、ＷＯＲＭ化することができる。この結果、例えば、ログファイルのように、随時、追記されるタイプのファイルについても追記されるたびに追記部分をＷＯＲＭ化することが可能となり、不用意な上書き、削除からデータを保護することができる。
【００９３】
さらに、ディレクトリに対してＷＯＲＭの属性を持たせることによって、新規に作成されるファイルについて、作成と同時にＷＯＲＭ化することができる。また、通常ファイルとして生成された既存のファイルに対しても、ファイルを所定の単位、例えば、データブロック単位にてＷＯＲＭ化することができる。
【００９４】
既存のＷＯＲＭファイルについてＷＯＲＭ属性を解除することができると共に、有効期限を延長することができる。なお、既存のＷＯＲＭファイルについてＷＯＲＭ属性を解除する場合には、有効期限が過ぎている（無効となっている）ことを条件としているので、一旦設定された有効期限前にＷＯＲＭ属性が解除されてデータが変更されることはなく、データを保護することができる。
【００９５】
・第２の実施例：
図１４を参照して第２の実施例に係る計算機１０ａについて説明する。図１４は第２の実施例に係る計算機を含む記憶システムの概略構成を示す説明図である。第２の実施例に係る計算機１０ａは、記憶装置２０を内蔵する計算機サーバコンピュータ、いわゆるＮＡＳとして機能する。
【００９６】
計算機１０ａは、ＣＰＵ１１、メモリ１２、リアエンドＩ／Ｏインターフェース１３、フロントエンドＩ／Ｏインターフェース１４、ディスクアレイコントローラ１５、接続インターフェース１６、複数のディスク装置１７を備えている。ＣＰＵ１１、メモリ１２、リアエンドＩ／Ｏインターフェース１３、フロントエンドＩ／Ｏインターフェース１４は相互にバスを介して接続されている。リアＩ／Ｏインターフェース１３は、ディスクアレイコントローラ１５と接続されており、ＣＰＵ１１からのディスク装置１７に対するアクセスコマンドは、ディスクアレイコントローラ１５によって実行される。
【００９７】
ディスクアレイコントローラ１５は、ＣＰＵ１１から受け取ったコマンドに従い、制御プログラムを実行することによって、接続インターフェース１６を介して複数のディスク装置１７に対するデータの書き込み、データの読み出しを実行する。
【００９８】
第１の実施例において説明した、ＷＯＲＭ制御プログラムＰｒ３は、第２の実施例においても同様に実行され、同様の作用・効果を得ることができる。
【００９９】
以上説明したように、第２の実施例係る計算機１０ａは、複数のディスク装置により構成されるディスクアレイ装置を備えるＮＡＳサーバコンピュータにおいて、ファイルに対する部分的なＷＯＲＭ範囲の設定、ＷＯＲＭファイルに対する追記を実現することができる。
【０１００】
・その他の実施例：
（１）第１の実施例における、ファイルオープン時またはファイル用オブジェクト管理テーブルＴｂ１ｆ更新時における、ファイル用オブジェクト管理テーブルＴｂ１ｆの各ＷＯＲＭ属性項目の設定値は例示であり、他の設定値が設定されても良い。例えば、ファイルオープン時には、追記を不許可（０）、更新後ＷＯＲＭ属性を通常（０）に設定し、後にこれらＷＯＲＭ属性を変更するようにしても良い。
【０１０１】
（２）第１の実施例では、例示的に、計算機１０に対して１つの記憶装置２０が接続されているが、計算機１０は、複数の記憶装置から構成されるストレージエリアネットワーク（ＳＡＮ）に接続されていても良い。また、計算機１０は、単一の記憶装置と専用回線を介して１対１にて接続されていても良い。専用回線における通信プロトコルは、例えば、ファイバチャネル、ｉＳＣＳＩが用いられる。
【０１０２】
（３）第２の実施例では、計算機１０ａのＣＰＵ１１によってＷＯＲＭ制御プログラムＰｒ３が実行されているが、ディスクアレイコントローラ１５によって実行されても良い。すなわち、ディスクアレイコントローラ１５が備えるメモリ１５２上に、ＷＯＲＭ制御プログラムＰｒ３、オブジェクト管理テーブルＴｂ１、ＷＯＲＭ範囲管理テーブルＴｂ２が格納され、ディスクアレイコントローラ１５が備えるＣＰＵ１５１によって、ＷＯＲＭ制御プログラムＰｒ３が実行されても良い。
【０１０３】
（４）上記実施例では、ＷＯＲＭ化されたファイルに対する書き込みについて説明したが、読み出しに当たっては、ＷＯＲＭ範囲の設定にかかわらず、随時、所定のデータの読み出しが可能であることは言うまでもない。
【０１０４】
（５）上記実施例では、ＷＯＲＭ制御処理がＷＯＲＭ制御処理プログラムの態様にて実行されているが、上記各処理（ステップ）を実行する論理回路を備えたＷＯＲＭ制御処理ハードウェア回路を用いて実行されてもよい。かかる場合には、ＣＰＵ１１の負荷を軽減することができると共に、より高速な処理を実現することができる。
【０１０５】
以上、実施例に基づき本発明に係る計算機、記憶装置の管理方法および記憶装置の管理プログラムを説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれることはもちろんである。
【図面の簡単な説明】
【０１０６】
【図１】第１の実施例に係る計算機を含む記憶システムの概略構成を示す説明図である。
【図２】第１の実施例に係る計算機が備えるメモリに格納されるモジュールを示す説明図である。
【図３】ファイル用のオブジェクト管理テーブルＴｂ１ｆの一例を示す説明図である。
【図４】ＷＯＲＭ属性の組合せと可能なファイル操作との対応関係を示す説明図である。
【図５】ＷＯＲＭ範囲管理テーブルＴｂ２の一例を示す説明図である。
【図６】ディレクトリ用のオブジェクト管理テーブルＴｂ１ｄの一例を示す説明図である。
【図７】ＷＯＲＭ属性の組合せと可能なディレクトリ操作との対応関係を示す説明図である。
【図８】ファイルシステムの論理構造の一例を示す説明図である
【図９】第１の実施例に係る計算機１０によって実行されるデータの書き込み処理の処理ルーチンを示すフローチャートである。
【図１０】第１の実施例に係る計算機１０によって実行される新規ファイルオープン処理の処理ルーチンを示すフローチャートである。
【図１１】第１の実施例に係る計算機１０によって実行されるＷＯＲＭ属性設定処理の処理ルーチンを示すフローチャートである。
【図１２】第１の実施例に係る計算機１０によって実行されるＷＯＲＭ属性解除処理の処理ルーチンを示すフローチャートである。
【図１３】第１の実施例に係る計算機１０によって実行されるＷＯＲＭ有効期限設定処理の処理ルーチンを示すフローチャートである。
【図１４】第２の実施例に係る計算機を含む記憶システムの概略構成を示す説明図である。
【符号の説明】
【０１０７】
１０…計算機
１１、１５１…ＣＰＵ（中央演算装置）
１２、１５２…メモリ
１３…リアエンドＩ／Ｏインターフェース
１４…フロントエンドＩ／Ｏインターフェース
２０…記憶装置
１５、２１…ディスクアレイコントローラ
１６、２２…接続インターフェース
１７、２３…ディスク装置
３０、３１、３２…クライアントコンピュータ
４０…ネットワーク
４１…ルータ
４２…インターネット
Ｐｒ１…コマンド処理プログラム
Ｐｒ２…Ｉ／Ｏ処理プログラム
Ｐｒ３…ＷＯＲＭ制御プログラム
Ｔｂ１…オブジェクト管理テーブル
Ｔｂ２…ＷＯＲＭ範囲管理テーブル
Ｍｄ１…属性情報取得モジュール
Ｍｄ２…判定モジュール
Ｍｄ３…アクセス制御モジュール
Ｍｄ４…変更非許容範囲設定モジュール
Ｍｄ５…属性情報変更モジュール
Ｍｄ６…追記判定モジュール
Ｍｄ７…属性情報付与モジュール
Ｍｄ８…ファイル作成モジュール
Ｍｄ９…格納位置判定モジュール
【図１】
2006092276.tif 000003
【図２】
2006092276.tif 000004
【図３】
2006092276.tif 000005
【図４】
2006092276.tif 000006
【図５】
2006092276.tif 000007
【図６】
2006092276.tif 000008
【図７】
2006092276.tif 000009
【図８】
2006092276.tif 000010
【図９】
2006092276.tif 000011
【図１０】
2006092276.tif 000012
【図１１】
2006092276.tif 000013
【図１２】
2006092276.tif 000014
【図１３】
2006092276.tif 000015
【図１４】
2006092276.tif 000016