JP5494363B2 - ファイル管理プログラム,ファイル管理方法およびファイル管理装置 - Google Patents

ファイル管理プログラム,ファイル管理方法およびファイル管理装置 Download PDF

Info

Publication number
JP5494363B2
JP5494363B2 JP2010195803A JP2010195803A JP5494363B2 JP 5494363 B2 JP5494363 B2 JP 5494363B2 JP 2010195803 A JP2010195803 A JP 2010195803A JP 2010195803 A JP2010195803 A JP 2010195803A JP 5494363 B2 JP5494363 B2 JP 5494363B2
Authority
JP
Japan
Prior art keywords
file
thread
request
identification information
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010195803A
Other languages
English (en)
Other versions
JP2012053668A (ja
Inventor
真弘 三輪
彰 成瀬
耕一 久門
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2010195803A priority Critical patent/JP5494363B2/ja
Publication of JP2012053668A publication Critical patent/JP2012053668A/ja
Application granted granted Critical
Publication of JP5494363B2 publication Critical patent/JP5494363B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は,ネットワークファイルシステムにおいて,他装置がネットワークを介してアクセスするファイルを管理するファイル管理プログラム,ファイル管理方法およびファイル管理装置に関するものである。
ネットワークファイルシステムは,離れた場所にあるコンピュータのファイルを,あたかも自コンピュータのローカルにあるファイルのように利用することが可能となるファイルシステムである。ここでは,他のコンピュータにあるファイルにアクセスするコンピュータをクライアント,クライアントがアクセスするファイルを管理するコンピュータをファイルサーバと呼ぶものとする。
なお,マルチプロセッサ構成の装置において,プロセッサ間通信でスレッドの識別子を伝達することで,各プロセッサに一貫した処理を実現させ,処理に必要とする情報の伝達し直しなどを防ぐことを可能とする技術が知られている。また,クライアントからのリクエストをマルチスレッドで処理するファイルサーバの技術が知られている。
特開平6−348558号公報 特開平8−212090号公報
ネットワークファイルシステムにおいて,マルチスレッドで処理を行うファイルサーバでは,クライアントからのリクエストに対する処理がスレッドの1つに割り振られる。クライアントからのリクエストを処理するスレッドは,ファイルサーバのローカルファイルシステムにより,ディスクへのアクセスを行う。
クライアントにおいて,書き込むデータのサイズが大きい場合などには,ファイルの書き込みリクエストが,複数のリクエストに分割され,ファイルサーバに送信される。ファイルサーバでは,同じクライアントから受信した同じファイルについての複数のファイル書き込みリクエストは,複数のスレッド間で割り振られる。処理が割り振られた各スレッドは,ローカルファイルシステムへの書き込み処理を行う。このとき,ディスクでは,フラグメントが発生する可能性がある。フラグメントは,ディスクなどの記憶装置上でファイルが断片化することである。
ファイルサーバにおいて,同一ファイルに対する書き込み処理を行うスレッドは,ロックを取得する必要がある。ロックを取得したスレッドは,ローカルファイルシステムへのファイルの書き込み処理を行う。ロックが取得できなかった他のスレッドは,ロックを取得したスレッドのファイル書き込み処理の終了を待つことになる。ロックを取得したスレッドによるファイル書き込み処理が終了すると,待ち状態であったスレッドが,ロックの取得を行う。
このとき,必ずしも分割された書き込みリクエストがクライアントから送信された順に,リクエストの処理を行うスレッドが,ロックを取得できるとは限らない。そのため,同一のファイルに対する複数の書き込みリクエストが,順不同で処理が行われ,フラグメントが起こってしまう可能性がある。フラグメントが起こると,そのファイルの読み込みの際に,ディスク上の領域から連続して読み込みを行うことができず,ディスクシークが発生してファイルの読み込み性能が低下する。
開示する技術の一側面は,上記の問題の解決を図り,ネットワークファイルシステムにおいて,フラグメントの発生を抑制する技術を提供することを目的とする。
開示するプログラムは,他装置がネットワークを介してアクセスするファイルを管理するコンピュータを,次のように機能させる。
すなわち,プログラムは,プログラムがインストールされて実行される,スレッドとファイルの識別情報とが対応する判定情報を記憶する記憶部を備えるコンピュータに,他装置からのファイル書き込みリクエストを受け付ける手順と,記憶部から読み出した判定情報に,ファイル書き込みリクエストに含まれるファイルの識別情報に対応するスレッドがある場合,ファイル書き込みリクエストに含まれるファイルの識別情報に対応するスレッドを,ファイル書き込みリクエストの処理を行うスレッドとする手順と,判定情報に,ファイル書き込みリクエストに含まれるファイルの識別情報に対応するスレッドがない場合,判定情報において対応付けされていないスレッドをファイル書き込みリクエストの処理を行うスレッドとする手順と,処理を行うスレッドとファイル書き込みリクエストに含まれるファイルの識別情報との対応を,判定情報に記録する手順とを実行させる。
開示する技術によって,ネットワークファイルシステムにおけるフラグメントの発生を抑制することが可能となる。これにより,ネットワークファイルシステムにおけるファイル読み込み性能の低下を防止することが可能となる。
既存のネットワークファイルシステムの例を説明する図である。 フラグメント発生の例を説明する図である。 本実施の形態によるネットワークファイルシステムの構成例を示す図である。 本実施の形態によるNFSサーバを実現するコンピュータの構成例を示す図である。 本実施の形態によるファイル書き込みリクエストのデータ構造の例を示す図である。 本実施の形態による判定情報の例を示す図である。 本実施の形態のネットワークファイルシステムによる論理ブロック番号の割り当てを説明する図である。 本実施の形態のNFSサーバによるファイル管理処理フローチャート(1)である。 本実施の形態のNFSサーバによるファイル管理処理フローチャート(1)である。 本実施の形態のNFSサーバによるファイル管理処理フローチャート(2)である。 本実施の形態のNFSサーバによるファイル管理処理フローチャート(2)である。 本実施の形態によるネットワークファイルシステムの効果を説明する図である。
以下,本実施の形態について,図を用いて説明する。
図1は,既存のネットワークファイルシステムの例を説明する図である。
ネットワークファイルシステムでは,他の装置上にあるファイルを,あたかも自装置のローカルにあるファイルのように利用することが可能となる。代表的なネットワークファイルシステムとしては,サン・マイクロシステムズ社のNFS(Network File System )がある。NFSは,米国でのサン・マイクロシステムズ社の商標である。
図1に示すネットワークファイルシステムは,既存の一般的なクライアント・サーバ型のネットワークファイルシステムの一例である。図1に示すネットワークファイルシステムにおいて,NFSサーバ510は,他装置がアクセスするファイルを管理する装置である。NFSサーバ510は,上述のファイルサーバに相当する。クライアント520は,NFSサーバ510が管理するファイルを利用する装置である。クライアント520は,インターネットやLAN(Local Area Network)等のネットワーク530を介して,NFSサーバ510上のファイルにアクセスする。
図1を用いて,クライアント520がNFSサーバ510にファイルの書き込みを行う例を説明する。
クライアント520は,NFSサーバ510に対して,ファイル書き込みのためのファイル書き込みリクエストを送信する。このとき,書き込むデータのサイズやネットワークファイルシステムの設定によって,同一ファイルに対する書き込みリクエストが複数のリクエストに分割されて送信される場合がある。ここでは,図1に示すように,クライアント520において,同一のファイルについての書き込みリクエストが,書き込むデータの先頭から順にリクエスト#1,リクエスト#2,リクエスト#3の3つのリクエストに分けられて,NFSサーバ510に送信されるものとする。
NFSサーバ510は,クライアント520からのリクエストを受信する。NFSサーバ510において,処理スレッド割り振り部511は,NFSサーバ510が受信したリクエストの処理を,idle状態にあるいずれかのスレッド512に割り振る。NFSサーバ510には,複数のスレッド512(a,b,c,... )が存在している。それぞれのスレッドは,処理スレッド割り振り部511により割り振られたリクエストに対する処理を行う。処理を終えたスレッドは,idle状態となり,次の処理の割り振りを待つ。
図1に示す例では,クライアント520から送信された3つのファイル書き込みのリクエストが,ネットワーク530を介してNFSサーバ510に受信される。NFSサーバ510において,処理スレッド割り振り部511は,順次受信される3つのファイル書き込みのリクエストの処理を,それぞれidle状態のスレッドに割り振る。ここでは,リクエスト#1の処理がスレッド(th0 )512aに,リクエスト#2の処理がスレッド(th1 )512bに,リクエスト#3の処理がスレッド(th2 )512cに,それぞれ割り振られる。なお,各スレッド512の括弧書きは,それぞれのスレッドの識別情報を示している。
スレッド512は,受信したリクエストの処理が割り振られると,そのリクエストの解釈を行い,リクエストにより依頼された処理を実行する。
ファイル書き込みのリクエストの処理が割り当てられたスレッド512は,ローカルファイルシステム513へのファイル書き込みを行う。このとき,分割された同一ファイルの書き込み処理を行うスレッド512は,ロックを取得する必要がある。ロックを取得したスレッド512は,ローカルファイルシステム513へのファイルの書き込み処理を行う。ロックが取得できなかった他のスレッド512は,ロックを取得したスレッド512のファイル書き込み処理の終了を待つことになる。ロックを取得したスレッド512によるファイル書き込み処理が終了すると,ロック取得待ち状態であったスレッド512が,ロックの取得を行う。
ローカルファイルシステム513は,NFSサーバ510のOSにおけるファイル制御機構である。ローカルファイルシステム513は,ファイルデータのディスク上の配置先である論理ブロック番号の割り当てを行う。論理ブロック番号は,ディスク上のアドレスを示す情報である。このとき,ローカルファイルシステム513は,同じファイルに対する書き込みの場合に,最後に割り当てた論理ブロック番号にできるだけ近い論理ブロック番号を割り当てようとする。なお,図1に示すネットワークファイルシステムにおいて,ファイル記憶装置514は,ファイルが書き込まれるディスクである。
図1に示すネットワークファイルシステムにおいて,分割された同じファイルの書き込みリクエストに対する処理が割り振られたth0 ,th1 ,th2 のスレッド512は,それぞれロックの取得を試みる。
図2は,フラグメント発生の例を説明する図である。
図2に示す例は,図1に示すネットワークファイルシステムの例において,ファイル記憶装置514のディスクにフラグメントが発生する例である。
図2に示すように,最初にリクエスト#1の処理を行うスレッド(th0 )512aがロックを取得し,ローカルファイルシステム513へのファイル書き込み処理を行うものとする。このとき,リクエスト#2の処理を行うスレッド(th1 )512bと,リクエスト#3の処理を行うスレッド(th2 )512cとは,スレッド(th0 )512aによる書き込み処理が終わるまで待つことになる。
ローカルファイルシステム513は,スレッド(th0 )512aが処理するリクエスト#1のファイルデータに,論理ブロック番号12345を割り当てる。スレッド(th0 )512aの処理が終わると,ロック取得待ち状態のスレッド512がロックを取得して処理を行うことになる。
このとき,必ずしもリクエスト#2の処理を行うスレッド(th1 )512bが次のロックを取得するとは限らない。ここでは,図2に示すように,リクエスト#3の処理を行うスレッド(th2 )512cの方が先にロックを取得したものとする。
スレッド(th2 )512cが処理するリクエスト#3のファイルデータは,先のリクエスト#1のファイルデータと同じファイルから分割されたものである。ローカルファイルシステム513は,スレッド(th2 )512cが処理するリクエスト#3のファイルデータに,先のリクエスト#1処理時の論理ブロック番号12345と連続する論理ブロック番号12346を割り当てる。
スレッド(th2 )512cの処理が終わると,最後にロック取得待ち状態のスレッド(th1 )512bがロックを取得して処理を行う。スレッド(th1 )512bが処理するリクエスト#2のファイルデータは,先のリクエスト#3のファイルデータと同じファイルから分割されたものである。ローカルファイルシステム513は,スレッド(th1 )512bが処理するリクエスト#2のファイルデータに,先のリクエスト#3処理時の論理ブロック番号12346と連続する論理ブロック番号12347を割り当てる。
この結果,図1,図2に示すように,ファイル記憶装置514において,論理ブロック番号12345〜12347の連続するディスク領域上に,リクエスト#1→リクエスト#3→リクエスト#2の順にファイルデータが書き込まれる。ファイルにおける実際のデータの順序は,リクエスト#1→リクエスト#2→リクエスト#3の順であるので,ディスク上ではフラグメントが起こっている。
このファイルの読み込みが行われる際には,論理ブロック番号12345→12347→12346の順にデータの読み込みが行われる。すなわち,連続した読み込みが行われないので,ディスクシークが発生し,ファイルの読み込み性能が低下する。
このような問題は,ネットワーク530として,IPoIB(QDR)(Internet Protocol over InfiniBand (Quad Data Rate))などの広帯域ネットワークを利用した場合に特に顕著となる。InfiniBandは,InfiniBand Trade Associationの登録商標である。
ネットワーク530として広帯域なIPoIB(QDR)などが用いられた場合,ネットワーク530としてGbE(Gigabit Ethernet)などが用いられた場合と比較して,NFSサーバ510への時間当たりのリクエストの到着数が多くなる。そのため,ネットワーク530として広帯域なIPoIB(QDR)などが用いられた場合には,NFSサーバ510において,ファイル書き込みの処理を行うスレッド512が同時に複数存在する状態になる可能性が高い。このとき,上述のように同じファイルの後の方のデータの書き込みを行うスレッド512が先にロックを取得してしまい,フラグメントが起こる可能性が高くなる。
以下では,このようなフラグメントの発生を抑止する,本実施の形態によるネットワークファイルシステムを説明する。
図3は,本実施の形態によるネットワークファイルシステムの構成例を示す図である。
図3に示すネットワークファイルシステムは,NFSサーバ10,複数のクライアント20(a,b,c,... ),ネットワーク30を有する。図3に示すネットワークファイルシステムにおいて,NFSサーバ10は,他装置がアクセスするファイルを管理する装置である。クライアント20は,NFSサーバ10が管理するファイルを利用する装置である。
図3に示すように,複数のクライアント20が,ネットワーク30を介して,NFSサーバ10上のファイルにアクセスすることが可能となっている。図3に示すネットワークファイルシステムにおいて,ネットワーク30は,例えばIPoIB(QDR)などの広帯域ネットワークである。
NFSサーバ10にファイルの書き込みを行う場合に,クライアント20は,NFSサーバ10に対して,ファイル書き込みリクエストを送信する。このとき,クライアント20は,書き込むデータのサイズやネットワークファイルシステムの設定に応じて,ファイルの書き込みリクエストを複数のリクエストに分割して送信する。クライアント20は,書き込むデータの先頭の方から順に,分割されたファイルの書き込みリクエストをNFSサーバ10に送信する。
本実施の形態では,クライアント20からNFSサーバ10に送るファイル書き込みリクエストには,ファイルの識別情報が含まれている。ファイルの識別情報は,同一のファイルについての一連のファイル書き込みリクエストを,ファイルごとに識別する情報である。すなわち,同一のファイルについての一連の書き込みリクエストには,同じファイルの識別情報が含まれる。
ファイルの識別情報は,一連のファイル書き込みリクエストが同一ファイルに対するリクエストかどうかを判定できる情報であればよい。例えば,ファイルの識別情報として,クライアント20のIPアドレスや書き込みを行うファイルのファイルディスクリプタなど,元々ファイル書き込みリクエストに含まれる情報を利用してもよい。同じクライアント20から短時間で連続して送信される複数のファイル書き込みリクエストは,同一のファイルに対する一連のファイル書き込みリクエストである可能性が高い。また,ファイルの識別情報のために,リクエストに対して新たな情報を定義してもよい。例えば,リクエストの構造体にファイルの識別情報を保持するメンバ変数を追加し,ファイルごとにユニークと考えられる情報をファイルの識別情報として格納するようにしてもよい。
図3に示すネットワークファイルシステムにおいて,NFSサーバ10は,リクエスト受付部11,処理スレッド割り振り部12,複数のスレッド13(a,b,c,... ),ローカルファイルシステム14,ファイル記憶装置15を有する。
リクエスト受付部11は,クライアント20から送信されたファイル書き込みリクエストを受け付ける。
処理スレッド割り振り部12は,リクエスト受付部11が受け付けたファイル書き込みリクエストを,idle状態のスレッド13に割り振る。このとき,本実施の形態による処理スレッド割り振り部12は,同一のファイルに対する一連のファイル書き込みリクエストについては,同じスレッド13に割り振りを行うようにする。処理スレッド割り振り部12は,判定部121,処理スレッド決定部122,削除部123,判定情報記憶部125を備える。
判定情報記憶部125は,ファイルの識別情報と,そのファイルの識別情報を含むファイル書き込みリクエストを処理するスレッド13との対応が記録された判定情報を記憶する,コンピュータがアクセス可能な記憶部である。
判定部121は,受け付けたファイル書き込みリクエストから,ファイルの識別情報を抽出する。判定部121は,判定情報記憶部125に記憶された判定情報を参照し,抽出されたファイルの識別情報といずれかのスレッド13との対応が判定情報に記録されているかを判定する。判定情報に記録があれば,判定部121は,受け付けたファイル書き込みリクエストが,以前にスレッド13が割り振られたファイル書き込みリクエストと同じファイルについてのリクエストであると判定する。判定情報に記録がなければ,判定部121は,受け付けたファイル書き込みリクエストが,同一ファイルに対する一連のファイル書き込みリクエストの最初のリクエストであると判定する。
処理スレッド決定部122は,判定部121の判定結果に応じて,受け付けたファイル書き込みリクエストの処理を割り振るスレッド13を決定する。処理スレッド決定部122は,ファイル書き込みリクエストから抽出されたファイルの識別情報の記録が判定情報にある場合には,判定情報で抽出されたファイルの識別情報に対応付けられたスレッド13を,ファイル書き込みリクエストを処理するスレッド13に決定する。処理スレッド決定部122は,ファイル書き込みリクエストから抽出されたファイルの識別情報の記録が判定情報にない場合には,判定情報でファイルの識別情報が対応付けられていないスレッド13を,ファイル書き込みリクエストを処理するスレッド13に決定する。
処理スレッド決定部122は,ファイル書き込みリクエストから抽出されたファイルの識別情報と,決定されたそのファイル書き込みリクエストを処理するスレッド13との対応を,判定情報記憶部125に記憶された判定情報に記録する。これにより,判定情報には,ファイルの識別情報と,そのファイルの識別情報を含むファイル書き込みリクエストの処理が割り振られたスレッド13との対応が記録される。
削除部123は,1つの同じファイルについての一連のファイル書き込みリクエストが終了したと判定された場合に,そのファイル書き込みリクエストのファイルの識別情報の記録を,判定情報記憶部125に記憶された判定情報から削除する。
削除部123は,例えば,受け付けたファイル書き込みリクエストが最終リクエストであると判定された場合に,そのファイル書き込みリクエストに含まれるファイルの識別情報の記録を,判定情報から削除する。一連のファイル書き込みリクエストの最終リクエストの処理には,ファイルクローズの処理が含まれる。
また,削除部123は,判定情報において,最後にファイル書き込みリクエストが割り振られてから所定以上の時間が経過したスレッド13に対応付けられたファイルの識別情報の記録を削除する。1つの同じファイルについての一連のファイル書き込みリクエストは,短時間で連続的にクライアント20から送信されるものと考えられる。
ファイル書き込みリクエストの処理が割り振られた各スレッド13,ローカルファイルシステム14,ファイル記憶装置15については,図1に示すスレッド512,ローカルファイルシステム513,ファイル記憶装置514と同様であるので,ここでは説明を省略する。
図4は,本実施の形態によるNFSサーバを実現するコンピュータの構成例を示す図である。
NFSサーバ10を実現するコンピュータ100は,CPU(Central Processing Unit )101,RAM(Random Access Memory)などのメモリ102,HDD(Hard Disk Drive )などの記憶装置103,入力装置104,出力装置105,通信装置106等を備える。
図3に示すNFSサーバ10およびNFSサーバ10が備える各機能部は,コンピュータ100が備えるCPU101,メモリ102等のハードウェアと,ソフトウェアプログラムとによって,実現することが可能である。コンピュータ100が実行可能なプログラムは,記憶装置103に記憶され,その実行時にメモリ102に読み出され,CPU101により実行される。
なお,コンピュータ100は,可搬型記録媒体から直接プログラムを読み取り,そのプログラムに従った処理を実行することもできる。また,コンピュータ100は,サーバコンピュータからプログラムが転送されるごとに,逐次,受け取ったプログラムに従った処理を実行することもできる。さらに,このプログラムは,コンピュータ100で読み取り可能な記録媒体に記録しておくことができる。
本実施の形態では,クライアント20を実現するコンピュータも,図4に示すコンピュータ100と同様のハードウェアを有する。
図5は,本実施の形態によるファイル書き込みリクエストのデータ構造の例を示す図である。
クライアント20から送信されるファイル書き込みリクエストは,ヘッダ部とデータ部とを有する。ヘッダ部は,送信元であるクライアント20のIPアドレスや,書き込みを行うファイルのファイルディスクリプタなどの情報を有する。データ部は,書き込みデータである。リクエストが複数に分割されている場合には,データ部は,書き込むデータの一部となる。
例えば,図5に示すファイル書き込みリクエストにおいて,ヘッダ部に含まれるクライアント20のIPアドレスやファイルディスクリプタなどの情報が,同一ファイルについての一連のファイル書き込みリクエストの判定に利用するファイルの識別情報となり得る。
図6は,本実施の形態による判定情報の例を示す図である。
図6に示す判定情報126は,判定情報記憶部125に記憶される情報の一例である。判定情報126は,スレッド,ファイルの識別情報,時刻の情報を有する。
図6に示す判定情報126において,スレッドは,NFSサーバ10で動作する各スレッド13の識別情報を示す。
図6に示す判定情報126において,ファイルの識別情報の記録があるレコードは,スレッド13とファイルの識別情報とが対応付けられたレコードである。ファイルの識別情報が対応付けられたスレッド13は,過去にファイルの識別情報が含まれるファイル書き込みリクエストの処理を行ったスレッド13である。
図6に示す判定情報126において,時刻は,そのスレッド13に対して,記録されたファイルの識別情報を含むファイル書き込みリクエストの処理が最後に割り振られたときの時刻である。
ここで,図3に示す本実施の形態のネットワークファイルシステムによるファイル書き込みの一例を説明する。
例えばクライアント20aにおいて,同一のファイルについての書き込みリクエストが,書き込むデータの先頭から順にリクエスト#1,リクエスト#2,リクエスト#3の3つのリクエストに分けられて,NFSサーバ10に送信されるものとする。クライアント20aは,3つのファイル書き込みリクエストをファイルの先頭から順に,ネットワーク30を介してNFSサーバ10に送信する。
NFSサーバ10において,リクエスト受付部11は,まず,最初に受信されるリクエスト#1を受け付ける。
処理スレッド割り振り部12において,判定部121は,受け付けたリクエスト#1からファイルの識別情報を抽出する。ここでは,ファイルの識別情報として,送信元のクライアント20aのIPアドレスを抽出するものとする。例えば,リクエスト#1からファイルの識別情報id01が抽出される。
判定部121は,判定情報記憶部125に記憶された判定情報126に,抽出されたファイルの識別情報id01の記録があるかを判定する。ここでは,リクエスト#1が,同一のファイルに対する一連の書き込みリクエストの最初のリクエストであるので,判定情報126に抽出されたファイルの識別情報id01の記録はない。
処理スレッド決定部122は,判定情報記憶部125に記憶された判定情報126を参照し,ファイルの識別情報の対応付けがないスレッド13を1つ選択する。ここでは,th0 のスレッド13aが選択されたものとする。処理スレッド決定部122は,判定情報記憶部125に記憶された判定情報126のth0 のスレッド13aのレコードに,リクエスト#1から抽出されたファイルの識別情報id01を記録する。
処理スレッド割り振り部12は,th0 のスレッド13aにリクエスト#1の処理を割り当てる。スレッド13aは,リクエスト#1に対する処理を開始する。
リクエスト#1の後,リクエスト受付部11は,リクエスト#2を受け付ける。判定部121は,リクエスト#2からファイルの識別情報id01を抽出する。リクエスト#1とリクエスト#2とは,同じクライアント20aから送信されたリクエストであるので,ファイルの識別情報は同じid01である。
判定部121は,判定情報記憶部125に記憶された判定情報126に,抽出されたファイルの識別情報id01の記録があるかを判定する。リクエスト#2を含む一連のファイル書き込みリクエストのうち,最初のファイル書き込みリクエストであるリクエスト#1の処理がすでに行われているので,判定情報126にはファイルの識別情報id01の記録がある。処理スレッド決定部122は,判定情報記憶部125に記憶された判定情報126を参照し,ファイルの識別情報id01に対応するスレッド13として,th0 のスレッド13aを抽出する。
処理スレッド割り振り部12は,抽出されたth0 のスレッド13aが処理中でなければ,th0 のスレッド13aにリクエスト#2の処理を割り振る。スレッド13aは,リクエスト#2に対する処理を開始する。
なお,処理スレッド割り振り部12は,抽出されたth0 のスレッド13aが処理中であるときに,th1 のスレッド13bやth2 のスレッド13cがidle状態であっても,それらのスレッド13にリクエスト#2の処理を割り振らない。NFSサーバ10は,抽出されたth0 のスレッド13aが処理中であれば,リクエスト#2の送信元のクライアント20aに対してビジー応答する。このとき,NFSサーバ10は,例えばth0 のスレッド13aがidle状態になるまで待ち,idle状態になった時点でクライアント20aに対してその旨を通知する。クライアント20aは,リクエスト#2の再送信を行う。NFSサーバ10では,上述のリクエスト受付時の処理が再び行われ,idle状態となったth0 のスレッド13aにリクエスト#2の処理が割り振られる。
リクエスト#2の後に送信されるリクエスト#3についても,リクエスト#2と同様に処理が行われる。
図7は,本実施の形態のネットワークファイルシステムによる論理ブロック番号の割り当てを説明する図である。
図7に示すように,本実施の形態のNFSサーバ10では,同じファイルについての一連のファイル書き込みリクエストの処理は,すべてその最初のリクエストであるリクエスト#1の処理が割り振られたth0 のスレッド13aに割り振られる。最初のリクエスト#1以外のリクエスト#2,リクエスト#3に対する処理は,それぞれ前のリクエストの処理が終わった後に,同じth0 のスレッド13aに割り振られて実行される。複数のスレッド13による同時書き込みが行われないので,ロック取得順によって処理を行うリクエストの順序が変わることはない。すなわち,ローカルファイルシステム14へのファイル書き込みの順序は,クライアント20aから送信されたリクエストの順となる。
まず,処理スレッド割り振り部12により,th0 のスレッド13aに,リクエスト#1の処理が割り振られる。割り振られたリクエスト#1の処理を行うスレッド13aは,ローカルファイルシステム14へのファイル書き込み処理を行う。ローカルファイルシステム14は,スレッド13aが処理するリクエスト#1のファイルデータに,論理ブロック番号12345を割り当てる。
次に,リクエスト#1の処理が終わったth0 のスレッド13aに,処理スレッド割り振り部12により,リクエスト#2の処理が割り振られる。割り振られたリクエスト#2の処理を行うスレッド13aは,ローカルファイルシステム14へのファイル書き込み処理を行う。ローカルファイルシステム14は,スレッド13aが処理するリクエスト#2のファイルデータに,論理ブロック番号12346を割り当てる。
さらに,リクエスト#2の処理が終わったth0 のスレッド13aに,処理スレッド割り振り部12により,リクエスト#3の処理が割り振られる。割り振られたリクエスト#3の処理を行うスレッド13aは,ローカルファイルシステム14へのファイル書き込み処理を行う。ローカルファイルシステム14は,スレッド13aが処理するリクエスト#3のファイルデータに,論理ブロック番号12347を割り当てる。
このように,本実施の形態によるNFSサーバ10では,1つのファイルについての一連のファイル書き込みリクエストに対する処理は,同じスレッド13に割り振られる。そのため,図7に示すように,ファイル記憶装置15において,論理ブロック番号12345〜12347の連続するディスク領域上に,クライアント20aからの送信順に,各リクエストのファイルデータが書き込まれる。ファイルにおける実際のデータの順序と,ディスク上でのファイルデータの配置順序とが一致するので,ディスク上ではフラグメントが起こっていない。
このファイルの読み込みが行われる際には,連続した論理ブロック番号12345→12346→12347の順にデータの読み込みが行われるので,無用なディスクシークが発生せず,ファイルの読み込み性能は向上する。
図8,図9は,本実施の形態のNFSサーバによるファイル管理処理フローチャート(1)である。
図8,図9に示すフローチャートは,NFSサーバ10において,ファイル書き込みリクエストの受付から,受け付けたファイル書き込みリクエストの処理のスレッド13への割り振りまでの処理の流れの一例を示している。なお,図8,図9に示すフローチャートでは,一連のファイル書き込みリクエストの最終リクエストの検出で,判定情報126から該当するファイルの識別情報の記録を削除する。
NFSサーバ10において,リクエスト受付部11は,クライアント20からのファイル書き込みリクエストを受け付ける(ステップS10)。
処理スレッド割り振り部12において,判定部121は,受け付けたファイル書き込みリクエストからファイルの識別情報を抽出する(ステップS11)。判定部121は,判定情報記憶部125に記憶された判定情報126に,抽出されたファイルの識別情報の記録があるかを判定する(ステップS12)。
判定情報126に抽出されたファイルの識別情報の記録があれば(ステップS12のYES),処理スレッド決定部122は,判定情報126から,抽出されたファイルの識別情報に対応するスレッド13を抽出する(ステップS13)。処理スレッド割り振り部12は,抽出されたスレッド13が処理中であるかを判定する(ステップS14)。
抽出されたスレッド13が処理中であれば(ステップS14のYES),NFSサーバ10は,ファイル書き込みリクエストの送信元のクライアント20に対してビジーを応答する(ステップS15)。
抽出されたスレッド13が処理中でなければ(ステップS14のNO),処理スレッド決定部122は,抽出されたスレッド13を,受け付けたファイル書き込みリクエストの処理を行うスレッド13に決定する(ステップS16)。
削除部123は,受け付けたファイル書き込みリクエストが,一連のファイル書き込みリクエストにおける最終リクエストであるかを判定する(ステップS17)。一連のファイル書き込みリクエストの最終リクエストの処理には,ファイルクローズの処理が含まれる。受け付けたファイル書き込みリクエストが最終リクエストである場合には(ステップS17のYES),削除部123は,判定情報記憶部125に記憶された判定情報126から,受け付けたファイル書き込みリクエストから抽出されたファイルの識別情報の記録を削除する(ステップS18)。
処理スレッド割り振り部12は,決定されたスレッド13に,受け付けたファイル書き込みリクエストの処理を割り振る(ステップS19)。
判定情報126に抽出されたファイルの識別情報の記録がなければ(ステップS12のNO),処理スレッド決定部122は,判定情報126にファイルの識別情報の対応付けがないスレッド13があるかを判定する(ステップS20)。
ファイルの識別情報の対応付けがないスレッド13がなければ(ステップS20のNO),NFSサーバ10は,ファイル書き込みリクエストの送信元のクライアント20に対してビジーを応答する(ステップS21)。
ファイルの識別情報の対応付けがないスレッド13があれば(ステップS20のYES),処理スレッド決定部122は,判定情報126から,ファイルの識別情報の対応付けがないスレッド13を1つ選択する(ステップS22)。処理スレッド決定部122は,選択されたスレッド13を,受け付けたファイル書き込みリクエストの処理を行うスレッド13に決定する(ステップS23)。
処理スレッド決定部122は,受け付けたファイル書き込みリクエストが,最終リクエストであるかを判定する(ステップS24)。受け付けたファイル書き込みリクエストが最終リクエストでない場合には(ステップS24のNO),処理スレッド決定部122は,判定情報126に,決定されたスレッド13と抽出されたファイルの識別情報との対応を記録する(ステップS25)。
処理スレッド割り振り部12は,決定されたスレッド13に,受け付けたファイル書き込みリクエストの処理を割り振る(ステップS26)。
図10,図11は,本実施の形態のNFSサーバによるファイル管理処理フローチャート(2)である。
図10,図11に示すフローチャートは,NFSサーバ10において,ファイル書き込みリクエストの受付から,受け付けたファイル書き込みリクエストの処理のスレッド13への割り振りまでの処理の流れの一例を示している。なお,図10,図11に示すフローチャートでは,最後に割り振りが行われてから所定時間が経過したスレッド13について,判定情報126のファイルの識別情報の記録を無効とする。
NFSサーバ10において,リクエスト受付部11は,クライアント20からのファイル書き込みリクエストを受け付ける(ステップS30)。
処理スレッド割り振り部12において,判定部121は,受け付けたファイル書き込みリクエストからファイルの識別情報を抽出する(ステップS31)。判定部121は,判定情報記憶部125に記憶された判定情報126に,抽出されたファイルの識別情報の記録があるかを判定する(ステップS32)。
判定情報126に抽出されたファイルの識別情報の記録があれば(ステップS32のYES),処理スレッド決定部122は,判定情報126から,抽出されたファイルの識別情報に対応するスレッド13を抽出する(ステップS33)。処理スレッド割り振り部12は,抽出されたスレッド13が処理中であるかを判定する(ステップS34)。
抽出されたスレッド13が処理中であれば(ステップS34のYES),NFSサーバ10は,ファイル書き込みリクエストの送信元のクライアント20に対してビジーを応答する(ステップS35)。
抽出されたスレッド13が処理中でなければ(ステップS34のNO),処理スレッド決定部122は,抽出されたスレッド13を,受け付けたファイル書き込みリクエストの処理を行うスレッド13に決定する(ステップS36)。処理スレッド決定部122は,判定情報126において,決定されたスレッド13の時刻を更新する(ステップS37)。
処理スレッド割り振り部12は,決定されたスレッド13に,受け付けたファイル書き込みリクエストの処理を割り振る(ステップS38)。
判定情報126に抽出されたファイルの識別情報の記録がなければ(ステップS32のNO),処理スレッド決定部122は,判定情報126にファイルの識別情報の対応付けがないスレッド13があるかを判定する(ステップS39)。
ファイルの識別情報の対応付けがないスレッド13があれば(ステップS39のYES),処理スレッド決定部122は,判定情報126から,ファイルの識別情報の対応付けがないスレッド13を1つ選択する(ステップS40)。
処理スレッド決定部122は,選択されたスレッド13を,受け付けたファイル書き込みリクエストの処理を行うスレッド13に決定する(ステップS41)。処理スレッド決定部122は,判定情報126に,決定されたスレッド13と抽出されたファイルの識別情報との対応を記録する(ステップS42)。処理スレッド決定部122は,判定情報126において,決定されたスレッド13の時刻を記録する(ステップS43)。
処理スレッド割り振り部12は,決定されたスレッド13に,受け付けたファイル書き込みリクエストの処理を割り振る(ステップS44)。
ファイルの識別情報の対応付けがないスレッド13がなければ(ステップS39のNO),処理スレッド決定部122は,判定情報126に最後に割り振りが行われてから所定時間が経過したスレッド13があるかを判定する(ステップS45)。
判定情報126に所定時間が経過したスレッド13がなければ(ステップS45のNO),NFSサーバ10は,ファイル書き込みリクエストの送信元のクライアント20に対してビジーを応答する(ステップS46)。
判定情報126に所定時間が経過したスレッド13があれば(ステップS45のYES),処理スレッド決定部122は,判定情報126から,所定時間が経過したスレッド13を1つ選択する(ステップS47)。以下,上述のステップS41〜ステップS44の処理が行われる。
上述したように,図10,図11に示すフローチャートでは,判定情報126において,最後に割り振りが行われてから所定時間の経過で,ファイルの識別情報の記録が無効と判定される例が示されている。削除部123が,リクエストに対する処理とは別に,判定情報126において,最後に割り振りが行われてから所定以上の時間が経過したスレッド13に対応付けられたファイルの識別情報の記録を削除するようにしてもよい。この場合には,ステップS46,ステップS47の処理が不要になる。
図12は,本実施の形態によるネットワークファイルシステムの効果を説明する図である。
図12には,図1に示す既存のネットワークファイルシステムと,図3に示す本実施の形態のネットワークファイルシステムとにおいて,それぞれ同じハードウェア構成,同条件のもとで行われた実験の結果が示されている。既存のネットワークファイルシステムと,本実施の形態のネットワークファイルシステムとの違いは,処理スレッド割り振りの仕組みである。ネットワークには,IPoIB(QDR)が採用されている。
図12(A)は,クライアントからNFSサーバに1GBのファイルを作成した場合のフラグメント発生の状況を示す。図12(A)において,extentsは,ディスク上でファイルが何箇所に分かれているかを表す数値である。extentsの値が大きいほど,多くのフラグメントが発生している。図12(A)に示す実験結果から,本実施の形態のネットワークファイルシステムでは,既存のネットワークファイルシステムと比較して,フラグメントの発生が大きく抑制されていることが分かる。
図12(B)は,クライアントがNFSサーバに作成した1GBのファイルを読み込んだ場合の読み込み速度の状況を示す。図12(B)に示す実験結果から,本実施の形態のネットワークファイルシステムでは,既存のネットワークファイルシステムと比較して,NFSサーバに作成したファイルに対する読み込み速度が約3倍速いことが分かる。
このように,本実施の形態のネットワークファイルシステムによって,NFSサーバ10上にファイルの書き込みを行う際に,ファイルのフラグメントを抑制することが可能となり,書き込みを行ったファイルに対する読み込み速度の低下を防止することが可能となる。
以上,本実施の形態について説明したが,本発明はその主旨の範囲において種々の変形が可能であることは当然である。
10 NFSサーバ
11 リクエスト受付部
12 処理スレッド割り振り部
121 判定部
122 処理スレッド決定部
123 削除部
125 判定情報記憶部
13 スレッド
14 ローカルファイルシステム
15 ファイル記憶装置
20 クライアント
30 ネットワーク

Claims (3)

  1. 他装置がネットワークを介してアクセスするファイルを管理するコンピュータに実行させるためのプログラムであって,
    スレッドとファイルの識別情報とが対応する判定情報を記憶する記憶部を備える前記コンピュータに,
    他装置からのファイル書き込みリクエストを受け付ける手順と,
    前記記憶部から読み出した前記判定情報に,前記ファイル書き込みリクエストに含まれるファイルの識別情報に対応するスレッドがある場合,前記ファイル書き込みリクエストに含まれるファイルの識別情報に対応するスレッドを,前記ファイル書き込みリクエストの処理を行うスレッドとする手順と,
    前記判定情報に,前記ファイル書き込みリクエストに含まれるファイルの識別情報に対応するスレッドがない場合,前記判定情報において対応付けされていないスレッドを前記ファイル書き込みリクエストの処理を行うスレッドとする手順と,
    前記処理を行うスレッドと前記ファイル書き込みリクエストに含まれるファイルの識別情報との対応を,前記判定情報に記録する手順とを
    実行させるためのファイル管理プログラム。
  2. 他装置がネットワークを介してアクセスするファイルを管理するコンピュータによるファイル管理方法であって,
    スレッドとファイルの識別情報とが対応する判定情報を記憶する記憶部を備える前記コンピュータが,
    他装置からのファイル書き込みリクエストを受け付ける過程と,
    前記記憶部から読み出した前記判定情報に,前記ファイル書き込みリクエストに含まれるファイルの識別情報に対応するスレッドがある場合,前記ファイル書き込みリクエストに含まれるファイルの識別情報に対応するスレッドを,前記ファイル書き込みリクエストの処理を行うスレッドとする過程と,
    前記判定情報に,前記ファイル書き込みリクエストに含まれるファイルの識別情報に対応するスレッドがない場合,前記判定情報において対応付けされていないスレッドを前記ファイル書き込みリクエストの処理を行うスレッドとする過程と,
    前記処理を行うスレッドと前記ファイル書き込みリクエストに含まれるファイルの識別情報との対応を,前記判定情報に記録する過程とを実行する
    ことを特徴とするファイル管理方法。
  3. 他装置がネットワークを介してアクセスするファイルを管理するファイル管理装置であって,
    スレッドとファイルの識別情報とが対応する判定情報を記憶する判定情報記憶部と,
    他装置からのファイル書き込みリクエストを受け付けるリクエスト受付部と,
    前記判定情報に,前記ファイル書き込みリクエストに含まれるファイルの識別情報に対応するスレッドがある場合,前記ファイル書き込みリクエストに含まれるファイルの識別情報に対応するスレッドを,前記ファイル書き込みリクエストの処理を行うスレッドとし,前記判定情報に,前記ファイル書き込みリクエストに含まれるファイルの識別情報に対応するスレッドがない場合,前記判定情報において対応付けされていないスレッドを前記ファイル書き込みリクエストの処理を行うスレッドとし,該処理を行うスレッドと前記ファイル書き込みリクエストに含まれるファイルの識別情報との対応を前記判定情報に記録する処理スレッド割り振り部とを備える
    ことを特徴とするファイル管理装置。
JP2010195803A 2010-09-01 2010-09-01 ファイル管理プログラム,ファイル管理方法およびファイル管理装置 Active JP5494363B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010195803A JP5494363B2 (ja) 2010-09-01 2010-09-01 ファイル管理プログラム,ファイル管理方法およびファイル管理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010195803A JP5494363B2 (ja) 2010-09-01 2010-09-01 ファイル管理プログラム,ファイル管理方法およびファイル管理装置

Publications (2)

Publication Number Publication Date
JP2012053668A JP2012053668A (ja) 2012-03-15
JP5494363B2 true JP5494363B2 (ja) 2014-05-14

Family

ID=45906913

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010195803A Active JP5494363B2 (ja) 2010-09-01 2010-09-01 ファイル管理プログラム,ファイル管理方法およびファイル管理装置

Country Status (1)

Country Link
JP (1) JP5494363B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108762930A (zh) * 2018-05-30 2018-11-06 郑州云海信息技术有限公司 一种用户态nfs线程的优化方法、系统及相关组件

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08212090A (ja) * 1995-02-03 1996-08-20 Fujitsu Ltd サーバシステム

Also Published As

Publication number Publication date
JP2012053668A (ja) 2012-03-15

Similar Documents

Publication Publication Date Title
US10346067B2 (en) Multi-tier file storage management using file access and cache profile information
JP4452064B2 (ja) 情報処理システム、情報処理装置、情報処理装置の制御方法及びプログラム
US8959307B1 (en) Reduced latency memory read transactions in storage devices
JP4405533B2 (ja) キャッシュ方法及びキャッシュ装置
US8275902B2 (en) Method and system for heuristic throttling for distributed file systems
US9665485B2 (en) Logical and physical block addressing for efficiently storing data to improve access speed in a data deduplication system
WO2018005613A1 (en) Systems and methods for efficient distribution of stored data objects
JP7280508B2 (ja) 情報処理装置、情報処理方法および仮想マシン接続管理プログラム
US20090077327A1 (en) Method and apparatus for enabling a NAS system to utilize thin provisioning
WO2015067074A1 (zh) 一种数据读取的方法及装置
US8001323B2 (en) Network storage system, management method therefor, and control program product therefor
CN114860163B (zh) 一种存储系统、内存管理方法和管理节点
CN110196681B (zh) 业务写操作的磁盘数据写入控制方法及装置、电子设备
JP6847105B2 (ja) 分散キャッシュライブマイグレーション
CN104731635B (zh) 一种虚拟机访问控制方法,及虚拟机访问控制系统
JP6268116B2 (ja) データ処理装置、データ処理方法およびコンピュータプログラム
US20170123975A1 (en) Centralized distributed systems and methods for managing operations
CN107153512B (zh) 一种数据迁移方法和装置
US10387043B2 (en) Writing target file including determination of whether to apply duplication elimination
US7725654B2 (en) Affecting a caching algorithm used by a cache of storage system
CN109254958A (zh) 分布式数据读写方法、设备及系统
US9858204B2 (en) Cache device, cache system, and cache method
JP5494363B2 (ja) ファイル管理プログラム,ファイル管理方法およびファイル管理装置
JP5192506B2 (ja) ファイルキャッシュの管理方法、装置、及び、プログラム
JP4606998B2 (ja) ネットワークキャッシュ装置およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130604

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140217

R150 Certificate of patent or registration of utility model

Ref document number: 5494363

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150