JP2019537097A - Tracking I-node access patterns and pre-empting I-nodes - Google Patents
Tracking I-node access patterns and pre-empting I-nodes Download PDFInfo
- 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
- read
- inodes
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 147
- 230000004044 response Effects 0.000 claims abstract description 14
- 230000008569 process Effects 0.000 abstract description 105
- 238000004891 communication Methods 0.000 description 28
- 238000010586 diagram Methods 0.000 description 24
- 238000001514 detection method Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000002411 adverse Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本明細書に開示されるのは、iノードのアクセスパターンを追跡する方法、システム及びプロセスであって、メモリ内にiノードをプリ取り出す先読み命令を発行する。メタデータ記憶領域内のメタデータユニットの位置が判定される。現在のメタデータ読み取り動作に対応するメタデータ記憶領域内の別の位置が判定される。メタデータユニットの位置及び別の位置を使用して、メタデータ先読み動作を実行することができるかどうかが判定される。メタデータ先読み動作が実行され得るという判定に応答して、メタデータ先読み動作が発行される。加えて、iノードがアクセスされ、iノードのディレクトリが判定される。また、ディレクトリのエントリがグローバルiノードリスト内に存在するかどうかが判定される。エントリがグローバルiノードリスト内に存在する場合に、ディレクトリのファイル構造がシーケンシャルであるか非シーケンシャルであるかが判定される。エントリがグローバルiノードリスト内に存在しない場合に、グローバルiノードリスト内にディレクトリの新しいエントリが追加される。Disclosed herein are methods, systems, and processes for tracking access patterns of inodes and issuing read ahead instructions to pre-fetch inodes into memory. A location of a metadata unit in a metadata storage area is determined. An alternative location in the metadata storage area corresponding to a current metadata read operation is determined. It is determined whether a metadata read ahead operation can be performed using the location of the metadata unit and the alternative location. In response to determining that a metadata read ahead operation can be performed, a metadata read ahead operation is issued. Additionally, the inode is accessed and a directory of the inode is determined. Also, it is determined whether an entry for the directory exists in a 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 does not exist in the global inode list, a new entry for the directory is added to the global inode list.
Description
本開示は、データアクセスに関する。具体的には、本開示は、iノードのアクセスパターンを追跡すること、及びiノードを先取りするiノード先読み命令を発行することに関する。 This disclosure relates to data access. In particular, this disclosure relates to tracking inode access patterns and issuing inode read-ahead instructions to prefetch inodes.
ファイルシステムは、(例えば、アプリケーションを記憶及び実行するための)コンピューティング目的のために、どのようにデータを記憶及び読み出すかを制御するために使用される。ファイルシステム内のデータオブジェクト(例えば、ファイル、ディレクトリなど)は、1つ以上のiノードを有する。iノードは、ファイルシステム内のデータオブジェクトに属するデータを識別するために使用されるデータ構造である。iノードは、データオブジェクトのデータの属性(例えば、メタデータ)及びディスクブロック位置(複数可)を記憶する。 A file system is used to control how data is stored and retrieved for computing purposes (e.g., to store and execute applications). Data objects (e.g., files, directories, etc.) in a file system have one or more inodes. An inode is a data structure used to identify data belonging to a data object in a file system. An inode stores attributes (e.g., metadata) and disk block location(s) of the data object's data.
ファイルシステム内のファイルにアクセスするには、ディスクから(例えば、不揮発性記憶ユニットから)ファイルのiノードを読み取る必要がある。バックアップ、周期的スキャン、管理動作などのデータ動作は、典型的にはディスク上の複数のiノードにアクセスする。ディスクからのこのような「ディスク上」iノードを読み取ることにより、アプリケーション性能に悪影響を及ぼす可能性がある。例えば、下にあるディスクが遅い場合、ディスクからディスク上iノードを読み取ることにより、アプリケーションが必要なデータをサービスされ得る前に、不適切かつ/又は相当な入力/出力(I/O)待ち時間を生じる可能性がある。 Accessing a file in a file system requires reading the file's inode from disk (e.g., from a non-volatile storage unit). Data operations such as backups, periodic scans, and administrative operations typically access multiple inodes on disk. Reading such "on-disk" inodes from disk can adversely affect application performance. For example, if the underlying disk is slow, reading the on-disk inode from disk can result in inappropriate and/or significant input/output (I/O) latency before an application can be served the required data.
ファイルの内容をメモリ(例えば、ランダムアクセスメモリ(Random Access Memory、RAM))にロードすることができ、それにより、ファイルがその後アクセスされると、ファイルの内容は、ディスク(例えば、ハードディスクドライブ(Hard Disk Drive、HDD))ではなくRAMから読み取られる。しかしながら、ファイルの内容をメモリにロードすることは、ディスクから、アクセスされるファイルの内容に対応するiノードを必要とする。 The contents of a file can be loaded into memory (e.g., Random Access Memory (RAM)) so that when the file is subsequently accessed, the file contents are read from RAM instead of from disk (e.g., Hard Disk Drive (HDD)). However, loading the contents of a file into memory requires the inode corresponding to the file contents being accessed from disk.
本明細書に開示されるのは、メモリ内にiノードを先取りすることによってデータアクセスを加速するための、iノードのアクセスパターンを追跡する方法、システム及びプロセスである。1つのそのような方法は、不揮発性記憶ユニット内にあるメタデータ記憶領域内のメタデータユニットの位置を判定することを含む。当該方法は、現在のメタデータ読み取り動作に対応するメタデータ記憶領域内の別の位置を判定し、メタデータユニットの位置及び別の位置を使用して、メタデータ先読み動作を実行することができるかどうかを判定する。メタデータ先読み動作が実行され得るという判定に応答して、当該方法は、メタデータ先読み動作を発行する。 Disclosed herein are methods, systems, and processes for tracking access patterns of inodes to accelerate data access by prefetching inodes in memory. One such method includes determining a location of a metadata unit in a metadata storage area in a non-volatile storage unit. The method determines another location in the metadata storage area that corresponds to a current metadata read operation, and determines whether a metadata read ahead operation can be performed using the location of the metadata unit and the another location. In response to determining that a metadata read ahead operation can be performed, the method issues a metadata read ahead operation.
特定の実施形態では、メタデータ記憶領域はディスク上iノードを含む。ディスク上iノードは、メタデータユニットを含み、構造ファイルの一部である。構造ファイルは不揮発性記憶ユニットに記憶される。当該方法は、構造ファイルに対応するコア内iノードを作成し、コア内iノード内にメタデータユニットの位置を記憶する。この実施例では、メタデータユニットは、最後に読み取ったメタデータチャンクであり、メタデータユニットの位置は、メタデータユニットの終了オフセットを識別し、それを含む。 In a particular embodiment, the metadata storage area includes an on-disk inode. The on-disk inode includes a metadata unit and is part of a structural file. The structural file is stored in a non-volatile storage unit. The method creates an in-core inode corresponding to the structural file and stores a 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 ending offset of the metadata unit.
いくつかの実施形態では、メタデータ先読み動作が実行され得るかどうかを判定することは、メタデータユニットの終了オフセットにアクセスすることと、別の位置が終了オフセットに隣接しているかどうかを判定することと、を含む。この実施例では、メタデータ先読み動作を発行することは、終了オフセットを、メタデータ先読み動作によって読み取られる別のメタデータユニットの別の終了オフセット(例えば、別の最後に読み取ったメタデータチャンク)と置き換えることによって更新することと、別の位置が終了オフセットに隣接していない場合に、終了オフセットを現在のメタデータ読み取り動作の終了オフセットと置き換えることによって更新することと、を含む。 In some embodiments, determining whether a metadata read ahead operation can be performed includes accessing an ending offset of a metadata unit and determining whether another location is adjacent to the ending offset. In this example, issuing a metadata read ahead operation includes updating the ending offset by replacing it with another ending offset of another metadata unit read by the metadata read ahead operation (e.g., another last read metadata chunk), and if the other location is not adjacent to the ending offset, updating the ending offset by replacing it with the ending offset of the current metadata read operation.
他の実施形態では、当該方法は、入力/出力(I/O)動作に応答して、1つ以上のディスク上iノードを読み取るコマンドをインターセプトする。この実施例では、当該方法は、発行された先読み値とコマンド内のチャンク合計とを比較することによって、メタデータ先読み動作において、発行されたメタデータ先読み値を解析する。この方法は、I/O動作が完了するのを待ち、かつ/又は非同期メタデータ先読み命令を発行するのを待機する。 In another embodiment, the method intercepts a command to read one or more on-disk inodes in response to an input/output (I/O) operation. In this example, the method analyzes the issued metadata readahead value in the metadata readahead operation by comparing the issued readahead value to the chunk total in the command. The method waits for the I/O operation to complete and/or waits to issue an asynchronous metadata readahead command.
特定の実施形態では、I/O動作が完了しているかどうかを判定することは、I/O動作が完了している場合に待ち行列を生成することを含む。待ち行列は、非同期メタデータ先読み命令に含まれないチャンク合計のメタデータの残りのチャンクを含む。当該方法は、I/O動作が完了していない場合に、メタデータ先読み動作においてチャンク合計を更新する。 In certain embodiments, determining whether the I/O operation is complete includes generating a queue if the I/O operation is complete. The queue includes remaining chunks of metadata in the chunk total that are not included in the asynchronous metadata read ahead instruction. The method updates the chunk total in the metadata read ahead operation if the I/O operation is not complete.
いくつかの実施形態は、iノードにアクセスすることと、iノード(例えば、ディスク上iノード)のディレクトリを判定することと、ディレクトリのエントリがグローバルiノードリスト内に存在するかどうかを判定することと、を含む。エントリがグローバルiノードリスト内に存在する場合、当該方法は、ディレクトリのファイル構造がシーケンシャルであるか非シーケンシャルであるかを判定し、エントリがグローバルiノードリスト内に存在しない場合、当該方法は、グローバルiノードリスト内にディレクトリの新たなエントリを追加する。 Some embodiments include accessing an inode, determining a directory of the inode (e.g., an on-disk inode), and determining whether an entry for the directory exists in a global inode list. If the entry exists in the global inode list, the method determines whether the file structure of the directory is sequential or non-sequential, and if the entry does not exist in the global inode list, the method adds a new entry for the directory 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 an entry. The method determines whether the directory includes a sequential flag if the file structure of the directory is sequential. If the directory includes the sequential flag, the method issues a metadata read ahead operation on an inode in the directory. If the file structure of the parent directory is non-sequential, the method retrieves the inode list of the directory and issues a metadata read ahead operation on an inode on the inode list. In some embodiments, the method intercepts a command to read one or more on-disk inodes in response to an input/output (I/O) operation. In this example, the method parses the issued metadata read ahead value in the metadata read ahead operation by comparing the issued metadata read ahead value to the chunk total in the command. The method waits for the I/O operation to complete and/or issue an asynchronous metadata read ahead command.
他の実施形態では、I/O動作が完了しているかどうかを判定することは、I/O動作が完了している場合に待ち行列を生成することを含む。待ち行列は、非同期メタデータ先読み命令に含まれないチャンク合計のメタデータの残りのチャンクを含む。当該方法は、I/O動作が完了していない場合に、メタデータ先読み動作においてチャンク合計を更新する。 In another embodiment, determining whether the I/O operation is complete includes generating a queue if the I/O operation is complete. The queue includes remaining chunks of metadata in the chunk total that are not included in the asynchronous metadata read ahead instruction. The method updates the chunk total in the metadata read ahead operation if the I/O operation is not complete.
前述の内容は概要であり、したがって必然的に、簡略化、一般化、及び詳細の省略を含み、その結果として、当業者であれば、その概要が例示的であるにすぎず、なんら限定的ではないことがわかるであろう。請求項によってのみ規定されるような、本開示の他の態様、本発明の機能、及び利点は、下記に示す非限定的な詳細な説明において明瞭になるであろう。 The foregoing is a summary and thus necessarily contains simplifications, generalizations, and omissions of detail, and as a result, those skilled in the art will appreciate that the summary is merely illustrative and not limiting in any way. Other aspects, features, and advantages of the present disclosure, 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, and most of its objects, features, and advantages made apparent to those skilled in the art, by referring to the accompanying drawings.
本開示は、様々な修正形態及び代替形式に影響を受けるが、本開示の特定の実施形態は、図面及び詳細な説明において例として提供される。図面及び詳細な説明は、開示内容を開示された特定の形式に限定することを意図しないことを理解されたい。その代わりに、添付の請求項によって規定されるような本開示の趣旨及び範囲内にある全ての修正形態、等価物、及び代替形態を包含することが意図される。 While the present disclosure is susceptible to various modifications and alternative forms, specific embodiments of the disclosure are provided by way of example in the drawings and detailed description. It should be understood that the drawings and detailed description are not intended to limit the disclosure to the particular forms disclosed. Instead, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the disclosure as defined by the appended claims.
序論
ファイルシステム(例えば、Unixファイルシステム)を使用して、データを整理し、そのデータがどのように記憶され、及び読み出されるかを制御する。ファイルシステムは、ファイル及びディレクトリなどのデータオブジェクトを整理し、かつ記憶デバイス(例えば、ハードディスクドライブ(HDD)、ソリッドステートドライブ(Solid State Drive、SSD)、及び/又は同様のもの)のどの領域がどのデータオブジェクトに属するかを把握することを担う。典型的には、ファイルシステム(例えば、ファイル、ディレクトリなど)内の各データオブジェクトは、対応するノードを有する。
Introduction A file system (e.g., the Unix file system) is used to organize data and control how that data is stored and retrieved. A file system is responsible for organizing data objects such as files and directories, and keeping track of which regions of a storage device (e.g., a Hard Disk Drive (HDD), a Solid State Drive (SSD), and/or the like) belong to which data object. Typically, each data object in a file system (e.g., a file, a directory, etc.) has a corresponding node.
iノードは、ファイルシステム内のデータを位置特定するために使用されるデータ構造である。iノードは、データオブジェクトのデータの属性(例えば、メタデータ)及びディスクブロック位置(複数可)を記憶し、整数の数(例えば、iノード番号と称する)によって識別され得る。ディレクトリは、iノードに割り当てられた名称のリストを含むことができる。ディレクトリは、それ自体のエントリ、ディレクトリの親のエントリ、及びディレクトリの子のそれぞれに対するエントリを含む。 An inode is a data structure used to locate data within a file system. An inode stores the attributes (e.g., metadata) and disk block location(s) of a data object's data, and may be identified by an integer number (e.g., called the inode number). A directory may contain a list of names assigned to inodes. A directory contains an entry for itself, 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 a file system typically involves reading the file's inode from disk (e.g., from a non-volatile storage unit) to, for example, determine changes and/or modifications to the file's contents and in some cases to verify ownership and permission information (e.g., group ID, user ID, permissions, etc.). Thus, before the file's contents 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 access of multiple inodes to disk, and reading such "on-disk" inodes from disk can adversely affect application performance (e.g., in the form of I/O latency before a given I/O operation can be completed). Also, as previously described, file contents can be "read ahead" and loaded into memory (e.g., random access memory (RAM)) so that when the file is subsequently accessed, the file contents are read from RAM rather than from disk (e.g., HDD). Thus, prefetching data in this manner (e.g., to accelerate data access) requires tracking of the access pattern(s) of inodes in order to "read ahead" these inodes before their associated data (e.g., files, directories, etc.) can be preloaded into memory.
残念ながら、ファイルデータとは異なり、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 (e.g., from multiple applications running in a cluster) can access the same inode simultaneously. Tracking the inode access pattern(s) of multiple I/O operations can be memory and computational resource intensive and can result in significant overhead. Second, tracking the inode access pattern(s) also requires efficient "read-ahead" of such inodes (e.g., by issuing read-ahead instructions) without adversely affecting system performance at the same time.
本明細書では、チャンクアクセス、シーケンシャルアクセス、及び非シーケンシャルアクセスに基づいて、iノードのアクセスパターンを追跡し、能力の中でもとりわけ、iノードに対する先読み命令を発行することが可能な方法、システム及びプロセスが開示される。
iノードアクセスパターン(複数可)を追跡して先読みを発行するシステム例
Disclosed herein are methods, systems and processes that are capable of tracking access patterns of inodes based on chunk access, sequential access and non-sequential access and issuing read-ahead instructions to inodes, among other capabilities.
Example system for tracking inode access pattern(s) and issuing read-aheads
図1Aは、一実施形態に係る、iノードのアクセスパターン(複数可)を追跡してiノードを先取りするように構成されたコンピューティングシステム100Aのブロック図である。図1Aに示すように、コンピューティングデバイス105はプロセッサ110及びメモリ115を含む。コンピューティングデバイス105は、サーバ、デスクトップ、ラップトップ、タブレットなどを含む任意のタイプのコンピューティングシステムであり得るとともに、ネットワーク185を介して記憶システム145に通信可能に結合されている。ネットワーク185は、任意のタイプのネットワーク及び/又は相互接続(例えば、ローカルエリアネットワーク(Local Area Network、LAN)、ワイドエリアネットワーク(Wide Area Network、WAN)、ストレージエリアネットワーク(Storage Area Network、SAN)、インターネットなど)であり得る。
1A is a block diagram of a
記憶システム145は、ハードディスク、コンパクトディスク、デジタル多用途ディスク、フラッシュメモリなどのSSDメモリ、又は1つ以上のそのような物理的記憶デバイス上に実装されたボリュームなどの1つ以上の論理的記憶デバイスを含む、様々な異なる記憶デバイスを含むことができる。記憶システム145は、そのような記憶デバイス(例えば、ディスク150)のうちの1つ以上を含む。一実施形態では、ディスク150は不揮発性記憶ユニットである。他の実施形態では、ディスク150はHDD又はSSDである。ディスク150はファイルシステム155を含む。ファイルシステム155は、任意の種類のファイルシステム(例えば、Unixファイルシステム、エクステントベースのファイルシステムなど)であり得る。
Storage system 145 may include a variety of different storage devices, including one or more logical storage devices, such as hard disks, compact disks, digital versatile disks, SSD memory such as flash memory, or volumes implemented on one or more such physical storage devices. Storage system 145 includes one or more of such storage devices (e.g., disks 150). In one embodiment,
オペレーティングシステム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
ファイルシステム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 (e.g., files, directories, and/or the like) in file system 155 are associated with corresponding inodes (e.g., on-disk inodes 165(1)-(N)). Each on-disk inode has a specific inode number and is stored on disk 150 (e.g., as on-disk inodes 165(1)-(N) and as part of structure file 160). In-core inode list 125 is an in-memory data structure (or list) for one (or more) on-disk inodes. In-core inode list 125 contains metadata stored as part of on-disk inodes 165(1)-(N) 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 (e.g., a file, a subdirectory, etc.) is the directory of which the given data object is a part. For example, if a given directory (e.g., /home/john) contains four data objects (e.g., file1, file2, file3, and dir1, with pathnames /home/john/file1, /home/john/file2, /home/john/file3, and /home/john/dir1, respectively), then the parent directory of the parent directories of these directory entries (e.g., file1, file2, file3, and dir1) is "john". Each data object also has a corresponding and/or associated on-disk inode (e.g., on-disk inode 165(1) for "john", on-disk inode 165(2) for "file1", on-disk inode 165(3) for "file2", on-disk inode 165(4) for "file3", and on-disk inode 165(5) for "dir1". In this scenario, the parent (directory) inode number of on-disk inodes 165(2), 165(3), 165(4), and 165(5) is on-disk inode 165(1) (shown as directory inode 130(1) in in-core inode list 125 for clarity).
いくつかの実施形態によれば、図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 a structural file, and FIG. 1C is a block diagram 100C of a structural file and an in-core inode. A directory in file system 155 contains a list of tuples (e.g., <filename, file inode number>). Inode list 175 is an example of such a list of tuples in file system 155. The data portion of on-disk inode 165(1) includes <file1, on-disk inode 165(2)>, <file2, on-disk inode 165(3)>, <file3, on-disk inode 165(4)>, and <dir1, on-disk inode 165(5)>. As shown in FIG. 1B, these "on-disk" inodes are maintained as data for structural file 160 (e.g., an iList file). Since
図2Aは、一実施形態に係る、iノードのアクセスパターンを追跡してメタデータ先読み命令を発行するコンピューティングシステム200Aのブロック図である。図2Aに示すように、コンピューティングデバイス105はメモリ115を含む。メモリ115は、キャッシュ205、アクセスパターントラッカ225及びメタデータ先読み生成器240を実装する。キャッシュ205は、コア内iノードリストからの1つ以上のエントリを含むグローバルiノードリスト215を実装する。コア内iノード126(1)は、構造ファイル160(1)のために作成されるメモリ内データ構造(又はリスト)である。
Figure 2A is a block diagram of a
コア内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. Global inode list 215 is a global in-memory inode list. Offset metadata 210 includes location information for on-disk inode access patterns, and global inode list 215 (also referred to as parent directory list) includes directory inodes 130(1)-(N) (e.g., in-core parent directory inode numbers of the on-disk inodes) and sequential flags 220(1)-(N). Sequential flags 220(1)-(N) may be stored as part of the in-core inode for a parent directory (e.g., a parent directory identified in memory by its in-core parent directory inode number and shown in FIG. 2A as directory inodes 130(1)-(N)). Access pattern tracker 225 includes chunk access tracker 230 (e.g., for tracking chunk accesses of the on-disk inodes) and a directory access tracker (e.g., for tracking sequential and non-sequential accesses of the on-disk inodes within the directory). The aforementioned elements of FIG. 2A are described in more detail with respect to FIGS. 2B-2E.
Example of tracking inode chunk access patterns
図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ノードにアクセスしているかどうかに関する判定を容易にするように構成され得る。
2B is a block diagram 200B of offset metadata according to one embodiment. The offset metadata 210 includes the ending offset of the last read metadata chunk 245 and the starting offset of the current metadata read operation 250. Because the file system 155 persistently stores the in-core inodes 165(1)-(N) on the
一実施形態では、チャンクアクセストラッカ230は、(例えば、構造ファイル160内の)メタデータ記憶領域内のメタデータユニットの位置(図1Bに示すようなディスク上iノード165(1)〜(4)の1KBチャンクの位置/終了オフセット)を判定する。チャンクアクセストラッカ230は、現在のメタデータ読み取り動作に対応するメタデータ記憶領域内(例えば、構造ファイル160内)の別の位置(例えば、開始オフセット)を判定する。メタデータ先読み生成器240は、次いで、データチャンクの位置と現在のメタデータ読み取り動作に対応する別の位置とを使用して、メタデータ先読み動作が必要であるかどうかを判定する。メタデータ先読み動作が必要である場合、メタデータ先読み生成器240はメタデータ先読み動作を発行する。 In one embodiment, chunk access tracker 230 determines the location of the metadata unit in the metadata storage area (e.g., in structure file 160) (the location/ending offset of the 1 KB chunk in on-disk inodes 165(1)-(4) as shown in FIG. 1B). Chunk access tracker 230 determines another location (e.g., starting offset) in the metadata storage area (e.g., in structure file 160) that corresponds to the current metadata read operation. Metadata read ahead generator 240 then uses the location of the data chunk and the other location that corresponds to the current metadata read operation to determine whether a metadata read ahead operation is required. If a metadata read ahead operation is required, metadata read ahead generator 240 issues a metadata read ahead 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 maintains the ending offset (e.g., the end of the logical offset in the structural file 160(1)) of the last read metadata chunk 245 from the
いくつかの実施形態では、現在のメタデータ読み取り動作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 metadata read operation 250 (e.g., on-disk inode 165(5) as shown in FIG. 1B) is adjacent to the stored value (e.g., the ending offset of on-disk inodes 165(1)-(4) minus the ending offset of the last read metadata chunk 245), and the metadata readahead generator 240 issues a metadata readahead command to retrieve 1 KB-2 KB of the on-disk inode (e.g., on-disk inodes 165(5)-(8) as shown in FIG. 1B) in the
上述のメタデータ先読み命令がトリガされた場合(例えば、現在のメタデータ読み取り動作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の終了オフセット)をリセットする。 When the metadata read-ahead command is triggered (e.g., the starting offset of the current metadata read operation 250 is next to the ending offset of the last read metadata chunk 245), the access pattern tracker 225 updates the stored value in the in-core inode list 125 (e.g., the ending offset of on-disk inodes 165(1)-(4) - the ending offset of the last read metadata chunk 245) by replacing the stored value in the cache 205 read by the metadata read-ahead operation with another ending offset of another last read metadata chunk (e.g., on-disk inodes 165(5)-(8) (at 2 KB) as shown in FIG. 1B, since the metadata read-ahead operation reads ahead 1 KB-2 KB of on-disk inodes as a result of the (issued) metadata read-ahead command). On the other hand, if the starting offset of the current metadata read operation 250 is not adjacent to the ending offset of the last read metadata chunk 245, and therefore no metadata read-ahead is triggered, the access pattern tracker 225 resets the stored value (e.g., the ending offset of on-disk inodes 165(1)-(4) - the ending offset of the last read metadata chunk 245) with the ending offset of the current metadata read operation.
iノードのチャンクアクセスパターン(複数可)を追跡することができ、メタデータ先読み命令及び/又はメタデータ先読み動作がディスクからメモリへの適用可能なiノードを先取りしてこれらのiノードの後続のアクセスを加速することができることが理解されるであろう。次に、ディレクトリの一部であるノードに対するiノードに対するアクセスパターンを追跡する方法、システム、及びプロセスについて説明する。
親ディレクトリを用いてiノードのアクセスパターンを追跡する例
It will be appreciated that inode chunk access pattern(s) can be tracked and metadata read ahead instructions and/or operations can prefetch applicable inodes from disk to memory to accelerate subsequent accesses of those inodes. Methods, systems, and processes for tracking access patterns to inodes for nodes that are part of a directory are now described.
Example of tracking inode access patterns using parent directories
iノード割り当てポリシーは、本明細書で近接位置と称する同じディレクトリ内で互いに近接したディスク上iノードを保持することができることが理解されよう。例えば、頻繁にアクセスされ、一緒にアクセスされるファイルのディスク上iノードは、同じディレクトリ内に保持され得る。ディレクトリ内のディスク上iノードのこの近接位置を使用して、iノードのディレクトリアクセスを追跡することができる。例えば、グローバルiノードリスト215(又は親ディレクトリリスト)を作成及び保持してディスク上iノードのアクセスを追跡することができる。 It will be appreciated that inode allocation policies may keep on-disk inodes close to each other in the same directory, referred to herein as close location. For example, on-disk inodes for files that are frequently accessed and accessed together may be kept in the same directory. This close location of on-disk inodes within a directory may be used to track directory access of inodes. For example, a global inode list 215 (or parent directory list) may be created and maintained to track access of on-disk inodes.
図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を含む。 2C is a table 200C illustrating the contents of such a global inode list, and FIG. 2D is a block diagram 200D of a directory access tracker 235 that uses a global inode list, according to a particular embodiment. Global inode list 215 (which is the parent directory list of directories 265(1)-(N)) includes directory inode field 255 and sequential flag field 260. Global inode list 215 is created and maintained in memory and includes directory inodes 130(1)-(N) and sequential flags 220(1)-(N). The sequential flags may be stored as part of the in-core inode for the parent directory. Directory access tracker 235 includes sequential directory access tracker 270 and 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, an application accesses an inode (e.g., on-disk inode 165(4)). Directory access tracker 235 determines the parent directory of the node (e.g., directory 265(1)) and determines whether an entry for the directory exists in global inode list 215. If the directory entry exists in global inode list 215, directory access tracker 235 determines whether the file structure of the directory is sequential or non-sequential (e.g., by determining whether the on-disk inodes in that directory are listed and therefore accessed sequentially or non-sequentially). If the directory entry does not exist in global inode list 215, directory access tracker 235 adds a new entry for the parent directory inode in global inode list 215. It should be noted that, as shown in Figures 1A, 2A, 2C, and 3C, a directory inode (e.g., directory inodes 130(1)-(N)) is simply a directory-specific representation of the on-disk inode that represents the parent directory (e.g., instead of an individual file). For example, directory inode 130(1) is an in-memory data structure that represents the parent directory of one or more on-disk inodes.
ディスク上iノードのシーケンシャルディレクトリアクセスを追跡するために、シーケンシャルディレクトリアクセストラッカ270は、所与のディスク上iノードの親ディレクトリを最初に見つける(例えば、親ディレクトリのiノード番号を見つける)。例えば、ディスク上iノード165(4)がディスク150から読み取られる場合、シーケンシャルディレクトリアクセストラッカ270はディスク上iノード165(4)(例えば、ディレクトリiノード130(1))の親ディレクトリを見つける。次いで、シーケンシャルディレクトリアクセストラッカ270は、所与のディスク上iノードの親ディレクトリ(iノード)のエントリ(例えば、親ディレクトリiノード番号がキャッシュ205内に存在するかどうか)のグローバルiノードリスト215を探索する。
To track sequential directory accesses of an on-disk inode, sequential directory access tracker 270 first finds the parent directory of the given on-disk inode (e.g., finds the inode number of the parent directory). For example, if on-disk inode 165(4) is read from
親ディレクトリ(iノード)のエントリがグローバルiノードリスト215に存在する場合、シーケンシャルディレクトリアクセストラッカ270は、グローバルiノードリスト215をチェックして、親ディレクトリがシーケンシャルフラグセット(例えば、この場合に、図2Cに示すように、親ディレクトリiノード番号であり、ディレクトリシーケンシャルフラグセットを有するiノード130(1))を有するか否かを判定する。シーケンシャルフラグが設定されている場合、メタデータ先読み生成器240はメタデータ先読み命令を発行する(例えば、ディスク上iノードアクセスがシーケンシャルであるため、ディレクトリ265(1)内の全ての残りのディスク上iノードを取り出す)。シーケンシャルディレクトリアクセストラッカ270がグローバルiノードリスト215内の親ディレクトリのエントリを見つけない場合、シーケンシャルディレクトリアクセストラッカ270は、親ディレクトリのiノード番号の新たなエントリをグローバルiノードリスト215に追加する。 If an entry for the parent directory (inode) exists in the global inode list 215, the sequential directory access tracker 270 checks the global inode list 215 to determine whether the parent directory has the sequential flag set (e.g., in this case, inode 130(1), which is the parent directory inode number and has the directory sequential flag set, as shown in FIG. 2C). If the sequential flag is set, the metadata readahead generator 240 issues a metadata readahead command (e.g., to retrieve all remaining on-disk inodes in directory 265(1) since the on-disk inode access is sequential). 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 non-sequential directory accesses of an on-disk inode, non-sequential directory access tracker 275 first finds the parent directory of a given on-disk inode (e.g., the inode number of the parent directory). Then, non-sequential directory access tracker 275 searches global inode list 215 for an existing entry of the parent directory (e.g., whether the parent directory inode number exists in cache 205). If an entry of the parent directory exists in global inode list 215, non-sequential directory access tracker 275 retrieves (or reads) the parent directory's inode list (e.g., the portion or part of inode list 175 applicable to the parent directory in question) from
Example of issuing a metadata prefetch command to an I-node
図2Eは、一実施形態に係る、メタデータ先読み生成器のブロック図200Eである。メタデータ先読み生成器240は、コンピューティングデバイス105によって実装され、発行されたメタデータ先読み値280及び非同期メタデータ先読み命令285を記憶し、待ち行列生成器290を含む。ディレクトリアクセストラッカ235は先取りする1つ以上のディスク上iノードを識別するが、これらのディスク上iノードが先取りされない場合、これらのディスク上iノードと関連付けられたI/O動作を完了することができない。
2E is a block diagram 200E of a metadata read-ahead generator according to one embodiment. The metadata read-ahead generator 240 is implemented by the
したがって、一実施形態では、メタデータ先読み生成器240は、I/O動作(例えば、読み出し動作又は書き込み動作)に応答して、ディスク上iノードを読み取るコマンドをインターセプトする。データにアクセスするI/O動作は、そのデータと関連付けられたディスク上iノード(複数可)(例えば、メタデータ)に、(例えば、要求されたデータが変更されたか、どのように変更されたかなどを判定するなどのために)アクセスし、それを読み出すコマンドを生じる(又は生じさせる)ことができる。メタデータ先読み生成器240は、発行されたメタデータ先読み値280と、コマンド内のチャンク合計とを比較することによって、メタデータ先読み動作において、発行されたメタデータ先読み値280を解析する。 Thus, in one embodiment, metadata readahead generator 240 intercepts commands to read on-disk inodes in response to I/O operations (e.g., read or write operations). An I/O operation that accesses data may result (or cause) a command to access and read the on-disk inode(s) (e.g., metadata) associated with that data (e.g., to determine if and how the requested data has changed, etc.). Metadata readahead generator 240 analyzes the issued metadata readahead value 280 in the metadata readahead operation by comparing the issued metadata readahead value 280 to the chunk total 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 issued metadata read-ahead value 280 includes all on-disk inodes to be read ahead (e.g., detected based on sequential/near-sequential chunk accesses and/or sequential or non-sequential accesses of on-disk inodes in the directory). The chunk total is the total number of chunks of the on-disk inode to read ahead (e.g., represented herein as an integer "N" for purposes of illustration). For example, the chunk access tracker 230 and the sequential directory access tracker 270 may identify and determine that a 1 KB chunk of the on-disk inode (e.g., on-disk inodes 165(1)-(4)) or a 2 k chunk of the on-disk inode (e.g., on-disk inodes 165(1)-(8)) must be read ahead (e.g., based on sequential/near-sequential chunk accesses and/or sequential or non-sequential accesses of on-disk inodes in the directory). However, as discussed above, the non-sequential directory access tracker 275 may identify several non-sequential on-disk inodes (e.g., which may be part of various different chunks) to read ahead (e.g., as shown in the case of directory 265(2) in FIG. 3B). Thus, it will be appreciated that in certain scenarios, the published metadata read 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 read ahead generator 240 waits for the I/O operation to complete or issues an asynchronous metadata read ahead
例えば、(例えば、アプリケーション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 (e.g., by application 130), a command (or request) to read the on-disk inode going to
合計の発行されたメタデータ先読みがN以下である場合、メタデータ先読み生成器240は、非同期メタデータ読み取りの次のチャンク(例えば、Nの後の発行されたメタデータ先読み値280の次のチャンク)を有する非同期メタデータ先読み命令285を発行する。元のI/O動作が完了している場合、待ち行列生成器290は、非同期メタデータ読み取りの残りのチャンク(例えば、Nの後の発行されたメタデータ先読み値280の残りのチャンク)を有する非同期メタデータ先読み命令285を発行する別個のスレッドを生成する。元のI/O動作が完了していない場合、メタデータ先読み生成器240は、発行されたメタデータ先読み値280のカウンタをインクリメントし、発行されたメタデータ先読み値280がNに等しいかどうかを判定し、元のI/O動作が完了するのを待つ。
If the total issued metadata read ahead is less than or equal to N, the metadata read ahead generator 240 issues an asynchronous metadata read ahead
メタデータ先読み検出と非同期メタデータ先読み命令の発行とはブロックスレッドのコンテキストで実行される一方、元のI/O動作はバックグラウンドで完了するのを待っていることが理解されるであろう。これらの方法は、システム性能上のiノードアクセスパターン検出オーバーヘッドを減少させ、また、別個のスレッドの作成及びスケジューリングを回避し、これによって後続の読み取りのためのブロックの可用を遅延させることができる。
iノードのシーケンシャル及び非シーケンシャルディレクトリアクセスパターンの追跡例
It will be appreciated that metadata read-ahead detection and issuance of asynchronous metadata read-ahead instructions are performed in the context of a blocking thread while the original I/O operation waits to complete in the background. These methods reduce the overhead of inode access pattern detection on system performance and also avoid the creation and scheduling of a separate thread, which can delay the availability of blocks for subsequent reads.
Example of tracking sequential and non-sequential directory access patterns of inodes
いくつかの実施形態によれば、図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 with a sequential inode structure 300A, FIG. 3B is a block diagram of a directory with a non-sequential inode structure 300B, and FIG. 3C is a block diagram of a
例えば、ディレクトリ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, because the on-disk inode for directory 265(1) is sequential (e.g., on-disk inodes 165(4)-(9) are listed sequentially), sequential directory access tracker 270 sets a sequential flag in directory inode 130(1) (e.g., in the in-core inode) for directory 265(1) (e.g., indicated by a "1" in sequential flag field 260 of global inode list 215 in Figures 2C and 3C). In contrast, because the on-disk inode for directory 265(2) is non-sequential (e.g., on-disk inodes 165(4), 165(9), 165(15), 165(11), 165(19), and 165(6) are listed non-sequentially), non-sequential directory access tracker 275 does not set the sequential flag in directory inode 130(2) (e.g., in the in-core inode) for directory 265(2) (e.g., as indicated by a "0" in sequential flag field 260 of global inode list 215 in FIGS. 2C and 3C).
前述したように、メタデータ先読み動作を実行するメタデータ先読み命令は、ディレクトリのリスティングが実行された後に発行され得る。一実施形態では、アプリケーションはディスク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 previously discussed, a metadata read-ahead command to perform a metadata read-ahead operation may be issued after a directory listing has been performed. In one embodiment, an application performs a listing of a directory that is part of
例えば、アプリケーション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
次に、アプリケーション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, if
ディレクトリアクセストラッカ235は、ディスク上iノードのチャンクアクセスパターン(複数可)、並びに、ディレクトリの一部であるディスク上iノードのシーケンシャル及び非シーケンシャルアクセスパターン(複数可)を追跡して、iノード及びデータアクセスを加速するメタデータ先読み動作の候補であるディスク上iノードを識別することが理解されるであろう。
iノードアクセスパターン(複数可)を追跡してメタデータ先読み命令を発行するプロセス
It will be appreciated that the directory access tracker 235 tracks the chunk access pattern(s) of on-disk inodes, as well as the sequential and non-sequential access pattern(s) of on-disk inodes that are part of a directory, to identify on-disk inodes that are candidates for metadata read-ahead operations to accelerate inode and data access.
A process that tracks inode access pattern(s) and issues metadata read-ahead instructions
図4Aは、一実施形態に係る、ディスクからメモリへディスク上iノードを先取りする先読み命令を発行するプロセスを示すフローチャート400Aである。プロセスは、405において、メタデータ記憶領域(例えば、構造ファイル160)にアクセスすることによって開始する。410において、プロセスは、最後に読み取ったメタデータチャンクの位置(例えば、最後に読み取ったメタデータチャンク245の終了オフセット)を判定する。415において、プロセスは、(例えば、ディスク上iノードを読み取る)コマンド(又は要求)が受信されたかどうかを判定する。コマンドがまだ受信されていない場合、プロセスは415にループバックする。一方、コマンドが受信された場合、プロセスは、420において、メタデータ記憶領域内のコマンドのオブジェクトの位置(例えば、現在のメタデータ読み取り動作250の開始オフセット)を判定する。
FIG. 4A is a
425において、プロセスは、メタデータ先読みが実行され得るかどうか(又は、メタデータ先読みが必要又は実行可能であるかどうか)を判定する。メタデータ先読みが実行できない場合、プロセスは、430において、通常の処理を可能にする(例えば、メタデータ先読み動作は実行されず、ディスク上iノードはディスクからメモリへ先取りされない)。一方、メタデータ先読みが実行できる(及び/又は必要及び/又は実行可能である)場合、プロセスは、435において、メタデータ先読み動作を発行する(又は、例えばメタデータ先読み生成器240を用いてメタデータ先読み命令を発行して、コンピューティングデバイス105にメタデータ先読み動作を実行させてディスクからメモリへディスク上iノードのチャンク(複数可)を取り出す)。440において、プロセスは、(例えば、ディスク上iノードにアクセスし、及び/又はこれを読み取る)新たなコマンドが存在するかどうかを判定する。ディスク上iノードにアクセスし、及び/又はこれを読み取る新たなコマンドが存在する場合、プロセスは405にループバックする。そうでない場合、プロセスは終了する。
At 425, the process determines whether metadata read-ahead can be performed (or whether metadata read-ahead is required or feasible). If metadata read-ahead cannot be performed, the process allows normal processing at 430 (e.g., no metadata read-ahead operation is performed and the on-disk inode is not prefetched from disk to memory). On the other hand, if metadata read-ahead can be performed (and/or is required and/or feasible), the process issues a metadata read-ahead operation at 435 (or issues a metadata read-ahead command, e.g., using the metadata read-ahead generator 240, to cause the
図4Bは、一実施形態に係る、ディスク上iノードと関連付けられたオフセットメタデータを記憶するプロセスを示すフローチャート400Bである。プロセスは、445において、メタデータ記憶領域(例えば、構造ファイル160)内のメタデータチャンクのオフセット位置(例えば、最後に読み取ったメタデータチャンク245の終了オフセット)を判定することによって開始する。450において、プロセスは、メモリ(例えば、メモリ115)内のコア内iノード(例えば、コア内iノードリスト125)を作成し、455において、プロセスは、コア内iノード内のメタデータチャンクのオフセット位置を記憶する。
Figure 4B is a
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 (e.g., the start offset of the current metadata read operation 250) is next to (or adjacent to) the offset location of the metadata chunk. If the location of the current metadata read operation is not next to the offset location of the metadata chunk, the process stores the offset location of the metadata chunk read by the current metadata read operation (e.g., the end offset of the current metadata read operation) at 465. On the other hand, if the location of the current metadata read operation is next to the offset location of the metadata chunk, the process issues a metadata read ahead operation (or issues a metadata read ahead command) at 470 and stores the offset location of the metadata chunk read by the metadata read ahead operation at 475. At 480, the process determines whether there is a new read request (e.g., a command to read the on-disk inode caused by an application I/O operation). If there is a new read request to read the on-disk inode, 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 illustrated in
図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にリストされているかどうか)を判定する。
Figure 5A is a
ディレクトリがグローバル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 adds a new entry (e.g., adds the parent directory inode number) for the on-disk inode (e.g., as shown for directory 265(3) in FIGS. 2C and 3C) in the global inode list at 520. If the directory does exist in the global inode list, the process determines the file structure of the directory (e.g., whether the on-disk inodes in the directory are listed sequentially or non-sequentially) at 525. At 530, the process determines whether there is another access of the on-disk inode. If there is another access of the on-disk inode, the process loops back to 505. Otherwise, the process ends.
図5Bは、一実施形態に係る、ディスク上iノードのメタデータ先読み命令を発行するプロセスを示すフローチャート500Bである。当該プロセスは、所与のディレクトリ内のエントリのディスク上iノード番号がシーケンシャルであるか非シーケンシャルである(例えば、ディレクトリのリスティングを実行した結果としてシーケンシャル又は非シーケンシャルにリストされる)かを判定することによって、535において開始する。例えば、図3Aでは、エントリのディスク上iノード番号がシーケンシャルにリストされ、図3Bでは、エントリのディスク上iノード番号が非シーケンシャルにリストされる。
Figure 5B is a
エントリのディスク上iノード番号が非シーケンシャルにリストされる場合、プロセスは、540において、グローバルiノードリスト(例えば、図3Cに示すような親ディレクトリリスト)にアクセスする。545において、プロセスは、グローバルiノードリスト上の親ディレクトリノードを、(例えば、ディスク上iノードの親ディレクトリiノード番号を使用して)識別する。550において、プロセスは、問題のディレクトリと関連付けられたiノードリストを、(iノードリストがリスティングプロセス中にメモリに記憶及び保持され得るため、ディスク150から、又はメモリから)取り出し、555において、iノードリスト上のディスク上iノードに対するメタデータ先読み命令を発行する。
If the on-disk inode numbers of the entries are listed non-sequentially, the process accesses the global inode list (e.g., the parent directory list as shown in FIG. 3C) at 540. At 545, the process identifies the parent directory node on the global inode list (e.g., using the parent directory inode number of the on-disk inode). At 550, the process retrieves the inode list associated with the directory in question (either from
一方、エントリのディスク上iノード番号がシーケンシャルにリストされる場合、プロセスは、560において、グローバルiノードリストにアクセスし、565において、(例えば、ディスク上iノードの親ディレクトリ番号を使用して)グローバルiノードリスト上でアクセスされるファイルの親ディレクトリのメモリ内iノードを識別する。570において、プロセスは、ディレクトリがシーケンシャルフラグセットを有することを検証し、575において、問題のディレクトリにリストされた残りのディスク上iノードに関するメタデータ先読み命令を発行する。580において、プロセスは、ディスク上iノード(複数可)の別のアクセスがあるかどうかを判定する。ディスク上iノード(複数可)の別のアクセスがある場合、プロセスは535にループバックする。そうでない場合、プロセスは終了する。 On the other hand, if the on-disk inode numbers of the entries are listed sequentially, the process accesses the global inode list at 560 and identifies the in-memory inode of the parent directory of the accessed file on the global inode list at 565 (e.g., using the parent directory number of the on-disk inode). At 570, the process verifies that the directory has the sequential flag set and issues metadata read-ahead instructions at 575 for the remaining on-disk inodes listed in the directory in question. At 580, the process determines whether there is another access of the on-disk inode(s). If there is another access of the on-disk inode(s), the process loops back to 535. If not, the process terminates.
図5Aのフローチャート500A及び図5Bのフローチャート500Bに示すプロセスは、ディレクトリが関与しているときに、ディスク上iノードのアクセスパターン(複数可)を追跡するための親ディレクトリリストを使用する例であることが理解されるであろう。前述のように、アプリケーションは、1つ以上のディレクトリのリスティングを実行して、所与のディレクトリ内のディスク上iノードがシーケンシャル又は非シーケンシャルにリストされているかを判定することができる。ディレクトリは典型的にはディスク(例えば、ディスク150)上に記憶されているため、所与のディレクトリにファイルがアクセスされるたびにディレクトリのデータ及び/又はファイル構造を判定することは、著しいコンピューティングリソースを消費する可能性がある。しかしながら、アクセスパターントラッカ225と親ディレクトリリストとの両方はメモリ115の一部であるため、また親ディレクトリリストは複数のディレクトリのデータ及び/又はファイル構造のリスティングを保持するため、アクセスパターントラッカ225は、親ディレクトリリストを単に使用して、所与のディレクトリ内のファイルがアクセスされるたびにディスク150にアクセスすることなく、所与のディレクトリのコア内iノードがシーケンシャルであるか非シーケンシャルであるかを判定することができる。
It will be appreciated that the processes illustrated in
図6Aは、一実施形態に係る、入力/出力(I/O)動作を処理するプロセスを示すフローチャート600Aである。当該プロセスは、605において、ディスク上iノード(例えば、構造ファイル160内のメタデータユニット)と関連付けられたメタデータチャンクに対して発行されたI/O動作を検出することによって開始する。610において、プロセスは、I/O動作が検出されるかどうかを判定する。I/O動作が検出されない場合、プロセスは605に戻る。一方、I/O動作が検出される場合、プロセスは、615において、ディスク上iノード(複数可)にアクセスし、及び/又はこれを読み出すコマンド(又は要求)をインターセプトする。
Figure 6A is a
620において、プロセスは、メタデータ先読み動作のメタデータ先読み値にアクセスし、625において、(発行された合計)メタデータ先読み値と、先読みするメタデータチャンクの総数とを比較することによって、メタデータ先読み値を解析する。630において、プロセスは、I/O動作が完了するのを待っており、635において、非同期メタデータ先読み命令(例えば、メタデータ先読み生成器240を使用して)を発行する。640において、プロセスは、別のI/O動作が存在するかどうかを判定する。別のI/O動作が存在する場合、プロセスは605にループする。そうでない場合、プロセスは終了する。 At 620, the process accesses the metadata read ahead value of the metadata read ahead operation and analyzes it by comparing the (total issued) metadata read ahead value with the total number of metadata chunks to read ahead at 625. At 630, the process waits for the I/O operation to complete and issues an asynchronous metadata read ahead instruction (e.g., using metadata read ahead generator 240) at 635. At 640, the process determines whether there is another I/O operation. If there is another I/O operation, 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に戻る。そうでない場合、プロセスは終了する。 Figure 6B is a flow chart illustrating a process for handling I/O operations related to prefetching an inode, according to one embodiment. The process begins by determining whether a given I/O operation is complete, at 645. If the I/O operation is not complete, the process updates the chunk total, at 650 (e.g., the total number of metadata chunks to read ahead, or "N"), and proceeds to 625 (Figure 6A). On the other hand, if the I/O operation is complete, the process creates a queue, at 660 (e.g., a separate thread), to issue a metadata read ahead, at 665, that includes the remaining chunks of metadata not included in the asynchronous metadata read ahead instruction (e.g., of Figure 6A). At 670, the process determines whether there is another command to be intercepted (e.g., a request to read the on-disk inode(s)). If there is another command to be intercepted, the process returns to 615 (in Figure 6A). If not, the process ends.
図6Aのフローチャート600A及び図6Bのフローチャート600Bに示すプロセスを使用して、発行されたメタデータ先読み値とチャンク合計とを比較することによって、メタデータの様々な異種チャンクの一部であるディスク上iノードを識別して先取りすることができることが理解されるであろう。iノードリストの全て又は一部をディレクトリリスティングプロセス中にメモリに先取りすることができるため、メタデータ先読み命令の候補であるディスク上iノードは、そのようなディスク上がシーケンシャルにアクセスされない場合に識別され得る。また、メタデータ先読み検出と非同期メタデータ先読み命令の発行とはブロックスレッドのコンテキストで実行される一方、元のI/O動作はバックグラウンドで完了するのを待っていることが理解されるであろう。これらの方法は、システム性能上のiノードアクセスパターン検出オーバーヘッドを減少させ、また、別個のスレッドの作成及びスケジューリングを回避し、これによって後続の読み取りのためのブロックの可用を遅延させることができる。
It will be appreciated that the processes illustrated in
図7Aは、特定の実施形態に係る、ディスク上iノードのアクセスを処理し、ディレクトリのエントリをグローバルiノードリストに追加するプロセスを示すフローチャートである。このプロセスは、705において、ディスク上iノードのアクセス(複数可)(例えば、1つ以上のI/O動作によって引き起こされるディスク上iノード(複数可)の読み出しコマンド/要求)が存在するかどうかを判定することによって開始する。ディスク上iノード(複数可)のアクセスがない場合、プロセスは705にループバックする。一方、ディスク上iノード(複数可)のアクセスが存在する場合、プロセスは、710において、(例えば、親ディレクトリiノード番号を使用して)ディスク上iノード(複数可)と関連付けられたディレクトリを識別する。715において、プロセスは、グローバルiノードリスト(例えば、グローバルiノードリスト215及び/又は親ディレクトリリスト)にアクセスする。 Figure 7A is a flow chart illustrating a process for handling on-disk inode accesses and adding directory entries to a global inode list according to a particular embodiment. The process begins at 705 by determining whether there is an on-disk inode access(s) (e.g., a read command/request for on-disk inode(s) caused by one or more I/O operations). If there is no on-disk inode(s) access, the process loops back to 705. However, if there is an on-disk inode(s) access, the process identifies the directory associated with the on-disk inode(s) at 710 (e.g., using the parent directory inode number). At 715, the process accesses the global inode list (e.g., the global inode list 215 and/or the 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 (e.g., whether the inode's parent directory inode number 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 (e.g., by adding an entry for the inode's parent directory inode number to the global inode list) at 725. On the other hand, if the directory is on the global inode list, the process verifies that the sequential flag is set for the directory at 730 and issues a metadata read-ahead instruction (e.g., listed in the directory (or part of the directory)) at 735. At 740, the process determines whether there is another access of the on-disk inode(s). If there is another access, the process loops back to 705. Otherwise, the process ends.
図7Bは、一実施形態に係る、ディスク上iノードにアクセスする要求を処理するプロセスを例示するフローチャートである。プロセスは、745において、I/O動作を検出することによって開始する。750において、プロセスは、ディスク上iノード(複数可)にアクセスする(又は読み取る)コマンド(又は要求)をインターセプトする。755において、プロセスは、(例えば、方法の中でもとりわけ、チャンクアクセス、及びシーケンシャル又は非シーケンシャルアクセスに基づいて検出された)ディスク上iノードアクセスパターンが、ディスク上iノード(複数可)のメタデータ先読みをトリガし、引き起こし、又はもたらすかどうかを判定する。ディスク上iノードアクセスパターンが、(例えば、チャンクアクセス、シーケンシャルアクセス又は非シーケンシャルアクセスに基づいて)メタデータ先読みをトリガしない場合、プロセスは、760において、I/O動作が完了するのを待つ。I/O動作が完了するのを待つプロセス例が、図6Bのフローチャート600Bに示されていることに留意されたい。
Figure 7B is a flow chart illustrating a process for handling a request to access an on-disk inode, according to one embodiment. The process begins by detecting an I/O operation, at 745. At 750, the process intercepts a command (or request) to access (or read) an on-disk inode(s). At 755, the process determines whether the on-disk inode access pattern (e.g., detected based on chunk access and sequential or non-sequential access, among other methods) triggers, causes, or results in metadata read-ahead for the on-disk inode(s). If the on-disk inode access pattern (e.g., based on chunk access, sequential access, or non-sequential access), does not trigger metadata read-ahead, at 760, the process waits for the I/O operation to complete. Note that an example process for waiting for an I/O operation to complete is shown in
一方、ディスク上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 inode access pattern does trigger a metadata read ahead, the process determines at 765 whether the chunk total (e.g., the total number of on-disk inode metadata chunks to read ahead, or "N") is less than or equal to the metadata read ahead value (e.g., the issued metadata read ahead value 280 or the total issued metadata read ahead value). If the chunk total is greater than or equal to the metadata read ahead value, the process waits at 760 for the I/O operation to complete. On the other hand, if the chunk total is less than or equal to the metadata read ahead value, the process issues the next chunk of asynchronous metadata read ahead at 770 and determines at 775 whether the I/O operation is complete. If the I/O operation is not complete, the process increments a counter (e.g., for issued metadata read aheads) at 780 and loops back to 765. On the other hand, if the I/O operation is complete, the process spawns a separate thread at 785 to issue the remaining chunks of asynchronous metadata read 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 further. It will be appreciated that the inode access pattern detection and metadata read-ahead generation methods, systems and processes execute in the context of a blocked thread (and wait for the original I/O to complete in the background), reducing the inode access pattern detection overhead on system performance. Additionally, allowing the original I/O operation to complete can also avoid the cost of creating and scheduling a separate thread (which can delay the availability of the data block to a subsequent read operation).
また、属性などの他のデータ構造がノードと関連付けられ得ることに留意されたい。本明細書に記載される、iノードアクセスパターン検出及び発行メタデータ先読み命令に関連する方法、システム及びプロセスは、メモリ内のこれらの(他の)データ構造をプレポピュレートすることができ、様々なiノードロックを非同期的に初期化することができる。したがって、本明細書に記載される方法、システム及びプロセスは、能力の中でもとりわけ、チャンクアクセス、シーケンシャルアクセス及び非シーケンシャルアクセスに基づいて、iノードのアクセスパターンを追跡することが可能であり、また、能力の中でもとりわけ、iノードに対する先読み命令を発行することができることが理解されるであろう。
コンピューティング環境例
It should also be noted that other data structures, such as attributes, may be associated with the nodes. The methods, systems, and processes relating to inode access pattern detection and issuing metadata read ahead instructions described herein may pre-populate these (other) data structures in memory and may asynchronously initialize various inode locks. Thus, it will be appreciated that the methods, systems, and processes described herein are capable of tracking access patterns of inodes based on chunk access, sequential access, and non-sequential access, among other capabilities, and may issue read ahead instructions for inodes, among other capabilities.
Example computing environment
図8は、一実施形態による、アクセスパターントラッカ及びメタデータ先読み生成器がソフトウェアに実装され得る方法を示すコンピューティングシステム800のブロック図である。コンピューティングシステム800は、コンピュータ可読命令を実行することができる任意のシングル又はマルチプロセッサコンピューティングデバイスあるいはシステムを広く表す。コンピューティングシステム800の例としては、ワークステーション、パーソナルコンピュータ、ラップトップ、クライアント側端末、サーバ、分散型コンピューティングシステム、携帯用デバイス(例えば、パーソナル携帯情報機器、及び携帯電話)、ネットワークアプライアンス、記憶制御装置(例えば、配列制御装置、テープドライブ制御装置、又はハードディスク制御装置)等を含む任意の1つ以上の様々なデバイスが挙げられるが、これらに限定されない。その最も基本的な構成において、コンピューティングシステム800は、少なくとも1つのプロセッサ110と、メモリ115と、を含んでもよい。コンピューティングデバイス105を実装するソフトウェアを実行することによって、コンピューティングシステム800は、ノードに対するアクセスパターン(複数可)を追跡してiノードに対する先読み命令を発行するように構成された専用コンピューティングデバイスになる。
8 is a block diagram of a
プロセッサ110は、概して、データの処理、又は命令の解釈及び実行ができる任意のタイプ又は形式の処理ユニットを表す。特定の実施形態では、プロセッサ110は、ソフトウェアアプリケーション又はモジュールから命令を受信してもよい。これらの命令は、プロセッサ110に、本明細書に記載及び/又は例示する実施形態のうちの1つ以上の機能を実施させてもよい。例えば、プロセッサ110は、本明細書に記載する動作の全部又は一部を実行してもよく、及び/又は実行するための手段であってもよい。プロセッサ110は、また、本明細書に記載又は例示する任意の他の動作、方法、及びプロセスを実行してもよく、及び/又は実行するための手段であってもよい。
メモリ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,
特定の実施形態では、コンピューティングシステム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, the
メモリコントローラ820は、メモリ若しくはデータを取り扱うことが可能な、又はコンピューティングシステム800の1つ以上の構成要素間の通信を制御することが可能な任意のタイプ又は形式のデバイスを概して表す。特定の実施形態では、メモリコントローラ820は、通信インフラストラクチャ805を介して、プロセッサ110、メモリ115、及びI/Oコントローラ835間の通信を制御してもよい。特定の実施形態では、メモリコントローラ820は、本明細書に記載又は例示する1つ以上の動作又は機能を単独又は他の要素との組み合わせのいずれかで実施してもよく、及び/又は実施するための手段であってもよい。
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 form of module capable of coordinating and/or controlling the input and output functions of one or more computing devices, such as
通信インターフェース845は、コンピューティングシステム800と、1つ以上の他のデバイスとの間の通信を容易にすることが可能な任意のタイプ又は形式の通信デバイス又はアダプタを広く表す。通信インターフェース845は、コンピューティングシステム800と追加のコンピューティングシステムを含むプライベート又はパブリックネットワークとの間の通信を容易にし得る。通信インターフェース845の例としては、有線ネットワークインターフェース(ネットワークインターフェースカードなど)、無線ネットワークインターフェース(無線ネットワークインターフェースカードなど)、モデム、及び任意の他の好適なインターフェースを含むが、これらに限定されない。通信インターフェース845は、インターネット等ネットワークへの直接リンクを介してリモートサーバへの直接接続を提供してよく、また、例えば、ローカルエリアネットワーク(例えば、イーサネット(登録商標)ネットワーク)、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、携帯電話接続、衛星データ接続、又は任意の他の好適な接続を通じて、かかる接続を間接的に提供し得る。
通信インターフェース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が、(例えば、実行するためにリモートデバイスに対して命令を送受信することにより)分散又はリモートコンピューティングに関与できるようにし得る。
Communications interface 845 may also represent a host adapter configured to facilitate communication between
図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
コンピューティングシステム800はまた、記憶インターフェース840を介して通信インフラストラクチャ805に結合されている記憶デバイス850(例えば、ディスク150)を含んでもよい。記憶デバイス850は、データ及び/又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の記憶デバイス又は媒体を概して表す。例えば、記憶デバイス850は、磁気ディスクドライブ(例えば、いわゆるハードドライブ)、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブなどを含み得る。記憶インターフェース840は、コンピューティングシステム800の記憶デバイス850と他の構成要素との間でデータを転送及び/又は送信するための任意のタイプ又は形式のインターフェース又はデバイスを概して表す。記憶デバイス850は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を記憶するように構成されている、取り外し可能な記憶ユニットから読み取るように、及び/又はそれに書き込むように構成されてもよい。好適な取り外し可能な記憶ユニットの例としては、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイス等が挙げられるが、これらに限定されない。記憶デバイス850は、また、コンピュータソフトウェア、データ、又は他のコンピュータ可読命令が、コンピューティングシステム800にロードされることを可能にするための他の類似の構造又はデバイスを含んでもよい。例えば、記憶デバイス850は、ソフトウェア、データ、又は他のコンピュータ可読情報を読み取り、及び書き込むように構成されてもよい。記憶デバイス850は、また、コンピューティングシステム800の一部であってもよく、又は他のインターフェースシステムによってアクセスされる別個のデバイスであってもよい。
The
多くの他のデバイス又はサブシステムは、コンピューティングシステム800に接続されてもよい。逆に、図8に示す構成要素及びデバイスの全てが、本明細書において説明及び/又は例示される実施形態を実践するために存在する必要があるわけではない。上記で述べたデバイス及びサブシステムはまた、図8に示すものとは異なる様式で相互接続されてもよい。コンピューティングシステム800はまた、任意の数のソフトウェア、ファームウェア、及び/又はハードウェア構成を採用してもよい。例えば、本明細書において開示される実施形態のうちの1つ以上は、コンピュータ可読記憶媒体上にコンピュータプログラム(コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御論理とも称される)としてコード化され得る。コンピュータ可読記憶媒体の例としては、磁気記憶媒体(例えば、ハードディスクドライブ、及びフロッピーディスク)、光学的記憶媒体(例えば、CD−、又はDVD−ROM)、電子記憶媒体(例えば、ソリッドステートドライブ、及びフラッシュメディア)等が挙げられる。そのようなコンピュータプログラムは、また、インターネットなどのネットワークを介してメモリに又はキャリア媒体に記憶するためにコンピューティングシステム800に転送されてもよい。
Many other devices or subsystems may be connected to the
コンピュータプログラムを含むコンピュータ可読媒体は、コンピューティングシステム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
Networking environment example
図9は、本開示の一実施形態による、様々なデバイスがネットワークを介して通信し得る態様を例示する、ネットワーク化されたシステム900のブロック図である。特定の実施形態では、ネットワーク接続型記憶(network-attached storage、NAS)デバイスは、ネットワークファイルシステム(Network File System、NFS)、サーバメッセージブロック(Server Message Block、SMB)、又はコモンインターネットファイルシステム(Common Internet File System、CIFS)などの様々なプロトコルを使用してコンピューティングデバイス105及び記憶システム145と通信するように構成されてもよい。
9 is a block diagram of a
ネットワーク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つ以上のネットワークを介して、結合され得る。
一実施形態では、開示された実施形態のうちの1つ以上の全て又は一部は、コンピュータプログラムとしてコード化され、コンピューティングデバイス105、iノードアクセスパターン追跡及びメタデータ先読み命令発行システム910、iノードアクセスパターン追跡システム940及び/又はメタデータ先読み命令生成システム950上にロードされ、これによって実行されてもよい。本明細書に開示される実施形態のうちの1つ以上の全て又は一部はまた、コンピュータプログラムとしてコード化され、コンピューティングデバイス105、iノードアクセスパターン追跡及びメタデータ先読み命令発行システム910及び/又はiノードアクセスパターン追跡システム940に記憶され、ネットワーク185上に分散されてもよい。
In one embodiment, all or a portion of one or more of the disclosed embodiments may be coded as a computer program and loaded onto and executed by the
いくつかの例では、コンピューティングデバイス105の全部又は一部分は、クラウドコンピューティング又はネットワークベースの環境の部分を表してもよい。クラウドコンピューティング環境は、インターネットを介して、種々のサービス及びアプリケーションを提供し得る。これらのクラウドベースのサービス(例えば、サービスとしてのソフトウェア、サービスとしてプラットフォーム、サービスとしてのインフラストラクチャなど)は、ウェブブラウザ又は他の遠隔インターフェースを通じて、アクセス可能であり得る。本明細書において説明される種々の機能は、遠隔デスクトップ環境又は任意の他のクラウドベースのコンピューティング環境を通じて提供され得る。
In some examples, all or a portion of
加えて、本明細書に記載の構成要素のうちの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
本開示がいくつかの実施形態と関連して説明してきたが、本開示は、本明細書で述べた特定の形式に限定されるように意図されていない。逆に、添付の請求項によって規定されるような本開示の範囲内に合理的に含まれ得るような代替形態、修正形態、及び等価物を包含するように意図されている。 Although the present disclosure has been described in connection with certain embodiments, the present disclosure is not intended to be limited to the particular form set forth herein. On the contrary, it is intended to cover all alternatives, modifications, and equivalents that may reasonably be included within the scope of the present disclosure as defined by the appended claims.
Claims (40)
前記メタデータ記憶領域が不揮発性記憶ユニット内にある、判定することと、
前記メタデータ記憶領域内の別の位置を判定することであって、
前記別の位置が現在のメタデータ読み取り動作に対応する、判定することと、
前記メタデータユニットの前記位置及び前記別の位置を使用して、メタデータ先読み動作を実行することができるかどうかを判定することと、
前記メタデータ先読み動作が実行され得るという判定に応答して、前記メタデータ先読み動作を発行することと、を含む、方法。 determining a location of a metadata unit within a metadata storage area,
determining that the metadata storage area is in a non-volatile storage unit;
determining another location within the metadata storage area,
determining that the other location corresponds to a current metadata read operation;
determining whether a metadata read ahead operation can be performed using the location and the another location of the metadata unit;
in response to determining that the metadata read ahead operation may be performed, issuing the metadata read ahead operation.
前記ディスク上iノードが、前記メタデータユニットを含み、
前記ディスク上iノードが、構造ファイルの一部であり、
前記構造ファイルが、前記不揮発性記憶ユニットに記憶されている、請求項1に記載の方法。 the metadata storage area includes a plurality of on-disk inodes;
the on-disk inode contains the metadata unit;
the on-disk inode is part of a structural file;
The method of claim 1 , wherein the configuration file is stored in the non-volatile storage unit.
前記コア内iノードが、前記構造ファイルに対応する、作成することと、
前記コア内iノード内に前記メタデータユニットの前記位置を記憶することであって、
前記メタデータユニットが、最後に読み取ったメタデータチャンクであり、
前記メタデータユニットの前記位置が、前記メタデータユニットの終了オフセットを識別する、記憶することと、を更に含む、請求項2に記載の方法。 Creating an in-core inode,
creating an in-core inode corresponding to the structural file;
storing the location of the metadata unit within the in-core inode;
the metadata unit is the last read metadata chunk,
3. The method of claim 2, further comprising: storing, the location of the metadata unit identifying an ending offset of the metadata unit.
前記メタデータユニットの前記終了オフセットにアクセスすることと、
前記別の位置が前記終了オフセットに隣接しているかどうかを判定することと、を含む、請求項3に記載の方法。 determining whether the metadata read ahead operation can be performed,
accessing the ending offset of the metadata unit;
and determining whether the other location is adjacent to the ending offset.
前記終了オフセットを、前記メタデータ先読み動作によって読み取られた別のメタデータユニットの別の終了オフセットと置き換えることによって、前記終了オフセットを更新することを含み、
前記別のメタデータユニットが、別の最後に読み取ったメタデータチャンクである、請求項3に記載の方法。 Issuing the metadata read ahead operation
updating the ending offset by replacing the ending offset with another ending offset of another metadata unit read by the metadata read ahead operation;
The method of claim 3 , wherein the other metadata unit is another last-read metadata chunk.
前記1つ以上のディスク上iノードが、前記複数のディスク上iノードの一部であり、
前記インターセプトが、入出力(I/O)動作に応答して実行され、
前記I/O動作が、前記コマンドをもたらす、インターセプトすることと、
前記メタデータ先読み動作において発行されたメタデータ先読み値を解析することであって、
前記解析が、前記発行されたメタデータ先読み値と前記コマンド内のチャンク合計とを比較することを含む、解析することと、
前記I/O動作が完了するであろうことを前記解析が示す場合に、前記I/O動作が完了するのを待つことと、
非同期メタデータ先読み命令が発行され得ることを前記解析が示す場合に、非同期メタデータ先読み命令を発行することと、を更に含む、請求項2に記載の方法。 Intercepting a command to read one or more on-disk inodes, comprising:
the one or more on-disk inodes are a portion of the plurality of on-disk inodes;
the interception is performed in response to an input/output (I/O) operation;
Intercepting the I/O operation resulting in the command;
analyzing metadata look-ahead values issued in the metadata look-ahead operation,
analyzing, the analyzing including comparing the issued metadata readahead value to a chunk total in the command;
waiting for the I/O operation to complete if the analysis indicates that the I/O operation will complete;
The method of claim 2 , further comprising: if the analysis indicates that an asynchronous metadata read ahead instruction can be issued, issuing an asynchronous metadata read ahead instruction.
前記I/O動作が完了している場合に、待ち行列を生成することであって、
前記待ち行列が、前記チャンク合計のメタデータの1つ以上の残りのチャンクを含み、
前記メタデータの前記1つ以上の残りのチャンクが、前記非同期メタデータ先読み命令に含まれていない、生成することと、
前記I/O動作が完了していない場合に、前記チャンク合計を前記メタデータ先読み動作において更新することと、を更に含む、請求項7に記載の方法。 determining whether the I/O operation is complete;
creating a queue if the I/O operation is completed;
the queue includes one or more remaining chunks of metadata for the chunk total;
generating the one or more remaining chunks of metadata not included in the asynchronous metadata read ahead instructions;
8. The method of claim 7, further comprising: if the I/O operation is not complete, updating the chunk total in the metadata read ahead operation.
メタデータ記憶領域内のメタデータユニットの位置を判定することであって、
前記メタデータ記憶領域が、不揮発性記憶ユニット内にある、判定することと、
前記メタデータ記憶領域内の別の位置を判定することであって、
前記別の位置が、現在のメタデータ読み取り動作に対応する、判定することと、
前記メタデータユニットの前記位置及び前記別の位置を使用して、メタデータ先読み動作を実行することができるかどうかを判定することと、
前記メタデータ先読み動作が実行され得るという判定に応答して、前記メタデータ先読み動作を発行することと、を実行可能である、非一過性コンピュータ可読記憶媒体。 A non-transitory computer readable storage medium containing program instructions, the program instructions comprising:
determining a location of a metadata unit within a metadata storage area,
determining that the metadata storage area is in a non-volatile storage unit;
determining another location within the metadata storage area,
determining that the other location corresponds to a current metadata read operation;
determining whether a metadata read ahead operation can be performed using the location and the another location of the metadata unit;
in response to determining that the metadata read ahead operation may be performed, issuing the metadata read ahead operation.
前記ディスク上iノードが、前記メタデータユニットを含み、
前記ディスク上iノードが、構造ファイルの一部であり、
前記構造ファイルが、前記不揮発性記憶ユニットに記憶されている、請求項9に記載の非一過性コンピュータ可読記憶媒体。 the metadata storage area includes a plurality of on-disk inodes;
the on-disk inode contains the metadata unit;
the on-disk inode is part of a structural file;
The non-transitory computer readable storage medium of claim 9 , wherein the configuration file is stored in the non-volatile storage unit.
前記コア内iノードが、前記構造ファイルに対応する、作成することと、
前記コア内iノード内に前記メタデータユニットの前記位置を記憶することであって、
前記メタデータユニットが、最後に読み取ったメタデータチャンクであり、
前記メタデータユニットの位置が、前記メタデータユニットの終了オフセットを識別する、記憶することと、を更に含む、請求項10に記載の非一過性コンピュータ可読記憶媒体。 creating an in-core inode,
creating an in-core inode corresponding to the structural file;
storing the location of the metadata unit within the in-core inode;
the metadata unit is the last read metadata chunk,
11. The non-transitory computer-readable storage medium of claim 10, further comprising: storing, the location of the metadata unit identifying an ending offset of the metadata unit.
前記メタデータユニットの前記終了オフセットにアクセスすることと、
前記別の位置が前記終了オフセットに隣接しているかどうかを判定することと、を含む、請求項11に記載の非一過性コンピュータ可読記憶媒体。 determining whether the metadata read ahead operation can be performed,
accessing the ending offset of the metadata unit;
and determining whether the another location is adjacent to the ending offset.
前記別の位置が前記終了オフセットに隣接している場合に、前記終了オフセットを、前記メタデータ先読み動作によって読み取られた別のメタデータユニットの別の終了オフセットと置き換えることによって前記終了オフセットを更新することであって、
前記別のメタデータユニットが、別の最後に読み取ったメタデータチャンクである、更新することと、
前記別の位置が前記終了オフセットに隣接していない場合に、前記終了オフセットを現在のメタデータ読み取り動作の終了オフセットと置き換えることによって前記終了オフセットを更新することと、を含む、請求項12に記載の非一過性コンピュータ可読記憶媒体。 Issuing the metadata read ahead operation
updating the ending offset by replacing the ending offset with another ending offset of another metadata unit read by the metadata read ahead operation if the other location is adjacent to the ending offset;
updating, wherein the other metadata unit is another last-read metadata chunk;
and updating the ending offset by replacing the ending offset with an ending offset of a current metadata read operation if the other location is not adjacent to the ending offset.
前記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 one or more on-disk inodes, comprising:
the one or more on-disk inodes are a portion of the plurality of on-disk inodes;
the interception is performed in response to an input/output (I/O) operation;
Intercepting the I/O operation resulting in the command;
analyzing metadata look-ahead values issued in the metadata look-ahead operation,
analyzing, the analyzing including comparing the issued metadata readahead value to a chunk total in the command;
waiting for the I/O operation to complete if the analysis indicates that the I/O operation will complete;
issuing an asynchronous metadata prefetch instruction if the analysis indicates that an asynchronous metadata prefetch instruction may be issued; and
determining whether the I/O operation is complete;
creating a queue if the I/O operation is completed;
the queue includes one or more remaining chunks of metadata for the chunk total;
generating the one or more remaining chunks of metadata not included in the asynchronous metadata read ahead instructions;
11. The non-transitory computer-readable storage medium of claim 10, further comprising: if the I/O operation is not complete, updating the chunk total in the metadata read ahead operation.
前記1つ以上のプロセッサに結合されたメモリと、を備え、前記メモリが、前記1つ以上のプロセッサによって実行可能なプログラム命令を記憶し、前記プログラム命令が、
メタデータ記憶領域内のメタデータユニットの位置を判定することであって、
前記メタデータ記憶領域が、不揮発性記憶ユニット内にある、判定することと、
前記メタデータ記憶領域内の別の位置を判定することであって、
前記別の位置が、現在のメタデータ読み取り動作に対応する、判定することと、
前記メタデータユニットの前記位置及び前記別の位置を使用して、メタデータ先読み動作を実行することができるかどうかを判定することと、
前記メタデータ先読み動作が実行され得るという判定に応答して、前記メタデータ先読み動作を発行することと、を実行可能である、システム。 one or more processors;
a memory coupled to the one or more processors, the memory storing program instructions executable by the one or more processors, the program instructions comprising:
determining a location of a metadata unit within a metadata storage area,
determining that the metadata storage area is in a non-volatile storage unit;
determining another location within the metadata storage area,
determining that the other location corresponds to a current metadata read operation;
determining whether a metadata read ahead operation can be performed using the location and the another location of the metadata unit;
in response to determining that the metadata read ahead operation may be performed, issuing the metadata read ahead operation.
前記ディスク上iノードが、前記メタデータユニットを含み、
前記ディスク上iノードが、構造ファイルの一部であり、
前記構造ファイルが、前記不揮発性記憶ユニットに記憶されている、請求項15に記載のシステム。 the metadata storage area includes a plurality of on-disk inodes;
the on-disk inode contains the metadata unit;
the on-disk inode is part of a structural file;
The system of claim 15 , wherein the configuration file is stored in the non-volatile storage unit.
前記コア内iノードが、前記構造ファイルに対応する、作成することと、
前記コア内iノード内に前記メタデータユニットの前記位置を記憶することであって、
前記メタデータユニットが、最後に読み取ったメタデータチャンクであり、
前記メタデータユニットの位置が、前記メタデータユニットの終了オフセットを識別する、記憶することと、を更に含む、請求項16に記載のシステム。 creating an in-core inode,
creating an in-core inode corresponding to the structural file;
storing the location of the metadata unit within the in-core inode;
the metadata unit is the last read metadata chunk,
20. The system of claim 16, further comprising: storing the location of the metadata unit identifying an ending offset of the metadata unit.
前記メタデータユニットの前記終了オフセットにアクセスすることと、
前記別の位置が前記終了オフセットに隣接しているかどうかを判定することと、を含む、請求項17に記載のシステム。 determining whether the metadata read ahead operation can be performed,
accessing the ending offset of the metadata unit;
and determining whether the another location is adjacent to the ending offset.
前記別の位置が前記終了オフセットに隣接している場合に、前記終了オフセットを、前記メタデータ先読み動作によって読み取られた別のメタデータユニットの別の終了オフセットと置き換えることによって前記終了オフセットを更新することであって、
前記別のメタデータユニットが、別の最後に読み取ったメタデータチャンクである、更新することと、
前記別の位置が前記終了オフセットに隣接していない場合に、前記終了オフセットを現在のメタデータ読み取り動作の終了オフセットと置き換えることによって前記終了オフセットを更新することと、を含む、請求項18に記載のシステム。 Issuing the metadata read ahead operation
updating the ending offset by replacing the ending offset with another ending offset of another metadata unit read by the metadata read ahead operation if the other location is adjacent to the ending offset;
updating, wherein the other metadata unit is another last-read metadata chunk;
and updating the ending offset by replacing the ending offset with an ending offset of a current metadata read operation if the other location is not adjacent to the ending offset.
前記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 one or more on-disk inodes, comprising:
the one or more on-disk inodes are a portion of the plurality of on-disk inodes;
the interception is performed in response to an input/output (I/O) operation;
Intercepting the I/O operation resulting in the command;
analyzing metadata look-ahead values issued in the metadata look-ahead operation,
analyzing, the analyzing including comparing the issued metadata readahead value to a chunk total in the command;
waiting for the I/O operation to complete if the analysis indicates that the I/O operation will complete;
issuing an asynchronous metadata prefetch instruction if the analysis indicates that an asynchronous metadata prefetch instruction may be issued; and
determining whether the I/O operation is complete;
creating a queue if the I/O operation is completed;
the queue includes one or more remaining chunks of metadata for the chunk total;
generating the one or more remaining chunks of metadata not included in the asynchronous metadata read ahead instructions;
17. The system of claim 16, further comprising: if the I/O operation is not complete, updating the chunk total in the metadata read ahead operation.
前記iノードのディレクトリを判定することと、
前記ディレクトリのエントリがグローバルiノードリスト内に存在するかどうかを判定することと、
前記エントリが前記グローバルiノードリスト内に存在する場合に、前記ディレクトリのファイル構造がシーケンシャルであるか非シーケンシャルであるかを判定することと、
前記エントリが前記グローバルiノードリスト内に存在しない場合に、前記グローバルiノードリスト内に前記ディレクトリの新しいエントリを追加することと、を含む、方法。 Accessing the inode;
determining a directory of the inode;
determining whether an entry for said directory exists in a global inode list;
if the entry exists in the global inode list, determining whether the file structure of the directory is sequential or non-sequential;
adding a new entry for the directory into the global inode list if the entry does not exist in the global inode list.
前記エントリの前記グローバルiノードリストを探索することを含む、請求項21に記載の方法。 Determining whether the directory exists 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に記載の方法。 if the file structure of the directory is sequential, determining whether the directory includes a sequential flag;
22. The method of claim 21, further comprising: issuing a metadata read ahead operation to one or more inodes of a plurality of inodes on an inode list if the directory includes the sequential flag.
前記iノードリスト上の前記1つ以上のiノードに対する前記メタデータ先読み動作を発行することと、を更に含む、請求項23に記載の方法。 retrieving the inode list of the plurality of inodes of the directory if the file structure of the parent directory is non-sequential;
24. The method of claim 23, further comprising: issuing the metadata read ahead operation to the one or more inodes on the inode list.
前記1つ以上のiノードが、前記複数のiノードの一部であり、
前記インターセプトが、入出力(I/O)動作に応答して実行され、
前記I/O動作が、前記コマンドをもたらす、インターセプトすることを更に含む、請求項24に記載の方法。 Intercepting a command to read one or more inodes, comprising:
the one or more inodes are a portion of the plurality of inodes;
the interception is performed in response to an input/output (I/O) operation;
25. The method of claim 24, further comprising intercepting the I/O operation that results in the command.
前記解析が、前記発行されたメタデータ先読み値と前記コマンド内のチャンク合計とを比較することを含む、解析することと、
前記I/O動作が完了するであろうことを前記解析が示す場合に前記I/O動作が完了するのを待つことと、
非同期メタデータ先読み命令が発行され得ることを前記解析が示す場合に、非同期メタデータ先読み命令を発行することと、を更に含む、請求項25に記載の方法。 analyzing metadata look-ahead values issued in the metadata look-ahead operation,
analyzing, the analyzing including comparing the issued metadata readahead value to a chunk total in the command;
waiting for the I/O operation to complete if the analysis indicates that the I/O operation will complete;
26. The method of claim 25, further comprising: if the analysis indicates that an asynchronous metadata read ahead instruction can be issued, issuing an asynchronous metadata read ahead instruction.
前記I/O動作が完了している場合に、待ち行列を生成することであって、
前記待ち行列が、前記チャンク合計のメタデータの1つ以上の残りのチャンクを含み、
前記メタデータの前記1つ以上の残りのチャンクが、前記非同期メタデータ先読み命令に含まれていない、生成することと、
前記I/O動作が完了していない場合に、前記チャンク合計を前記メタデータ先読み動作において更新することと、を更に含む、請求項26に記載の方法。 determining whether the I/O operation is complete;
creating a queue if the I/O operation is completed;
the queue includes one or more remaining chunks of metadata for the chunk total;
generating the one or more remaining chunks of metadata not included in the asynchronous metadata read ahead instructions;
27. The method of claim 26, further comprising: if the I/O operation is not complete, updating the chunk total in the metadata read ahead operation.
iノードにアクセスすることと、
前記iノードのディレクトリを判定することと、
前記ディレクトリのエントリがグローバルiノードリスト内に存在するかどうかを判定することと、
前記エントリが前記グローバルiノードリスト内に存在する場合に、前記ディレクトリのファイル構造がシーケンシャルであるか非シーケンシャルであるかを判定することと、
前記エントリが前記グローバルiノードリスト内に存在しない場合に、前記グローバルiノードリスト内に前記ディレクトリの新しいエントリを追加することと、を実行可能である、非一過性コンピュータ可読記憶媒体。 A non-transitory computer readable storage medium comprising program instructions, the program instructions comprising:
Accessing the inode;
determining a directory of the inode;
determining whether an entry for said directory exists in a global inode list;
if the entry exists in the global inode list, determining whether the file structure of the directory is sequential or non-sequential;
and adding a new entry for the directory into the global inode list if the entry does not exist in the global inode list.
前記エントリの前記グローバルiノードリストを探索することを含み、
前記iノードが、ディスク上iノードである、請求項29に記載の非一過性コンピュータ可読記憶媒体。 Determining whether the directory exists 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 on-disk inode.
前記ディレクトリが前記シーケンシャルフラグを含む場合に、前記ディレクトリ内の1つ以上のiノードに対するメタデータ先読み動作を発行することと、
前記親ディレクトリの前記ファイル構造が非シーケンシャルである場合に、前記ディレクトリの前記複数のiノードの前記iノードリストを取り出すことと、
前記iノードリスト上の前記1つ以上のiノードに対する前記メタデータ先読み動作を発行することと、を更に含む、請求項29に記載の非一過性コンピュータ可読記憶媒体。 if the file structure of the directory is sequential, determining whether the directory includes a sequential flag;
issuing a metadata read ahead operation to one or more inodes in the directory if the directory includes the sequential flag;
retrieving the inode list of the plurality of inodes of the directory if 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 read ahead operation for the one or more inodes on the inode list.
前記1つ以上のiノードが、前記複数のiノードの一部であり、
前記インターセプトが、入出力(I/O)動作に応答して実行され、
前記I/O動作が、前記コマンドもたらす、インターセプトすることを更に含む、請求項31に記載の非一過性コンピュータ可読記憶媒体。 Intercepting a command to read one or more inodes, comprising:
the one or more inodes are a portion of the plurality of inodes;
the interception is performed in response to an input/output (I/O) operation;
32. The non-transitory computer-readable storage medium of claim 31, further comprising intercepting the I/O operation resulting in the command.
前記解析が、前記発行されたメタデータ先読み値と前記コマンド内のチャンク合計とを比較することを含む、解析することと、
前記I/O動作が完了するであろうことを前記解析が示す場合に前記I/O動作が完了するのを待つことと、
非同期メタデータ先読み命令が発行され得ることを前記解析が示す場合に、非同期メタデータ先読み命令を発行することと、を更に含む、請求項32に記載の非一過性コンピュータ可読記憶媒体。 analyzing metadata look-ahead values issued in the metadata look-ahead operation,
analyzing, the analyzing including comparing the issued metadata readahead value to a chunk total in the command;
waiting for the I/O operation to complete if the analysis indicates that the I/O operation will complete;
33. The non-transitory computer-readable storage medium of claim 32, further comprising: if the analysis indicates that an asynchronous metadata read ahead instruction may be issued, issuing an asynchronous metadata read ahead instruction.
前記I/O動作が完了している場合に、待ち行列を生成することであって、
前記待ち行列が、前記チャンク合計のメタデータの1つ以上の残りのチャンクを含み、
前記メタデータの前記1つ以上の残りのチャンクが、前記非同期メタデータ先読み命令に含まれていない、生成することと、
前記I/O動作が完了していない場合に、前記チャンク合計を前記メタデータ先読み動作において更新することと、を更に含む、請求項33に記載の非一過性コンピュータ可読記憶媒体。 determining whether the I/O operation is complete;
creating a queue if the I/O operation is completed;
the queue includes one or more remaining chunks of metadata for the chunk total;
generating the one or more remaining chunks of metadata not included in the asynchronous metadata read ahead instructions;
34. The non-transitory computer-readable storage medium of claim 33, further comprising: if the I/O operation is not complete, updating the chunk total in the metadata read ahead operation.
前記1つ以上のプロセッサに結合されたメモリと、を備え、前記メモリが、前記1つ以上のプロセッサによって実行可能なプログラム命令を記憶し、前記プログラム命令が、
iノードにアクセスすることと、
前記iノードのディレクトリを判定することと、
前記ディレクトリのエントリがグローバルiノードリスト内に存在するかどうかを判定することと、
前記エントリが前記グローバルiノードリスト内に存在する場合に、前記ディレクトリのファイル構造がシーケンシャルであるか非シーケンシャルであるかを判定することと、
前記エントリが前記グローバルiノードリスト内に存在しない場合に、前記グローバルiノードリスト内に前記ディレクトリの新しいエントリを追加することと、を実行可能である、システム。 one or more processors;
a memory coupled to the one or more processors, the memory storing program instructions executable by the one or more processors, the program instructions comprising:
Accessing the inode;
determining a directory of the inode;
determining whether an entry for said directory exists in a global inode list;
if the entry exists in the global inode list, determining whether the file structure of the directory is sequential or non-sequential;
adding a new entry for the directory into the global inode list if the entry does not exist in the global inode list.
前記エントリの前記グローバルiノードリストを探索することを含み、
前記iノードが、ディスク上iノードである、請求項35に記載のシステム。 Determining whether the directory exists in a global inode list
searching the global inode list for the entry;
36. The system of claim 35, wherein the inode is an on-disk inode.
前記ディレクトリが前記シーケンシャルフラグを含む場合に、前記ディレクトリ内の1つ以上のiノードに対するメタデータ先読み動作を発行することと、
前記親ディレクトリの前記ファイル構造が非シーケンシャルである場合に、前記ディレクトリの前記複数のiノードの前記iノードリストを取り出すことと、
前記iノードリスト上の前記1つ以上のiノードに対する前記メタデータ先読み動作を発行することと、を更に含む、請求項35に記載のシステム。 if the file structure of the directory is sequential, determining whether the directory includes a sequential flag;
issuing a metadata read ahead operation to one or more inodes in the directory if the directory includes the sequential flag;
retrieving the inode list of the plurality of inodes of the directory if the file structure of the parent directory is non-sequential;
36. The system of claim 35, further comprising: issuing the metadata read ahead operation for the one or more inodes on the inode list.
前記1つ以上のiノードが、前記複数のiノードの一部であり、
前記インターセプトが、入出力(I/O)動作に応答して実行され、
前記I/O動作が、前記コマンドを、もたらす、インターセプトすることを更に含む、請求項37に記載のシステム。 Intercepting a command to read one or more inodes, comprising:
the one or more inodes are a portion of the plurality of inodes;
the interception is performed in response to an input/output (I/O) operation;
40. The system of claim 37, further comprising intercepting the I/O operation effecting the command.
前記解析が、前記発行されたメタデータ先読み値と前記コマンド内のチャンク合計とを比較することを含む、解析することと、
前記I/O動作が完了するであろうことを前記解析が示す場合に、前記I/O動作が完了するのを待つことと、
非同期メタデータ先読み命令が発行され得ることを前記解析が示す場合に、非同期メタデータ先読み命令を発行することと、を更に含む、請求項38に記載のシステム。 analyzing metadata look-ahead values issued in the metadata look-ahead operation,
analyzing, the analyzing including comparing the issued metadata readahead value to a chunk total in the command;
waiting for the I/O operation to complete if the analysis indicates that the I/O operation will complete;
40. The system of claim 38, further comprising: if the analysis indicates that an asynchronous metadata read ahead instruction can be issued, issuing an asynchronous metadata read ahead instruction.
前記I/O動作が完了している場合に、待ち行列を生成することであって、
前記待ち行列が、前記チャンク合計のメタデータの1つ以上の残りのチャンクを含み、
前記メタデータの前記1つ以上の残りのチャンクが、前記非同期メタデータ先読み命令に含まれていない、生成することと、
前記I/O動作が完了していない場合に、前記チャンク合計を前記メタデータ先読み動作において更新することと、を更に含む、請求項39に記載の方法。 determining whether the I/O operation is complete;
creating a queue if the I/O operation is completed;
the queue includes one or more remaining chunks of metadata for the chunk total;
generating the one or more remaining chunks of metadata not included in the asynchronous metadata read ahead instructions;
40. The method of claim 39, further comprising: if the I/O operation is not complete, updating the chunk total in the metadata read ahead operation.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
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 |
US15/279,721 | 2016-09-29 | ||
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 pre-empting 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)
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)
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 |
CN112612751B (en) * | 2020-12-25 | 2024-08-13 | 北京浪潮数据技术有限公司 | Asynchronous directory operation method, device, equipment and system |
Family Cites Families (14)
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 |
-
2017
- 2017-09-28 JP JP2019516181A patent/JP2019537097A/en not_active Ceased
- 2017-09-28 WO PCT/US2017/053990 patent/WO2018064319A1/en unknown
- 2017-09-28 EP EP17791771.3A patent/EP3519993A1/en not_active Withdrawn
- 2017-09-28 CN CN201780059741.9A patent/CN110352410B/en active Active
Cited By (2)
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 |
---|---|
CN110352410B (en) | 2023-01-20 |
CN110352410A (en) | 2019-10-18 |
WO2018064319A9 (en) | 2019-04-11 |
EP3519993A1 (en) | 2019-08-07 |
WO2018064319A1 (en) | 2018-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10853339B2 (en) | Peer to peer ownership negotiation | |
US8510499B1 (en) | Solid state drive caching using memory structures to determine a storage space replacement candidate | |
JP6026738B2 (en) | System and method for improving scalability of a deduplication storage system | |
US11392545B1 (en) | Tracking access pattern of inodes and pre-fetching inodes | |
US10210191B2 (en) | Accelerated access to objects in an object store implemented utilizing a file storage system | |
US9606748B2 (en) | Importing pre-existing data of a prior storage solution into a storage pool for use with a new storage solution | |
US8386717B1 (en) | Method and apparatus to free up cache memory space with a pseudo least recently used scheme | |
US11663166B2 (en) | Post-processing global deduplication algorithm for scaled-out deduplication file system | |
US10929176B2 (en) | Method of efficiently migrating data from one tier to another with suspend and resume capability | |
US11989159B2 (en) | Hybrid snapshot of a global namespace | |
US10884980B2 (en) | Cognitive file and object management for distributed storage environments | |
US10649807B1 (en) | Method to check file data integrity and report inconsistencies with bulk data movement | |
US10705752B2 (en) | Efficient data migration in hierarchical storage management system | |
JP2019537097A (en) | Tracking I-node access patterns and pre-empting I-nodes | |
US9852139B1 (en) | Directory partitioning with concurrent directory access | |
US10996857B1 (en) | Extent map performance | |
US11455114B1 (en) | Consolidation and migration of cloud data | |
US10235293B2 (en) | Tracking access pattern of inodes and pre-fetching inodes | |
US8818970B2 (en) | Partitioning a directory while accessing the directory | |
CN111930684A (en) | Small file processing method, device and equipment based on HDFS (Hadoop distributed File System) and storage medium | |
US9529812B1 (en) | Timestamp handling for partitioned directories | |
US20220114139A1 (en) | Fractional consistent global snapshots of a distributed namespace | |
US11847334B2 (en) | Method or apparatus to integrate physical file verification and garbage collection (GC) by tracking special segments | |
Kim et al. | Remote direct storage management for exa-scale storage |
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 |