[go: up one dir, main page]

JPH10198587A - Indirect addressing method/device for file system - Google Patents

Indirect addressing method/device for file system

Info

Publication number
JPH10198587A
JPH10198587A JP9354773A JP35477397A JPH10198587A JP H10198587 A JPH10198587 A JP H10198587A JP 9354773 A JP9354773 A JP 9354773A JP 35477397 A JP35477397 A JP 35477397A JP H10198587 A JPH10198587 A JP H10198587A
Authority
JP
Japan
Prior art keywords
pointer
address
data
entry
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP9354773A
Other languages
Japanese (ja)
Inventor
Lawrence M Ruane
ローレンス・エム・ルアン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH10198587A publication Critical patent/JPH10198587A/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers

Landscapes

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

Abstract

PROBLEM TO BE SOLVED: To optimize indirect addressing by giving a first pointer entry to a file by a file control block. SOLUTION: When a point data indicator is in a first state, pointers 28A, 30A and 32A are connected with a logic address and a physical address is set. When the pointer data indicator is in a second state, the logic address is divided into an index and offset and the logic address is updated to offset. When the pointer data indicator is in the second state, a next pointer entry is pulled out from a position in indirect blocks 14, 16, 18, 22, 24 and 26 instructed by the present pointers and the designated indirect address block instructed by the index. A conversion process is to connect the physical address and the logic address, and the step is repeated until the physical address is set.

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【発明の属する技術分野】本発明は、ファイル・システ
ムにおける、ファイルの間接的アドレシングに関する。
更に特定すれば、本発明は、付加的な制御情報によって
間接アドレシングを改良することに関するものである。
The present invention relates to indirect addressing of files in a file system.
More particularly, the present invention relates to improving indirect addressing with additional control information.

【0002】[0002]

【従来の技術】ユーザまたはアプリケーション・プログ
ラムにとって、ファイルは、バイト0からファイル・サ
イズより1小さい数までアドレスされたディスク空間の
連続領域として見られる。実際には、かかるファイル
は、ディスク全体に分散された種々の物理的なデータ・
ブロックとして記憶される。したがって、アプリケーシ
ョンによって与えられるファイル・オフセットを、デー
タ記憶装置内の物理的アドレスに変換するためには、あ
るアドレス変換方法が必要となる。
BACKGROUND OF THE INVENTION To a user or application program, a file is viewed as a contiguous area of disk space addressed from byte 0 to one less than the file size. In practice, such files can contain various physical data files spread across the disk.
Stored as a block. Therefore, to translate the file offset provided by the application to a physical address in the data storage, some address translation method is required.

【0003】非常に一般的な変換方法は、固定サイズ間
接アドレス・ブロックのツリーを用いる。この変換方法
の一例に、ユニックス・ファイル・システム(UFS:
UnixFile System)がある。間接アドレス・ブロックと
は、ブロック・ポインタのアレイを含む、メタデータの
ブロックのことである。これらのブロック・ポインタ
は、他の低いレベルの間接アドレス・ブロックを指示す
る。メタデータ(metadata)の最も低いレベルでは、間接
アドレス・ブロックは固定サイズのデータ・ブロックを
指示する。ユニックスではIノード(I-node)であるファ
イルに対する制御ブロックは、最も高いレベルの間接ア
ドレス・ブロックを指示する。
[0003] A very common translation method uses a tree of fixed size indirect address blocks. One example of this conversion method is the Unix File System (UFS:
Unix File System). An indirect address block is a block of metadata, including an array of block pointers. These block pointers point to other lower level indirect address blocks. At the lowest level of metadata, the indirect address block points to a fixed size data block. The control block for a file, which is an I-node in Unix, points to the highest level indirect address block.

【0004】変換方法は、オフセットの上位側ビット
を、ルート間接アドレス・ブロックに対するインデック
スとして用いることによって開始する。ルート間接アド
レス・ブロックでは、第2レベルの間接アドレス・ブロ
ックに対するポインタが引き出される。次に、オフセッ
トの次の上位ビットを、第2レベルの間接アドレス・ブ
ロックにおけるインデックスとして用い、第3レベルの
間接アドレス・ブロックに対するポインタを取り込む。
再び、オフセットの次の上位ビットを用いて、第3レベ
ルの間接アドレス・ブロックにおけるポインタを発見す
る。このポインタは、更に他の間接アドレス・ブロック
を指示する可能性があり、あるいはデータ・ブロックを
指示する場合もある。最後の間接アドレス・ブロックか
らのポインタと共に、データ・ブロック内のデータを発
見するためにバイト・インデックスとして用いられるの
は、最下位のオフセット・ビット集合である。
[0004] The translation method begins by using the high order bits of the offset as an index into the root indirect address block. In the root indirect address block, a pointer to the second level indirect address block is derived. Next, the pointer to the third level indirect address block is fetched using the next higher bit of the offset as an index in the second level indirect address block.
Again, the next higher bit of the offset is used to find the pointer in the third level indirect address block. This pointer may point to yet another indirect address block, or may point to a data block. With the pointer from the last indirect address block, it is the least significant set of offset bits that is used as the byte index to find the data in the data block.

【0005】最終的にデータ・ブロックとなる間接アド
レス・ブロックのツリーは、固定的深度(fixed depth)
を有する。例えば、4キロバイトの間接アドレス・ブロ
ックおよび4キロバイトのデータ・ブロック(伝統的な
ユニックス・ファイル・システム)で32ビット(4ギ
ガバイト)のファイル・システムを支援するためには、
2レベルの間接アドレス・ブロックが必要となる。各レ
ベルは10ビット(1024個の4バイト・ブロック・
ポインタ)を用い、データ・ブロックは12ビットを用
いる。63ビットのファイルを有するファイル・システ
ムにおいて、8キロバイトのデータ・ブロックを有する
8キロバイトの間接アドレス・ブロックを用いる場合、
5レベルの間接アドレシングがあり、各レベルは10ビ
ットを有し、データ・ブロックは13ビットを有するこ
とになる。
[0005] The tree of indirect address blocks that ultimately result in data blocks has a fixed depth.
Having. For example, to support a 32-bit (4 gigabyte) file system with 4 kilobyte indirect address blocks and 4 kilobyte data blocks (traditional Unix file system),
Two levels of indirect address blocks are required. Each level is 10 bits (1024 4-byte blocks)
Pointer), and the data block uses 12 bits. In a file system with a 63-bit file, using an 8 kilobyte indirect address block with an 8 kilobyte data block,
There are five levels of indirect addressing, each level will have 10 bits, and the data block will have 13 bits.

【0006】この間接アドレス手法に伴う問題は、メタ
データのために、非常に大量のディスク空間およびメモ
リを使用し、ファイルを得るためのメタデータの処理に
多大な時間量を費やすことである。例えば、各データ・
ブロック(ユニックスでは通常8キロバイト)には、最
も低いレベルの間接アドレス・ブロックにおいて、8バ
イトのエントリが関連付けられる。1テラバイトのファ
イルは、1ギガバイトよりも多少多い間接アドレス・ブ
ロック容量(storage)を必要とする。これは、管理する
には非常に大きな量のメタデータである。大きなファイ
ル・システムに記憶されるファイルの多くは隣接するフ
ァイルであるので、このメタ・データの間接アドレシン
グの多くは無駄な空間となることがわかる。
The problem with this indirect addressing approach is that it uses a very large amount of disk space and memory for the metadata and spends a significant amount of time processing the metadata to obtain the file. For example, each data
A block (typically 8 kilobytes on Unix) is associated with an 8-byte entry in the lowest level indirect address block. One terabyte of file requires some more than one gigabyte of indirect address block storage. This is a very large amount of metadata to manage. Since many of the files stored in the large file system are adjacent files, it can be seen that much of the indirect addressing of this meta data is wasted space.

【0007】間接アドレシング・ファイル・システム
は、ファイル・データ・ブロックが、ファイル・システ
ム全体または少なくとも多数の小さな隣接領域にわたっ
て分散されていることを想定している。しかしながら、
動作の効率および速度向上を目的として多くのアプリケ
ーション・プログラムは、ファイル・システム内の隣接
空間に必要なファイルを記憶しようとする。その結果、
間接アドレスのブロックがポインタの連続配列(sequent
ial arrangement)を有する場合がしばしば発生する。ポ
インタの連続配列とは、間接アドレス・ブロックの各々
が次の隣接するデータ・ブロックを指示することを意味
する。かかる状況における1つの解決策は、データ・ブ
ロックのサイズを大きくすることである。しかしなが
ら、データ・ブロックのサイズを大きくする程、ファイ
ルは小さくなる。すると、ファイルがデータ・ブロック
を埋め尽くさないので、大量の記憶空間が無駄になる。
ファイルが大きい場合でも、ファイル・サイズが不規則
に分配されるとすると、平均的に、最後のブロックの半
分は使用されないままとなる。
[0007] The indirect addressing file system assumes that the file data blocks are distributed throughout the file system or at least over a number of small contiguous areas. However,
Many application programs seek to store necessary files in contiguous space in the file system to increase the efficiency and speed of operation. as a result,
The block at the indirect address is a continuous array of pointers (sequent
Often it has an ial arrangement. A contiguous array of pointers means that each indirect address block points to the next adjacent data block. One solution in such a situation is to increase the size of the data block. However, the larger the size of the data block, the smaller the file. A large amount of storage space is wasted because the file does not fill up the data blocks.
On average, half of the last block remains unused, even if the file is large, provided that the file size is randomly distributed.

【0008】ファイル・システムにおけるメタデータの
大きなブロックとデータ・ブロック空間の無駄を両立さ
せる問題を解決するために、「エクステント(extent
s)」を使用するという試みがなされている。「エクステ
ント」ファイル・システムでは、各ファイルは物理アド
レスのリストによって定義され、このリストには各物理
アドレスにおける各ブロックの長さが伴っている。例え
ば、非隣接ブロックを有するファイルは、次のような物
理アドレス/長さペアのリストによって定義することが
できる。即ち、第1エントリ1000,50、第2エン
トリ4000,80、第3で最終のエントリ3500,
20と定義する。「エクステント」ファイル・システム
では、このファイルは最初に、物理的アドレス1000
から始まる50のデータ・ブロック、即ち、物理ブロッ
ク1000から1049までを有する。続いて、ファイ
ルは物理アドレス4000から始まる800のデータ・
ブロック、即ち、4000〜4799を有する。最後
に、ファイルは、物理アドレス3500から始まる20
のブロック、即ち、ブロック3500〜3519で完了
する。
In order to solve the problem of making large blocks of metadata compatible with waste of data block space in a file system, "extent" is used.
s) ". In the "extent" file system, each file is defined by a list of physical addresses, with the length of each block at each physical address. For example, a file with non-contiguous blocks can be defined by a list of physical address / length pairs as follows: That is, the first entry 1000,50, the second entry 4000,80, the third and final entry 3500,
Defined as 20. In the "extent" file system, this file is first stored at physical address 1000
, Starting with 50, ie physical blocks 1000 to 1049. Subsequently, the file contains 800 data files starting from the physical address 4000.
It has blocks, i.e. 4000-4799. Finally, the file starts at physical address 3500 and starts at 20.
, Ie, blocks 3500 to 3519.

