JP2013206467A - ファイル・システム・ヒンティング - Google Patents

ファイル・システム・ヒンティング Download PDF

Info

Publication number
JP2013206467A
JP2013206467A JP2013061970A JP2013061970A JP2013206467A JP 2013206467 A JP2013206467 A JP 2013206467A JP 2013061970 A JP2013061970 A JP 2013061970A JP 2013061970 A JP2013061970 A JP 2013061970A JP 2013206467 A JP2013206467 A JP 2013206467A
Authority
JP
Japan
Prior art keywords
file system
hint
request
context information
level storage
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.)
Granted
Application number
JP2013061970A
Other languages
English (en)
Other versions
JP5710673B2 (ja
Inventor
Mitra Rebanta
レバンタ・ミトラ
Shivanagouda Mahesh
マヘシュ・シヴァナゴウダ
Keerthi Banavara Anantha
アナンサ・ケールシ・バナヴァラ
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.)
LSI Corp
Original Assignee
LSI Corp
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 LSI Corp filed Critical LSI Corp
Publication of JP2013206467A publication Critical patent/JP2013206467A/ja
Application granted granted Critical
Publication of JP5710673B2 publication Critical patent/JP5710673B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

【課題】ファイル・システム・ヒントを生成して通信する。
【解決手段】本発明の方法では、ファイル・システム層からI/Oリクエストを受信し、ファイル・システム・コンテキスト情報に関してI/Oリクエストを検査する。ファイル・システム・コンテキスト情報の属性を決定するために、ファイル・システム層へアクセスし、ファイル・システム層からファイル・システム・コンテキスト情報の属性を受信する。受信した属性を分析し、その分析に基づいてヒントを生成する。更に、本発明の方法は、アプリケーションから渡されたデータの重み付けを提供する機構を用いる。ヒントは、I/Oリクエストと関連付けられる。ヒントは、低位レベルのストレージ階層でのデータのアクセス性の効率を高めるためにホット度合いに関する情報を含む。このヒントは低位レベルのストレージ階層へ送信される。
【選択図】図2

Description

