(57)【特許請求の範囲】
【請求項１】
所定のファイルを分割して得られる複数のデータを記憶する記憶装置と、前記複数のデータそれぞれについて記憶場所を示す記憶場所情報を管理するファイルシステムと、前記ファイルシステムからの記憶場所情報に応じて前記記憶装置からデータを読み出すデバイスドライバと、を含むシステムにおける情報生成方法であって、
前記ファイルシステムに、前記所定のファイルについて、自コンピュータの記憶手段におけるあるアドレスに示される記憶位置に記憶させる指示を出力し、
前記指示に応じて前記ファイルシステムが前記デバイスドライバに順次出力させる前記複数のデータそれぞれについての記憶場所情報の少なくとも１つを取得し、
取得した前記記憶場所情報に応じた前記デバイスドライバの制御により読み出されたデータが、前記ファイルシステムの前記指示に応じた制御により記憶された前記記憶手段における記憶位置を示すアドレスを取得し、
前記あるアドレスと取得した前記アドレスとの差分情報と、取得した前記記憶場所情報と、を関連付けた情報を生成する、
処理をコンピュータに実行させることを特徴とする情報生成方法。
【請求項２】
生成した前記関連付けた情報を前記ファイルシステムと異なる他のファイルシステムに出力する、
ことをさらに前記コンピュータに実行させることを特徴とする請求項１に記載の情報生成方法。
【請求項３】
前記複数のデータのうち、前記ファイルシステムから記憶場所情報を取得できなかったデータがある場合には、前記他のファイルシステムが前記記憶場所情報を取得できなかった前記所定のファイルを前記記憶装置に書き込み、前記所定のファイルの記憶場所情報を取得する
ことをさらに前記コンピュータに実行させることを特徴とする請求項２記載の情報生成方法。
【請求項４】
前記記憶装置の空き領域を前記他のファイルシステムに解放しないように制御し、生成した前記関連付けた情報を前記他のファイルシステムに出力した後に、前記記憶装置の空き領域を前記他のファイルシステムに利用可能とさせる制御を行う
ことをさらに前記コンピュータに実行させることを特徴とする請求項２又は３に記載の情報生成方法。
【請求項５】
前記移行元ファイルシステムのパスの検索時に、複数のリンク先を有するファイルまたはディレクトリに関する情報をハードリンク情報として記憶しておき、
前記ハードリンク情報に基づいて前記他のファイルシステムに複数のリンク先を有するファイルまたはディレクトリを構築する
ことをさらに前記コンピュータに実行させることを特徴とする請求項１から４のうちのいずれか一項に記載の情報生成方法。
【請求項６】
前記ファイルシステムのファイル管理情報で構成されるディレクトリツリーの任意のディレクトリを移行開始ディレクトリとして指定し、指定した前記移行開始ディレクトリの配下のディレクトリのみを前記他のファイルシステムに移行する
ことをさらに前記コンピュータに実行させることを特徴とする請求項１から５のうちのいずれか一項に記載の情報生成方法。
【請求項７】
移行が完了したディレクトリのパスを記憶領域に記憶しておき、移行作業が中断して再試行を行うときに、前記記憶領域に記憶されている移行作業が中断した時点で移行が完了しているディレクトリの次のディレクトリからファイルシステムの移行を再開する
ことをさらに前記コンピュータに実行させることを特徴とする請求項１から６のうちのいずれか一項に記載の情報生成方法。
【請求項８】
ファイルシステムの移行中は、移行元ボリュームの更新を抑止する
ことをさらに前記コンピュータに実行させることを特徴とする請求項１から７のうちのいずれか一項に記載の情報生成方法。
【請求項９】
所定のファイルを分割して得られる複数のデータを記憶する記憶装置と、前記複数のデータそれぞれについて記憶場所を示す記憶場所情報を管理するファイルシステムと、前記ファイルシステムからの記憶場所情報に応じて前記記憶装置からデータを読み出すデバイスドライバと、を含むシステム内のコンピュータに、
前記ファイルシステムに、前記所定のファイルについて前記コンピュータが備える記憶手段におけるあるアドレスに示される記憶位置に記憶させる指示を出力し、
前記指示に応じて前記ファイルシステムが前記デバイスドライバに順次出力させる前記複数のデータそれぞれについての記憶場所情報のうちの少なくとも１つを取得し、
取得した前記記憶場所情報に応じた前記デバイスドライバの制御により読み出されたデータが、前記ファイルシステムの前記指示に応じた制御により記憶された前記記憶手段における記憶位置を示すアドレスを取得し、
前記あるアドレスと取得した前記アドレスとの差分情報と、取得した前記記憶場所情報と、を関連付けた情報を生成する、
処理を実行させることを特徴とする情報生成プログラム。
【請求項１０】
所定のファイルを分割して得られる複数のデータを記憶する記憶装置と、前記複数のデータそれぞれについて記憶場所を示す記憶場所情報を管理するファイルシステムと、前記ファイルシステムからの記憶場所情報に応じて前記記憶装置からデータを読み出すデバイスドライバと、を含むシステム内の生成装置であって、
記憶手段と、
前記ファイルシステムに、前記所定のファイルについて前記記憶手段におけるあるアドレスに示される記憶位置に記憶させる指示を出力する出力手段と、
前記指示に応じて前記ファイルシステムが前記デバイスドライバに順次出力させる前記複数のデータそれぞれについての記憶場所情報のうちの少なくとも１つを取得する第１の取得手段と、
取得した前記記憶場所情報に応じた前記デバイスドライバの制御により読み出されたデータが、前記ファイルシステムの前記指示に応じた制御により記憶された前記記憶手段における記憶位置を示すアドレスを取得する第２の取得手段と、
前記あるアドレスと取得した前記アドレスとの差分情報と、取得した前記記憶場所情報と、を関連付けた情報を生成する生成手段と、
を含むことを特徴とする情報生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、既存のファイルシステムを別のファイルシステムに移行する場合の移行方法、その移行プログラム及びファイルシステムの移行を行う装置に関する。
【背景技術】
【０００２】
一般にファイルシステム毎にファイルを記憶装置に格納するときの媒体形式が異なるので、ファイルシステムを移行させるときには、オペレーティングシステムが提供する標準的なインタフェースを使用して移行元ファイルシステムからファイルデータを読み出し、移行先ファイルシステムがそのファイルデータをディスク装置などからなる記憶装置に書き込む必要があった。【０００３】
しかしながら、上記のようにファイルをディスク装置から読み出し、読み出したファイルをディスク装置に書き込むという作業を全てのファイルに対して行うと移行作業に膨大な時間が掛かってしまうという問題点があった。【０００４】
特許文献１には、異なるファイルシステムで共通のデータをアクセスできるように、第１と第２の２つのファイル管理情報を設け、それぞれのファイルシステムが自分のファイル管理情報を利用して同一のデータをアクセスできるようにすることが記載されている。【０００５】
特許文献２には、自計算機のファイルシステムにより作成されたファイルのディスク装置上での格納位置を示すエクステント情報と、他の計算機のファイルシステムにより作成されたエクステント情報とを切り換えることで、他の計算機のファイルシステムにより作成されたファイルへのアクセスを可能すること等が記載されている。【０００６】
特許文献１の発明は、特定のファイルシステムのディスク装置上の媒体レイアウトが分かっている場合に、別のファイルシステム用のファイル管理情報を作成するものであり、媒体レイアウトが分からない場合にはファイル管理情報を作成することはできない。【０００７】
特許文献２の発明は、異なるファイルシステム間でファイルを共有するためのものであり、ファイルシステムの移行を目的としたものではない。
【特許文献１】特許第２８２７４９５号公報
【特許文献２】特開２００１−８４１６８号公報
【発明の開示】
【０００８】
本発明の課題は、ファイルの移動を伴わずにファイルシステムを移行できるようにすることである。
本発明は、移行元ファイルシステムからＩ／Ｏ要求によりファイルの記憶装置上の格納位置を示す格納位置情報を出力させ、前記移行元ファイルシステムから出力される前記格納位置情報を取得し、取得した前記格納位置情報を移行先ファイルシステムに出力してファイルシステムの移行を行うファイルシステム移行方法であって、第１のファイルオフセットを指定して前記記憶装置から読み出した第１のファイルデータをバッファの第１のアドレスに格納させ、前記移行元ファイルシステムからＩ／Ｏ要求により第２のファイルオフセットを有する第２のファイルデータの格納位置を示す物理ブロック番号を出力させ、前記物理ブロック番号で指定される格納位置から読み出される第２のファイルデータを前記バッファの第２のアドレスに格納させ、前記第１のファイルオフセットと前記第１のアドレスと前記第２のアドレスとに基づいて前記第２のファイルオフセットを算出し、算出した第２のファイルオフセットと前記物理ブロック番号とに基づいて前記第２のファイルデータの前記記憶装置上の格納位置を示すエクステント情報を作成し、作成した前記エクステント情報を前記移行先ファイルシステムに出力してファイルシステムの移行を行う。
【０００９】
この発明によれば、移行元ファイルシステムの媒体レイアウトが分からない場合でも、ファイルシステムの移行を行うことができる。
本発明のファイルシステム移行方法において、ファイルシステムの移行の途中で前記移行元ファイルシステムから前記ファイルの前記格納位置情報が取得できない場合には、前記移行先ファイルシステムが前記格納位置情報を取得できなかった前記ファイルを前記記憶装置に書き込み、前記ファイルの書き込み位置を示す格納位置情報を取得してファイルシステムの移行作業を継続する。
【００１０】
このように構成することでファイルシステムの移行の途中で移行元ファイルシステムからファイルの格納位置情報が取得できない場合でも、移行先ファイルシステムがそのファイルのデータを記憶装置に書き込むことでファイルシステムの移行作業を継続することができる。
【００１１】
本発明のファイルシステム移行方法において、ファイルシステムの移行途中は、移行対象のボリュームの空き領域を前記移行先ファイルに解放しないように制御し、ファイルシステムの移行が完了した段階で、前記移行対象のボリュームを前記移行先ファイルシステムに追加する制御を行う。
【００１２】
このように構成することで、例えば、ファイルシステムの移行の途中で、移行先ファイルシステムがファイルのデータと格納位置情報を記憶装置に書き込む場合に、移行対象のボリュームの空き領域に書き込みが行われるのを防止できるので、移行対象のボリュームに格納されているデータを保護することができる。
【００１３】
本発明のファイルシステム移行方法において、前記移行元ファイルシステムのパスの検索時に、複数のリンク先を有するファイルまたはディレクトリに関する情報をハードリンク情報として記憶しておき、前記ハードリンク情報に基づいて移行先ファイルシステムに複数のリンク先を有するファイルまたはディレクトリを構築する。
【００１４】
このように構成することで移行元ファイルシステムにハードリンクが存在する場合でも、そのハードリンクを移行先ファイルシステムに再構築することができる。
本発明のファイルシステム移行方法において、移行元ファイルシステムのファイル管理情報で構成されるディレクトリツリーの任意のディレクトリを移行開始ディレクトリとして指定し、指定した前記移行開始ディレクトリの配下のディレクトリのみを前記移行先ファイルシステムに移行する。
【００１５】
このように構成することで移行元ファイルシステムのファイルを選択して移行先ファイルシステムに移行させることができる。これにより移行作業が完了した後、移行しなかったファイルの領域を未使用領域として使用することができる。
【００１６】
本発明のファイルシステム移行方法において、移行が完了したディレクトリのパスを記憶装置に記憶しておき、移行作業が中断して再試行を行うときに、前記記憶装置に記憶されている移行作業が中断した時点で移行が完了しているディレクトリの次のディレクトリからファイルシステムの移行を再開する。
【００１７】
このように構成することでファイルシステムの移行作業が中断して再開するときのリカバリ時間を短縮できる。
本発明のファイルシステム移行方法において、ファイルシステムの移行中は移行元ボリュームの更新を行わずに移行を行う。
【００１８】
このように構成することで移行途中では移行元ボリュームにあるデータの更新は行われないので移行の失敗に備えてバックアップを作成する必要が無くなる。
本発明のファイルシステム移行方法は、前記移行元ファイルシステムからＩ／Ｏ要求により前記ファイルの格納位置を示す物理ブロック番号を前記格納位置情報として出力させ、前記移行元ファイルシステムから出力される前記物理ブロック番号を取得し、取得した前記物理ブロック番号とファイル名を前記移行先ファイルシステムに出力してファイルシステムの移行を行う。
【００１９】
このように構成することで移行元ファイルシステムからファイルの格納位置を示す物理ブロック番号を取得してファイルシステムの移行を行うことができる。
本発明のファイルシステム移行方法は、前記移行元ファイルシステムからＩ／Ｏ要求により前記ファイルの格納位置を示す物理ブロック番号をデバイスドライバに出力させ、前記デバイスドライバに対するＩ／Ｏ要求をインタセプトして前記物理ブロック番号を取得する移行用ドライバと、前記移行用ドライバにより取得された前記物理ブロック番号と、ファイル名を前記移行先ファイルシステムに出力してファイルシステムの移行を行う移行ツールとを有する。
【００２０】
このように構成することで移行用ドライバがファイルの物理ブロック番号を取得し、移行ツールがその物理ブロック番号とファイル名を移行先ファイルシステムに出力することで記憶装置上のファイルを移動せずにファイルシステムの移行を実現できる。
【００２１】
本発明のファイルシステム移行方法は、第１のファイルオフセットを指定して前記記憶装置から読み出した第１のファイルデータをバッファの第１のアドレスに格納させ、前記移行元ファイルシステムからＩ／Ｏ要求により第２のファイルオフセットを有する第２のファイルデータの格納位置を示す物理ブロック番号を出力させ、前記物理ブロック番号で指定される格納位置から読み出される第２のファイルデータを前記バッファの第２のアドレスに格納させ、前記第１のファイルオフセットと前記第１のアドレスと前記第２のアドレスとに基づいて前記第２のファイルオフセットを算出し、算出した第２のファイルオフセットと前記第２のファイルデータの格納位置を示す物理ブロック番号とからなるエクステント情報を作成し、作成した前記エクステント情報を前記移行先ファイルシステムに出力してファイルシステムの移行を行う。
【００２２】
このように構成することでファイルオフセットが設定されているファイルの移行を行う場合に、各ファイルデータのファイルオフセットを算出し、ファイルオフセットと物理ブロック番号とからなるエクステント情報を移行先ファイルシステムに出力してファイルシステムの移行を行うことができる。
【図面の簡単な説明】
【００２３】
【図１】移行元ファイルシステムと移行先ファイルシステムを示す図である。
【図２】実施の形態のファイルシステム移行プログラムのモジュールの構成を示す図である。
【図３】エクステント情報の構成を示す図である。
【図４】エクステント抽出処理のフローチャートである。
【図５】ファイルオフセットを算出する処理のフローチャートである。
【図６】バッファのアドレスを示す図である。
【図７】ハードリンク処理のフローチャートである。
【図８】ディレクトリツリーを示す図である。
【図９】ハードリンク情報の構成を示す図である。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の実施の形態のファイルシステム移行方法について図面を参照して説明する。
実施の形態は、移行元ファイルシステムがファイルのディスク装置上の格納位置を示すエクステント情報を記憶していて、移行ツール（後述する）がそのエクステント情報を抽出して移行先ファイルシステムに渡すことでファイルシステムの移行を実現する場合について説明している。本発明はこれに限定されるものではなく、移行元ファイルシステムは必ずしもエクステント情報の作成機能を有する必要はない。移行元ファイルシステムからファイルの格納位置を示す情報を取得し、その情報を移行先ファイルシステムに渡すことができれば良い。【００２５】
図１は、移行元ファイルシステム１１と移行先ファイルシステム１２とからなる実施の形態のファイルシステムの構成を示す図である。
移行元ファイルシステム（例えば、ファイルシステム名をＶｘＦＳとする）１１と、移行先ファイルシステム（例えば、ファイルシステム名をＧＦＳとする）１２は同一の計算機１３に実装されており、移行元ファイルシステム１１が管理するファイルが外部記憶装置１４に格納されている。なお、移行先ファイルシステム１２は、マルチボリュームをサポートし、移行元ファイルシステム１１のデータボリュームを移行後に追加できる機能を有している。【００２６】
実施の形態のファイルシステム移行方法は、移行元ファイルシステム１１がファイルをどのような形式で外部記憶装置１４に格納しているかを移行先ファイルシステム１２が分からない場合でも、移行元ファイルシステム１１からファイルの格納位置を示す物理ブロック番号（格納位置情報に対応する）を取得し、その物理ブロック番号とファイル名を移行先ファイルシステム１２に出力することでファイルシステムの移行を実現するものである。【００２７】
図２は、実施の形態のファイルシステム移行方法を実現するプログラムモジュールの構成を示す図である。
計算機１３は、移行元ファイルシステム（ＶｘＦＳ）１１と、移行ツール２１と、移行用ドライバ（Smart Share）２２と、移行先ファイルシステム１２のアクセスクライアント（ＡＣ）２３と、移行先ファイルシステム１２のメタデータサーバ（ＭＤＳ）２４と、デバイスドライバ２５等を有する。【００２８】
移行元ファイルシステム１１は、予めファイルの格納位置を示すエクステント情報を作成して移行元メタボリューム２６に格納しておく。
移行ツール２１が、移行元ファイルシステム１１に対して全てのファイルの読み出しを指示するコマンドを発行すると、移行元ファイルシステム１１は移行元メタボリューム２６に格納されているファイルのエクステント情報を順次読み出し、エクステント情報に含まれる物理ブロック番号をデバイスドライバ２５に出力する。移行用ドライバ２２は、デバイスドライバ２５へのＩ／Ｏ要求をインタセプトしてＩ／Ｏ先の物理ブロック番号を取得し、その物理ブロック番号を後述するバッファのメモリアドレスと対応づけて記憶する。【００２９】
移行ツール２１は、移行用ドライバ２２から物理ブロック番号とファイルデータをバッファに格納したときのメモリアドレスを取得する。そして、それらの情報からファイルオフセットを算出し、算出したファイルオフセットと物理ブロック番号とから移行先ファイルシステム１２のエクステント情報を作成しアクセスクライアント２３に出力する。メタデータサーバ２４は、アクセスクライアント２３を介して受け取るエクステント情報を移行先メタボリューム２７に格納する。このエクステント情報の作成をデータボリューム２８に存在する全てのファイルを対象に行うことでファイルシステムの移行を実現できる。【００３０】
次に、図３はエクステント情報の構成を示す図である。エクステント情報は、図３に示すように、ｉノード番号により特定されるファイルＡのファイルオフセットと、サイズと、ボリューム番号と、物理ブロック番号とで構成されている。ボリューム番号はデータボリューム２８が複数のボリュームに分割されている場合に各ボリュームに割当られる番号を示し、物理ブロック番号はデータボリューム２８における格納位置を示す。エクステント情報は、１つのファイルに対して１個または複数個作成され、移行元メタボリューム２６または移行先メタボリューム２７に格納される。【００３１】
図３のエクステント情報は、ファイルオフセット「０」の１０ブロック分のファイルデータが、データボリューム２８のボリューム番号「１」の物理ブロック番号「Ｆ８００３１００」に格納されていることを示している。また、ファイルオフセット「２０」の１０ブロック分のファイルデータが、データボリューム２８のボリューム番号「２」の物理ブロック番号「Ｆ８００６７１０」に格納されていることを示している。【００３２】
次に、移行元ファイルシステム１１によりファイルのエクステント情報が予め作成されている場合に、移行ツール２１がファイルのデータボリューム２８の格納位置を示す物理ブロック番号を取得して移行先ファイルシステム１２に出力するエクステント抽出処理を図４のフローチャートを参照して説明する。【００３３】
移行元ファイルシステム１１が移行対象ファイル（以下、対象ファイルと言う）をオープンする（図４、Ｓ１１）。
次に、移行ツール２１が対象ファイルをダイレクトＩ／Ｏモードでアクセスするように設定する（Ｓ１２）。ダイレクトＩ／Ｏモードに設定することで、移行元ファイルシステム１１が対象ファイルを読み込むときにキャッシュを使用しなくなるため、移行元ファイルシステム１１はデータの読み込み時に必ずＩ／Ｏ要求を発行するようになる。【００３４】
次に、移行ツール２１が管理するメモリエリアに対象ファイルを格納するためのバッファを確保する（Ｓ１３）。ことのとき、ダイレクトＩ／Ｏモードで対象ファイルをアクセスするために、例えば、バッファのメモリアドレスは２バイト境界に、バッファサイズは５１２バイトの整数倍にする。【００３５】
次に、移行ツール２１は、バッファのメモリアドレスとバッファサイズを指定して移行用ドライバ２２にエクステント情報の抽出を指示する（Ｓ１４）。例えば、ｉｏｃｔｌのＳＳ＿ＧＥＴＥＸＴＳＴコマンドを発行する。【００３６】
移行元ファイルシステム１１は、ダイレクトＩ／Ｏモードでのｒｅａｄが指示されると、移行元メタボリューム２６から対象ファイルのエクステント情報を読み出し、そのエクステント情報を元にデバイスドライバ２５にＩ／Ｏ要求を行う（Ｓ１５）。このときデータボリューム２８から読み出されるファイルデータは、移行ツール２１により確保されたバッファの所定のメモリアドレスに格納される。【００３７】
移行用ドライバ２２は、デバイスドライバ２５のＩ／Ｏ要求をインタセプトしてＩ／Ｏ先の物理ブロック番号を取得し、その物理ブロック番号と移行元ファイルシステム１１がファイルデータを格納したバッファのメモリアドレスとを対応づけて記憶しておく（Ｓ１６）。なお、ダイレクトＩ／Ｏを適用するために、例えば、ファイルオフセットは５１２バイトの整数倍の値に設定し、Ｉ／Ｏ範囲がファイルサイズを超えないようにする。【００３８】
次に、移行ツール２１は、移行用ドライバ２２から物理ブロック番号とバッファのメモリアドレスとを取得する（Ｓ１７）。
次に、移行ツール２１は、各物理ブロック番号についてファイルオフセットを算出する（Ｓ１８）。移行ツール２１は、例えば、ファイル名と、ファイルオフセットと、ボリューム番号と、物理ブロック番号等を移行先ファイルシステム１２に出力する。【００３９】
次に、上記のバッファを繰り返し使用して対象ファイルのファイルオフセット「０」からファイル終端までのエクステント情報の抽出が終了したか否かを判別する（Ｓ１９）。エクステント情報の抽出が終了していない場合には（Ｓ１９，ＮＯ）、ステップＳ１５に戻り上述した処理を繰り返す。【００４０】
対象ファイルのファイル終端までのエクステント情報の抽出が終了した場合には（Ｓ１９，ＹＥＳ）、ステップＳ２０に進み、移行ツール２１は、バッファのメモリアドレスを指定して移行用ドライバ２２にエクステント情報の抽出の終了を指示する。例えば、ｉｏｃｎｔのＳＳ＿ＧＥＴＥＸＴＥＮＤコマンドを出力する。その後、対象ファイルをクローズする（Ｓ２１）。【００４１】
ここで、図４のステップＳ１５〜Ｓ１８のファイルオフセットを算出する処理について図５のフローチャートと図６を参照して説明する。
移行ツール２１は、ダイレクトＩ／Ｏモードを指定して、移行元ファイルシステム１１に任意のファイルオフセット（例えば、ファイルオフセットｘ）から所定範囲（例えば、ｘ＋Δｘまで）のファイルデータの読み出しを行わせ、読み出したファイルデータをバッファのメモリアドレスａ１に格納させる（図５，Ｓ２２）。すなわち、移行ツールは、移行元ファイルシステム１１にダイレクトＩ／Ｏモードでの所定範囲（例えば、ｘ＋Δｘまで）のファイルデータのｒｅａｄを指示する。この処理により、例えば、対象ファイルのファイルオフセットｘからｘ＋Δｘの範囲のファイルデータがバッファのメモリアドレスａ１以降に格納される。
【００４２】
移行元ファイルシステム１１は、移行ツール２１にｒｅａｄを指示されると、移行元メタボリューム２６から対象ファイルのエクステント情報を順次読み出し、エクステント情報の中の物理ブロック番号をデバイスドライバ２５に出力してファイルデータの読み出しを行う。そして、読み出したファイルデータをバッファの所定のメモリアドレス（例えば、メモリアドレスａ２）に格納する（Ｓ２３）。
【００４３】
移行用ドライバ２２は、移行元ファイルシステム１１からデバイスドライバ２５へのＩ／Ｏ要求をインタセプトして物理ブロック番号を取得し、取得した物理ブロック番号とファイルデータが格納されるバッファのメモリアドレスとを対応づけて記憶する（Ｓ２４）。【００４４】
移行ツール２１は、ファイルオフセットｘのデータが格納されているメモリアドレスａ１（第１のアドレスに対応する）と、移行用ドライバ２５から取得するメモリアドレスａ２（第２のアドレスに対応する）とから、ｙ＝ｘ＋（ａ２−ａ１）、の式によりファイルオフセットｙを算出する（Ｓ２５）。
【００４５】
図６は、ファイルオフセットの算出方法の説明図である。図６に示すファイルオフセットｘからｘ＋Δｘまでのデータがバッファのメモリアドレスａ１以降にストアさせる指示を、移行ツール２１が移行元ファイルシステム１１に対して行う。
次に、移行元ファイルシステム１１により順次読み出したエクステント情報に基づいて任意のブロックについてのファイルオフセットｙからｙ＋Δｙまでのデータがバッファのメモリアドレスａ２以降にストアされる。バッファに対象ファイルのデータがストアされた段階では移行ツール２１は対象ファイルのファイルオフセットｙを知ることはできない。
【００４６】
移行ツール２１は、ファイルオフセットｘのファイルデータが格納されたバッファのメモリアドレスａ１が分かっていて、移行ツール２１にとって未知のオフセットｙのファイルデータがストアされたメモリアドレスａ２を移行用ドライバ２２から取得できるので、それらの情報からファイルオフセットｙを算出することができる。そして、算出したファイルオフセットｙと移行用ドライバ２５から取得した物理ブロック番号とから移行先ファイルシステム１２におけるそのファイルデータのエクステント情報を作成することができる。
【００４７】
上記のエクステント情報の抽出を移行元ファイルシステム１１が管理する全てのファイルに対して行うことでファイルシステムの移行を実現できる。
上述した実施の形態のエクステント抽出処理によれば、移行元ファイルシステム１１の媒体レイアウトが分からない場合でも、移行元ファイルシステム１１からＩ／Ｏ要求によりファイルの格納位置を示す情報を出力させ、移行ツール２１と移行用ドライバ２２がその情報を取得して移行先ファイルシステム１２に渡すことで、ファイルの移動を行わずにファイルシステムを移行することができる。【００４８】
また、ファイルシステムの移行が完了するまではデータボリューム（移行元ボリューム）２８のデータの更新を行わないので、移行が失敗した場合に備えてデータのバックアップを行う必要が無い。なお、移行ツール２１と移行用ドライバ２２は、１つのプログラムモジュールで実現しても良い。【００４９】
上述したエクステント抽出処理を実行した場合、処理の途中でファイルのエクステント情報を抽出できないときがある。これはファイルシステムによっては、ファイルデータの格納領域を節約するために、サイズの小さいファイルのデータを移行元メタボリューム２６のｉノード番号を記憶する領域上に持つものが存在するからである。この他にエクステント情報が抽出できないケースとしては、データがキャッシュ上に残っているケース、エクステント情報が割り付けられていない領域（データボリューム２８上にデータが存在しない領域）が存在するケース、あるいはファイル終端が所定のバイト境界（例えば、５１２バイト）にないファイルの最終ブロックのケース等である。そのような場合には、データボリューム２８上にデータブロックが存在しないので、エクステント情報を抽出することができず、ファイルシステムの移行を継続できなくなる可能性がある。【００５０】
上記の問題を解決するために本実施の形態では、移行元ファイルシステム１１がデータボリューム２８からファイルのデータを読み出したときに、バッファに実際のデータが格納されていることを利用し、移行ツール２１がこのデータをｗｒｉｔｅシステムコールで直接移行先ファイルシステム１２に書き出す。移行先ファイルシステム１２は、ｗｒｉｔｅシステムコールを受け付けると、通常のｗｒｉｔｅ時の動作と同様にそのファイルデータを自分が管理するデータボリュームに書き込み、同時にそのファイルデータの格納位置を示す物理ブロック番号を含むエクステント情報を生成する。【００５１】
ファイルシステムの移行の途中の段階では、データボリューム２８には、実際にデータが格納されているがエクステント情報がまだ設定されていない記憶領域が存在している。移行ツール２１がＷｒｉｔｅシステムコールを出力し、上述したように移行先ファイルシステム１２が、エクステント情報を抽出できなかったファイルのデータを書き込むときに、移行対象のデータボリューム２８のエクステント情報が設定されていない領域が空き領域として認識されると、その空き領域（実際にはデータが存在する）にデータが書き込まれてしまう可能性がある。【００５２】
このような問題を解決するために、本実施の形態ではファイルシステムの移行開始時は運用者にノンアクティブモードのａｄｄｖｏｌコマンド（ボリューム追加のためのコマンド）を実行させ、移行対象のデータボリューム２８のエクステント情報が設定されていない領域を移行先ファイルシステム１２から空き領域として認識されないようにしている。ファイルシステムの移行が完了した段階で運用者にアクティブモードのａｄｄｖｏｌコマンドを実行させ、移行先ファイルシステム１２にデータボリューム２８を追加して、移行対象のデータボリューム２８の空き領域を認識できるようにしている。すなわち、ファイルシステムの移行の途中の段階では、移行対象のデータボリューム２８を移行先ファイルシステム１２に解放しないように制御し、ファイルシステムの移行が完了した段階で、データボリューム２８を移行先ファイルシステム１２に追加するようにしている。【００５３】
ところでファイルシステムの移行を行う場合には、移行元ファイルステム１１のハードリンクの構成をそのまま移行先ファイルシステム１２に構築する必要がある。ハードリンクとはファイルのリンク先が複数存在するものである。【００５４】
ここで移行元のハードリンクの構成を移行先に構築する実施の形態のハードリンク処理を、図７のフローチャートを参照して説明する。
移行ツール２１は、移行元ファイルシステム１１のパスの検索の途中でハードリンクが検出されたか否かを判別する（図７，Ｓ３１）。ハードリンクの検出はファイルのリンク数が「２」以上か否かにより行う。【００５５】
ステップＳ３１で、ハードリンクが検出されなかった場合には、元の処理（例えば、エクステント抽出処理）に戻る。
ハードリンクが検出された場合には（Ｓ３１、ＹＥＳ）、ステップＳ３２に進み、ハードリンクファイルのｉノード番号に対応するハードリンク情報３１（図９参照）がハードリンク情報リスト３２（図９参照）に存在するか否かを判別する。【００５６】
ハードリンク情報３１がハードリンク情報リスト３２に存在しない場合には（Ｓ３２，ＮＯ）、ステップＳ３３に進み、ファイルを新規に作成後、ｉノード番号とパス名とリンク数と処理済みリンク数とを対応づけたハードリンク情報３１を作成し、そのハードリンク情報３１をハードリンク情報リスト３２に追加する。【００５７】
ｉノード番号に対応するハードリンク情報３１がハードリンク情報リスト３２に存在する場合には（Ｓ３２，ＹＥＳ）、ステップＳ３４に進み、移行元のディレクトリのハードリンクに対応するハードリンクを移行先のディレクトリに作成し、ハードリンク情報３１の処理済みリンク数をインクリメントする。【００５８】
次に、インクリメントした処理済みリンク数がハードリンク情報３１のリンク数と等しいか否かを判別する（Ｓ３５）。
処理済みリンク数がリンク数と等しくない場合には（Ｓ３５，ＮＯ）、元の処理に戻る。【００５９】
処理済みリンク数がハードリンク情報３１のリンク数と等しいときには（Ｓ３５，ＹＥＳ）、ステップＳ３６に進み、該当するハードリンク情報３１をハードリンク情報リスト３２から削除して領域を解放する。【００６０】
次に、図８のディレクトリツリーと図９のハードリンク情報３１の構成図を参照してハードリンクを含むディレクトリの作成について説明する。
図８に示すように、移行ツール２１は、移行元ファイルシステム１１のディレクトリにリンク数が「２」以上のハードリンクファイル／ｕｓｅｒ／ｌｏｃａｌ／ａを検出したなら、ｃｒｅａｔシステムコールを使って移行先ファイルシステム１２にファイル／ｕｓｅｒ／ｌｏｃａｌ／ａを作成し、同時にファイルのｉノード番号とパス名とリンク数と処理済みリンク数とを対応づけたハードリンク情報３１を作成する。【００６１】
図９は、ハードリンク情報３１の構成とハードリンク情報リスト３２を示す図である。
ハードリンク情報３１は、ファイルを特定するｉノード番号と、パス名と、リンク数と、処理済みリンク数とにより構成されている。ハードリンクが最初に検出されたとき、ｉノード番号に対して１つのハードリンク情報３１が作成され、そのハードリンク情報３１がハードリンク情報リスト３２に登録される。【００６２】
図９は、ｉノード番号が「５２」、パス名／ｕｓｒ／ｌｏｃａｌ／ａ、リンク数「２」、処理済みリンク数「１」のハードリンク情報３１を示している。また、ｉノード番号「１０３」、パス名／ｕｓｒ／ｂｉｎ／ｗ、リンク数「５」，処理済みリンク数「３」のハードリンク情報３１を示している。【００６３】
上述したハードリンク処理でハードリンクが検出されると、ｉノード番号を指定してハードリンク情報３１が作成され、作成されたハードリンク情報３１がハードリンク情報リスト３２に登録される。【００６４】
ここで、図８のディレクトリツリーと図９のハードリンク情報３１を参照しながらハードリンク処理の具体例を説明する。
パス検索の途中で、例えば、ハードリンク／ｕｓｒ／ｌｏｃａｌ／ａを検出し、そのｉノード番号のハードリンク情報３１がハードリンク情報リスト３２に登録されていない場合には、ディレクトリ情報のリンク数「２」を取得し、図９に示すようなハードリンク情報３１を作成してハードリンク情報リスト３２に登録する。【００６５】
パスの検索を再開し、ハードリンク／ｖａｒ／ｔｍｐ／ｂを検出すると、そのファイルｂのｉノード番号に対応するハードリンク情報３１がハードリンク情報リスト３２に登録されているか否かを調べる。ハードリンク情報リスト３２に同一のｉノード番号のハードリンク情報３１が登録されているときには、移行先ファイルシステム１２のディレクトリツリーに／ｕｓｒ／ｌｏｃａｌ／ａに対するハードリンク／ｖａｒ／ｔｍｐ／ｂを作成する。そして、そのハードリンク情報３１の処理済みリンク数をインクリメントする。処理済みリンク数がリンク数と等しくなったなら該当するハードリンク情報３１をハードリンク情報リスト３２から削除する。【００６６】
上述した実施の形態のハードリンク処理によれば、移行元ファイルシステム１１のハードリンクを検出したときにハードリンク情報リスト３２の該当するハードリンク情報３１を参照することで移行元ファイルシステム１１のハードリンクの構成をそのまま移行先ファイルシステム１２に構築することができる。【００６７】
なお、ファイルシステムを移行する場合に、移行元ファイルシステムのルートディレクトリを移行開始ディレクトリとして固定するのではなく、任意のディレクトリを移行開始ディレクトリとして指定できるようにしても良い。【００６８】
このように構成することで移行対象ファイルを特定のディレクトリの配下のファイルのみに限定することができる。従って移行元ファイルシステム１１が管理する全てのファイルを移行させる必要がない場合には、移行先ファイルシステムが必要とする特定のディレクトリ配下のファイルのみを移行させることができる。これにより移行作業の時間が短縮できると共に、移行後にファイルの削除等を行わずに残りの領域を全て未使用領域として使用することができる。【００６９】
また、移行が完了したパス名をメモリ等の二次記憶装置に記憶しておくことで、移行が失敗して再試行する場合に未完了のパスから移行を再開することができる。これにより、移行途中でエラーが発生して移行を再開する場合の作業時間を短くすることができる。【００７０】
本発明は、上述した実施の形態に限らず、例えば、以下のように構成しても良い。
（１）本発明は、１つのファイルがファイルオフセットにより複数のファイルデータに分割されてディスク装置に格納される形式のファイルに限らず、１つのファイルブロックとしてディスク装置に格納されるものにも適用できる。ファイル形式はどのようなものであっても良い。
（２）移行先ファイルシステムに出力するファイルの格納位置を示す情報は、実施の形態で説明したエクステント情報に限らず、どのようなフォーマットの情報でも良い。
（３）移行元ファイルシステム１１と移行先ファイルシステム１２は同一の計算機に実装されているものに限らず、それぞれ別の計算機に実装されていても良い。
（４）ファイルを格納する記憶装置は１つのディスク装置に限らず、ファイルが複数のディスク装置に分散して記憶される場合にも本発明は適用できる。
【図１】
0004755244.tif 000002
【図２】
0004755244.tif 000003
【図３】
0004755244.tif 000004
【図４】
0004755244.tif 000005
【図５】
0004755244.tif 000006
【図６】
0004755244.tif 000007
【図７】
0004755244.tif 000008
【図８】
0004755244.tif 000009
【図９】
0004755244.tif 000010