【0009】[0009]

【発明が解決しようとする課題】この「エクステント」
型ファイル・システムには多数の問題が存在する。例え
ば、ファイルが隣接空間の大きなブロックを必要とし、
使用可能な空間が非隣接位置における多数の小さなブロ
ックのみである場合、「エクステント」ファイル・シス
テムは、1つのファイルを指定するために、非常に長い
「物理アドレス/長さ」ペアのリストを有することにな
る。「エクステント」ファイル・システムに伴う第2の
問題は、ファイル内のオフセットによって指定されたデ
ータ・ブロックを引き出すためには、ソフトウエアは
「エクステント」リスト全体を検索して、求められてい
るデータ・ブロックを含むブロックの位置を発見しなけ
ればならないことである。この場合も、リストが長い
と、正しい「物理アドレス/長さ」ペアを発見するため
の検索プロセスは、時間を浪費するプロセスとなり得
る。最後に、「エクステント」ファイル・システムにお
いて、ファイル記憶を再構成して隣接性(contiguousnes
s)を改善する場合、「エクステント」リストを完全に破
壊し、新しい「エクステント」リストを構築しなければ
ならない。これは、大量のコピー処理を必要とする。
This "extent"
There are a number of problems with typed file systems. For example, a file requires a large block of contiguous space,
If the available space is only a large number of small blocks at non-contiguous locations, the "extent" file system has a very long list of "physical address / length" pairs to specify one file. Will be. A second problem with the "extent" file system is that in order to retrieve the data block specified by the offset in the file, the software must search the entire "extent" list to find the data That is, the position of the block including the block must be found. Again, if the list is long, the search process to find the correct "physical address / length" pair can be a time consuming process. Finally, in the "extent" file system, the file storage is reconfigured to contiguous
If s) is improved, the "extent" list must be completely destroyed and a new "extent" list must be constructed. This requires a large amount of copy processing.

【0010】したがって、間接アドレスの検索時間の短
縮、および間接アドレス・メタデータのサイズ縮小のた
めの改良が、間接アドレス構成には必要とされている。
[0010] Therefore, improvements to reduce the indirect address search time and to reduce the size of the indirect address metadata are needed in the indirect address configuration.

【0011】[0011]

【課題を解決するための手段】本発明によれば、間接ア
ドレシング・ファイル・システムにおいてファイルの論
理アドレスを物理アドレスに変換する際、ポインタ・エ
ントリがポインタとポインタ・データ・インディケータ
を有するようにして、上述の問題を解決した。変換プロ
セスは、コンピュータ実装ステップを用い、ポインタ・
エントリを引き出すことによって開始する。ポインタ・
エントリ内のポインタ・データ・インディケータは、ポ
インタがデータ記憶エリア内の物理アドレスを指示する
場合には第1状態を示し、ポインタがより低いレベルの
間接アドレス・ブロックを指示する場合は第2状態を示
す。ポインタ・データ・インディケータが第1状態にあ
るのかあるいは第2状態にあるのかを検出した後、プロ
セスは2つの可能な動作経路を取る。ポインタ・データ
・インディケータが第1状態にある場合、ポインタは論
理アドレスと結合され、物理アドレスをセットする。ポ
インタ・データ・インディケータが第2状態にある場
合、論理アドレスはインデックスとオフセットとに分割
される。論理アドレスはオフセットに更新される。更
に、ポインタ・データ・インディケータが第2状態にあ
る場合、現ポインタによって指示されている間接アドレ
ス・ブロック、およびインデックスによって識別され
る、指定間接アドレス・ブロック(pointed-to indirect
address block)内のある位置から、次のポインタ・エ
ントリを引き出す。変換プロセスは、物理アドレスと論
理アドレスを結合することによって物理アドレスがセッ
トされるまで、これらのステップを繰り返す。
According to the present invention, when a logical address of a file is translated into a physical address in an indirect addressing file system, the pointer entry has a pointer and a pointer data indicator. Solved the above-mentioned problem. The conversion process uses computer implemented steps,
Start by retrieving an entry. Pointer
The pointer data indicator in the entry indicates a first state if the pointer points to a physical address in the data storage area and a second state if the pointer points to a lower level indirect address block. Show. After detecting whether the pointer data indicator is in the first state or the second state, the process takes two possible paths of operation. When the pointer data indicator is in the first state, the pointer is associated with the logical address and sets the physical address. When the pointer data indicator is in the second state, the logical address is divided into an index and an offset. The logical address is updated to the offset. Further, when the pointer data indicator is in the second state, the indirect address block pointed to by the current pointer and the designated indirect address block identified by the index.
From the given position in the address block), fetch the next pointer entry. The translation process repeats these steps until the physical address is set by combining the physical and logical addresses.

【0012】本発明の他の実施態様においては、上述の
コンピュータ実装ステップは、上述のステップを有する
コンピュータ・プロセスをコンピュータに実行可能とす
る命令のコンピュータ・プログラムを含む、一製造品
目、即ち、コンピュータ記憶媒体またはコンピュータ伝
送媒体として提供される。
In another embodiment of the invention, the computer-implemented steps described above include a computer program of instructions that cause a computer to execute a computer process having the steps described above, ie, a computer-generated item. It is provided as a storage medium or a computer transmission medium.

【0013】本発明の機械実施態様においては、間接ア
ドレス・ファイル・システム内のファイルに対する論理
アドレスおよびポインタ・エントリを物理アドレスに変
換するための装置は、判断モジュール、セット・モジュ
ール、分割モジュール、更新モジュール、および引き出
しモジュールを有する。判断モジュールは、現ポインタ
・エントリにおけるポインタ・フラグを検査する。ポイ
ンタ・エントリはポインタと、当該ポインタがデータ記
憶エリアまたはメタデータ記憶エリアのどちらを指示す
るのかを識別するポインタ・フラグとを有する。判断モ
ジュールは、当該ポインタがデータ・ポインタであるか
あるいはメタデータ・ポインタであるかを示す。セット
・モジュールは、ポインタがデータ・ポインタであるこ
とを示す判断モジュールに応答し、データ・ポインタを
論理アドレスと結合し、物理アドレスを発生する。
In a machine embodiment of the present invention, the apparatus for translating logical address and pointer entries for files in an indirect address file system into physical addresses comprises a decision module, a set module, a split module, an update module. Module and a drawer module. The decision module examines a pointer flag in the current pointer entry. The pointer entry has a pointer and a pointer flag that identifies whether the pointer points to a data storage area or a metadata storage area. The decision module indicates whether the pointer is a data pointer or a metadata pointer. The set module is responsive to the decision module indicating that the pointer is a data pointer and combines the data pointer with the logical address to generate a physical address.

【0014】分割モジュールは、ポインタがメタデータ
・ポインタであることを示す判断モジュールに応答し、
論理アドレスを、インデックス値としての第1部分と、
オフセット値としての残り部分とに分割する。更新モジ
ュールは、次に、論理アドレスをオフセット値にセット
する。引き出しモジュールは、メタデータ・ポインタを
インデックス値と結合し、次のポインタ・エントリを得
る。引き出しモジュールは次のポインタ・エントリを判
断モジュールに送り、当該ポインタがデータ・ポインタ
またはメタデータ・ポインタのどちらであるかを、次の
ポインタ・エントリ内のポインタ・フラグが示している
のを検査させる。モジュールの全ては、セット・モジュ
ールが物理アドレスを発生するまで、上述のようにポイ
ンタ・エントリを処理し続ける。
The partitioning module is responsive to the determining module indicating that the pointer is a metadata pointer,
A logical address as a first part as an index value;
It is divided into the remaining part as the offset value. The install module then sets the logical address to the offset value. The retrieval module combines the metadata pointer with the index value to get the next pointer entry. The fetch module sends the next pointer entry to the decision module to check whether the pointer is a data pointer or a metadata pointer, as indicated by the pointer flag in the next pointer entry. . All of the modules continue to process pointer entries as described above until the set module generates a physical address.

【0015】本発明の特徴の1つとして、第1のポイン
タ・エントリは、ファイル制御ブロック、即ち、ユニッ
クス・ファイル・システムにおけるアイノード(inode)
によって、ファイルに対して与えられる。
One of the features of the present invention is that the first pointer entry is a file control block, ie, an inode in a Unix file system.
Is given for the file by

【0016】本発明の他の特徴として、各メタデータ・
ポインタは、複数の間接アドレシングのレベルにおけ
る、次の間接アドレシングの連続するレベルを指示す
る。また、各データ・ポインタは直接データ記憶エリア
を指示する。その結果、データ・ポインタを含むポイン
タ・エントリを有するレベルから最終間接アドレシング
・レベルまでの間接アドレシングのレベルは全てバイパ
スされる。
As another feature of the present invention, each metadata
The pointer points to the next successive level of indirect addressing in the plurality of levels of indirect addressing. Each data pointer directly points to a data storage area. As a result, all levels of indirect addressing from the level having the pointer entry including the data pointer to the final indirect addressing level are bypassed.

【0017】本発明の大きな利点および有用性は、ポイ
ンタ・フラグまたはポインタ・データ・インディケータ
がセットされた場合、間接アドレシング・プロセスは、
間接アドレシングの不要なレベルの全てを迂回し(circu
mvent)、データ記憶エリアに直接進むことにある。更
に、ポインタ・フラグがセットされていない場合、間接
アドレシングは、丁度それが間接アドレシング・ファイ
ル・システムを有する場合のように作用する。
A significant advantage and utility of the present invention is that, when a pointer flag or pointer data indicator is set, the indirect addressing process is:
Bypass all unnecessary levels of indirect addressing (circu
mvent), to go directly to the data storage area. In addition, if the pointer flag is not set, indirect addressing behaves just as if it had an indirect addressing file system.

【0018】本発明の上述のおよびその他の特徴、有用
性、および利点は、添付図面に示す本発明の好適実施例
の一層特定的な記載から明確となろう。
The above and other features, utilities, and advantages of the present invention will become apparent from a more particular description of a preferred embodiment of the invention, as illustrated in the accompanying drawings.

【0019】[0019]