本発明は、一般に、ファイル・システムのヒント及び/又はアプリケーション駆動のヒントの導出、生成、および通信の方法および装置に関する。ファイル・システムのヒントは、ファイル・システム層により発せられたI/Oリクエストから傍受したファイル・システム・コンテキスト情報に基づいて生成されて、低位レベルのストレージ階層へ通信される。
現在のキャッシュ・ベースのストレージ・システムは、ファイル・システムが認識可能なコンテキスト情報を有効に決定することや導出することができない。タイヤ2(tier-2、階層2)キャッシュのような非常に低位のレベルで動作するキャッシュ・ベースのストレージ・システムのような、現在のキャッシュ・ベースのストレージ・システムは、ファイル・システムのI/Oのコンテキストや、ファイル・システムのI/Oに対する近接性(proximity)を欠いている。コンテキストの欠如および近接性の欠如のため、現在のキャッシュ・ベースのストレージ・システムは、受信しているデータの重要度に基づいてデータ・アクセシビリティ(accessibility)を改善する能力を欠いている。更に、現在のキャッシュ・ベースのストレージ・システムは、ファイル・システムのI/Oのコンテキストや、ファイル・システムのI/Oに対する近接性を欠いているので、アプリケーションのデータ・アクセス・パターンについての情報を得る能力を必然的に欠いている。
非常に低位のレベルでは、階層化されたストレージ・システムや、下位レベルのストレージ・システムまたはデバイスのストレージ・コントローラは、アプリケーションやファイル・システムのデータ・アクセス・パターンを認識しない。低位レベル(例えば、低位レベルのストレージ・システム(例えば、低位レベルのRAIDストレージ・システム)が属するレベルなど)は、ファイル・システムやアプリケーションからアクセスされているデータのタイプについての情報を直接的に得る手段を有さない。低位レベルのストレージ・システムは、タイヤ2キャッシュの階層化されたストレージ・システムとして動作することができる。しかし、ホスト側のキャッシュ情報は、低位レベルのストレージ・システムのキャッシュへは渡されない。
現在、アプリケーションに特定の情報(特定アプリケーション情報)を低位レベルのストレージ・システムへ送るまたは渡すための機構はない。
従って、上記の問題に対処するための方法および装置を提供することが望ましい。
従って、本発明は、ファイル・システムのヒント(ファイル・システム・ヒント)を生成して通信するための方法を含む。この方法は、ファイル・システム層からI/Oリクエストを受信し、このI/Oリクエストを、ファイル・システム・コンテキスト情報に関して検査するステップを含む。また、この方法は、ファイル・システム・コンテキスト情報の属性を判別するためにファイル・システム層へアクセスし、ファイル・システム層からファイル・システム・コンテキスト情報の属性を受信するステップを含む。方法は、更に、ファイル・システム・コンテキスト情報の属性の属性を分析し、ファイル・システム・コンテキスト情報の属性の分析に基づいて少なくとも1つのヒントを生成するステップを含む。ヒントは、ファイル・システム・コンテキスト情報の属性により決定されるデータの重要度を示すことができ、ヒントと関連するデータの相対的な重要度は、そのデータが相対的に高速の記憶媒体に記憶されるべきか又は相対的に低速の記憶媒体に記憶されるべきかを決定する。更に、方法は、少なくとも1つのヒントを低位レベルのストレージ・タイヤ(ストレージ階層)へ送信するステップを含むことができる。
更に、本発明は装置を含む。装置は、ファイル・システム・ヒントを生成および通信するために、システム・トポロジへ付加できるように構成される。装置は、少なくとも、システム・トポロジのファイル・システム層、ブロック層、および低位レベルのストレージ・タイヤと通信するように構成されたフィルタ・ドライバを備える。フィルタ・ドライバは、少なくとも、ヒント・エンジンおよび通信コンポーネントを含む。更に、フィルタ・ドライバは、少なくとも、
ファイル・システム層からI/Oリクエストを受信し、
そのI/Oリクエストをファイル・システム・コンテキスト情報に関して検査し、
そのファイル・システム・コンテキスト情報の属性を判別するためにファイル・システム層へアクセスし、
ファイル・システム層から、ファイル・システム・コンテキスト情報の属性を受信し、
ファイル・システム・コンテキスト情報の属性を分析し、
ファイル・システム・コンテキスト情報の属性の分析に基づいて少なくとも1つのヒントを生成し、
その少なくとも1つのヒントを低位レベルのストレージ・タイヤへ送信する
ように構成され、少なくとも1つのヒントは、I/Oリクエストに関連するものであり、少なくとも1つのヒントは、ファイル・システム・コンテキスト情報の属性により決定されるデータの重要度を示すものであり、ヒントと関連するデータの相対的な重要度は、そのデータが相対的に高速の記憶媒体に記憶されるべきか又は相対的に低速の記憶媒体に記憶されるべきかを決定するものである。
本発明の実施形態は、コンピュータ読取可能な記録媒体を含み、その記録媒体は、ファイル・システム・ヒントの生成および通信の方法をコンピュータ・デバイスに行わせるためのコンピュータ・コードを記録するものであり、コンピュータ・コードは、
ファイル・システム層からI/Oリクエストを受信する動作と、
そのI/Oリクエストを、ファイル・システム・コンテキスト情報に関して検査する動作と、
そのファイル・システム・コンテキスト情報の属性を判別するためにファイル・システム層へアクセスする動作と、
ファイル・システム層から、ファイル・システム・コンテキスト情報の属性を受信する動作と、
ファイル・システム・コンテキスト情報の属性を分析する動作と、
ファイル・システム・コンテキスト情報の属性の分析に基づいて少なくとも1つのヒントを生成する動作と、
少なくとも1つのヒントを低位レベルのストレージ・タイヤへ送信する動作と
をコンピュータ・デバイスに行わせるものであり、
少なくとも1つのヒントは、ファイル・システム・コンテキスト情報の属性により決定されるデータの重要度を示すものであり、ヒントと関連するデータの相対的な重要度は、そのデータが相対的に高速の記憶媒体に記憶されるべきか又は相対的に低速の記憶媒体に記憶されるべきかを決定するものである。
上記の全体的な説明および下記の詳細な説明の双方とも、例示的であり説明のためのものであり、本発明を限定することを意図していない。明細書に関連する添付の図面は、本発明の実施形態を示すものであり、一般的な説明と共に本発明の原理を説明するためのものである。
本発明の様々な目的および利点は、当業者であれば、添付の図面を参照することにより、より良く理解できる。
図1は、現在実施されているシステム・トポロジにおけるユーザ空間およびカーネル空間の層を示す。 図2は、ヒント提供のために構成されたシステム・トポロジのフロー図である。 図3は、ヒント・エンジンを含むフィルタ・ドライバのブロック図である。 図4は、ファイル・システム・ヒントのために構成されたファイル・システム層およびフィルタ・ドライバにおけるI/Oリクエストのフロー図である。 図5は、アプリケーションのヒントのために構成されたファイル・システム層およびフィルタ・ドライバにおけるI/Oリクエストのフロー図である。 図6は、ヒントの通信の第1手法のフロー図である。 図7は、ヒントの通信の第2手法のフロー図である。 図8は、ヒントの処理のフロー図である。 図9は、ファイル・システム・ヒントの生成および通信の方法を示す。
以下に、添付の図面に示されている主題の実施形態について詳細に説明する。本発明の範囲は、特許請求の範囲により定められるものであり、代替、変更、および等価の様々な例は、本発明の範囲内にある。説明の明瞭性に関して、ここで説明する実施形態と関連する技術分野で知られている技術的材料は、説明を不明瞭にしないように、詳細に記載していない。
本発明の実施形態は、ヒンティング(hinting、ヒント提供)に関するものである。ヒンティングは、特定のホストまたはアプリケーションについての情報が低位レベル、例えば、低位レベルのストレージ・タイヤへ渡されることを可能とする。ヒンティングは、低位レベルでは入手できない情報が、キャッシング(caching、キャッシュ処理)をより効率的に実施するために使用されることを可能とする。例えば、ヒンティング情報は、キャッシングや自動タイヤリング(auto-tiering、自動階層化処理)を改善するために使用することができる。ヒンティングは、低位レベルへ渡される様々なメタデータ情報の加重平均(重み付け)を可能とする。更に、ヒンティングは、ファイル・システムやアプリケーションのデータ・アクセス・パターンを低位レベルへ渡すことを含む。それにより、低位レベルは、ヒンティングから得られたデータの特性に基づいて、より効率的または適切に動作を行うことや応答することができる。例えば、ヒントは、低位レベルのストレージ・コントローラ(例えば、MegaRAID(登録商標)ストレージ・コントローラ)や、ドライバや、システムや、関連するソフトウェアやファームウェアに対してアドバイザ(助言情報)やディレクタ(指導情報)として供給される。
ヒンティングは、ファイル・システムに特定のヒンティング(特定ファイル・システム・ヒンティング)、および/またはアプリケーションに特定のヒンティング(特定アプリケーション・ヒンティング)を含む。特定ファイル・システム・ヒンティングは、他のアプリケーションから独立して行うことができる。特定アプリケーション・ヒンティングは、1以上の個別のアプリケーションからのサポートを含み得る。また、ヒンティング・ソリューションは、デフォルトのアプリケーションのヒンティング・アルゴリズム/機構をオーバーライドすることができるAPIを露出させることができ、それらのAPIは、アプリケーションが、より特定的なヒントを提供すること及びヒントについての制御をより良くすることを可能にする。更に、一組の一般的なAPIを使用可能とし、アプリケーションがヒントを低位のレベルへ渡すためにAPIを使用できるようにする。
本発明の実施形態は、ファイル・システムのアーキテクチャへアクセスし、ファイル・システムやファイル・システムのアーキテクチャを変更せずに、ファイル・システム・コンテキスト情報を得る。更に、本発明の実施形態は、ファイル・システム非依存型(agnostic)またはほぼ非依存型である。ファイル・システムに依存しない(ファイル・システムを認識しない)ことにより、本発明の実施形態は、ファイル・システムの特定のフォーマットや言語に依存せずに、様々なタイプのファイル・システムに対して動作することが可能とされる。更に、本発明の実施形態は、領域のアクセス・パターンおよびデータのタイプを考慮するので、アプリケーションのコンテキスト情報を得ることができる。従って、実装形態および実施形態は、ファイル・システム・ヒントおよびアプリケーション駆動のヒント(アプリケーション駆動ヒント)の双方または一方を生成して通信するように構成される。
図1は、現在実施されているシステム・トポロジ100を示す。システム・トポロジ100は、典型的には、ユーザ空間110およびカーネル空間120を含む。データベース/ユーザ・アプリケーション112は、典型的には、ユーザ空間110に存在する。データベース/ユーザ・アプリケーションは、ユーザ空間110からカーネル空間120へのI/Oリクエストを行う。データベース/ユーザ・アプリケーションのリクエストは、シーケンシャルまたは非シーケンシャルのI/Oリクエストを含むことができ、また、ランダムのI/Oリクエストを含むことができる。システム・トポロジの異なる実施形態では、ユーザ空間110に、更なるコンポーネントや、ハードウェアや、ソフトウェアや、層(レイヤ)を含む場合もある。
カーネル空間120は、ユーザ空間110の下で動作する。カーネル空間120は、ダイレクトI/O(direct I/O)122、システム・コール・インターフェース124、1以上の仮想ファイル・システム126、1以上のファイル・システム128、ブロック層130、複数のLBA(論理ブロック・アドレス)を含むリクエスト132、およびSCSI層140を含む。システム・トポロジの別の実施形態では、カーネル空間120に、更なるコンポーネントや、ハードウェアや、ソフトウェアや、層(レイヤ)を含む場合もあり、例えば、ストレージ・コントローラ(例えば、152)およびストレージ・システム150を含む。
ダイレクトI/O122は、I/Oリクエストをブロック層130へ送る。I/Oリクエストは、特定のアプリケーションに関するデータを含み得る。
システム・コール・インターフェース124は、カーネル空間120で要求されたサービスのために、ユーザ空間110で実行されるアプリケーションとの間でコールやI/Oリクエストを送信や受信するように構成される。
仮想ファイル・システム126は、ファイル・システム(例えば、128)の最上部に抽象化層(アブストラクション・レイヤ)を備える。仮想ファイル・システム126は、複数の様々なタイプの物理ファイル・システム(例えば、128)を許容するように構成される。例えば、仮想ファイル・システム126は、VMwareの製品で実施できる。ファイル・システム128は、ファイルやデータを組織化するように構成される。ファイル・システム128はファイルおよびデータを含み、そのファイルおよびデータはメタデータを含み得る。ファイル・システム128は、I/Oリクエストをブロック層130へ送信し、ブロック層130のI/Oリクエストは、ユーザ・データ、ファイル・システム・メタデータ、他のデータ、および他のメタデータのうちの少なくとも1つを含む。
ファイル・システム層のファイル・システムおよび仮想ファイル・システム層の仮想ファイル・システムは、データ(例えば、ファイル)およびメタデータを含む。メタデータは、幾つかのデータ構造についての情報を含むことができる。ファイルは、iノード(インデックス・ノード)またはvノード(仮想インデックス・ノード)と関連し得る。iノードまたはvノードは、整数により識別できる。iノードまたはvノードは、ファイルおよびディレクトリ(例えば、フォルダ)についての情報を記憶する。例えば、iノードまたはvノードは、ファイル・タイプ、ファイル所有者、アクセス・モード(例えば、読出し(リード)、書込み(ライト)、許可など)などについての情報を含む。
ブロック層130は、ファイル・システム128およびダイレクトI/O122からI/Oリクエストを受信するように構成できる。同様に、ファイル・システム128およびダイレクトI/O122は、ブロック層130へアクセスするように構成される。ブロック層130は、SCSI層140と通信できるように接続される。ブロック層130は、SCSI層140を介してストレージ・システム150およびストレージ・コントローラ152へ1以上のリクエストを送信するように構成される。
SCSI層140は、SAS(シリアル・アタッチドSCSI)接続性(連結性)またはファイバ・チャンネル接続性を含む。SCSI層140は、ブロック層130をストレージ・システム150へ、通信できるように接続する。更に、SCSI層140は、複数のデバイスや層やシステム、例えば、ホスト・システム、ストレージ・システム、ストレージ・コントローラ、コントローラ、伸長器(エキスパンダ)、ストレージ・ネットワーク、コンピュータ・ネットワーク、他のブロック層などを、通信できるように接続する。
ストレージ・システム150は、1以上のストレージ・デバイス、例えば、ハード・ディスク・ドライブ(HDD)やソリッド・ステート・デバイス(SSD)の組み合わせを含むことができる。ストレージ・システム150は、ストレージ・コントローラ152を含む。ストレージ・システム150は、低位レベルのストレージ・システムであり得る。低位レベルのストレージ・システムは、RAIDストレージ・システムおよびRAIDタイヤード(tiered、階層化された)・ストレージ・システムを含むことができる。
ストレージ・システム150は、統合された、または統合可能な、または接続された、または関連したストレージ・コントローラ152を含む。ストレージ・コントローラ152は、読出し/書込み(リード/ライト)のI/Oリクエストの送信および受信などのようなストレージ・タスクを、効率的に処理、転送、調整、および管理するように構成される。ストレージ・コントローラは、コンピュータ読出可能な記録媒体に記録されたコードを含むソフトウェアやファームウェアを含む。ストレージ・コントローラのソフトウェアやファームウェアは、ストレージ・コントローラ・タスクを実行および処理するように構成される。
図2は、ヒント・エンジン260を含むシステム・トポロジ200を示す。図1の場合と同様に、システム・トポロジ200は、ユーザ空間110、カーネル空間120、データベース/ユーザ・アプリケーション112、ファイル・システム128、ブロック層130、SCSI層140、ストレージ・システム・ドライバ142、ストレージ・システム150、およびストレージ・コントローラ152を含む。更に、ファイル・システム128は、ファイル・システムiノード(インデックス・ノード)キャッシュ229Aおよびバッファ・キャッシュ229Bを含む。また、システム・トポロジ200は、ヒント・エンジン260を含む。
好適な実施形態では、ストレージ・システム150は、タイヤード・ストレージ・システムまたはタイヤードRAID(Redundant Array of Independent Disks)ストレージ・システムを含み、例えば、MegaRAID(登録商標)ストレージ・システムを含む。タイヤード・ストレージ・システムまたはタイヤードRAIDストレージ・システムは、1以上のHDDや、1以上のSSDや、1以上の他のストレージ・デバイスを含む。タイヤード・ストレージ・システムまたはタイヤードRAIDストレージ・システムは、更に、1以上のメモリ、1以上のキャッシュ、および1以上のプロセッサ、ならびにソフトウェアやファームウェアを含む。好適な実施形態では、ストレージ・コントローラ152は、MegaRAID(登録商標)CacheCadeソフトウェアの1つのバージョン(例えば、MegaRAID(登録商標)CacheCade Pro v.2.0)を実行するMegaRAID(登録商標)CacheCadeストレージ・コントローラを用いて構成できる。更に、ストレージ・システム・ドライバやストレージ・コントローラ・ドライバ(例えば、142)は、ストレージ・コントローラ152やストレージ・システム150とインターフェースするように構成され、ストレージ・システム・ドライバ142は、SCSI層140と接続されたデバイスやシステムに存在する。代替例として、ストレージ・システム・ドライバ142は、ストレージ・コントローラ152に配置することもできる。ストレージ・システムおよびストレージ・コントローラは、タイヤード・ストレージ・システムに構成され、ホットな(重要な/アクセス頻度の高い)データは、SSDのようなアクセス速度の速いタイプのストレージに記憶され、コールドな(あまり重要でない/アクセス頻度の高くない)データは、HDDのようなアクセス速度があまり速くないタイプのストレージへ記憶されるようにする。
更に図2を参照する。ヒント・エンジン260は、ファイル・システム128の層からブロック層130へ渡されるI/Oリクエストからヒントを受信、導出、または傍受するように構成される。ヒント・エンジン260により傍受されてヒントの導出に用いられるI/Oリクエストは、ファイルの読み出し、書き込み、添付、削除、移動、コピーなどのリクエストを含む。ヒント・エンジン260は、ブロック層130の中または上に存在する。例えば、ヒント・エンジン260は、ファイル・システム128の層とブロック層130との間に存在する。ヒント・エンジン260は、ファイル・システム・コンテキスト情報に関してI/Oリクエストを検査するように構成される。ファイル・システム・コンテキスト情報は、例えば、ファイル・システム・メタデータ、ファイル・システム・アクセス・パターン、ファイル・システムiノード(インデックス・ノード)、ファイル・システムvノード(仮想インデックス・ノード)、ファイル・システム・スーパー・ブロック、特別な重要性および影響を有するか又はファイル・システムのレイアウトを反映するジャーナリング・ファイル・システム・ブロック(グループ記述子テーブル、ブロック・ビットマップ、iノード・ビットマップ、iノード・テーブルなど)のトランザクション・ログ、および特別な重要性および影響を有するか又はファイル・システムのレイアウトを反映するメタファイル(iノード・メタファイルなど)のうちの少なくとも1つを含む。
システム・トポロジ200のデータベース/ユーザ・アプリケーション112は、読出し/書込みリクエストを用いてアプリケーション・ヒントを渡す。例えば、アプリケーションは、ユーザ空間110からカーネル空間120の層(例えば、ファイル・システム128の層、仮想ファイル・システム層126、システム・コール・インターフェース124、ブロック層130など)への読出し/書込みリクエストの送信中、送信前、または送信後にアプリケーション・ヒントを渡す。アプリケーション・ヒントは、読出し/書込みリクエストの一部として渡されるか、または、読出し/書込みリクエストの前または後に送信される1以上の別個の信号、送信、通知、またはメッセージで構成される。
図3は、フィルタ・ドライバ300の実施形態を示す。フィルタ・ドライバ300は、ヒント・エンジン260および通信コンポーネント330を含む。フィルタ・ドライバのヒント・エンジン260は、ファイル・システム・ヒント310およびアプリケーション駆動ヒント320のうちの少なくとも1つを導出するように構成される。
フィルタ・ドライバ300、またはフィルタ・ドライバ300のヒント・エンジン260は、ファイル・システム・ヒント310を生成するように構成される。フィルタ・ドライバ300またはヒント・エンジン260は、ファイル・システム128から送信される読出し/書込みリクエストをスヌープ(監視)、傍受(インターセプト)、または受信することにより、ファイル・システム128から情報を得るように構成される。次に、ヒント・エンジン260は、ファイル・システム128から得た情報から、ファイル・システム・ヒント310を生成または導出する。
フィルタ・ドライバ300、またはフィルタ・ドライバ300のヒント・エンジン260は、アプリケーション駆動ヒントを生成するように構成される。ヒント・エンジン260またはフィルタ・ドライバ300は、通信のためにアプリケーションが使用しているI/Oコントロール(ioctl)を決定すること又はAPI(アプリケーション・プログラム・インターフェース)を露出させることにより、アプリケーション駆動ヒント320を生成する。
フィルタ・ドライバは、ファイル・システム・ヒント310およびアプリケーション駆動ヒント320のうちの少なくとも1つをストレージ・システム(例えば、150)へ送るまたは渡すように構成された通信コンポーネント330を含む。通信コンポーネント330は、ストレージ・システム(例えば、150)へ、ヒント(即ち、ファイル・システム・ヒントおよび/またはアプリケーション駆動ヒント)のみを送るように、又は主にヒントを送るように構成される。代替例として、フィルタ・ドライバ300の通信コンポーネント330は、ヒントを、通常のリクエスト(例えば、読出し/書込みのI/Oリクエスト)の一部として、または通常のリクエストに含めて送るように構成される。更には、通信コンポーネントは、ヒントをストレージ・システムへ送るまたは渡すように、および標準の読出し/書込みリクエストを送るまたはリレーするように構成することもできる。例えば、フィルタ・ドライバ300の通信コンポーネント330は、ヒントを、読出し/書込みリクエストの前、最中、または後に、または読出し/書込みリクエスト内に含めて、送るまたは渡すように構成される。更に別の幾つかの実施形態では、I/Oリクエストのブロックの使用されていないフィールドへ、1以上のヒントが添付、挿入、注入、または配置され、それにより、1以上のヒントを、I/Oリクエストの一部としてストレージ・システム(例えば、150)へ渡すまたは送る。
幾つかの実施形態では、I/Oリクエストに、使用されていないフィールドが無い場合や、適切なサイズまたは容量の使用されていないフィールドが無い場合、ヒントは、後続のメッセージでストレージ・システム150へ渡されるか、または後続のI/Oリクエストの使用されていないフィールドで渡される。ヒントが、後続のメッセージで渡される場合、または後続のI/Oリクエストの使用されていないフィールドに配される場合、ヒントは、関連するオフセット・インジケータを含むか、またはヒントにオフセット・インジケータが付随する。オフセット・インジケータは、ヒントの関連する読出しI/Oリクエストと、ヒントの関連する読出しI/Oリクエストからヒントをオフセットさせた(ずらせた)時間量またはI/Oリクエスト数とのうちの少なくとも1つを示す。次に、ストレージ・システムまたはストレージ・コントローラは、I/Oリクエストおよび関連するヒント(1以上)またはヒントの一部を受信したときに、後続の分離されていたヒントを、組立、結合、または関連させて適切なI/Oリクエストの形にする。
図4は、I/Oリクエストおよびファイル・システム・ヒントに関するフロー図を示し、このフロー図で示す処理は、ステップ401〜406で示すステップの幾つか又は全てを含む。以下に示すステップ401〜406の順序は例示的なものであり、幾つかの実施形態では、ステップ401〜406が異なる順序で行われることも、幾つかのステップが同時に行われることもあり得る。図4に示すように、フィルタ・ドライバ300は、ファイル・システム128の層とブロック層130との間に配されることができる。
ステップ401は、ファイル・システム128がバッファまたはキャッシュ(例えば、ファイル・システムiノード(インデックス・ノード)キャッシュ229Aまたはバッファ・キャッシュ229B)からI/Oリクエストを発行するステップを含む。ステップ401は、更に、内部ヒント・エンジン(例えば、260)を含むフィルタ・ドライバ300が、ファイル・システムから発行されたI/Oリクエストを傍受するステップを含む。
ステップ402において、I/Oリクエストは、ブロック単位でiノード(インデックス・ノード)および/またはvノード(仮想ファイル・システム(1以上)のインデックス・ノード)を参照するので、内部ヒント・エンジン(例えば、260)は、iノードおよび/またはvノードのマッピングを行うことができる。このiノードおよび/またはvノードのマッピングは、特定のI/Oリクエストに関連する情報、またはファイル・システム128および/または仮想ファイル・システム(例えば、126)の重要な構造に関連する情報を提供する。更に、特定のI/Oリクエストに関連するiノードおよび/またはvノードは、少なくともI/Oリクエストが完了するまでは変わらないので、マッピングから得られる情報は、少なくともI/Oリクエストが完了するまでは正確性を維持する。
ステップ403において、フィルタ・ドライバ300、またはフィルタ・ドライバの内部ヒント・エンジン(例えば、260)は、ファイル・システム128の層のiノードおよび/またはvノードの属性をルックアップするか、それにアクセスするか、またはそれをルックアップするリクエストを送信する。
ステップ404において、ファイル・システム層は、ファイル・システム128の層のiノードおよび/またはvノードの属性を送信して、フィルタ・ドライバ300、またはフィルタ・ドライバ300の内部ヒント・エンジン260に受信させる。iノード/vノードの幾つかの属性としては、iノード/vノード番号、iノード/vノード・フラグ、およびiノード/vノード・タイプなどがある。
ステップ405において、内部ヒント・エンジン(例えば、260)は、例えばスーパー・ブロックなどのようなブロックの様々なフラグ、メタiノード(メタインデックス・ノード)、およびメタvノード(メタ仮想インデックス・ノード)を分析することにより、ヒント(例えば、ファイル・システム・ヒント)を生成する。メタiノード/メタvノードは、1つのファイル・システムがそのデータをより良く管理するために維持する内部iノード/vノードである。例えば、内部ヒント・エンジン(例えば、260)は、特定のブロックがスーパー・ブロックであるか否かを、その特定のブロックのフラグまたはブロック番号に基づいて検査および/または判別する。更に、例えば、内部ヒント・エンジン(例えば、260)は、特定のブロックがメタiノードであるかメタvノードであるかを、その特定のブロックのフラグに基づいて検査および/または判別する。次に、内部ヒント・エンジン(例えば、260)は、iノードおよび/またはvノードの属性を分析した後に、ヒントを構築または生成する。
ステップ406において、フィルタ・ドライバ、またはフィルタ・ドライバの内部ヒント・エンジン、またはフィルタ・ドライバの通信コンポーネントは、生成したヒントを、ストレージ・システム・ドライバ(例えば、142)、またはストレージ・コントローラ(例えば、152)、またはストレージ・システム(例えば、150)へ、SCSI層(例えば、140)を介して送るまたは渡す。
更に図4を参照する。フィルタ・ドライバ300、またはフィルタ・ドライバ300のヒント・エンジン260は、ハッシュ・テーブル410を含む。フィルタ・ドライバ300、またはフィルタ・ドライバ300またはヒント・エンジン260は、LBA(論理ブロック・アドレス)に対して、生成されたヒント(例えば、ファイル・システム・ヒント)を記憶するようにハッシュ・テーブル410を維持する。生成されたヒントは、生成されたときにハッシュ・テーブル410に記憶される。ハッシュ・テーブル410のエントリは、内部ヒント・エンジンが、ハッシュ・テーブル内の既存のエントリと関連する更なるヒントを生成したときに、または更なる情報を得たときに、更新される。
ファイル・システムのメタデータの幾つかのヒントは、スーパー・ブロックおよびメタファイルと関連する情報を含む。
スーパー・ブロックは、典型的には、一貫性を維持するために頻繁にフラッシュ(flushed)される。従って、スーパー・ブロックと関連するファイル・システム・メタデータ・ヒントは、非常に重要(ホット)であると見なされる。スーパー・ブロックは、典型的には、殆どのファイル・システムにわたって明確なものである。典型的に、スーパー・ブロックは、そのブロック番号から検出することができる。
メタファイルに関しては、全てまたは殆どのメタファイルが、特定のファイル・システムに対してのリザーブ(予約)されたiノード番号を有するか、またはそれと関連付けされている。メタファイルは、典型的には大きくないが、大きいファイル・システムでは大きくなり得る。ファイル・システムが大きいメタファイルを含む状況では、フィルタ・ドライバまたはヒント・エンジンは、特定のメタファイル、例えば、iノード・マップ・メタファイルやブロック・マップ・メタファイルと関連するヒントのみを生成することを選択する場合もある。メタファイルと関連するファイル・システム・メタデータ・ヒントは、例えば、iノード・マップ・メタファイルやブロック・マップ・メタファイルを含む。メタファイル(例えば、iノード・マップ・メタファイルやブロック・マップ・メタファイル)と関連するファイル・システム・メタデータ・ヒントは、非常に重要であると見なされる。
ファイル・システムのI/Oと関連する幾つかのヒントは、置換書込み(replacement write)、リカバリ書込み、ブロック事前割り振り(pre-allocation)、および読出し(read)と関連する情報を含む。
置換書込みI/Oリクエストは、ストレージに対してのファイル・システム全体にわたる(file-system-wide)データ・フラッシュ中に、またはリソースを解放するためにデータが書き込まれるという可能性を示す書込強化(write hardening)中に、発生し得る。従って、ファイル・システムI/O関連のヒントはホットであるとみなされる。なぜなら、I/O(例えば、書込み)リクエストは、迅速に完了されるべきだからである。ブロック層へ渡されるフラグは、置換書込みを示す。
リカバリ書込みI/Oリクエストは、典型的には、クラッシュが発生する前にデータの持続性を保証するためにユーザによりトリガされるが、クラッシュした場合には、ヒントは供給されない。
アプリケーションは、後の使用のためにブロックを事前割り振りする。ブロック事前割り振りリクエストはコールドである(あまり重要ではない)と見なされる。なぜなら、事前割り振りリクエストは、追加モード(append mode)で出されるものであり、通常は、大量のブロックの割り振りが行われるからである。
読出しI/Oリクエストに関しては、典型的に、各ファイル・システムが、特定の最新状況(recency)ベースのアルゴリズムに従うバッファ・キャッシュを有するので、ヒントは、読出しI/Oリクエストに関連するデータには直ちにアクセスされないことを示す情報を含む。従って、読出しI/Oリクエストはコールドであると見なされる。
図5は、I/Oリクエストおよびアプリケーション・ヒントに関するフロー図を示し、このフロー図で示す処理は、ステップ501〜506で示すステップの幾つか又は全てを含む。図5に示すように、フィルタ・ドライバ(例えば、300)は、カーネル空間120のファイル・システム128の層とブロック層130との間に配置される。フィルタ・ドライバは、外部ヒント・エンジン(例えば、560や260)を含むか、または内包するか、または外部ヒント・エンジンと関連付けられる。ユーザ空間110のデータベース/ユーザ・アプリケーション層(例えば、112)は、1以上のデータベース(例えば、514)、1以上のアプリケーション(例えば、516)、および1以上のAPI(アプリケーション・プログラミング・インターフェース)ライブラリ(例えば、512)を含む。
ステップ501は、アプリケーションまたはデータベースがI/Oリクエストを送信するためにAPIライブラリ512を用いる(例えば、アクセスしたり、インターフェースしたりする)ことを含む。更には、幾つかのデータベースは、ブロック構造の既存の知識を用いて構成され、そのブロック構造の既存の知識を持つデータベースが、ブロック層(例えば、130)とダイレクトI/Oを実行するように構成されるようにする。他のデータベースは、ブロック構造の既存の知識を有さない。他方、アプリケーションは、典型的には、ブロック構造の既存の知識を有さない。
ステップ502において、1以上のI/Oコントロール(ioctl)コールが、ドライバ(例えば、フィルタ・ドライバ(例えば、300)やストレージ・システム・ドライバ(例えば、142))へ送られる。I/Oコントロール・コールは、デバイス固有I/O処理のためのシステム・コールであり得る。例えば、I/OコントロールまたはI/Oコントロール・インターフェースは、ユーザ空間(例えば、110)がデバイス・ドライバ(例えば、ストレージ・システム・ドライバ142やフィルタ・ドライバ300)と通信するために用いられる1つのシステム・コールを含む。更に、I/Oコントロールを介してデバイス・ドライバへ送られたリクエストは、I/Oコントロール・システム・コールに対して向けられたものであり、I/Oコントロール・システム・コールは、デバイスに対するハンドルとリクエスト番号とを含む。
ステップ503において、フィルタ・ドライバ(例えば、300)またはフィルタ・ドライバの外部ヒント・エンジン(例えば、560や260)は、I/Oコントロールを処理する。また、外部ヒント・エンジン(例えば、560や260)は、I/Oコントロール自体を記憶するか、またはI/Oコントロールの処理から得た情報を記憶する。I/Oコントロールと関連する情報は、後の使用のために記憶される。例えば、I/Oコントロールと関連する情報は、後の使用のためにハッシュ・テーブル(例えば、510や410)に記憶される。
ステップ504において、フィルタ・ドライバ(例えば、300)またはフィルタ・ドライバ(例えば、300)の外部ヒント・エンジン(例えば、560や260)は、I/Oリクエストを受信する。I/Oリクエストの受信に応じて、またはI/Oリクエストを受信したときに、外部ヒント・エンジン(例えば、560や260)は、ユーザにより提供された情報をルックアップするか又はその情報にアクセスする。次に、外部ヒント・エンジン(例えば、560や260)は、そのユーザ提供情報を分析して、1以上のヒント(例えば、アプリケーション駆動ヒント)を生成する。外部ヒント・エンジン(例えば、560や260)は、生成された1以上のヒントをハッシュ・テーブル(例えば、510や410)に記憶する。
ステップ505において、外部ヒント・エンジン(例えば、560や260)は、ファイル・システムのヒント機構に対しフォールバック処理(fallback)を行うか否かを決定する。外部ヒント・エンジン(例えば、560や260)が、受信したユーザ提供情報が不十分(例えば、ユーザにより提供された情報が無い場合や、提供された情報が非常に少ない場合など)なのでヒントを生成することができないと判断した場合、外部ヒント・エンジン(例えば、560や260)は、ヒント・エンジンに、特定のI/Oリクエスト(ioctl)と関連するファイル・システム・ヒント機構(例えば、ファイル・システム・ヒントを生成するように構成されたフィルタ・ドライバの内部ヒント・エンジン)に対しフォールバック処理を行うことを決定する。同様に、外部ヒント・エンジン(例えば、560や260)は、ユーザ提供情報からヒントを生成できる場合や、適切なまたは関連するファイル・システム・ヒント機構が無い場合、ファイル・システム・ヒント機構にフォールバック処理を行わないことを決定する。更に、外部ヒント・エンジンは、ユーザ提供情報から生成されたヒントの有用性が比較的低いと決定または判定することができ、その場合、ユーザ提供情報から生成されたヒントを、ファイル・システム・ヒント機構により生成されたファイル・システム・ヒントを用いて補足または増強することを決定することができる。幾つかの実施形態では、可能であれば(例えば、ファイル・システム・ヒントと、関連するアプリケーション駆動ヒントとが存在する場合)、外部ヒント・エンジンは、常にまたはほぼ常に、ユーザ提供情報から生成されたヒントを、ファイル・システム・ヒント機構により生成されたファイル・システム・ヒントを用いて補足または増強することを選択する。他の実施形態では、外部ヒント・エンジンは、特定のファイル・システム・ヒントが特定のアプリケーション駆動ヒントの価値や有用性に寄与する場合又は特定のアプリケーション駆動ヒントに価値や有用性を付加する場合のみ、補足または増強することを選択する。
ステップ506において、ヒントを、ストレージ・システム・ドライバへ送る又は渡す。フィルタ・ドライバ、またはフィルタ・ドライバの外部ヒント・エンジン、またはフィルタ・ドライバの通信コンポーネントは、生成されたヒントを、ストレージ・システム・ドライバ(例えば、142)、またはストレージ・コントローラ(例えば、152)、またはストレージ・システム(例えば、150)へ、SCSI層を通じて送るまたは渡す。
更に図5を参照する。フィルタ・ドライバ(例えば、300)、またはフィルタ・ドライバ(例えば、300)の外部ヒント・エンジン(例えば、560や260)は、ハッシュ・テーブル(例えば、510や410)を含む。フィルタ・ドライバ(例えば、300)、またはフィルタ・ドライバ(例えば、300)の外部ヒント・エンジン(例えば、560や260)は、LBA(論理ブロック・アドレス)に対して、生成されたヒント(例えば、ファイル・システム・ヒント)を記憶するようにハッシュ・テーブル(例えば、510や410)を維持する。生成されたヒントは、生成されたときにハッシュ・テーブル(例えば、510や410)に記憶される。ハッシュ・テーブル(例えば、510や410)のエントリは、外部ヒント・エンジンが、ハッシュ・テーブル内の既存のエントリと関連する更なるヒントを生成したときに、または更なる情報を得たときに、更新される。
幾つかの特定アプリケーション・ヒント(アプリケーションに特定のヒント)は、特定のファイルをホットまたはコールドと定めることや、ブロックを通じてアプリケーションのホットなデータを定めることや、実際のI/Oの前にコンテキストを設定または設定解除することに関連する情報を含む。
特定のファイルをホットまたはコールドと定めることに関して、APIは、含まれるデータがホットまたはコールドであるファイル名または特定の拡張部(エクステンション)を持つファイル名を取得する。特定アプリケーション・メタデータ(アプリケーションに特定のメタデータ)を定義することは非常に有用である。パス名は、ヒンティングのためにiノード番号へと変換できる。
ブロックを通じてのアプリケーションのホットなデータを定めることに関して、APIは、ホットまたはコールドのデータとして記述することができる1つの範囲のブロックを取得する。ブロックを通じてアプリケーションのホットなデータを定めることは、アプリケーションがブロックの知識を有することが重要な場合において有用である。ヒンティングは、一組のブロック番号を含むことができる。
実際のI/Oの前にコンテキストを設定または設定解除することに関して、コンテキストを設定/設定解除することは、後に来るI/Oがホットまたはコールドであることを言及し得る。これは、データを記憶する際に、スタンドアローン・アプリケーションからなるアプリケーションに関して有用であり、また、I/Oの前にユーザがそのデータの重要度を定義するときに有用である。ヒンティングは、少なくとも1つのプロセス識別番号を含むことができる。
更に、ファイル・システム・ヒント(例えば、上記のファイル・システム・ヒント)は、アプリケーション駆動のヒンティングと関連して使用でき、また、アプリケーション駆動のヒンティングの有効性を向上させるために使用できる。アプリケーション駆動のヒンティングは、アプリケーションに急造されるヒンティングを含む。このアプリケーション急造ヒンティング(application improvised hinting)は、1以上のAPIを露出させること、およびファイル・システム・ヒントから導出された情報を組み込むためにデフォルトのヒンティング機構をオーバーライドすることを含む。アプリケーション急造ヒンティングは、ファイル・システム・ヒントの受信や、ファイル・システム・ヒントへのアクセスや、ファイル・システム・ヒントを含むハッシュ・テーブルへのアクセスを通じて、実施できる。アプリケーション急造ヒンティングは、ファイル・システム・ヒントを含むハッシュ・テーブルへのアクセス、およびファイル・システム・ヒントに基づく1以上のアプリケーション駆動ヒントの生成を含む。
図6および図7は、ヒントをヒンティング・フィルタ・ドライバ610からストレージ・システム150へ通信するための幾つかの方法を示すフロー図を示す。図6および図7は、ヒンティング・フィルタ・ドライバ610、ブロック層130、およびブロック層130からSCSI層140へのリクエスト132(複数のLBAを含む)を示す。ヒンティング・フィルタ・ドライバ610は、前述のフィルタ・ドライバ(例えば、300)の機能またはフィルタ・ドライバ自体を含む。ヒンティング・フィルタ・ドライバ610は、ブロック層130の上に存在することができる。ヒンティング・フィルタ・ドライバは、内部ヒント・エンジンや外部ヒント・エンジン(例えば、560や260)などのような1以上のヒント・エンジンの機能を含むか、ヒント・エンジンを内包するか、ヒント・エンジンにより構成されるか、またはヒント・エンジンと関連する。
図6および図7において、ヒンティング・フィルタ・ドライバ610は、内部入力や外部入力からヒントを生成するときに用いられる情報を受信する。例えば、内部入力は、ファイル・システムから受信したI/Oリクエストを含み、内部入力は、内部ヒント・エンジンを用いてのファイル・システム・ヒントの生成において使用される。また、例えば、外部入力は、ユーザ空間のデータベースまたはアプリケーションから受信したI/Oコントロール(ioctl)を含み、外部入力は、外部ヒント・エンジンを用いてのアプリケーション駆動ヒントの生成において使用される。
図6は、ヒントをヒンティング・フィルタ・ドライバ610からストレージ・システム150へ通信する第1手法を示す。第1手法では、ヒンティング・フィルタ・ドライバ610は、1以上のヒントを、1以上のブロックの1以上の存在する不使用のフィールドへ添付し、次に、ヒントおよびブロックを共にしてI/Oリクエスト(例えば、書込みリクエスト)の一部とし、ストレージ・システム・ドライバ142や、ストレージ・コントローラ152や、ストレージ・システム150へ、SCSI層140を介して通信する。例えば、ファイル・システム・ヒントは、ストレージ・システム・ドライバへ送られるブロックの不使用フィールドに添付されることにより、ヒンティング・フィルタ・ドライバ610からストレージ・システム・ドライバ(例えば、142)へ渡される。次に、ストレージ・システム・ドライバは、I/Oリクエストの一部としてブロックの不使用フィールドに添付されたヒントを受信する。次に、ストレージ・システム・ドライバ142は、ヒントをI/Oフレームのフィールドに添付し、ヒントの添付されたI/Oフレームをストレージ・コントローラ152やストレージ・システム150へ渡す。本発明の幾つかの実施形態では、ストレージ・システム・ドライバ142は、メッセージ・パッシング・テクノロジ(MPT、message passing technology)を用いて通信するように構成されたストレージ・ドライバを含む。第1手法の利点は、ヒントがデータと共にあることである。
ヒンティング・フィルタ・ドライバから特定のヒントを通信することを実施するにあたり、幾つかの実施形態は、第1手法を変更したものや、第1手法をハイブリッド化したものや、第1手法の代替的なものを含む。例えば、特定のヒントの通信のための幾つかの実施形態は、ヒントを関連させるべきリクエストのブロックが、不使用フィールドを有さない場合や、適切なサイズの不使用フィールドを有さない場合には、ヒントを、後のリクエストにおけるブロックの不使用フィールドへ添付することを含む。I/Oリクエストが、不使用フィールドを有さない場合や、適切なサイズ(容量)の不使用フィールドを有さない場合、ヒントは、ストレージ・レベルへ、後のリクエストを用いて渡されるか、または後続のI/Oリクエストの不使用フィールドを用いて渡される。ヒントが後続のメッセージとして渡されるとき、またはヒントが後続のI/Oリクエストの不使用フィールド内に配されるとき、ヒントが関連するオフセット・インジケータを含むか、またはヒントにオフセット・インジケータが付随する。オフセット・インジケータは、ヒントの関連する読出しI/Oリクエストと、ヒントの関連する実際の読出しI/Oリクエストからヒントをオフセットさせた(ずらせた)時間量またはI/Oリクエスト数とのうちの少なくとも1つを示す。次に、ストレージ・システムまたはストレージ・コントローラは、I/Oリクエストおよび関連するヒント(1以上)またはヒントの一部を受信したときに、後続の分離されていたヒントを、組立、結合、または関連させて適切なI/Oリクエストの形にする。
図7は、ヒントをヒンティング・フィルタ・ドライバ610からストレージ・システム150へ通信する第2手法を示す。第2手法では、ヒンティング・フィルタ・ドライバは、I/Oリクエストとヒントとを分離してストレージ・システム・ドライバ142やストレージ・コントローラ152やストレージ・システム150へ送信する。幾つかの実施形態では、ヒンティング・フィルタ・ドライバは、I/Oリクエストをストレージ・レベルへ送信し、次に、ヒンティング・フィルタ・ドライバは、I/Oリクエストと関連するヒントに関してのストレージ・レベルからのリクエストを受信するのを待ち、次に、ヒンティング・フィルタ・ドライバは、ストレージ・レベルからヒント・リクエストを受信すると、ヒントをストレージ・レベルへ送信する。即ち、ヒンティング・フィルタ・ドライバ610は、ストレージ・システム・ドライバ142やストレージ・コントローラ152やストレージ・システム150から要求された場合に、ヒントを、ストレージ・システム・ドライバ142やストレージ・コントローラ152やストレージ・システム150へ、SCSI層140を介して送信する。従って、ストレージ・システム・ドライバ142は、I/Oリクエストを受信するように構成され、また、ヒンティング・フィルタ・ドライバ610へヒントを要求するためのコールを送信するように構成される。ヒントおよび関連するI/Oリクエストを受信すると、ストレージ・システム・ドライバ142は、ヒントをI/Oフレームのフィールドに添付し、ヒントの添付されたI/Oフレームをストレージ・コントローラ152やストレージ・システム150へ渡す。幾つかの実施形態では、ストレージ・システム・ドライバ142は、MPTの1つのバージョンのものを用いて通信するように構成されたストレージ・ドライバを含む。第2手法は、不使用または余分なフィールドを有するI/Oリクエストのブロックに依存する必要がない。
図8は、ヒント処理と関連するフローチャートを示す。ヒント処理は、ストレージ・レベルで、ハードウェアやファームウェアやソフトウェアにより行われるものであり、ヒント処理用のコンポーネントやモジュール、例えば、ストレージ・システム・ドライバ142やストレージ・コントローラ152やストレージ・システム150などにより行われる。好適な実施形態では、ヒント処理は、ストレージ・コントローラ152のファームウェアにより行われる。ヒント処理においてヒントを受信すると、ヒント処理用コンポーネントは、ヒントを処理するために方法800を行う。方法800は、ステップ810、820、830、831、840、841、850、851、および860の幾つかまたは全てを含むように構成できる。
ステップ810は、ヒント処理用のコンポーネントまたはモジュールが、ヒントを処理すべきか無視すべきかについての検査および/または判定を行うことを含む。ヒント処理用のコンポーネントまたはモジュールが、ヒントを無視せずに処理すべきであると判断した場合、処理はステップ820へ進む。ヒント処理用のコンポーネントまたはモジュールが、ヒントを無視すべきであると判断した場合、処理はステップ860へ進み、通常のI/Oリクエスト・ストレージ・アルゴリズムを行う。
ステップ820は、特定のヒントの重要性または「ホット度合い」を判定するために、そのヒントを見るまたは分析することを含み、ヒント処理用のコンポーネントまたはモジュールは、ステップ830、831、840、841、850、および851の少なくとも1つを通じて、または図8に示していない重要性または「ホット度合い」の更なる判定手法を通じて、特定のヒントに対するヒート・マップ・インデックス値を設定することができる。
ステップ830において、ヒント処理用のコンポーネントまたはモジュールが、特定のヒントが非常に重要であると判定した場合、即ち、「非常にホット」であると判定した場合、ステップ831において、ヒント処理用のコンポーネントまたはモジュールは、特定のヒート・インデックス値を非常に大きい数に設定し、その特定のヒントと関連する1以上のブロックを配置し、その特定のヒントと関連する1以上のブロックを結び付ける(pin)。
ステップ840において、ヒント処理用のコンポーネントまたはモジュールが、特定のヒントが重要である、即ち、「ホット」であると判定した場合、ステップ841において、ヒント処理用のコンポーネントまたはモジュールは、特定のヒート・インデックス値を程々に大きい数に設定し、その特定のヒントと関連する1以上のブロックを固定する。
ステップ850において、ヒント処理用のコンポーネントまたはモジュールが、特定のヒントがあまり重要ではないと判定した場合、即ち、「コールド」であると判定した場合、ステップ851において、ヒント処理用のコンポーネントまたはモジュールは、特定のヒート・インデックス値を非常に小さい数に設定し、その特定のヒントと関連する1以上のブロックを、速度の低いストレージ位置(低速のストレージ・デバイス)に配置する。
ステップ830、831、840、841、850、および851は例示であり、特定のヒート・インデックス値は、任意の範囲の整数または非整数の値に設定することができる。
ステップ830、831、840、841、850、および851の少なくとも1つを完了した後、処理はステップ860へ進み、通常のI/Oリクエスト・ストレージ・アルゴリズムを行う。
図9は、ヒントの生成および通信に関連する実施形態の方法900を示す。実施形態である方法900は、フィルタ・ドライバや、計算デバイス(例えば、フィルタ・ドライバのプロセッサ)で実行されるソフトウェアやファームウェアや、ヒント・エンジンや、他の計算デバイスや、他のコンピュータ・コンポーネントにより、または他のソフトウェアやファームウェアやミドルウェアにより、行われることを意図されたものである。方法900は、ステップ910、920、930、940、950、960、および970の幾つかまたは全てを含むことができ、また、発明の詳細な説明の中で説明したステップを更に含むこともできるが、それに関してはこの段落で明示しない。更に、方法900のステップは、同時にまたは非シーケンシャルな順に行うこともできる。方法900はステップ910を含み、ステップ910は、ファイル・システム層からI/Oリクエストを受信することを含む。方法900はステップ920を含み、ステップ920は、ファイル・システム・コンテキスト情報に関してI/Oリクエストを検査することを含む。ファイル・システム・コンテキスト情報に関してI/Oリクエストを検査することは、ファイル・システム・コンテキスト情報に関して、I/Oリクエストの少なくとも1つのブロックのフラグ、状態(例えば、iノードの状態(ステート))、およびフィールド(iノードのフィールド)のうちの少なくとも1つを検査することを含む。方法900はステップ930を含み、ステップ930は、ファイル・システム・コンテキスト情報の属性を判定するためにファイル・システム層へアクセスすることを含む。方法900はステップ940を含み、ステップ940は、ファイル・システム層からファイル・システム・コンテキスト情報の属性を受信することを含む。方法900はステップ950を含み、ステップ950は、ファイル・システム・コンテキスト情報の属性を分析することを含む。方法900はステップ960を含み、ステップ960は、ファイル・システム・コンテキスト情報の属性の分析に基づいて少なくとも1つのヒントを生成することを含む。少なくとも1つのヒントは、I/Oリクエストのデータが相対的に高速の記録媒体に記憶されるべきかまたは相対的に低速の記録媒体に記憶されるべきかを決定するための、I/Oリクエストのデータの相対的な重要度を示す。方法900はステップ970を含み、ステップ970は、少なくとも1つのヒントを低位レベルのストレージ・タイヤへ送信することを含む。また、方法は、アプリケーションから渡されるデータの重み付けを提供する機構を使用することを含む。
本発明および本発明による利点は上記の説明が理解できる。更には、本発明の精神および範囲から外れることなく、また、本発明の本質的な利点を犠牲にすることなく、本発明のコンポーネントの形態、構成、および配置における様々な変更が可能であることは明らかである。上記の説明における形態は、本発明の例示的な実施形態であり、特許請求の範囲に記載した発明は、様々な変更がなされた形態のものも含まれることを意図している。

