(57)【要約】【課題】オブジェクトストレージをより利用し易くすることができる情報処理装置を提供する。【解決手段】情報処理装置は、オブジェクトストレージに記憶すべき、処理対象ファイルの一部を成す部分データが与えられる度に、当該部分データを新たなオブジェクトとしてオブジェクトストレージに格納する（Ｓ１０４）と共に、処理対象ファイルに関する更新履歴オブジェクトに、部分データの処理対象ファイル内での位置及びサイズを示す情報と、部分データオブジェクトのオブジェクトストレージへの格納順及びオブジェクト名を示すＳＥＱ番号とを含むエクステント管理情報を追加する（Ｓ１０５）。【選択図】図３
2013127748.tif 000002
【特許請求の範囲】
【請求項１】
オブジェクトストレージに記憶すべき、処理対象ファイルの一部を成す部分データが与えられると、該部分データを新たなオブジェクトとして前記オブジェクトストレージに格納すると共に、前記処理対象ファイルに関する更新履歴情報に、該部分データの前記処理対象ファイル内での位置及びサイズを示すデータ範囲情報と、前記新たなオブジェクトのオブジェクト名を示す名称情報と、前記新たなオブジェクトの前記オブジェクトストレージへの格納順を示す格納順情報とを含むオブジェクト管理情報を追加する書込要求制御部と、
前記オブジェクトストレージから読み出すべき、前記処理対象ファイルの一部を成す読出対象データの前記処理対象ファイルの位置及びサイズを示す読出対象範囲情報が与えられると、該読出対象範囲情報と前記処理対象ファイルに関する更新履歴情報中の各オブジェクト管理情報とに基づき、前記オブジェクトストレージから前記読出対象データを読み出して出力する読出要求制御部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記書込要求制御部は、
前記部分データを、前記オブジェクトストレージへの格納順を示す格納順情報をその名称に含む新たなオブジェクトとして前記オブジェクトストレージに格納すると共に、前記処理対象ファイルに関する更新履歴情報に、前記名称情報を含まないオブジェクト管理情報を追加する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記書込要求制御部は、
前記部分データを、新たなオブジェクトとして前記オブジェクトストレージに格納した後に、前記オブジェクト管理情報を前記処理対象ファイルに関する前記更新履歴情報に追加する
ことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記書込要求制御部は、
前記部分データが与えられると、オブジェクトとして記憶されている前記処理対象ファイルに関する更新履歴情報を前記オブジェクトストレージから読み出し、読み出した更新履歴情報に前記オブジェクト管理情報を追加してから、オブジェクトストレージ内の前記処理対象ファイルに関する更新履歴情報についてのオブジェクトを、前記オブジェクト管理情報を追加した更新履歴情報についてのオブジェクトに書き換え、
前記読出要求制御部は、
前記読出対象範囲情報が与えられると、オブジェクトとして記憶されている前記処理対象ファイルに関する更新履歴情報を前記オブジェクトストレージから読み出し、与えられた読出対象範囲情報と読み出した更新履歴情報中の各オブジェクト管理情報とに基づき、前記オブジェクトストレージから前記読出対象データを読み出して出力する
ことを特徴とする請求項１から３のいずれか一項に記載の情報処理装置。
【請求項５】
前記処理対象ファイルに関する前記更新履歴情報に基づき、前記オブジェクトストレージに記憶されている、前記処理対象ファイル内の同範囲のデータを含む複数のオブジェクトの特定を試み、
前記処理対象ファイル内の同範囲のデータを含む複数のオブジェクトを特定できた場合に、当該複数のオブジェクトをマージしたオブジェクトを前記オブジェクトストレージに格納すると共に特定した各オブジェクトを前記オブジェクトストレージから消去し、
前記処理対象ファイルに関する前記更新履歴情報に対して、特定した各オブジェクトに関するオブジェクト管理情報を消去する処理と前記複数のオブジェクトをマージしたオブ
ジェクトに関するオブジェクト管理情報を追加する処理とを行う
マージ処理部を、さらに、備える
ことを特徴とする請求項１から３のいずれか一項に記載の情報処理装置。
【請求項６】
コンピュータにより実行されるデータ記憶方法であって、
オブジェクトストレージに記憶すべき、処理対象ファイルの一部を成す部分データが与えられると、当該部分データを新たなオブジェクトとして前記オブジェクトストレージに格納すると共に、前記処理対象ファイルに関する更新履歴情報に、当該部分データの前記処理対象ファイル内での位置及びサイズを示すデータ範囲情報と、前記新たなオブジェクトのオブジェクト名を示す名称情報と、前記新たなオブジェクトの前記オブジェクトストレージへの格納順を示す格納順情報とを含むオブジェクト管理情報を追加する
ことを特徴とするデータ記憶方法。
【請求項７】
コンピュータに、
オブジェクトストレージに記憶すべき、処理対象ファイルの一部を成す部分データが与えられると、当該部分データを新たなオブジェクトとして前記オブジェクトストレージに格納すると共に、前記処理対象ファイルに関する更新履歴情報に、当該部分データの前記処理対象ファイル内での位置及びサイズを示すデータ範囲情報と、前記新たなオブジェクトのオブジェクト名を示す名称情報と、前記新たなオブジェクトの前記オブジェクトストレージへの格納順を示す格納順情報とを含むオブジェクト管理情報を追加する書込要求応答処理と、
前記オブジェクトストレージから読み出すべき、前記処理対象ファイルの一部を成す読出対象データの前記処理対象ファイルの位置及びサイズを示す読出対象範囲情報が与えられると、当該読出対象範囲情報と前記処理対象ファイルに関する更新履歴情報中の各オブジェクト管理情報とに基づき、前記オブジェクトストレージから前記読出対象データを読み出して出力する読出要求応答処理と、
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オブジェクトストレージにファイルを記憶する技術に関する。
【背景技術】
【０００２】
周知のように、オブジェクトストレージと呼ばれる、ファイルをオブジェクトとして保存するストレージが実用化されている。また、オブジェクトストレージにおけるデータのオブジェクトへのマッピング法としては、s3fsのように、ファイルをオブジェクトへマッピングする方法や、hadoop s3fs (hadoopは、Apache Software Foundationの商標)のように、ブロック（ファイルの一部）をオブジェクトへマッピングする方法が知られている。
【０００３】
しかしながら、ファイルをオブジェクトへマッピングする方法では、ファイルの一部のみを書き換えたい場合にも、ファイル全体を書き換えざるを得ない。また、ブロックをオブジェクトへマッピングする方法では、ブロックが固定長のため、ワークロードによっては、ブロックサイズが大き過ぎて無駄に領域を割り付けることになってしまったり、逆に小さ過ぎてバックエンドとの通信のオーバーヘッドが無視できなくなってしまうといったデメリットが生じてしまう。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２１８５２９号公報
【特許文献２】特表２０１０−５１１９２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、１つの側面では、オブジェクトストレージをより利用し易くすることができる技術を提供することにある。
【課題を解決するための手段】
【０００６】
開示の技術の一態様の情報処理装置は、
オブジェクトストレージに記憶すべき、処理対象ファイルの一部を成す部分データが与えられると、当該部分データを新たなオブジェクトとしてオブジェクトストレージに格納すると共に、処理対象ファイルに関する更新履歴情報に、当該部分データの処理対象ファイル内での位置及びサイズを示すデータ範囲情報と、新たなオブジェクトのオブジェクト名を示す名称情報と、新たなオブジェクトのオブジェクトストレージへの格納順を示す格納順情報とを含むオブジェクト管理情報を追加する書込要求制御部と、
オブジェクトストレージから読み出すべき、処理対象ファイルの一部を成す読出対象データの処理対象ファイルの位置及びサイズを示す読出対象範囲情報が与えられると、当該読出対象範囲情報と処理対象ファイルに関する更新履歴情報中の各オブジェクト管理情報とに基づき、オブジェクトストレージから読出対象データを読み出して出力する読出要求制御部と、
を備える。
【０００７】
また、開示の技術の一態様のデータ記憶方法は、コンピュータが、
オブジェクトストレージに記憶すべき、処理対象ファイルの一部を成す部分データが与えられると、当該部分データを新たなオブジェクトとしてオブジェクトストレージに格納すると共に、処理対象ファイルに関する更新履歴情報に、当該部分データの処理対象ファイル内での位置及びサイズを示すデータ範囲情報と、新たなオブジェクトのオブジェクト
名を示す名称情報と、新たなオブジェクトのオブジェクトストレージへの格納順を示す格納順情報とを含むオブジェクト管理情報を追加する。
【０００８】
また、開示の技術の一態様のプログラムは、コンピュータに、
オブジェクトストレージに記憶すべき、処理対象ファイルの一部を成す部分データが与えられると、当該部分データを新たなオブジェクトとしてオブジェクトストレージに格納すると共に、処理対象ファイルに関する更新履歴情報に、当該部分データの処理対象ファイル内での位置及びサイズを示すデータ範囲情報と、新たなオブジェクトのオブジェクト名を示す名称情報と、新たなオブジェクトのオブジェクトストレージへの格納順を示す格納順情報とを含むオブジェクト管理情報を追加する書込要求応答処理と、
オブジェクトストレージから読み出すべき、処理対象ファイルの一部を成す読出対象データの処理対象ファイルの位置及びサイズを示す読出対象範囲情報が与えられると、当該読出対象範囲情報と処理対象ファイルに関する更新履歴情報中の各オブジェクト管理情報とに基づき、オブジェクトストレージから読出対象データを読み出して出力する読出要求応答処理と、
を実行させる。
【発明の効果】
【０００９】
１実施態様によれば、オブジェクトストレージにより利用し易くすることが出来る。
【図面の簡単な説明】
【００１０】
【図１】図１は、第１実施形態に係る情報処理装置の使用形態例の説明図である。
【図２】図２は、第１実施形態に係る情報処理装置のハードウェア構成例の説明図である。
【図３】図３は、第１実施形態に係る情報処理装置内で実行される書込要求応答処理の流れ図である。
【図４Ａ】図４Ａは、更新履歴情報の説明図である。
【図４Ｂ】図４Ｂは、更新履歴情報の説明図である。
【図５】図５は、第１実施形態に係る情報処理装置内で実行される読出要求応答処理の流れ図である。
【図６】図６は、書込要求応答処理及び読出要求応答処理の内容を説明するための図である。
【図７】図７は、第１実施形態に係る情報処理装置内で実行されるマージ処理の流れ図である。
【図８】図８は、エクステント数閾値の算出法の一例の説明図である。
【図９】図９は、第２実施形態に係る情報処理装置内で実行されるマージ処理の流れ図である。
【図１０】図１０は、第３実施形態に係る情報処理装置内で実行されるマージ処理の流れ図である。
【図１１】図１１は、第４実施形態に係る情報処理装置内で実行されるマージ処理の流れ図である。
【図１２】図１２は、第５実施形態に係る情報処理装置内で実行されるマージ処理の流れ図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【００１２】
《第１実施形態》
まず、図１及び図２を用いて、本発明の第１実施形態に係る情報処理装置１０の構成及び使用形態を説明する。
【００１３】
図１に示してあるように、第１実施形態に係る情情報処理装置１０は、オブジェクトストレージ５０と何台かのクライアント６０とに接続される装置である。
【００１４】
オブジェクトストレージ５０（以下、ストレージ５０とも表記する）は、各種データ（ファイル）をオブジェクトとして記憶する，インターネット上のオブジェクトストレージである。情報処理装置１０は、オブジェクトの一部（オブジェクトとして記憶されているデータの一部）の書換は出来ないが、オブジェクトの一部の読出は可能な、ＨＴＴＰ（HyperText Transfer Protocol）によりアクセスするストレージ５０に接続される。
【００１５】
情報処理装置１０と接続される各クライアント６０は、ストレージ５０にファイルを保存するユーザが使用するコンピュータである。
【００１６】
情報処理装置１０は、コンピュータ６０に、ファイルシステム２０を含むＯＳ（Operating System）３０と、幾つかのアプリケーションプログラム３５（以下、アプリ３５とも表記する）とを、インストールした装置である。
【００１７】
ファイルシステム２０は、本情報処理装置１０を実現するために開発したファイルシステム（物理デバイス上のデータを“ファイル”として扱えるようにするための、ＯＳの一部として機能するプログラム）である。
【００１８】
ＯＳ３０は、既存のＵＮＩＸ（The Open Groupの登録商標）系ＯＳである。アプリ３５は、ファイルの一部分を成すデータの書込／読出をＯＳ３０（ファイルシステム２０）に対して要求する，POSIX（Portable Operating System Interface）ベースのプログラム（データベースプログラム等）である。尚、アプリ３５も既存のプログラムである。また、アプリ３５が書込／読出を要求するデータは、そのファイルオフセット（ファイル先頭を原点としたオフセット）が、所定値（以下、ブロックサイズと表記する）の整数倍となっており、そのサイズもブロックサイズの整数倍となっているデータである。
【００１９】
情報処理装置１０として機能させるコンピュータ６０は、ストレージ５０及び各クライアント６０との間で通信を行えるものであれば良い。従って、コンピュータ６０としては、例えば、図２に示したようなハードウェア構成を有するコンピュータを使用することが出来る。すなわち、コンピュータ６０としては、例えば、ＣＰＵ（Central Processing Unit）６１、ノースブリッジ、サウスブリッジ、ＲＡＭ（Random Access Memory）、ＨＤ
Ｄ（Hard Disk Drive)、ＮＡ（Network Adapter）等を備えたものを使用することが出来
る。そして、そのような構成を有するコンピュータ６０のＨＤＤに、ファイルシステム２０を含むＯＳ３０と、幾つかのアプリ３５とを記憶させることにより、情報処理装置１０が実現される。
【００２０】
次に、情報処理装置１０の機能（動作）を説明する。尚、以下で説明する各処理の実際の実行主体は、各プログラムを実行するＣＰＵ６１である。ただし、以下では、プログラムを主語として（プログラムに従ったＣＰＵ６１のことを、プログラムと表記することにより）、各処理の内容を説明する。
【００２１】
情報処理装置１０の運用開始時には、ユーザや情報処理装置１０の管理者によって、各ユーザ用のバケット又は全ユーザ共用のバケットをストレージ５０内に作成する作業が行われる。この作業は、各種情報を、クライアント６０の入力装置又は情報処理装置１０の入力装置を通じてストレージ５０に設定することにより行われる。
【００２２】
その後、各ユーザにより、ストレージ５０内（ストレージ５０内の自分用又は共用のバ
ケット内）に新ファイルを作成する作業や、ストレージ５０内のファイルを参照、更新する作業が行われる。すなわち、自分用又は共用のバケットのパケット名及び処理するファイルのファイル名の情報処理装置１０（アプリ３５）への入力操作を伴う各種作業が各ユーザにより行われる。
【００２３】
或るユーザが新ファイルの作成を指示した場合（その旨がアプリ３５から通知された場合）、ファイルシステム２０は、一般的なＵＮＩＸ系ファイルシステムと同様に、新ファイルのｉｎｏｄｅ番号を決定し、決定したｉｎｏｄｅ番号と新ファイルのファイル名との対応関係を記憶する。
【００２４】
また、アプリ３５は、或るファイル（以下、処理対象ファイルと表記する）の一部のデータのストレージ５０への書込が必要になった場合には、以下の情報を含むデータ書込要求と、当該データ（以下、処理対象エクステントと表記する）とを、ファイルシステム２０に対して出力する。
・処理対象ファイルの記憶に使用すべきバケットのパケット名（ユーザにより入力されているパケット名：以下、処理対象バケット名と表記する）
・処理対象ファイルのファイル名（ユーザにより入力されているファイル名：以下、処理対象ファイル名と表記する）
・処理対象エクステントのファイルオフセット
・処理対象エクステントのサイズ
【００２５】
データ書込要求及び処理対象エクステントを受け取ったファイルシステム２０（ファイルシステム２０に従って書込要求制御部として機能しているＣＰＵ６１）は、図３に示した手順の書込要求応答処理を実行する。
【００２６】
すなわち、ファイルシステム２０は、まず、処理対象エリアに関する更新履歴オブジェクトをストレージ５０から読み出すことにより、処理対象エリアに関する更新履歴情報を取得する（ステップＳ１０１）。
【００２７】
ここで、エリアとは、ファイルオフセットが規定値（例えば、16MB）の整数倍となる箇所（境界）で区切ったファイルの範囲のことである。また、処理対象エリアとは、処理対象エクステント（ストレージ５０内に記憶すべきデータ）が含まれる，処理対象ファイルのエリアのことである。尚、各エリアには、ファイル内での位置（順番）を示すエリア番号が割り当てられている。
【００２８】
処理対象エリアに関する更新履歴オブジェクトとは、処理対象エリアに関する更新履歴情報（詳細は後述）についての、以下のオブジェクト名が付けられているオブジェクトのことである。
＜処理対象バケット名＞＿＜処理対象ファイルのｉｎｏｄｅ番号＞＿＜処理対象エリアのエリア番号＞
【００２９】
尚、既に説明したように、ファイルシステム２０が受け取るデータ書込要求には、処理対象ファイルのｉｎｏｄｅ番号（以下、処理対象ｉｎｏｄｅ番号と表記する）及び処理対象エリアのエリア番号（処理対象エリア番号と表記する）が含まれていない。そのため、ステップ１０１の処理時、ファイルシステム２０は、処理対象ファイル名から処理対象ｉｎｏｄｅ番号を特定（検索）し、処理対象エクステントのファイルオフセットから処理対象エリア番号を特定（算出）する。そして、ファイルシステム２０は、特定した各番号と処理対象パケット名とを用いて、ストレージ５０に対するＨＴＴＰリクエスト（ＧＥＴリクエスト）を生成してインターネット上に送信する。
【００３０】
ただし、処理対象ファイルの或るエリアに関する更新履歴オブジェクトは、処理対象ファイルの当該エリア内のデータについての書込が初めて行われたときに、ストレージ５０内に作成（格納）されるオブジェクトとなっている。従って、今回、受け取ったデータ書込要求が、処理対象エリアに関する初めてのデータ書込要求であった場合、ファイルシステム２０は、処理対象エリアに関する更新履歴情報（更新履歴オブジェクト）をストレージ５０から取得できない。
【００３１】
処理対象エリアに関する更新履歴情報を取得できなかった場合（ステップＳ１０２；ＮＯ）、ファイルシステム２０は、ステップＳ１１１及びＳ１１２の処理を行う。
【００３２】
すなわち、この場合（ステップＳ１０２；ＮＯ）、ファイルシステム２０は、まず、処理対象エクステント（ストレージ５０に書き込むべきデータ）を、以下の名称のエクステントオブジェクトとしてストレージ５０内に格納する（ステップＳ１１１）。
＜処理対象バケット名＞＿＜処理対象ｉｎｏｄｅ番号＞＿＜処理対象エリア番号＞＿＜最小ＳＥＱ番号＞
【００３３】
ここで、最小ＳＥＱ番号とは、予め定められている，ＳＥＱ番号の最小値（例えば、“１”）のことである。
【００３４】
次いで、ファイルシステム２０は、ステップＳ１１２にて、以下の処理を行う。
【００３５】
まず、ファイルシステム２０は、“１”を表すエクステント数に、今回、格納したエクステントオブジェクトの名称に使用したＳＥＱ番号と処理対象エクステントのファイルオフセット及びサイズとを含むエクステント管理情報を続けた更新履歴情報をＲＡＭ上に用意する。すなわち、ファイルシステム２０は、図４Ａに示した構成（データ構造）を有する更新履歴情報をＲＡＭ上に用意する。
【００３６】
次いで、ファイルシステム２０は、用意した更新履歴情報を、“＜処理対象バケット名＞＿＜処理対象ｉｎｏｄｅ番号＞＿＜処理対象エリア番号＞”というオブジェクト名の更新履歴オブジェクトとしてストレージ５０に格納する。
【００３７】
そして、ファイルシステム２０は、ステップＳ１１２の処理及びこの書込要求応答処理（図３の処理）を終了する。
【００３８】
一方、処理対象エリアに関する更新履歴情報をストレージ５０から取得できた場合（ステップＳ１０２；ＹＥＳ）、ファイルシステム２０は、ステップＳ１０３以降の処理を開始する。尚、後述するように（ステップＳ１０５参照）、更新履歴情報（更新履歴オブジェクト）は、データ書込要求毎にエクステント管理情報が追加される情報となっている。従って、ステップＳ１０３以降の各処理時に参照／更新される更新履歴情報は、通常、図４Ｂに示したように、複数のエクステント管理情報を含むものである。
【００３９】
処理対象エリアに関する更新履歴情報をストレージ５０から取得できた場合（ステップＳ１０２；ＹＥＳ）、ファイルシステム２０は、まず、当該更新履歴情報に基づき、処理対象エクステント用ＳＥＱ番号を求める処理（ステップＳ１０３）を行う。このステップＳ１０３の処理で求められる処理対象エクステント用ＳＥＱ番号は、処理対象エクステントについてのエクステントオブジェクトのオブジェクト名の一部として使用されるＳＥＱ番号である。ステップＳ１０３の処理では、更新履歴情報（図４Ａ、図４Ｂ参照）に含まれるいずれのＳＥＱ番号よりも大きな値（本実施形態では、更新履歴情報中のＳＥＱ番号の最大値＋１）が、処理対象エクステント用ＳＥＱ番号として求められる。
【００４０】
処理対象エクステント用ＳＥＱ番号を求めたファイルシステム２０は、処理対象エクステントを、以下のオブジェクト名を有するエクステントオブジェクトとしてストレージ５０に格納する（ステップＳ１０４）。
＜処理対象バケット名＞＿＜処理対象ｉｎｏｄｅ番号＞＿＜処理対象エリア番号＞＿＜処理対象エクステント用ＳＥＱ番号＞
【００４１】
尚、ファイルシステム２０がストレージ５０に格納するオブジェクトは、＜バケット名＞＿＜ｉｎｏｄｅ番号＞＿＜エリア番号＞という名称、又は、＜バケット名＞＿＜ｉｎｏｄｅ番号＞＿＜エリア番号＞＿＜ＳＥＱ番号＞という名称のオブジェクトだけである。従って、このステップＳ１０４及び上記したステップＳ１１１では、処理対象エクステントが、既存のオブジェクトの代わりのオブジェクトとしてではなく、新たなオブジェクトとして、ストレージ５０に格納される。
【００４２】
ステップＳ１０４の処理を終えたファイルシステム２０は、更新履歴情報の末尾に、処理対象エクステント用ＳＥＱ番号と処理対象エクステントのファイルオフセット及びサイズとからなるエクステント管理情報を追加する（ステップＳ１０５）。さらに、ファイルシステム２０は、エクステント管理情報を追加した更新履歴情報のエクステント数を“１”インクリメントする（ステップＳ１０５）。
【００４３】
その後、ファイルシステム２０は、内容を変更した更新履歴情報を、＜処理対象バケット名＞＿＜処理対象ｉｎｏｄｅ番号＞＿＜処理対象エリア番号＞という名称の更新履歴オブジェクトとしてストレージ５０に格納する（ステップＳ１０５）。
【００４４】
尚、このステップＳ１０５の処理が行われるのは、＜処理対象バケット名＞＿＜処理対象ｉｎｏｄｅ番号＞＿＜処理対象エリア番号＞という名称のオブジェクトが読み出せ得た場合（ステップＳ１０２；ＹＥＳ）である。従って、ステップＳ１０５では、処理対象エリアに関するストレージ５０内の更新履歴オブジェクトが、「エクステント管理情報を追加し、エクステント数を“１”インクリメントした更新履歴情報」のオブジェクトに変更される（書き換えられる）ことになる。
【００４５】
ステップＳ１０５の処理を終えたファイルシステム２０（ファイルシステム２０に従ってマージ処理部として機能しているＣＰＵ６１）は、マージ処理（ステップＳ１０６；詳細は後述）を行ってから、書込要求応答処理を終了する。
【００４６】
次に、データ読出要求に対するファイルシステム２０の動作を説明する。
【００４７】
アプリ３５は、処理対象ファイルの一部のデータ（以下、読出対象データと表記する）のストレージ５０からの読出が必要になった場合には、以下の情報を含むデータ読出要求をファイルシステム２０に対して出力する。
・処理対象バケット名（処理対象ファイルが記憶されているバケットのパケット名）
・処理対象ファイル名（処理対象ファイルのファイル名）
・読出対象データのファイルオフセット
・読出対象データのサイズ
【００４８】
このデータ読出要求を受け取ったファイルシステム２０（ファイルシステム２０に従って、読出要求制御部として機能しているＣＰＵ６１）は、図５に示した手順の読出要求応答処理を実行する。尚、この図５及び以下の説明において、末尾オフセットとは、読出対象データの末尾（末端）データのファイルオフセットのことである。
【００４９】
すなわち、データ読出要求を受け取ったファイルシステム２０は、まず、処理対象エリ
アに関する更新履歴情報（以下、単に更新履歴情報と表記する）をストレージ５０から取得する（ステップＳ２０１）。尚、このステップＳ２０１の処理は、ステップＳ１０１の処理と同内容の処理である。また、流れ図（図５）への表記は省略してあるが、更新履歴情報をストレージ５０から取得できなかった場合、ファイルシステム２０は、読出対象データが存在しない旨（いわゆるＥＮＯＥＮＴエラー）をアプリ３５に通知してから読出要求応答処理を終了する。
【００５０】
ステップＳ２０１の処理を終えたファイルシステム２０は、以降の処理で使用（参照／更新）する各種変数を初期化する（ステップＳ２０２）。具体的には、ファイルシステム２０は、Ｎに、“０”を設定してから、読出サイズ＃Ｎ（つまり、読出サイズ＃０）に、“０”を設定する（ステップＳ２０２）。さらに、ファイルシステム２０は、開始位置オフセット＃Ｎ（つまり、開始位置オフセット＃０）、注目オフセットに、それぞれ、読み出し対象データのファイルオフセット（図５では、読出対象データオフセット）を設定する（ステップＳ２０２）。
【００５１】
その後、ファイルシステム２０は、更新履歴情報（ストレージ５０から取得済みの処理対象エリアに関する更新履歴情報）から、注目オフセットのデータを含む最新のエクステントオブジェクトに関するエクステント管理情報を検索する（ステップＳ２０３）。
【００５２】
尚、既に説明した書込要求応答処理（図３）の内容から明らかなように、或るエクステント管理情報中のＳＥＱ番号は、対応する（当該ＳＥＱ番号及び処理対象ｉｎｏｄｅ番号等にて特定される）エクステントオブジェクトの格納順を示している。また、或るエクステント管理情報中のファイルオフセット及びサイズは、対応するエクステントオブジェクトが保持しているデータの処理対象ファイル内での範囲（位置及び長さ）を示している。従って、ステップＳ２０３で実際に行われる処理は、注目オフセットが、ファイルオフセット〜ファイルオフセット＋サイズの間に入る，ＳＥＱ番号が最も大きなエクステント管理情報を更新履歴情報から検索する処理である。尚、流れ図への表記は省略してあるが、上記条件を満たすエクステント管理情報を更新履歴情報から検索できなかった場合、ファイルシステム２０は、読出対象データが存在しない旨をアプリ３５に通知してから読出要求応答処理を終了する。
【００５３】
ステップＳ２０３の処理を終えたファイルシステム２０は、読出サイズ＃Ｎ、注目オフセットに、それぞれ、ブロックサイズを加算する（ステップＳ２０４）。その後、ファイルシステム２０は、ブロックサイズ加算後の注目オフセットが末尾オフセット（読出対象データの末尾データのファイルオフセット）未満であるか否かを判断する（ステップＳ２０５）。
【００５４】
注目オフセットが末尾オフセット未満であった場合（ステップＳ２０５；ＹＥＳ）、ファイルシステム２０は、再度、注目オフセットのデータを含む最新のエクステントオブジェクトに関するエクステント管理情報を更新履歴情報から検索する（ステップＳ２０６）。尚、このステップでの検索に失敗した場合にも、ファイルシステム２０は、読出対象データが存在しない旨をアプリ３５に通知してから読出要求応答処理を終了する。
【００５５】
ステップＳ２０６の処理を終えたファイルシステム２０は、検索したエクステント管理情報が、前回、検索したエクステント管理情報と同一であるか否かを判断し、同一であった場合（ステップＳ２０７；ＹＥＳ）には、ステップＳ２０４以降の処理を開始する。
【００５６】
一方、今回、検索したエクステント管理情報が、前回、検索したエクステント管理情報と異なっていた場合（ステップＳ２０７；ＮＯ）、ファイルシステム２０は、前回、検索したエクステント管理情報中のＳＥＱ番号をエクステント指定値＃Ｎとして記憶してから
、Ｎに“１”を加算する（ステップＳ２０８）。さらに、ファイルシステム２０は、このステップＳ２０８において、その時点における注目オフセットの値を開始位置オフセット＃Ｎとして記憶する処理、及び、“０”を読出サイズ＃Ｎとして記憶する処理も行う。
【００５７】
そして、ステップＳ２０８の処理を終えたファイルシステム２０は、ステップＳ２０４以降の処理を開始する。
【００５８】
ファイルシステム２０は、ブロックサイズ加算後の注目オフセットが末尾オフセット以上となった場合（ステップＳ２０５；ＮＯ）には、今回、検索したエクステント管理情報中のＳＥＱ番号をエクステント指定値＃Ｎとして記憶する（ステップＳ２０９）。
【００５９】
続くステップＳ２１０にて、ファイルシステム２０は、０からＮまでのそれぞれのｎ値に対して、＜処理対象バケット名＞＿＜処理対象ｉｎｏｄｅ番号＞＿＜処理対象エリア番号＞＿＜エクステント指定値＃ｎ＞という名称のエクステントオブジェクトの，開始位置オフセット＃ｎ及び読出サイズ＃ｎが示している部分のデータを、ストレージ５０から読み出す処理を行う。より具体的には、ファイルシステム２０は、上記情報に基づき、いわゆる範囲リクエスト（部分的ＧＥＴリクエスト）を、“Ｎ＋１”回、生成・送信すると共に、各リクエストに対する応答データを受信する処理を行う。
【００６０】
そして、ファイルシステム２０は、読み出した各データ（受信した各応答データ）を繋げたデータ（つまり、読出対象データ）をアプリ３５に返送してから、ステップＳ２１０の処理及び読出要求応答処理を終了する。
【００６１】
ここで、ここまで説明した書込要求応答処理及び読出要求応答処理の内容を、図６を用いて、より具体的に説明しておくことにする。尚、図６及び以下の説明において、エリアＸとは、エリア番号Ｘが割り当てられているエリアのことである。
【００６２】
既に説明したように（図３参照）、ファイルシステム２０は、或るデータの書込要求を受け取った場合、そのデータがストレージ５０内に既に記憶されているデータの更新データであるか否か等をチェックすることなく、そのデータを、ストレージ５０への格納順（エリア単位の格納順）を示すＳＥＱ番号を含む名称のエクステントオブジェクトとしてストレージ５０に格納する。
【００６３】
従って、例えば、処理対象ファイルのエリアＸ内の，図６に示した範囲のデータＡ〜Ｄの書込がこの順に行われた場合、データＡについては、ＳＥＱ番号１を含む名称のエクステントオブジェクトがストレージ５０に格納（作成）される。また、データＢについては、ＳＥＱ番号２を含む名称のエクステントオブジェクトがストレージ５０内に格納され、データＣについては、ＳＥＱ番号３を含む名称のエクステントオブジェクトがストレージ５０内に格納される。そして、データＤについては、ＳＥＱ番号４を含む名称のエクステントオブジェクトがストレージ５０内に格納される。
【００６４】
また、ファイルシステム２０は、或るデータについてのエクステントオブジェクトをストレージ５０内に作成した際には、そのデータが含まれるエリアに関する更新履歴オブジェクトに、既に説明した内容のエクステント管理情報を追加する。
【００６５】
従って、データＡ〜Ｄのエクステントオブジェクトがストレージ５０に格納されている場合、エリアＸに関する更新履歴オブジェクト（更新履歴情報）には、以下の４つのエクステント管理情報が含まれている。
・ＳＥＱ番号１とデータＡのファイルオフセット（図６におけるＯＦ０）及びサイズが設定されているエクステント管理情報Ａ
・ＳＥＱ番号２とデータＢのファイルオフセット（図６におけるＯＦ６）及びサイズが設定されているエクステント管理情報Ｂ
・ＳＥＱ番号３とデータＣのファイルオフセット（図６におけるＯＦ３）及びサイズが設定されているエクステント管理情報Ｃ
・ＳＥＱ番号４とデータＤのファイルオフセット（図６におけるＯＦ０）及びサイズが設定されているエクステント管理情報Ｄ
【００６６】
そのような状況下、ＯＦ３から６ブロック分のデータ（図６における“読出対象データ”の読出要求を受け取った場合、ファイルシステム２０は、以下の処理を行う。
【００６７】
ファイルシステム２０は、まず、エリアＸに関する更新履歴情報を取得する（図５のステップ２００）。
【００６８】
次いで、ファイルシステム２０は、以下の設定を行う（ステップＳ２０２）。
・Ｎ  ←  ０
・開始位置オフセット＃０  ←  ＯＦ３（読出対象データのファイルオフセット）
・読出サイズ＃０  ←  ０
・注目オフセット  ←  ＯＦ３（読出対象データのファイルオフセット）
【００６９】
そして、ファイルシステム２０は、更新履歴情報から、注目オフセットが、ファイルオフセット〜ファイルオフセット＋サイズの間に入る、ＳＥＱ番号が最も大きなエクステント管理情報を検索する（ステップＳ２０３）。更新履歴情報が上記内容のものであり、注目オフセットがＯＦ３である場合、「注目オフセットが、ファイルオフセット〜ファイルオフセット＋サイズの間に入るエクステント管理情報」は、エクステント管理情報Ａ、Ｃ及びＤである。そして、エクステント管理情報Ａ、Ｃ及びＤ中の、ＳＥＱ番号が最も大きなエクステント管理情報は、エクステント管理情報Ｄであるため、ステップＳ２０３では、エクステント管理情報Ｄが検索される。
【００７０】
続くステップＳ２０４において、ファイルシステム２０は、それまで“０”であった読出サイズ＃０を、ブロックサイズに変更し、それまでＯＦ３であった注目オフセットを、ＯＦ４に変更する。
【００７１】
そして、注目オフセット（＝ＯＦ４）が、末尾オフセット（＝ＯＦ９−１）よりも小さいため（ステップＳ２０５；ＹＥＳ）、ファイルシステム２０は、ステップＳ２０６の処理を実行する。
【００７２】
更新履歴情報が上記内容のものであり、注目オフセットがＯＦ４である場合も、「注目オフセットが、ファイルオフセット〜ファイルオフセット＋サイズの間に入るエクステント管理情報」は、エクステント管理情報Ａ、Ｃ及びＤである。そして、エクステント管理情報Ａ、Ｃ及びＤ中の、ＳＥＱ番号が最も大きなエクステント管理情報は、エクステント管理情報Ｄであるため、ステップＳ２０６では、エクステント管理情報Ｄが検索される。
【００７３】
前回、検索されたエクステント管理情報も、エクステント管理情報Ｄであるため（ステップＳ２０７；ＹＥＳ）、ファイルシステム２０は、読出サイズ＃０を、２×ブロックサイズに変更し、注目オフセットを、ＯＦ５に変更する（ステップＳ２０４）。
【００７４】
そして、注目オフセット（＝ＯＦ５）が末尾オフセットよりも小さいため（ステップＳ２０５；ＹＥＳ）、ファイルシステム２０は、ステップＳ２０６の処理を実行する。更新履歴情報が上記内容のものであり、注目オフセットがＯＦ５である場合、「注目オフセットが、ファイルオフセット〜ファイルオフセット＋サイズの間に入るエクステント管理情
報」はエクステント管理情報Ｃだけとなる。従って、ステップＳ２０６の処理で、エクステント管理情報Ｃが検索される。
【００７５】
そして、前回、検索されたエクステント管理情報Ｄと異なるエクステント管理情報Ｃが検索されたため（ステップＳ２０７；ＮＯ）、ファイルシステム２０は、ステップＳ２０８にて、以下の設定を行う。
・エクステント指定値＃０  ←  ４（前回の検索結果中のＳＥＱ番号）
・Ｎ  ←  １（＝Ｎ＋１）
・開始位置オフセット＃１  ←  ＯＦ５（その時点における注目オフセット）
・読出サイズ＃１  ←  ０
【００７６】
その後、ファイルシステム２０は、ステップＳ２０４に戻って、同様の処理を繰り返す。そして、ブロックサイズ加算後の注目オフセット≧末尾オフセットとなるのは、注目オフセット＝ＯＦ９となったときであるため、ステップＳ２０９の処理が完了すると、ファイルシステム２０が以下の情報を保持している状況が実現されることになる。
−−−−−−−−−−−−−−−−−−−−−−−−−−
Ｎ            ：２
エクステント指定値＃０  ：４
開始位置オフセット＃０  ：ＯＦ３
読出サイズ＃０          ：２×ブロックサイズ
エクステント指定値＃１  ：３
開始位置オフセット＃１  ：ＯＦ５
読出サイズ＃１          ：２×ブロックサイズ
エクステント指定値＃２  ：３
開始位置オフセット＃２  ：ＯＦ７
読出サイズ＃２          ：２×ブロックサイズ
−−−−−−−−−−−−−−−−−−−−−−−−−−
【００７７】
このように（図６も参照されたい。）、上記手順で求められるエクステント指定値＃ｎ（ｎ＝０〜Ｎ）は、開始位置オフセット＃ｎから始まる，サイズが読出サイズ＃ｎの最新データを保持しているエクステントオブジェクトの名称中のＳＥＱ番号となる。
【００７８】
従って、０からＮまでのそれぞれのｎ値に対して、エクステント指定値＃ｎを含む名称のエクステントオブジェクトの，開始位置オフセット＃ｎ及び読出サイズ＃ｎが示している部分のデータをストレージ５０から読み出し、読み出した各データをアプリ３５に返送すれば（ステップＳ２１０）、アプリ３５からのデータ読出要求に応答できることになる。
【００７９】
次に、書込要求応答処理（図３）のステップＳ１０６で行われるマージ処理の内容を説明する。尚、以下の説明において、更新履歴情報とは、ステップＳ１０５の処理で内容が更新された，処理対象エリアに関する更新履歴情報のことである。また、ブロックとは、ファイルオフセットがブロックサイズの整数倍となる箇所（境界）で区切ったファイルの範囲のことである。
【００８０】
図７に、マージ処理の流れ図を示す。
【００８１】
このマージ処理は、更新履歴オブジェクトの読出／書込が効率的に行えるようにすることと、無駄なエクステントオブジェクトをストレージ５０内から削除することとを、目的とした処理である。
【００８２】
図７に示してあるように、マージ処理を開始したファイルシステム２０は、まず、更新履歴情報中のエクステント数が、エクステント数閾値（図７では、閾値）以上であるか否かを判断する（ステップＳ３０１）。
【００８３】
エクステント数閾値は、更新履歴オブジェクトの読出／書込が効率的に行えなくるエクステント数の下限値として予め設定されている値である。このエクステント数閾値の値は、例えば、以下の手順で求めることが出来る。
【００８４】
まず、情報処理装置１０（コンピュータ６０）を用いて、各種サイズのオブジェクトのストレージ５０への書込／ストレージ５０からの読出を行うことにより、オブジェクトサイズｘとスループットとの関係を示すオブジェクトサイズ・スループット曲線を得る。すると、図８に示したような形状のオブジェクトサイズ・スループット曲線μ（ｘ）が得られる。
【００８５】
すなわち、ストレージ５０のμ（ｘ）は、オブジェクトサイズｘが一定の値に到達するまでは、スループットが上昇し続けるが、オブジェクトサイズｘが一定の値を超えると、スループットが限界値μ０に近づくものとなる。
【００８６】
このμ（ｘ）の形状は、オブジェクトサイズｘが一定の値に到達するまでは、効率が良くなるが、オブジェクトサイズが一定の値を超えると、オブジェクトサイズｘが大きくなるにつれ、レイテンシが悪くなることを意味するものである。
【００８７】
従って、頻繁に読み書きされる更新履歴オブジェクトのサイズは、スループットが、限界値μ０の９０％（μ１）程度となるサイズ以下であることが望ましいことになる。そして、更新履歴オブジェクトのサイズは、ほぼ、エクステント管理情報数×１つのエクステント管理情報のサイズである（図４Ｂ参照）。そのため、κ１、又は  κ１以上の，ブロックサイズの整数倍の最小値κ２を、１つのエクステント管理情報のサイズで割った値を算出し、算出結果の整数化等を行えば、エクステント数閾値を求めることが出来る。
【００８８】
図７に戻って、マージ処理の説明を続ける。
【００８９】
エクステント数がエクステント数閾値未満であった場合（ステップＳ３０１；ＮＯ）、ファイルシステム２０は、特に処理を行うことなく、このマージ処理（及び図３の書込要求応答処理）を終了する。
【００９０】
一方、エクステント数がエクステント数値以上であった場合（ステップＳ３０１；ＹＥＳ）、ファイルシステム２０は、更新履歴情報に基づき、１つのオブジェクトにマージ可能なエクステントオブジェクト群を全て特定すると共に、特定した各エクステントオブジェクト群のマージに必要な情報を用意する（ステップＳ３０２）。その後、ファイルシステム２０は、用意した情報に基づき、特定した各エクステントオブジェクト群毎に、そのエクステントオブジェクト群をマージしたエクステントオブジェクトをストレージ５０に格納する（ステップＳ３０３）。
【００９１】
以下、ステップＳ３０２、Ｓ３０３の内容をさらに具体的に説明する。尚、以下の説明において、データ範囲とは、エクステント管理情報中のファイルオフセット及びサイズが示している，処理対象ファイルの範囲のことである。
【００９２】
ファイルシステム２０は、ステップＳ３０２にて、処理対象エリアのブロック毎に、以下の〔１〕及び〔２〕（２ａ又は２ｂ）の処理を行う。
【００９３】
〔１〕更新履歴情報から、処理対象となっているブロック（以下、処理対象ブロックと表記する）がそのデータ範囲に含まれるエクステント管理情報を検索。
〔２ａ〕検索に失敗した場合には、規定値（例えば、“−１”）を処理対象ブロックの状態値（処理対象ブロックのファイルオフセットに対応づけられた状態値）として記憶。
〔２ｂ〕１つ以上のエクステント管理情報が検索できた場合には、当該１つ以上のエクステント管理情報中のＳＥＱ番号の最大値を処理対象ブロックの状態値として記憶すると共に、各エクステント管理情報中のＳＥＱ番号を、要削除ＳＥＱ番号として記憶。
【００９４】
尚、上記した〔２ｂ〕の処理中の要削除ＳＥＱ番号の記憶処理は、処理対象ブロックに関連づけることなく行われる処理であると共に、同じＳＥＱ番号が既に要削除ＳＥＱ番号として記憶されていた場合には省略される処理である。
【００９５】
また、ファイルシステム２０は、ステップＳ３０３にて、以下の処理を行う。
【００９６】
まず、ファイルシステム２０は、ステップＳ３０２の処理で得ている各ブロックに関する状態値に基づき、状態値が規定値とはなっていない（つまり、状態値がＳＥＱ番号となっている）連続したブロック群を全て特定する。尚、この処理時、ファイルシステム２０は、“隣接するブロックと状態値が異なる１ブロック”も、“状態値が規定値とはなっていない連続したブロック群”として特定する。
【００９７】
次いで、ファイルシステム２０は、特定したブロック群毎に、『状態値が示している各データをストレージ５０から読み込み、読み込んだ各データを繋げたデータを、新たなエクステントオブジェクトとしてストレージ５０に格納する処理』を行う。
【００９８】
以下、この処理（以下、マージオブジェクト格納処理と表記する）の内容を、具体例に基づき、説明する。
【００９９】
例えば、データの書き込み状況が図６に示したようなものであった場合、ステップＳ３０２の処理で求められる各ブロックに関する状態値は、以下の値となる。
４、４、４、４、４、３、３、２、２、２、２、２、規定値（例えば、−１）、…
尚、先頭の“４”が、ファイルオフセットがＯＦ０のブロックの状態値である。
【０１００】
ファイルシステム２０は、この結果から、状態値が規定値とはなっていない連続したブロック群（以下、データ連続ブロック群と表記する）として、状態値が４、４、４、４、４、３、３、２、２、２、２、２となっている１２個のブロック群を特定する。尚、ファイルシステム２０は、図６に示していない範囲のブロックについても、データ連続ブロック群を特定する。
【０１０１】
そして、ファイルシステム２０は、そのようにして特定したデータ連続ブロック群毎に、以下の内容のマージオブジェクト格納処理を行う。
【０１０２】
或るデータ連続ブロック群に対するマージオブジェクト格納処理を開始したファイルシステム２０は、まず、当該データ連続ブロック群を、状態値が同じ連続した，幾つかのオブジェクト同一ブロック群に区分する。尚、ファイルシステム２０は、“隣接するブロックと状態値が異なる１ブロック”も、オブジェクト同一ブロック群として取り扱って、データ連続ブロック群を、幾つかのオブジェクト同一ブロック群に区分する。
【０１０３】
従って、上記した１２個のブロックからなるデータ連続ブロック群は、以下の３つのオブジェクト同一ブロック群に区分される。
・状態値が『４、４、４、４、４』のブロック（ファイルオフセットがＯＦ０〜ＯＦ４の
５ブロック）からなる第１オブジェクト同一ブロック群
・状態値が『３、３』のブロック（ファイルオフセットがＯＦ５〜ＯＦ６の２ブロック）からなる第２オブジェクト同一ブロック群
・状態値が『２、２、２、２、２』のブロック（ファイルオフセットがＯＦ７〜ＯＦ１１の５ブロック）からなる第３オブジェクト同一ブロック群
【０１０４】
次いで、ファイルシステム２０は、オブジェクト同一ブロック群毎に、そのオブジェクト同一ブロック群が示しているデータをストレージ５０から読み出す処理を行う。
【０１０５】
すなわち、ファイルシステム２０は、上記した第１オブジェクト同一ブロック群については、ＳＥＱ番号４（及び処理対象ｉｎｏｄｅ番号等）にて識別されるエクステントオブジェクト内の，ファイルオフセットＯＦ０からの５ブロック分のデータをストレージ５０から読み出す。また、ファイルシステム２０は、上記した第２オブジェクト同一ブロック群については、ＳＥＱ番号３にて識別されるエクステントオブジェクト内の，ファイルオフセットＯＦ７からの２ブロック分のデータをストレージ５０から読み出す。さらに、ファイルシステム２０は、上記した第３オブジェクト同一ブロック群については、ＳＥＱ番号２にて識別されるエクステントオブジェクト内の，ファイルオフセットＯＦ７からの５ブロック分のデータをストレージ５０から読み出す。
【０１０６】
その後、ファイルシステム２０は、ストレージ５０から読み出した各データを繋げたデータを、以下のオブジェクト名を有するエクステントオブジェクトとしてストレージ５０に格納する。
＜処理対象バケット名＞＿＜処理対象ｉｎｏｄｅ番号＞＿＜処理対象エリア番号＞＿＜既存のＳＥＱ番号の最大値＋１＞
【０１０７】
尚、既存のＳＥＱ番号とは、更新履歴情報中のＳＥＱ番号、及び、今回のステップＳ３０３の処理にて既に行っているマージオブジェクト格納処理時に使用したＳＥＱ番号のことである。
【０１０８】
そして、ファイルシステム２０は、或る（１つの）データ連続ブロック群に対するマージオブジェクト格納処理を終了する。
【０１０９】
ステップＳ３０３の処理（何回かのマージオブジェクト格納処理を含む処理）を終えたファイルシステム２０は、ステップＳ３０３の処理でストレージ５０内に追加した各オブジェクトに関するエクステント管理情報を更新履歴情報に追加する（ステップＳ３０４）。尚、既に説明（定義）したように、このステップＳ３０４でエクステント管理情報が追加される更新履歴情報は、ファイルシステム２０がストレージ５０から取得し、内容を変更した更新履歴情報である。
【０１１０】
また、ステップＳ３０４にて、ファイルシステム２０は、マージにより不要となった各エクステントオブジェクトに関するエクステント管理情報（ＳＥＱ番号＝要削除ＳＥＱ番号となっているエクステント管理情報）を更新履歴情報から削除する。
【０１１１】
尚、このステップＳ３０４におけるエクステント管理情報の削除は、更新履歴情報中の，削除すべきエクステント管理情報を、エクステント管理情報ではないことが分かる情報（以下、非使用領域情報と表記する）に書き換えることにより行われる。また、ステップＳ３０４におけるエクステント管理情報の追加は、更新履歴情報に非使用領域情報が含まれる場合には，非使用領域情報をエクステント管理情報に書き換えることによって行われ、更新履歴情報に非使用領域情報が含まれない場合には、更新履歴情報の末尾にエクステント管理情報を追加することによって行われる。
【０１１２】
さらに、ファイルシステム２０は、更新履歴情報中のエクステント数に、“追加した更新履歴情報数−削除した更新履歴情報数”（この値は、負の値）を加算する処理も行う（ステップＳ３０４）。
【０１１３】
その後、ファイルシステム２０は、ストレージ５０内の、処理対象エリアに関する更新履歴オブジェクトを、内容を更新した更新履歴情報のオブジェクトに変更する（ステップＳ３０５）。そして、ファイルシステム２０は、マージにより不要となった各エクステントオブジェクト（各要削除ＳＥＱ番号で識別されるエクステントオブジェクト）をストレージ５０から削除（ステップＳ３０６）してから、このマージ処理（及び図３の書込要求応答処理）を終了する。
【０１１４】
以上、詳細に説明したように、本実施形態に係る情報処理装置１０（ファイルシステム２０）は、各ユーザが、ストレージ５０を、あたかも、オブジェクトの一部分の書き換えが可能なストレージとして利用できる環境を実現できるものとなっている。従って、本実施形態に係る情報処理装置１０（ファイルシステム２０）を用いておけば、ファイルをオブジェクトへマッピングした場合やブロックをオブジェクトにマッピングした場合に生ずる不具合が生じない形でストレージ５０を利用できることになる。また、情報処理装置１０（ファイルシステム２０）を用いておけば、ストレージ５０を、記憶可能なファイルサイズの制限がないストレージとして利用できることにもなる。
【０１１５】
また、本実施形態に係る情報処理装置１０（ファイルシステム２０）は、マージ処理を行う機能を有している。従って、本実施形態に係る情報処理装置１０（ファイルシステム２０）によれば、ストレージ５０の記憶容量が過度に無駄に使用されることを防止できることにもなる。
【０１１６】
《第２実施形態》
本発明の第２実施形態に係る情報処理装置は、第１実施形態に係る情報処理装置１０内のファイルシステム２０を、上記したものとは異なる内容のマージ処理を行うものに置き換えた装置である。そのため、以下では、第１実施形態の情報処理装置１０の説明時に用いたものと同じ符号を用いて、第２実施形態に係る情報処理装置１０内のファイルシステム２０が実行するマージ処理の内容のみを説明することにする。
【０１１７】
図９に、本実施形態に係る情報処理装置１０内のファイルシステム２０（以下、第２ファイルシステム２０と表記する）が実行するマージ処理の流れ図を示す。
【０１１８】
この図９に示してあるように、マージ処理を開始した第２ファイルシステム２０は、まず、今回の書込により不要となったオブジェクトサイズを特定して処理対象エリアに関する総不要オブジェクトサイズβに加算する処理（ステップＳ４００）を行う。
【０１１９】
ここで、今回の書込により不要となったオブジェクトサイズとは、今回の書込が行われる前は、不要ではなかったが、今回の書込により不要となった、幾つかのエクステントオブジェクトの部分の合計サイズのことである。
【０１２０】
また、総不要オブジェクトサイズβとは、第２ファイルシステム２０が、エリア（及びファイル）毎に管理している、総不要オブジェクトサイズ（ストレージ５０内の、更新データが存在するデータの総サイズ）を表す数値情報のことである。
【０１２１】
尚、第２ファイルシステム２０は、或るエリア内のデータが書込が初めて行われたときに、そのエリアに関する総不要オブジェクトサイズβを“０”に初期化する。また、情報
処理装置１０が再起動された場合、第２ファイルシステム２０は、再起動後に初めて或るエリアに関する更新履歴情報を取得した際に、取得した更新履歴情報を解析することによりそのエリアに関する総不要オブジェクトサイズを特定する。そして、第２ファイルシステム２０は、特定結果をそのエリアに関する総不要オブジェクトサイズβに設定する。
【０１２２】
ステップＳ４００の処理を終えた第２ファイルシステム２０は、総不要オブジェクトサイズβが、総不要オブジェクトサイズ閾値（図９では、“閾値”）を超えているか否かを判断する（ステップＳ４０１）。ここで、総不要オブジェクトサイズ閾値とは、情報処理装置１０の入力装置の操作により第２ファイルシステム２０に対して設定される値（管理者用が変更可能な値）のことである。尚、総不要オブジェクトサイズ閾値を、他の条件によって変わる値（例えば、エクステントオブジェクトの最大サイズの１０倍）としておくことも出来る。
【０１２３】
βが総不要オブジェクトサイズ閾値未満であった場合（ステップＳ４０１；ＮＯ）、第２ファイルシステム２０は、特に処理を行うことなく、このマージ処理を終了する。
【０１２４】
一方、βが総不要オブジェクトサイズ閾値以上であった場合（ステップＳ４０１；ＹＥＳ）、第２ファイルシステム２０は、ステップ４０２〜Ｓ４０６にて、それぞれ、ステップ３０２〜Ｓ３０６（図７）と同じ処理を行う。
【０１２５】
そして、ステップＳ４０６の処理を終えた第２ファイルシステム２０は、βを現状を表す値（つまり、“０”）に更新（ステップＳ４０７）してから、このマージ処理を終了する。
【０１２６】
以上、説明したように、本実施形態に係る情報処理装置１０（ファイルシステム２０）は、マージ処理の内容のみが上記した第１実施形態に係る情報処理装置１０（ファイルシステム２０）と異なるものとなっている。そして、図９に示した内容／手順のマージ処理でも、ストレージ５０の記憶容量が過度に無駄に使用されることを防止できる。従って、この第２実施形態に係る情報処理装置１０（ファイルシステム２０）も、第１実施形態に係る情報処理装置１０（ファイルシステム２０）と同様の作用効果を奏するものとなっていると言うことが出来る。
【０１２７】
《第３実施形態》
本発明の第３実施形態に係る情報処理装置も、第１実施形態に係る情報処理装置１０内のファイルシステム２０を、上記したものとは異なる内容のマージ処理を行うものに置き換えた装置である。そのため、第２実施形態に関する説明時と同様に、第１実施形態の情報処理装置１０の説明時に用いたものと同じ符号を用いて、第３実施形態に係る情報処理装置１０内のファイルシステム２０が実行するマージ処理の内容のみを説明することにする。
【０１２８】
図１０に、第３実施形態に係る情報処理装置１０内のファイルシステム２０（以下、第３ファイルシステム２０と表記する）が実行するマージ処理の流れ図を示す。
【０１２９】
この図１０に示してあるように、マージ処理を開始した第３ファイルシステム２０は、第２ファイルシステム２０と同様に、まず、今回の書込により不要となったオブジェクトサイズを処理対象エリアに関する総不要オブジェクトサイズβに加算する（ステップＳ５００）。ただし、第３ファイルシステムは、このステップＳ５００にて、処理対象エリアに関する総オブジェクトサイズαに、今回格納したオブジェクトサイズ（正確には、今回、オブジェクトとしてストレージ５０に記憶した処理対象エクステントのサイズ）を加算する処理も行う。
【０１３０】
ここで、総オブジェクトサイズαとは、第３ファイルシステム２０が、エリア（及びファイル）毎に管理している、ストレージ５０にオブジェクトとして記憶したエクステントデータの総サイズのことである。第３ファイルシステム２０は、或るエリア内のデータの書込が初めて行われたときに、そのエリアに関する総オブジェクトサイズαを“０”に初期化する。また、情報処理装置１０が再起動された場合、第３ファイルシステム２０は、再起動後に初めて或るエリアに関する更新履歴情報を取得した際に、取得した更新履歴情報中の各サイズの総和を算出する。そして、第３ファイルシステム２０は、算出結果をそのエリアに関する総オブジェクトサイズαとして記憶する。
【０１３１】
ステップＳ５００の処理を終えた第３ファイルシステム２０は、β／α（βをαで割った値）が、割合閾値（図１０では、“閾値”；例えば、０．９）を超えているか否かを判断する（ステップＳ５０１）。この割合閾値も、上記した総不要オブジェクトサイズ閾値と同様に、情報処理装置１０の入力装置の操作により第３ファイルシステム２０に対して設定される値（管理者用が変更可能な値）である。
【０１３２】
β／αが割合閾値未満であった場合（ステップＳ５０１；ＮＯ）、第３ファイルシステム２０は、特に処理を行うことなく、このマージ処理を終了する。
【０１３３】
一方、β／αが割合閾値以上であった場合（ステップＳ５０１；ＹＥＳ）、第３ファイルシステム２０は、ステップ５０２〜Ｓ５０６にて、それぞれ、ステップ３０２〜Ｓ３０６（図７）と同じ処理を行う。
【０１３４】
そして、ステップＳ５０６の処理を終えた第３ファイルシステム２０は、α、βを現状を表す値に更新（ステップＳ５０７）してから、このマージ処理を終了する。
【０１３５】
以上、説明したように、本実施形態に係る情報処理装置１０（ファイルシステム２０）も、マージ処理の内容のみが上記した第１実施形態に係る情報処理装置１０（ファイルシステム２０）と異なるものとなっている。そして、図１０に示した内容／手順のマージ処理でも、ストレージ５０の記憶容量が過度に無駄に使用されることを防止できる。従って、この第３実施形態に係る情報処理装置１０（ファイルシステム２０）も、第１実施形態に係る情報処理装置１０（ファイルシステム２０）と同様の作用効果を奏するものとなっていると言うことが出来る。
【０１３６】
《第４実施形態》
本発明の第４実施形態に係る情報処理装置も、第１実施形態に係る情報処理装置１０内のファイルシステム２０を、上記したものとは異なる内容のマージ処理を行うものに置き換えた装置である。そのため、第１実施形態の情報処理装置１０の説明時に用いたものと同じ符号を用いて、第４実施形態に係る情報処理装置１０内のファイルシステム２０が実行するマージ処理の内容のみを説明する。
【０１３７】
図１１に、第４実施形態に係る情報処理装置１０内のファイルシステム２０（以下、第４ファイルシステム２０と表記する）が実行するマージ処理の流れ図を示す。
【０１３８】
図１１に示してあるように、このマージ処理を開始した第４ファイルシステム２０は、まず、処理対象エリア用の、ブロック毎の重複度を記憶可能な重複度テーブルの、今回の各書込ブロックに関する重複度を、“１”インクリメントする（ステップＳ６００）。
【０１３９】
重複度テーブルは、第４ファイルシステム２０が、エリア（及びファイル）毎に管理している『１つのエリア内の各ブロックについて重複度を記憶できるテーブル』（ＲＡＭ上
の情報群）である。尚、或るブロックの重複度とは、そのブロックのデータを保持しているエクステントオブジェクト数のことである。また、第４ファイルシステム２０は、或るエリア内のデータの書込が初めて行われたときに、そのエリアに関する、各重複度として“０”を記憶させた重複度テーブルを用意する。さらに、情報処理装置１０が再起動された場合、第４ファイルシステム２０は、再起動後に初めて或るエリアに関する更新履歴情報を取得した際に、取得した更新履歴情報を解析することにより、各ブロックの重複度を求め、各重複度として求めた値を記憶させた重複度テーブルを用意する。
【０１４０】
ステップＳ６００の処理を終えた第４ファイルシステム２０は、値を更新したいずれかの重複度が、管理者等により自システム２０に設定されている重複度閾値（例えば、１０）以上となっているか否かを判断する（ステップＳ６０１）。
【０１４１】
いずれかの重複度も重複度閾値以上とはなっていなかった場合（ステップＳ６０１；ＮＯ）、第５ファイルシステム２０は、特に処理を行うことなく、このマージ処理を終了する。
【０１４２】
一方、いずれかの重複度が重複度閾値以上となっていた場合（ステップＳ６０１；ＹＥＳ）、第４ファイルシステム２０は、ステップＳ６０２〜Ｓ６０６にて、それぞれ、ステップ３０２〜Ｓ３０６（図７）と同じ処理を行う。
【０１４３】
その後、第４ファイルシステム２０は、処理対象エリアに関する重複度テーブルを、現状を表すもの（各ブロックについての重複度が、“０”又は“１”となっているもの）に更新（ステップＳ６０７）してから、このマージ処理を終了する。
【０１４４】
以上、説明したように、本実施形態に係る情報処理装置１０（ファイルシステム２０）も、マージ処理の内容のみが上記した第１実施形態に係る情報処理装置１０（ファイルシステム２０）と異なるものとなっている。そして、図１１に示した内容／手順のマージ処理でも、ストレージ５０の記憶容量が過度に無駄に使用されることを防止できる。従って、この第４実施形態に係る情報処理装置１０（ファイルシステム２０）も、第１実施形態に係る情報処理装置１０（ファイルシステム２０）と同様の作用効果を奏するものとなっていると言うことが出来る。
【０１４５】
《第５実施形態》
本発明の第５実施形態に係る情報処理装置も、第１実施形態に係る情報処理装置１０内のファイルシステム２０を、上記したものとは異なる内容のマージ処理を行うものに置き換えた装置である。そのため、以下では、第１実施形態の情報処理装置１０の説明時に用いたものと同じ符号を用いて、第５実施形態に係る情報処理装置１０内のファイルシステム２０が実行するマージ処理の内容のみを説明することにする。
【０１４６】
図１２に、第５実施形態に係る情報処理装置１０内のファイルシステム２０（以下、第５ファイルシステム２０と表記する）が実行するマージ処理の流れ図を示す。
【０１４７】
図１２に示してあるように、このマージ処理を開始した第５ファイルシステム２０は、まず、第３ファイルシステム２０がステップＳ５００（図１０）にて行うものと同内容の処理を、ステップＳ７０１にて行う。
【０１４８】
次いで、第５ファイルシステム２０は、第４ファイルシステム２０がステップＳ６００（図１１）にて行うものと同内容の処理を、ステップＳ７０２にて行う。
【０１４９】
要するに、第５ファイルシステム２０は、マージ処理時、まず、処理対象エリアに関す
る総オブジェクトサイズα、総不要オブジェクトサイズβ、重複度テーブルを、現状を表すものに更新する処理（ステップＳ７０１、Ｓ７０２）を行う。
【０１５０】
次いで、第５ファイルシステム２０は、開始条件が満たされているか否かを判断する（ステップＳ７０３）。
【０１５１】
ここで、開始条件とは、以下の条件１〜４のいずれかが満たされるという条件のことである。
・条件１：エクステント数≧エクステント数閾値
・条件２：β≧総不要オブジェクトサイズ閾値
・条件３：β／α≧割合閾値
・条件４：いずれかの重複度≧重複度閾値
【０１５２】
尚、エクステント数閾値、総不要オブジェクトサイズ閾値、割合閾値、重複度閾値とは、いずれも、情報処理装置１０の入力装置を操作することにより、第５ファイルシステム２０に対して設定できる情報のことである。
【０１５３】
そして、第５ファイルシステム２０は、開始条件が満たされていなかった場合（ステップＳ７０３；ＮＯ）には、特に処理を行うことなく、このマージ処理を終了する。
【０１５４】
一方、開始条件が満たされていた場合（ステップＳ７０３；ＹＥＳ）、つまり、条件１〜４のいずれかが満たされていた場合、第５ファイルシステム２０は、ステップＳ７０３〜Ｓ７０７にて、それぞれ、ステップ３０２〜Ｓ３０６（図７）と同じ処理を行う。
【０１５５】
そして、ステップＳ７０７の処理を終えた第４ファイルシステム２０は、処理対象エリアに関するα、β、更新重複度テーブルを、現状を表すものに更新（ステップＳ７０９）してから、このマージ処理を終了する。
【０１５６】
以上の説明から明らかなように、この第５実施形態に係る情報処理装置１０（ファイルシステム２０）は、ステップ７０３〜Ｓ７０８の処理（実際のマージ処理）が開始される条件が、 他の各実施形態に係る情報処理装置１０（ファイルシステム２０）よりも多い
ものとなっている。従って、この第５実施形態に係る情報処理装置１０（ファイルシステム２０）は、幾つかの閾値を過度に大きな値に設定してしまっても特に問題が生じない装置（プログラム）となっていると言うことが出来る。
【０１５７】
《変形形態》
上記した各実施形態に係る情報処理装置１０（ファイルシステム２０）に対しては、各種の変形を行うことが出来る。
【０１５８】
例えば、各実施形態に係る情報処理装置１０（ファイルシステム２０）を、ストレージ５０内の更新履歴オブジェクトを書き換えた後、ストレージ５０にエクステントオブジェクトを格納する装置（プログラム）に変形することが出来る。ただし、そのように各実施形態に係る情報処理装置１０（ファイルシステム２０）を変形すると、更新履歴オブジェクトの書き換え直後に何らかの理由によりストレージ５０へのアクセスが行えなくなった場合に、更新履歴オブジェクト（更新履歴情報）では存在することになっているエクステントオブジェクトがストレージ５０内に存在しないといった状況が発生してしまうことになる。一方、エクステントオブジェクトの格納後に、更新履歴オブジェクトを書き換えるようにしておけば、エクステントオブジェクトの格納直後にストレージ５０へのアクセスが行えなくなっても上記のような状況が発生することはない。従って、エクステントオブジェクトの格納と、更新履歴オブジェクトの書き換えの順番は、各実施形態と同順にして
おくことが望ましい。
【０１５９】
また、各実施形態に係る情報処理装置１０（ファイルシステム２０）を、各エリア（及び各ファイル）に関する更新履歴情報が情報処理装置１０内に記憶されるものに変形することも出来る。ただし、そのように変形する場合、更新履歴情報が失われてしまうことがないようにしておく必要が生ずる。従って、各実施形態のように、更新履歴情報も、オブジェクトとしてストレージ５０に記憶されるようにしておいた方が良い。
【０１６０】
また、エクステント管理情報は、対応するエクステントオブジェクトのファイル名と、そのエクステントオブジェクトのストレージ５０への格納順と、そのエクステントオブジェクトが処理対象ファイルのどの部分のデータのオブジェクトであるかが分かる情報であれば良いものである。従って、各実施形態に係る情報処理装置１０（ファイルシステム２０）を、エクステントオブジェクトのファイル名をＳＥＱ番号とは無関係に決定し、決定したファイル名も含むエクステント管理情報を更新履歴情報（更新履歴情報オブジェクト）に追加する装置（プログラム）に変形することも出来る。
【０１６１】
また、第４実施形態に係る情報処理装置１０（ファイルシステム２０）を、“重複度閾値−重複度”に相当する重複度余裕値を各ブロック（及び各ファイル）毎に管理し、或るブロックの重複度余裕値が“０”になったときに、ステップ６０２以降の処理を開始するものに変形することも出来る。
【０１６２】
各実施形態に係るファイルシステム２０を、ユーザ空間で動作するプログラム（アプリ３５としての機能も有するプログラム等）に変形することも出来る。さらに、書込要求応答処理／読出要求応答処理／マージ処理の内容（手順）に、この欄で説明したものとは異なる変形を加えても良いことは、当然のことである。
【０１６３】
以上、開示した技術に関し、更に以下の付記を開示する。
（付記１）  オブジェクトストレージに記憶すべき、処理対象ファイルの一部を成す部分データが与えられると、当該部分データを新たなオブジェクトとして前記オブジェクトストレージに格納すると共に、前記処理対象ファイルに関する更新履歴情報に、当該部分データの前記処理対象ファイル内での位置及びサイズを示すデータ範囲情報と、前記新たなオブジェクトのオブジェクト名を示す名称情報と、前記新たなオブジェクトの前記オブジェクトストレージへの格納順を示す格納順情報とを含むオブジェクト管理情報を追加する書込要求制御部と、
前記オブジェクトストレージから読み出すべき、前記処理対象ファイルの一部を成す読出対象データの前記処理対象ファイルの位置及びサイズを示す読出対象範囲情報が与えられると、当該読出対象範囲情報と前記処理対象ファイルに関する更新履歴情報中の各オブジェクト管理情報とに基づき、前記オブジェクトストレージから前記読出対象データを読み出して出力する読出要求制御部と、
を備えることを特徴とする情報処理装置。
【０１６４】
（付記２）  前記書込要求制御部は、
前記部分データを、前記オブジェクトストレージへの格納順を示す格納順情報をその名称に含む新たなオブジェクトとして前記オブジェクトストレージに格納すると共に、前記処理対象ファイルに関する更新履歴情報に、前記名称情報を含まないオブジェクト管理情報を追加する
ことを特徴とする付記１に記載の情報処理装置。
【０１６５】
（付記３）  前記書込要求制御部は、
前記部分データを、新たなオブジェクトとして前記オブジェクトストレージに格納した
後に、前記オブジェクト管理情報を前記処理対象ファイルに関する前記更新履歴情報に追加する
ことを特徴とする付記１又は２に記載の情報処理装置。
【０１６６】
（付記４）  前記書込要求制御部は、
前記部分データが与えられると、オブジェクトとして記憶されている前記処理対象ファイルに関する更新履歴情報を前記オブジェクトストレージから読み出し、読み出した更新履歴情報に前記オブジェクト管理情報を追加してから、オブジェクトストレージ内の前記処理対象ファイルに関する更新履歴情報についてのオブジェクトを、前記オブジェクト管理情報を追加した更新履歴情報についてのオブジェクトに書き換え、
前記読出要求制御部は、
前記読出対象範囲情報が与えられると、オブジェクトとして記憶されている前記処理対象ファイルに関する更新履歴情報を前記オブジェクトストレージから読み出し、与えられた読出対象範囲情報と読み出した更新履歴情報中の各オブジェクト管理情報とに基づき、前記オブジェクトストレージから前記読出対象データを読み出して出力する
ことを特徴とする付記１から３のいずれか一項に記載の情報処理装置。
【０１６７】
（付記５）  前記処理対象ファイルに関する前記更新履歴情報に基づき、前記オブジェクトストレージに記憶されている、前記処理対象ファイル内の同範囲のデータを含む複数のオブジェクトの特定を試み、
前記処理対象ファイル内の同範囲のデータを含む複数のオブジェクトを特定できた場合に、当該複数のオブジェクトをマージしたオブジェクトを前記オブジェクトストレージに格納すると共に特定した各オブジェクトを前記オブジェクトストレージから消去し、
前記処理対象ファイルに関する前記更新履歴情報に対して、特定した各オブジェクトに関するオブジェクト管理情報を消去する処理と前記複数のオブジェクトをマージしたオブジェクトに関するオブジェクト管理情報を追加する処理とを行う
マージ処理部を、さらに、備える
ことを特徴とする付記１から４のいずれか一項に記載の情報処理装置。
【０１６８】
（付記６）  前記マージ処理部は、
前記処理対象ファイルに関する前記更新履歴情報中のオブジェクト管理情報数が規定値以上となったときに、機能する
ことを特徴とする付記５に記載の情報処理装置。
【０１６９】
（付記７）  前記マージ処理部は、
更新データのオブジェクトの格納により不要となったデータの総サイズが、規定サイズ以上となったときに、機能する
ことを特徴とする付記５に記載の情報処理装置。
【０１７０】
（付記８）  前記マージ処理部は、
更新データのオブジェクトの格納により不要となったデータの総サイズの、格納済みのオブジェクトの総サイズとの割合が、規定割合以上となったときに、機能する
ことを特徴とする付記５に記載の情報処理装置。
【０１７１】
（付記９）  前記マージ処理部は、
同一範囲のデータを保持したオブジェクトの数が規定数以上となったときに、機能する
ことを特徴とする付記５に記載の情報処理装置。
【０１７２】
（付記１０）  コンピュータにより実行されるデータ記憶方法であって、
オブジェクトストレージに記憶すべき、処理対象ファイルの一部を成す部分データが与
えられると、当該部分データを新たなオブジェクトとして前記オブジェクトストレージに格納すると共に、前記処理対象ファイルに関する更新履歴情報に、当該部分データの前記処理対象ファイル内での位置及びサイズを示すデータ範囲情報と、前記新たなオブジェクトのオブジェクト名を示す名称情報と、前記新たなオブジェクトの前記オブジェクトストレージへの格納順を示す格納順情報とを含むオブジェクト管理情報を追加する
ことを特徴とするデータ記憶方法。
【０１７３】
（付記１１）  コンピュータに、
オブジェクトストレージに記憶すべき、処理対象ファイルの一部を成す部分データが与えられると、当該部分データを新たなオブジェクトとして前記オブジェクトストレージに格納すると共に、前記処理対象ファイルに関する更新履歴情報に、当該部分データの前記処理対象ファイル内での位置及びサイズを示すデータ範囲情報と、前記新たなオブジェクトのオブジェクト名を示す名称情報と、前記新たなオブジェクトの前記オブジェクトストレージへの格納順を示す格納順情報とを含むオブジェクト管理情報を追加する書込要求応答処理と、
前記オブジェクトストレージから読み出すべき、前記処理対象ファイルの一部を成す読出対象データの前記処理対象ファイルの位置及びサイズを示す読出対象範囲情報が与えられると、当該読出対象範囲情報と前記処理対象ファイルに関する更新履歴情報中の各オブジェクト管理情報とに基づき、前記オブジェクトストレージから前記読出対象データを読み出して出力する読出要求応答処理と、
を実行させることを特徴とするプログラム。
【図１】
2013127748.tif 000003
【図２】
2013127748.tif 000004
【図３】
2013127748.tif 000005
【図４Ａ】
2013127748.tif 000006
【図４Ｂ】
2013127748.tif 000007
【図５】
2013127748.tif 000008
【図６】
2013127748.tif 000009
【図７】
2013127748.tif 000010
【図８】
2013127748.tif 000011
【図９】
2013127748.tif 000012
【図１０】
2013127748.tif 000013
【図１１】
2013127748.tif 000014
【図１２】
2013127748.tif 000015