【発明の実施の形態】図1は、本発明の一実施例におい
て用いられる、改良間接アドレシングの構造を示す。図
1の例は、3レベルの間接アドレシングを有する。本発
明の説明において明らかとなろうが、間接アドレシング
のレベル数は、本発明には重要なことではない。レベル
数は、ファイルのサイズ、間接アドレス・ブロックのサ
イズ、データ・ブロックのサイズ、および間接アドレス
・ブロックにおけるポインタのサイズによって異なるも
のである。図1に示すのは、単一ファイルを収容する、
3レベル・システムである。
FIG. 1 shows the structure of the improved indirect addressing used in one embodiment of the present invention. The example of FIG. 1 has three levels of indirect addressing. As will be apparent in describing the present invention, the number of levels of indirect addressing is not critical to the present invention. The number of levels depends on the size of the file, the size of the indirect address block, the size of the data block, and the size of the pointer in the indirect address block. Shown in FIG. 1 contains a single file,
It is a three-level system.

【0020】図1の構造において、データ・ブロック
は、記憶装置のエリア10に記憶されている。記憶装置
はメモリとすることもできるが、より典型的にはディス
ク・ファイル空間である。エリア10内のデータ・ブロ
ックは、レベル1,2,3(L1,L2,L3)に示す
間接アドレス・ブロックを通じてアドレスされる。図1
に示すように、レベル1は単一ルート間接アドレス・ブ
ロック12である。間接アドレス・ブロック12のサイ
ズは、ファイル・システムに設けられているルート・ア
ドレスの数によって異なり、ファイル・システムにおい
てファイルをアドレスするために用いられるオフセット
のルート・インデックス部分に用いられるビット数によ
って制限される。
In the structure of FIG. 1, the data blocks are stored in area 10 of the storage device. The storage device can be memory, but more typically is a disk file space. The data blocks in area 10 are addressed through indirect address blocks shown at levels 1, 2, 3 (L1, L2, L3). FIG.
Level 1 is a single root indirect address block 12, as shown in FIG. The size of the indirect address block 12 depends on the number of root addresses provided in the file system and is limited by the number of bits used in the root index portion of the offset used to address the file in the file system. Is done.

【0021】レベル2(L2)には、3つの間接アドレ
ス・ブロック14,16,18が示されている。潜在的
に、レベル1(L1)におけるルート・アドレス・ブロ
ック12内のポインタ・エントリ各々に対して、レベル
2にアドレス・ブロックがあり得る。L2における間接
アドレス・ブロック14,16,18のサイズは、ファ
イル・システムにおいてファイルをアドレスするために
用いられるオフセットのレベル2インデックス部分に用
いられるビット数によって異なる。図1の例では、オフ
セット20を4つの部分に分割している。最初の3部分
は、それぞれ、レベルL1,L2,L3における間接ア
ドレス・ブロック内のアドレスに索引を付ける(index)
ために用いられ、各々10ビットを有する。第4の部分
は13ビットを有する。したがって、レベル2またはレ
ベル3における間接アドレス・ブロックの最大サイズ
は、1,024ポインタ・エントリとなる。また、L2
およびL3には、3つの間接アドレス・ブロックのみ、
即ち、L2においてブロック14,16,18およびL
3においてブロック22,24,26を示す。潜在的に
は、L2には、ルート間接アドレス・ブロック12内の
各ポインタ・エントリ毎に1つとして、1024の間接
アドレス・ブロックがある。また、L3には、L2内の
各間接アドレス・ブロック毎に、1024の間接アドレ
ス・ブロックがある。
At level 2 (L2), three indirect address blocks 14, 16, 18 are shown. Potentially, for each pointer entry in the root address block 12 at level 1 (L1), there may be an address block at level 2. The size of the indirect address blocks 14, 16, 18 in L2 depends on the number of bits used in the level 2 index portion of the offset used to address the file in the file system. In the example of FIG. 1, the offset 20 is divided into four parts. The first three parts index addresses in the indirect address block at levels L1, L2, L3, respectively.
And each has 10 bits. The fourth part has 13 bits. Therefore, the maximum size of the indirect address block at level 2 or level 3 is 1,024 pointer entries. Also, L2
And L3 have only three indirect address blocks,
That is, in L2, blocks 14, 16, 18 and L
3 shows blocks 22, 24 and 26. Potentially, there are 1024 indirect address blocks in L2, one for each pointer entry in the root indirect address block 12. L3 also has 1024 indirect address blocks for each indirect address block in L2.

【0022】各間接アドレス・ブロックには、1024
のポインタ・エントリがある。間接アドレス・ブロック
14内に示すように、各ポインタ・エントリは2種類の
情報を含む。即ち、ポインタおよびポインタ・データ・
ビットを含む。ポインタ・データ・ビットは、ポインタ
がデータ・ファイル・エリア10内のデータ・ブロック
を指示するのか、あるいはポインタが次に低いレベルに
おける間接アドレス・ブロックを指示するのかを示す。
ポインタ・データ・ビットがセットされている場合、ポ
インタはデータ・ファイル・エリア10内のデータ・ブ
ロックを指示する。ポインタ・データ・ビットがセット
されていない場合、ポインタは、アドレス・ブロックの
次に低いレベルにおける間接アドレス・ブロックを指示
する。例えば、アドレス・ブロック14では、ポインタ
・エントリ28は、ポインタ28Aおよびポインタ・デ
ータ・ビット28Bを含む。ポインタ・データ・ビット
28Bは1であり、したがって、ポインタ28Aは、デ
ータ・ブロック記憶エリア10内のエントリ・ポイント
を指示する。
Each indirect address block has 1024
Pointer entry. As shown in the indirect address block 14, each pointer entry contains two types of information. That is, pointers and pointer data
Contains bits. The pointer data bit indicates whether the pointer points to a data block in data file area 10 or to the next lower level indirect address block.
If the pointer data bit is set, the pointer points to a data block in the data file area 10. If the pointer data bit is not set, the pointer points to the indirect address block at the next lower level of the address block. For example, in address block 14, pointer entry 28 includes pointer 28A and pointer data bit 28B. Pointer data bit 28B is one, so pointer 28A points to an entry point in data block storage area 10.

【0023】間接アドレス・ブロック14内のポインタ
・エントリ30は、次に低いレベルにおける他の間接ア
ドレス・ブロックを指示するエントリの一例である。ポ
インタ・エントリ30は、ポインタ30Aおよびポイン
タ・データ・ビット30Bを含む。ポインタ・データ・
ビット30Bは0にセットされており、したがって、ポ
インタ30Aは、次に低いレベル、即ち、レベル3(L
3)における間接アドレス・ブロック22を指示する。
Pointer entry 30 in indirect address block 14 is an example of an entry that points to another indirect address block at the next lower level. Pointer entry 30 includes pointer 30A and pointer data bit 30B. Pointer data
Bit 30B is set to 0, so pointer 30A is at the next lower level, ie, level 3 (L
Point to the indirect address block 22 in 3).

【0024】オフセット20におけるオフセット情報
は、これらのポインタと種々の方法で結合され、エリア
10内のデータ・ブロックを識別し、引き出す。オフセ
ット20内のインデックス・エントリは、インデックス
として用いられ、ポインタと結合して、間接アドレシン
グの次に低いレベルにおけるポインタ・エントリを識別
する。あるいは、オフセット20の一部をオフセットと
して用い、ポインタによって指示されるエリア10にお
ける開始位置に相対する、エリア10におけるデータ・
ブロック位置を識別することも可能である。
The offset information at offset 20 is combined in various ways with these pointers to identify and retrieve data blocks within area 10. The index entry within offset 20 is used as an index and is combined with the pointer to identify the pointer entry at the next lower level of indirect addressing. Alternatively, a part of the offset 20 is used as the offset, and the data
It is also possible to identify the block position.

【0025】間接アドレシングは、ユニックス・ファイ
ルでは、「アイノード」ファイル内のポインタ・エント
リから開始する。アイノード・ポインタ・エントリ内の
ポインタは、レベル1(L1)におけるルート間接アド
レス・ブロックの開始アドレスを指示する。オフセット
20からのIndex 1は、ルート間接アドレス・ブロック
に対する開始アドレスと結合され、ルート間接アドレス
・ブロック内のポインタ・エントリを発見する。アイノ
ード内のポインタ・エントリも同様に、ポインタ・デー
タ・ビットを含むことができる。このポインタ・データ
・ビットがセットされている場合、アイノード内のポイ
ンタは直接データ記憶エリア10内の開始アドレスを指
示し、オフセット全体が、この開始アドレスから、引き
出すべきファイル・データまでに索引を付ける。しかし
ながら、通常では、アイノード・ポインタ・エントリ
は、ルート間接アドレス・ブロックを指示するポインタ
を有する。
Indirect addressing starts with a pointer entry in an "inode" file in a Unix file. The pointer in the inode pointer entry points to the start address of the root indirect address block at level 1 (L1). Index 1 from offset 20 is combined with the starting address for the root indirect address block to find a pointer entry in the root indirect address block. A pointer entry in an inode may also include pointer data bits. When this pointer data bit is set, the pointer in the inode points directly to the start address in data storage area 10, and the entire offset indexes from this start address to the file data to be retrieved. . However, typically, the inode pointer entry has a pointer to the root indirect address block.

【0026】ルート間接アドレス・ブロック12内のポ
インタ・エントリに対するポインタ・データ・ビットが
1である場合、ポインタは記憶エリア10内の開始点を
直接指示する。ポインタ・エントリ32は、記憶エリア
10の最上部にある開始アドレス34を指示する、ポイ
ンタ32Aを有する。ポインタ・エントリ32は、1に
セットされ、ポインタ32がデータ記憶エリア10を指
示していることを示す、ポインタ・データ・ビット32
Bを含む。エリア10から引き出されるデータ・ブロッ
クの実際の位置は、ポインタおよびオフセット20のDa
ta Offset 1部分によって識別される開始アドレスによ
って定義される。したがって、例えば、ポインタ32A
が物理アドレス11,000を指示し、Data Offset 1
が350である場合、データを引き出すエリア10内の
物理アドレスは11,350となる。したがって、ポイ
ンタ・エントリ32を指示するルート・アドレス、およ
び350のオフセットに応答して、11,350におけ
るデータ・ブロックが引き出される。
If the pointer data bit for the pointer entry in the root indirect address block 12 is 1, the pointer points directly to the starting point in the storage area 10. The pointer entry 32 has a pointer 32A pointing to the start address 34 at the top of the storage area 10. Pointer entry 32 is set to one, indicating that pointer 32 points to data storage area 10, pointer data bit 32.
B. The actual position of the data block drawn from area 10 is the pointer and Da at offset 20.
ta Offset Defined by the starting address identified by the 1 part. Therefore, for example, the pointer 32A
Indicates the physical address 11,000, and Data Offset 1
Is 350, the physical addresses in the area 10 from which data is extracted are 11,350. Thus, in response to the root address pointing to pointer entry 32 and the offset of 350, the data block at 11,350 is retrieved.