Claims (20)

  1. ファイル・システム・ヒントを生成および通信する方法であって、
    ファイル・システム層からI/Oリクエストを受信するステップと、
    前記I/Oリクエストを、ファイル・システム・コンテキスト情報に関して検査するステップと、
    前記ファイル・システム・コンテキスト情報の属性を判別するためにファイル・システム層へアクセスするステップと、
    前記ファイル・システム層から前記ファイル・システム・コンテキスト情報の前記属性を受信するステップと、
    前記ファイル・システム・コンテキスト情報の前記属性の属性を分析するステップと、
    前記ファイル・システム・コンテキスト情報の前記属性の分析に基づいて少なくとも1つのヒントを生成するステップであって、前記少なくとも1つのヒントは、前記ヒントと関連するI/Oリクエスト・データの相対的な重要度を示し、前記少なくとも1つのヒントは、相対的に重要なI/Oリクエスト・データを相対的に高速の記録媒体へ記録することを指示するために使用されるように構成されるものである、ヒントを生成するステップと、
    前記少なくとも1つのヒントを低位レベルのストレージ・タイヤへ送信するステップ
    とを備える方法。
  2. 請求項1に記載の方法であって、前記ファイル・システム・コンテキスト情報は、ファイル・システム・メタデータと、ファイル・システム・アクセス・パターンと、ファイル・システムiノード(インデックス・ノード)と、ファイル・システムvノード(仮想インデックス・ノード)と、ファイル・システム・スーパー・ブロックと、ジャーナリング・ファイル・システムのトランザクション・ログと、グループ記述子テーブルと、ブロック・ビットマップと、iノード・ビットマップと、iノード・テーブルと、iノード・メタファイルとのうちの少なくとも1つを含む、方法。
  3. 請求項1に記載の方法であって、前記ファイル・システム・コンテキスト情報は少なくともファイル・システム・スーパー・ブロックを含む、方法。
  4. 請求項1に記載の方法であって、前記ファイル・システム・コンテキスト情報は少なくともファイル・システム・メタデータを含む、方法。
  5. 請求項1に記載の方法であって、前記ファイル・システム・コンテキスト情報は、ファイル・システムiノード(インデックス・ノード)とファイル・システムvノード(仮想インデックス・ノード)とのうちの少なくとも1つを含む、方法。
  6. 請求項5に記載の方法であって、前記I/Oリクエストを、ファイル・システム・コンテキスト情報に関して検査する前記ステップは、
    前記I/Oリクエストの少なくとも1つのブロックのフィールドと、フラグと、状態とのうちの少なくとも1つを、ファイル・システム・コンテキスト情報に関して検査するステップ
    を更に備える、方法。
  7. 請求項5に記載の方法であって、前記I/Oリクエストを、ファイル・システム・コンテキスト情報に関して検査する前記ステップは、
    前記I/Oリクエストの少なくとも1つのブロックがスーパー・ブロックを含むか否かを検査するステップ
    を更に備える、方法。
  8. 請求項5に記載の方法であって、前記I/Oリクエストを、ファイル・システム・コンテキスト情報に関して検査する前記ステップは、
    前記ファイル・システムiノードおよび前記ファイル・システムvノードが、それぞれ、メタiノード(メタ−インデックス・ノード)およびメタvノード(メタ−仮想インデックス・ノード)であるかを検査するステップ
    を更に備える、方法。
  9. 請求項1に記載の方法であって、ファイル・システム層からI/Oリクエストを受信する前記ステップは、
    前記ファイル・システム層のバッファ・キャッシュから、またはファイル・システムiノード(インデックス・ノード)・キャッシュから、I/Oリクエストを受信するステップであって、この受信は前記ファイル・システム層とブロック層との間で行われるものである、ステップ
    を更に備える、方法。
  10. 請求項1に記載の方法であって、
    前記I/Oリクエストと関連する少なくとも1つの論理ブロック・アドレスに対して、前記少なくとも1つのヒントをハッシュ・テーブルに記憶するステップ
    を更に備える方法。
  11. 請求項1に記載の方法であって、前記低位レベルのストレージ・タイヤは、低位レベルのストレージ・ドライバと、低位レベルのストレージ・コントローラと、低位レベルのストレージ・システムとのうちの少なくとも1つを含む、方法。
  12. 請求項1に記載の方法であって、前記少なくとも1つのヒントを低位レベルのストレージ・タイヤへ送信する前記ステップは、
    前記少なくとも1つのヒントを、前記I/Oリクエストの少なくとも1つのブロックの少なくとも1つの不使用フィールドへ添付するステップと、
    前記I/Oリクエストを前記低位レベルのストレージ・タイヤへ送信するステップと
    を更に備える、方法。
  13. 請求項1に記載の方法であって、
    前記I/Oリクエストを低位レベルのストレージ・タイヤへ送信するステップと、
    前記少なくとも1つのヒントを要求するリクエストを前記低位レベルのストレージ・タイヤから受信するステップと
    を更に備え、
    前記少なくとも1つのヒントを低位レベルのストレージ・タイヤへ送信する前記ステップは、
    前記少なくとも1つのヒントを要求するリクエストを前記低位レベルのストレージ・タイヤから受信したときに、前記少なくとも1つのヒントを低位レベルのストレージ・タイヤへ送信するステップ
    を更に備える、方法。
  14. ファイル・システム・ヒントを生成および通信するために、システム・トポロジへ付加されるように構成された装置であって、
    システム・トポロジのファイル・システム層、ブロック層、および低位レベルのストレージ・タイヤと通信するように構成されたフィルタ・ドライバ
    を備え、
    前記フィルタ・ドライバは、ヒント・エンジンおよび通信コンポーネントを備え、前記フィルタ・ドライバは、少なくとも、
    前記ファイル・システム層からI/Oリクエストを受信し、
    前記I/Oリクエストをファイル・システム・コンテキスト情報に関して検査し、
    前記ファイル・システム・コンテキスト情報の属性を判別するために前記ファイル・システム層へアクセスし、
    前記ファイル・システム層から、前記ファイル・システム・コンテキスト情報の前記属性を受信し、
    前記ファイル・システム・コンテキスト情報の前記属性を分析し、
    前記ファイル・システム・コンテキスト情報の前記属性の分析に基づいて少なくとも1つのヒントを生成し、
    前記少なくとも1つのヒントを低位レベルのストレージ・タイヤへ送信する
    ようにさらに構成され、
    前記少なくとも1つのヒントは、前記ヒントと関連するI/Oリクエスト・データの相対的な重要度を示し、前記少なくとも1つのヒントは、相対的に重要なI/Oリクエスト・データを相対的に高速の記録媒体へ記録することを指示するために使用されるように構成されるものである、
    装置。
  15. 請求項14に記載の装置であって、前記ファイル・システム・コンテキスト情報は、ファイル・システムiノード(インデックス・ノード)とファイル・システムvノード(仮想インデックス・ノード)とのうちの少なくとも1つを含み、前記フィルタ・ドライバは更に、
    前記I/Oリクエストの少なくとも1つのブロックのフィールドと、フラグと、状態とのうちの少なくとも1つを、ファイル・システム・コンテキスト情報に関して検査し、
    前記I/Oリクエストの前記少なくとも1つのブロックがスーパー・ブロックを含むか否かを検査し、
    前記ファイル・システムiノードおよび前記ファイル・システムvノードが、それぞれ、メタiノード(メタ−インデックス・ノード)およびメタvノード(メタ−仮想インデックス・ノード)であるかを検査する
    ように構成される、
    装置。
  16. 請求項14に記載の装置であって、前記フィルタ・ドライバは更に、
    前記少なくとも1つのヒントを、前記I/Oリクエストの少なくとも1つのブロックの少なくとも1つの不使用フィールドへ添付し、
    前記少なくとも1つのヒントを添付した前記I/Oリクエストを前記低位レベルのストレージ・タイヤへ送信する
    ように構成される、
    装置。
  17. 請求項14に記載の装置であって、前記低位レベルのストレージ・タイヤは、低位レベルのストレージ・ドライバと、低位レベルのストレージ・コントローラと、低位レベルのストレージ・システムとのうちの少なくとも1つを含む、装置。
  18. ファイル・システム・ヒントの生成および通信の方法をコンピュータ・デバイスに行わせるためのコンピュータ・コードを記録するコンピュータ読取可能な記録媒体であって、
    前記コンピュータ・コードは、
    ファイル・システム層からI/Oリクエストを受信する動作と、
    前記I/Oリクエストを、ファイル・システム・コンテキスト情報に関して検査する動作と、
    前記ファイル・システム・コンテキスト情報の属性を判別するために前記ファイル・システム層へアクセスする動作と、
    前記ファイル・システム層から、前記ファイル・システム・コンテキスト情報の前記属性を受信する動作と、
    前記ファイル・システム・コンテキスト情報の前記属性を分析する動作と、
    前記ファイル・システム・コンテキスト情報の前記属性の分析に基づいて少なくとも1つのヒントを生成する動作と、
    前記少なくとも1つのヒントを低位レベルのストレージ・タイヤへ送信する動作と
    をコンピュータ・デバイスに行わせるものであり、
    前記少なくとも1つのヒントは、前記ヒントと関連するI/Oリクエスト・データの相対的な重要度を示し、前記少なくとも1つのヒントは、相対的に重要なI/Oリクエスト・データを相対的に高速の記録媒体へ記録することを指示するために使用されるように構成されるものである、
    記録媒体。
  19. 請求項18に記載の記録媒体であって、
    前記ファイル・システム・コンテキスト情報は、ファイル・システムiノード(インデックス・ノード)とファイル・システムvノード(仮想インデックス・ノード)とのうちの少なくとも1つを含み、
    前記I/Oリクエストを、ファイル・システム・コンテキスト情報に関して検査する前記動作は更に、
    前記I/Oリクエストの少なくとも1つのブロックのフィールドと、フラグと、状態とのうちの少なくとも1つを、ファイル・システム・コンテキスト情報に関して検査する動作と、
    前記I/Oリクエストの前記少なくとも1つのブロックがスーパー・ブロックを含むか否かを検査する動作と、
    前記ファイル・システムiノードおよび前記ファイル・システムvノードが、それぞれ、メタiノード(メタ−インデックス・ノード)およびメタvノード(メタ−仮想インデックス・ノード)であるかを検査する動作と
    を含む、
    記録媒体。
  20. 請求項18に記載の記録媒体であって、前記少なくとも1つのヒントを低位レベルのストレージ・タイヤへ送信する前記動作は、
    前記少なくとも1つのヒントを、前記I/Oリクエストの少なくとも1つのブロックの少なくとも1つの不使用フィールドへ添付する動作と、
    前記I/Oリクエストを前記低位レベルのストレージ・タイヤへ送信する動作と
    を更に備える、記録媒体。
