JP2010191903A - 分散ファイルシステムのストライピング種別選択方法及びその分散ファイルシステム - Google Patents

分散ファイルシステムのストライピング種別選択方法及びその分散ファイルシステム Download PDF

Info

Publication number
JP2010191903A
JP2010191903A JP2009038328A JP2009038328A JP2010191903A JP 2010191903 A JP2010191903 A JP 2010191903A JP 2009038328 A JP2009038328 A JP 2009038328A JP 2009038328 A JP2009038328 A JP 2009038328A JP 2010191903 A JP2010191903 A JP 2010191903A
Authority
JP
Japan
Prior art keywords
file
stored
striping
storage area
size
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.)
Pending
Application number
JP2009038328A
Other languages
English (en)
Inventor
Yusuke Shiragami
雄介 白神
Kenji Matsui
謙治 松井
Koji Takehara
功二 竹原
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2009038328A priority Critical patent/JP2010191903A/ja
Publication of JP2010191903A publication Critical patent/JP2010191903A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

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

Abstract

【課題】ファイルストライピングとブロックストライピングとの入出力性能を効果的に利用できる分散ファイルシステムを提供する。
【解決手段】ファイルを格納する記憶領域として、ファイル単位で格納するファイルストライピングによる第1の記憶領域と、ファイルをブロックに分割し、分割したブロック単位で格納するブロックストライピングによる第2の記憶領域と、格納するファイルのファイルサイズと予め定めてあるファイルサイズの閾値とを比較し、格納するファイルのファイルサイズが閾値未満のとき、格納するファイルをファイルストライピングにより第1の記憶領域に格納し、格納するファイルのファイルサイズが閾値以上のとき、格納するファイルをブロックストライピングにより第2の記憶領域に格納するファイルサイズ予測部を有する。
【選択図】図1

Description

本発明は、ファイルを複数ディスクに分散して格納する分散ファイルシステムにおいて、ファイルをストライピングする種別を選択する方法に関する。
分散ファイルシステムは、複数ファイルを複数ディスクに分散格納することで、大容量ファイルの入出力を高速に実現する。複数ファイルを複数ディスクに分散格納する方法の一つは、ファイルの種別や属性に対応付けられたディスクにファイル単位で格納する方法である。他の方法としては、特許文献1に記載されるように、一つのファイルを所定のサイズ(ブロック)単位に分割して、分割したブロック単位で異なるディスクに格納する方法がある。
従来の分散ファイルシステムは、上記のいずれか一方のファイル格納方法を提供するものであった。また、サーバが両者の方法の分散ファイルシステムを提供し、そのサーバに接続するクライアントがいずれかの格納方法を選択できるものもある。
特開2002−182953号公報
ここでは、上記の複数のディスクにファイルを格納する方法のうち、前者のファイル単位で格納する方法をファイルストライピング、後者のブロック単位で格納する方法をブロックストライピングとそれぞれ呼ぶ。
上述したように、ファイルの格納方法としてファイルストライピングとブロックストライピングとのいずれかをクライアントに選択させる方法であっても、分散ファイルシステム中にそれらの格納方法が独立して用意されているものである。
分散ファイルシステムは、ファイルの記憶領域への高速な入出力を図るためのものであるが、ファイルストライピングとブロックストライピングとでは、ファイルのサイズによって、入出力性能(入出力時間)に差異を生じる。
そこで、ユーザから見ると、ファイルストライピングとブロックストライピングとの入出力性能を効果的に利用できる分散ファイルシステムが望まれる。
本発明は、次のような態様のストライピング種別選択方法及びその分散ファイルシステムである。ファイルを格納する記憶領域として、ファイル単位で格納するファイルストライピングによる第1の記憶領域と、ファイルをブロックに分割し、分割したブロック単位で格納するブロックストライピングによる第2の記憶領域と、格納するファイルのファイルサイズと予め定めてあるファイルサイズの閾値とを比較し、格納するファイルのファイルサイズが閾値未満のとき、格納するファイルをファイルストライピングにより第1の記憶領域に格納し、格納するファイルのファイルサイズが閾値以上のとき、格納するファイルをブロックストライピングにより第2の記憶領域に格納するファイルサイズ予測部を有する。
本発明の他の態様は、ファイルサイズ予測部は、格納するファイルのファイルサイズとして、格納するファイルのプロファイル要素と類似するプロファイル要素を含むプロファイルデータに含まれるファイルサイズの予測値を用いる。
本発明のさらに他の態様は、予測値は、格納するファイルのプロファイル要素と類似するプロファイル要素を含むプロファイルデータの中の類似度の高いプロファイルデータに含まれるファイルサイズの予測値である。
本発明のさらに他の態様は、ファイルサイズ予測部は、格納するファイルのプロファイル要素と類似するプロファイル要素を含むプロファイルデータがないとき、第1の記憶領域及び第2の記憶領域とは異なる記憶領域であるバッファに格納するファイルを書き込み、バッファに書き込んだファイルサイズが閾値を超える前に書き込みを終了したとき、バッファに書き込んだ格納するファイルをファイルストライピングにより第1の記憶領域に格納し、バッファに書き込んだファイルサイズが閾値を超えてから書き込みを終了したとき、バッファに書き込んだ格納するファイルをブロックストライピングにより第2の記憶領域に格納する。
本発明のさらに他の態様は、閾値をファイルサイズとするダミーファイルを生成し、ダミーファイルをファイルストライピングにより第1の記憶領域に格納する時間と、ダミーファイルをブロックストライピングにより第2の記憶領域に格納する時間とを比較し、その比較結果に応じて、閾値を更新する閾値決定部をさらに有する。
本発明によれば、ファイルストライピングとブロックストライピングとの入出力性能を効果的に利用できる分散ファイルシステムを実現できる。
本実施形態の構成の概要図である。 ファイルのストライピングの概要図である。 ファイルストライピングとブロックストライピングの性能特性図である。 3要素プロファイルによるプロファイル別予測テーブルの例である。 2要素プロファイルによるプロファイル別予測テーブルの例である。 2要素プロファイルによるプロファイル別予測テーブルの例である。 1要素プロファイルによるプロファイル別予測テーブルの例である。 ファイルサイズ予測部の処理のフローチャートである。 プロファイル別予測テーブルからプロファイルを検索する処理のフローチャートである。 ストライピング種別を決定する処理のフローチャートである。 バッファへ読み込んだファイルのストライピング種別を決定する処理のフローチャートである。 バッファへ読み込んだファイルと閾値との比較の概要図である。 プロファイル別予測テーブルの更新処理のフローチャートである。 閾値決定部の処理のフローチャートである。 ファイルの書き込みのシミュレーションのフローチャートである。
図1は、本実施形態の分散ファイルシステム1とそれを使用するクライアントコンピュータ2を含む構成の概要図を示す。図示を省略するが、分散ファイルシステム1はサーバ上に構築され、クライアントコンピュータ2はそのサーバにネットワークを介して接続される。クライアントコンピュータ2で実行されているユーザプログラム20がファイル21を分散ファイルシステム1へ書き込む様子を示している。分散ファイルシステム1は前述のようにメモリ11とCPU10を具備するサーバ上に構築され、メモリ11にはプロファイル別予測テーブル110とファイルサイズ予測部111と閾値決定部112を保持し、バッファ113を備えている。ファイルサイズ予測部111と閾値決定部112は、CPU10により実行されるプログラムである。
記憶装置12には、たとえばディレクトリと呼ばれるファイルの格納構造や格納位置などの管理情報を格納するマスタファイル120と、ファイルの実体をファイルストライピングにより格納するファイルストライピングサブファイル121と、ファイルの実体をブロックストライピングにより格納するブロックストライピングサブファイル126とを設ける。なお、ディレクトリは複数あってもよく、各ディレクトリごとにマスタファイルを用意する。複数のディレクトリの各々は、ディレクトリ名などにより、そのルートノードが識別される。
マスタファイル120は、ファイルストライピング及びブロックストライピングのいずれかによるファイルを纏めて管理するので、格納されているファイルがファイルストライピング及びブロックストライピングのいずれによりストライピングされているかを示すストライピング種別情報を各格納ファイルの識別情報に対応付けている。ファイルストライピングサブファイル121はディスク122、123に格納され、ブロックストライピングサブファイル126はディスク127、128に格納される。
マスタファイル120を含めて各ファイルを格納するディスクは、物理的なディスク(物理ディスク)に限らず、記憶領域を持つ論理的なディスク(論理ディスク)でよい。論理ディスクは一つの物理ディスクを論理的に分割した記憶領域を持つものであっても、複数の物理ディスクを論理的に統合した記憶領域を持つものであっても、一つの物理ディスクと対応した記憶領域を持つものであっても良い。
ファイルも、論理ファイルとして分散ファイルシステム1上に作成される仮想的なファイルでよい。論理ファイルの実体は、マスタファイル120に格納される論理ファイルの管理情報とサブファイル121、126に格納される論理ファイルのデータ部分から構成される。
図2は、ファイルがストライピングされて記憶装置12に格納される概要を示す。図2は、論理ファイルA〜Cの各々がファイルストライピングにより格納され、論理ファイルD、Eの各々がブロックストラピイングにより格納されている状態を示す。
マスタファイル120にある論理ファイルAの管理情報Amには、論理ファイルAのストライピング種別(ここでは、ファイルストライピング)および論理ファイルAの実体の格納情報(ファイルストライピングサブファイル121内の格納アドレスやサイズ)を含む。図示するように、ファイルストライピングサブファイル121が二つのディスク122、123で構成されている場合、論理ファイルAの実体の格納アドレスはディスク122の識別子とディスク122内の格納アドレスで表しても良い。論理ファイルB、Cの管理情報Bm、Cmも、論理ファイルAの管理情報Amと同様である。
マスタファイル120にある論理ファイルDの管理情報Dmには、論理ファイルDのストライピング種別(ここでは、ブロックストライピング)および論理ファイルDの実体の格納情報(ブロックストライピングサブファイル126内の論理ファイルDのブロックごとのアドレスや論理ファイルDのサイズ)を含む。一般に、ブロックストライピングの場合のブロックサイズは固定長であるので、論理ファイルDのサイズをブロック数で表しても良い。図2では、論理ファイルDの実体はnブロックに分割され、奇数番目のブロックがブロックストライピングサブファイル126を構成するディスク127に格納され、偶数番目のブロックがブロックストライピングサブファイル126を構成するディスク128に格納されている。この場合の論理ファイルDの管理情報Dmには、ストライピング種別としてのブロックストライピングと、各ブロックごとにその格納アドレス(ディスクの識別子とそのアドレスでも良い)を含んでいる。論理ファイルEの管理情報Emも、論理ファイルDの管理情報Dmと同様である。
図3は、ファイルストライピングの場合とブロックストライピング場合との、ファイルサイズと性能(クライアント2のユーザプログラム20から見た入出力時間の逆数)の関係を表した性能特性図を示す。ファイルストライピングの場合は、ファイルストライピングサブファイル121を構成する複数のディスク122、123のいずれかのディスクに1つの論理ファイルを直列的(シーケンシャル)に入出力する。ブロックストライピングの場合は、1つの論理ファイルを複数のブロックに分割して、ブロックストライピングサブファイル126を構成する複数のディスク127、128に並列的に入出力する。
したがって、小さいサイズの論理ファイルの場合は、ファイルストライピングの方が性能が良く、大きいサイズの論理ファイルの場合はブロックストライピングの方が性能が良い。小さいサイズのファイルにブロックストライピングを適用すると、出力(分散システムへの書き込み)時のブロックへの分割や入力(分散システムからの読み出し)時のブロックの統合に要する時間がファイル入出力時間全体の中で占める割合が大きくなる。一方、ファイルストライピングを適用すると、分割・統合の時間が不要であり、全体としてのファイル入出力時間が小さくなるので、ファイルサイズが小さい場合はファイルストライピングの方が高い性能が得られる。
大きいサイズのファイルにファイルストライピングを適用するとシーケンシャルな入出力時間が大きくなり、ブロックストライピングを適用するとブロックヘの分割・統合に要する時間の割合が、ディスクごとに並列実行される入出力時間に対して小さくなるので、ファイルサイズが大きい場合はブロックストライピングの方が高い性能が得られる。
このような特性により、図3に示すように、ファイルストライピングとブロックストライピングとの性能の優劣が反転する閾値が存在する。この閾値未満のファイルサイズのファイルにはファイルストライピングを適用し、閾値を超えるファイルサイズのファイルにはブロックストライピングを適用することが望ましい。この閾値は、サーバや記憶装置12の性能や複数の論理ファイルに関する入出力処理の並列実行の有無など、分散ファイルシステム1の動作状況及びその時間的変化に伴って変化する。また閾値近傍のファイルサイズでは、ファイルストライピングとブロックストライピングとの性能差は小さいので、閾値を厳密に求める必要はなく、ストライピング種別を選択する目安となればよい。なお、閾値はメモリ11に格納されている。
ストライピング種別を選択する機会は、新規にファイルを作成して分散ファイルシステム1の記憶装置12に格納する(書き込む)ときである。クライアント2で新規に作成したファイルを格納する場合、分散ファイルシステム1から見ると、そのファイルのサイズは分からない。そこで、すでに格納してあるファイルに関する情報を参考にして、ストライピング種別を選択する。すでに格納してあるファイルに関する情報(プロファイル要素)は、プロファイル別予測テーブル110としてメモリ11に格納してある。プロファイル別予測テーブル110を、図4〜図7に予測テーブルとして示す。
図4は、プロファイル要素として、ユーザ名、プログラム名、ディレクトリ名の3つを使った予測テーブル400を示す。予測テーブル400は、ユーザ名401、プログラム名402、ディレクトリ名403の3つをセットとして、セット毎に予測値404、予測回数405、エラー回数406、エラー率407、データ数408を保持する。
図5は、プロファイル要素として、ユーザ名、プログラム名の2つを使った予測テーブル500を示す。予測テーブル500は、ユーザ名501、プログラム名502の2つをセットとして、セット毎に予測値503、予測回数504、エラー回数505、エラー率506、データ数507を保持する。
図6は、プロファイル要素として、ユーザ名、ディレクトリ名の2つを使った予測テーブル600を示す。予測テーブル600は、ユーザ名601、ディレクトリ名602の2つをセットとして、セット毎に予測値603、予測回数604、エラー回数605、エラー率606、データ数607を保持する。
図7は、プロファイル要素として、ユーザ名を使った予測テーブル700を表す。ユーザ名701毎に予測値702、予測回数703、エラー回数704、エラー率705、データ数706を保持する。
図4〜図7に示す、各々の予測値、予測回数、エラー回数、エラー率、データ数に関しては、これらを用いる処理の説明の中で後述する。
図8は、ファイルサイズ予測部111の処理のフローチャートを示す。ファイルサイズ予測部111は、ユーザプログラム20によりファイル21の書込み開始によって、処理を開始する。ファイル21の書込みプロセスのユーザ名、プログラム名、ディレクトリ名のプロファイルを取得する(ステップ800)。このプロファイルをプロファイル別予測テーブル110(予測テーブル400、500、600、700)から検索し(ステップ805)、プロファイルが一致するプロファイルデータが有るかどうかを判定する(ステップ810)。
図9は、プロファイル別予測テーブル110から一致するプロファイルを検索する処理(図8のステップ805)のフローチャートを示す。この処理は、一致するプロファイルがない場合は「なし」を、一致するプロファイルがある場合は、そのプロファイルデータ(図4〜図7の1行分のデータ)を検索結果として得る。予測テーブル400から、ユーザ名、プログラム名、ディレクトリ名が一致するプロファイルを検索する(ステップ900)。一致するプロファイルデータがある場合は、検索結果として一致するプロファイルデータを得る(ステップ905)。一致するプロファイルデータがない場合は、予測テーブル500から、ユーザ名、プログラム名が一致するプロファイルを検索する(ステップ910)。一致するプロファイルデータがある場合は、予測テーブル600から、ユーザ名、ディレクトリ名が一致するプロファイルを検索する(ステップ915)。一致するプロファイルデータがない場合は、予測テーブル500の一致するプロファイルデータを検索結果として得る(ステップ920)。一致するプロファイルデータがある場合は、予測テーブル500の一致するプロファイルデータと予測テーブル600の一致するプロファイルデータとの各エラー率506と606とを比較し、エラー率が低いプロファイルデータを検索結果とする(ステップ925)。
ステップ910で一致するプロファイルデータがない場合は、予測テーブル600から、ユーザ名、ディレクトリ名が一致するプロファイルを検索する(ステップ930)。一致するプロファイルデータがある場合は、予測テーブル600の一致するプロファイルデータを検索結果として得る(ステップ935)。一致するプロファイルデータがない場合は、予測テーブル700から、ユーザ名が一致するプロファイルを検索する(ステップ940)。一致するプロファイルデータがある場合は、予測テーブル700の一致するプロファイルデータを検索結果として得る(ステップ945)。一致するプロファイルデータがない場合は、検索結果を「なし」とする(ステップ950)。
例として、ファイル21の書込みプロセスのユーザ名、プログラム名、ディレクトリ名の各々をuserB、programB1、directoryB3として、図9の検索処理を実行すると、ステップ910で予測テーブル500の一致するプロファイルデータ#3が得られ、ステップ915で予測テーブル600の一致するプロファイルデータ#4とが得られるので、ステップ925でそれぞれのエラー率e23/n23とe34/n34とを比較し、エラー率が低いプロファイルデータが検索結果として得られる。
他の例として、ファイル21の書込みプロセスのユーザ名、プログラム名、ディレクトリ名の各々をuserX、programX、directoryXとして、図9の検索処理を実行すると、検索結果として「なし」が得られる。
以上の予測テーブルから一致するプロファイルを検索する処理は、ファイル21の書込みプロセスに類似したファイルのサイズを、ファイル21のファイルサイズと仮定するものである。図9に示した処理は、3つから、2つ、一つのプロファイル要素による検索順序を示し、類似度の高いプロファイルデータほど、ユーザプログラム20による処理内容の類似度も高く、その処理によるファイルのファイルサイズがファイル21のファイルサイズ近い値を示すことを前提に、より類似度の高いプロファイルデータの検索を試みている。たとえば、ファイル21を、分散ファイルシステム1にすでに格納してあるファイルをコピーし、ファイル名称を変えることにより作成することがある。このような場合は、ファイル21のプロファイル要素としてのユーザ名、プログラム名、ディレクトリ名は、コピー元としたファイルのプロファイルデータに一致する可能性が高い。コピーしたことにより、それらのファイルサイズも一致する可能性が高い。
図8の説明に戻り、ステップ805の検索結果として一致するプロファイルデータがあるならば(ステップ810)、得られたプロファイルデータのエラー率が許容値以下である場合に(ステップ815)、得られたプロファイルデータに含まれるファイルサイズの予測値をファイルサイズの閾値と比較して、ストライピング種別を決定する(ステップ820)。
エラー率とは、後述するように、予測値を用いたストライピング種別の決定に誤りを生じた割合である。また許容値は、予め定められ、メモリ11に格納されている。
一方、ステップ805の検索結果として一致するプロファイルデータがない場合、およびステップ815で得られたプロファイルデータのエラー率が許容値を超えている場合は、ファイル21をバッファ113へ読み込み、読み込んだファイル21のファイルサイズとファイルサイズの閾値とを比較してストライピング種別を決定する(ステップ825)。ステップ820及びステップ825のいずれかでストライピング種別を決定後、プロファイル別予測テーブル110(予測テーブル400、500、600、700)を更新する(ステップ830)。
以下、ステップ820の得られたプロファイルデータに含まれるファイルサイズの予測値をファイルサイズの閾値と比較して、ストライピング種別を決定する処理、ステップ825の、読み込んだファイル21のファイルサイズとファイルサイズの閾値とを比較してストライピング種別を決定する処理、ステップ830のプロファイル別予測テーブル110(予測テーブル400、500、600、700)を更新する処理、さらに閾値決定部112の処理を順に説明する。
図10は、予測テーブルのプロファイルデータから得たファイルサイズの予測値とファイルサイズの閾値とを比較し、比較結果に応じてストライピング種別を決定する処理(図8のステップ820)のフローチャートを示す。プロファイルデータに含まれる予測値とファイルサイズの閾値とを比較する(ステップ1000)。比較の結果、予測値が閾値未満であれば、ファイル21をファイルストライピングして、その管理情報をマスタファイル120に書き込むとともに、ファイル21の実体をファイルストライピングサブファイル121に書き込む(ステップ1005)。図1または図2において、ファイル21の実体をディスク122及びディスク123のいずれに書き込むかは、マスタファイル120に格納されているディレクトリの構造及びその内容によって決定される。
一方、比較の結果、予測値が閾値以上であれば、ファイル21をブロックストライピングして、その管理情報をマスタファイル120に書き込むとともに、ファイル21の実体をブロックストライピングサブファイル126に書き込む(ステップ1010)。ファイル21の実体は、たとえば図2に示したようにディスク127及びディスク128にブロック単位で並列的に書き込まれる。
なお、閾値は前述のように目安であるので、ステップ1000における判定は未満/以上の判定でなく、以下/超の判定でも良い。
図11は、ファイル21をバッファ113へ読み込み、読み込んだファイル21のファイルサイズとファイルサイズの閾値とを比較してストライピング種別を決定する処理(図8のステップ825)のフローチャートを示す。クライアント2からの書き込みに応じて、ファイル21をバッファ113へ蓄積する。ファイル21のバッファ113への書込みサイズをファイルサイズの閾値と比較する(ステップ1105)。比較は、ファイル21のバッファ113への書込みのクローズ(ファイルの最後の検知)が、ファイルサイズの閾値に達する前後によって判定する。ファイルサイズの閾値に達する前にクローズすれば、ファイル21のファイルサイズは閾値より小さいので、ファイル21をファイルストライピングして記憶装置12に書き込む(ステップ1110)。、ファイルサイズの閾値を超えても書込みがクローズしなければ、ファイル21のファイルサイズは閾値より大きいので、ファイル21をブロックストライピングして記憶装置12に書込む(ステップ1115)。ステップ1110及びステップ1115において、ファイル21はバッファ113にすでに書き込み、蓄積してあるので、バッファ113から記憶装置12へのファイル21の書き込みとなる。
なお、ステップ1110とステップ1115の処理の詳細は、図10のステップ1005とステップ1010の処理と同様であり、閾値との比較の厳密さに関しても、図10の説明と同様である。
図12に、図11の閾値との比較の概要図を示す。バッファ113に蓄積されているファイル(file1)の書き込みは、閾値に達する前にクローズしているので、ストライピング種別としてファイルストライピングをこのファイル(file1)に適用する。バッファ113に蓄積されている他のファイル(file2)の書き込みは、閾値に達してもクローズしていないので、ストライピング種別としてブロックストライピングをこのファイル(file2)に適用する。
図13は、プロファイル別予測テーブル110の更新処理(図8のステップ830)のフローチャートを示す。ファイルストライピングサブファイル121またはブロックストライピングサブファイル126に書き込んだファイル21のファイルサイズを取得し、その値を実測値Sとする(ステップ1300)。取得するファイル21のファイルサイズの値は、マスタファイル120にファイル21の識別しに対応付けて格納されている。
ファイル21のプロファイルが一致するプロファイルデータが、プロファイル別予測テーブル110にある否かを判定する(ステップ1305)。この判定のために図9の検索処理を再実行する必要はなく、図8のステップ805で実行した検索結果をメモリ11に記憶しておき、その検索結果を参照して判定する。検索結果としてプロファイルデータが格納されている場合は、一致するプロファイルデータが存在することを表し、検索結果として「なし」が格納されている場合は、一致するプロファイルデータが存在しないことを表している。一致するプロファイルデータが存在しないならば(ステップ1305)、プロファイルデータをプロファイル別予測テーブル110に新規に登録する(ステップ1310)。たとえば、プロファイル別予測テーブル110の中の予測テーブル400への登録の場合、ファイル21のプロファイル要素であるユーザ名、プログラム名、ディレクトリ名、予測値としてファイル21のファイルサイズの実測値S、予測回数0、エラー回数0、データ数1を格納する。プロファイル別予測テーブル110の中の他の予測テーブルへの登録の場合、ファイル21のプロファイル要素であるユーザ名、プログラム名、ディレクトリ名のいずれか1つまたは2つを用い、予測値、予測回数、エラー回数、データ数に関しては予測テーブル400への登録の場合と同じである。
一致するプロファイルデータが存在するならば(ステップ1305)、そのプロファイルデータに含まれる予測値を正誤判定する(ステップ1315)。予測値の正誤判定は、そのプロファイルデータに含まれるプロファイル要素がファイル21のプロファイルと一致したときに、ファイル21のファイルサイズとしてその予測値を用いることが適切であったか否かを検証することである。具体的には、予測値と実測値Sとが共に閾値以上、または共に閾値未満である場合は正判定、そうでないとき、すなわち予測値と実測値Sとのいずれか一方が閾値以上であり、他方が閾値未満である場合は誤判定とする。誤判定の場合は、正誤判定したプロファイルデータのエラー回数e(たとえば、予測テーブル500の#3のプロファイルデータであればe23)をプロファイル別予測テーブル110(予測テーブル400、500、600、700)上で更新(+1)する(ステップ1320)。
ファイル21をストライピングして書き込む際に用いたプロファイルデータに含まれる予測値Pを更新する(ステップ1325)。予測値Pを(Pp×N+S)/(N+1)により求める。ここで、Ppはプロファイルデータに含まれる更新前の予測値(たとえば、予測テーブル500の#3のプロファイルデータであればP23)、Nはプロファイルデータに含まれるデータ数たとえば、予測テーブル500の#3のプロファイルデータであればN23)である。次に予測回数n(たとえば、予測テーブル500の#3のプロファイルデータであればn23)を更新(+1)する(ステップ1330)。新たに、エラー率(たとえば、予測テーブル500の#3のプロファイルデータであればe23/n23)をe/nにより求め、プロファイルデータに含まれるエラー率を更新する(ステップ1335)。
以上のステップ1325〜1335は、ファイル21をストライピングして書き込む際に用いたプロファイルデータの更新であるが、次にこのプロファイルデータに関連するプロファイルデータのデータ数Nを更新する(ステップ1340)。関連するプロファイルデータのデータ数Nを例を用いて説明する。ファイル21をストライピングして書き込む際に用いたプロファイルデータが予測テーブル500の#3のプロファイルデータであり、図9のステップ915において予測テーブル600にはファイル21のプロファイル要素に対応するプロファイルデータが存在しなかったとする。この場合、前述したように類似度の高いプロファイルデータから順に検索するように予測テー部は構成されているので、ファイル21のプロファイル要素に対応するプロファイルデータが予測テーブル600に存在する可能性がある。予測テーブル500の#3のプロファイルデータのプロファイル要素は、ユーザ名userB、プログラム名programB1であるので、予測テーブル700の#2のプロファイルデータがユーザ名userBで一致する。したがって、関連するプロファイルデータは予測テーブル700の#2のプロファイルデータであり、そのデータ数NはN42である。他の例として、ファイル21をストライピングして書き込む際に用いたプロファイルデータが予測テーブル400の#3のプロファイルデータである場合は、データ数Nを更新すべき関連するプロファイルデータは、予測テーブル500の#3、予測テーブル600の#2、および予測テーブル700の#2の各プロファイルデータである。
図14に、閾値決定部112の処理のフローチャートを示す。閾値決定部112の処理は、分散ファイルシステム1が低負荷な時間帯に、または定期的にファイルサイズ予測部111の処理のバックグランドで実行される。メモリ11に格納されている現在の閾値Aを取得し(ステップ1400)、ファイルサイズAのファイルの書込みのシミュレーションを実行する(ステップ1405)。
図15に、ファイルの書込みのシミュレーションのフローチャートを示す。ファイルサイズAのダミーファイルをバッファ113に生成する(ステップ1500)。生成するダミーファイルの内容(ファイルデータ)は任意である。生成したダミーファイルをファイルストライピングして、記憶装置12に書き込む(ステップ1505)。。ファイルストライピングによる書き込み時間Fを取得する(ステップ1510)。書き込み時間Fは、ステップ1905の実行開始時にタイマをセットし、実行終了時にタイマの値を読み取ることで得る。記憶装置12に書き込んだダミーファイルを削除する(ステップ1515)。次に、バッファ113に生成したダミーファイルをブロックストライピングにより記憶装置12に書き込む(ステップ1520)。ブロックストライピングによる書き込み時間Bを取得する(ステップ1525)。書き込み時間Bの取得方法は、ステップ1510の書き込み時間Fの取得方法と同様である。記憶装置12に書き込んだダミーファイルを削除し(ステップ1530)、バッファ113に生成したダミーファイルを削除する(ステップ1535)。
図14の説明に戻る。書き込みシミュレーション(図15)で取得した書き込み時間Fと書き込み時間Bとを比較する(ステップ1410)。比較の結果、書き込み時間Fが書き込み時間B以下、つまりファイルストライピングの方が、ブロックストライピングより書込み時間が短い場合は、ダミーファイルのファイルサイズを所定値a減らし(ステップ1415)、書き込みシミュレーションを実行する(ステップ1420)。書き込みシミュレーションで取得した書き込み時間Fと書き込み時間Bとを比較する(ステップ1425)。比較の結果、書き込み時間Fが書き込み時間Bより大でなければ、つまりファイルストライピングの方が、ブロックストライピングより書込み時間が短い場合は、ステップ1415からの処理を繰り返す。比較の結果、書き込み時間Fが書き込み時間Bより大いならば、ファイルサイズAを境にストライピングの種別による性能(書き込み時間)の優位性が入れ替わるので、ファイルサイズAを閾値として、メモリ11に格納する(ステップ1445)。
一方、ステップ1410の比較の結果、書き込み時間Fが書き込み時間Bより大きい、つまりブロックストライピングの方が、ファイルストライピングより書込み時間が短い場合は、ダミーファイルのファイルサイズを所定値a増やし(ステップ1430)、書き込みシミュレーションを実行する(ステップ1435)。書き込みシミュレーションで取得した書き込み時間Fと書き込み時間Bとを比較する(ステップ1440)。比較の結果、書き込み時間Fが書き込み時間B以下でなければ、つまりファイルストライピングの方が、ブロックストライピングより書込み時間が長い場合は、ステップ1430からの処理を繰り返す。比較の結果、書き込み時間Fが書き込み時間B以下ならば、ファイルサイズAを境にストライプ種別による性能の優位性が入れ替わるので、ファイルサイズAを閾値として、メモリ11に格納する(ステップ1445)。
以上説明した閾値の決定方法により、たとえば記憶装置12を性能の異なる他の記憶装置にリプレースした場合にも適切な閾値を得ることができる。また、分散システム1を新規に構築する場合は、ダミーファイルのファイルサイズAをたとえば10MBとして、閾値決定部112の処理を実行すると、適切な閾値に収束する。適切な閾値であるが、その厳密さは要求されないので、ステップ1415及びステップ1430で用いる所定値aの値は粗い値(たとえば、100KB)でよい。所定値aの値として、小さい値(たとえば、100B)を使用すると、シミュレーションの繰返し回数が多くなり、分散システム1に負荷をかけることになるので、粗い値を用いることが望ましい。
本実施形態によれば、ファイルストライピングとブロックストライピングとの入出力性能を効果的に利用できる分散ファイルシステムが実現できる。
1:分散ファイルシステム、2:クライアントコンピュータ、20:ユーザプログラム、21:ファイル、10:CPU、11:メモリ、12:記憶装置、110:プロファイル別予測テーブル、111:ファイルサイズ予測部、112:閾値決定部、113:バッファ、120:マスタファイル、121:ファイルストライピングサブファイル、126:ブロックストライピングサブファイル。

Claims (10)

  1. ファイルを格納する記憶領域として、前記ファイルをファイル単位で格納するファイルストライピングによる第1の記憶領域と、及び前記ファイルをブロックに分割し、前記分割したブロック単位で格納するブロックストライピングによる第2の記憶領域とを有する分散ファイルシステムのストライピング選択方法であって、
    格納するファイルのファイルサイズと予め定めてあるファイルサイズの閾値とを比較し、
    前記格納するファイルのファイルサイズが前記閾値未満のとき、前記格納するファイルを前記ファイルストライピングにより前記第1の記憶領域に格納し、
    前記格納するファイルのファイルサイズが前記閾値以上のとき、前記格納するファイルを前記ブロックストライピングにより前記第2の記憶領域に格納することを特徴とする分散ファイルシステムのストライピング種別選択方法。
  2. 前記格納するファイルのファイルサイズとして、前記格納するファイルのプロファイル要素と類似するプロファイル要素を含むプロファイルデータに含まれるファイルサイズの予測値を用いることを特徴とする請求項1記載の分散ファイルシステムのストライピング種別選択方法。
  3. 前記予測値は、前記格納するファイルのプロファイル要素と類似するプロファイル要素を含むプロファイルデータの中の類似度の高い前記プロファイルデータに含まれるファイルサイズの予測値であることを特徴とする請求項2記載の分散ファイルシステムのストライピング種別選択方法。
  4. 前記格納するファイルのプロファイル要素と類似するプロファイル要素を含むプロファイルデータがないとき、前記第1の記憶領域及び前記第2の記憶領域とは異なる記憶領域であるバッファに前記格納するファイルを書き込み、前記バッファに書き込んだファイルサイズが前記閾値を超える前に前記書き込みを終了したとき、前記バッファに書き込んだ前記格納するファイルを前記ファイルストライピングにより前記第1の記憶領域に格納し、前記バッファに書き込んだファイルサイズが前記閾値を超えてから前記書き込みを終了したとき、前記バッファに書き込んだ前記格納するファイルを前記ブロックストライピングにより前記第2の記憶領域に格納することを特徴とする請求項2記載の分散ファイルシステムのストライピング種別選択方法。
  5. 前記閾値をファイルサイズとするダミーファイルを生成し、前記ダミーファイルを前記ファイルストライピングにより前記第1の記憶領域に格納する時間と、前記ダミーファイルを前記ブロックストライピングにより前記第2の記憶領域に格納する時間とを比較し、前記比較結果に応じて、前記閾値を更新することを特徴とする請求項1記載の分散ファイルシステムのストライピング種別選択方法。
  6. ファイルを格納する記憶領域として、前記ファイルをファイル単位で格納するファイルストライピングによる第1の記憶領域、
    及び前記ファイルをブロックに分割し、前記分割したブロック単位で格納するブロックストライピングによる第2の記憶領域、及び
    格納するファイルのファイルサイズと予め定めてあるファイルサイズの閾値とを比較し、
    前記格納するファイルのファイルサイズが前記閾値未満のとき、前記格納するファイルを前記ファイルストライピングにより前記第1の記憶領域に格納し、前記格納するファイルのファイルサイズが前記閾値以上のとき、前記格納するファイルを前記ブロックストライピングにより前記第2の記憶領域に格納するファイルサイズ予測部を有することを特徴とする分散ファイルシステム。
  7. 前記ファイルサイズ予測部は、前記格納するファイルのファイルサイズとして、前記格納するファイルのプロファイル要素と類似するプロファイル要素を含むプロファイルデータに含まれるファイルサイズの予測値を用いることを特徴とする請求項6記載の分散ファイルシステム。
  8. 前記予測値は、前記格納するファイルのプロファイル要素と類似するプロファイル要素を含むプロファイルデータの中の類似度の高い前記プロファイルデータに含まれるファイルサイズの予測値であることを特徴とする請求項7記載の分散ファイルシステム。
  9. 前記ファイルサイズ予測部は、前記格納するファイルのプロファイル要素と類似するプロファイル要素を含むプロファイルデータがないとき、前記第1の記憶領域及び前記第2の記憶領域とは異なる記憶領域であるバッファに前記格納するファイルを書き込み、前記バッファに書き込んだファイルサイズが前記閾値を超える前に前記書き込みを終了したとき、前記バッファに書き込んだ前記格納するファイルを前記ファイルストライピングにより前記第1の記憶領域に格納し、前記バッファに書き込んだファイルサイズが前記閾値を超えてから前記書き込みを終了したとき、前記バッファに書き込んだ前記格納するファイルを前記ブロックストライピングにより前記第2の記憶領域に格納することを特徴とする請求項7記載の分散ファイルシステム。
  10. 前記閾値をファイルサイズとするダミーファイルを生成し、前記ダミーファイルを前記ファイルストライピングにより前記第1の記憶領域に格納する時間と、前記ダミーファイルを前記ブロックストライピングにより前記第2の記憶領域に格納する時間とを比較し、前記比較結果に応じて、前記閾値を更新する閾値決定部をさらに有することを特徴とする請求項6記載の分散ファイルシステム。
JP2009038328A 2009-02-20 2009-02-20 分散ファイルシステムのストライピング種別選択方法及びその分散ファイルシステム Pending JP2010191903A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009038328A JP2010191903A (ja) 2009-02-20 2009-02-20 分散ファイルシステムのストライピング種別選択方法及びその分散ファイルシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009038328A JP2010191903A (ja) 2009-02-20 2009-02-20 分散ファイルシステムのストライピング種別選択方法及びその分散ファイルシステム

Publications (1)

Publication Number Publication Date
JP2010191903A true JP2010191903A (ja) 2010-09-02

Family

ID=42817849

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009038328A Pending JP2010191903A (ja) 2009-02-20 2009-02-20 分散ファイルシステムのストライピング種別選択方法及びその分散ファイルシステム

Country Status (1)

Country Link
JP (1) JP2010191903A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012073777A (ja) * 2010-09-28 2012-04-12 Kddi Corp 分散ファイルシステム制御装置
JP2013105397A (ja) * 2011-11-15 2013-05-30 Toshiba Corp ファイル処理装置及びファイル処理方法
JP2016045850A (ja) * 2014-08-26 2016-04-04 富士通株式会社 データ配置プログラム、データ配置方法およびデータ配置装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012073777A (ja) * 2010-09-28 2012-04-12 Kddi Corp 分散ファイルシステム制御装置
JP2013105397A (ja) * 2011-11-15 2013-05-30 Toshiba Corp ファイル処理装置及びファイル処理方法
JP2016045850A (ja) * 2014-08-26 2016-04-04 富士通株式会社 データ配置プログラム、データ配置方法およびデータ配置装置

Similar Documents

Publication Publication Date Title
US9367448B1 (en) Method and system for determining data integrity for garbage collection of data storage systems
US8639669B1 (en) Method and apparatus for determining optimal chunk sizes of a deduplicated storage system
US8712963B1 (en) Method and apparatus for content-aware resizing of data chunks for replication
US8799238B2 (en) Data deduplication
CN107102819B (zh) 向固态硬盘写入数据的方法及设备
US8719237B2 (en) Method and apparatus for deleting duplicate data
US9424185B1 (en) Method and system for garbage collection of data storage systems
KR20170054299A (ko) 메모리 관리 시의 중복 제거를 위해서 기준 세트로 기준 블록을 취합하는 기법
US10783115B2 (en) Dividing a dataset into sub-datasets having a subset of values of an attribute of the dataset
US20140297603A1 (en) Method and apparatus for deduplication of replicated file
JP2005267600A5 (ja)
KR20190019805A (ko) 데이터 객체 저장 방법, 장치, 및 이를 이용한 컴퓨터 프로그램이 저장되는 컴퓨터 판독가능한 저장 매체
US20200334292A1 (en) Key value append
JP2009259007A (ja) 分散格納方法、分散格納システム及び分散格納装置
CN113535670B (zh) 一种虚拟化资源镜像存储系统及其实现方法
CN108073472B (zh) 一种基于热度感知的内存纠删码分布方法
US20140156607A1 (en) Index for deduplication
CN113767378A (zh) 文件系统元数据去重复
CN106383826A (zh) 数据库查询方法和装置
US9952771B1 (en) Method and system for choosing an optimal compression algorithm
US20150169668A1 (en) Single Pass File System Repair With Copy On Write
JP2010191903A (ja) 分散ファイルシステムのストライピング種別選択方法及びその分散ファイルシステム
KR102354343B1 (ko) 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법 및 장치
US11163446B1 (en) Systems and methods of amortizing deletion processing of a log structured storage based volume virtualization
JP5494817B2 (ja) ストレージシステム、データ管理装置、方法及びプログラム