【0027】一方、レベル1(L1)におけるルート・
アドレス・ブロック内のポインタ・エントリが、0にセ
ットされているポインタ・データ・ビットを有する場
合、ポインタはL2内の間接アドレス・ブロックを指示
する。例えば、ルート・アドレス・ブロック内のポイン
タがL2における間接アドレス・ブロック14を指示す
る場合、アドレス・ブロック14内のポインタ・エント
リは、オフセット20内のIndex 2に基づいて引き出さ
れる。言い換えると、オフセット20内の上位側ビット
はインデックスとして機能し、ルート・アドレス・ブロ
ック12内のポインタ・エントリからのポインタと結合
され、レベル2における間接アドレス・ブロック内のポ
インタ・エントリを発見する。
On the other hand, the route at level 1 (L1)
If the pointer entry in the address block has a pointer data bit set to 0, the pointer points to an indirect address block in L2. For example, if the pointer in the root address block points to the indirect address block 14 in L2, the pointer entry in the address block 14 is retrieved based on Index 2 in offset 20. In other words, the high order bit in offset 20 functions as an index and is combined with the pointer from the pointer entry in root address block 12 to find the pointer entry in the indirect address block at level two.

【0028】L2において引き出されたポインタ・エン
トリが、例えば、間接アドレス・ブロック14内のポイ
ンタ・エントリ28のような、1にセットされたポイン
タ・データ・ビットを有する場合、オフセット20の残
りのData Offset 2は、データ・オフセット、即ち、イ
ンデックスとして用いられ、ポインタ・エントリ28内
のポインタと結合され、記憶エリア10内のデータ・ブ
ロックを発見する。例えば、ポインタ28Aがエリア1
0内の物理アドレス2,000を指示し、オフセット2
0内のData Offset 2が400である場合、物理アドレ
ス2400におけるデータ・ブロックが記憶エリア10
から引き出される。
If the pointer entry retrieved at L2 has a pointer data bit set to 1, for example, pointer entry 28 in indirect address block 14, the remaining Data at offset 20 Offset 2 is used as a data offset, or index, and is combined with the pointer in pointer entry 28 to find a data block in storage area 10. For example, when the pointer 28A is in the area 1
0 indicates a physical address of 2,000, and offset 2
If Data Offset 2 in 0 is 400, the data block at physical address 2400 is stored in storage area 10
Drawn from.

【0029】一方、レベル2(L2)におけるポインタ
・エントリ内のポインタ・データ・ビットが0である場
合、ポインタは単にレベル3(L3)における間接アド
レス・ブロックを指示する。L3内の間接アドレス・ブ
ロックは全て、1にセットされたポインタ・データ・ビ
ットを有する。その理由は、レベル3が間接アドレシン
グの最も低いレベルであり、レベル3におけるポインタ
はデータ記憶エリア10内の物理アドレスを指示するに
違いないからである。したがって、間接アドレシングの
レベル3を用いる場合、オフセット20のIndex 3部分
はL2からのポインタと結合され、L3における間接ア
ドレス・ブロック内のポインタ・エントリを発見する。
また、オフセット20のData Offset 3部分も、L3に
おけるポインタ・エントリからのポインタと結合され、
記憶エリア10内の物理アドレスを発見する。
On the other hand, if the pointer data bit in the pointer entry at level 2 (L2) is 0, the pointer simply points to the indirect address block at level 3 (L3). The indirect address blocks in L3 all have pointer data bits set to one. The reason is that level 3 is the lowest level of indirect addressing, and the pointer at level 3 must point to a physical address in the data storage area 10. Thus, when using level 3 of indirect addressing, the Index 3 portion of offset 20 is combined with the pointer from L2 to find the pointer entry in the indirect address block at L3.
The Data Offset 3 portion of offset 20 is also combined with the pointer from the pointer entry in L3,
The physical address in the storage area 10 is found.

【0030】3つのレベル全てを用いる場合、この構造
は従来の間接アドレシングに対して利点はない。しかし
ながら、隣接データ・ブロックが存在する場合、この構
造は、より高い間接アドレス・レベルから直接、隣接空
間のより大きなデータ・ブロックをアドレスする構造を
提供する。まず、より高いレベルのポインタ・エントリ
内のポインタが記憶エリア10内の物理アドレスを直接
指示することを、ポインタ・データ・ビットが示す。第
2に、ポインタ・エントリのレベルに応じて、この物理
アドレスに対するより高いレベルのポインタを、オフセ
ットの全体または一部と結合し、記憶エリア10内のあ
る物理アドレスから、データを引き出す。このようにし
て、不要な低いレベルの間接アドレシングを迂回するこ
とができる。
When using all three levels, this structure has no advantage over conventional indirect addressing. However, if contiguous data blocks are present, this structure provides a structure for addressing a larger data block in contiguous space directly from a higher indirect address level. First, the pointer data bits indicate that the pointer in the higher level pointer entry points directly to a physical address in storage area 10. Second, depending on the level of the pointer entry, a higher level pointer to this physical address is combined with all or part of the offset to retrieve data from a physical address in storage area 10. In this way, unnecessary low-level indirect addressing can be bypassed.

【0031】本発明が用いられる動作環境は、汎用分散
型計算機システムだけではなく、単体の計算機システム
も含む。分散型計算機システムでは、汎用コンピュー
タ、ワークステーション、またはパーソナル・コンピュ
ータが、種々のタイプの通信リンクを通じて、クライア
ント−サーバ構成に結合され、多くの場合オブジェクト
の形態のプログラムおよびデータがシステム内の種々の
構成機器によって使用可能となっている。
The operating environment in which the present invention is used includes not only a general-purpose distributed computer system but also a single computer system. In a distributed computer system, a general purpose computer, workstation, or personal computer is coupled to a client-server configuration through various types of communication links, often storing programs and data in the form of objects, within the system. It can be used by component devices.

【0032】単体のコンピュータまたは汎用ワークステ
ーション・コンピュータの要素のいくつかを図2に示
す。本発明によれば、クライアント・プロセッサ35の
ような、ネットワーク内の遠隔ワークステーションに位
置するユーザは、ネットワークを通じてコンピュータ・
サーバ20と通信する。サーバ20は、入出力部22、
中央演算装置23、およびメモリ部24を有するプロセ
ッサ21を含む。入出力部22は、任意に、キーボード
25、ディスプレイまたはモニタ26、およびディスク
記憶装置29に接続される。入出力部22は、ネットワ
ーク46上の遠隔クライアント・ステーション35と通
信するための通信アダプタ(図示せず)を含む。
Some of the elements of a stand alone computer or a general purpose workstation computer are shown in FIG. In accordance with the present invention, a user located at a remote workstation in the network, such as a client processor 35, allows a computer
It communicates with the server 20. The server 20 includes an input / output unit 22,
It includes a central processing unit 23 and a processor 21 having a memory unit 24. The input / output unit 22 is optionally connected to a keyboard 25, a display or monitor 26, and a disk storage device 29. Input / output unit 22 includes a communication adapter (not shown) for communicating with remote client station 35 on network 46.

【0033】アプリケーション・プログラム45がクラ
イアント・ステーション35上で動作し、サーバ20が
維持するファイルに対するアクセスまたは変更を行うこ
とができる。本発明の装置および方法を実行するコンピ
ュータ・プログラム生産物は、メモリ部24内またはデ
ィスク記憶装置29、あるいは同様の記憶媒体(図示せ
ず)に置くことができ、あるはクライアント35が用い
る記憶媒体上に置くことも可能である。サーバ20また
はクライアント35のいずれかとして使用可能な計算機
システムの例には、Sun Microsystems社が提供するPARC
Jシステム、IBM社、ならびにIBM互換パーソナル・コン
ピュータの製造者が提供するパーソナル・コンピュータ
およびUNIX, OS/2, HP-UX, AIX, DOS等のオペレー
ティング・システムを実行させるシステムが含まれる。
尚、SPARCはSun Microsystems社の商標であり、UNIXはX
/Open社によって使用許諾される商標であり、OS/2およ
びAIXはIBM社の商標である。
An application program 45 runs on the client station 35 and can access or change files maintained by the server 20. The computer program product for performing the apparatus and method of the present invention can be located in the memory unit 24 or on a disk storage device 29 or similar storage medium (not shown), or the storage medium used by the client 35. It is also possible to put on top. Examples of computer systems that can be used as either server 20 or client 35 include PARC provided by Sun Microsystems.
Includes personal computers and systems that run operating systems such as UNIX, OS / 2, HP-UX, AIX, DOS, etc. provided by J Systems, IBM, and the manufacturers of IBM compatible personal computers.
SPARC is a trademark of Sun Microsystems, and UNIX is X
OS / 2 and AIX are trademarks of IBM Corporation, licensed under the trademark / Open.

【0034】図2に示すように、クライアント35およ
びサーバ20は、ネットワーク46を通じて通信し、サ
ーバのディスク29上に維持されているファイルへのア
クセスを、クライアント35に与える。逆に、クライア
ント35も、サーバ上で維持されるファイルのために、
ネットワーク46を通じてファイル・データを転送す
る。
As shown in FIG. 2, client 35 and server 20 communicate over network 46 to provide client 35 with access to files maintained on disk 29 of the server. Conversely, the client 35 also needs to
The file data is transferred through the network 46.

【0035】図3は、本発明の改良間接アドレシング構
造における論理アドレスを物理アドレスに変換し、当該
物理アドレスにおけるデータ・ブロックを引き出す際
の、本発明の好適実施例における論理処理を示す、。図
3において、処理100がオフセットを引き出し、ファ
イルに対する初期アドレスとして論理アドレスをオフセ
ットに設定したときに、変換処理が開始する。次に、処
理102が、当該ファイルに対して、ファイル制御ブロ
ック(アイノード)からポインタ・エントリを引き出
す。
FIG. 3 illustrates the logical processing in the preferred embodiment of the present invention for translating a logical address into a physical address in the improved indirect addressing structure of the present invention and extracting a data block at the physical address. In FIG. 3, when the process 100 extracts the offset and sets the logical address to the offset as the initial address for the file, the conversion process starts. Next, operation 102 retrieves a pointer entry from the file control block (inode) for the file.

【0036】判断処理106が、引き出しモジュール1
02によって丁度引き出されたポインタ・エントリのポ
インタ・データ・ビットがセットされているか否かにつ
いて検査を行う。ポインタ・データ・ビットがセットさ
れている場合、変換処理は、ポインタがデータ記憶エリ
アを指示していることを知る。処理フローは、判断処理
106から「Yes」に分岐し、引き出し処理108に
進む。引き出し処理108は、ポインタ・エントリから
ポインタを引き出し、次いで処理110がファイルに対
する物理アドレスを、ポインタに論理アドレスを加えた
ものにセットする。この場合、論理アドレスはオフセッ
ト20(図1)全体である。処理110においてセット
された物理アドレスは、次に、引き出し処理112によ
って用いられ、当該物理アドレスにおけるデータ・ブロ
ックを引き出す。データ・ブロックの引き出しによっ
て、変換処理は完了する。
The judgment processing 106 determines that the drawer module 1
A check is made as to whether the pointer data bit of the pointer entry just retrieved by 02 is set. If the pointer data bit is set, the translation process knows that the pointer points to a data storage area. The processing flow branches from the determination processing 106 to “Yes”, and proceeds to the withdrawal processing 108. Retrieve operation 108 retrieves the pointer from the pointer entry, then operation 110 sets the physical address for the file to the pointer plus the logical address. In this case, the logical address is the entire offset 20 (FIG. 1). The physical address set in the process 110 is then used by the retrieval process 112 to retrieve the data block at the physical address. The conversion process is completed by extracting the data block.

【0037】判断処理106が、ポインタ・データ・ビ
ットがセットされていないこと、即ち、ポインタ・エン
トリ内のポインタが間接アドレス・ブロックを指示して
いることを検出した場合、処理フローは判断処理106
から「No」に分岐する。次いで、処理フローは引き出
しモジュール104に移る。図1の例では、図3の引き
出しモジュール104は、ここではアイノードからのポ
インタ・エントリ内のポインタによって指示されている
ルート間接アドレス・ブロックを引き出す。次に、分割
モジュール114が、処理100によってオフセット2
0(図1)にセットされた論理アドレスを、インデック
ス部分とオフセット部分とに分割する。この場合、論理
アドレスは、Index 1およびData Offset 1(図1)に分
割される。処理116が、新しい論理アドレスを、処理
114において以前の論理アドレスから分割されたオフ
セットにセットする。その結果、論理アドレスは、図1
におけるData Offset 1にセットされたことになる。
If the decision process 106 detects that the pointer data bit is not set, ie, that the pointer in the pointer entry points to an indirect address block, the process flow proceeds to decision process 106.
To “No”. Next, the processing flow moves to the withdrawal module 104. In the example of FIG. 1, the retrieval module 104 of FIG. 3 retrieves the root indirect address block indicated here by the pointer in the pointer entry from the inode. Next, the division module 114 determines that the offset 2
The logical address set to 0 (FIG. 1) is divided into an index part and an offset part. In this case, the logical address is divided into Index 1 and Data Offset 1 (FIG. 1). Operation 116 sets the new logical address to the offset that was split from the previous logical address in operation 114. As a result, the logical address is
Will be set to Data Offset 1.

【0038】処理118は、処理116の前、またはこ
れと並行して進めてもよく、処理114による以前の論
理アドレスから分割されたインデックスを用いて、新し
いポインタ・エントリを発見する。処理118は、イン
デックスによって識別された位置において、モジュール
104によって引き出された間接アドレス・ブロックか
ら、新しいポインタ・エントリを引き出す。図1の場
合、ポインタはルート間接アドレス・ブロック12を指
示し、Index 1はポインタ・エントリ32を識別する。
新しいポインタ・エントリ32が処理118によって引
き出された後、処理フローは判断処理106に戻る。
Operation 118 may proceed before or in parallel with operation 116, using the index split from the previous logical address by operation 114 to find a new pointer entry. Operation 118 retrieves a new pointer entry from the indirect address block retrieved by module 104 at the location identified by the index. In the case of FIG. 1, the pointer points to the root indirect address block 12 and Index 1 identifies the pointer entry 32.
After the new pointer entry 32 has been retrieved by operation 118, processing flow returns to decision operation 106.

【0039】判断処理106が、ポインタ・エントリ内
のポインタ・データ・ビットがセットされていない(即
ち、ポインタ・データ・ビットが0に等しい)ことを検
出する限り、処理フローはループ120内にとどまる。
このループを通過するパス毎に、処理104は、直前の
パスの間に処理118によって引き出されたばかりのポ
インタ・エントリ内のポインタによって指示されている
間接アドレス・ブロックを引き出す。分割モジュール1
14は、直前のパスにおいて更新された論理アドレス
を、インデックスおよびオフセット値に分割する。図1
の例では、ループ120を通過する2回目のパスがオフ
セット20を、Index 2およびData Offset2に分割す
る。また、2回目のパスにおける論理アドレスは、処理
116によってData Offset 2に更新され、次のポイン
タ・エントリが処理118によって引き出される。次の
ポインタ・エントリは、処理104によって引き出され
たレベル2(L2)における間接アドレス・ブロック内
のIndex 2の位置にある。例えば、ポインタ・エントリ
33が最初のパスの間にルート間接アドレス・ブロック
から引き出されていた場合、処理104は2回目のパス
の間に間接アドレス・ブロック16を引き出し、処理1
18は2回目のパスの間にIndex 2に基づいてポインタ
・エントリ35を引き出すであろう。
As long as decision operation 106 detects that the pointer data bit in the pointer entry is not set (ie, the pointer data bit is equal to zero), the process flow remains in loop 120. .
For each pass through this loop, process 104 retrieves the indirect address block pointed to by the pointer in the pointer entry just retrieved by process 118 during the immediately preceding pass. Division module 1
14 divides the logical address updated in the previous pass into an index and an offset value. FIG.
In the example, the second pass through the loop 120 divides the offset 20 into Index 2 and Data Offset 2. Further, the logical address in the second pass is updated to Data Offset 2 by the processing 116, and the next pointer entry is extracted by the processing 118. The next pointer entry is at the position of Index 2 in the indirect address block at level 2 (L2) derived by operation 104. For example, if pointer entry 33 was drawn from the root indirect address block during the first pass, process 104 pulls indirect address block 16 during the second pass and process 1
18 will retrieve pointer entry 35 based on Index 2 during the second pass.

【0040】2回目のループ120のパス(例えば、ポ
インタ・エントリ35)の後でも、次のポインタ・エン
トリ内のポインタ・データ・ビットがまだセットされな
い場合、3回目のループ120のパスにおいて、分割処
理114が新しいオフセットをIndex 3およびData Offs
et 3に分割する。3回目のパスにおいて、レベル3(L
3)における間接アドレス・ブロックを引き出し、処理
118によって当該間接アドレス内のポインタ・エント
リを引き出す。最も低いレベルL3におけるこのポイン
タ・エントリは、1にセットされたポインタ・データ・
ビットを必ず有する。したがって、3回目のパスの終了
時に、判断処理106は必ず「Yes」に分岐する。こ
うして、処理108,110は、物理アドレスを、レベ
ル3におけるポインタ・エントリからのポインタに、こ
こではData Offset 3である論理アドレスを加算したも
のにセットする。
After the second loop 120 pass (eg, pointer entry 35), if the pointer data bit in the next pointer entry has not yet been set, the third loop 120 pass will Operation 114 sets the new offset to Index 3 and Data Offs
Divide into et 3. In the third pass, level 3 (L
The indirect address block in 3) is extracted, and the pointer entry in the indirect address is extracted by processing 118. This pointer entry at the lowest level L3 is the pointer data data set to one.
Always have a bit. Therefore, at the end of the third pass, the determination process 106 always branches to “Yes”. Thus, the processes 108 and 110 set the physical address to the value obtained by adding the logical address, here Data Offset 3, to the pointer from the pointer entry at level 3.

【0041】上述の例におけるように、ポインタ・エン
トリの全てが「0」にセットされたポインタ・データ・
ビットを有する場合、従来の間接アドレシングに対する
利点はない。本発明の有用性および大きな利点は、ポイ
ンタ・エントリ内のポインタ・データ・ビットが、最も
低いレベルよりも高いいずれかのレベルを通じたアイノ
ードからのいずれかの時点において「1」にセットされ
た場合に、ポインタおよび残りのオフセットが、図1の
記憶エリア10内のデータ・ブロックを直接アドレスす
ることができる点にある。アイノード内のポインタ・エ
ントリがデータ記憶領域10を指示する場合の例につい
ては、図1を参照して既に論じた。
As in the above example, the pointer data with all of the pointer entries set to "0"
With bits, there is no advantage over conventional indirect addressing. The utility and great advantage of the present invention is that if the pointer data bit in the pointer entry is set to "1" at any time from the inode through any level higher than the lowest level 1 in that the pointer and the remaining offset can directly address a data block in the storage area 10 of FIG. An example where the pointer entry in the inode points to the data storage area 10 has already been discussed with reference to FIG.

【0042】図4は、アイノード・ポインタ・エントリ
内のポインタ・データ・ビットが「0」にセットされ
(データを指示していない)、レベル1即ちルート間接
アドレス・ブロック12におけるポインタ・エントリ1
30内のポインタ・データ・ビット130Aが1にセッ
トされている(データを指示している)場合の例であ
る。ポインタ・エントリ130は、Index 1を、アイノ
ードからのポインタと結合することによって、位置が突
き止められる。ポインタ・エントリ内のポインタ130
Bは、データ記憶エリア10内の開始アドレス132を
指示する。ファイル内のデータは、開始アドレス132
にData Offset 1を加算したものに等しい物理アドレス
において発見される。この例では、間接アドレシングの
レベルL2,L3はバイパスされている。
FIG. 4 shows that the pointer data bit in the inode pointer entry is set to "0" (not indicating data) and the pointer entry 1 in the level 1 or root indirect address block 12 is shown.
This is an example where the pointer data bit 130A in 30 is set to 1 (indicating data). Pointer entry 130 is located by combining Index 1 with a pointer from the inode. Pointer 130 in pointer entry
B indicates a start address 132 in the data storage area 10. The data in the file has a start address 132
Is found at the physical address equal to Data Offset 1. In this example, the indirect addressing levels L2 and L3 are bypassed.

【0043】図5は、ポインタ・データ・ビットが、レ
ベル2におけるポインタ・エントリ134までセットさ
れない場合の例である。ここでは、図3のループ120
を2回通過する必要がある。ループ120を通過する2
回目のパスの間、Index 2はレベル1のルート間接アド
レス・ブロック12におけるポインタ・エントリ136
からのポインタ136Bと共に用いられ、レベル2にお
けるポインタ・エントリ134を発見する。Data Offse
t 2は、レベル2における間接アドレス・ブロック13
8のポインタ・エントリ134における、ポインタ13
4Bと共に用いられ、データ記憶エリア10内のデータ
開始アドレスを直接指示する。ファイル内のデータ位置
は、開始アドレス140にData Offset 2を加算したも
のに等しい、物理アドレスにおいて発見される。この例
では、間接アドレシングのレベルL3はバイパスされて
いる。
FIG. 5 shows an example in which the pointer data bit is not set up to the pointer entry 134 at level 2. Here, the loop 120 of FIG.
Need to be passed twice. 2 passing through loop 120
During the second pass, Index 2 is the pointer entry 136 in the level 1 root indirect address block 12.
Used to find the pointer entry 134 at level 2 with the pointer 136B from. Data Offse
t 2 is the indirect address block 13 at level 2
8 pointer entry 134, pointer 13
4B, which directly indicates the data start address in the data storage area 10. The data location in the file is found at the physical address, which is equal to the start address 140 plus Data Offset 2. In this example, the level L3 of indirect addressing is bypassed.

【0044】図4および図5のいずれにおいても、メタ
データのためのデータ記憶領域の節約、およびデータ・
ブロック・エリアに到達する際の時間の節約を実現し
た。ポインタ・データ・ビットを使用することができな
い場合、アドレシングの3つの間接レベル全てを用い、
好適実施例は、可変オフセット・アドレシングにおいて
ポインタ・データ・ビットがない場合と同様効率的に動
作する。したがって、本発明の改良間接アドレシング
は、間接アドレシングの最適化を可能とし、最適化が不
可能な場合でも間接アドレシングには悪影響を及ぼすこ
とはない。
In both FIGS. 4 and 5, saving of data storage area for metadata, and
Saved time when reaching the block area. If the pointer data bits are not available, use all three indirect levels of addressing,
The preferred embodiment operates as efficiently as there is no pointer data bit in variable offset addressing. Therefore, the improved indirect addressing of the present invention enables optimization of indirect addressing, and does not adversely affect indirect addressing even when optimization is not possible.

【0045】以上、本発明の好適実施例を参照しなが
ら、特定的に本発明を示しかつ説明したが、本発明の精
神および範囲から逸脱することなく、その形態および詳
細には様々な他の変更も可能であることは、当業者には
理解されよう。
While the present invention has been particularly shown and described with reference to preferred embodiments thereof, various other forms and details are possible without departing from the spirit and scope of the invention. Those skilled in the art will appreciate that modifications are possible.

【図面の簡単な説明】[Brief description of the drawings]

【図1】本発明の好適実施例による、改良間接アドレシ
ングの構造を示す、アドレス・データ・フロー図。
FIG. 1 is an address data flow diagram illustrating the structure of improved indirect addressing according to a preferred embodiment of the present invention.

【図2】サーバおよび多数のクライアントが通信ネット
ワーク内に接続され、データのアドレシングを行う場合
にサーバおよびクライアントが本発明の論理処理を実行
することができる分散処理コンピュータ・システムを示
す図。
FIG. 2 illustrates a distributed processing computer system in which a server and a number of clients are connected in a communication network and the servers and clients can perform the logical processing of the present invention when addressing data.

【図3】本発明の好適実施例による、ファイル・オフセ
ット・アドレスを物理アドレスに変換する論理処理の動
作フローを示す図。
FIG. 3 is a diagram showing an operation flow of a logical process for converting a file offset address into a physical address according to the preferred embodiment of the present invention.

【図4】改良間接アドレスが、間接アドレス・ブロック
の最も高いレベルからのデータ・ブロックを指示する場
合のアドレス・データの流れを示す図。
FIG. 4 is a diagram showing the flow of address data when the improved indirect address indicates a data block from the highest level of the indirect address block.

【図5】改良間接アドレスが、中間レベルの間接アドレ
ス・ブロックからのデータ・ブロックを指示する場合の
アドレス・データの流れを示す図。
FIG. 5 is a diagram showing the flow of address data when an improved indirect address indicates a data block from an intermediate level indirect address block.

【符号の説明】[Explanation of symbols]

10 記憶装置エリア 12 間接アドレス・ブロック 14,16,18,22,24,26 間接アドレス
・ブロック 20 オフセット 28,30,32 ポインタ・エントリ 28A,30A,32A ポインタ 28B,30B,32B ポインタ・データ・ビット 34 開始アドレス
10 Storage Area 12 Indirect Address Block 14, 16, 18, 22, 24, 26 Indirect Address Block 20 Offset 28, 30, 32 Pointer Entry 28A, 30A, 32A Pointer 28B, 30B, 32B Pointer Data Bit 34 Start address

───────────────────────────────────────────────────── フロントページの続き (71)出願人 597004720 2550 Garcia Avenue,MS PAL1−521,Mountain V iew,California 94043− 1100,United States of America ──────────────────────────────────────────────────続 き Continuation of front page (71) Applicant 597004720 2550 Garcia Avenue, MS PAL1-521, Mountain View, California 94043-1100, United States of America

Claims (21)

【特許請求の範囲】[Claims] 【請求項1】 ファイル・システムにおいてファイルの
論理アドレスを物理アドレスに変換する方法であって、
該ファイル・システムは、ポインタ・エントリを備えた
間接アドレス・ブロックを有し、前記方法は、 (a)第1ポインタ・エントリを引き出すステップであ
って、該ポインタ・エントリはポインタとポインタ・デ
ータ・インディケータとを有し、該ポインタ・データ・
インディケータは、前記ポインタが前記データ記憶エリ
ア内の物理アドレスを指示する場合に第1状態を示し、
前記ポインタがより低いレベルの間接アドレス・ブロッ
クを指示する場合第2状態を示すステップと、 (b)前記ポインタ・データ・インディケータが前記第
1状態にあるのか、または前記第2状態にあるのかを検
出するステップと、 (c)前記ポインタ・データ・インディケータが前記第
1状態にある場合、前記ポインタと前記論理アドレスを
結合して物理アドレスをセットするステップと、 (d)前記ポインタ・データ・インディケータが前記第
2状態にある場合、前記論理アドレスをインデックスと
オフセットとに分割し、前記論理アドレスを前記オフセ
ットに更新するステップと、 (e)前記ポインタ・データ・インディケータが前記第
2状態にある場合、現ポインタによって指示される指定
間接アドレス・ブロック内にあり、かつステップ(d)
からの前記インデックスによって識別される前記指定間
接アドレス・ブロック内の位置にある次のポインタ・エ
ントリを引き出すステップと、 (f)前記物理アドレスがステップ(c)によってセッ
トされるまで、ステップ(b)ないしステップ(e)を
繰り返すステップと、から成ることを特徴とする方法。
1. A method for translating a logical address of a file into a physical address in a file system, comprising:
The file system has an indirect address block with a pointer entry, the method comprising: (a) retrieving a first pointer entry, the pointer entry comprising a pointer and a pointer data data. An indicator and the pointer data
The indicator indicates a first state when the pointer points to a physical address in the data storage area;
Indicating a second state if the pointer points to a lower level indirect address block; and (b) determining whether the pointer data indicator is in the first state or the second state. Detecting; (c) combining the pointer and the logical address to set a physical address when the pointer data indicator is in the first state; and (d) the pointer data indicator. In the second state, dividing the logical address into an index and an offset, and updating the logical address to the offset; and (e) when the pointer data indicator is in the second state. Is in the specified indirect address block pointed to by the current pointer, and One step (d)
Retrieving the next pointer entry at the location in the designated indirect address block identified by the index from (f); and (f) until the physical address is set by step (c). Or repeating step (e).
【請求項2】 請求項1記載の方法において、前記第1
ポインタ・エントリはファイル制御ブロックからのもの
であることを特徴とする方法。
2. The method of claim 1, wherein the first
The method wherein the pointer entry is from a file control block.
【請求項3】 請求項1記載の方法において、前記ポイ
ンタ・データ・インディケータはポインタ・データ・ビ
ットであることを特徴とする方法。
3. The method according to claim 1, wherein said pointer data indicator is a pointer data bit.
【請求項4】 請求項1記載の方法であって、更に、 (g)ステップ(c)によってセットされた前記物理ア
ドレスにおけるデータ・ブロックを引き出すステップを
含むことを特徴とする方法。
4. The method of claim 1, further comprising: (g) retrieving a block of data at the physical address set by step (c).
【請求項5】 請求項1記載の方法において、ステップ
(e)は、 (h)前記指定間接アドレス・ブロックの、現ポインタ
によって指定される開始アドレスを突き止めるステップ
と、 (i)前記インデックスを前記現ポインタからの開始ア
ドレスと結合し、前記インデックスによって識別された
前記指定間接アドレス・ブロック内の位置にある次のポ
インタ・エントリを引き出すステップと、から成ること
を特徴とする方法。
5. The method of claim 1, wherein step (e) comprises: (h) locating a start address of the specified indirect address block specified by a current pointer; and (i) determining the index by the index. Retrieving the next pointer entry at the location in the designated indirect address block identified by the index, combined with the starting address from the current pointer.
【請求項6】 請求項5記載の方法において、ステップ
(c)は、 (j)データ記憶領域の、現ポインタによって指定され
るデータ開始アドレスを突き止めるステップと、 (k)前記論理アドレスを前記現ポインタからのデータ
開始アドレスに加算し、前記データ記憶エリア内のデー
タ・ブロックに対する物理アドレスをセットするステッ
プと、から成ることを特徴とする方法。
6. The method of claim 5, wherein step (c) comprises: (j) locating a data start address of a data storage area designated by a current pointer; and (k) retrieving said logical address to said current address. Adding to a data start address from a pointer and setting a physical address for a data block in the data storage area.
【請求項7】 間接アドレス・ファイルシステムにおけ
るファイルに対する論理アドレスおよびポインタ・エン
トリを物理アドレスに変換する装置であって、前記ファ
イル・システムは、メタデータ記憶エリアに複数のレベ
ルの間接アドレシングを有し、前記装置は、 現ポインタ・エントリ内のポインタ・フラグを検査する
判断モジュールであって、該ポインタ・エントリはポイ
ンタと、該ポインタがデータ記憶エリアまたは前記メタ
記憶エリアのどちらを指示するのかを識別する前記ポイ
ンタ・フラグとを有し、前記ポインタがデータ・ポイン
タまたはメタデータ・ポインタであることを示す前記判
断モジュールと、 前記ポインタがデータ・ポインタであることを示す前記
判断モジュールに応答し、前記データ・ポインタを前記
論理アドレスと結合し物理アドレスを発生するセット・
モジュールと、 前記ポインタがメタデータ・ポインタであることを示す
前記判断モジュールに応答し、前記論理アドレスをイン
デックス値としての第1部分と、オフセット値としての
残りの部分とに分割する分割モジュールと、 前記論理アドレスを、前記分割モジュールからの前記オ
フセット値にセットする更新モジュールと、 前記メタデータ・ポインタを前記インデックス値と結合
して次のポインタ・エントリを得て、該次のポインタ・
エントリを前記判断モジュールに送る引き出しモジュー
ルと、から成り、前記ポインタがデータ・ポインタまた
はメタデータ・ポインタのどちらであるかを、前記次の
ポインタ・エントリ内のポインタ・フラグが示すのにつ
いて検査を行い、前記セット・モジュールが物理アドレ
スを発生するまで、前記モジュールの全てがポインタ・
エントリを処理することを特徴とする装置。
7. An apparatus for translating a logical address and a pointer entry for a file in an indirect address file system into a physical address, said file system having a plurality of levels of indirect addressing in a metadata storage area. A determination module for checking a pointer flag in a current pointer entry, wherein the pointer entry identifies a pointer and whether the pointer points to a data storage area or the meta storage area. Responding to the determination module to indicate that the pointer is a data pointer or a metadata pointer, and to the determination module to indicate that the pointer is a data pointer, Data pointer to the logical address Set to generate the bound physical address and -
A dividing module responsive to the determining module indicating that the pointer is a metadata pointer, dividing the logical address into a first part as an index value and a remaining part as an offset value; An update module that sets the logical address to the offset value from the split module; combining the metadata pointer with the index value to obtain a next pointer entry;
A withdrawal module for sending an entry to the determination module, wherein a check is made as to whether the pointer is a data pointer or a metadata pointer by a pointer flag in the next pointer entry. , Until all of the set modules generate a physical address,
An apparatus for processing an entry.
【請求項8】 請求項7記載の装置において、前記第1
ポインタ・エントリはファイル制御ブロックによって与
えられることを特徴とする装置。
8. The apparatus according to claim 7, wherein the first
An apparatus wherein the pointer entry is provided by a file control block.
【請求項9】 請求項7記載の装置であって、更に、前
記セット・モジュールからの物理アドレスに応答し、該
物理アドレスにおけるデータ・ブロックにアクセスする
データ・ブロック・アクセス・モジュールを含むことを
特徴とする装置。
9. The apparatus of claim 7, further comprising a data block access module responsive to a physical address from said set module and accessing a data block at said physical address. Characteristic device.
【請求項10】 請求項7記載の装置において、 各メタデータ・ポインタは、前記複数のレベルの間接ア
ドレシングにおける次の連続レベルの間接アドレシング
を指示し、 各データ・ポインタは、前記データ記憶エリアを指示す
ることにより、データ・ポインタを含むポインタ・エン
トリを有するレベルから最後の間接アドレシング・レベ
ルまでの全レベルの間接アドレシングをバイパスする、
ことを特徴とする装置。
10. The apparatus of claim 7, wherein each metadata pointer points to a next successive level of indirect addressing in the plurality of levels of indirect addressing, and each data pointer points to the data storage area. Indicating, bypassing all levels of indirect addressing from the level having the pointer entry including the data pointer to the last indirect addressing level;
An apparatus characterized in that:
【請求項11】 請求項7記載の装置において、 前記メタデータ・ポインタは、間接アドレス・ブロック
に対して、ブロック開始アドレスを指示し、 前記引き出しモジュールは、前記インデックス値を前記
ブロック開始アドレスに加算し、次のポインタ・エント
リの位置を決定する、ことを特徴とする装置。
11. The apparatus according to claim 7, wherein the metadata pointer indicates a block start address for the indirect address block, and the extraction module adds the index value to the block start address. And determining the position of the next pointer entry.
【請求項12】 請求項11記載の装置において、 前記データ・ポインタは、前記データ記憶アリアにおけ
るデータ開始アドレスを指示し、 前記セット・モジュールは、前記論理アドレスを前記デ
ータ開始アドレスに加算し、前記物理アドレスを発生す
る、ことを特徴とする装置。
12. The apparatus of claim 11, wherein the data pointer points to a data start address in the data storage area, the set module adds the logical address to the data start address, An apparatus for generating a physical address.
【請求項13】 計算機システムによって読み取り可能
であり、ファイル・システムにおいてファイルの論理ア
ドレスを物理アドレスに変換するコンピュータ・プロセ
スを実行するための命令のコンピュータ・プログラムを
エンコードした、コンピュータ・プログラム記憶媒体で
あって、該ファイル・システムは、ポインタ・エントリ
を備えた間接アドレス・ブロックを有し、前記コンピュ
ータ・プロセスは、 (a)第1ポインタ・エントリを引き出すステップであ
って、該ポインタ・エントリはポインタとポインタ・デ
ータ・インディケータとを有し、該ポインタ・データ・
インディケータは、前記ポインタが前記データ記憶エリ
ア内の物理アドレスを指示する場合に第1状態を示し、
前記ポインタがより低いレベルの間接アドレス・ブロッ
クを指示する場合第2状態を示すステップと、 (b)前記ポインタ・データ・インディケータが前記第
1状態にあるのか、または前記第2状態にあるのかを検
出するステップと、 (c)前記ポインタ・データ・インディケータが前記第
1状態にある場合、前記ポインタと前記論理アドレスを
結合して物理アドレスをセットするステップと、 (d)前記ポインタ・データ・インディケータが前記第
2状態にある場合、前記論理アドレスをインデックスと
オフセットとに分割し、前記論理アドレスを前記オフセ
ットに更新するステップと、 (e)前記ポインタ・データ・インディケータが前記第
2状態にある場合、現ポインタによって指示される指定
間接アドレス・ブロック内にあり、かつステップ(d)
からの前記インデックスによって識別される前記指定間
接アドレス・ブロック内の位置にある次のポインタ・エ
ントリを引き出すステップと、 (f)前記物理アドレスがステップ(c)によってセッ
トされるまで、ステップ(b)ないしステップ(e)を
繰り返すステップと、から成ることを特徴とするコンピ
ュータ・プログラム記憶媒体。
13. A computer program storage medium readable by a computer system and encoding a computer program of instructions for executing a computer process for translating a logical address of a file to a physical address in a file system. Wherein the file system has an indirect address block with a pointer entry, the computer process comprising: (a) retrieving a first pointer entry, wherein the pointer entry is a pointer entry; And a pointer data indicator.
The indicator indicates a first state when the pointer points to a physical address in the data storage area;
Indicating a second state if the pointer points to a lower level indirect address block; and (b) determining whether the pointer data indicator is in the first state or the second state. Detecting; (c) combining the pointer and the logical address to set a physical address when the pointer data indicator is in the first state; and (d) the pointer data indicator. In the second state, dividing the logical address into an index and an offset, and updating the logical address to the offset; and (e) when the pointer data indicator is in the second state. Is in the specified indirect address block pointed to by the current pointer, and One step (d)
Retrieving the next pointer entry at the location in the designated indirect address block identified by the index from (f); and (f) until the physical address is set by step (c). Or a step of repeating step (e).
【請求項14】 請求項13記載のコンピュータ・プロ
グラム記憶媒体であって、前記コンピュータ・プログラ
ムにおいて、前記第1ポインタ・エントリはファイル制
御ブロックからのものであることを特徴とするコンピュ
ータ・プログラム記憶媒体。
14. The computer program storage medium according to claim 13, wherein in the computer program, the first pointer entry is from a file control block. .
【請求項15】 請求項13記載のコンピュータ・プロ
グラム記憶媒体であって、前記コンピュータ・プログラ
ムにおいて、ステップ(e)は、 (g)前記指定間接アドレス・ブロックの、現ポインタ
によって指定される開始アドレスを突き止めるステップ
と、 (h)前記インデックスを前記現ポインタからの開始ア
ドレスと結合し、前記インデックスによって識別された
前記指定間接アドレス・ブロック内の位置にある次のポ
インタ・エントリを引き出すステップと、から成ること
を特徴とするコンピュータ・プログラム記憶媒体。
15. The computer program storage medium according to claim 13, wherein in the computer program, step (e) comprises: (g) a start address of the specified indirect address block specified by a current pointer. And (h) combining the index with the starting address from the current pointer to retrieve the next pointer entry at the location in the designated indirect address block identified by the index. A computer program storage medium, comprising:
【請求項16】 請求項13記載のコンピュータ・プロ
グラム記憶媒体であって、前記コンピュータ・プログラ
ムにおいて、ステップ(c)は、 (i)データ記憶領域の、現ポインタによって指定され
るデータ開始アドレスを突き止めるステップと、 (j)前記論理アドレスを前記現ポインタからのデータ
開始アドレスに加算し、前記データ記憶エリア内のデー
タ・ブロックに対する物理アドレスをセットするステッ
プと、から成ることを特徴とするコンピュータ・プログ
ラム記憶媒体。
16. The computer program storage medium according to claim 13, wherein in the computer program, step (c) comprises: (i) locating a data start address of the data storage area specified by the current pointer. And (j) adding the logical address to a data start address from the current pointer, and setting a physical address for a data block in the data storage area. Storage medium.
【請求項17】 第1計算機システムから第2計算機シ
ステムにダウンロードされるコンピュータ・プログラム
を、送信中に、格納するコンピュータ・プログラム伝送
媒体であって、前記コンピュータ・プログラム伝送媒体
は、間接アドレス・ファイル・システムにおけるファイ
ルに対する論理アドレスおよびポインタ・エントリを物
理アドレスに変換するコンピュータ・プロセスを実行す
る命令のコンピュータ・プログラムをエンコードし、前
記ファイル・システムは、メタデータ記憶エリア内に複
数のレベルの間接アドレシングを有し、前記コンピュー
タ・プロセスは、 現ポインタ・エントリ内のポインタ・フラグを検査する
ステップであって、該ポインタ・エントリは、ポインタ
と、該ポインタがデータ記憶エリアまたはメタデータ記
憶エリアのどちらを指示するのかを識別する前記ポイン
タ・フラグとを有し、前記ポインタがデータ・ポインタ
またはメタデータ・ポインタであることを示す前記検査
ステップと、 前記ポインタがデータ・ポインタであることを示す前記
検査ステップに応答して、前記データ・ポインタを前記
論理アドレスと結合し、物理アドレスを発生する第1結
合ステップと、 前記ポインタがメタデータ・ポインタであることを示す
前記検査ステップに応答して、前記論理アドレスを、イ
ンデックス値としての第1部分と、オフセット値として
の残りの部分とに分割するステップと、 前記論理アドレスを前記オフセット値に更新するステッ
プと、 前記メタデータ・ポインタを前記インデックス値と結合
し、次のポインタ・エントリを得る第2結合ステップ
と、 前記次のポインタ・エントリを前記検査ステップに戻
し、前記ポインタがデータ・ポインタまたはメタデータ
・ポインタのどちらであるかを、前記次のポインタ・エ
ントリ内の前記ポインタ・フラグが示すかについて検査
を行うことにより、前記第1結合ステップが物理アドレ
スを発生するまで、前記ステップの全てがポインタ・エ
ントリを処理し続けるステップと、から成ることを特徴
とするコンピュータ・プログラム伝送媒体。
17. A computer program transmission medium for storing a computer program downloaded from a first computer system to a second computer system during transmission, the computer program transmission medium comprising an indirect address file Encoding a computer program of instructions for executing a computer process that translates logical and pointer entries for files in a system into physical addresses, said file system comprising a plurality of levels of indirect addressing in a metadata storage area; Examining a pointer flag in a current pointer entry, the pointer entry comprising a pointer and a pointer to the data storage area or metadata record. A pointer flag for identifying which of the areas is to be indicated, the checking step indicating that the pointer is a data pointer or a metadata pointer, and that the pointer is a data pointer. A first combining step of combining the data pointer with the logical address to generate a physical address in response to the checking step, and responding to the checking step indicating that the pointer is a metadata pointer. Dividing the logical address into a first part as an index value and a remaining part as an offset value; updating the logical address to the offset value; A second combining step for combining with the index value to obtain the next pointer entry Returning the next pointer entry to the checking step and checking whether the pointer flag in the next pointer entry indicates whether the pointer is a data pointer or a metadata pointer. Performing all of the steps until the first combining step generates a physical address, wherein all of the steps continue to process pointer entries.
【請求項18】 請求項17記載のコンピュータ・プロ
グラム伝送媒体において、前記コンピュータ・プログラ
ムにおける前記コンピュータ・プロセスは、更に、 前記物理アドレスにおけるデータ・ブロックにアクセス
するステップを含むことを特徴とするコンピュータ・プ
ログラム伝送媒体。
18. The computer program transmission medium according to claim 17, wherein said computer process in said computer program further comprises a step of accessing a data block at said physical address. Program transmission medium.
【請求項19】 請求項17記載のコンピュータ・プロ
グラム伝送媒体の前記コンピュータ・プログラムにおい
て、 各メタデータ・ポインタは、前記複数のレベルの間接ア
ドレシングにおける次の連続レベルの間接アドレシング
を指示し、 各データ・ポインタは、前記データ記憶エリアを指示す
ることにより、データ・ポインタを含むポインタ・エン
トリを有するレベルから最後の間接アドレシング・レベ
ルまでの全レベルの間接アドレシングを迂回する、こと
を特徴とするコンピュータ・プログラム伝送媒体。
19. The computer program of claim 17, wherein each metadata pointer points to the next successive level of indirect addressing in the plurality of levels of indirect addressing. A computer characterized in that the pointer bypasses all levels of indirect addressing from the level having the pointer entry including the data pointer to the last indirect addressing level by pointing to the data storage area. Program transmission medium.
【請求項20】 請求項19記載のコンピュータ・プロ
グラム伝送媒体の前記コンピュータ・プログラムにおい
て、 前記メタデータ・ポインタは、間接アドレス・ブロック
に対して、ブロック開始アドレスを指示し、 前記第2結合ステップは、前記インデックス値を前記ブ
ロック開始アドレスに加算し、次のポインタ・エントリ
の位置を決定する、ことを特徴とするコンピュータ・プ
ログラム伝送媒体。
20. The computer program according to claim 19, wherein the metadata pointer indicates a block start address for an indirect address block, and the second combining step includes: Adding the index value to the block start address to determine the position of the next pointer entry.
【請求項21】 請求項20記載のコンピュータ・プロ
グラム伝送媒体の前記コンピュータ・プログラムにおい
て、 前記データ・ポインタは、前記データ記憶エリアにおけ
るデータ開始アドレスを指示し、 前記第1結合ステップは、前記論理アドレスを前記デー
タ開始アドレスに加算し、前記物理アドレスを発生す
る、ことを特徴とするコンピュータ・プログラム伝送媒
体。
21. The computer program according to claim 20, wherein the data pointer points to a data start address in the data storage area, and wherein the first combining step includes the logical address. To the data start address to generate the physical address.
JP9354773A 1996-12-30 1997-12-24 Indirect addressing method/device for file system Pending JPH10198587A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US777415 1996-12-30
US08/777,415 US5991862A (en) 1996-12-30 1996-12-30 Modified indirect addressing for file system

