(57)【特許請求の範囲】
【請求項１】
上位装置から与えられた複数のディスクライト要求の指定するデータをまとめて、ディスク装置が有するディスク領域に含まれている前記上位装置から指定可能な領域である本来領域とは別に当該ディスク領域内に確保されたログ領域に、所定サイズのデータブロック単位で連続して格納するログ構造化ファイル方式を適用するディスク制御機構において、
前記上位装置から与えられた複数のディスクライト要求の指定するデータをまとめて前記ログ領域にデータブロック単位で連続して格納するライト処理手段であって、前記連続して格納される各データブロックが本来書き込まれるべき前記本来領域上の位置を示す逆インデックスを含む制御ブロックを当該データブロックの列に付加して前記ログ領域に格納すると共に、当該データブロックが本来書き込まれるべき前記本来領域上の位置と当該データブロックの前記ログ領域上の位置との対応関係を示す順インデックスを揮発性メモリ上に確保された順インデックス格納領域に順に格納するライト処理手段と、
前記ライト処理手段によって前記ログ領域に格納されたデータブロックのうちの、その時点において最も古い有効なデータブロックを、前記本来領域上の本来書き込まれるべき位置に再配置する動作を繰り返す再配置手段であって、データブロックの再配置時には、前記ライト処理手段によって前記順インデックス格納領域に格納された順インデックスのうち、当該再配置されたデータブロックの順インデックスを、前記順インデックス格納領域から削除する再配置手段と、
前記ライト処理手段によって前記ログ領域に前記データブロックの列と当該データブロックの列に付加される前記制御ブロックとが格納された場合、当該制御ブロックに含まれる前記逆インデックスを前記揮発性メモリ上に確保されたログ管理領域バッファに格納するログ領域管理手段であって、所定のチェックポイント毎に、そのチェックポイントに先行するチェックポイント以降、現在のチェックポイントまでの間に前記ログ管理領域バッファに格納された前記逆インデックスを、前記ディスク装置の前記ディスク領域に確保されたログ管理領域に保存するログ領域管理手段と、
起動時に、最も最近のチェックポイントで前記ログ領域管理手段によって前記ログ管理領域に格納された前記逆インデックスを当該ログ管理領域から読み出すと共に、当該最も最近のチェックポイント以降に前記ライト処理手段によって前記ログ領域に格納された前記制御ブロックから前記逆インデックスを読み出して、当該逆インデックスから該当するデータブロックが本来書き込まれるべき前記本来領域上の位置と当該データブロックの前記ログ領域上の位置との対応関係を示す順インデックスを前記順インデックス格納領域に復元するリカバリ処理手段と、
前記上位装置からリード要求が与えられた場合、当該リード要求で指定されるデータブロックが本来格納されているべき前記本来領域上の位置を持つ順インデックスを、前記順インデックス格納領域から目的とする順インデックスとして検索し、当該目的とする順インデックスが検索できたか否かによって、当該リード要求で指定されるデータブロックが前記ログ領域または前記本来領域のいずれに格納されているかを判定し、その判定結果に基づいて前記ログ領域または前記本来領域から前記リード要求で指定されるデータブロックを読み出すリード処理手段とを具備することを特徴とするディスク制御機構。
【請求項２】
前記再配置手段は、前記データブロックの再配置時には、当該データブロックの順インデックスを前記順インデックス格納領域から削除するように構成されていることを特徴とする請求項１記載のディスク制御機構。
【請求項３】
前記上位装置からのログモードまたは非ログモードへの切り替え設定指令を受けて、前記ディスク装置をログモードまたは非ログモードに設定するモード設定手段であって、前記上位装置から与えられるディスクライト要求の指定するデータが、前記ログモードでは前記制御ブロックを付して前記ログ領域に書き込まれ、前記非ログモードではそのまま前記本来領域に書き込まれるように設定するモード設定手段を更に具備することを特徴とする請求項１記載のディスク制御機構。
【請求項４】
前記再配置手段は、前記非ログモードへの切り替え設定時に、前記ログ領域上の有効な前記データブロックを全て前記本来領域上の本来書き込まれるべき位置に再配置する一括再配置手段を備えていることを特徴とする請求項３記載のディスク制御機構。
【請求項５】
前記上位装置からのログモードまたは通常モードへの切り替え設定指令を受けて、前記ディスク装置をログモードまたは通常モードに設定するモード設定手段であって、前記通常モードへの切り替え時には、前記ログモードで割り当てられている前記本来領域、前記ログ領域及び前記ログ管理領域のうちの少なくとも前記本来領域を通常モード用の新たな本来領域に割り当て、前記ログモードへの切り替え時には、前記通常モードで割り当てられている前記本来領域を含む記憶領域を分割して、ログモード用の新たな前記本来領域、前記ログ領域及び前記ログ管理領域に割り当てるモード設定手段を更に具備し、
前記再配置手段は、前記モード設定手段による前記通常モードへの切り替え設定時に、前記ログ領域上の有効な前記データブロックを全て前記新たな本来領域上の本来書き込まれるべき位置に再配置する一括再配置手段を備えていることを特徴とする請求項１記載のディスク制御機構。
【請求項６】
請求項１記載の前記ディスク制御機構を備えた複数のコンピュータと、
前記各コンピュータにより共有されるディスク装置とを具備することを特徴とするコンピュータシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータシステムの磁気ディスク装置に代表されるディスク装置（ディスク記憶装置）に対するランダムライトの高速化に好適なディスク制御機構に関する。
【０００２】
【従来の技術】
近年、コンピュータシステムにおけるディスク装置に対するランダムライトの高速化の手法として、例えば特開平１１−５３２３５号公報に記載されているような、ログ構造化ファイル方式（ＬＦＳ：Log Structured File System）が提案されている。
【０００３】
ログ構造化ファイル方式（以下、ＬＦＳと称する）の原理は、「ディスクの大ブロック・シーケンシャルライトは、小ブロック・ランダムライトに比較して非常に高速」であるというディスク装置特有の前提条件のもとに、ディスク領域の効果的利用により（コンピュータの）ディスク制御機構側で小ブロック・ランダムライトを大ブロック・シーケンシャルライトに変換することによって、ディスクライトの高速化を実現するというものである。具体的には、複数の小さなブロックの書き込みデータを、その本来の書き込み位置に全く無関係に集め、１つの大きなブロックのシーケンシャルなログとしてディスクに記録することによって、ディスクライトの高速化を実現する。
【０００４】
ＬＦＳを適用する場合、「複数の小さなブロックの書き込みデータ」の本来書き込まれるべき位置、つまりコンピュータ側が意図した本来の書き込み位置（以下、本来位置と称する）からログ上の位置（以下、ログ位置と称する）への対応関係を示す情報と、その逆の関係である、ログ位置から本来位置への対応関係を示す情報を保持しておく必要がある。以下の説明では、前者の対応関係情報を順インデックスと呼び、後者の対応関係情報を逆インデックスと呼ぶ。また、両者をまとめてインデックスと呼ぶ。
【０００５】
上記インデックスは、一般にコンピュータ側に保持される。このため、当該コンピュータが故障で急に停止した場合に、上記インデックスが不完全な状態になれば、ディスクのデータは信用できないものになってしまう。
【０００６】
そこでＬＦＳを適用する従来のコンピュータシステムでは、上記インデックスを専用の不揮発性メモリ、例えばＮＶＲＡＭ（Non-Volatile Random Access Memory）上に保持し、耐障害性を持たせていた。
【０００７】
【発明が解決しようとする課題】
上記したように、特開平１１−５３２３５号公報に開示されたＬＦＳは、ディスク装置へのランダムライトアクセスの高速化を実現するのに適している。
しかしながら、ＬＦＳには以下に示すような問題点もあり、これを改善していくことが、実用上、重要である。
【０００８】
第１の問題点は、大ブロック・シーケンシャルリードに対して性能が著しく悪くなる可能性があるということである。この原因は、小ブロック・ランダムライトを大ブロック・シーケンシャルライトに変換したことの「つけ」として、大ブロック・シーケンシャルリードが小ブロック・ランダムリードに変換されてしまうという点にある。つまり、本来位置では連続した領域でも、ログ位置ではばらばらに配置されているかもしれないということである。
【０００９】
第２の問題点は、切り替えシステムにおける共有ディスクにＬＦＳを適用することで生じる。切り替えシステムは、複数のコンピュータがディスク装置を共有し、いずれかのコンピュータが故障した場合でも他のコンピュータに処理を引き継がせることが可能なシステムであり、ＨＡ（High Availability）システム（高可用性システム）と呼ばれている。この切り替えシステムでは、プライマリのコンピュータが故障で急に停止した場合、セカンダリのコンピュータが処理を引き継ぐ。その際、データは共有ディスクを通して引き継がれる。ところがＬＦＳでは、インデックスなどを不揮発性メモリ（ＮＶＲＡＭ）上に持つため、データを共有ディスクを通して引き継ぐことができない。つまり、データを引き継ぐためには、共有不揮発性メモリ（ＮＶＲＡＭ）も必要になる。
【００１０】
本発明は上記事情を考慮してなされたものでその目的は、ランダムライトの高速化のためにＬＦＳ（ログ構造化ファイル方式）を適用したことで大ブロック・シーケンシャルリードの性能が悪化するのを、データの本来の配置を考慮した再配置により防止できるディスク制御機構を提供することにある。
【００１１】
本発明の他の目的は、ランダムライトの高速化に必要なインデックスの保存にディスク領域を効果的に利用することで、不揮発性メモリを不要とし、切り替えシステムでのインデックスの引き継ぎが容易に行えるディスク制御機構を提供することにある。
【００１２】
【課題を解決するための手段】
本発明の第１の観点に係るディスク制御機構は、上位装置から与えられた複数のディスクライト要求の指定するデータをまとめて、ディスク装置上の上位装置から指定可能な（つまり上位装置から見える）領域（本来領域）とは別に確保された領域（ログ領域）に所定サイズのデータブロック単位で連続して格納するＬＦＳ（ログ構造化ファイル方式）を適用するディスク制御機構において、上記ログ領域上の最も古い有効なデータブロックを、上記本来領域上の本来書き込まれるべき位置に再配置する動作を繰り返す再配置手段とを備えたことを特徴とする。
【００１３】
このような構成においては、ＬＦＳの適用によりランダムライト（小ブロック・ランダムライト）の並列アクセスの高速化を図りながら、再配置手段の再配置により、ログ位置ではばらばらに配置されていても、本来領域では連続した領域に配置されるデータブロック群に対するリード要求については、当該本来領域から連続的に読み出すことが可能となるため、ＬＦＳの適用による大ブロック・シーケンシャルリードのアクセス性能低下を防ぐことが可能となる。
【００１４】
本発明の第２の観点に係るディスク制御機構は、ＬＦＳを適用するディスク制御機構において、上位装置から与えられた複数のディスクライト要求の指定するデータをまとめて上記ログ領域にデータブロック単位で連続して格納するライト処理手段に、上記連続して格納される各データブロックが本来書き込まれるべき上記本来領域上の位置を示す逆インデックスを含む制御ブロックを当該データブロックの列に付加して上記ログ領域に格納する機能を持たせる一方、次の各手段、即ち起動時に、上記ログ領域上の制御ブロックから逆インデックスを読み出して、当該逆インデックスから該当するデータブロックが本来書き込まれるべき上記本来領域上の位置と当該データブロックの上記ログ領域上の位置との対応関係を示す順インデックスを揮発性メモリ上に確保された順インデックス格納領域に復元するリカバリ処理手段と、上位装置からリード要求が与えられた場合、当該リード要求に基づいて上記順インデックス格納領域を参照することで、当該リード要求で指定されるデータブロックが上記ログ領域または本来領域のいずれに格納されているかを判定し、その判定結果に基づいてログ領域または本来領域から対応するデータブロックを読み出すリード処理手段とを備えたことを特徴とする。
【００１５】
このような構成においては、ＬＦＳの適用によりランダムライト（小ブロック・ランダムライト）の並列アクセスの高速化を図ることができる。しかも上記の構成においては、ログ領域に格納されているデータブロックの順インデックスを保持するのに、ＮＶＲＡＭのような不揮発性メモリではなくて、揮発性メモリ（上に確保された順インデックス格納領域）を用いていながら、起動時（立ち上げ時）に、ログ領域にデータブロック列に付加されて格納されている制御ブロック中の逆インデックスに基づいて当該各データブロックの順インデックスを復元することができる。即ち、電源断の発生により一時的に順インデックス格納領域の情報が失われても、起動時に復元できるため、順インデックスのデータが破壊または喪失するのを防止でき、不揮発性メモリを用いることなく耐障害性を実現できる。ここで、上記制御ブロックを上記データブロックと同一サイズにするならば、当該制御ブロックを簡単にアクセスできる。
【００１６】
本発明の第３の観点に係るディスク制御機構は、上記第２の観点に係るディスク制御機構に、上記ログ領域に格納されている各データブロックの逆インデックスを保存するためのディスク装置上に確保されたログ管理領域を管理するログ領域管理手段であって、所定のチェックポイント毎に、前回のチェックポイント以降に上記ログ領域に格納された制御ブロックに含まれる逆インデックスを揮発性メモリ上に記憶して、上記ログ管理領域上の、前回のチェックポイント時点において既に保存されている逆インデックスに後続する位置から、当該記憶された逆インデックスを保存するログ領域管理手段を追加すると共に、上記第２の観点に係るディスク制御機構で適用した上記リカバリ処理手段に代えて、次の機能を持つリカバリ処理手段、即ち上記ログ管理領域から最も最近のチェックポイントまでの逆インデックスを読み出すと共に、当該チェックポイント以降に上記ログ領域に格納された制御ブロックから逆インデックスを読み出して、当該逆インデックスに基づいて上記順インデックス格納領域に順インデックスを復元するリカバリ処理手段を用いることを特徴とする。ここで、ログ領域上での制御ブロックとデータブロックの配列に対応させて、制御ブロックについてもダミーの逆インデックス（制御ブロックであることを示す、逆インデックスと同一サイズのデータ）をログ管理領域上の該当位置に保存する構成とするならば、ログ管理領域からの逆インデックスの読み出しが高速に行える。
【００１７】
このような構成においては、最も最近のチェックポイントまでにログ領域に格納されたデータブロックの逆インデックスについては、ログ管理領域から直接取得でき、ログ領域中の制御ブロックから復元する必要があるのは、上記最も最近のチェックポイント以降にログ領域に格納されたデータブロックの逆インデックスだけであるため、起動時の順インデックス復元に要する時間をより短縮できる。なお、この構成においても、ランダムライトの並列アクセスが高速化できると共に、不揮発性メモリを用いることなく耐障害性を実現できることは勿論である。
【００１８】
本発明の第４の観点に係るディスク制御機構は、上記第１の観点に係るディスク制御機構に、上記第２の観点に係るディスク制御機構で適用した、上記ライト処理手段、上記リカバリ処理手段及び上記リード処理手段を追加すると共に、上記再配置手段に次の機能、即ちデータブロックの再配置時に、当該データブロックの順インデックスを上記順インデックス格納領域から削除する機能を持たせたことを特徴とする。
【００１９】
このような構成においては、上記第１の観点に係るディスク制御機構で得られる効果と上記第２の観点に係るディスク制御機構で得られる効果の両効果を得ることが可能となる。
【００２０】
本発明の第５の観点に係るディスク制御機構は、上記第１の観点に係るディスク制御機構に、上記第３の観点に係るディスク制御機構で適用した、上記ライト処理手段、上記ログ領域管理手段、上記リカバリ処理手段及び上記リード処理手段を追加すると共に、上記再配置手段に次の機能、即ちデータブロックの再配置時に、当該データブロックの順インデックスを上記順インデックス格納領域から削除する機能を持たせたことを特徴とする。
【００２１】
このような構成においては、上記第１の観点に係るディスク制御機構で得られる効果と上記第３の観点に係るディスク制御機構で得られる効果の両効果を得ることが可能となる。
【００２２】
本発明の第６の観点に係るディスク制御機構は、上記第１、第４または第５の観点に係るディスク制御機構に、上位装置からのログモードまたは非ログモードへの切り替え設定指令を受けて、上記ディスク装置をログモードまたは非ログモードに設定するモード設定手段であって、上位装置から与えられるディスクライト要求の指定するデータが、上記ログモードでは制御ブロックを付して上記ログ領域に書き込まれ、上記非ログモードではそのまま上記本来領域に書き込まれるように設定するモード設定手段を追加したことを特徴とする。
【００２３】
このような構成においては、ログモードから非ログモードへ、或いは非ログモードからログモードへの切り替え（移行）が、データを保存したまま行える。ここで非ログモードは、大ブロックアクセスが行われるバックアップ処理等に適している。そこで、小ブロックアクセス（特に、小ブロック・ランダムライト）が頻繁に発生するトランザクション処理が行われる期間（例えば業務時間帯）は、ログモードを設定し、バックアップ処理が行われる期間（例えば業務時間外）は、非ログモードを設定（ログモードを解除）すると、常にディスクアクセスの高速化が実現できる。
【００２４】
ここで、上記再配置手段に次の手段、即ち非ログモードへの切り替え設定時に、上記ログ領域上の有効なデータブロックを全て上記本来領域上の本来書き込まれるべき位置に再配置する一括再配置手段を持たせるならば、リード処理手段によるデータ読み出しは、非ログモードへの切り替え直後から常に本来領域を対象に行われるため、大ブロック・シーケンシャルリードが最初から高速に行える。
【００２５】
本発明の第７の観点に係るディスク制御機構は、上記第１、第４または第５の観点に係るディスク制御機構に、上位装置からのログモードまたは通常モードへの切り替え設定指令を受けて、上記ディスク装置をログモードまたは通常モードに設定するモード設定手段であって、上記通常モードへの切り替え時には、ログモードで割り当てられている本来領域、ログ領域及びログ管理領域のうちの少なくとも本来領域を通常モード用の新たな本来領域に割り当て、上記ログモードへの切り替え時には、上記通常モードで割り当てられている本来領域を含む記憶領域を分割して、ログモード用の新たな本来領域、ログ領域及びログ管理領域に割り当てるモード設定手段を追加すると共に、上記再配置手段に上記一括再配置手段を持たせたことを特徴とする。
【００２６】
このような構成においては、ディスク装置の記憶領域が有効に利用できる他、ディスク装置（の記憶領域）の増減にも対応できる。但し、モードの切り替えによりデータを破棄しなければならない場合もあるため、切り替え後のモードに固定して運用するシステムには適しているが、頻繁にモードを切り替えるシステムには不向きである。
【００２７】
また、上記第３または第５の観点に係るディスク制御機構を有する複数のコンピュータを用いて、当該各コンピュータによりディスク装置が共有されるコンピュータシステムを構成するならば、運用状態にあるコンピュータ（プライマリのコンピュータ）が故障して停止しても、当該コンピュータの処理を引き継ぐ別のコンピュータ（セカンダリのコンピュータ）では、その起動時に、ディスク制御機構のリカバリ処理手段により順インデックスが復元されるため、不揮発性メモリを用いることなくインデックスの引き継ぎが容易に行え、高可用性システム（切り替えシステム）を実現できる。
【００２８】
なお、以上のディスク制御機構に係る本発明はディスク制御方法に係る発明としても成立する。
【００２９】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。
【００３０】
［第１の実施形態］
図１は本発明の第１の実施形態に係るコンピュータシステムの構成を示すブロック図である。
同図において、コンピュータシステムの中心をなすコンピュータ１０には、磁気ディスク装置に代表されるディスク装置２０が接続されている。ディスク装置２０には、コンピュータ１０の管理のもとでＬＦＳ（ログ構造化ファイル方式）が適用される。
【００３１】
図１のシステムで、ＬＦＳが有効に作用するための前提条件、つまりＬＦＳの適用でディスク装置２０に対するランダムライトの高速化が実現可能となるための前提条件は、［従来の技術］の欄で述べたように、「ディスクの大ブロック・シーケンシャルライトは、小ブロック・ランダムライトに比較して非常に高速」でなければならないということである。実際、この条件は殆どのディスク装置に当てはまる。特に、ＲＡＩＤ５（Redundant Arrays of Inexpensive Disks 5）などのディスクアレイにおけるパリティ付きストライプセットでは、この性質が非常に強くなるため、ＬＦＳの適用を前提とする本発明は有効である。
【００３２】
ディスク装置２０の記憶領域は、本来領域２１とログ領域２２とログ管理領域２３との３つに分けて管理される。本来領域２１は、データをコンピュータ１０が指定した位置、つまり本来位置に対応して格納するのに用いられる。ログ領域２２は、データをログ位置に対応して格納するのに用いられる。ログ管理領域２３は、ログの管理情報を格納するのに用いられる。
【００３３】
ここで、ディスク装置２０の記憶領域における上記領域割り当てを従来技術と比較する。まず、ランダムライトアクセスの高速化をしない、つまりＬＦＳを適用しない従来技術では、本来領域２１に相当する領域のみが存在していた。一方、本実施形態と同様にランダムライトアクセスの高速化をする（ＬＦＳを適用する）従来技術では、ログ領域２２に相当する領域のみが存在していた。これに対して本実施形態は、ディスク装置２０の記憶領域に、本来領域２１とログ領域２２の両領域が同時に存在し、それに加えてログ管理領域２３が更に存在する構成を適用することに第１の特徴がある。
【００３４】
ログ領域２２は、所定サイズ（例えば４０９６バイト、つまり４Ｋバイト）の単位ブロックがリング状に１列につながったように管理される、一種の循環バッファ（リングバッファ）構造を適用する。単位ブロックには、図２に示すように、データを格納するデータブロック（Ｄ）と、制御ブロック（Ｈ）との２種類がある。
【００３５】
制御ブロック（Ｈ）には、図２に示すように、連続する複数のデータブロック（Ｄ）の先頭に位置し、その複数のデータブロック（Ｄ）の列に対してシリアルに付与されるアクセス番号と、当該データブロック（Ｄ）の数（データブロック数）と、各データブロック（Ｄ）の本来位置（Ｐ）と、当該制御ブロック（Ｈ）が壊れているか否かを調べるためのＣＲＣ（巡回冗長符号）とを含む情報が格納される。制御ブロック（Ｈ）と、当該制御ブロック（Ｈ）に対応する複数のデータブロック（Ｄ）とは連続しているので、書き込み時にはログ領域２２にはまとめて書き込むことができる。ここで制御ブロック（Ｈ）により管理される複数のデータブロック（Ｄ）は連続しており、制御ブロック（Ｈ）を含めてブロックサイズは一定（４Ｋはバイト）であることから、そのブロックサイズと制御ブロック（Ｈ）内のブロック数の情報に基づいて、当該データブロック（Ｄ）のログ位置は簡単に求められる。したがって、制御ブロック（Ｈ）には、当該制御ブロック（Ｈ）により管理される各データブロック（Ｄ）について、ログ位置（当該データブロック（Ｄ）のログ領域２２上の位置）から本来位置への対応関係を示す情報（逆インデックス）が保存されているといえる。よって、以降の説明では、制御ブロック（Ｈ）には、逆インデックスの情報が保存されているものとして扱う。
【００３６】
ログ管理領域２３には、図３に示すように、ある時点において、ログ領域２２に連続的に格納されている単位ブロックのうち先頭ブロックの開始位置（先頭単位ブロック開始位置）と、同じく最終ブロックの終了位置（最終単位ブロック終了位置）と、各単位ブロックの本来位置とを含む情報が格納される。つまりログ管理領域２３では、ある時点におけるログ領域２２上での単位ブロックの格納状態を示す情報が保持・管理される。但し、単位ブロックのうちの制御ブロック（Ｈ）については、本来位置の情報に代えて、制御ブロックであることを示す特定情報（例えば「−１を示す情報」が用いられる。なお、ログ管理領域２３では、１単位ブロックにつき、４バイトの領域が割り当てられる。この場合、ログ管理領域２３の先頭単位ブロック開始位置と最終単位ブロック終了位置の情報領域を除く領域、即ち各単位ブロックの本来位置の情報領域のサイズは、単位ブロックのサイズをＢ（＝４Ｋバイト）とすると、ログ領域２２を４／Ｂに縮小したものに一致する。
【００３７】
ログ管理領域２３は、常にログ領域２２の最新の状態を保持しているわけではなく、その保持内容は、ある程度の時間間隔で更新される。更新された時点を、チェックポイントと呼ぶ。このログ管理領域２３の保持内容の更新動作は、後述するリカバリ動作を速く完了させる効果を有する。
【００３８】
さて、ログ領域２２により管理される単位ブロックの総数ｎは、ログ領域２２のサイズＮと、ブロックサイズ（４Ｋバイト）Ｂとに基づき、Ｎ／Ｂの演算により簡単に算出できる。また、ｉ番目の単位ブロックのログ位置（ログ領域２２での位置）は、ブロックサイズＢとｉとをもとに、（ｉ−１）＊Ｂの演算により簡単に算出できる。このことは、ログ管理領域２３では、ログ位置の情報も本来位置の情報と同様に単位ブロック毎に管理されていることと等価である。即ちログ管理領域２３には、チェックポイント時点にログ領域２２に格納されている各単位ブロックについて、ログ位置から本来位置への対応関係を示す情報、つまり逆インデックスが保存されているといえる（但し、制御ブロック（Ｈ）を除く）。よって、以降の説明では、ログ管理領域２３には、逆インデックスの情報が保持されているものとして扱う。なお、ログ管理領域２３上で各単位ブロック毎にログ位置と本来位置との情報対を保持するようにしても構わないが、必要領域がほぼ倍となる。
【００３９】
このように本実施形態では、ログ領域２２に格納されている単位ブロックの本来位置を示す情報、つまり逆インデックスを、ログ領域２２に格納されている制御ブロック（Ｈ）内と、ログ管理領域２３内との両方に保存している点に第２の特徴がある。
【００４０】
再び図１を参照すると、コンピュータ１０は、オペレーティングシステム（以下、ＯＳと称する）１１と、本発明に直接関係するディスク制御機構をなすディスクドライバ１２と、順インデックス格納部１４とを備えている。
【００４１】
ＯＳ１１はコンピュータ１０の中枢をなし、ファイル管理、メモリ管理、タスク管理、デバイス管理等のシステム管理を司る。ＯＳ１１内の上記ファイル管理を司る機能部分はファイルシステム１１０と呼ばれる。ここでは、ファイルシステム１１０はディスク装置２０に格納されるファイルの管理を行う。
【００４２】
ディスクドライバ１２は、上記ＯＳ１１のファイルシステム１１０とディスク装置２０との間に位置し、ファイルシステム１１０を介して送られる各種アプリケーションプログラム１３からのディスクアクセス要求（ディスクライト要求、ディスクリード要求）を受けて、ディスク装置２０との間のデータ入出力を制御するディスク制御機構をなす。ここでは、アプリケーションプログラム１３は、小ブロック・ランダムライトを並列に要求するような処理を行うものである。この種のアプリケーションプログラム１３は、図１のコンピュータシステムがデータベース・ミドルウェアを使用するようなシステムで適用される。
【００４３】
ディスクドライバ１２は、リード処理部１２１、再配置処理部１２２、ログ領域管理部１２３、ライト処理部１２４、及びリカバリ処理部１２５を備えている。
【００４４】
リード処理部１２１は、ＯＳ１１を介して与えられるアプリケーションプログラム１３からのリード要求に応じて、ログ領域２２またはログ管理領域２３からデータを読み出す機能を有する。再配置処理部１２２は、ログ領域２２に格納されているデータ（具体的には、その時点で最も古い有効なデータブロック（Ｄ））を本来領域２１上の本来の位置に再配置する機能を有する。
【００４５】
ログ領域管理部１２３は、ログ領域２２に格納されているデータをログ管理領域２３の利用により管理する。ライト処理部１２４は、ＯＳ１１を介して与えられるアプリケーションプログラム１３からのライト要求に応じて、指定されたデータを本来の位置に無関係にログ領域２２に格納する機能を有する。リカバリ処理部１２５は、システムの電源ＯＮ時に、ログ領域２２に格納されているデータの本来位置と当該ログ領域２２上の位置との関係を示す順インデックスを、ログ領域２２及びログ管理領域２３の情報（逆インデックス）に基づいて、次に述べる順インデックス格納部１４上に復元する機能を有する。
【００４６】
順インデックス格納部１４は、ログ領域２２に格納されている有効なデータブロック（Ｄ）の本来位置と当該ログ領域２２上の位置（ログ位置）との関係を示すインデックス（順インデックス）を格納するのに用いられる。本実施形態において順インデックス格納部１４は、主記憶（図示せず）上の所定領域を割り当てることで実現されている。
【００４７】
次に、図１のコンピュータシステムにおける動作を、ａ）リカバリ処理、ｂ）ライト処理、ｃ）ログ領域管理処理、ｄ）再配置処理、ｅ）リード処理の各々について順次説明する。
【００４８】
ａ）リカバリ処理
まずリカバリ処理部１２５によるリカバリ処理について、図５のフローチャートを参照して説明する。
コンピュータ１０のディスクドライバ１２が起動されると、当該ディスクドライバ１２内のリカバリ処理部１２５は、ログ管理領域２３の情報を（例えば図示せぬ主記憶上に確保される）ログ管理領域バッファ（図示せず）にまとめて読み出す（ステップＳ１）。次に読み出したログ管理領域２３の情報から、（最新の）チェックポイント時点においてログ領域２２に格納されていた（先頭単位ブロック開始位置から最終単位ブロック終了位置までの範囲の）各単位ブロックの逆インデックスの情報を先頭単位ブロックから順に取り出し、各逆インデックスの情報の前後（ログ位置と本来位置）を入れ替えて順インデックス格納部１４に順次登録する（ステップＳ２，Ｓ３）。ここで、制御ブロック（Ｈ）は登録対象外となる。この制御ブロック（Ｈ）には本来位置情報に代えて「−１」が用いられることから、簡単に識別できる。
【００４９】
リカバリ処理部１２５は、チェックポイント時点にログ領域２２に格納されていた全ての単位ブロックについてステップＳ２，Ｓ３を終了すると（ステップＳ４）、ステップＳ１で読み出したログ管理領域２３の情報中の最終単位ブロック終了位置の情報に基づいてログ領域２２をアクセスし（ステップＳ５）、ログ領域２２における最終単位ブロックに後続する位置に次のアクセス番号の制御ブロック（Ｈ）が存在するか否かをチェックする（ステップＳ６）。
【００５０】
もし、次のアクセス番号の制御ブロック（Ｈ）が存在するならば、リカバリ処理部１２５はチェックポイント時以降にログ領域２２にデータブロック（Ｄ）が格納されているものと判断する。この場合、リカバリ処理部１２５は、チェックポイント時以降にログ領域２２に格納された全ての制御ブロック（Ｈ）から、チェックポイント時以降にログ領域２２に格納された各単位ブロックの逆インデックスの情報を先頭の単位ブロックより順に読み出し、各逆インデックスの情報の前後（ログ位置と本来位置）を入れ替えて順インデックス格納部１４の後続位置（ログ管理領域２３から読み出された逆インデックスに基づいて登録された順インデックスの後続位置）に順次登録する（ステップＳ７，Ｓ８）。このようにして、順インデックス格納部１４に順インデックスが再生（復元）される。
【００５１】
ｂ）ライト処理
次にライト処理部１２４によるライト処理について、図６のフローチャートを参照して説明する。
アプリケーションプログラム１３からディスク装置２０へのデータの書き込み要求（ライト要求）が発生すると、当該要求はＯＳ１１のファイルシステム１１０を介してディスクドライバ１２に送られる。このライト要求は、ディスクドライバ１２内のライト処理部１２４で受け取られ、ライト要求実行待ち行列（キュー）の最後尾につながれる。このとき、ディスクライトの実行中であるものとすると、その間にライト処理部１２４で受け取られてライト要求実行待ち行列につながれた新たなライト要求の実行は待たされる。
【００５２】
ライト処理部１２４は、現在実行中のディスクライトが完了して、新たなライト要求の実行が可能になると、例えばその時点においてライト要求実行待ち行列につながれている全てのライト要求（ここでは、小ブロック・ランダムライト要求）について、当該要求（の指定するライトデータ）を論理的に一定サイズのデータブロック（Ｄ）に分割する（ステップＳ１１）。次にライト処理部１２４は、各データブロック（Ｄ）のログ位置と本来位置とをログ領域管理部１２３に通知して、ライト要求の実行が可能か否かを問い合わせる（ステップＳ１２）。ここで、先頭のデータブロック（Ｄ）の書き込み開始位置は、前回の書き込み最終位置の次の位置となる。
【００５３】
ログ領域管理部１２３は、ライト処理部１２４からライト完了した各データブロック（Ｄ）の本来位置とログ位置とが通知されると、ログ管理領域バッファに逆インデックス情報を追加する。
【００５４】
さて、ログ領域管理部１２３はログ領域２２上で最も古い有効なデータブロック（Ｄ）のログ位置を常時把握している。そのためログ領域管理部１２３は、ライト処理部１２４からライト要求の実行の可否の問い合わせを受け取ると、ログ領域２２上でライト処理部１２４により書き込まれる位置が、その時点で最も古い有効なデータブロック（Ｄ）の位置に追いつく可能性があるか否かを調べ、追いつく可能性があるときはライト処理部１２４に対してライト要求の実行を待たせる。一方、追いつく可能性がないときは、ログ領域管理部１２３はライト処理部１２４に対してライト許可を与える。なお、ログ領域管理部１２３による上記最も古い有効なデータブロック（Ｄ）の位置の把握については後述する。
【００５５】
ライト処理部１２４は、ログ領域管理部１２３からライト許可が与えられた場合（ステップＳ１３）、上記データブロック（Ｄ）への分割の対象となった各ライト要求（小ブロック・ランダムライト要求）をまとめて１つの大ブロック・シーケンシャルライト要求に変換する（ステップＳ１４）。そしてライト処理部１２４は、大ブロック・シーケンシャルライト要求の実行処理、即ちステップＳ１１で分割した各データブロック（Ｄ）を対応するライト要求の要求順で、且つブロック分割順に１つにまとめて、その先頭に制御ブロック（Ｈ）を付加し、一括してログ領域２２に書き込む処理を行う（ステップＳ１５）。
【００５６】
その後、ライト処理部１２４は、ログ領域２２に書き込まれた各データブロック（Ｄ）について、当該データブロック（Ｄ）の本来位置からログ位置への情報対からなる順インデックスを順インデックス格納部１４に順に登録する（ステップＳ１６）。この際、既に同じ本来位置の情報を持つ順インデックスが登録されている場合は、当該順インデックス中のログ位置の情報を新たなログ位置の情報に更新する。
【００５７】
ｅ）ログ領域管理処理
次に、ログ領域管理部１２３によるログ領域管理処理について、図７のフローチャートを参照して説明する。
ログ領域管理部１２３は、ログ領域２２上で最も古い有効なデータブロック（Ｄ）の位置を以下に述べるようにして検出する。
【００５８】
まずログ領域管理部１２３は、ログ管理領域バッファより、先頭単位ブロック開始位置直後のデータブロック（Ｄ）、即ち先頭単位ブロック開始位置から最終単位ブロック終了位置の範囲内で先頭にあるデータブロック（Ｄ）の逆インデックスを参照する（ステップＳ２１）。次にログ領域管理部１２３は、参照した逆インデックス中の本来位置に対応するログ位置を順インデックス格納部１４より検索する（ステップＳ２２）。
【００５９】
もし、得られたログ位置が当該データブロックのログ位置と一致したならば（ステップＳ２３）、ログ領域管理部１２３は該当するデータブロック（Ｄ）が現時点においてログ領域２２上で最も古い有効なデータブロック（Ｄ）であり、先に参照した逆インデックス中の本来位置の情報が当該最も古い有効データブロック（Ｄ）の位置を示す情報であると決定する（ステップＳ２４）。この場合、ログ領域管理部１２３は自身が管理している、現時点で最も古い有効なデータブロック（Ｄ）のログ位置と本来位置の情報を更新する（ステップＳ２５）。
【００６０】
これに対し、順インデックスが存在しなかった場合、または得られたログ位置が一致しなかった場合（ステップＳ２３）、ログ領域管理部１２３は該当するブロックは無効ブロックであると決定する（ステップＳ２６）。この場合、ログ領域管理部１２３は次のデータブロック（Ｄ）の逆インデックスを参照し（ステップＳ２７）、当該データブロック（Ｄ）が現時点で最も古い有効名データブロック（Ｄ）であるか否かを決定するために、ステップＳ２２の処理に戻る。
【００６１】
ログ領域管理部１２３は以上の処理を再配置処理部１２２による再配置処理に伴って行うことで、ログ領域２２上で最も古い有効なデータブロック（Ｄ）のログ位置を常時把握する。
【００６２】
次にログ領域管理部１２３によるログ管理領域２３の情報の更新処理について説明する。
ログ領域管理部１２３は、ライト処理部１２４から通知された各データブロック（Ｄ）毎のログ位置と本来位置の情報対に基づいてログ管理領域バッファの情報を更新する。これにより、ログ管理領域バッファには、前回の更新時点（つまり前回のチェックポイント時点）から現在までの間にログ領域２２に書き込まれた複数のブロックの各々について、それぞれ４バイトの情報（制御ブロック（Ｈ）であれば、その旨を示す「−１」、データブロック（Ｄ）であれば本来位置の情報）が追加登録される。
【００６３】
ログ領域管理部１２３は、ログ管理領域バッファ上で更新された情報を、定期的にログ管理領域２３にまとめて書き出す。この時点がチェックポイント時点となる。同時に、最終単位ブロック終了位置の情報が、最新の位置を示すように書き替えられる。このとき、先頭単位ブロック開始位置の情報も、最新の位置を示すように書き替えられる。この最新の先頭単位ブロック開始位置は、その時点において最も古い有効なデータブロック（Ｄ）を含むデータブロック列に付加されている制御ブロック（Ｈ）の開始位置である。
【００６４】
ｄ）再配置処理
次に、本発明に直接関係する再配置処理部１２２による再配置処理について、図８のフローチャートを参照して説明する。
再配置処理部１２２は、（イ）ディスク装置２０の負荷が比較的小さい場合（基準負荷以下の場合）と、（ロ）ログ領域２２上でライト処理部１２４により書き込まれる位置が、その時点で最も古い有効なデータブロック（Ｄ）の位置に追いつきそうな場合（両位置の差が基準ブロック数以下の場合）に、以下に述べる再配置処理を行う。
【００６５】
さて再配置処理部１２２は、上記（イ）または（ロ）の状態になると（ステップＳ３１またはＳ３２）、その時点においてログ領域２２に格納されているデータブロック（Ｄ）のうち、最も古い有効なデータブロック（Ｄ）をログ領域管理部１２３に問い合わせ、当該ログ領域２２から読み出す（ステップ３３）。そして再配置処理部１２２は、読み出したデータブロック（Ｄ）を本来領域２１上の本来位置に書き込む（ステップＳ３４）。
【００６６】
次に再配置処理部１２２は、ステップＳ３２での書き込みの対象となったデータブロック（Ｄ）に関する順インデックスを順インデックス格納部１４から削除する（ステップＳ３５）。
【００６７】
ｄ）リード処理
次に、リード処理部１２１によるリード処理について、図９のフローチャートを参照して説明する。
アプリケーションプログラム１３からディスク装置２０へのデータの読み出し要求（リード要求）が発生すると、当該要求はＯＳ１１のファイルシステム１１０を介してディスクドライバ１２に送られる。このリード要求は、ディスクドライバ１２内のリード処理部１２１で受け取られる。
【００６８】
するとリード処理部１２１は、受け取ったリード要求（の指定するリード対象データ）をデータブロック（Ｄ）単位に分割する（ステップＳ４１）。そしてリード処理部１２１は、リード対象となる先頭のデータブロックの本来位置に一致する本来位置（の情報）を持つ順インデックスを、順インデックス格納部１４上で検索する（ステップＳ４２）。
【００６９】
もし、目的とする順インデックスが検索できたなら（ステップＳ４３）、リード処理部１２１は当該検索できた順インデックス中のログ位置の情報に基づいて、ログ領域２２から該当するデータブロック（Ｄ）を読み出す（ステップＳ４４）。一方、目的とする順インデックスが検索できなかったならば、リード処理部１２１は上記本来位置の情報に基づいて、本来領域２１から該当するデータブロックを読み出す処理を行う（ステップＳ４５）。
【００７０】
リード処理部１２１は、ログ領域２２または本来領域２１から目的とするデータブロック（Ｄ）を読み出すと、上記リード要求の指定する最後のデータブロック（Ｄ）の読み出しまで終了したか否かをチェックする（ステップＳ４６）。
【００７１】
もし、リード要求の指定する最後のデータブロック（Ｄ）の読み出しまで終了していないならば、リード処理部１２１はステップＳ４２と同様の処理、即ちリード対象となる次のデータブロック（Ｄ）を持つ順インデックスを検索する処理を行い（ステップＳ４７）、上記ステップＳ４３に戻る。
【００７２】
このようにして、リード要求の指定するデータを構成する全てのデータブロック（Ｄ）について、ログ領域２２または本来領域２１から読み出し終えると（ステップＳ４６）、リード処理部１２１によるリード処理は終了となる。
【００７３】
なお、リード対象となるデータブロック（Ｄ）がログ領域２２または本来領域２１上で連続しているか否かをチェックし、連続しているデータブロック（Ｄ）の列については、まとめてログ領域２２または本来領域２１から読み出すようにしてもよい。
【００７４】
以上、本発明の第１の実施形態について説明した。この第１の実施形態によれば、以下に列挙する効果を得ることができる。
（１）逆インデックスを、ログ領域２２に格納された制御ブロック（Ｈ）内と、ログ管理領域２３内との両方に保存するようにしたので、リカバリ処理部１２５による当該逆インデックスに基づくリカバリ処理により、本来位置とログ位置との対応関係を示すインデックスを順インデックス格納部１４内に完全に復元することができる。したがって、ＮＶＲＡＭ等の不揮発性メモリは不要となる。
【００７５】
（２）複数の小ブロック・ランダムライトをライト処理部１２４にて大ブロック・シーケンシャルライトに変換するようにしたので、ディスク書き込みの高速化が実現できる。
【００７６】
（３）ライト処理部１２４によってログ領域２２に高速に書き込まれたデータブロック（Ｄ）を、ディスク装置２０の負荷が比較的小さい期間、つまりディスク装置２０が空いているときを利用して、本来領域２１内の本来位置に再配置するようにしたので、時間方向の負荷分散を図りながら、（小ブロック・ランダムライトの指定するデータの書き込みの高速化のために）書き込み位置を変換した「つけ」を解消し、リード性能の低下を防ぐことができる。
【００７７】
（４）再配置の対象となるデータを、その時点で最も古い有効なデータブロック（Ｄ）とし、再配置の時期を、ログ領域２２上でライト処理部１２４により書き込まれる位置が上記データブロック（Ｄ）の位置に追いつきそうな場合としたことにより、ライト処理部１２４によるログ領域２２に対する書き込みが当該ログ領域２２をほぼ一巡する間に本来位置で上書きされなかった（更新が行われなかった）データ、つまり以後も上書きされないであろうデータが本来領域２１に再配置されるため、リード性能の低下を防ぐことができる。このことは、高負荷状態が長い間続いた場合に、比較的頻繁に書き替えられるデータブロックと、そうでないデータブロックとを分別する効果を有することを意味する。
【００７８】
（５）順インデックス格納部１４には、ログ領域２２に格納されているデータブロック（Ｄ）の順インデックスを保持するだけでよいため、当該順インデックス格納部１４に割り当てるメモリ領域（メモリ容量）を従来技術に比べて少なくできる。
【００７９】
［第２の実施形態］
図１０は本発明の第２の実施形態に係るコンピュータシステムの構成を示すブロック図であり、図１と同一部分には同一符号を付してある。
【００８０】
図１０のコンピュータシステムは、（図１中のコンピュータ１０に相当する）複数のコンピュータ１０-1〜１０-nと、これら各コンピュータ１０-1〜１０-nにより共有されるディスク装置２０とから構成される。ディスク装置２０はいずれのコンピュータ１０-1〜１０-nからもアクセス可能であり、その記憶領域は、前記第１の実施形態と同様に、本来領域２１とログ領域２２とログ管理領域２３との３つに分けて管理される。
【００８１】
各コンピュータ１０-1〜１０-nは、図１中のコンピュータ１０と同様に、ファイルシステム１１０を持つＯＳ１１と、ディスクドライバ１２とを備えている。また各コンピュータ１０-1〜１０-n上には、同一のアプリケーションプログラム１３が置かれている。なお、図１０では省略されているが、各コンピュータ１０-1〜１０-n上には、順インデックス格納部１４（の領域）も設けられている。
【００８２】
図１０のシステムでは、コンピュータ１０-1〜１０-n上のアプリケーションプログラム１３のうち、ある時点で動作しているのは、いずれか１つのコンピュータ１０-i（その時点におけるプライマリのコンピュータ）上のアプリケーションプログラム１３に限られる。
【００８３】
このようなコンピュータシステムは、ＨＡシステム（高可用性システム）と呼ばれている。ＨＡシステムの特徴は、アプリケーションプログラム１３が動作しているコンピュータ１０-iが故障によって停止しても、他のコンピュータ１０-j（ｊは１〜ｎ、但しｊ≠ｉ）が処理を引き継ぐことができる点にある。このＨＡシステムの性能の主な指標に、処理の引き継ぎ時間があり、本実施形態では以下に述べるように高速な引き継ぎが可能となる。
【００８４】
まず、各コンピュータ１０-1〜１０-nに設けられたディスクドライバ１２は、前記第１の実施形態で詳述したのと同様に動作する。したがって、アプリケーションプログラム１３が動作しているコンピュータがコンピュータ１０-1であるものとすると、当該コンピュータ１０-1は、通常は前記第１の実施形態におけるコンピュータ１０と同様の動作を行い、当該コンピュータ１０と同様の効果を有する。
【００８５】
さて、アプリケーションプログラム１３が動作しているコンピュータ１０-1が故障によって停止し、コンピュータ１０-nが処理を引き継ぐものとする。この場合、コンピュータ１０-n上のディスクドライバ１２に設けられたリカバリ処理部１２５が起動される。
【００８６】
するとリカバリ処理部１２５は、前記第１の実施形態で述べたリカバリ処理（図５参照）、即ち（最新の）チェックポイント時点にログ管理領域２３にまとめて保存された逆インデックスと、当該チェックポイント時以降にログ領域２２に保存された制御ブロック（Ｈ）中の逆インデックスとに基づくリカバリ処理を開始する。このリカバリ処理によって、引き継ぎの時点でディスク装置２０のログ領域２２に格納されている全てのデータブロック（Ｄ）のインデックスが順インデックス格納部１４上に完全に復元され、コンピュータ１０-1からコンピュータ１０-nへの処理の引き継ぎが可能になる。
【００８７】
本実施形態では、ログ管理領域２３に、チェックポイント毎に逆インデックスをまとめて保存しているので、逆インデックスの読み出しを高速に行うことができる。その結果、コンピュータ間の処理の引き継ぎ時におけるリカバリ時間を短縮することができる。
【００８８】
［第３の実施形態］
図１１は本発明の第３の実施形態に係るコンピュータシステムの構成を示すブロック図であり、図１と同一部分には同一符号を付してある。
【００８９】
図１１のコンピュータシステムは、（図１中のコンピュータ１０に相当する）コンピュータ１０′と、当該コンピュータ１０′に接続されたディスク装置２０とを備えている。このディスク装置２０の記憶領域は、前記第１の実施形態と同様に本来領域２１とログ領域２２とログ管理領域２３との３つに分けて管理される。
【００９０】
コンピュータ１０′は、ファイルシステム１１０を有するＯＳ１１′とディスクドライバ１２′とを備えている。ＯＳ１１′は、例えばオペレータのモード切り替え指示に従い、ディスクドライバ１２′に対してモード切り替え指令Ｍを発行するようになっている。このモード切り替え指令Ｍは、前記第１の実施形態で述べたようなＬＦＳを定常的に適用するログモードへの切り替え、または新たなにはＬＦＳを適用しない非ログモードへの切り替えを指示する。
【００９１】
ログモードと非ログモードとで最も相違する点は、ライト要求の指定するデータの書き込みが、ログモードでは前記第１の実施形態と同様にログ領域２２に対して行われるのに対し、非ログモードでは、本来領域２１に対して行われる点である。このためディスクドライバ１２′には、図１中のライト処理部１２４に代えてライト処理部１２４′が設けられている。このディスクドライバ１２′におけるライト処理部１２４′以外の構成については、図１中のディスクドライバ１２と同様である。但し、図１１では、ライト処理部１２４′以外にはリード処理部１２１のみを示し、他の再配置処理部１２２、ログ領域管理部１２３及びリカバリ処理部１２５については省略してある。
【００９２】
ここで、図１１の構成のコンピュータシステムにおける主としてディスクドライバ１２′の動作を説明する。
【００９３】
ＯＳ１１′は、システム運用状態において、オペレータ操作によりモード切り替えが指示されると、ディスクドライバ１２′に対してモード切り替え指令Ｍを発行する。するとディスクドライバ１２′は、現在のモードがログモードであれば非ログモードに、非ログモードであればログモードに切り替え設定する。この設定されたモードを示す情報は、コンピュータ１０′の電源がオフされた後の再立ち上げ時にも識別可能なように、不揮発性記憶装置、例えばディスク装置２０の記憶領域上の所定位置に記録される。なお、モード切り替え指令Ｍに代えて、現在のモードに無関係にログモードのＯＮ（ログモード設定）またはＯＦＦ（ログモード解除、つまり非ログモード設定）を指示するログモードＯＮ／ＯＦＦ指令を発行する構成としても構わない。
【００９４】
今、非ログモードが設定されている状態（ログモードＯＦＦ状態、ログモード解除状態）で、アプリケーションプログラム１３からのライト要求がＯＳ１１′を介してディスクドライバ１２′に与えられたものとする。この場合、ディスクドライバ１２′内のライト処理部１２４′は、ライト要求の指定する本来領域２１内の本来位置に対して指定されたデータを書き込むライト処理を行う。
【００９５】
また、非ログモードが設定されている状態でアプリケーションプログラム１３からリード要求が与えられた場合には、ディスクドライバ１２′内のリード処理部１２１が前記第１の実施形態と同様に、図９のフローチャートに従って本来領域２１またはログ領域２２からデータを読み出すリード処理を行う。
【００９６】
さて、ディスクドライバ１２′内の（図１中の再配置処理部１２２に相当する）図示せぬ再配置処理部は、ログモード／非ログモードに無関係に、前記第１の実施形態と同様に、図８のフローチャートに従うログ領域２２から本来領域２１へのブロック単位の再配置処理を行う。また、非ログモードでは、ライト要求の指定するデータの書き込みは上記したように本来領域２１に対してのみ行われる。
【００９７】
したがって非ログモードにおいて、本来領域２１に対する書き込みが続き、また再配置処理が繰り返されると、ログ領域２２上の有効なデータブロック（Ｄ）が減少し、やがてログ領域２２上には有効なデータブロック（Ｄ）が存在しない状態が到来し得る。このような状態になると、リード処理部１２１によるデータ読み出しは本来領域２１からのみ行われることになる。
【００９８】
一方、ログモードでのディスクドライバ１２′の動作は、本来領域２１、ログ領域２２及びログ管理領域２３を用いて前記第１の実施形態と全く同様に行われる。
【００９９】
以上に述べたように本実施形態においては、非ログモードからログモードへの切り替えが、本来領域２１にデータを保存した状態で行える。また、ログモードから非ログモードの切り替えも、本来領域２１、ログ領域２２及びログ管理領域２３にデータを保存した状態で行える。ここで非ログモードは、大ブロックアクセスが行われるバックアップ処理等に適している。そこで、小ブロックアクセス（特に、小ブロック・ランダムライト）が頻繁に発生するトランザクション処理が行われる期間（例えば業務時間帯）は、ログモードを設定し、バックアップ処理が行われる期間（例えば業務時間外）は、非ログモードを設定（ログモードを解除）すると、常にディスクアクセスの高速化が実現できる。
【０１００】
以上の構成は、トランザクション処理とバックアップ処理とが頻繁に（例えば毎日）行われるコンピュータシステムに適している。
【０１０１】
なお、ログモードから非ログモードに切り替え設定される際に、即ちログモードが解除される際に、ログ領域２２上の全ての有効データブロック（Ｄ）を、本来領域２１に強制的に再配置する構成としても構わない。このようにすると、リード処理部１２１によるデータ読み出しは、非ログモードへの切り替え直後から常に本来領域２１を対象に行われるため、大ブロック・シーケンシャルリードが高速に行える。この構成では、ログモードで動作する（図１中のディスクドライバ１２と同様の機能を持つ）新規なディスクドライバと、非ログモードで動作する従来から用いられているディスクドライバの２種のドライバを実装することも可能である。
【０１０２】
［第４の実施形態］
図１２は本発明の第４の実施形態に係るコンピュータシステムの構成を示すブロック図であり、図１１と同一部分には同一符号を付してある。
【０１０３】
図１２のコンピュータシステムは、（図１１中のコンピュータ１０′に相当する）コンピュータ１０″と、当該コンピュータ１０″に接続されたディスク装置２０′とを備えている。このディスク装置２０′は、ＬＦＳが適用される前記第３の実施形態で述べたログモード、またはＬＦＳが適用されない通常モードのいずれのモードでも利用可能である。
【０１０４】
ディスク装置２０′の記憶領域は、ログモードでは領域２１′と領域２２′と領域２３′の３領域に分けて管理され、領域２１′は（図１１（図１）中の本来領域２１に相当する）本来領域として、領域２２′は（図１１（図１）中のログ領域２２に相当する）ログ領域として、そして領域２３′は（図１１（図１）中のログ管理領域２３に相当する）ログ管理領域として、それぞれ使用される。一方、通常モードでは、領域２１′、領域２２′及び領域２３′の３領域は全て本来領域として用いられる。この点で通常モードは、領域２１′に相当する図１１中の領域２１だけが本来領域として用いられる前記第３の実施形態における非ログモードとは異なる。
【０１０５】
コンピュータ１０″は、ファイルシステム１１０を有するＯＳ１１″とディスクドライバ１２″とを備えている。このディスクドライバ１２″は、（図１中のリード処理部１２１、再配置処理部１２２、ログ領域管理部１２３、ライト処理部１２４及びリカバリ処理部１２５にそれぞれ相当する）リード処理部１２１″、再配置処理部１２２″、ログ領域管理部１２３″、ライト処理部１２４″及びリカバリ処理部１２５″を有している。
【０１０６】
ここで、図１２の構成のコンピュータシステムにおける主としてディスクドライバ１２″の動作を、図１３及び図１４のフローチャートを参照して説明する。
【０１０７】
ＯＳ１１″は、システム運用状態において、オペレータ操作によりモード切り替えが指示されると、ディスクドライバ１２″に対してモード切り替え指令Ｍ′を発行する。するとディスクドライバ１２″は現在のモードを調べ（ステップＳ５１）、ログモードまたは通常モードのいずれのモードに切り替えるべきかを決定する（ステップＳ５２またはＳ５３）。
【０１０８】
（ログモードから）通常モードへの切り替えを決定した場合、ディスクドライバ１２″は再配置処理部１２２″により、ログモードにおいてログ領域として割り当てられている領域２２′上の全ての有効なデータブロック（Ｄ）を、ログモードにおいて本来領域として割り当てられている領域２１′に再配置させる（ステップＳ５４）。次にディスクドライバ１２″は、ログモードをＯＦＦにして通常モードに切り替える（ステップＳ５５）。このモードを示す情報は、コンピュータ１０″の電源がオフされた後の再立ち上げ時にも識別可能なように、不揮発性記憶装置、例えばディスク装置２０′の記憶領域上の所定位置に記録される。
【０１０９】
一方、（通常モードから）ログモードへの切り替えを決定した場合、ディスクドライバ１２″は、通常モードにおいて本来領域として割り当てられているディスク装置２０′の記憶領域上の３つの領域２１′〜２３′のうち、領域２２′、領域２３′を、それぞれログ領域、ログ管理領域として割り当て、その領域の内容を破棄する（ステップＳ５６）。次にディスクドライバ１２″はログ管理領域として割り当てた領域２３′を初期化する（ステップＳ５７）。そしてディスクドライバ１２″は、ログモードをＯＮにして通常モードからログモードに切り替える（ステップＳ５８）。
【０１１０】
ディスクドライバ１２″は、ステップＳ５５またはＳ５８を実行すると、モードの切り替え設定完了をＯＳ１１″に通知する。これによりＯＳ１１″は、システムの電源をＯＦＦにする（ステップＳ５９）。
【０１１１】
その後、システムの電源がＯＮされると、ディスクドライバ１２″は、ディスク装置２０′の記憶領域中の所定位置に記録されているモード情報を参照することで、ログモードが設定されているか否かをチェックする（ステップＳ６１）。
【０１１２】
もし、ログモードが設定されているならば、ディスクドライバ１２″は、ディスク装置２０′の記憶領域中の各領域２１′〜２３′について、領域２１′を本来領域とし、領域２２′をログ領域とし、そして領域２３′をログ管理領域として使用するように設定する（ステップＳ６２）。次に、ディスクドライバ１２″はリカバリ処理部１２５″を起動して、前記第１の実施形態で述べたような、図５のフローチャートに従うリカバリ処理を行わせる（ステップＳ６３）。
【０１１３】
ここで、前回の電源ＯＮ時に、既にログモードが設定されていたならば、上記リカバリ処理により、ログ管理領域（領域２３′）とログ領域（領域２２′）の情報に基づいて、（図１中の順インデックス格納部１４に相当する）図示せぬ順インデックス格納部に順インデックスが復元される。これに対し、前回の電源ＯＮ時に通常モードが設定されていたならば、領域２３′，２２′にはリカバリの対象となる情報が存在しないため、実質的なリカバリ処理は行われずに、当該リカバリ処理は終了となる。そしてリカバリ処理が終了すると、ディスクドライバ１２″は、現在設定されているモード、即ちログモードでの動作を開始することが可能となる（ステップＳ６４）。このログモードでのディスクドライバ１２″内のリード処理部１２１″、再配置処理部１２２″、ログ領域管理部１２３″、ライト処理部１２４″及びリカバリ処理部１２５″の動作は、前記第１の実施形態におけるリード処理部１２１、再配置処理部１２２、ログ領域管理部１２３、ライト処理部１２４及びリカバリ処理部１２５の動作と同様である。
【０１１４】
一方、通常モードが設定されているならば、ディスクドライバ１２″は、ディスク装置２０′の記憶領域中の各領域２１′〜２３′の全てを本来領域として使用するように設定する（ステップＳ６５）。これによりディスクドライバ１２″は、現在設定されているモード、即ち通常モードでの動作を開始することが可能となる（ステップＳ６４）。この通常モードでは、ＬＦＳを適用しない従来のディスクドライバと同様の動作が行われ、リード処理部１２１″及びライト処理部１２４″だけが本来領域（領域２１′〜２３′）を対象とする、それぞれリード動作、ライト動作を行う。
【０１１５】
以上の構成においては、通常モードでは、領域２１′の他に、領域２２′，２３′も本来領域として用いられるため、前記第３の実施形態と比べて、通常モードにおいてディスク装置（２０′）の記憶領域を有効に利用できる。但し、ログモードへの切り替え時には、当該領域２２′，２３′の内容が破棄されるため、必要であれば当該領域２２′，２３′の内容のバックアップをとるとよい。したがって、図１２の構成は、モード切り替えが頻繁に行われるシステムより、比較的長期に亘って同一モードを適用するシステムに適している。
【０１１６】
なお、本実施形態では、ログモードまたは通常モードのいずれのモードが設定されていても、１つのディスクドライバ１２″で対応できるものとして説明したが、ログモードで動作するディスクドライバと、通常モードで動作するディスクドライバの２種のドライバを実装することも可能である。
【０１１７】
また本実施形態では、ログモードの場合と通常モードの場合とで、ディスク装置２０の記憶領域の大きさが変更されないものとして説明したが、例えば通常モードからログモードへの切り替え時に、新たにディスク装置を増設して、その増設ディスク装置の記憶領域をログ領域用の領域２２′とログ管理領域用の領域２３′とに用いるようにしても構わない。このような構成では、ログモードから通常モードへの切り替え時には、上記とは逆に、ログ領域用の領域２２′とログ管理領域用の領域２３′を持つディスク装置を、システムから取り外すようにしても構わない。
【０１１８】
【発明の効果】
以上詳述したように本発明によれば、ランダムライトの高速化のためにＬＦＳ（ログ構造化ファイル方式）を適用したことで大ブロック・シーケンシャルリードの性能が悪化するのを、データの本来の配置を考慮した再配置により防止できる。
【０１１９】
また本発明によれば、ランダムライトの高速化に必要なインデックスの保存にディスク領域を効果的に利用することで、電源遮断が発生しても、不揮発性メモリを用いることなく、起動時にインデックスを確実に復元することができる。これにより、不揮発性メモリを不要としながら、切り替えシステムでのインデックスの引き継ぎが容易に行えるようになる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係るコンピュータシステムの構成を示すブロック図。
【図２】図１中のログ領域２２における（単位ブロックとしての）制御ブロック（Ｈ）及びデータブロック（Ｄ）の格納形態と当該制御ブロック（Ｈ）のデータ構造例とを、本来領域２１上の本来位置と対応付けて示す図。
【図３】図１中のログ管理領域２３のデータ構造例をログ領域２２上の単位ブロックと対応付けて示す図。
【図４】図１中の順インデックス格納部１４のデータ構造例を示す図。
【図５】図１中のリカバリ処理部１２５によるリカバリ処理を説明するためのフローチャート。
【図６】図１中のライト処理部１２４によるライト処理を説明するためのフローチャート。
【図７】図１中のログ領域管理部１２３によるログ領域管理処理を説明するためのフローチャート。
【図８】図１中の再配置処理部１２２による再配置処理を説明するためのフローチャート。
【図９】図１中のリード処理部１２１によるリード処理を説明するためのフローチャート。
【図１０】本発明の第２の実施形態に係るコンピュータシステムの構成を示すブロック図。
【図１１】本発明の第３の実施形態に係るコンピュータシステムの構成を示すブロック図。
【図１２】本発明の第４の実施形態に係るコンピュータシステムの構成を示すブロック図。
【図１３】図１２中のディスクドライバ１２″を中心とするモード切り替え時の動作を説明するためのフローチャート。
【図１４】図１２中のディスクドライバ１２″の電源ＯＮ時の動作を説明するためのフローチャート。
【符号の説明】
１０，１０-1〜１０-n，１０′，１０″…コンピュータ
１１，１１′，１１″…ＯＳ（オペレーティングシステム）
１２，１２′，１２″…ディスクドライバ
１４…順インデックス格納部
２０，２０′…ディスク装置
２１…本来領域
２１′〜２３′…領域
２２…ログ領域
２３…ログ管理領域
１１０…ファイルシステム
１２１，１２１″…リード処理部
１２２，１２２″…再配置処理部
１２３，１２３″…ログ領域管理部
１２４，１２４′，１２４″…ライト処理部
１２５，１２５″…リカバリ処理部
【図１】
0004131894.tif 000002
【図２】
0004131894.tif 000003
【図３】
0004131894.tif 000004
【図４】
0004131894.tif 000005
【図５】
0004131894.tif 000006
【図６】
0004131894.tif 000007
【図７】
0004131894.tif 000008
【図８】
0004131894.tif 000009
【図９】
0004131894.tif 000010
【図１０】
0004131894.tif 000011
【図１１】
0004131894.tif 000012
【図１２】
0004131894.tif 000013
【図１３】
0004131894.tif 000014
【図１４】
0004131894.tif 000015