JP2019537097A - Tracking I-node access patterns and prefetching I-nodes - Google Patents

Tracking I-node access patterns and prefetching I-nodes Download PDF

Info

Publication number
JP2019537097A
JP2019537097A JP2019516181A JP2019516181A JP2019537097A JP 2019537097 A JP2019537097 A JP 2019537097A JP 2019516181 A JP2019516181 A JP 2019516181A JP 2019516181 A JP2019516181 A JP 2019516181A JP 2019537097 A JP2019537097 A JP 2019537097A
Authority
JP
Japan
Prior art keywords
metadata
inode
directory
disk
look
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.)
Ceased
Application number
JP2019516181A
Other languages
Japanese (ja)
Other versions
JP2019537097A5 (en
Inventor
パテル・バウティク
ジェームズ・フレディ
コタリ・ミトゥル
バナジー・アニンディヤ
Original Assignee
ベリタス テクノロジーズ エルエルシー
ベリタス テクノロジーズ エルエルシー
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
Priority claimed from US15/279,694 external-priority patent/US10467190B2/en
Priority claimed from US15/279,721 external-priority patent/US10235293B2/en
Application filed by ベリタス テクノロジーズ エルエルシー, ベリタス テクノロジーズ エルエルシー filed Critical ベリタス テクノロジーズ エルエルシー
Publication of JP2019537097A publication Critical patent/JP2019537097A/en
Publication of JP2019537097A5 publication Critical patent/JP2019537097A5/ja
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • 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/6026Prefetching based on access pattern detection, e.g. stride based prefetch

Abstract

本明細書に開示されるのは、iノードのアクセスパターンを追跡する方法、システム及びプロセスであって、メモリ内にiノードをプリ取り出す先読み命令を発行する。メタデータ記憶領域内のメタデータユニットの位置が判定される。現在のメタデータ読み取り動作に対応するメタデータ記憶領域内の別の位置が判定される。メタデータユニットの位置及び別の位置を使用して、メタデータ先読み動作を実行することができるかどうかが判定される。メタデータ先読み動作が実行され得るという判定に応答して、メタデータ先読み動作が発行される。加えて、iノードがアクセスされ、iノードのディレクトリが判定される。また、ディレクトリのエントリがグローバルiノードリスト内に存在するかどうかが判定される。エントリがグローバルiノードリスト内に存在する場合に、ディレクトリのファイル構造がシーケンシャルであるか非シーケンシャルであるかが判定される。エントリがグローバルiノードリスト内に存在しない場合に、グローバルiノードリスト内にディレクトリの新しいエントリが追加される。Disclosed herein are methods, systems, and processes for tracking an inode's access pattern, issuing a prefetch instruction that prefetches the inode into memory. The position of the metadata unit in the metadata storage area is determined. Another location in the metadata storage area corresponding to the current metadata reading operation is determined. The location of the metadata unit and another location are used to determine whether a metadata look-ahead operation can be performed. A metadata look-ahead operation is issued in response to the determination that the metadata look-ahead operation can be performed. In addition, the inode is accessed and the directory of the inode is determined. Further, it is determined whether or not the directory entry exists in the global inode list. If the entry exists in the global inode list, it is determined whether the file structure of the directory is sequential or non-sequential. If the entry is not in the global inode list, a new entry for the directory is added to the global inode list.

Description

本開示は、データアクセスに関する。具体的には、本開示は、iノードのアクセスパターンを追跡すること、及びiノードを先取りするiノード先読み命令を発行することに関する。   The present disclosure relates to data access. Specifically, the present disclosure relates to tracking access patterns of inodes and issuing inode prefetch instructions that preempt inodes.

ファイルシステムは、(例えば、アプリケーションを記憶及び実行するための)コンピューティング目的のために、どのようにデータを記憶及び読み出すかを制御するために使用される。ファイルシステム内のデータオブジェクト(例えば、ファイル、ディレクトリなど)は、1つ以上のiノードを有する。iノードは、ファイルシステム内のデータオブジェクトに属するデータを識別するために使用されるデータ構造である。iノードは、データオブジェクトのデータの属性(例えば、メタデータ)及びディスクブロック位置(複数可)を記憶する。   File systems are used to control how data is stored and retrieved for computing purposes (eg, to store and execute applications). Data objects (e.g., files, directories, etc.) in the file system have one or more inodes. An inode is a data structure used to identify data belonging to a data object in the file system. The inode stores data attributes (eg, metadata) and disk block position (s) of the data object.

ファイルシステム内のファイルにアクセスするには、ディスクから(例えば、不揮発性記憶ユニットから)ファイルのiノードを読み取る必要がある。バックアップ、周期的スキャン、管理動作などのデータ動作は、典型的にはディスク上の複数のiノードにアクセスする。ディスクからのこのような「ディスク上」iノードを読み取ることにより、アプリケーション性能に悪影響を及ぼす可能性がある。例えば、下にあるディスクが遅い場合、ディスクからディスク上iノードを読み取ることにより、アプリケーションが必要なデータをサービスされ得る前に、不適切かつ/又は相当な入力/出力(I/O)待ち時間を生じる可能性がある。   Accessing a file in the file system requires reading the file's inode from disk (eg, from a non-volatile storage unit). Data operations such as backups, periodic scans, and management operations typically access multiple inodes on the disk. Reading such "on-disk" inodes from disk can adversely affect application performance. For example, if the underlying disk is slow, reading the inodes on the disk from the disk may result in improper and / or substantial input / output (I / O) latency before the application can be serviced with the required data. May occur.

ファイルの内容をメモリ(例えば、ランダムアクセスメモリ(Random Access Memory、RAM))にロードすることができ、それにより、ファイルがその後アクセスされると、ファイルの内容は、ディスク(例えば、ハードディスクドライブ(Hard Disk Drive、HDD))ではなくRAMから読み取られる。しかしながら、ファイルの内容をメモリにロードすることは、ディスクから、アクセスされるファイルの内容に対応するiノードを必要とする。   The contents of the file can be loaded into memory (eg, Random Access Memory (RAM)) so that when the file is subsequently accessed, the contents of the file are stored on a disk (eg, a Hard Disk Drive). Disk Drive, HDD)) but not from RAM. However, loading the contents of a file into memory requires an inode corresponding to the contents of the file to be accessed from disk.

本明細書に開示されるのは、メモリ内にiノードを先取りすることによってデータアクセスを加速するための、iノードのアクセスパターンを追跡する方法、システム及びプロセスである。1つのそのような方法は、不揮発性記憶ユニット内にあるメタデータ記憶領域内のメタデータユニットの位置を判定することを含む。当該方法は、現在のメタデータ読み取り動作に対応するメタデータ記憶領域内の別の位置を判定し、メタデータユニットの位置及び別の位置を使用して、メタデータ先読み動作を実行することができるかどうかを判定する。メタデータ先読み動作が実行され得るという判定に応答して、当該方法は、メタデータ先読み動作を発行する。   Disclosed herein are methods, systems, and processes for tracking inode access patterns to accelerate data access by preempting inodes in memory. One such method includes determining a location of a metadata unit in a metadata storage area that is in a non-volatile storage unit. The method may determine another location in the metadata storage area corresponding to the current metadata read operation, and perform the metadata look-ahead operation using the location of the metadata unit and another location. Is determined. In response to determining that a metadata look-ahead operation can be performed, the method issues a metadata look-ahead operation.

特定の実施形態では、メタデータ記憶領域はディスク上iノードを含む。ディスク上iノードは、メタデータユニットを含み、構造ファイルの一部である。構造ファイルは不揮発性記憶ユニットに記憶される。当該方法は、構造ファイルに対応するコア内iノードを作成し、コア内iノード内にメタデータユニットの位置を記憶する。この実施例では、メタデータユニットは、最後に読み取ったメタデータチャンクであり、メタデータユニットの位置は、メタデータユニットの終了オフセットを識別し、それを含む。   In certain embodiments, the metadata storage area includes an inode on disk. An inode on disk contains a metadata unit and is part of the structure file. The structure file is stored in the non-volatile storage unit. The method creates an in-core inode corresponding to the structure file and stores the location of the metadata unit in the in-core inode. In this example, the metadata unit is the last read metadata chunk, and the location of the metadata unit identifies and includes the end offset of the metadata unit.

いくつかの実施形態では、メタデータ先読み動作が実行され得るかどうかを判定することは、メタデータユニットの終了オフセットにアクセスすることと、別の位置が終了オフセットに隣接しているかどうかを判定することと、を含む。この実施例では、メタデータ先読み動作を発行することは、終了オフセットを、メタデータ先読み動作によって読み取られる別のメタデータユニットの別の終了オフセット(例えば、別の最後に読み取ったメタデータチャンク)と置き換えることによって更新することと、別の位置が終了オフセットに隣接していない場合に、終了オフセットを現在のメタデータ読み取り動作の終了オフセットと置き換えることによって更新することと、を含む。   In some embodiments, determining whether a metadata look-ahead operation can be performed includes accessing the end offset of the metadata unit and determining whether another location is adjacent to the end offset. And including. In this embodiment, issuing the metadata look-ahead operation includes ending the ending offset with another ending offset of another metadata unit read by the metadata look-ahead operation (eg, another last-read metadata chunk). Updating by replacing, and if another location is not adjacent to the ending offset, updating by replacing the ending offset with the ending offset of the current metadata reading operation.

他の実施形態では、当該方法は、入力/出力(I/O)動作に応答して、1つ以上のディスク上iノードを読み取るコマンドをインターセプトする。この実施例では、当該方法は、発行された先読み値とコマンド内のチャンク合計とを比較することによって、メタデータ先読み動作において、発行されたメタデータ先読み値を解析する。この方法は、I/O動作が完了するのを待ち、かつ/又は非同期メタデータ先読み命令を発行するのを待機する。   In another embodiment, the method intercepts a command to read an inode on one or more disks in response to an input / output (I / O) operation. In this embodiment, the method analyzes the issued metadata look-ahead value in a metadata look-ahead operation by comparing the issued look-ahead value with the chunk sum in the command. The method waits for the I / O operation to complete and / or waits to issue an asynchronous metadata look-ahead instruction.

特定の実施形態では、I/O動作が完了しているかどうかを判定することは、I/O動作が完了している場合に待ち行列を生成することを含む。待ち行列は、非同期メタデータ先読み命令に含まれないチャンク合計のメタデータの残りのチャンクを含む。当該方法は、I/O動作が完了していない場合に、メタデータ先読み動作においてチャンク合計を更新する。   In certain embodiments, determining whether the I / O operation is complete includes creating a queue if the I / O operation is complete. The queue contains the remaining chunks of chunk total metadata not included in the asynchronous metadata look-ahead instruction. The method updates the chunk total in a metadata look-ahead operation if the I / O operation has not been completed.

いくつかの実施形態は、iノードにアクセスすることと、iノード(例えば、ディスク上iノード)のディレクトリを判定することと、ディレクトリのエントリがグローバルiノードリスト内に存在するかどうかを判定することと、を含む。エントリがグローバルiノードリスト内に存在する場合、当該方法は、ディレクトリのファイル構造がシーケンシャルであるか非シーケンシャルであるかを判定し、エントリがグローバルiノードリスト内に存在しない場合、当該方法は、グローバルiノードリスト内にディレクトリの新たなエントリを追加する。   Some embodiments access the inode, determine the directory of the inode (eg, the inode on disk), and determine whether the directory entry is present in the global inode list. And including. If the entry is in the global inode list, the method determines whether the file structure of the directory is sequential or non-sequential, and if the entry is not in the global inode list, the method includes: Add a new directory entry in the global inode list.

特定の実施形態では、ディレクトリがグローバルiノードリスト内に存在するかどうかを判定することは、エントリのグローバルiノードリストを探索することを含む。当該方法は、ディレクトリのファイル構造がシーケンシャルである場合、ディレクトリがシーケンシャルフラグを含むかどうかを判定する。ディレクトリがシーケンシャルフラグを含む場合、当該方法は、ディレクトリ内のiノードに対するメタデータ先読み動作を発行する。親ディレクトリのファイル構造が非シーケンシャルである場合、当該方法はディレクトリのiノードリストを取り出し、iノードリスト上のiノードに対するメタデータ先読み動作を発行する。いくつかの実施形態では、当該方法は、入力/出力(I/O)動作に応答して1つ以上のディスク上iノードを読み取るコマンドをインターセプトする。この実施例では、当該方法は、発行されたメタデータ先読み値とコマンド内のチャンク合計とを比較することによって、メタデータ先読み動作において、発行されたメタデータ先読み値を解析する。当該方法は、I/O動作が非同期メタデータ先読み命令を完了及び/又は発行するのを待機する。   In certain embodiments, determining whether the directory is in the global inode list includes searching the global inode list for the entry. The method determines whether the directory includes a sequential flag if the file structure of the directory is sequential. If the directory includes a sequential flag, the method issues a metadata look-ahead operation on the inodes in the directory. If the parent directory's file structure is non-sequential, the method retrieves the directory's inode list and issues a metadata look-ahead operation for the inodes on the inode list. In some embodiments, the method intercepts a command to read an inode on one or more disks in response to an input / output (I / O) operation. In this embodiment, the method analyzes the issued metadata look-ahead operation in a metadata look-ahead operation by comparing the issued metadata look-ahead value with the chunk sum in the command. The method waits for an I / O operation to complete and / or issue an asynchronous metadata look-ahead instruction.

他の実施形態では、I/O動作が完了しているかどうかを判定することは、I/O動作が完了している場合に待ち行列を生成することを含む。待ち行列は、非同期メタデータ先読み命令に含まれないチャンク合計のメタデータの残りのチャンクを含む。当該方法は、I/O動作が完了していない場合に、メタデータ先読み動作においてチャンク合計を更新する。   In another embodiment, determining whether the I / O operation is complete includes creating a queue if the I / O operation is complete. The queue contains the remaining chunks of chunk total metadata not included in the asynchronous metadata look-ahead instruction. The method updates the chunk total in a metadata look-ahead operation if the I / O operation has not been completed.

前述の内容は概要であり、したがって必然的に、簡略化、一般化、及び詳細の省略を含み、その結果として、当業者であれば、その概要が例示的であるにすぎず、なんら限定的ではないことがわかるであろう。請求項によってのみ規定されるような、本開示の他の態様、本発明の機能、及び利点は、下記に示す非限定的な詳細な説明において明瞭になるであろう。   The foregoing is a summary, and thus necessarily involves simplifications, generalizations, and omissions of detail; as a result, those of ordinary skill in the art will be aware that the summary is merely illustrative and not restrictive. You will see that it is not. Other aspects of the disclosure, features and advantages of the invention, as defined solely by the claims, will become apparent in the non-limiting detailed description set forth below.

本開示は、添付図面を参照することによってより良く理解され得、そして、それの大半の対象、機能、及び利点が当業者に明らかにされる。   The present disclosure may be better understood with reference to the accompanying drawings, and most objects, features, and advantages thereof will be apparent to those skilled in the art.

本開示の一実施形態に係る、iノードのアクセスパターンを追跡してiノードを先取りするシステムのブロック図である。1 is a block diagram of a system that tracks an access pattern of an inode and prefetches the inode according to an embodiment of the present disclosure;

本開示の一実施形態に係る、構造ファイルのブロック図である。FIG. 2 is a block diagram of a structure file according to an embodiment of the present disclosure.

本開示の一実施形態に係る、構造ファイル及びコア内iノードのブロック図である。FIG. 4 is a block diagram of a structure file and an in-core inode according to an embodiment of the present disclosure.

本開示の一実施形態に係る、iノードのアクセスパターンを追跡してメタデータ先読み命令を発行するシステムのブロック図である。FIG. 2 is a block diagram of a system that tracks an access pattern of an inode and issues a metadata prefetch instruction according to an embodiment of the present disclosure;

本開示の一実施形態に係る、iノードのオフセットメタデータのブロック図である。FIG. 3 is a block diagram of offset metadata of an inode according to an embodiment of the present disclosure.

本開示の一実施形態に係る、グローバルiノードリスト/親ディレクトリリストの内容を示す表である。6 is a table showing contents of a global inode list / parent directory list according to an embodiment of the present disclosure.

本開示の一実施形態に係る、ディレクトリアクセストラッカのブロック図である。FIG. 2 is a block diagram of a directory access tracker according to an embodiment of the present disclosure.

本開示の一実施形態に係る、メタデータ先読み生成器のブロック図である。FIG. 2 is a block diagram of a metadata prefetch generator according to an embodiment of the present disclosure.

本開示の一実施形態に係る、シーケンシャルなiノードを有するディレクトリのブロック図である。FIG. 4 is a block diagram of a directory having sequential inodes, according to one embodiment of the present disclosure.

本開示の一実施形態に係る、非シーケンシャルなiノードを有するディレクトリのブロック図である。FIG. 4 is a block diagram of a directory having non-sequential inodes, according to one embodiment of the present disclosure.

本開示の一実施形態に係る、グローバルiノードリストを実装するキャッシュのブロック図である。FIG. 4 is a block diagram of a cache implementing a global inode list according to one embodiment of the present disclosure.

本開示の一実施形態に係る、iノード先取りを実行するプロセスを示すフローチャートである。5 is a flowchart illustrating a process for performing inode prefetch according to an embodiment of the present disclosure.

本開示の一実施形態に係る、ディスク上iノードと関連付けられたオフセットメタデータを記憶するプロセスを示すフローチャートである。5 is a flowchart illustrating a process for storing offset metadata associated with an inode on disk according to an embodiment of the present disclosure.

本開示の一実施形態に係る、ディレクトリのファイル構造を判定するプロセスを示すフローチャートである。5 is a flowchart illustrating a process of determining a file structure of a directory according to an embodiment of the present disclosure.

本開示の一実施形態に係る、ディスク上iノードに対するメタデータ先読み命令を発行するプロセスを示すフローチャートである。5 is a flowchart illustrating a process of issuing a metadata prefetch instruction for an inode on a disk according to an embodiment of the present disclosure.

本開示の一実施形態に係る、iノード先取りに関連する入力/出力(I/O)動作を処理するプロセスを示すフローチャートである。4 is a flowchart illustrating a process for handling input / output (I / O) operations related to inode prefetch, according to one embodiment of the present disclosure.

本開示の一実施形態に係る、iノード先取りに関連するI/O動作を処理するプロセスを示すフローチャートである。4 is a flowchart illustrating a process for handling I / O operations related to inode prefetch, according to one embodiment of the present disclosure.

本開示の一実施形態に係る、ディスク上iノードのアクセスを処理するプロセスを示すフローチャートである。5 is a flowchart illustrating a process for processing access of an inode on a disk according to an embodiment of the present disclosure.

本開示の一実施形態に係る、ディスク上iノードにアクセスする要求を処理するプロセスを示すフローチャートである。5 is a flowchart illustrating a process for processing a request to access an on-disk inode according to an embodiment of the present disclosure.

本開示の一実施形態に係る、アクセスパターントラッカ及びメタデータ先読み生成器がソフトウェア内に実装され得る態様を示す、コンピューティングシステムのブロック図である。1 is a block diagram of a computing system illustrating how an access pattern tracker and a metadata look-ahead generator may be implemented in software according to one embodiment of the present disclosure.

本開示の一実施形態に係る、多様なコンピューティングデバイスがネットワークを介して通信し得る態様を示す、ネットワーク化されたシステムのブロック図である。FIG. 1 is a block diagram of a networked system illustrating how various computing devices may communicate over a network, according to one embodiment of the disclosure.

本開示は、様々な修正形態及び代替形式に影響を受けるが、本開示の特定の実施形態は、図面及び詳細な説明において例として提供される。図面及び詳細な説明は、開示内容を開示された特定の形式に限定することを意図しないことを理解されたい。その代わりに、添付の請求項によって規定されるような本開示の趣旨及び範囲内にある全ての修正形態、等価物、及び代替形態を包含することが意図される。   While the present disclosure is subject to various modifications and alternative forms, specific embodiments of the present disclosure are provided by way of example in the drawings and detailed description. It is to be understood that the drawings and detailed description are not intended to limit the disclosure to the particular form disclosed. Instead, it is intended to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present disclosure as defined by the appended claims.

序論
ファイルシステム(例えば、Unixファイルシステム)を使用して、データを整理し、そのデータがどのように記憶され、及び読み出されるかを制御する。ファイルシステムは、ファイル及びディレクトリなどのデータオブジェクトを整理し、かつ記憶デバイス(例えば、ハードディスクドライブ(HDD)、ソリッドステートドライブ(Solid State Drive、SSD)、及び/又は同様のもの)のどの領域がどのデータオブジェクトに属するかを把握することを担う。典型的には、ファイルシステム(例えば、ファイル、ディレクトリなど)内の各データオブジェクトは、対応するノードを有する。
Introduction A file system (eg, a Unix file system) is used to organize data and control how that data is stored and retrieved. The file system organizes data objects, such as files and directories, and which areas of storage devices (eg, hard disk drives (HDDs), solid state drives (Solid State Drives, SSDs), and / or the like) Responsible for knowing if it belongs to a data object. Typically, each data object in the file system (eg, file, directory, etc.) has a corresponding node.