Publications (1)

Publication Number Publication Date
JPH10198587A true JPH10198587A (en) 1998-07-31

Family

ID=25110201

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9354773A Pending JPH10198587A (en) 1996-12-30 1997-12-24 Indirect addressing method/device for file system

Country Status (4)

Country Link
US (1) US5991862A (en)
EP (1) EP0851366B1 (en)
JP (1) JPH10198587A (en)
DE (1) DE69701786T2 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000353115A (en) * 1999-04-28 2000-12-19 Emc Corp Extent base file system having multipurpose indirect specification or multiple volumes
JP2001184303A (en) * 1999-12-22 2001-07-06 Nec Corp Variable length information data access system
JP2010108398A (en) * 2008-10-31 2010-05-13 Aisin Aw Co Ltd Data list reader/writer and method thereof
WO2010100813A1 (en) * 2009-03-04 2010-09-10 日本電気株式会社 Storage system
JP2014071905A (en) * 2012-09-28 2014-04-21 Samsung Electronics Co Ltd Computer system, and data management method for computer system

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6353837B1 (en) * 1998-06-30 2002-03-05 Emc Corporation Method and apparatus providing mass storage access from systems using different meta-data formats
US6895418B1 (en) * 1999-04-28 2005-05-17 Emc Corporation Versatile indirection in an extent based file system
US6654772B1 (en) * 1999-04-28 2003-11-25 Emc Corporation Multi-volume extent based file system
US6850962B1 (en) 1999-05-07 2005-02-01 Commercequest, Inc. File transfer system and method
US6912537B2 (en) 2000-06-20 2005-06-28 Storage Technology Corporation Dynamically changeable virtual mapping scheme
US6910115B2 (en) * 2001-10-31 2005-06-21 Hewlett-Packard Development Company, L.P. System and method for configuring a removable storage medium
US20030145199A1 (en) * 2002-01-31 2003-07-31 Miller Layne B. Data pool with validity detection
US8938595B2 (en) * 2003-08-05 2015-01-20 Sepaton, Inc. Emulated storage system
US20050193235A1 (en) * 2003-08-05 2005-09-01 Miklos Sandorfi Emulated storage system
WO2005017686A2 (en) * 2003-08-05 2005-02-24 Sepaton, Inc. Emulated storage system
US20050108486A1 (en) * 2003-08-05 2005-05-19 Miklos Sandorfi Emulated storage system supporting instant volume restore
US8898339B2 (en) * 2003-12-12 2014-11-25 Napatech A/S Method of transferring data implying a network analyser card
US7526622B1 (en) * 2004-05-26 2009-04-28 Sun Microsystems, Inc. Method and system for detecting and correcting data errors using checksums and replication
US7284101B2 (en) * 2004-08-04 2007-10-16 Datalight, Inc. Reliable file system and method of providing the same
US7660837B2 (en) * 2006-06-30 2010-02-09 Broadcom Corporation Method for automatically managing disk fragmentation
US7765244B2 (en) * 2006-06-30 2010-07-27 Broadcom Corporation Fast and efficient method for deleting very large files from a filesystem
KR100899147B1 (en) * 2007-05-04 2009-05-27 한양대학교 산학협력단 Meta data storage method and metadata storage system
US8224831B2 (en) 2008-02-27 2012-07-17 Dell Products L.P. Virtualization of metadata for file optimization
US8219534B2 (en) * 2008-02-27 2012-07-10 Dell Products L.P. Multiple file compaction for network attached storage
US9678879B2 (en) * 2008-05-29 2017-06-13 Red Hat, Inc. Set partitioning for encoding file system allocation metadata
US8572036B2 (en) 2008-12-18 2013-10-29 Datalight, Incorporated Method and apparatus for fault-tolerant memory management
US8190850B1 (en) * 2009-10-01 2012-05-29 Emc Corporation Virtual block mapping for relocating compressed and/or encrypted file data block blocks
US8671265B2 (en) 2010-03-05 2014-03-11 Solidfire, Inc. Distributed data storage system providing de-duplication of data using block identifiers
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9542401B1 (en) 2012-03-30 2017-01-10 EMC IP Holding Company LLC Using extents of indirect blocks for file mapping of large files
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US9372789B2 (en) * 2014-05-30 2016-06-21 Netapp, Inc. Log-structured filed system with file branching
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
CN106231252B (en) * 2016-07-29 2019-04-05 银江股份有限公司 A kind of extensive video monitoring storage method
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
KR20230101394A (en) 2021-12-29 2023-07-06 삼성전자주식회사 Storage device having an indirect access module, method of operating thereof, and method of operating storage system having the same

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4914577A (en) * 1987-07-16 1990-04-03 Icon International, Inc. Dynamic memory management system and method
US5696925A (en) * 1992-02-25 1997-12-09 Hyundai Electronics Industries, Co., Ltd. Memory management unit with address translation function
US5465337A (en) * 1992-08-13 1995-11-07 Sun Microsystems, Inc. Method and apparatus for a memory management unit supporting multiple page sizes
US5732405A (en) * 1992-10-02 1998-03-24 Motorola, Inc. Method and apparatus for performing a cache operation in a data processing system
US5586283A (en) * 1993-10-07 1996-12-17 Sun Microsystems, Inc. Method and apparatus for the reduction of tablewalk latencies in a translation look aside buffer

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000353115A (en) * 1999-04-28 2000-12-19 Emc Corp Extent base file system having multipurpose indirect specification or multiple volumes
JP2001184303A (en) * 1999-12-22 2001-07-06 Nec Corp Variable length information data access system
JP2010108398A (en) * 2008-10-31 2010-05-13 Aisin Aw Co Ltd Data list reader/writer and method thereof
WO2010100813A1 (en) * 2009-03-04 2010-09-10 日本電気株式会社 Storage system
JP2010204970A (en) * 2009-03-04 2010-09-16 Nec Corp Storage system
US8843445B2 (en) 2009-03-04 2014-09-23 Nec Corporation Storage system for storing data in a plurality of storage devices and method for same
JP2014071905A (en) * 2012-09-28 2014-04-21 Samsung Electronics Co Ltd Computer system, and data management method for computer system

Also Published As

Publication number Publication date
EP0851366B1 (en) 2000-04-26
DE69701786D1 (en) 2000-05-31
DE69701786T2 (en) 2000-12-28
US5991862A (en) 1999-11-23
EP0851366A1 (en) 1998-07-01

Similar Documents

Publication Publication Date Title
JPH10198587A (en) Indirect addressing method/device for file system
EP0851355B1 (en) Cache-efficient object loader
US5652865A (en) Linked file storage in a computer memory system
JP2708331B2 (en) File device and data file access method
US5754844A (en) Method and system for accessing chunks of data using matching of an access tab and hashing code to generate a suggested storage location
US7680836B2 (en) Systems and methods for a snapshot of data
US7953704B2 (en) Systems and methods for a snapshot of data
US7882071B2 (en) Systems and methods for a snapshot of data
US7680842B2 (en) Systems and methods for a snapshot of data
US6275910B1 (en) Storage device and method for data sharing
KR940005775B1 (en) Method of opening disk file
US6374266B1 (en) Method and apparatus for storing information in a data processing system
US6850929B2 (en) System and method for managing file system extended attributes
US6697795B2 (en) Virtual file system for dynamically-generated web pages
JPH10247155A (en) File system interface for data base
JPH1069408A (en) Data storage method and device at file system level utilizing hole
US6604170B1 (en) Information processing apparatus and method, and computer readable memory
EP1091295B1 (en) Data management system using a plurality of data operation modules
GB2439576A (en) Storing related small data fragments in the same block
GB2439577A (en) Storing data in streams of varying size
JP2002501258A (en) Native data signing in the file system
US6928466B1 (en) Method and system for identifying memory component identifiers associated with data
JP2007527074A (en) System and method for searching efficient file content in a file system
JPH0358249A (en) Access method of file
US6625614B1 (en) Implementation for efficient access of extended attribute data