JP2013061970A 2012-03-29 2013-03-25 ファイル・システム・ヒンティング Expired - Fee Related JP5710673B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/433,851 US8825724B2 (en) 2012-03-29 2012-03-29 File system hinting
US13/433,851 2012-03-29

Publications (2)

Publication Number Publication Date
JP2013206467A true JP2013206467A (ja) 2013-10-07
JP5710673B2 JP5710673B2 (ja) 2015-04-30

Family

ID=47900802

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013061970A Expired - Fee Related JP5710673B2 (ja) 2012-03-29 2013-03-25 ファイル・システム・ヒンティング

Country Status (6)

Country Link
US (1) US8825724B2 (ja)
EP (1) EP2645260B1 (ja)
JP (1) JP5710673B2 (ja)
KR (1) KR101445481B1 (ja)
CN (1) CN103365944B (ja)
TW (1) TWI456418B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016051593A1 (ja) * 2014-10-03 2016-04-07 株式会社日立製作所 計算機システム
US10235071B2 (en) 2016-11-29 2019-03-19 Kabushiki Kaisha Toshiba Tiered storage system, storage controller and tiering control method

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140069659A (ko) * 2012-11-29 2014-06-10 성균관대학교산학협력단 플래시 메모리용 파일 시스템
US9063861B1 (en) * 2012-12-27 2015-06-23 Emc Corporation Host based hints
US9792295B1 (en) 2013-02-06 2017-10-17 Quantcast Corporation Distributing data of multiple logically independent file systems in distributed storage systems including physically partitioned disks
US10013344B2 (en) 2014-01-14 2018-07-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Enhanced SSD caching
US9378152B2 (en) * 2014-05-09 2016-06-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for I/O processing using out-of-band hinting to block driver or storage controller
US9507722B2 (en) 2014-06-05 2016-11-29 Sandisk Technologies Llc Methods, systems, and computer readable media for solid state drive caching across a host bus
US9563382B2 (en) 2014-06-05 2017-02-07 Sandisk Technologies Llc Methods, systems, and computer readable media for providing flexible host memory buffer
US10007442B2 (en) * 2014-08-20 2018-06-26 Sandisk Technologies Llc Methods, systems, and computer readable media for automatically deriving hints from accesses to a storage device and from file system metadata and for optimizing utilization of the storage device based on the hints
US10268584B2 (en) 2014-08-20 2019-04-23 Sandisk Technologies Llc Adaptive host memory buffer (HMB) caching using unassisted hinting
US10228854B2 (en) * 2014-08-20 2019-03-12 Sandisk Technologies Llc Storage devices and methods for optimizing use of storage devices based on storage device parsing of file system metadata in host write operations
US20170308542A1 (en) * 2014-11-01 2017-10-26 Hewlett Packard Enterprise Development Lp File system configuration data storage
US9600181B2 (en) 2015-03-11 2017-03-21 Microsoft Technology Licensing, Llc Live configurable storage
US10282324B2 (en) 2015-07-13 2019-05-07 Samsung Electronics Co., Ltd. Smart I/O stream detection based on multiple attributes
US11461010B2 (en) 2015-07-13 2022-10-04 Samsung Electronics Co., Ltd. Data property-based data placement in a nonvolatile memory device
US20170153842A1 (en) * 2015-12-01 2017-06-01 HGST Netherlands B.V. Data allocation in hard drives
US9927997B2 (en) 2015-12-21 2018-03-27 Sandisk Technologies Llc Methods, systems, and computer readable media for automatically and selectively enabling burst mode operation in a storage device
KR102505855B1 (ko) * 2016-01-11 2023-03-03 삼성전자 주식회사 가중치 기반 멀티-큐 가능 리소스 공유 방법
US10168917B2 (en) * 2016-04-05 2019-01-01 International Business Machines Corporation Hotness based data storage for facilitating garbage collection
US10521118B2 (en) 2016-07-13 2019-12-31 Sandisk Technologies Llc Methods, systems, and computer readable media for write classification and aggregation using host memory buffer (HMB)
KR102441997B1 (ko) * 2017-11-01 2022-09-08 한국전자통신연구원 네트워크에서 메타데이터의 동기화를 제어하는 장치 및 그 방법
CN108062357B (zh) * 2017-11-28 2020-09-08 厦门市美亚柏科信息股份有限公司 F2fs文件系统的删除文件恢复方法及存储介质
US10572159B1 (en) 2018-03-22 2020-02-25 Amazon Technologies, Inc. Smart data storage tiers for data object transitioning
US11966359B1 (en) * 2018-03-22 2024-04-23 Amazon Technologies, Inc. Automated tier-based transitioning for data objects
US10884920B2 (en) * 2018-08-14 2021-01-05 Western Digital Technologies, Inc. Metadata-based operations for use with solid state devices
US11249664B2 (en) 2018-10-09 2022-02-15 Western Digital Technologies, Inc. File system metadata decoding for optimizing flash translation layer operations
US11340810B2 (en) 2018-10-09 2022-05-24 Western Digital Technologies, Inc. Optimizing data storage device operation by grouping logical block addresses and/or physical block addresses using hints
KR20200076531A (ko) * 2018-12-19 2020-06-29 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11704057B2 (en) * 2020-07-20 2023-07-18 Micron Technology, Inc. Memory sub-systems including memory devices of various latencies and capacities

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007079774A (ja) * 2005-09-13 2007-03-29 Hitachi Ltd ファイルシステムの構築方法
JP2010108341A (ja) * 2008-10-31 2010-05-13 Hitachi Ltd 階層型ストレージシステム
JP2011081467A (ja) * 2009-10-05 2011-04-21 Hitachi Ltd 記憶装置のデータ移行制御方法
US20110313976A1 (en) * 2010-06-22 2011-12-22 Oracle International Corporation Method and system for partial shadow migration

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6381674B2 (en) 1997-09-30 2002-04-30 Lsi Logic Corporation Method and apparatus for providing centralized intelligent cache between multiple data controlling elements
US6219693B1 (en) * 1997-11-04 2001-04-17 Adaptec, Inc. File array storage architecture having file system distributed across a data processing platform
US6728840B1 (en) 2000-10-20 2004-04-27 Emc Corporation Methods and apparatus for providing host controlled caching of data in a storage system
US6993520B2 (en) * 2002-01-15 2006-01-31 International Business Machines Corporation Integrated content management and block layout technique
US8516114B2 (en) 2002-03-29 2013-08-20 International Business Machines Corporation Method and apparatus for content pre-fetching and preparation
US8140860B2 (en) 2003-12-15 2012-03-20 International Business Machines Corporation Policy-driven file system with integrated RAID functionality
US7631148B2 (en) * 2004-01-08 2009-12-08 Netapp, Inc. Adaptive file readahead based on multiple factors
US7337273B2 (en) 2004-03-31 2008-02-26 Microsoft Corporation Strategies for reading information from a mass storage medium using a cache memory
WO2006082592A1 (en) 2005-02-04 2006-08-10 Hewlett-Packard Development Company, L.P. Data processing system and method
ATE512412T1 (de) * 2005-04-25 2011-06-15 Network Appliance Inc System und verfahren zum zwischenspeichern von netzwerkdateisystemen
US7676630B2 (en) 2006-10-05 2010-03-09 Sun Microsystems, Inc. Method and apparatus for using a determined file access pattern to perform caching in a file system
US7853759B2 (en) * 2007-04-23 2010-12-14 Microsoft Corporation Hints model for optimization of storage devices connected to host and write optimization schema for storage devices
US20090070300A1 (en) * 2007-09-07 2009-03-12 International Business Machines Corporation Method for Processing Data Queries
JP5187017B2 (ja) 2008-06-18 2013-04-24 富士通株式会社 分散ディスクキャッシュシステム及び分散ディスクキャッシュ方法
US20100199036A1 (en) * 2009-02-02 2010-08-05 Atrato, Inc. Systems and methods for block-level management of tiered storage
US8290994B2 (en) * 2010-05-05 2012-10-16 International Business Machines Corporation Obtaining file system view in block-level data storage systems
US8381213B1 (en) * 2010-06-30 2013-02-19 Emc Corporation Method for dynamic management of system resources through application hints
EP2593871B1 (en) 2010-07-16 2017-08-23 Kabushiki Kaisha Toshiba Customized of a bus adapter card
US20120317337A1 (en) * 2011-06-09 2012-12-13 Microsoft Corporation Managing data placement on flash-based storage by use

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007079774A (ja) * 2005-09-13 2007-03-29 Hitachi Ltd ファイルシステムの構築方法
JP2010108341A (ja) * 2008-10-31 2010-05-13 Hitachi Ltd 階層型ストレージシステム
JP2011081467A (ja) * 2009-10-05 2011-04-21 Hitachi Ltd 記憶装置のデータ移行制御方法
US20110313976A1 (en) * 2010-06-22 2011-12-22 Oracle International Corporation Method and system for partial shadow migration

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016051593A1 (ja) * 2014-10-03 2016-04-07 株式会社日立製作所 計算機システム
JPWO2016051593A1 (ja) * 2014-10-03 2017-08-03 株式会社日立製作所 計算機システム
US10235071B2 (en) 2016-11-29 2019-03-19 Kabushiki Kaisha Toshiba Tiered storage system, storage controller and tiering control method