iノードは、ファイルシステム内のデータを位置特定するために使用されるデータ構造である。iノードは、データオブジェクトのデータの属性(例えば、メタデータ)及びディスクブロック位置(複数可)を記憶し、整数の数(例えば、iノード番号と称する)によって識別され得る。ディレクトリは、iノードに割り当てられた名称のリストを含むことができる。ディレクトリは、それ自体のエントリ、ディレクトリの親のエントリ、及びディレクトリの子のそれぞれに対するエントリを含む。   An inode is a data structure used to locate data in a file system. An inode stores the data attributes (eg, metadata) and disk block location (s) of the data object and may be identified by an integer number (eg, referred to as an inode number). The directory may include a list of names assigned to the inode. A directory contains its own entry, an entry for the directory's parent, and an entry for each of the directory's children.

ファイルシステム内のファイルにアクセスすることは、典型的には、例えば、ファイルの内容への変更及び/又は修正を判定するために、またある場合には、所有者及び許可情報(例えば、グループID、ユーザID、許可など)を検証するために、ディスクから(例えば、不揮発性記憶ユニットから)読み取るファイルのiノードを伴う。したがって、ファイルの内容にアクセスすることができる前に、ファイルのiノード(メタデータ)を最初にディスクから読み取らなければならない。   Accessing a file in the file system is typically performed, for example, to determine changes and / or modifications to the contents of the file and, in some cases, owner and permission information (eg, a group ID). , User ID, permissions, etc., with the inode of the file being read from disk (eg, from a non-volatile storage unit). Therefore, before the contents of the file can be accessed, the file's inode (metadata) must first be read from disk.

データ動作(例えば、入力/出力(I/O)動作)は、典型的には、ディスクへの複数のiノードのアクセスを必要とし、ディスクからのこのような「ディスク上」iノードを読み取ることは、(例えば、所与のI/O動作を完了することができる前のI/O待ち時間の形態で)アプリケーション性能に悪影響を及ぼす可能性がある。また、前述したように、ファイルの内容を「先読み」してメモリ(例えば、ランダムアクセスメモリ(RAM))にロードすることによって、ファイルがその後アクセスされると、ファイルの内容をディスク(例えば、HDD)からではなくRAMから読み取るようにすることができる。したがって、このように(例えば、データアクセスを加速するために)データを先取りすることは、これらのiノードと関連付けられたデータ(例えば、ファイル、ディレクトリなど)をメモリに事前にロードすることができる前に、これらのiノードを「先読み」するためにiノードのアクセスパターン(複数可)の追跡を必要とする。   Data operations (e.g., input / output (I / O) operations) typically require multiple inode access to the disk and reading such "on-disk" inodes from the disk Can negatively impact application performance (eg, in the form of I / O latency before a given I / O operation can be completed). Also, as described above, by "pre-reading" the contents of a file and loading it into a memory (eg, a random access memory (RAM)), when the file is subsequently accessed, the contents of the file are stored on a disk (eg, an HDD). ) But not from RAM. Thus, preempting data in this manner (eg, to accelerate data access) can preload data (eg, files, directories, etc.) associated with these inodes into memory. Before, we need to track the access pattern (s) of the inodes to "look ahead" these inodes.

残念ながら、ファイルデータとは異なり、iノードメタデータアクセスパターン(複数可)の効率的な追跡は、少なくとも2つの理由から困難である。第一に、(例えば、クラスタ内で実行される複数のアプリケーションからの)複数のI/O動作は、同じiノードに同時にアクセスすることができる。複数のI/O動作のiノードアクセスパターン(複数可)を追跡することは、メモリ及び計算リソース集約的であり得るとともに、著しいオーバーヘッドをもたらし得る。第二に、iノードアクセスパターン(複数可)の追跡はまた、同時にシステム性能に悪影響を及ぼすことなく、(例えば、先読み命令を発行することによって)そのようなiノードの効率的な「先読み」を必要とする。   Unfortunately, unlike file data, efficient tracking of inode metadata access pattern (s) is difficult for at least two reasons. First, multiple I / O operations (eg, from multiple applications running in a cluster) can access the same inode simultaneously. Tracking inode access pattern (s) for multiple I / O operations can be memory and computational resource intensive and can introduce significant overhead. Second, tracking the inode access pattern (s) can also efficiently (eg, by issuing a look-ahead instruction) efficiently “look-ahead” such inodes without adversely affecting system performance. Need.

本明細書では、チャンクアクセス、シーケンシャルアクセス、及び非シーケンシャルアクセスに基づいて、iノードのアクセスパターンを追跡し、能力の中でもとりわけ、iノードに対する先読み命令を発行することが可能な方法、システム及びプロセスが開示される。
iノードアクセスパターン(複数可)を追跡して先読みを発行するシステム例
Described herein are methods, systems, and processes capable of tracking an inode's access pattern based on chunked access, sequential access, and non-sequential access, and issuing, among other capabilities, a look-ahead instruction to the inode. Is disclosed.
Example of system that tracks inode access pattern (s) and issues prefetch

図1Aは、一実施形態に係る、iノードのアクセスパターン(複数可)を追跡してiノードを先取りするように構成されたコンピューティングシステム100Aのブロック図である。図1Aに示すように、コンピューティングデバイス105はプロセッサ110及びメモリ115を含む。コンピューティングデバイス105は、サーバ、デスクトップ、ラップトップ、タブレットなどを含む任意のタイプのコンピューティングシステムであり得るとともに、ネットワーク185を介して記憶システム145に通信可能に結合されている。ネットワーク185は、任意のタイプのネットワーク及び/又は相互接続(例えば、ローカルエリアネットワーク(Local Area Network、LAN)、ワイドエリアネットワーク(Wide Area Network、WAN)、ストレージエリアネットワーク(Storage Area Network、SAN)、インターネットなど)であり得る。   FIG. 1A is a block diagram of a computing system 100A configured to track inode access pattern (s) and preempt inodes, according to one embodiment. As shown in FIG. 1A, the computing device 105 includes a processor 110 and a memory 115. Computing device 105 may be any type of computing system, including a server, desktop, laptop, tablet, etc., and is communicatively coupled to storage system 145 via network 185. Network 185 may include any type of network and / or interconnect (eg, local area network (LAN), wide area network (WAN), storage area network (SAN), Internet, etc.).

記憶システム145は、ハードディスク、コンパクトディスク、デジタル多用途ディスク、フラッシュメモリなどのSSDメモリ、又は1つ以上のそのような物理的記憶デバイス上に実装されたボリュームなどの1つ以上の論理的記憶デバイスを含む、様々な異なる記憶デバイスを含むことができる。記憶システム145は、そのような記憶デバイス(例えば、ディスク150)のうちの1つ以上を含む。一実施形態では、ディスク150は不揮発性記憶ユニットである。他の実施形態では、ディスク150はHDD又はSSDである。ディスク150はファイルシステム155を含む。ファイルシステム155は、任意の種類のファイルシステム(例えば、Unixファイルシステム、エクステントベースのファイルシステムなど)であり得る。   The storage system 145 may include one or more logical storage devices, such as a hard disk, a compact disk, a digital versatile disk, an SSD memory such as a flash memory, or a volume implemented on one or more such physical storage devices. A variety of different storage devices can be included. Storage system 145 includes one or more of such storage devices (eg, disk 150). In one embodiment, disk 150 is a non-volatile storage unit. In another embodiment, the disk 150 is an HDD or SSD. Disk 150 includes a file system 155. File system 155 can be any type of file system (eg, Unix file system, extent-based file system, etc.).

オペレーティングシステム120及びアプリケーション135及び140は、メモリ115に記憶され、オペレーティングシステム120によって実行される。オペレーティングシステム120は、ディレクトリiノード130(1)〜(N)を含む、(例えば、複数のコア内iノード126(1)〜(N)を有する)コア内iノードリスト125を更に含む。ディレクトリiノード130(1)〜(N)は、例えば、コア内iノードリスト125(ファイル、ディレクトリなどのコア内iノードを含む)のディスク上iノードの親ディレクトリ表現である。ファイルシステム155は、構造ファイル160、ディレクトリデータ構造170及びデータ180を含む。構造ファイル160はディスク上iノード165(1)〜(N)を含み、ディレクトリデータ構造170はiノードリスト175を含む。一実施形態では、構造ファイル160はiListファイルである。この実施形態では、iListファイルは、ディスク上iノード(例えば、ディスク上iノード165(1)〜(N))のリスティングを保持するファイルである。   The operating system 120 and the applications 135 and 140 are stored in the memory 115 and executed by the operating system 120. Operating system 120 further includes an in-core inode list 125 (eg, having a plurality of in-core inodes 126 (1)-(N)), including directory inodes 130 (1)-(N). The directory inodes 130 (1) to (N) are, for example, parent directory representations of in-core inodes of the in-core inode list 125 (including in-core inodes such as files and directories). The file system 155 includes a structure file 160, a directory data structure 170, and data 180. The structure file 160 includes on-disk inodes 165 (1) to (N), and the directory data structure 170 includes an inode list 175. In one embodiment, structure file 160 is an iList file. In this embodiment, the iList file is a file that holds the listing of the inodes on the disk (for example, the inodes 165 (1) to (N) on the disk).

ファイルシステム155内のデータオブジェクト(例えば、ファイル、ディレクトリ及び/又は同様のもの)は、対応するiノード(例えば、ディスク上iノード165(1)〜(N))と関連付けられている。各ディスク上iノードは、特定のiノード番号を有し、(例えば、ディスク上iノード165(1)〜(N)として、及び構造ファイル160の一部として)ディスク150上に記憶される。コア内iノードリスト125は、1つ(以上)のディスク上iノードに対するメモリ内データ構造(又はリスト)である。コア内iノードリスト125は、ディスク上iノード165(1)〜(N)の一部として記憶されるメタデータ並びに他の付加的なメタデータを含む。   Data objects (eg, files, directories, and / or the like) in file system 155 are associated with corresponding inodes (eg, on-disk inodes 165 (1)-(N)). Each on-disk inode has a particular inode number and is stored on disk 150 (eg, as on-disk inodes 165 (1)-(N) and as part of structure file 160). The in-core inode list 125 is an in-memory data structure (or list) for one (or more) inodes on the disk. The in-core inode list 125 includes metadata stored as part of the inodes 165 (1)-(N) on disk, as well as other additional metadata.

ファイルシステム155はディレクトリデータ構造170を含む。ディレクトリデータ構造170はiノードリスト175を含む。データオブジェクト(例えば、ファイル、サブディレクトリなど)の親は、所与のデータオブジェクトが一部であるディレクトリである。例えば、所与のディレクトリ(例えば、/home/john)が4つのデータオブジェクト(例えば、それぞれパス名/home/john/file1、/home/john/file2、/home/john/file3及び/home/john/dir1を有するfile1、file2、file3及びdir1)を含む場合には、これらのディレクトリエントリの親ディレクトリ(例えば、file1、file2、file3及びdir1)の親ディレクトリは「john」である。各データオブジェクトは、また、対応する、及び/又は関連付けられたディスク上iノード(例えば、「john」に対するディスク上iノード165(1)、「file1」に対するディスク上iノード165(2)、「file2」に対するディスク上iノード165(3)」、「file3」に対するディスク上iノード165(4)及び「dir1」に対するディスク上iノード165(5)を有する。このシナリオでは、ディスク上iノード165(2)、165(3)、165(4)及び165(5)の親(ディレクトリ)iノード番号は、ディスク上iノード165(1)である(分かりやすくするために、コア内iノードリスト125内のディレクトリiノード130(1)として示す)。   File system 155 includes directory data structure 170. Directory data structure 170 includes inode list 175. The parent of a data object (eg, file, subdirectory, etc.) is the directory of which the given data object is a part. For example, a given directory (eg, / home / john) has four data objects (eg, pathnames / home / john / file1, / home / john / file2, / home / john / file3, and / home / john, respectively). When file1, file2, file3, and dir1 having / dir1 are included, the parent directory of these directory entries (eg, file1, file2, file3, and dir1) is "john". Each data object may also have a corresponding and / or associated on-disk inode (eg, on-disk inode 165 (1) for “john”, on-disk inode 165 (2) for “file1”, “ It has an on-disk inode 165 (3) for "file2", an on-disk inode 165 (4) for "file3" and an on-disk inode 165 (5) for "dir1". (2) The parent (directory) i-node number of 165 (3), 165 (4), and 165 (5) is the i-node 165 (1) on the disk. 125 (shown as directory inode 130 (1)).

いくつかの実施形態によれば、図1Bは構造ファイルのブロック図100Bであり、図1Cは構造ファイル及びコア内iノードのブロック図100Cである。ファイルシステム155内のディレクトリは、タプルのリスト(例えば、<ファイル名,ファイルのiノード番号>)を含む。iノードリスト175は、ファイルシステム155内のそのようなタプルのリストの一例である。ディスク上iノード165(1)のデータ部分は、<file1,ディスク上iノード165(2)>、<file2,ディスク上iノード165(3)>、<file3,ディスク上iノード165(4)>及び<dir1,ディスク上iノード165(5)>を含む。図1Bに示すように、これらの「ディスク上」iノードは、構造ファイル160(例えば、iListファイル)のデータとして保持される。構造ファイル160もファイルであるため、構造ファイル160はまた、固有のiノード番号を有する独自のiノードを有する。図1Cに示すように、構造ファイル160(1)がコア内に(例えば、メモリ115内に)持ち込まれると、コア内iノードが、構造ファイル160(1)(例えば、コア内iノードリスト125などのコア内iノードリスト内のコア内iノード126(1))のために作成される。各構造ファイル及びディスク上iノードは、関連付けられたコア内iノードを有する。   According to some embodiments, FIG. 1B is a block diagram 100B of the structure file, and FIG. 1C is a block diagram 100C of the structure file and in-core inodes. The directory in the file system 155 includes a list of tuples (eg, <file name, file inode number>). Inode list 175 is an example of a list of such tuples in file system 155. The data portions of the in-disk inode 165 (1) are <file1, in-disk inode 165 (2)>, <file2, in-disk inode 165 (3)>, <file3, in-disk inode 165 (4). > And <dir1, inode-on-disk 165 (5)>. As shown in FIG. 1B, these “on disk” inodes are held as data in a structure file 160 (eg, an iList file). Since the structure file 160 is also a file, the structure file 160 also has its own inode with a unique inode number. As shown in FIG. 1C, when the structure file 160 (1) is brought into the core (for example, in the memory 115), the in-core inode becomes the structure file 160 (1) (for example, the in-core inode list 125). And so on for the in-core inodes 126 (1) in the in-core inode list. Each structure file and on-disk inode has an associated in-core inode.

図2Aは、一実施形態に係る、iノードのアクセスパターンを追跡してメタデータ先読み命令を発行するコンピューティングシステム200Aのブロック図である。図2Aに示すように、コンピューティングデバイス105はメモリ115を含む。メモリ115は、キャッシュ205、アクセスパターントラッカ225及びメタデータ先読み生成器240を実装する。キャッシュ205は、コア内iノードリストからの1つ以上のエントリを含むグローバルiノードリスト215を実装する。コア内iノード126(1)は、構造ファイル160(1)のために作成されるメモリ内データ構造(又はリスト)である。   FIG. 2A is a block diagram of a computing system 200A that tracks an inode access pattern and issues a metadata prefetch command, according to one embodiment. As shown in FIG. 2A, computing device 105 includes memory 115. The memory 115 implements the cache 205, the access pattern tracker 225, and the metadata prefetch generator 240. Cache 205 implements a global inode list 215 that includes one or more entries from the in-core inode list. The in-core inode 126 (1) is an in-memory data structure (or list) created for the structure file 160 (1).

コア内iノード126(1)はオフセットメタデータ210を含む。グローバルiノードリスト215はグローバルメモリ内iノードリストである。オフセットメタデータ210は、ディスク上iノードアクセスパターンの位置情報を含み、グローバルiノードリスト215(親ディレクトリリストとも称する)は、ディレクトリiノード130(1)〜(N)(例えば、ディスク上iノードのコア内親ディレクトリiノード番号)及びシーケンシャルフラグ220(1)〜(N)を含む。シーケンシャルフラグ220(1)〜(N)は、親ディレクトリ(例えば、コア内親ディレクトリiノード番号によってメモリ内で識別され、図2Aにディレクトリiノード130(1)〜(N)として示す、親ディレクトリ)に対するコア内iノードの一部として記憶され得る。アクセスパターントラッカ225は、(例えば、ディスク上iノードのチャンクアクセスを追跡する)チャンクアクセストラッカ230、及び(例えば、ディレクトリ内のディスク上iノードのシーケンシャル及び非シーケンシャルアクセスを追跡する)ディレクトリアクセストラッカを含む。図2Aの前述の要素を、図2B〜図2Eに関連してより詳細に説明する。
iノードのチャンクアクセスパターンの追跡例
In-core inode 126 (1) includes offset metadata 210. The global inode list 215 is a global memory inode list. The offset metadata 210 includes the position information of the on-disk inode access pattern, and the global inode list 215 (also referred to as the parent directory list) includes the directory inodes 130 (1) to (N) (for example, Core directory i-node number) and sequential flags 220 (1) to 220 (N). The sequential flags 220 (1)-(N) are identified in the parent directory (e.g., in the memory by a parent directory inode number in the core and shown in FIG. ) Can be stored as part of the in-core i-node. The access pattern tracker 225 includes a chunk access tracker 230 (e.g., tracking inode on-disk chunk access) and a directory access tracker (e.g., tracking inode on-disk sequential and non-sequential access). Including. The foregoing elements of FIG. 2A are described in more detail in connection with FIGS. 2B-2E.
Example of tracking an inode chunk access pattern

図2Bは、一実施形態に係る、オフセットメタデータのブロック図200Bである。オフセットメタデータ210は、最後に読み取ったメタデータチャンク245の終了オフセットと、現在のメタデータ読み取り動作250の開始オフセットと、を含む。ファイルシステム155はディスク150上にコア内iノード165(1)〜(N)を永続的に記憶するため、特定のiノードがコア内(例えば、キャッシュ205内)に見つからない場合、アクセスパターントラッカ225の一部であるチャンクアクセストラッカ230は、チャンク(例えば、1KB、2KB、4KB又は他の適切なサイズ)内のディスク150から構造ファイル160内のディスク上iノードを読み取る。このようにして、チャンクアクセストラッカ230は、メタデータ(例えば、ディスク上iノード)のチャンクのアクセスパターンを追跡し、アプリケーション(例えば、アプリケーション135又はアプリケーション140)がシーケンシャル(又はほぼシーケンシャル)にディスク上iノードにアクセスしているかどうかに関する判定を容易にするように構成され得る。   FIG. 2B is a block diagram 200B of offset metadata, according to one embodiment. The offset metadata 210 includes the end offset of the last read metadata chunk 245 and the start offset of the current read metadata operation 250. Since the file system 155 permanently stores the in-core inodes 165 (1) to (N) on the disk 150, if a specific inode is not found in the core (for example, in the cache 205), the access pattern tracker The chunk access tracker 230, which is part of H.225, reads the inodes on disk in the structure file 160 from the disk 150 in chunks (eg, 1KB, 2KB, 4KB or other suitable size). In this manner, the chunk access tracker 230 tracks the access patterns of the chunks of metadata (e.g., inodes on disk) and allows applications (e.g., application 135 or application 140) to be sequentially (or nearly sequentially) on disk. It may be configured to facilitate a determination as to whether an inode is being accessed.

一実施形態では、チャンクアクセストラッカ230は、(例えば、構造ファイル160内の)メタデータ記憶領域内のメタデータユニットの位置(図1Bに示すようなディスク上iノード165(1)〜(4)の1KBチャンクの位置/終了オフセット)を判定する。チャンクアクセストラッカ230は、現在のメタデータ読み取り動作に対応するメタデータ記憶領域内(例えば、構造ファイル160内)の別の位置(例えば、開始オフセット)を判定する。メタデータ先読み生成器240は、次いで、データチャンクの位置と現在のメタデータ読み取り動作に対応する別の位置とを使用して、メタデータ先読み動作が必要であるかどうかを判定する。メタデータ先読み動作が必要である場合、メタデータ先読み生成器240はメタデータ先読み動作を発行する。   In one embodiment, the chunk access tracker 230 determines the location of the metadata unit in the metadata storage area (eg, in the structure file 160) (on-disk inodes 165 (1)-(4) as shown in FIG. 1B). 1 KB chunk position / end offset). Chunk access tracker 230 determines another location (eg, start offset) in the metadata storage area (eg, in structure file 160) corresponding to the current metadata read operation. The metadata look-ahead generator 240 then uses the location of the data chunk and another location corresponding to the current metadata read operation to determine whether a metadata look-ahead operation is required. If a metadata prefetch operation is required, the metadata prefetch generator 240 issues a metadata prefetch operation.

チャンクアクセストラッカ230は、構造ファイル160(1)と関連付けられたコア内iノード126(1)内のディスク150からの最後に読み取ったメタデータチャンク245の終了オフセット(例えば、構造ファイル160(1)内の論理オフセットの末端)を保持する。例えば、アプリケーション135及び/又はアプリケーション140が、ディスク上iノードの1KBチャンクの読み取りを生じさせる(及び必要とする)ディスク150内のデータ180にアクセスしようとする場合には、チャンクアクセストラッカ230は、ディスク上iノードの1KBチャンクの終了オフセット(例えば、図1Bに示すようなディスク上iノード165(1)〜(4)の1KBチャンクの終了オフセット)を「格納値」として構造ファイル160(1)のコア内iノード126(1)内に格納する。   The chunk access tracker 230 determines the end offset of the last read metadata chunk 245 from the disk 150 in the in-core inode 126 (1) associated with the structure file 160 (1) (eg, the structure file 160 (1) (The end of the logical offset within). For example, if application 135 and / or application 140 attempts to access data 180 in disk 150 that causes (and requires) reading of a 1 KB chunk of inodes on disk, chunk access tracker 230 may The ending offset of the 1KB chunk of the i-node on the disk (for example, the ending offset of the 1KB chunk of the i-nodes 165 (1) to (4) on the disk as shown in FIG. 1B) is set as the "stored value" and the structure file 160 (1). In the in-core inode 126 (1).

いくつかの実施形態では、現在のメタデータ読み取り動作250の開始オフセット(例えば、図1Bに示すようなディスク上iノード165(5))が、記憶された値(例えば、ディスク上iノード165(1)〜(4)の終了オフセット−最後に読み取ったメタデータチャンク245の終了オフセット)に隣接しており、メタデータ先読み生成器240は、構造ファイル160内の1KB〜2KBのディスク上iノード(例えば、図1Bに示すようなディスク上iノード165(5)〜(8))をキャッシュ205内に取り出すメタデータ先読み命令を発行する。チャンクアクセストラッカ230は、ディスク上iノードアクセスがシーケンシャルに起こっていると判定するため、メタデータ先読み生成器240は、ディスク150からコア内iノードリスト125へ(例えば、1KB〜2KB)のディスク上iノードの次の1KBチャンクを取り出す、メタデータ先読み命令を発行する。   In some embodiments, the starting offset of the current read metadata operation 250 (eg, on-disk inode 165 (5) as shown in FIG. 1B) is a stored value (eg, on-disk inode 165 (5)). 1) to (4) —the end offset of the last read metadata chunk 245), and the metadata look-ahead generator 240 sends the inode (1 KB to 2 KB) in the structure file 160 on the disk. For example, it issues a metadata prefetch instruction to retrieve the inodes 165 (5) to (8) on the disk as shown in FIG. Since the chunk access tracker 230 determines that the inode access on the disk occurs sequentially, the metadata prefetch generator 240 sends the in-core inode list 125 from the disk 150 to the in-core inode list 125 (for example, 1 KB to 2 KB) on the disk. Issue a metadata prefetch instruction to retrieve the next 1KB chunk of the inode.

上述のメタデータ先読み命令がトリガされた場合(例えば、現在のメタデータ読み取り動作250の開始オフセットが最後に読み取ったメタデータチャンク245の終了オフセットの隣にある場合)には、アクセスパターントラッカ225は、メタデータ先読み動作によって読み取られたキャッシュ205内の記憶された値を別の最後に読み取ったメタデータチャンクの別の終了オフセット(例えば、(発行された)メタデータ先読み命令の結果としてメタデータ先読み動作は1KB〜2KBのディスク上iノードを先読みすることから、図1Bに示すような(例えば、2KBにおける)ディスク上iノード165(5)〜(8))と置き換えることによって、コア内iノードリスト125内の記憶された値(例えば、ディスク上iノード165(1)〜(4)の終了オフセット−最後に読み取ったメタデータチャンク245の終了オフセット)を更新する。一方、現在のメタデータ読み取り動作250の開始オフセットが、最後に読み取ったメタデータチャンク245の終了オフセットに隣接しておらず、したがってメタデータ先読みがトリガされない場合、アクセスパターントラッカ225は、現在のメタデータ読み取り動作の終了オフセットを用いて、記憶された値(例えば、ディスク上iノード165(1)〜(4)の終了オフセット−最後に読み取ったメタデータチャンク245の終了オフセット)をリセットする。   If the above metadata prefetch instruction is triggered (eg, if the starting offset of the current metadata reading operation 250 is next to the ending offset of the last read metadata chunk 245), the access pattern tracker 225 Another end offset of the last-read metadata chunk of the stored value in cache 205 read by the metadata look-ahead operation (e.g., metadata prefetch as a result of (issued) metadata prefetch instruction. Since the operation prefetches the inodes on the disk of 1 KB to 2 KB, the inodes in the core are replaced by the inodes 165 (5) to (8) on the disk (for example, at 2 KB) as shown in FIG. 1B. Stored values in list 125 (eg, inode 1 on disk Update read last ending offset metadata chunks 245) - 5 (1) to end offset (4). On the other hand, if the start offset of the current metadata read operation 250 is not adjacent to the end offset of the last read metadata chunk 245, and thus metadata prefetch is not triggered, the access pattern tracker 225 may The end value of the data read operation is used to reset the stored value (eg, the end offset of the inode 165 (1)-(4) on disk minus the end offset of the last read metadata chunk 245).

iノードのチャンクアクセスパターン(複数可)を追跡することができ、メタデータ先読み命令及び/又はメタデータ先読み動作がディスクからメモリへの適用可能なiノードを先取りしてこれらのiノードの後続のアクセスを加速することができることが理解されるであろう。次に、ディレクトリの一部であるノードに対するiノードに対するアクセスパターンを追跡する方法、システム、及びプロセスについて説明する。
親ディレクトリを用いてiノードのアクセスパターンを追跡する例
The inode chunk access pattern (s) can be tracked, and the metadata look-ahead instruction and / or metadata look-ahead operation preempts the applicable inodes from disk to memory and succeeds these inodes. It will be appreciated that access can be accelerated. Next, methods, systems, and processes for tracking access patterns to inodes for nodes that are part of a directory are described.
Example of tracking inode access pattern using parent directory

iノード割り当てポリシーは、本明細書で近接位置と称する同じディレクトリ内で互いに近接したディスク上iノードを保持することができることが理解されよう。例えば、頻繁にアクセスされ、一緒にアクセスされるファイルのディスク上iノードは、同じディレクトリ内に保持され得る。ディレクトリ内のディスク上iノードのこの近接位置を使用して、iノードのディレクトリアクセスを追跡することができる。例えば、グローバルiノードリスト215(又は親ディレクトリリスト)を作成及び保持してディスク上iノードのアクセスを追跡することができる。   It will be appreciated that the inode allocation policy may maintain inodes on disk that are in close proximity to each other in the same directory, referred to herein as the proximity location. For example, on-disk inodes of frequently accessed and jointly accessed files may be kept in the same directory. This proximity of the inode on disk in the directory can be used to track the inode's directory access. For example, a global inode list 215 (or parent directory list) can be created and maintained to track inode on-disk access.

図2Cは、そのようなグローバルiノードリストの内容を示す表200Cであり、図2Dは、特定の実施形態に係る、グローバルiノードリストを使用するディレクトリアクセストラッカ235のブロック図200Dである。グローバルiノードリスト215(ディレクトリ265(1)〜(N)の親ディレクトリリストである)は、ディレクトリiノードフィールド255及びシーケンシャルフラグフィールド260を含む。グローバルiノードリスト215は、メモリ内に作成及び保持され、ディレクトリiノード130(1)〜(N)及びシーケンシャルフラグ220(1)〜(N)を含む。シーケンシャルなフラグは、親ディレクトリに対するコア内iノードの一部として記憶され得る。ディレクトリアクセストラッカ235は、シーケンシャルディレクトリアクセストラッカ270及び非シーケンシャルディレクトリアクセストラッカ275を含む。   FIG. 2C is a table 200C showing the contents of such a global inode list, and FIG. 2D is a block diagram 200D of a directory access tracker 235 using a global inode list, according to a specific embodiment. The global inode list 215 (which is a parent directory list of the directories 265 (1) to (N)) includes a directory inode field 255 and a sequential flag field 260. The global inode list 215 is created and maintained in the memory, and includes directory inodes 130 (1) to (N) and sequential flags 220 (1) to (N). Sequential flags may be stored as part of the in-core inode for the parent directory. Directory access tracker 235 includes a sequential directory access tracker 270 and a non-sequential directory access tracker 275.

一実施形態では、アプリケーションは、iノード(例えば、ディスク上iノード165(4))にアクセスする。ディレクトリアクセストラッカ235は、ノードの親ディレクトリ(例えば、ディレクトリ265(1))を判定し、ディレクトリのエントリがグローバルiノードリスト215内に存在するかどうかを判定する。ディレクトリのエントリがグローバルiノードリスト215に存在する場合、ディレクトリアクセストラッカ235は、ディレクトリのファイル構造がシーケンシャルであるか非シーケンシャルであるかを判定する(例えば、そのディレクトリ内のディスク上iノードがリストされているかどうか、したがって、シーケンシャル又は非シーケンシャルにアクセスされているかどうかを判定することによって)。ディレクトリのエントリがグローバルiノードリスト215内に存在しない場合、ディレクトリアクセストラッカ235は、グローバルiノードリスト215内の親ディレクトリiノードの新たなエントリを追加する。図1A、2A、2C及び3Cに示すように、ディレクトリiノード(例えば、ディレクトリiノード130(1)〜(N))は、(例えば、個々のファイルの代わりに)親ディレクトリを表すディスク上iノードの単にディレクトリ特有の表現であることに留意すべきである。例えば、ディレクトリiノード130(1)は、1つ以上のディスク上iノードの親ディレクトリを表すメモリ内データ構造である。   In one embodiment, the application accesses an inode (eg, on-disk inode 165 (4)). The directory access tracker 235 determines the parent directory of the node (for example, the directory 265 (1)), and determines whether an entry of the directory exists in the global inode list 215. If a directory entry exists in the global inode list 215, the directory access tracker 235 determines whether the file structure of the directory is sequential or non-sequential (for example, if the inode on disk in the directory is By determining whether they are being accessed, and therefore whether they are being accessed sequentially or non-sequentially). If the directory entry does not exist in the global inode list 215, the directory access tracker 235 adds a new entry of the parent directory inode in the global inode list 215. As shown in FIGS. 1A, 2A, 2C, and 3C, a directory inode (eg, directory inodes 130 (1)-(N)) is an i-disk on disk that represents a parent directory (eg, instead of an individual file). Note that it is simply a directory-specific representation of the node. For example, directory inode 130 (1) is an in-memory data structure that represents the parent directory of one or more inodes on disk.

ディスク上iノードのシーケンシャルディレクトリアクセスを追跡するために、シーケンシャルディレクトリアクセストラッカ270は、所与のディスク上iノードの親ディレクトリを最初に見つける(例えば、親ディレクトリのiノード番号を見つける)。例えば、ディスク上iノード165(4)がディスク150から読み取られる場合、シーケンシャルディレクトリアクセストラッカ270はディスク上iノード165(4)(例えば、ディレクトリiノード130(1))の親ディレクトリを見つける。次いで、シーケンシャルディレクトリアクセストラッカ270は、所与のディスク上iノードの親ディレクトリ(iノード)のエントリ(例えば、親ディレクトリiノード番号がキャッシュ205内に存在するかどうか)のグローバルiノードリスト215を探索する。   To track the sequential directory access of an inode on disk, the sequential directory access tracker 270 first finds the parent directory of the given inode on disk (eg, finds the inode number of the parent directory). For example, if on-disk inode 165 (4) is read from disk 150, sequential directory access tracker 270 will find the parent directory of on-disk inode 165 (4) (eg, directory inode 130 (1)). Sequential directory access tracker 270 then stores a global inode list 215 of the entry (eg, whether the parent directory inode number exists in cache 205) of the parent directory (inode) of the inode on the given disk. Explore.

親ディレクトリ(iノード)のエントリがグローバルiノードリスト215に存在する場合、シーケンシャルディレクトリアクセストラッカ270は、グローバルiノードリスト215をチェックして、親ディレクトリがシーケンシャルフラグセット(例えば、この場合に、図2Cに示すように、親ディレクトリiノード番号であり、ディレクトリシーケンシャルフラグセットを有するiノード130(1))を有するか否かを判定する。シーケンシャルフラグが設定されている場合、メタデータ先読み生成器240はメタデータ先読み命令を発行する(例えば、ディスク上iノードアクセスがシーケンシャルであるため、ディレクトリ265(1)内の全ての残りのディスク上iノードを取り出す)。シーケンシャルディレクトリアクセストラッカ270がグローバルiノードリスト215内の親ディレクトリのエントリを見つけない場合、シーケンシャルディレクトリアクセストラッカ270は、親ディレクトリのiノード番号の新たなエントリをグローバルiノードリスト215に追加する。   If the entry of the parent directory (i-node) exists in the global inode list 215, the sequential directory access tracker 270 checks the global inode list 215 and determines that the parent directory has a sequential flag set (for example, in this case, As shown in FIG. 2C, it is determined whether or not the parent directory has an inode 130 (1) having an inode number and a directory sequential flag set. If the sequential flag is set, the metadata look-ahead generator 240 issues a metadata look-ahead command (e.g., because the on-disk i-node access is sequential, all remaining disks in the directory 265 (1) Take out the inode). If the sequential directory access tracker 270 does not find an entry for the parent directory in the global inode list 215, the sequential directory access tracker 270 adds a new entry for the parent directory inode number to the global inode list 215.

ディスク上iノードの非シーケンシャルディレクトリアクセスを追跡するために、非シーケンシャルディレクトリアクセストラッカ275は、所与のディスク上iノードの親ディレクトリ(例えば、親ディレクトリのiノード番号)を最初に見つける。次に、非シーケンシャルディレクトリアクセストラッカ275は、親ディレクトリの既存のエントリに対するグローバルiノードリスト215(例えば、親ディレクトリiノード番号がキャッシュ205内に存在するかどうか)を探索する。親ディレクトリのエントリがグローバルiノードリスト215に存在する場合、非シーケンシャルディレクトリアクセストラッカ275は、ディスク150からキャッシュ205へ親ディレクトリのiノードリスト(例えば、問題の親ディレクトリに適用可能なiノードリスト175の部分又は一部)を取り出し(又は読み出し)、メタデータ先読み生成器240は、読み出されたiノードリスト(例えば、親ディレクトリと関連付けられたかつその一部であるディスク上iノード)上にリストされたディスク上iノードに対するメタデータ先読み命令を発行する。親ディレクトリのエントリがグローバルiノードリスト215に存在しない場合、非シーケンシャルディレクトリアクセストラッカ275は、親ディレクトリのiノード番号の新たなエントリをグローバルiノードリスト215に追加する。
Iノードに対するメタデータ先読み命令の発行例
To track the non-sequential directory access of an inode on disk, the non-sequential directory access tracker 275 first finds the parent directory of the given inode on disk (eg, the inode number of the parent directory). Next, the non-sequential directory access tracker 275 searches the global inode list 215 for existing entries in the parent directory (eg, whether the parent directory inode number exists in the cache 205). If the parent directory entry is present in the global inode list 215, the non-sequential directory access tracker 275 sends the parent directory inode list from disk 150 to the cache 205 (eg, the inode list 175 applicable to the parent directory in question). The metadata look-ahead generator 240 retrieves (or reads) the inode list (eg, the inode on disk that is associated with and is a part of the parent directory). Issue a metadata prefetch instruction for the listed inodes on disk. If the parent directory entry does not exist in the global inode list 215, the non-sequential directory access tracker 275 adds a new entry of the parent directory inode number to the global inode list 215.
Issuance example of metadata prefetch instruction for I-node

図2Eは、一実施形態に係る、メタデータ先読み生成器のブロック図200Eである。メタデータ先読み生成器240は、コンピューティングデバイス105によって実装され、発行されたメタデータ先読み値280及び非同期メタデータ先読み命令285を記憶し、待ち行列生成器290を含む。ディレクトリアクセストラッカ235は先取りする1つ以上のディスク上iノードを識別するが、これらのディスク上iノードが先取りされない場合、これらのディスク上iノードと関連付けられたI/O動作を完了することができない。   FIG. 2E is a block diagram 200E of a metadata look-ahead generator, according to one embodiment. The metadata look-ahead generator 240 is implemented by the computing device 105, stores the issued metadata look-ahead value 280 and the asynchronous metadata look-ahead instruction 285, and includes a queue generator 290. The directory access tracker 235 identifies one or more on-disk inodes to pre-empt, but if these on-disk inodes are not pre-empted, completing the I / O operations associated with these on-disk inodes. Can not.

したがって、一実施形態では、メタデータ先読み生成器240は、I/O動作(例えば、読み出し動作又は書き込み動作)に応答して、ディスク上iノードを読み取るコマンドをインターセプトする。データにアクセスするI/O動作は、そのデータと関連付けられたディスク上iノード(複数可)(例えば、メタデータ)に、(例えば、要求されたデータが変更されたか、どのように変更されたかなどを判定するなどのために)アクセスし、それを読み出すコマンドを生じる(又は生じさせる)ことができる。メタデータ先読み生成器240は、発行されたメタデータ先読み値280と、コマンド内のチャンク合計とを比較することによって、メタデータ先読み動作において、発行されたメタデータ先読み値280を解析する。   Thus, in one embodiment, the metadata prefetch generator 240 intercepts a command to read an inode on disk in response to an I / O operation (eg, a read or write operation). The I / O operations that access the data are performed on the inode (s) (eg, metadata) on disk associated with the data (eg, whether the requested data has changed, and how it has changed). A command to access and read it). The metadata look-ahead generator 240 analyzes the issued metadata look-ahead value 280 in the metadata look-ahead operation by comparing the issued metadata look-ahead value 280 with the total chunk in the command.

発行されたメタデータ先読み値280は、(例えば、シーケンシャル/ほぼシーケンシャルなチャンクアクセス及び/又はディレクトリ内のディスク上iノードのシーケンシャル又は非シーケンシャルアクセスに基づいて検出される)先読みされるべき全てのディスク上iノードを含む。チャンク合計は、先読みするディスク上iノードのチャンクの総数である(例えば、説明目的のために本明細書では整数「N」として表される)。例えば、チャンクアクセストラッカ230及びシーケンシャルディレクトリアクセストラッカ270は、ディスク上iノードの1KBチャンク(例えば、ディスク上iノード165(1)〜(4))又はディスク上iノードの2kチャンク(例えば、ディスク上iノード165(1)〜(8))は、(例えば、シーケンシャル/ほぼシーケンシャルなチャンクアクセス、及び/又はディレクトリ内のディスク上iノードのシーケンシャル又は非シーケンシャルアクセスに基づいて)先読みされなければならないと識別及び判定することができる。しかしながら、上述したように、非シーケンシャルなディレクトリアクセストラッカ275は、(例えば、図3Bのディレクトリ265(2)の場合に示すように)先読みする(例えば、様々な異なるチャンクの一部であり得る)いくつかの非シーケンシャルなディスク上iノードを識別することができる。したがって、特定のシナリオでは、発行されたメタデータ先読み値280は、Nに等しくても等しくなくてもよいことが理解されるであろう。   The published metadata look-ahead value 280 may be used to read all disks to be read-ahead (e.g., detected based on sequential / near-sequential chunk accesses and / or sequential or non-sequential accesses of inodes on disks in the directory). Includes the upper inode. The chunk sum is the total number of inode on-disk chunks to look ahead to (eg, represented as an integer "N" herein for purposes of explanation). For example, the chunk access tracker 230 and the sequential directory access tracker 270 may each be a 1 KB chunk of an i-node on a disk (for example, i-nodes 165 (1) to (4) on a disk) or a 2k chunk of an i-node on a disk (for example, a disk). Inodes 165 (1)-(8)) must be prefetched (e.g., based on sequential / nearly sequential chunk access and / or sequential or non-sequential access of inodes on disk in a directory). Can be identified and determined. However, as described above, the non-sequential directory access tracker 275 looks ahead (eg, as shown in the case of directory 265 (2) in FIG. 3B) (eg, may be part of a variety of different chunks). Some non-sequential on-disk inodes can be identified. Thus, it will be appreciated that in certain scenarios, the published metadata look-ahead value 280 may or may not be equal to N.

いくつかの実施形態では、メタデータ先読み生成器240は、メタデータ先読み値280とコマンド内のチャンク合計とを比較することに基づいて、I/O動作が完了するのを待つか、又は非同期メタデータ先読み命令285を発行する。I/O動作が完了している場合、待ち行列生成器290は、待ち行列を生成し、非同期メタデータ先読み命令285に含まれないチャンク合計のメタデータの残りのチャンクを含む。一方、I/O動作が完了していない場合、待ち行列生成器290は、メタデータ先読み動作においてチャンク合計を更新する。   In some embodiments, the metadata look-ahead generator 240 waits for an I / O operation to complete, based on comparing the metadata look-ahead value 280 with the total chunks in the command, or asynchronous meta-data. Issue a data prefetch instruction 285. If the I / O operation has been completed, the queue generator 290 creates a queue and includes the remaining chunks of the chunk total metadata not included in the asynchronous metadata look-ahead instruction 285. On the other hand, if the I / O operation has not been completed, the queue generator 290 updates the chunk total in the metadata look-ahead operation.

例えば、(例えば、アプリケーション130によって)I/O動作が発行された後、ディスク150に進むディスク上iノードを読み取るコマンド(又は要求)がインターセプトされる。このコマンドは、上述のiノードアクセスパターン検出方法(例えば、シーケンシャル/ほぼシーケンシャルなチャンクアクセス、及び/又はディレクトリ内のディスク上iノードのシーケンシャル又は非シーケンシャルアクセス)をトリガする。iノードアクセスパターン検出方法がディスク上iノードの先読みをトリガしない場合、メタデータ先読み生成器240は単にI/O動作が完了するのを待つ。一方、iノードアクセスパターン検出方法がディスク上iノードの先読みをトリガする場合、メタデータ先読み生成器240は、合計の発行されたメタデータ先読み(例えば、発行されたメタデータ先読み値280)がN(例えば、先読みするディスク上iノードのチャンクの総数)以下であるか否かを判定する。   For example, after an I / O operation is issued (eg, by application 130), a command (or request) to read an inode on disk that goes to disk 150 is intercepted. This command triggers the inode access pattern detection method described above (eg, sequential / nearly sequential chunk access and / or sequential or non-sequential access of inodes on disk in a directory). If the inode access pattern detection method does not trigger a prefetch of the inode on disk, the metadata prefetch generator 240 simply waits for the I / O operation to complete. On the other hand, if the inode access pattern detection method triggers the prefetch of the inode on the disk, the metadata prefetch generator 240 determines that the total issued metadata prefetch (for example, the issued metadata prefetch value 280) is N. (For example, the total number of inode chunks on the disk to be read ahead) is determined.

合計の発行されたメタデータ先読みがN以下である場合、メタデータ先読み生成器240は、非同期メタデータ読み取りの次のチャンク(例えば、Nの後の発行されたメタデータ先読み値280の次のチャンク)を有する非同期メタデータ先読み命令285を発行する。元のI/O動作が完了している場合、待ち行列生成器290は、非同期メタデータ読み取りの残りのチャンク(例えば、Nの後の発行されたメタデータ先読み値280の残りのチャンク)を有する非同期メタデータ先読み命令285を発行する別個のスレッドを生成する。元のI/O動作が完了していない場合、メタデータ先読み生成器240は、発行されたメタデータ先読み値280のカウンタをインクリメントし、発行されたメタデータ先読み値280がNに等しいかどうかを判定し、元のI/O動作が完了するのを待つ。   If the total number of issued metadata look-aheads is less than or equal to N, the metadata look-ahead generator 240 may send the next chunk of the asynchronous metadata read (eg, the next chunk of the published metadata look-ahead 280 after N). ) Is issued. If the original I / O operation has been completed, queue generator 290 has the remaining chunks of the asynchronous metadata read (eg, the remaining chunk of published metadata look-ahead 280 after N). Create a separate thread to issue the asynchronous metadata prefetch instruction 285. If the original I / O operation has not been completed, the metadata look-ahead generator 240 increments the counter of the issued metadata look-ahead value 280 to determine whether the issued metadata look-ahead value 280 is equal to N. Judge and wait until the original I / O operation is completed.

メタデータ先読み検出と非同期メタデータ先読み命令の発行とはブロックスレッドのコンテキストで実行される一方、元のI/O動作はバックグラウンドで完了するのを待っていることが理解されるであろう。これらの方法は、システム性能上のiノードアクセスパターン検出オーバーヘッドを減少させ、また、別個のスレッドの作成及びスケジューリングを回避し、これによって後続の読み取りのためのブロックの可用を遅延させることができる。
iノードのシーケンシャル及び非シーケンシャルディレクトリアクセスパターンの追跡例
It will be appreciated that the metadata look-ahead detection and asynchronous metadata look-ahead instruction issuance are performed in the context of a blocking thread, while the original I / O operation is waiting to complete in the background. These methods can reduce inode access pattern detection overhead on system performance and avoid creating and scheduling separate threads, thereby delaying the availability of blocks for subsequent reads.
Example of tracking inode sequential and non-sequential directory access patterns

いくつかの実施形態によれば、図3Aはシーケンシャルなiノード構造300Aを有するディレクトリのブロック図であり、図3Bは非シーケンシャルなiノード構造300Bを有するディレクトリのブロック図であり、図3Cはグローバルなiノードリスト(例えば、親ディレクトリリスト又はグローバルなメモリ内iノードリスト)を実装するキャッシュ300Cのブロック図である。ディレクトリのリスティングは、最初に、アプリケーションによって(例えば、アプリケーション135、アプリケーション140又は何らかの他のアプリケーションによって)実行されることが理解されるであろう。ディレクトリのリスティング中に、各ディレクトリエントリと関連付けられたディスク上iノード番号が返される。所与のディレクトリ内のディスク上iノード番号がシーケンシャルである場合(例えば、図3Aに示されるようなディレクトリ265(1))には、シーケンシャルディレクトリアクセストラッカ270は、そのディレクトリのコア内iノード内のその特定のディレクトリのシーケンシャルフラグを設定する(例えば、図2C及び図3Cに示すように、ディレクトリ265(1)のシーケンシャルフラグがグローバルiノードリスト215に設定される)。   According to some embodiments, FIG. 3A is a block diagram of a directory having a sequential inode structure 300A, FIG. 3B is a block diagram of a directory having a non-sequential inode structure 300B, and FIG. FIG. 10 is a block diagram of a cache 300C that implements a simple inode list (eg, parent directory list or global in-memory inode list). It will be appreciated that listing the directory is initially performed by the application (eg, by application 135, application 140, or some other application). During the listing of the directory, the on-disk inode number associated with each directory entry is returned. If the on-disk inode number in a given directory is sequential (eg, directory 265 (1) as shown in FIG. 3A), then sequential directory access tracker 270 will use (Eg, as shown in FIGS. 2C and 3C, the sequential flag of directory 265 (1) is set in global inode list 215).

例えば、ディレクトリ265(1)のディスク上iノードがシーケンシャルである(例えば、ディスク上iノード165(4)〜(9)がシーケンシャルにリストされる)ため、シーケンシャルディレクトリアクセストラッカ270は、(例えば、図2C及び図3Cにおいてグローバルiノードリスト215のシーケンシャルフラグフィールド260内で「1」によって示される)ディレクトリ265(1)に対するディレクトリiノード130(1)内(例えば、コア内iノード内)にシーケンシャルフラグを設定する。これに対して、ディレクトリ265(2)のディスク上iノードは非シーケンシャルである(例えば、ディスク上iノード165(4)、165(9)、165(15)、165(11)、165(19)及び165(6)は非シーケンシャルにリストされる)ため、非シーケンシャルディレクトリアクセストラッカ275は、(例えば、図2C及び図3Cにおいてグローバルiノードリスト215のシーケンシャルフラグフィールド260内で「0」によって示される)ディレクトリ265(2)のディレクトリiノード130(2)内(例えば、コア内iノード内)にシーケンシャルフラグを設定しない。   For example, since the i-nodes on the disk of the directory 265 (1) are sequential (for example, the i-nodes 165 (4) to (9) on the disk are sequentially listed), the sequential directory access tracker 270 (for example, In FIG. 2C and FIG. 3C, the directory inode 130 (1) for the directory 265 (1) (indicated by “1” in the sequential flag field 260 of the global inode list 215) sequentially in the directory inode 130 (1) (eg, in the in-core inode). Set the flag. In contrast, the inodes on disk of directory 265 (2) are non-sequential (for example, inodes 165 (4), 165 (9), 165 (15), 165 (11), 165 (19) on disk. ) And 165 (6) are listed non-sequentially, so the non-sequential directory access tracker 275 (e.g., as indicated by a "0" in the sequential flag field 260 of the global inode list 215 in FIGS. 2C and 3C). The sequential flag is not set in the directory inode 130 (2) of the directory 265 (2) (for example, in the in-core inode).

前述したように、メタデータ先読み動作を実行するメタデータ先読み命令は、ディレクトリのリスティングが実行された後に発行され得る。一実施形態では、アプリケーションはディスク150の一部であるディレクトリのリスティングを実行する。例えば、図3Bに示すようなディレクトリ265(2)のリスティングは、ディスク上iノード165(4)を有するファイル315(1)、ディスク上iノード165(9)を有するファイル315(2)、ディスク上iノード165(15)を有するファイル315(3)、ディスク上iノード165(11)を有するファイル315(4)、ディスク上iノード165(19)を有するファイル315(5)及びディスク上iノード165(6)を有するファイル315(6)を返す。このシナリオでは、ディレクトリアクセストラッカ235は、前述のiノード番号(例えば、ディスク上iノード165(4)、165(9)、165(15)、165(11)、165(19)及び165(6))のリストを含むメモリ内データ構造(例えば、メモリ内iノードリスト)を作成して保持し、このメモリ内iノードリストをディレクトリ265(2)のコア内iノード(例えば、ディレクトリiノード130(2))と関連付ける。   As described above, the metadata look-ahead instruction for performing the metadata look-ahead operation may be issued after the directory listing has been performed. In one embodiment, the application performs a listing of a directory that is part of disk 150. For example, the listing of directory 265 (2) as shown in FIG. 3B may be a file 315 (1) with inode 165 (4) on disk, a file 315 (2) with inode 165 (9) on disk, File 315 (3) with upper inode 165 (15), File 315 (4) with inode 165 (11) on disk, File 315 (5) with inode 165 (19) on disk and i on disk Returns file 315 (6) with node 165 (6). In this scenario, the directory access tracker 235 uses the inode numbers (eg, on-disk inodes 165 (4), 165 (9), 165 (15), 165 (11), 165 (19) and 165 (6) )), Create and maintain an in-memory data structure (for example, an in-memory inode list), and store the in-memory inode list in the in-core inode of the directory 265 (2) (for example, the directory inode 130). (2)).

例えば、アプリケーション130がファイル315(1)にアクセスし、したがってディスク上iノード165(4)にアクセスして読み取る必要がある場合、非シーケンシャルディレクトリアクセストラッカ275は、ディスク150からディスク上iノード165(4)を読み取り、ディスク上iノード165(4)の親ディレクトリiノード番号がディレクトリiノード130(2)であると判定する。次に、非シーケンシャルディレクトリアクセストラッカ275は、図3Cに示すように、ディレクトリiノード130(2)がキャッシュ205内に存在するかどうかをチェックする。ディレクトリiノード130(2)がキャッシュ205内に存在しない場合、非シーケンシャルディレクトリアクセストラッカ275は、(例えば、図2C及び図3Cに太字で示される)ディレクトリiノード130(2)をキャッシュ205に追加する。   For example, if the application 130 accesses the file 315 (1) and therefore needs to access and read the on-disk inode 165 (4), the non-sequential directory access tracker 275 will 4), and determines that the parent directory inode number of the inode 165 (4) on the disk is the directory inode 130 (2). Next, non-sequential directory access tracker 275 checks whether directory inode 130 (2) exists in cache 205, as shown in FIG. 3C. If directory inode 130 (2) is not in cache 205, non-sequential directory access tracker 275 adds directory inode 130 (2) to cache 205 (eg, shown in bold in FIGS. 2C and 3C). I do.

次に、アプリケーション130が、ファイル315(2)にアクセスし、したがってディスク150からディスクiノード165(9)にアクセスして読み取る場合、非シーケンシャルディレクトリアクセストラッカ275は、ディスク上iノード165(9)の親ディレクトリiノード番号もディレクトリiノード130(2)であると判定する。ディレクトリiノード130(2)がキャッシュ205に追加されているため、メタデータ先読み生成器240は、ディレクトリ265(2)下の残りのファイル(例えば、ファイル315(3)〜(6))は先読み可能であると判定する。次いで、メタデータ先読み生成器240は、メモリ内iノードリストにアクセスし、ファイル315(3)〜(6)(例えば、ディスク上iノード165(15)、165(11)、165(19)及び165(6))と関連付けられた残りのディスク上iノード番号を識別し、ディスク上iノード165(15)、165(11)、165(19)及び165(6)をディスク150からメモリ115へ取り出すようにメタデータ先読み動作を起こすメタデータ先読み命令を生成する。   Next, when the application 130 accesses the file 315 (2), and thus accesses and reads from the disk 150 to the disk inode 165 (9), the non-sequential directory access tracker 275 causes the on-disk inode 165 (9) Is also determined to be the directory inode 130 (2). Since the directory inode 130 (2) has been added to the cache 205, the metadata prefetch generator 240 reads ahead the remaining files (for example, files 315 (3) to (6)) under the directory 265 (2). It is determined that it is possible. Next, the metadata prefetch generator 240 accesses the in-memory inode list and stores the files 315 (3) to (6) (for example, the inodes 165 (15), 165 (11), 165 (19) and 165 (19) on the disk). 165 (6)) and the remaining in-disk inode numbers associated with the disk are identified and the on-disk inodes 165 (15), 165 (11), 165 (19) and 165 (6) are transferred from the disk 150 to the memory 115 Generate a metadata prefetch instruction that causes a metadata prefetch operation to be fetched.

ディレクトリアクセストラッカ235は、ディスク上iノードのチャンクアクセスパターン(複数可)、並びに、ディレクトリの一部であるディスク上iノードのシーケンシャル及び非シーケンシャルアクセスパターン(複数可)を追跡して、iノード及びデータアクセスを加速するメタデータ先読み動作の候補であるディスク上iノードを識別することが理解されるであろう。
iノードアクセスパターン(複数可)を追跡してメタデータ先読み命令を発行するプロセス
The directory access tracker 235 tracks the chunk access pattern (s) of the inodes on disk and the sequential and non-sequential access pattern (s) of the inodes on disk that are part of the directory, and It will be appreciated that identifying inodes on disk that are candidates for a metadata look-ahead operation that accelerates data access.
A process of tracking an inode access pattern (s) and issuing a metadata prefetch instruction

図4Aは、一実施形態に係る、ディスクからメモリへディスク上iノードを先取りする先読み命令を発行するプロセスを示すフローチャート400Aである。プロセスは、405において、メタデータ記憶領域(例えば、構造ファイル160)にアクセスすることによって開始する。410において、プロセスは、最後に読み取ったメタデータチャンクの位置(例えば、最後に読み取ったメタデータチャンク245の終了オフセット)を判定する。415において、プロセスは、(例えば、ディスク上iノードを読み取る)コマンド(又は要求)が受信されたかどうかを判定する。コマンドがまだ受信されていない場合、プロセスは415にループバックする。一方、コマンドが受信された場合、プロセスは、420において、メタデータ記憶領域内のコマンドのオブジェクトの位置(例えば、現在のメタデータ読み取り動作250の開始オフセット)を判定する。   FIG. 4A is a flowchart 400A illustrating a process of issuing a prefetch instruction to prefetch an inode on disk from disk to memory, according to one embodiment. The process begins at 405 by accessing a metadata storage area (eg, structure file 160). At 410, the process determines the location of the last read metadata chunk (eg, the ending offset of the last read metadata chunk 245). At 415, the process determines whether a command (or request) has been received (eg, read an inode on disk). If a command has not been received, the process loops back to 415. On the other hand, if a command was received, the process determines, at 420, the location of the command's object in the metadata storage area (eg, the starting offset of the current read metadata operation 250).

425において、プロセスは、メタデータ先読みが実行され得るかどうか(又は、メタデータ先読みが必要又は実行可能であるかどうか)を判定する。メタデータ先読みが実行できない場合、プロセスは、430において、通常の処理を可能にする(例えば、メタデータ先読み動作は実行されず、ディスク上iノードはディスクからメモリへ先取りされない)。一方、メタデータ先読みが実行できる(及び/又は必要及び/又は実行可能である)場合、プロセスは、435において、メタデータ先読み動作を発行する(又は、例えばメタデータ先読み生成器240を用いてメタデータ先読み命令を発行して、コンピューティングデバイス105にメタデータ先読み動作を実行させてディスクからメモリへディスク上iノードのチャンク(複数可)を取り出す)。440において、プロセスは、(例えば、ディスク上iノードにアクセスし、及び/又はこれを読み取る)新たなコマンドが存在するかどうかを判定する。ディスク上iノードにアクセスし、及び/又はこれを読み取る新たなコマンドが存在する場合、プロセスは405にループバックする。そうでない場合、プロセスは終了する。   At 425, the process determines whether metadata prefetching can be performed (or whether metadata prefetching is necessary or executable). If metadata prefetching cannot be performed, the process allows normal processing at 430 (eg, metadata prefetching operations are not performed and inodes on disk are not prefetched from disk to memory). If, on the other hand, metadata prefetching can be performed (and / or is required and / or executable), the process issues a metadata prefetching operation at 435 (or, for example, using metadata prefetching generator 240). Issue a data prefetch command to cause the computing device 105 to perform the metadata prefetch operation to retrieve the inode chunk (s) on disk from disk to memory). At 440, the process determines whether there is a new command (eg, accessing and / or reading an inode on disk). If there is a new command to access and / or read the inode on disk, the process loops back to 405. If not, the process ends.

図4Bは、一実施形態に係る、ディスク上iノードと関連付けられたオフセットメタデータを記憶するプロセスを示すフローチャート400Bである。プロセスは、445において、メタデータ記憶領域(例えば、構造ファイル160)内のメタデータチャンクのオフセット位置(例えば、最後に読み取ったメタデータチャンク245の終了オフセット)を判定することによって開始する。450において、プロセスは、メモリ(例えば、メモリ115)内のコア内iノード(例えば、コア内iノードリスト125)を作成し、455において、プロセスは、コア内iノード内のメタデータチャンクのオフセット位置を記憶する。   FIG. 4B is a flowchart 400B illustrating a process for storing offset metadata associated with an inode on disk, according to one embodiment. The process begins at 445 by determining the offset position of the metadata chunk in the metadata storage area (eg, the structure file 160) (eg, the ending offset of the last read metadata chunk 245). At 450, the process creates an in-core inode (e.g., in-core inode list 125) in memory (e.g., memory 115) and at 455, the process offsets the metadata chunk in the in-core inode. Remember the position.

455において、プロセスは、現在のメタデータ読み取り動作の位置(例えば、現在のメタデータ読み取り動作250の開始オフセット)が、メタデータチャンクのオフセット位置の隣にある(又は隣接している)かどうかを判定する。現在のメタデータ読み取り動作の位置が、メタデータチャンクのオフセット位置の隣にない場合、プロセスは、465において、現在のメタデータ読み取り動作によって読み取られたメタデータチャンクのオフセット位置(例えば、現在のメタデータ読み取り動作の終了オフセット)を記憶する。一方、現在のメタデータ読み取り動作の位置がメタデータチャンクのオフセット位置の隣にある場合、プロセスは、470において、メタデータ先読み動作を発行し(又はメタデータ先読み命令を発行し)、475において、メタデータ先読み動作によって読み取られたメタデータチャンクのオフセット位置を記憶する。480において、プロセスは、新たな読み取り要求(例えば、アプリケーションI/O動作によって引き起こされるディスク上iノードを読み取るコマンド)が存在するか否かを判定する。ディスク上iノードを読み取る新たな読み取り要求がある場合、プロセスは460にループバックする。そうでない場合、プロセスは終了する。   At 455, the process determines whether the location of the current metadata read operation (eg, the starting offset of the current metadata read operation 250) is next (or adjacent) to the offset location of the metadata chunk. judge. If the position of the current metadata read operation is not next to the offset position of the metadata chunk, the process proceeds to 465 the offset position of the metadata chunk read by the current metadata read operation (eg, the current metadata chunk). (End offset of the data reading operation). On the other hand, if the position of the current metadata read operation is next to the offset position of the metadata chunk, the process issues a metadata prefetch operation at 470 (or issues a metadata prefetch instruction) and at 475 The offset position of the metadata chunk read by the metadata prefetch operation is stored. At 480, the process determines whether there is a new read request (eg, a command to read an inode on disk caused by an application I / O operation). If there is a new read request to read the inode on disk, the process loops back to 460. If not, the process ends.

図4Aのフローチャート400A及び図4Bのフローチャート400Bに示されるプロセスは、ディスク上iノードのチャンクアクセスパターンを追跡する例であることが理解されるであろう。ディスク上iノードはディスク(例えば、ディスク150)上に永続的に記憶されているため、チャンクアクセストラッカ230は、構造ファイル160にアクセスして、最後に読み取ったメタデータチャンクの終了オフセット、並びに現在のメタデータ読み取り動作の開始オフセットを判定することができる。チャンクアクセストラッカ230はこの位置情報を保存することができるため、チャンクアクセストラッカ230は、ディスク上iノードがアプリケーション135又はアプリケーション140によってシーケンシャル又はほぼシーケンシャルにアクセスされているかどうかを判定することができる。この記憶された位置情報に基づいて、アクセスされる可能性が高いディスク上iノードは、先読みされ、ディスクからメモリへと先取りされ、したがって、それらのディスク上iノードに対する後続のiノードアクセスを加速することができる。   It will be appreciated that the process shown in flowchart 400A of FIG. 4A and flowchart 400B of FIG. 4B is an example of tracking the chunk access pattern of an inode on disk. Since the on-disk inode is permanently stored on the disk (eg, disk 150), the chunk access tracker 230 accesses the structure file 160 to determine the end offset of the last metadata chunk read, as well as the current The start offset of the metadata reading operation can be determined. The chunk access tracker 230 can store this location information so that the chunk access tracker 230 can determine whether the inodes on disk are being accessed sequentially or nearly sequentially by the application 135 or the application 140. Based on this stored location information, on-disk inodes that are likely to be accessed are prefetched and preempted from disk to memory, thus accelerating subsequent inode access to those on-disk inodes. can do.

図5Aは、一実施形態に係る、ディレクトリのファイル構造を判定するプロセスを示すフローチャート500Aである。当該プロセスは、505において、ディレクトリ内のファイル(例えば、図3Aに示すようなディレクトリ265(1)のファイル135(1)、又は図3Bに示すようなディレクトリ265(2)内のファイル135(1))にアクセスすることによって開始する。510において、プロセスは、ディレクトリのエントリ(例えば、iノード番号)のグローバルiノードリストを探索する。515において、プロセスは、ディレクトリがグローバルiノードリスト内に存在するか否か(例えば、ディレクトリ番号265(1)のiノード番号であるディレクトリiノード130(1)が存在し、グローバルiノードリスト215にリストされているかどうか)を判定する。   FIG. 5A is a flowchart 500A illustrating a process for determining the file structure of a directory, according to one embodiment. The process may call 505 a file in the directory (eg, file 135 (1) in directory 265 (1) as shown in FIG. 3A or file 135 (1) in directory 265 (2) as shown in FIG. 3B. Start by accessing)). At 510, the process searches the global inode list for directory entries (eg, inode numbers). At 515, the process determines whether the directory is in the global inode list (eg, directory inode 130 (1), which is the inode number of directory number 265 (1), and global inode list 215 Is listed in the list).

ディレクトリがグローバルiノードリスト内に存在しない場合、プロセスは、520において、グローバルiノードリスト内のディスク上iノード(例えば、図2C及び図3Cのディレクトリ265(3)に関して示される)の新たなエントリを追加する(例えば、親ディレクトリiノード番号を追加する)。ディレクトリがグローバルiノードリスト内に存在する場合、プロセスは、525において、ディレクトリのファイル構造(例えば、ディレクトリ内のディスク上iノードがシーケンシャルに又は非シーケンシャルにリストされているかどうか)を判定する。530において、プロセスは、ディスク上iノードの別のアクセスがあるかどうかを判定する。ディスク上iノードの別のアクセスがある場合、プロセスは505にループバックする。そうでない場合、プロセスは終了する。   If the directory does not exist in the global inode list, the process may proceed at 520 with a new entry for the on-disk inode in the global inode list (eg, as shown for directory 265 (3) in FIGS. 2C and 3C). (For example, a parent directory inode number is added). If the directory is in the global inode list, the process determines at 525 the file structure of the directory (eg, whether the inodes on disk in the directory are listed sequentially or non-sequentially). At 530, the process determines if there is another access of the inode on the disk. If there is another access of the inode on disk, the process loops back to 505. If not, the process ends.

図5Bは、一実施形態に係る、ディスク上iノードのメタデータ先読み命令を発行するプロセスを示すフローチャート500Bである。当該プロセスは、所与のディレクトリ内のエントリのディスク上iノード番号がシーケンシャルであるか非シーケンシャルである(例えば、ディレクトリのリスティングを実行した結果としてシーケンシャル又は非シーケンシャルにリストされる)かを判定することによって、535において開始する。例えば、図3Aでは、エントリのディスク上iノード番号がシーケンシャルにリストされ、図3Bでは、エントリのディスク上iノード番号が非シーケンシャルにリストされる。   FIG. 5B is a flowchart 500B illustrating a process of issuing a metadata prefetch instruction for an inode on disk, according to one embodiment. The process determines whether the on-disk inode number of an entry in a given directory is sequential or non-sequential (eg, listed as sequential or non-sequential as a result of performing a directory listing). This starts at 535. For example, in FIG. 3A, the on-disk inode numbers of the entries are listed sequentially, and in FIG. 3B, the on-disk inode numbers of the entries are listed non-sequentially.

エントリのディスク上iノード番号が非シーケンシャルにリストされる場合、プロセスは、540において、グローバルiノードリスト(例えば、図3Cに示すような親ディレクトリリスト)にアクセスする。545において、プロセスは、グローバルiノードリスト上の親ディレクトリノードを、(例えば、ディスク上iノードの親ディレクトリiノード番号を使用して)識別する。550において、プロセスは、問題のディレクトリと関連付けられたiノードリストを、(iノードリストがリスティングプロセス中にメモリに記憶及び保持され得るため、ディスク150から、又はメモリから)取り出し、555において、iノードリスト上のディスク上iノードに対するメタデータ先読み命令を発行する。   If the entry's on-disk inode number is listed non-sequentially, the process accesses a global inode list at 540 (eg, a parent directory list as shown in FIG. 3C). At 545, the process identifies the parent directory node on the global inode list (eg, using the parent directory inode number of the inode on disk). At 550, the process retrieves the inode list associated with the directory in question (either from disk 150 or from memory, as the inode list may be stored and maintained in memory during the listing process), and at 555, retrieves the inode list at 555. Issues a metadata prefetch instruction for the inode on the disk on the node list.

一方、エントリのディスク上iノード番号がシーケンシャルにリストされる場合、プロセスは、560において、グローバルiノードリストにアクセスし、565において、(例えば、ディスク上iノードの親ディレクトリ番号を使用して)グローバルiノードリスト上でアクセスされるファイルの親ディレクトリのメモリ内iノードを識別する。570において、プロセスは、ディレクトリがシーケンシャルフラグセットを有することを検証し、575において、問題のディレクトリにリストされた残りのディスク上iノードに関するメタデータ先読み命令を発行する。580において、プロセスは、ディスク上iノード(複数可)の別のアクセスがあるかどうかを判定する。ディスク上iノード(複数可)の別のアクセスがある場合、プロセスは535にループバックする。そうでない場合、プロセスは終了する。   On the other hand, if the entry's on-disk inode number is listed sequentially, the process accesses the global inode list at 560 and at 565 (eg, using the parent inode's directory number on disk). Identify the in-memory inode of the parent directory of the file accessed on the global inode list. At 570, the process verifies that the directory has a sequential flag set, and at 575, issues a metadata look-ahead instruction for the remaining on-disk inodes listed in the directory in question. At 580, the process determines if there is another access of the inode (s) on the disk. If there is another access of the inode (s) on disk, the process loops back to 535. If not, the process ends.

図5Aのフローチャート500A及び図5Bのフローチャート500Bに示すプロセスは、ディレクトリが関与しているときに、ディスク上iノードのアクセスパターン(複数可)を追跡するための親ディレクトリリストを使用する例であることが理解されるであろう。前述のように、アプリケーションは、1つ以上のディレクトリのリスティングを実行して、所与のディレクトリ内のディスク上iノードがシーケンシャル又は非シーケンシャルにリストされているかを判定することができる。ディレクトリは典型的にはディスク(例えば、ディスク150)上に記憶されているため、所与のディレクトリにファイルがアクセスされるたびにディレクトリのデータ及び/又はファイル構造を判定することは、著しいコンピューティングリソースを消費する可能性がある。しかしながら、アクセスパターントラッカ225と親ディレクトリリストとの両方はメモリ115の一部であるため、また親ディレクトリリストは複数のディレクトリのデータ及び/又はファイル構造のリスティングを保持するため、アクセスパターントラッカ225は、親ディレクトリリストを単に使用して、所与のディレクトリ内のファイルがアクセスされるたびにディスク150にアクセスすることなく、所与のディレクトリのコア内iノードがシーケンシャルであるか非シーケンシャルであるかを判定することができる。   The process shown in flowchart 500A of FIG. 5A and flowchart 500B of FIG. 5B is an example of using a parent directory list to track the access pattern (s) of an inode on disk when a directory is involved. It will be appreciated. As described above, an application may perform a listing of one or more directories to determine if inodes on disk in a given directory are listed sequentially or non-sequentially. Because the directories are typically stored on disk (eg, disk 150), determining the data and / or file structure of a directory each time a file is accessed in a given directory is a significant computing challenge. Can consume resources. However, because both the access pattern tracker 225 and the parent directory list are part of the memory 115, and because the parent directory list holds a listing of data and / or file structures for multiple directories, the access pattern tracker 225 Simply using the parent directory list to determine whether the in-core inodes in a given directory are sequential or non-sequential without accessing disk 150 each time a file in the given directory is accessed. Can be determined.

図6Aは、一実施形態に係る、入力/出力(I/O)動作を処理するプロセスを示すフローチャート600Aである。当該プロセスは、605において、ディスク上iノード(例えば、構造ファイル160内のメタデータユニット)と関連付けられたメタデータチャンクに対して発行されたI/O動作を検出することによって開始する。610において、プロセスは、I/O動作が検出されるかどうかを判定する。I/O動作が検出されない場合、プロセスは605に戻る。一方、I/O動作が検出される場合、プロセスは、615において、ディスク上iノード(複数可)にアクセスし、及び/又はこれを読み出すコマンド(又は要求)をインターセプトする。   FIG. 6A is a flowchart 600A illustrating a process for processing input / output (I / O) operations according to one embodiment. The process begins at 605 by detecting an I / O operation issued for a metadata chunk associated with an inode on disk (eg, a metadata unit in the structure file 160). At 610, the process determines whether an I / O operation is detected. If no I / O activity is detected, the process returns to 605. On the other hand, if an I / O operation is detected, at 615, the process intercepts a command (or request) to access and / or read the inode (s) on disk.

620において、プロセスは、メタデータ先読み動作のメタデータ先読み値にアクセスし、625において、(発行された合計)メタデータ先読み値と、先読みするメタデータチャンクの総数とを比較することによって、メタデータ先読み値を解析する。630において、プロセスは、I/O動作が完了するのを待っており、635において、非同期メタデータ先読み命令(例えば、メタデータ先読み生成器240を使用して)を発行する。640において、プロセスは、別のI/O動作が存在するかどうかを判定する。別のI/O動作が存在する場合、プロセスは605にループする。そうでない場合、プロセスは終了する。   At 620, the process accesses the metadata look-ahead value of the metadata look-ahead operation, and at 625, compares the (issued total) metadata look-ahead value with the total number of metadata chunks to look ahead. Analyze the look-ahead value. At 630, the process is waiting for the I / O operation to complete, and at 635, issues an asynchronous metadata look-ahead instruction (eg, using metadata look-ahead generator 240). At 640, the process determines whether another I / O operation exists. If another I / O operation exists, the process loops to 605. If not, the process ends.

図6Bは、一実施形態による、iノードを先取りすることに関連するI/O動作を処理するプロセスを示すフローチャートである。当該プロセスは、645において、所与のI/O動作が完了しているかどうかを判定することによって開始する。I/O動作が完了していない場合、プロセスは、650において、チャンク合計を更新する(例えば、先読みするメタデータチャンクの総数、又は「N」)を更新し、625に進む(図6A)。一方、I/O動作が完了している場合、プロセスは、660において、待ち行列(例えば、別個のスレッド)を生成し、665において、(例えば、図6Aの)非同期メタデータ先読み命令に含まれないメタデータの残りのチャンクを含むメタデータ先読みを発行する。670において、プロセスは、インターセプトされる別のコマンド(例えば、ディスク上iノード(複数可)を読み取る要求)が存在するかどうかを判定する。インターセプトされる別のコマンドが存在する場合、プロセスは、(図6A内の)615に戻る。そうでない場合、プロセスは終了する。   FIG. 6B is a flowchart illustrating a process for handling I / O operations related to preempting an inode, according to one embodiment. The process begins at 645 by determining whether a given I / O operation has been completed. If the I / O operation has not been completed, the process updates the chunk total at 650 (eg, the total number of metadata chunks to look ahead, or “N”), and proceeds to 625 (FIG. 6A). On the other hand, if the I / O operation has completed, the process creates a queue (eg, a separate thread) at 660 and includes at 665 an asynchronous metadata look-ahead instruction (eg, FIG. 6A). Issue a metadata lookahead that includes the remaining chunks of missing metadata. At 670, the process determines whether there is another command to be intercepted (eg, a request to read inode (s) on disk). If there is another command to be intercepted, the process returns to 615 (in FIG. 6A). If not, the process ends.

図6Aのフローチャート600A及び図6Bのフローチャート600Bに示すプロセスを使用して、発行されたメタデータ先読み値とチャンク合計とを比較することによって、メタデータの様々な異種チャンクの一部であるディスク上iノードを識別して先取りすることができることが理解されるであろう。iノードリストの全て又は一部をディレクトリリスティングプロセス中にメモリに先取りすることができるため、メタデータ先読み命令の候補であるディスク上iノードは、そのようなディスク上がシーケンシャルにアクセスされない場合に識別され得る。また、メタデータ先読み検出と非同期メタデータ先読み命令の発行とはブロックスレッドのコンテキストで実行される一方、元のI/O動作はバックグラウンドで完了するのを待っていることが理解されるであろう。これらの方法は、システム性能上のiノードアクセスパターン検出オーバーヘッドを減少させ、また、別個のスレッドの作成及びスケジューリングを回避し、これによって後続の読み取りのためのブロックの可用を遅延させることができる。   By comparing the published metadata look-ahead value with the chunk sum using the process shown in flowchart 600A of FIG. 6A and flowchart 600B of FIG. 6B, on disk that is part of various heterogeneous chunks of metadata. It will be appreciated that inodes can be identified and preempted. Because all or part of the inode list can be prefetched into memory during the directory listing process, inodes on disk that are candidates for metadata look-ahead instructions are identified when such disks are not accessed sequentially. Can be done. It will also be appreciated that metadata prefetch detection and asynchronous metadata prefetch instruction issuance are performed in the context of a blocking thread, while the original I / O operation is waiting to complete in the background. Would. These methods can reduce inode access pattern detection overhead on system performance and avoid creating and scheduling separate threads, thereby delaying the availability of blocks for subsequent reads.

図7Aは、特定の実施形態に係る、ディスク上iノードのアクセスを処理し、ディレクトリのエントリをグローバルiノードリストに追加するプロセスを示すフローチャートである。このプロセスは、705において、ディスク上iノードのアクセス(複数可)(例えば、1つ以上のI/O動作によって引き起こされるディスク上iノード(複数可)の読み出しコマンド/要求)が存在するかどうかを判定することによって開始する。ディスク上iノード(複数可)のアクセスがない場合、プロセスは705にループバックする。一方、ディスク上iノード(複数可)のアクセスが存在する場合、プロセスは、710において、(例えば、親ディレクトリiノード番号を使用して)ディスク上iノード(複数可)と関連付けられたディレクトリを識別する。715において、プロセスは、グローバルiノードリスト(例えば、グローバルiノードリスト215及び/又は親ディレクトリリスト)にアクセスする。   FIG. 7A is a flowchart illustrating a process for handling in-disk inode access and adding directory entries to a global inode list, according to certain embodiments. The process, at 705, determines if there is access (s) of the inode (s) on disk (eg, a read command / request for inode (s) on disk caused by one or more I / O operations). To start. If there is no access to the inode (s) on the disk, the process loops back to 705. On the other hand, if there is access to the inode (s) on disk, the process proceeds to step 710 with the directory associated with the inode (s) on disk (eg, using the parent directory inode number). Identify. At 715, the process accesses a global inode list (eg, global inode list 215 and / or parent directory list).

720において、プロセスは、ディレクトリがグローバルiノードリスト上にあるか否か(例えば、iノードの親ディレクトリiノード番号がグローバルiノードリスト上に存在するかどうか)を判定する。ディレクトリがグローバルiノードリスト上にない場合、プロセスは、725において、(例えば、ノードの親ディレクトリiノード番号のエントリをグローバルiノードリストに追加することによって)グローバルiノードリストにディレクトリを追加する。一方、ディレクトリがグローバルiノードリスト上にある場合、プロセスは、730において、シーケンシャルフラグがディレクトリに対して設定されていることを検証し、735において、(例えば、ディレクトリ(又はディレクトリの一部)にリストされた)メタデータ先読み命令を発行する。740において、プロセスは、ディスク上iノード(複数可)の別のアクセスが存在するかどうかを判定する。別のアクセスが存在する場合、プロセスは705にループバックする。そうでない場合、プロセスは終了する。   At 720, the process determines whether the directory is on the global inode list (eg, whether the parent directory inode number of the inode is on the global inode list). If the directory is not on the global inode list, the process adds the directory to the global inode list at 725 (eg, by adding an entry for the node's parent directory inode number to the global inode list). On the other hand, if the directory is on the global inode list, the process verifies at 730 that the sequential flag is set for the directory, and at 735 (eg, the directory (or part of the directory) Issue a metadata look-ahead instruction (listed). At 740, the process determines whether there is another access of the inode (s) on the disk. If another access exists, the process loops back to 705. If not, the process ends.

図7Bは、一実施形態に係る、ディスク上iノードにアクセスする要求を処理するプロセスを例示するフローチャートである。プロセスは、745において、I/O動作を検出することによって開始する。750において、プロセスは、ディスク上iノード(複数可)にアクセスする(又は読み取る)コマンド(又は要求)をインターセプトする。755において、プロセスは、(例えば、方法の中でもとりわけ、チャンクアクセス、及びシーケンシャル又は非シーケンシャルアクセスに基づいて検出された)ディスク上iノードアクセスパターンが、ディスク上iノード(複数可)のメタデータ先読みをトリガし、引き起こし、又はもたらすかどうかを判定する。ディスク上iノードアクセスパターンが、(例えば、チャンクアクセス、シーケンシャルアクセス又は非シーケンシャルアクセスに基づいて)メタデータ先読みをトリガしない場合、プロセスは、760において、I/O動作が完了するのを待つ。I/O動作が完了するのを待つプロセス例が、図6Bのフローチャート600Bに示されていることに留意されたい。   FIG. 7B is a flowchart illustrating a process for processing a request to access an inode on disk, according to one embodiment. The process begins at 745 by detecting an I / O operation. At 750, the process intercepts a command (or request) to access (or read) the inode (s) on disk. At 755, the process determines that the inode-on-disk access pattern (e.g., detected based on chunk access and sequential or non-sequential access, among other methods) is a metadata look-ahead of the inode (s) on disk. Is triggered, triggered or brought. If the inode-on-disk access pattern does not trigger metadata look-ahead (eg, based on chunk, sequential, or non-sequential access), the process waits at 760 for the I / O operation to complete. Note that an example process for waiting for the I / O operation to complete is shown in flowchart 600B of FIG. 6B.

一方、ディスク上iノードアクセスパターンがメタデータ先読みをトリガする場合、プロセスは、765において、チャンク合計(例えば、先読みするディスク上iノードメタデータチャンクの総数、又は「N」)が、メタデータ先読み値(例えば、発行されたメタデータ先読み値280又は合計の発行されたメタデータ先読み値)以下であるかどうかを判定する。チャンク合計がメタデータ先読み値以上である場合、プロセスは、760において、I/O動作が完了するのを待つ。一方、チャンク合計がメタデータ先読み値以下である場合、プロセスは、770において、非同期メタデータ先読みの次のチャンクを発行し、775において、I/O動作が完了しているかどうかを判定する。I/O動作が完了していない場合、プロセスは、780において、(例えば、発行されたメタデータ先読みに対する)カウンタをインクリメントし、765にループバックする。一方、I/O動作が完了している場合、プロセスは、785において別個のスレッドを生成し、非同期メタデータ先読みの残りのチャンクを発行する。790において、プロセスは、別のI/O動作が存在するかどうかを判定する。別のI/O動作が存在する場合、プロセスは745にループバックする。そうでない場合、プロセスは終了する。   On the other hand, if the on-disk i-node access pattern triggers metadata prefetch, the process proceeds to 765 where the total chunk (e.g., the total number of on-disk i-node metadata chunks to prefetch, or "N") is It is determined whether the value is equal to or less than a value (for example, the issued metadata look-ahead value 280 or the total issued metadata look-ahead value). If the chunk total is greater than or equal to the metadata look-ahead value, the process waits at 760 for the I / O operation to complete. On the other hand, if the total chunk is less than or equal to the metadata look-ahead value, the process issues the next chunk of the asynchronous metadata look-ahead at 770 and determines at 775 whether the I / O operation has been completed. If the I / O operation has not completed, the process increments a counter (eg, for the published metadata look-ahead) at 780 and loops back to 765. On the other hand, if the I / O operation has completed, the process creates a separate thread at 785 and issues the remaining chunk of asynchronous metadata look-ahead. At 790, the process determines whether another I / O operation exists. If another I / O operation exists, the process loops back to 745. If not, the process ends.

典型的には、I/O動作がブロックされる場合、スレッドはそれ以上進行しない。iノードアクセスパターン検出及びメタデータ先読み生成の方法、システム及びプロセスは、ブロックスレッドのコンテキストで実行され(及び元のI/Oがバックグラウンドで完了するのを待っている間)、システム性能に対するiノードアクセスパターン検出オーバーヘッドが低減されることが理解されるであろう。加えて、元のI/O動作が完了することを可能にすることは、また、別個のスレッドを作成及びスケジューリングするコストを回避することができる(これにより後続の読み取り動作に対するデータブロックの可用を遅延させることができる)。   Typically, when an I / O operation is blocked, the thread does not progress any further. The method, system and process of inode access pattern detection and metadata prefetch generation are performed in the context of a blocking thread (and while waiting for the original I / O to complete in the background) and have an i. It will be appreciated that the node access pattern detection overhead is reduced. In addition, allowing the original I / O operation to complete can also avoid the cost of creating and scheduling a separate thread (this makes the data block available for subsequent read operations). Can be delayed).

また、属性などの他のデータ構造がノードと関連付けられ得ることに留意されたい。本明細書に記載される、iノードアクセスパターン検出及び発行メタデータ先読み命令に関連する方法、システム及びプロセスは、メモリ内のこれらの(他の)データ構造をプレポピュレートすることができ、様々なiノードロックを非同期的に初期化することができる。したがって、本明細書に記載される方法、システム及びプロセスは、能力の中でもとりわけ、チャンクアクセス、シーケンシャルアクセス及び非シーケンシャルアクセスに基づいて、iノードのアクセスパターンを追跡することが可能であり、また、能力の中でもとりわけ、iノードに対する先読み命令を発行することができることが理解されるであろう。
コンピューティング環境例
Also note that other data structures, such as attributes, may be associated with the node. The methods, systems and processes described herein relating to inode access pattern detection and issuing metadata look-ahead instructions can pre-populate these (other) data structures in memory and provide various The inode lock can be initialized asynchronously. Accordingly, the methods, systems and processes described herein are capable of tracking inode access patterns based on chunked access, sequential access and non-sequential access, among other capabilities, and It will be appreciated that, among other capabilities, a look-ahead instruction for an inode can be issued.
Example of computing environment

図8は、一実施形態による、アクセスパターントラッカ及びメタデータ先読み生成器がソフトウェアに実装され得る方法を示すコンピューティングシステム800のブロック図である。コンピューティングシステム800は、コンピュータ可読命令を実行することができる任意のシングル又はマルチプロセッサコンピューティングデバイスあるいはシステムを広く表す。コンピューティングシステム800の例としては、ワークステーション、パーソナルコンピュータ、ラップトップ、クライアント側端末、サーバ、分散型コンピューティングシステム、携帯用デバイス(例えば、パーソナル携帯情報機器、及び携帯電話)、ネットワークアプライアンス、記憶制御装置(例えば、配列制御装置、テープドライブ制御装置、又はハードディスク制御装置)等を含む任意の1つ以上の様々なデバイスが挙げられるが、これらに限定されない。その最も基本的な構成において、コンピューティングシステム800は、少なくとも1つのプロセッサ110と、メモリ115と、を含んでもよい。コンピューティングデバイス105を実装するソフトウェアを実行することによって、コンピューティングシステム800は、ノードに対するアクセスパターン(複数可)を追跡してiノードに対する先読み命令を発行するように構成された専用コンピューティングデバイスになる。   FIG. 8 is a block diagram of a computing system 800 illustrating how an access pattern tracker and a metadata look-ahead generator may be implemented in software, according to one embodiment. Computing system 800 broadly represents any single or multiprocessor computing device or system capable of executing computer readable instructions. Examples of computing system 800 include workstations, personal computers, laptops, client terminals, servers, distributed computing systems, portable devices (eg, personal digital assistants and mobile phones), network appliances, storage. Any one or more of a variety of devices including, but not limited to, a controller (eg, an array controller, a tape drive controller, or a hard disk controller). In its most basic configuration, computing system 800 may include at least one processor 110 and memory 115. By executing software that implements computing device 105, computing system 800 provides a dedicated computing device configured to track access pattern (s) to the node and issue look-ahead instructions to the inode. Become.

プロセッサ110は、概して、データの処理、又は命令の解釈及び実行ができる任意のタイプ又は形式の処理ユニットを表す。特定の実施形態では、プロセッサ110は、ソフトウェアアプリケーション又はモジュールから命令を受信してもよい。これらの命令は、プロセッサ110に、本明細書に記載及び/又は例示する実施形態のうちの1つ以上の機能を実施させてもよい。例えば、プロセッサ110は、本明細書に記載する動作の全部又は一部を実行してもよく、及び/又は実行するための手段であってもよい。プロセッサ110は、また、本明細書に記載又は例示する任意の他の動作、方法、及びプロセスを実行してもよく、及び/又は実行するための手段であってもよい。   Processor 110 generally represents any type or type of processing unit capable of processing data or interpreting and executing instructions. In certain embodiments, processor 110 may receive instructions from a software application or module. These instructions may cause processor 110 to perform the functions of one or more of the embodiments described and / or illustrated herein. For example, processor 110 may perform and / or be a means for performing all or a portion of the operations described herein. Processor 110 may also perform and / or be a means for performing any other operations, methods, and processes described or illustrated herein.

メモリ115は、データ及び/又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の揮発性又は不揮発性記憶デバイス若しくは媒体を概して表す。例としては、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(read only memory、ROM)、フラッシュメモリ、又は任意の他の好適なメモリデバイスが挙げられるが、これらに限定されない。必須でないが、特定の実施例では、コンピューティングシステム800は、揮発性メモリユニット及び不揮発性記憶デバイスの両方を含んでもよい。一実施例では、アクセスパターントラッカ及びメタデータ先読み生成器を実装するプログラム命令は、メモリ115にロードされてもよい。   Memory 115 generally represents any type or form of volatile or non-volatile storage device or medium capable of storing data and / or other computer readable instructions. Examples include, but are not limited to, random access memory (RAM), read only memory (ROM), flash memory, or any other suitable memory device. Although not required, in certain embodiments, computing system 800 may include both volatile memory units and non-volatile storage devices. In one embodiment, the program instructions implementing the access pattern tracker and the metadata look-ahead generator may be loaded into memory 115.

特定の実施形態では、コンピューティングシステム800は、また、プロセッサ110及び/又はメモリ115に加えて、1つ以上の構成要素又は要素を含んでもよい。例えば、図8に示すように、コンピューティングシステム800は、メモリコントローラ820、入力/出力(I/O)コントローラ835、及び通信インターフェース845を含んでもよく、これらの各々は、通信インフラストラクチャ805を介して相互接続されてもよい。通信インフラストラクチャ805は、コンピューティングデバイスの1つ以上の構成要素間の通信を容易にすることが可能な任意のタイプ又は形式のインフラストラクチャを概して表す。通信インフラストラクチャ805の例としては、通信バス(業界標準アーキテクチャ(Industry Standard Architecture、ISA)、周辺構成要素相互接続(Peripheral Component Interconnect、PCI)、PCIエクスプレス(PCI express、PCIe)、又は類似のバス等)、及びネットワークが挙げられるが、これらに限定されない。   In certain embodiments, computing system 800 may also include one or more components or elements in addition to processor 110 and / or memory 115. For example, as shown in FIG. 8, the computing system 800 may include a memory controller 820, an input / output (I / O) controller 835, and a communication interface 845, each of which is connected via a communication infrastructure 805. May be interconnected. Communication infrastructure 805 generally represents any type or form of infrastructure that can facilitate communication between one or more components of the computing device. Examples of communication infrastructure 805 include communication buses (Industry Standard Architecture (ISA), Peripheral Component Interconnect (PCI), PCI express (PCI express, PCIe), or similar buses). ), And networks.

メモリコントローラ820は、メモリ若しくはデータを取り扱うことが可能な、又はコンピューティングシステム800の1つ以上の構成要素間の通信を制御することが可能な任意のタイプ又は形式のデバイスを概して表す。特定の実施形態では、メモリコントローラ820は、通信インフラストラクチャ805を介して、プロセッサ110、メモリ115、及びI/Oコントローラ835間の通信を制御してもよい。特定の実施形態では、メモリコントローラ820は、本明細書に記載又は例示する1つ以上の動作又は機能を単独又は他の要素との組み合わせのいずれかで実施してもよく、及び/又は実施するための手段であってもよい。   Memory controller 820 generally represents any type or type of device that can handle memory or data or control communication between one or more components of computing system 800. In certain embodiments, memory controller 820 may control communication between processor 110, memory 115, and I / O controller 835 via communication infrastructure 805. In certain embodiments, memory controller 820 may perform and / or perform one or more operations or functions described or illustrated herein, either alone or in combination with other elements. Means may be used.

I/Oコントローラ835は、コンピューティングデバイス105などの1つ以上のコンピューティングデバイスの入力及び出力機能を協働させ、及び/又は制御することが可能な任意のタイプ又は形式のモジュールを概して表す。例えば、特定の実施形態では、I/Oコントローラ835は、プロセッサ110、メモリ115、通信インターフェース845、表示アダプタ815、入力インターフェース825及び/又は記憶インターフェース840などのコンピューティングシステム800の1つ以上の要素間のデータの転送を制御してもよく、又はそれを容易にしてもよい。   I / O controller 835 generally represents any type or type of module that can coordinate and / or control the input and output functions of one or more computing devices, such as computing device 105. For example, in certain embodiments, I / O controller 835 includes one or more components of computing system 800 such as processor 110, memory 115, communication interface 845, display adapter 815, input interface 825, and / or storage interface 840. Transfer of data between them may be controlled or facilitated.

通信インターフェース845は、コンピューティングシステム800と、1つ以上の他のデバイスとの間の通信を容易にすることが可能な任意のタイプ又は形式の通信デバイス又はアダプタを広く表す。通信インターフェース845は、コンピューティングシステム800と追加のコンピューティングシステムを含むプライベート又はパブリックネットワークとの間の通信を容易にし得る。通信インターフェース845の例としては、有線ネットワークインターフェース(ネットワークインターフェースカードなど)、無線ネットワークインターフェース(無線ネットワークインターフェースカードなど)、モデム、及び任意の他の好適なインターフェースを含むが、これらに限定されない。通信インターフェース845は、インターネット等ネットワークへの直接リンクを介してリモートサーバへの直接接続を提供してよく、また、例えば、ローカルエリアネットワーク(例えば、イーサネット(登録商標)ネットワーク)、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、携帯電話接続、衛星データ接続、又は任意の他の好適な接続を通じて、かかる接続を間接的に提供し得る。   Communication interface 845 broadly describes any type or type of communication device or adapter that can facilitate communication between computing system 800 and one or more other devices. Communication interface 845 may facilitate communication between computing system 800 and a private or public network that includes additional computing systems. Examples of communication interface 845 include, but are not limited to, a wired network interface (such as a network interface card), a wireless network interface (such as a wireless network interface card), a modem, and any other suitable interface. Communication interface 845 may provide a direct connection to a remote server via a direct link to a network, such as the Internet, and may also include, for example, a local area network (eg, an Ethernet network), a personal area network, Alternatively, such a connection may be provided indirectly through a cable network, a cell phone connection, a satellite data connection, or any other suitable connection.

通信インターフェース845はまた、外部バス又は通信チャネルを介して、コンピューティングシステム800と、1つ以上の追加のネットワーク又は記憶デバイスとの間の通信を容易にするように構成されたホストアダプタを表し得る。ホストアダプタの例としては、スモールコンピュータシステムインターフェース(Small Computer System Interface、SCSI)ホストアダプタ、ユニバーサルシリアルバス(Universal Serial Bus、USB)ホストアダプタ、米国電気電子技術者協会(Electrical and Electronics Engineers、IEEE)1394ホストアダプタ、シリアルアドバンストテクノロジーアタッチメント(Serial Advanced Technology Attachment、SATA)、シリアルアタッチトSCSI(Serial Attached SCSI、SAS)、及びエクスターナルSATA(external SATA、eSATA)ホストアダプタ、アドバンスドテクノロジーアタッチメント(Advanced Technology Attachment、ATA)、及びパラレルATA(Parallel ATA、PATA)ホストアダプタ、ファイバチャネルインターフェースアダプタ、イーサネット(登録商標)アダプター等が挙げられるが、これらに限定されない。通信インターフェース845はまた、コンピューティングシステム800が、(例えば、実行するためにリモートデバイスに対して命令を送受信することにより)分散又はリモートコンピューティングに関与できるようにし得る。   Communication interface 845 may also represent a host adapter configured to facilitate communication between computing system 800 and one or more additional networks or storage devices via an external bus or communication channel. . Examples of host adapters include a Small Computer System Interface (SCSI) host adapter, a Universal Serial Bus (USB) host adapter, and the Electrical and Electronics Engineers (IEEE) 1394. Host adapter, Serial Advanced Technology Attachment (SATA), Serial Attached SCSI (SAS), and External SATA (external SATA, eSATA) host adapter, Advanced Technology Attachment (ATA) , And Parallel ATA (Parallel ATA, PATA) Host Adapter, Fiber Channel Interface Adapter, Ethernet (Register (Trademark) adapter and the like, but are not limited thereto. Communication interface 845 may also enable computing system 800 to participate in distributed or remote computing (eg, by sending and receiving instructions to and from remote devices to execute).

図8に示すように、コンピューティングシステム800はまた、表示アダプタ815を介して、通信インフラストラクチャ805に接続されている、少なくとも1つの表示デバイス810を含んでもよい。表示デバイス810は、表示アダプタ815によって転送された情報を視覚的に表示することが可能な任意のタイプ又は形式のデバイスを概して表す。同様に、表示アダプタ815は、表示デバイス810上に表示するために、通信インフラストラクチャ805から(又は当該技術分野において既知のように、フレームバッファから)、グラフィックス、テキスト、及び他のデータを転送するように構成された任意のタイプ又は形式のデバイスを概して表す。コンピューティングシステム800はまた、入力インターフェース825を介して通信インフラストラクチャ805に接続されている、少なくとも1つの入力デバイス830を含んでもよい。入力デバイス830は、コンピュータ又はヒトのいずれかによって生成された入力を、コンピューティングシステム800に提供することが可能な任意のタイプ又は形式の入力デバイスを概して表す。入力デバイス830の例としては、キーボード、ポインティングデバイス、音声認識デバイス、又は任意の他の入力デバイスが挙げられる。   As shown in FIG. 8, the computing system 800 may also include at least one display device 810 connected to the communication infrastructure 805 via a display adapter 815. Display device 810 generally represents any type or type of device capable of visually displaying information transferred by display adapter 815. Similarly, display adapter 815 transfers graphics, text, and other data from communication infrastructure 805 (or from a frame buffer, as known in the art) for display on display device 810. Generally, any type or type of device configured to do so. Computing system 800 may also include at least one input device 830 connected to communication infrastructure 805 via input interface 825. Input device 830 generally represents any type or form of input device that can provide input generated by either a computer or a human to computing system 800. Examples of input device 830 include a keyboard, pointing device, voice recognition device, or any other input device.

コンピューティングシステム800はまた、記憶インターフェース840を介して通信インフラストラクチャ805に結合されている記憶デバイス850(例えば、ディスク150)を含んでもよい。記憶デバイス850は、データ及び/又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の記憶デバイス又は媒体を概して表す。例えば、記憶デバイス850は、磁気ディスクドライブ(例えば、いわゆるハードドライブ)、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブなどを含み得る。記憶インターフェース840は、コンピューティングシステム800の記憶デバイス850と他の構成要素との間でデータを転送及び/又は送信するための任意のタイプ又は形式のインターフェース又はデバイスを概して表す。記憶デバイス850は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を記憶するように構成されている、取り外し可能な記憶ユニットから読み取るように、及び/又はそれに書き込むように構成されてもよい。好適な取り外し可能な記憶ユニットの例としては、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイス等が挙げられるが、これらに限定されない。記憶デバイス850は、また、コンピュータソフトウェア、データ、又は他のコンピュータ可読命令が、コンピューティングシステム800にロードされることを可能にするための他の類似の構造又はデバイスを含んでもよい。例えば、記憶デバイス850は、ソフトウェア、データ、又は他のコンピュータ可読情報を読み取り、及び書き込むように構成されてもよい。記憶デバイス850は、また、コンピューティングシステム800の一部であってもよく、又は他のインターフェースシステムによってアクセスされる別個のデバイスであってもよい。   Computing system 800 may also include a storage device 850 (eg, disk 150) that is coupled to communication infrastructure 805 via storage interface 840. Storage device 850 generally represents any type or form of storage device or medium capable of storing data and / or other computer readable instructions. For example, storage device 850 may include a magnetic disk drive (eg, a so-called hard drive), a floppy disk drive, a magnetic tape drive, an optical disk drive, a flash drive, and the like. Storage interface 840 generally represents any type or form of interface or device for transferring and / or transmitting data between storage device 850 of computing system 800 and other components. Storage device 850 may be configured to read from and / or write to a removable storage unit configured to store computer software, data, or other computer-readable information. Examples of suitable removable storage units include, but are not limited to, floppy disks, magnetic tapes, optical disks, flash memory devices, and the like. Storage device 850 may also include other similar structures or devices to allow computer software, data, or other computer readable instructions to be loaded into computing system 800. For example, storage device 850 may be configured to read and write software, data, or other computer readable information. Storage device 850 may also be part of computing system 800, or may be a separate device accessed by other interface systems.

多くの他のデバイス又はサブシステムは、コンピューティングシステム800に接続されてもよい。逆に、図8に示す構成要素及びデバイスの全てが、本明細書において説明及び/又は例示される実施形態を実践するために存在する必要があるわけではない。上記で述べたデバイス及びサブシステムはまた、図8に示すものとは異なる様式で相互接続されてもよい。コンピューティングシステム800はまた、任意の数のソフトウェア、ファームウェア、及び/又はハードウェア構成を採用してもよい。例えば、本明細書において開示される実施形態のうちの1つ以上は、コンピュータ可読記憶媒体上にコンピュータプログラム(コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御論理とも称される)としてコード化され得る。コンピュータ可読記憶媒体の例としては、磁気記憶媒体(例えば、ハードディスクドライブ、及びフロッピーディスク)、光学的記憶媒体(例えば、CD−、又はDVD−ROM)、電子記憶媒体(例えば、ソリッドステートドライブ、及びフラッシュメディア)等が挙げられる。そのようなコンピュータプログラムは、また、インターネットなどのネットワークを介してメモリに又はキャリア媒体に記憶するためにコンピューティングシステム800に転送されてもよい。   Many other devices or subsystems may be connected to the computing system 800. Conversely, not all of the components and devices shown in FIG. 8 need be present to practice the embodiments described and / or illustrated herein. The devices and subsystems described above may also be interconnected in a different manner than that shown in FIG. Computing system 800 may also employ any number of software, firmware, and / or hardware configurations. For example, one or more of the embodiments disclosed herein may be encoded as a computer program (also referred to as computer software, software application, computer readable instructions, or computer control logic) on a computer readable storage medium. Can be done. Examples of computer-readable storage media include magnetic storage media (eg, hard disk drives and floppy disks), optical storage media (eg, CD- or DVD-ROM), electronic storage media (eg, solid-state drives, and Flash media). Such computer programs may also be transferred to computing system 800 for storage in memory or carrier media over a network such as the Internet.

コンピュータプログラムを含むコンピュータ可読媒体は、コンピューティングシステム800にロードされてもよい。コンピュータ可読媒体上に記憶されたコンピュータプログラムの全部又は一部分は、次に、メモリ860及び/又は記憶デバイス850の種々の部分に記憶されてもよい。プロセッサ110によって実行されるとき、コンピューティングシステム800にロードされたコンピュータプログラムは、本明細書において説明及び/又は例示する実施形態のうちの1つ以上の機能をプロセッサ110に実施させてもよく、及び/又はそれらを実施するための手段であってもよい。付加的に又は代替的に、本明細書に説明及び/又は例示される例示的な実施形態のうちの1つ以上は、ファームウェア及び/又はハードウェアに実装され得る。例えば、コンピューティングシステム800は、本明細書において開示される実施形態のうちの1つ以上を実行するように適合された特定用途向け集積回路(application specific integrated circuit、ASIC)として構成されてもよい。
ネットワーキング環境例
A computer-readable medium containing a computer program may be loaded into the computing system 800. All or a portion of the computer program stored on the computer-readable medium may then be stored in various portions of memory 860 and / or storage device 850. A computer program loaded into the computing system 800 when executed by the processor 110 may cause the processor 110 to perform one or more of the functions of the embodiments described and / or illustrated herein; And / or means for implementing them. Additionally or alternatively, one or more of the exemplary embodiments described and / or illustrated herein may be implemented in firmware and / or hardware. For example, computing system 800 may be configured as an application specific integrated circuit (ASIC) adapted to perform one or more of the embodiments disclosed herein. .
Example of networking environment

図9は、本開示の一実施形態による、様々なデバイスがネットワークを介して通信し得る態様を例示する、ネットワーク化されたシステム900のブロック図である。特定の実施形態では、ネットワーク接続型記憶(network-attached storage、NAS)デバイスは、ネットワークファイルシステム(Network File System、NFS)、サーバメッセージブロック(Server Message Block、SMB)、又はコモンインターネットファイルシステム(Common Internet File System、CIFS)などの様々なプロトコルを使用してコンピューティングデバイス105及び記憶システム145と通信するように構成されてもよい。   FIG. 9 is a block diagram of a networked system 900, illustrating how various devices may communicate over a network, according to one embodiment of the present disclosure. In certain embodiments, the network-attached storage (NAS) device is a network file system (NFS), a server message block (SMB), or a common internet file system (Common). It may be configured to communicate with the computing device 105 and the storage system 145 using various protocols, such as the Internet File System (CIFS).

ネットワーク185は、コンピューティングデバイス105と記憶システム145との間での通信を容易にすることができる任意のタイプ又は形式のコンピュータネットワーク又はアーキテクチャを概して表す。特定の実施形態では、図8の通信インターフェース845などの通信インターフェースは、コンピューティングノード105と、記憶システム145と、ネットワーク155との間の接続性を提供するために使用され得る。本明細書に記載及び/又は例示する実施形態は、インターネット又は任意の特定のネットワークベース環境に限定されないことに留意されたい。例えば、ネットワーク185は、ストレージエリアネットワーク(SAN)であってもよい。コンピューティングデバイス105及び記憶システム145は、統合又は分離され得る。分離される場合、例えば、コンピューティングデバイス105及び記憶システム145は、(例えば、Bluetooth(登録商標)、ペリフェラルコンポーネントインターコネクト(Peripheral Component Interconnect,PCI)、スモールコンピュータシステムインターフェース(Small Computer System Interface,SCSI)などを使用する)ローカル接続によって、又はインターネット、LAN、若しくはSANなどの1つ以上のネットワークを介して、結合され得る。   Network 185 generally represents any type or type of computer network or architecture that can facilitate communication between computing device 105 and storage system 145. In certain embodiments, a communication interface, such as communication interface 845 of FIG. 8, may be used to provide connectivity between computing node 105, storage system 145, and network 155. Note that the embodiments described and / or illustrated herein are not limited to the Internet or any particular network-based environment. For example, the network 185 may be a storage area network (SAN). Computing device 105 and storage system 145 may be integrated or separate. When separated, for example, the computing device 105 and the storage system 145 may include (for example, Bluetooth (registered trademark), Peripheral Component Interconnect (PCI), Small Computer System Interface (SCSI), etc.). May be coupled by a local connection or via one or more networks such as the Internet, a LAN, or a SAN.

一実施形態では、開示された実施形態のうちの1つ以上の全て又は一部は、コンピュータプログラムとしてコード化され、コンピューティングデバイス105、iノードアクセスパターン追跡及びメタデータ先読み命令発行システム910、iノードアクセスパターン追跡システム940及び/又はメタデータ先読み命令生成システム950上にロードされ、これによって実行されてもよい。本明細書に開示される実施形態のうちの1つ以上の全て又は一部はまた、コンピュータプログラムとしてコード化され、コンピューティングデバイス105、iノードアクセスパターン追跡及びメタデータ先読み命令発行システム910及び/又はiノードアクセスパターン追跡システム940に記憶され、ネットワーク185上に分散されてもよい。   In one embodiment, all or some of one or more of the disclosed embodiments are coded as a computer program and include a computing device 105, an inode access pattern tracking and metadata prefetch instruction issuing system 910, i. It may be loaded onto and executed by the node access pattern tracking system 940 and / or the metadata look-ahead instruction generation system 950. All or some of one or more of the embodiments disclosed herein are also coded as a computer program and include a computing device 105, an inode access pattern tracking and metadata lookahead instruction issuing system 910 and / or Alternatively, it may be stored in the inode access pattern tracking system 940 and distributed over the network 185.

いくつかの例では、コンピューティングデバイス105の全部又は一部分は、クラウドコンピューティング又はネットワークベースの環境の部分を表してもよい。クラウドコンピューティング環境は、インターネットを介して、種々のサービス及びアプリケーションを提供し得る。これらのクラウドベースのサービス(例えば、サービスとしてのソフトウェア、サービスとしてプラットフォーム、サービスとしてのインフラストラクチャなど)は、ウェブブラウザ又は他の遠隔インターフェースを通じて、アクセス可能であり得る。本明細書において説明される種々の機能は、遠隔デスクトップ環境又は任意の他のクラウドベースのコンピューティング環境を通じて提供され得る。   In some examples, all or a portion of computing device 105 may represent a portion of a cloud computing or network-based environment. A cloud computing environment may provide various services and applications via the Internet. These cloud-based services (eg, software as a service, platform as a service, infrastructure as a service, etc.) may be accessible through a web browser or other remote interface. The various functions described herein may be provided through a remote desktop environment or any other cloud-based computing environment.

加えて、本明細書に記載の構成要素のうちの1つ以上は、データ、物理的デバイス、及び/又は物理的デバイスの表現を、ある形態から他の形態に変換し得る。例えば、コンピューティングデバイス105及び/又はiノードアクセスパターン追跡及びメタデータ先読み発行システム910は、コンピューティングデバイス105及び/又はiノードアクセスパターン追跡及び/又はメタデータ先読み命令発行システム910に、iノードのアクセスパターン(複数可)を追跡させて先読み命令を発行させるために、コンピューティングデバイス105の挙動を変換してもよい。   In addition, one or more of the components described herein may convert data, physical devices, and / or representations of physical devices from one form to another. For example, the computing device 105 and / or the inode access pattern tracking and metadata look-ahead issuing system 910 may provide the computing device 105 and / or the inode access pattern tracking and / or metadata look-ahead instruction issuing system 910 with the inode's The behavior of the computing device 105 may be converted to cause the access pattern (s) to be tracked and issue a prefetch command.

本開示がいくつかの実施形態と関連して説明してきたが、本開示は、本明細書で述べた特定の形式に限定されるように意図されていない。逆に、添付の請求項によって規定されるような本開示の範囲内に合理的に含まれ得るような代替形態、修正形態、及び等価物を包含するように意図されている。   Although this disclosure has been described in connection with certain embodiments, this disclosure is not intended to be limited to the particular forms set forth herein. On the contrary, the intent is to cover alternatives, modifications, and equivalents as may be reasonably included within the scope of the disclosure as defined by the appended claims.

Claims (40)

メタデータ記憶領域内のメタデータユニットの位置を判定することであって、
前記メタデータ記憶領域が不揮発性記憶ユニット内にある、判定することと、
前記メタデータ記憶領域内の別の位置を判定することであって、
前記別の位置が現在のメタデータ読み取り動作に対応する、判定することと、
前記メタデータユニットの前記位置及び前記別の位置を使用して、メタデータ先読み動作を実行することができるかどうかを判定することと、
前記メタデータ先読み動作が実行され得るという判定に応答して、前記メタデータ先読み動作を発行することと、を含む、方法。
Determining the position of the metadata unit in the metadata storage area,
Determining that the metadata storage area is in a non-volatile storage unit;
Determining another location in the metadata storage area,
Determining that said another location corresponds to a current metadata reading operation;
Using the location of the metadata unit and the another location to determine whether a metadata look-ahead operation can be performed;
Issuing the metadata look-ahead operation in response to a determination that the metadata look-ahead operation can be performed.
前記メタデータ記憶領域が、複数のディスク上iノードを含み、
前記ディスク上iノードが、前記メタデータユニットを含み、
前記ディスク上iノードが、構造ファイルの一部であり、
前記構造ファイルが、前記不揮発性記憶ユニットに記憶されている、請求項1に記載の方法。
The metadata storage area includes a plurality of on-disk inodes;
The on-disk inode includes the metadata unit;
The inode on disk is part of a structure file,
The method of claim 1, wherein the configuration file is stored on the non-volatile storage unit.
コア内iノードを作成することであって、
前記コア内iノードが、前記構造ファイルに対応する、作成することと、
前記コア内iノード内に前記メタデータユニットの前記位置を記憶することであって、
前記メタデータユニットが、最後に読み取ったメタデータチャンクであり、
前記メタデータユニットの前記位置が、前記メタデータユニットの終了オフセットを識別する、記憶することと、を更に含む、請求項2に記載の方法。
Creating an in-core inode,
Creating the in-core inode corresponding to the structure file;
Storing the location of the metadata unit in the in-core i-node,
The metadata unit is the last read metadata chunk;
The method of claim 2, wherein the location of the metadata unit further comprises: identifying and storing an ending offset of the metadata unit.
前記メタデータ先読み動作が実行され得るかどうかを判定することが、
前記メタデータユニットの前記終了オフセットにアクセスすることと、
前記別の位置が前記終了オフセットに隣接しているかどうかを判定することと、を含む、請求項3に記載の方法。
Determining whether the metadata prefetch operation can be performed,
Accessing the end offset of the metadata unit;
Determining whether the another location is adjacent to the ending offset.
前記メタデータ先読み動作を発行することが、
前記終了オフセットを、前記メタデータ先読み動作によって読み取られた別のメタデータユニットの別の終了オフセットと置き換えることによって、前記終了オフセットを更新することを含み、
前記別のメタデータユニットが、別の最後に読み取ったメタデータチャンクである、請求項3に記載の方法。
Issuing the metadata prefetch operation,
Updating the end offset by replacing the end offset with another end offset of another metadata unit read by the metadata prefetch operation;
4. The method of claim 3, wherein the another metadata unit is another last read metadata chunk.
前記別の位置が前記終了オフセットに隣接していない場合に、前記終了オフセットを現在のメタデータ読み取り動作の終了オフセットと置き換えることによって前記終了オフセットを更新することを更に含む、請求項3に記載の方法。   4. The method of claim 3, further comprising updating the end offset by replacing the end offset with the end offset of a current metadata reading operation if the another location is not adjacent to the end offset. Method. 1つ以上のディスク上iノードを読み取るコマンドをインターセプトすることであって、
前記1つ以上のディスク上iノードが、前記複数のディスク上iノードの一部であり、
前記インターセプトが、入出力(I/O)動作に応答して実行され、
前記I/O動作が、前記コマンドをもたらす、インターセプトすることと、
前記メタデータ先読み動作において発行されたメタデータ先読み値を解析することであって、
前記解析が、前記発行されたメタデータ先読み値と前記コマンド内のチャンク合計とを比較することを含む、解析することと、
前記I/O動作が完了するであろうことを前記解析が示す場合に、前記I/O動作が完了するのを待つことと、
非同期メタデータ先読み命令が発行され得ることを前記解析が示す場合に、非同期メタデータ先読み命令を発行することと、を更に含む、請求項2に記載の方法。
Intercepting a command to read an inode on one or more disks,
The one or more disk inodes are part of the plurality of disk inodes;
The intercept is executed in response to an input / output (I / O) operation;
Intercepting, wherein the I / O operation results in the command;
Analyzing the metadata prefetch value issued in the metadata prefetch operation,
Analyzing, wherein the analyzing comprises comparing the issued metadata look-ahead value with a chunk sum in the command;
Waiting for the I / O operation to complete when the analysis indicates that the I / O operation will complete;
3. The method of claim 2, further comprising: issuing an asynchronous metadata prefetch instruction if the analysis indicates that an asynchronous metadata prefetch instruction may be issued.
前記I/O動作が完了しているかどうかを判定することと、
前記I/O動作が完了している場合に、待ち行列を生成することであって、
前記待ち行列が、前記チャンク合計のメタデータの1つ以上の残りのチャンクを含み、
前記メタデータの前記1つ以上の残りのチャンクが、前記非同期メタデータ先読み命令に含まれていない、生成することと、
前記I/O動作が完了していない場合に、前記チャンク合計を前記メタデータ先読み動作において更新することと、を更に含む、請求項7に記載の方法。
Determining whether the I / O operation has been completed;
Creating a queue if the I / O operation has been completed,
The queue includes one or more remaining chunks of the chunk total metadata;
Generating the one or more remaining chunks of the metadata are not included in the asynchronous metadata look-ahead instruction;
8. The method of claim 7, further comprising: updating the chunk sum in the metadata look-ahead operation if the I / O operation has not been completed.
プログラム命令を含む非一過性コンピュータ可読記憶媒体であって、前記プログラム命令が、
メタデータ記憶領域内のメタデータユニットの位置を判定することであって、
前記メタデータ記憶領域が、不揮発性記憶ユニット内にある、判定することと、
前記メタデータ記憶領域内の別の位置を判定することであって、
前記別の位置が、現在のメタデータ読み取り動作に対応する、判定することと、
前記メタデータユニットの前記位置及び前記別の位置を使用して、メタデータ先読み動作を実行することができるかどうかを判定することと、
前記メタデータ先読み動作が実行され得るという判定に応答して、前記メタデータ先読み動作を発行することと、を実行可能である、非一過性コンピュータ可読記憶媒体。
A non-transitory computer-readable storage medium containing program instructions, wherein said program instructions comprise:
Determining the position of the metadata unit in the metadata storage area,
Determining that the metadata storage area is in a non-volatile storage unit;
Determining another location in the metadata storage area,
Determining that said another location corresponds to a current metadata reading operation;
Using the location of the metadata unit and the another location to determine whether a metadata look-ahead operation can be performed;
A non-transitory computer-readable storage medium operable to issue the metadata prefetch operation in response to a determination that the metadata prefetch operation may be performed.
前記メタデータ記憶領域が、複数のディスク上iノードを含み、
前記ディスク上iノードが、前記メタデータユニットを含み、
前記ディスク上iノードが、構造ファイルの一部であり、
前記構造ファイルが、前記不揮発性記憶ユニットに記憶されている、請求項9に記載の非一過性コンピュータ可読記憶媒体。
The metadata storage area includes a plurality of on-disk inodes;
The on-disk inode includes the metadata unit;
The inode on disk is part of a structure file,
10. The non-transitory computer readable storage medium of claim 9, wherein the configuration file is stored on the non-volatile storage unit.
コア内iノードを作成することであって、
前記コア内iノードが、前記構造ファイルに対応する、作成することと、
前記コア内iノード内に前記メタデータユニットの前記位置を記憶することであって、
前記メタデータユニットが、最後に読み取ったメタデータチャンクであり、
前記メタデータユニットの位置が、前記メタデータユニットの終了オフセットを識別する、記憶することと、を更に含む、請求項10に記載の非一過性コンピュータ可読記憶媒体。
Creating an in-core inode,
Creating the in-core inode corresponding to the structure file;
Storing the location of the metadata unit in the in-core i-node,
The metadata unit is the last read metadata chunk;
The non-transitory computer-readable storage medium of claim 10, wherein the location of the metadata unit further comprises: identifying and storing an ending offset of the metadata unit.
前記メタデータ先読み動作が実行され得るかどうかを判定することが、
前記メタデータユニットの前記終了オフセットにアクセスすることと、
前記別の位置が前記終了オフセットに隣接しているかどうかを判定することと、を含む、請求項11に記載の非一過性コンピュータ可読記憶媒体。
Determining whether the metadata prefetch operation can be performed,
Accessing the end offset of the metadata unit;
Determining whether said another location is adjacent to said ending offset. 12. The non-transitory computer-readable storage medium of claim 11, comprising:
前記メタデータ先読み動作を発行することが、
前記別の位置が前記終了オフセットに隣接している場合に、前記終了オフセットを、前記メタデータ先読み動作によって読み取られた別のメタデータユニットの別の終了オフセットと置き換えることによって前記終了オフセットを更新することであって、
前記別のメタデータユニットが、別の最後に読み取ったメタデータチャンクである、更新することと、
前記別の位置が前記終了オフセットに隣接していない場合に、前記終了オフセットを現在のメタデータ読み取り動作の終了オフセットと置き換えることによって前記終了オフセットを更新することと、を含む、請求項12に記載の非一過性コンピュータ可読記憶媒体。
Issuing the metadata prefetch operation,
Updating the end offset by replacing the end offset with another end offset of another metadata unit read by the metadata look-ahead operation if the another location is adjacent to the end offset. That is,
Updating the another metadata unit is another last read metadata chunk;
13. If the another location is not adjacent to the ending offset, updating the ending offset by replacing the ending offset with the ending offset of a current metadata reading operation. Non-transitory computer readable storage medium.
1つ以上のディスク上iノードを読み取るコマンドをインターセプトすることであって、
前記1つ以上のディスク上iノードが、前記複数のディスク上iノードの一部であり、
前記インターセプトが、入出力(I/O)動作に応答して実行され、
前記I/O動作が、前記コマンドをもたらす、インターセプトすることと、
前記メタデータ先読み動作において発行されたメタデータ先読み値を解析することであって、
前記解析が、前記発行されたメタデータ先読み値と前記コマンド内のチャンク合計とを比較することを含む、解析することと、
前記I/O動作が完了するであろうことを前記解析が示す場合に、前記I/O動作が完了するのを待つことと、
非同期メタデータ先読み命令が発行され得ることを前記解析が示す場合に、非同期メタデータ先読み命令を発行することと、
前記I/O動作が完了しているかどうかを判定することと、
前記I/O動作が完了している場合に、待ち行列を生成することであって、
前記待ち行列が、前記チャンク合計のメタデータの1つ以上の残りのチャンクを含み、
前記メタデータの前記1つ以上の残りのチャンクが、前記非同期メタデータ先読み命令に含まれていない、生成することと、
前記I/O動作が完了していない場合に、前記チャンク合計を前記メタデータ先読み動作において更新することと、を更に含む、請求項10に記載の非一過性コンピュータ可読記憶媒体。
Intercepting a command to read an inode on one or more disks,
The one or more disk inodes are part of the plurality of disk inodes;
The intercept is executed in response to an input / output (I / O) operation;
Intercepting, wherein the I / O operation results in the command;
Analyzing the metadata prefetch value issued in the metadata prefetch operation,
Analyzing, wherein the analyzing comprises comparing the issued metadata look-ahead value with a chunk sum in the command;
Waiting for the I / O operation to complete when the analysis indicates that the I / O operation will complete;
Issuing an asynchronous metadata prefetch instruction when the analysis indicates that an asynchronous metadata prefetch instruction can be issued; and
Determining whether the I / O operation has been completed;
Creating a queue if the I / O operation has been completed,
The queue includes one or more remaining chunks of the chunk total metadata;
Generating the one or more remaining chunks of the metadata are not included in the asynchronous metadata look-ahead instruction;
11. The non-transitory computer readable storage medium of claim 10, further comprising: updating the chunk sum in the metadata look-ahead operation if the I / O operation has not been completed.
1つ以上のプロセッサと、
前記1つ以上のプロセッサに結合されたメモリと、を備え、前記メモリが、前記1つ以上のプロセッサによって実行可能なプログラム命令を記憶し、前記プログラム命令が、
メタデータ記憶領域内のメタデータユニットの位置を判定することであって、
前記メタデータ記憶領域が、不揮発性記憶ユニット内にある、判定することと、
前記メタデータ記憶領域内の別の位置を判定することであって、
前記別の位置が、現在のメタデータ読み取り動作に対応する、判定することと、
前記メタデータユニットの前記位置及び前記別の位置を使用して、メタデータ先読み動作を実行することができるかどうかを判定することと、
前記メタデータ先読み動作が実行され得るという判定に応答して、前記メタデータ先読み動作を発行することと、を実行可能である、システム。
One or more processors;
A memory coupled to the one or more processors, wherein the memory stores program instructions executable by the one or more processors, the program instructions comprising:
Determining the position of the metadata unit in the metadata storage area,
Determining that the metadata storage area is in a non-volatile storage unit;
Determining another location in the metadata storage area,
Determining that said another location corresponds to a current metadata reading operation;
Using the location of the metadata unit and the another location to determine whether a metadata look-ahead operation can be performed;
Issuing the metadata prefetch operation in response to a determination that the metadata prefetch operation can be performed.
前記メタデータ記憶領域が、複数のディスク上iノードを含み、
前記ディスク上iノードが、前記メタデータユニットを含み、
前記ディスク上iノードが、構造ファイルの一部であり、
前記構造ファイルが、前記不揮発性記憶ユニットに記憶されている、請求項15に記載のシステム。
The metadata storage area includes a plurality of on-disk inodes;
The on-disk inode includes the metadata unit;
The inode on disk is part of a structure file,
The system of claim 15, wherein the configuration file is stored on the non-volatile storage unit.
コア内iノードを作成することであって、
前記コア内iノードが、前記構造ファイルに対応する、作成することと、
前記コア内iノード内に前記メタデータユニットの前記位置を記憶することであって、
前記メタデータユニットが、最後に読み取ったメタデータチャンクであり、
前記メタデータユニットの位置が、前記メタデータユニットの終了オフセットを識別する、記憶することと、を更に含む、請求項16に記載のシステム。
Creating an in-core inode,
Creating the in-core inode corresponding to the structure file;
Storing the location of the metadata unit in the in-core i-node,
The metadata unit is the last read metadata chunk;
17. The system of claim 16, wherein the location of the metadata unit further comprises: identifying and storing an ending offset of the metadata unit.
前記メタデータ先読み動作が実行され得るかどうかを判定することが、
前記メタデータユニットの前記終了オフセットにアクセスすることと、
前記別の位置が前記終了オフセットに隣接しているかどうかを判定することと、を含む、請求項17に記載のシステム。
Determining whether the metadata prefetch operation can be performed,
Accessing the end offset of the metadata unit;
Determining if the another location is adjacent to the end offset.
前記メタデータ先読み動作を発行することが、
前記別の位置が前記終了オフセットに隣接している場合に、前記終了オフセットを、前記メタデータ先読み動作によって読み取られた別のメタデータユニットの別の終了オフセットと置き換えることによって前記終了オフセットを更新することであって、
前記別のメタデータユニットが、別の最後に読み取ったメタデータチャンクである、更新することと、
前記別の位置が前記終了オフセットに隣接していない場合に、前記終了オフセットを現在のメタデータ読み取り動作の終了オフセットと置き換えることによって前記終了オフセットを更新することと、を含む、請求項18に記載のシステム。
Issuing the metadata prefetch operation,
Updating the end offset by replacing the end offset with another end offset of another metadata unit read by the metadata look-ahead operation if the another location is adjacent to the end offset. That is,
Updating the another metadata unit is another last read metadata chunk;
19. If the another location is not adjacent to the ending offset, updating the ending offset by replacing the ending offset with the ending offset of the current metadata reading operation. System.
1つ以上のディスク上iノードを読み取るコマンドをインターセプトすることであって、
前記1つ以上のディスク上iノードが、前記複数のディスク上iノードの一部であり、
前記インターセプトが、入出力(I/O)動作に応答して実行され、
前記I/O動作が、前記コマンドをもたらす、インターセプトすることと、
前記メタデータ先読み動作において発行されたメタデータ先読み値を解析することであって、
前記解析が、前記発行されたメタデータ先読み値と前記コマンド内のチャンク合計とを比較することを含む、解析することと、
前記I/O動作が完了するであろうことを前記解析が示す場合に前記I/O動作が完了するのを待つことと、
非同期メタデータ先読み命令が発行され得ることを前記解析が示す場合に、非同期メタデータ先読み命令を発行することと、
前記I/O動作が完了しているかどうかを判定することと、
前記I/O動作が完了している場合に、待ち行列を生成することであって、
前記待ち行列が、前記チャンク合計のメタデータの1つ以上の残りのチャンクを含み、
前記メタデータの前記1つ以上の残りのチャンクが、前記非同期メタデータ先読み命令に含まれていない、生成することと、
前記I/O動作が完了していない場合に、前記チャンク合計を前記メタデータ先読み動作において更新することと、を更に含む、請求項16に記載のシステム。
Intercepting a command to read an inode on one or more disks,
The one or more disk inodes are part of the plurality of disk inodes;
The intercept is executed in response to an input / output (I / O) operation;
Intercepting, wherein the I / O operation results in the command;
Analyzing the metadata prefetch value issued in the metadata prefetch operation,
Analyzing, wherein the analyzing comprises comparing the issued metadata look-ahead value with a chunk sum in the command;
Waiting for the I / O operation to complete when the analysis indicates that the I / O operation will complete;
Issuing an asynchronous metadata prefetch instruction when the analysis indicates that an asynchronous metadata prefetch instruction can be issued; and
Determining whether the I / O operation has been completed;
Creating a queue if the I / O operation has been completed,
The queue includes one or more remaining chunks of the chunk total metadata;
Generating the one or more remaining chunks of the metadata are not included in the asynchronous metadata look-ahead instruction;
17. The system of claim 16, further comprising: updating the chunk total in the metadata look-ahead operation if the I / O operation has not been completed.
iノードにアクセスすることと、
前記iノードのディレクトリを判定することと、
前記ディレクトリのエントリがグローバルiノードリスト内に存在するかどうかを判定することと、
前記エントリが前記グローバルiノードリスト内に存在する場合に、前記ディレクトリのファイル構造がシーケンシャルであるか非シーケンシャルであるかを判定することと、
前記エントリが前記グローバルiノードリスト内に存在しない場合に、前記グローバルiノードリスト内に前記ディレクトリの新しいエントリを追加することと、を含む、方法。
accessing the inode;
Determining the directory of the inode;
Determining whether an entry of the directory exists in a global inode list;
Determining whether the file structure of the directory is sequential or non-sequential if the entry is in the global inode list;
Adding the new entry for the directory in the global inode list if the entry is not in the global inode list.
前記ディレクトリがグローバルiノードリスト内に存在するかどうかを判定することは、
前記エントリの前記グローバルiノードリストを探索することを含む、請求項21に記載の方法。
Determining whether the directory is in a global inode list includes:
22. The method of claim 21, comprising searching the global inode list for the entry.
前記ディレクトリの前記ファイル構造がシーケンシャルである場合に、前記ディレクトリがシーケンシャルフラグを含むかどうかを判定することと、
前記ディレクトリが前記シーケンシャルフラグを含む場合に、iノードリスト上の複数のiノードのうちの1つ以上のiノードに対するメタデータ先読み動作を発行することと、を更に含む、請求項21に記載の方法。
Determining whether the directory includes a sequential flag if the file structure of the directory is sequential;
22. The method of claim 21, further comprising: issuing a metadata look-ahead operation for one or more inodes of the plurality of inodes on the inode list when the directory includes the sequential flag. Method.
前記親ディレクトリの前記ファイル構造が非シーケンシャルである場合に、前記ディレクトリの前記複数のiノードの前記iノードリストを取り出すことと、
前記iノードリスト上の前記1つ以上のiノードに対する前記メタデータ先読み動作を発行することと、を更に含む、請求項23に記載の方法。
Retrieving the inode list of the plurality of inodes in the directory when the file structure of the parent directory is non-sequential;
24. The method of claim 23, further comprising: issuing the metadata look-ahead operation for the one or more inodes on the inode list.
1つ以上のiノードを読み取るコマンドをインターセプトすることであって、
前記1つ以上のiノードが、前記複数のiノードの一部であり、
前記インターセプトが、入出力(I/O)動作に応答して実行され、
前記I/O動作が、前記コマンドをもたらす、インターセプトすることを更に含む、請求項24に記載の方法。
Intercepting a command to read one or more inodes,
The one or more inodes are part of the plurality of inodes;
The intercept is executed in response to an input / output (I / O) operation;
The method of claim 24, wherein the I / O operation further comprises intercepting, effecting the command.
前記メタデータ先読み動作において発行されたメタデータ先読み値を解析することであって、
前記解析が、前記発行されたメタデータ先読み値と前記コマンド内のチャンク合計とを比較することを含む、解析することと、
前記I/O動作が完了するであろうことを前記解析が示す場合に前記I/O動作が完了するのを待つことと、
非同期メタデータ先読み命令が発行され得ることを前記解析が示す場合に、非同期メタデータ先読み命令を発行することと、を更に含む、請求項25に記載の方法。
Analyzing the metadata prefetch value issued in the metadata prefetch operation,
Analyzing, wherein the analyzing comprises comparing the issued metadata look-ahead value with a chunk sum in the command;
Waiting for the I / O operation to complete when the analysis indicates that the I / O operation will complete;
26. The method of claim 25, further comprising: issuing an asynchronous metadata prefetch instruction if the analysis indicates that an asynchronous metadata prefetch instruction can be issued.
前記I/O動作が完了しているかどうかを判定することと、
前記I/O動作が完了している場合に、待ち行列を生成することであって、
前記待ち行列が、前記チャンク合計のメタデータの1つ以上の残りのチャンクを含み、
前記メタデータの前記1つ以上の残りのチャンクが、前記非同期メタデータ先読み命令に含まれていない、生成することと、
前記I/O動作が完了していない場合に、前記チャンク合計を前記メタデータ先読み動作において更新することと、を更に含む、請求項26に記載の方法。
Determining whether the I / O operation has been completed;
Creating a queue if the I / O operation has been completed,
The queue includes one or more remaining chunks of the chunk total metadata;
Generating the one or more remaining chunks of the metadata are not included in the asynchronous metadata look-ahead instruction;
27. The method of claim 26, further comprising: updating the chunk sum in the metadata look-ahead operation if the I / O operation has not been completed.
前記iノードが、ディスク上iノードである、請求項21に記載の方法。   22. The method of claim 21, wherein the inode is an on-disk inode. プログラム命令を備える非一過性コンピュータ可読記憶媒体であって、前記プログラム命令が、
iノードにアクセスすることと、
前記iノードのディレクトリを判定することと、
前記ディレクトリのエントリがグローバルiノードリスト内に存在するかどうかを判定することと、
前記エントリが前記グローバルiノードリスト内に存在する場合に、前記ディレクトリのファイル構造がシーケンシャルであるか非シーケンシャルであるかを判定することと、
前記エントリが前記グローバルiノードリスト内に存在しない場合に、前記グローバルiノードリスト内に前記ディレクトリの新しいエントリを追加することと、を実行可能である、非一過性コンピュータ可読記憶媒体。
A non-transitory computer-readable storage medium comprising program instructions, wherein said program instructions comprise:
accessing the inode;
Determining the directory of the inode;
Determining whether an entry of the directory exists in a global inode list;
Determining whether the file structure of the directory is sequential or non-sequential if the entry is in the global inode list;
A non-transitory computer readable storage medium operable to add a new entry for the directory in the global inode list if the entry is not present in the global inode list.
前記ディレクトリがグローバルiノードリスト内に存在するかどうかを判定することが、
前記エントリの前記グローバルiノードリストを探索することを含み、
前記iノードが、ディスク上iノードである、請求項29に記載の非一過性コンピュータ可読記憶媒体。
Determining whether the directory is in a global inode list;
Searching the global inode list for the entry;
30. The non-transitory computer readable storage medium of claim 29, wherein the inode is an inode on disk.
前記ディレクトリの前記ファイル構造がシーケンシャルである場合に、前記ディレクトリがシーケンシャルフラグを含むかどうかを判定することと、
前記ディレクトリが前記シーケンシャルフラグを含む場合に、前記ディレクトリ内の1つ以上のiノードに対するメタデータ先読み動作を発行することと、
前記親ディレクトリの前記ファイル構造が非シーケンシャルである場合に、前記ディレクトリの前記複数のiノードの前記iノードリストを取り出すことと、
前記iノードリスト上の前記1つ以上のiノードに対する前記メタデータ先読み動作を発行することと、を更に含む、請求項29に記載の非一過性コンピュータ可読記憶媒体。
Determining whether the directory includes a sequential flag if the file structure of the directory is sequential;
Issuing a metadata look-ahead operation for one or more inodes in the directory when the directory includes the sequential flag;
Retrieving the inode list of the plurality of inodes in the directory when the file structure of the parent directory is non-sequential;
30. The non-transitory computer-readable storage medium of claim 29, further comprising: issuing the metadata look-ahead operation for the one or more inodes on the inode list.
1つ以上のiノードを読み取るコマンドをインターセプトすることであって、
前記1つ以上のiノードが、前記複数のiノードの一部であり、
前記インターセプトが、入出力(I/O)動作に応答して実行され、
前記I/O動作が、前記コマンドもたらす、インターセプトすることを更に含む、請求項31に記載の非一過性コンピュータ可読記憶媒体。
Intercepting a command to read one or more inodes,
The one or more inodes are part of the plurality of inodes;
The intercept is executed in response to an input / output (I / O) operation;
32. The non-transitory computer readable storage medium of claim 31, wherein the I / O operation further comprises intercepting the command.
前記メタデータ先読み動作において発行されたメタデータ先読み値を解析することであって、
前記解析が、前記発行されたメタデータ先読み値と前記コマンド内のチャンク合計とを比較することを含む、解析することと、
前記I/O動作が完了するであろうことを前記解析が示す場合に前記I/O動作が完了するのを待つことと、
非同期メタデータ先読み命令が発行され得ることを前記解析が示す場合に、非同期メタデータ先読み命令を発行することと、を更に含む、請求項32に記載の非一過性コンピュータ可読記憶媒体。
Analyzing the metadata prefetch value issued in the metadata prefetch operation,
Analyzing, wherein the analyzing comprises comparing the issued metadata look-ahead value with a chunk sum in the command;
Waiting for the I / O operation to complete when the analysis indicates that the I / O operation will complete;
33. The non-transitory computer readable storage medium of claim 32, further comprising: issuing an asynchronous metadata prefetch instruction if the analysis indicates that an asynchronous metadata prefetch instruction can be issued.
前記I/O動作が完了しているかどうかを判定することと、
前記I/O動作が完了している場合に、待ち行列を生成することであって、
前記待ち行列が、前記チャンク合計のメタデータの1つ以上の残りのチャンクを含み、
前記メタデータの前記1つ以上の残りのチャンクが、前記非同期メタデータ先読み命令に含まれていない、生成することと、
前記I/O動作が完了していない場合に、前記チャンク合計を前記メタデータ先読み動作において更新することと、を更に含む、請求項33に記載の非一過性コンピュータ可読記憶媒体。
Determining whether the I / O operation has been completed;
Creating a queue if the I / O operation has been completed,
The queue includes one or more remaining chunks of the chunk total metadata;
Generating the one or more remaining chunks of the metadata are not included in the asynchronous metadata look-ahead instruction;
34. The non-transitory computer readable storage medium of claim 33, further comprising: updating the chunk sum in the metadata look-ahead operation if the I / O operation has not been completed.
1つ以上のプロセッサと、
前記1つ以上のプロセッサに結合されたメモリと、を備え、前記メモリが、前記1つ以上のプロセッサによって実行可能なプログラム命令を記憶し、前記プログラム命令が、
iノードにアクセスすることと、
前記iノードのディレクトリを判定することと、
前記ディレクトリのエントリがグローバルiノードリスト内に存在するかどうかを判定することと、
前記エントリが前記グローバルiノードリスト内に存在する場合に、前記ディレクトリのファイル構造がシーケンシャルであるか非シーケンシャルであるかを判定することと、
前記エントリが前記グローバルiノードリスト内に存在しない場合に、前記グローバルiノードリスト内に前記ディレクトリの新しいエントリを追加することと、を実行可能である、システム。
One or more processors;
A memory coupled to the one or more processors, wherein the memory stores program instructions executable by the one or more processors, the program instructions comprising:
accessing the inode;
Determining the directory of the inode;
Determining whether an entry of the directory exists in a global inode list;
Determining whether the file structure of the directory is sequential or non-sequential if the entry is in the global inode list;
Adding the new entry for the directory in the global inode list if the entry is not present in the global inode list.
前記ディレクトリがグローバルiノードリスト内に存在するかどうかを判定することが、
前記エントリの前記グローバルiノードリストを探索することを含み、
前記iノードが、ディスク上iノードである、請求項35に記載のシステム。
Determining whether the directory is in a global inode list;
Searching the global inode list for the entry;
The system of claim 35, wherein the inode is an on-disk inode.
前記ディレクトリの前記ファイル構造がシーケンシャルである場合に、前記ディレクトリがシーケンシャルフラグを含むかどうかを判定することと、
前記ディレクトリが前記シーケンシャルフラグを含む場合に、前記ディレクトリ内の1つ以上のiノードに対するメタデータ先読み動作を発行することと、
前記親ディレクトリの前記ファイル構造が非シーケンシャルである場合に、前記ディレクトリの前記複数のiノードの前記iノードリストを取り出すことと、
前記iノードリスト上の前記1つ以上のiノードに対する前記メタデータ先読み動作を発行することと、を更に含む、請求項35に記載のシステム。
Determining whether the directory includes a sequential flag if the file structure of the directory is sequential;
Issuing a metadata look-ahead operation for one or more inodes in the directory when the directory includes the sequential flag;
Retrieving the inode list of the plurality of inodes in the directory when the file structure of the parent directory is non-sequential;
36. The system of claim 35, further comprising: issuing the metadata look-ahead operation for the one or more inodes on the inode list.
1つ以上のiノードを読み取るコマンドをインターセプトすることであって、
前記1つ以上のiノードが、前記複数のiノードの一部であり、
前記インターセプトが、入出力(I/O)動作に応答して実行され、
前記I/O動作が、前記コマンドを、もたらす、インターセプトすることを更に含む、請求項37に記載のシステム。
Intercepting a command to read one or more inodes,
The one or more inodes are part of the plurality of inodes;
The intercept is executed in response to an input / output (I / O) operation;
38. The system of claim 37, wherein the I / O operation further comprises effecting, intercepting, the command.
前記メタデータ先読み動作において発行されたメタデータ先読み値を解析することであって、
前記解析が、前記発行されたメタデータ先読み値と前記コマンド内のチャンク合計とを比較することを含む、解析することと、
前記I/O動作が完了するであろうことを前記解析が示す場合に、前記I/O動作が完了するのを待つことと、
非同期メタデータ先読み命令が発行され得ることを前記解析が示す場合に、非同期メタデータ先読み命令を発行することと、を更に含む、請求項38に記載のシステム。
Analyzing the metadata prefetch value issued in the metadata prefetch operation,
Analyzing, wherein the analyzing comprises comparing the issued metadata look-ahead value with a chunk sum in the command;
Waiting for the I / O operation to complete when the analysis indicates that the I / O operation will complete;
39. The system of claim 38, further comprising: issuing an asynchronous metadata prefetch instruction if the analysis indicates that an asynchronous metadata prefetch instruction can be issued.
前記I/O動作が完了しているかどうかを判定することと、
前記I/O動作が完了している場合に、待ち行列を生成することであって、
前記待ち行列が、前記チャンク合計のメタデータの1つ以上の残りのチャンクを含み、
前記メタデータの前記1つ以上の残りのチャンクが、前記非同期メタデータ先読み命令に含まれていない、生成することと、
前記I/O動作が完了していない場合に、前記チャンク合計を前記メタデータ先読み動作において更新することと、を更に含む、請求項39に記載の方法。
Determining whether the I / O operation has been completed;
Creating a queue if the I / O operation has been completed,
The queue includes one or more remaining chunks of the chunk total metadata;
Generating the one or more remaining chunks of the metadata are not included in the asynchronous metadata look-ahead instruction;
40. The method of claim 39, further comprising: updating the chunk sum in the metadata look-ahead operation if the I / O operation has not been completed.
JP2019516181A 2016-09-29 2017-09-28 Tracking I-node access patterns and prefetching I-nodes Ceased JP2019537097A (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US15/279,721 2016-09-29
US15/279,694 US10467190B2 (en) 2016-09-29 2016-09-29 Tracking access pattern of inodes and pre-fetching inodes
US15/279,694 2016-09-29
US15/279,721 US10235293B2 (en) 2016-09-29 2016-09-29 Tracking access pattern of inodes and pre-fetching inodes
PCT/US2017/053990 WO2018064319A1 (en) 2016-09-29 2017-09-28 Tracking access pattern of inodes and pre-fetching inodes

Publications (2)

Publication Number Publication Date
JP2019537097A true JP2019537097A (en) 2019-12-19
JP2019537097A5 JP2019537097A5 (en) 2020-11-12

Family

ID=60191456

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019516181A Ceased JP2019537097A (en) 2016-09-29 2017-09-28 Tracking I-node access patterns and prefetching I-nodes

Country Status (4)

Country Link
EP (1) EP3519993A1 (en)
JP (1) JP2019537097A (en)
CN (1) CN110352410B (en)
WO (1) WO2018064319A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022046413A (en) * 2020-09-10 2022-03-23 ウェスタン デジタル テクノロジーズ インコーポレーテッド Enhanced read-ahead capability for storage devices

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111258956B (en) * 2019-03-22 2023-11-24 深圳市远行科技股份有限公司 Method and device for prereading far-end mass data files
CN112241394B (en) * 2020-10-15 2022-08-02 浪潮商用机器有限公司 Index node IO statistical method, tool, equipment and storage medium
CN112612751A (en) * 2020-12-25 2021-04-06 北京浪潮数据技术有限公司 Asynchronous directory operation method, device, equipment and system

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974424A (en) * 1997-07-11 1999-10-26 International Business Machines Corporation Parallel file system and method with a metadata node
US6266743B1 (en) * 1999-02-26 2001-07-24 International Business Machines Corporation Method and system for providing an eviction protocol within a non-uniform memory access system
US6973542B1 (en) * 2000-07-18 2005-12-06 International Business Machines Corporation Detecting when to prefetch inodes and then prefetching inodes in parallel
US7146524B2 (en) * 2001-08-03 2006-12-05 Isilon Systems, Inc. Systems and methods for providing a distributed file system incorporating a virtual hot spare
US7333993B2 (en) * 2003-11-25 2008-02-19 Network Appliance, Inc. Adaptive file readahead technique for multiple read streams
US7937404B2 (en) * 2005-02-04 2011-05-03 Hewlett-Packard Development Company, L.P. Data processing system and method
US7996445B2 (en) * 2007-04-27 2011-08-09 Network Appliance, Inc. Block reallocation planning during read-ahead processing
US8180961B1 (en) * 2009-04-28 2012-05-15 Netapp, Inc. Method and system for revoking rights associated with I/O operations in storage systems
CN102122284B (en) * 2010-01-08 2014-07-02 腾讯科技(深圳)有限公司 Compound document storage and read-write method and compound document storage and read-write device
US8732406B1 (en) * 2011-03-15 2014-05-20 Netapp, Inc. Mechanism for determining read-ahead length in a storage system
US8818970B2 (en) * 2011-04-08 2014-08-26 Symantec Corporation Partitioning a directory while accessing the directory
US9465810B2 (en) * 2011-07-20 2016-10-11 Veritas Technologies Llc Method and system for a fast full style system check using multithreaded read ahead
US10013344B2 (en) * 2014-01-14 2018-07-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Enhanced SSD caching
CN103916465A (en) * 2014-03-21 2014-07-09 中国科学院计算技术研究所 Data pre-reading device based on distributed file system and method thereof

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022046413A (en) * 2020-09-10 2022-03-23 ウェスタン デジタル テクノロジーズ インコーポレーテッド Enhanced read-ahead capability for storage devices
JP7170093B2 (en) 2020-09-10 2022-11-11 ウェスタン デジタル テクノロジーズ インコーポレーテッド Improved read-ahead capabilities for storage devices

Also Published As

Publication number Publication date
CN110352410A (en) 2019-10-18
WO2018064319A1 (en) 2018-04-05
EP3519993A1 (en) 2019-08-07
CN110352410B (en) 2023-01-20
WO2018064319A9 (en) 2019-04-11

Similar Documents

Publication Publication Date Title
JP6026738B2 (en) System and method for improving scalability of a deduplication storage system
US8510499B1 (en) Solid state drive caching using memory structures to determine a storage space replacement candidate
US10210191B2 (en) Accelerated access to objects in an object store implemented utilizing a file storage system
US11392545B1 (en) Tracking access pattern of inodes and pre-fetching inodes
US20150249618A1 (en) Peer to peer ownership negotiation
US10929176B2 (en) Method of efficiently migrating data from one tier to another with suspend and resume capability
WO2018095187A1 (en) Document online preview method and device
US10372547B1 (en) Recovery-chain based retention for multi-tier data storage auto migration system
US10884980B2 (en) Cognitive file and object management for distributed storage environments
US9892041B1 (en) Cache consistency optimization
JP2019537097A (en) Tracking I-node access patterns and prefetching I-nodes
US11550913B2 (en) System and method for performing an antivirus scan using file level deduplication
US10996857B1 (en) Extent map performance
US10235293B2 (en) Tracking access pattern of inodes and pre-fetching inodes
US9852139B1 (en) Directory partitioning with concurrent directory access
US10649807B1 (en) Method to check file data integrity and report inconsistencies with bulk data movement
CN111930684A (en) Small file processing method, device and equipment based on HDFS (Hadoop distributed File System) and storage medium
US10705752B2 (en) Efficient data migration in hierarchical storage management system
Zhang et al. IM-Dedup: An image management system based on deduplication applied in DWSNs
US9529812B1 (en) Timestamp handling for partitioned directories
US9122690B1 (en) Systems and methods for implementing non-native file attributes on file systems
US11455114B1 (en) Consolidation and migration of cloud data
KR101638727B1 (en) Cluster system
US11132401B1 (en) Distributed hash table based logging service
KR101620782B1 (en) Method and System for Storing Data Block Using Previous Stored Data Block

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20190528

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200918

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200918

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210323

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210507

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210622

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20211026