Also Published As

Publication number Publication date
EP2645260A2 (en) 2013-10-02
CN103365944B (zh) 2017-08-04
EP2645260A3 (en) 2014-03-19
US8825724B2 (en) 2014-09-02
KR20130111283A (ko) 2013-10-10
TWI456418B (zh) 2014-10-11
US20130262533A1 (en) 2013-10-03
KR101445481B1 (ko) 2014-09-26
EP2645260B1 (en) 2015-05-06
JP5710673B2 (ja) 2015-04-30
TW201339870A (zh) 2013-10-01
CN103365944A (zh) 2013-10-23

Similar Documents

Publication Publication Date Title
JP5710673B2 (ja) ファイル・システム・ヒンティング
US8407448B1 (en) Shared storage I/O elimination through mapping client integration into a hypervisor
CN106354745B (zh) 用于提供计算机装置的接口的方法和计算机装置
US8904061B1 (en) Managing storage operations in a server cache
JP5276218B2 (ja) リアルタイムでlunをファイルに、またはファイルをlunに変換すること
AU2006239882B2 (en) System and method for caching network file systems
US9141529B2 (en) Methods and apparatus for providing acceleration of virtual machines in virtual environments
US8793466B2 (en) Efficient data object storage and retrieval
JP4857818B2 (ja) ストレージ管理方法およびストレージ管理サーバ
US20180322062A1 (en) Optimized record lookups
US9075754B1 (en) Managing cache backup and restore
US20140281307A1 (en) Handling snapshot information for a storage device
US20080177975A1 (en) Database management system for controlling setting of cache partition area in storage system
US8694563B1 (en) Space recovery for thin-provisioned storage volumes
US9021222B1 (en) Managing incremental cache backup and restore
US10936412B1 (en) Method and system for accessing data stored in data cache with fault tolerance
US9710283B2 (en) System and method for pre-storing small data files into a page-cache and performing reading and writing to the page cache during booting
JP2016535896A (ja) 注釈付きアトミック書き込み操作を行う方法および装置
JP2013539119A (ja) オフロード・リードおよびライト
CN109902034B (zh) 快照创建方法、装置、电子设备及机器可读存储介质
WO2018171296A1 (zh) 一种文件合并方法及控制器
US10733105B1 (en) Method for pipelined read optimization to improve performance of reading data from data cache and storage units
CN111158602A (zh) 数据分层存储方法、读取方法、存储主机及存储系统
CN110300960A (zh) 信息系统、管理程序和信息系统的程序更换方法
WO2017126003A1 (ja) 複数種類のメモリデバイスを含む計算機システム及び方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140624

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20140624

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20140709

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20140801

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140804

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141007

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141217

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: 20150203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150304

R150 Certificate of patent or registration of utility model

Ref document number: 5710673

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees