JPH1069408A - ホールを利用するファイルシステムレベルでのデータ格納方法及びデータ格納装置 - Google Patents

ホールを利用するファイルシステムレベルでのデータ格納方法及びデータ格納装置

Info

Publication number
JPH1069408A
JPH1069408A JP9075728A JP7572897A JPH1069408A JP H1069408 A JPH1069408 A JP H1069408A JP 9075728 A JP9075728 A JP 9075728A JP 7572897 A JP7572897 A JP 7572897A JP H1069408 A JPH1069408 A JP H1069408A
Authority
JP
Japan
Prior art keywords
data
cluster
memory block
file
physical memory
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
JP9075728A
Other languages
English (en)
Inventor
Peter W Madany
ダブリュ. マダニー ピーター
Thomas K Wong
ケー. ワン トーマス
Michael Nelson
エヌ. ネルソン マイケル
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 JPH1069408A publication Critical patent/JPH1069408A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation

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

(57)【要約】 【課題】 現存データの変換を必要とすることなく、現
存ファイルシステムに対してファイルシステムレベルの
圧縮を実施する。 【解決手段】 マッピングテーブル305は、ファイル
の論理ブロック502等をデータが格納されるディスク
上の現実の物理ブロック504等にマップする。ブロッ
クは、クラスタ単位で配置され、クラスタ毎に圧縮され
る。データ単位が圧縮されると、ファイルは、自身が有
する論理ブロックよりも少ない物理ブロックを占める。
マッピングテーブル305は、データが圧縮された所定
単位について少ない物理ブロックが必要であることを示
すため、更新される。このデータ単位に属するいくつか
の論理ブロックは、物理ブロックにマップされず、ホー
ル512,516にマップされる。ホール512,51
6は、クラスタが既に圧縮されていることを示すのみな
らず、使用されている圧縮アルゴリズムを示す。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータシス
テムにおけるデータ圧縮の技術分野に関し、さらに詳細
には、「ホール」を備えるファイル概念を利用するファ
イルシステムレベルにおけるオンラインデータの圧縮技
術に関する。
【0002】
【従来の技術】多くのコンピュータユーザは、自分達の
コンピュータのディスクドライブ上に存在する利用可能
なデータ格納スペースよりも多くのオンラインデータの
格納スペースを必要としている。この問題を解決する最
も簡単な方法は、追加のディスクドライブを購入し、装
着することである。しかしながら、この解決方法は、費
用がかさむと共に不便である。ユーザが必要とする記憶
装置を減少させるためには、ユーザは、記憶装置のデー
タ表現中における余分な部分を減らさなければならない
(すなわち、データの圧縮)。圧縮形式でデータを格納
するということは、同一データについて2種類の形式が
存在することを意味する。1つは、データの操作に適し
たフォーマットであり、他方は、データをより経済的に
格納することができるフォーマットである。そして、デ
ータ圧縮では、データが記憶媒体に書込まれる際にデー
タを圧縮するプロセスと、データが記憶媒体から読出さ
れる際にデータを展開する(非圧縮、解凍とも呼ばれ
る)プロセスとの2つのプロセスが実行される。
【0003】圧縮及び展開のプロセスは、ソフトウェ
ア、ファームウェア、又はハードウェアによって実行さ
れ得る。データ圧縮がソフトウェアによって実行される
場合には、システムにおけるソフトウェアの複雑さが増
加する。圧縮及び展開には追加の処理サイクルが要求さ
れるので、システムの処理負荷が直ちに増大する。しか
しながら、強力なプロセッサが段々と利用可能になるに
つれて、特に、コンピュータオペレーティングシステム
によって提供されるファイルシステムサービスの一部と
して、ソフトウェアにてデータを圧縮することは、一般
により経済的になってきた。
【0004】ファイルシステムサービスは、記憶媒体の
スペースを管理する能力を有する。ファイルシステムサ
ービスは、記憶媒体の格納データにアクセスするため
に、コンピュータシステムのユーザに対して論理フレー
ムワークを提供する。論理フレームワークは、通常、ユ
ーザ名プログラム又はデータを含むファイル集合を位置
付けるため、ディレクトリ構造の階層を含んでいる。デ
ィレクトリ及びファイルを使用することにより、ユーザ
は、記憶媒体中に格納されている情報の現実の物理的位
置の検索を考慮する必要がなくなる。多くの異なるファ
イルシステム形式が知られている。特に、一般的なファ
イルシステムとしては、種々のUNIXファイルシステ
ム及びWINDOWS NTファイルシステムがある。
UNIXファイルシステムについては、1989年出版の
「The Design and Implementation ofthe 4.3BSD UNIX
Operating System」、著者S. Leffler, M. McKusick,
M. Kareles and J. Quarterman、出版元Addison-Wesley
の7章に詳述されている。WINDOWS NTファイ
ルシステムについては、1994年出版の「Inside the Win
dows NT File System」、著者H. Custer、出版元Micros
oft Pressに詳述されている。
【0005】データ圧縮ソフトウェアは、セクタレベ
ル、あるいはファイルシステムレベルのいずれかで実行
され得る。セクタレベルの圧縮方式は、ファイルシステ
ムのメタデータを含むディスクの全内容を圧縮する。こ
の圧縮方式は、ファイルシステムとディスクドライバ間
で機能し、データがディスクに書込まれるときにデータ
を圧縮し、データをディスクから読出しする際に自動的
にデータを展開する。ファイル及びセクタレベル圧縮の
双方に基づく製品例には、Stac Electronicsから入手可
能な「Stacker」、Microsoft Corporationから入手可能
な「DoubleSpace」及び「DriveSpace」がある。1995年
出版の「PC Intern System Programming」第5版、著者
Michael Tischer、出版元Abacus/Data Beckerにもま
た、製品「DoubleSpace」についての説明が詳述されて
いる。
【0006】セクタレベル圧縮ソフトウェアの長所は、
ユーザが使用するファイルシステムに影響を与えない点
にある。短所は、先ず、存在するユーザデータを他の記
憶装置にバックアップし、それから圧縮データが格納さ
れる記憶装置中に再格納しなければならない点にある。
この存在するデータのバックアップ及び再格納は、時間
を要し、また、誤りを生じやすいプロセスである。
【0007】ファイルシステムレベル圧縮は、ファイル
毎にファイルを圧縮する。基礎ファイルシステムサービ
スの一部として、ユーザトランスペアレントな方法で実
行され得る。ファイルシステムは、ファイルを圧縮すべ
きか否かを検出し、そして、ファイルが書込まれるとき
に圧縮プロセスを、ファイルが読出されるときに展開プ
ロセスを呼び出す。ファイルシステムレベル圧縮はま
た、全ファイルに対して適用され得、又は、ユーザによ
って、ファイル毎、ディレクトリ毎、あるいはファイル
形式毎に明確に開始され得る。M. Burrows, C. Jerian,
B. Lampson, T.Mann等による、プログラム言語及びオ
ペレーティングシステムのためのアーキテクチャサポー
ト第5回国際会議の議事録「On-line Data Compression
in a Log-structured File System」には、一般的なフ
ァイルシステムレベル圧縮の説明が詳述されている。
【0008】一般的なファイルシステムの実装(以後
「ファイルシステム」という。)では、バイトの配列で
あるファイルのユーザ抽象を、物理媒体によって要求さ
れる構造体に変換する。一般的に、磁気ディスクは、固
定サイズのセクタに構造化されている。ユーザが、1バ
イトをファイルに書込みたいと思っても、ディスクは、
複数のセクタ単位でしか読出しまたは書込みすることが
できない。したがって、ファイル中の1バイトを変更す
るためには、ファイルシステムは、先ず、変更されるべ
きバイトを含むセクタを読出し、それから、変更される
バイトを置き換え、最後にセクタをディスクに書き戻さ
なければならない。ユーザのランダムアクセスをバイト
配列に変換するこの操作は、ブロックI/O(ブロック
インプット/アウトプット)として知られている。
【0009】ブロックI/Oを効率的にサポートするた
めに、ファイルシステムは、一般に所定ファイル中のバ
イト配列を、固定サイズの論理ブロックのセットに分割
する。例えば、ファイルシステムの論理ブロックサイズ
が8192バイトの場合には、論理ブロック番号0は、
ファイル中のバイト番号0〜8191を含み、論理ブロ
ック番号1は、ファイル中のバイト番号8192〜16
383を含む。
【0010】各論理ブロック中のデータは、ディスク上
の物理ブロックに格納されている。物理ブロックは、フ
ァイルシステムが論理ブロックをマップするディスク上
の位置である。物理ブロックは、1つ以上の連続セクタ
から構成されている。512バイトのセクタを備えるデ
ィスクの場合、8192バイトの論理ブロックは、16
個の連続セクタを含む8192バイトの物理ブロックに
よってディスク上に表される。
【0011】したがって、N個の論理ブロックを有する
ファイルは、物理ブロックのマッピングに対するN個の
論理を含むテーブルを有する。例えば、ファイルのマッ
ピングテーブル中の第1エレメントは、論理ブロック0
についての物理ブロックアドレスを含み、次のエレメン
トは、論理ブロック1についての物理ブロックアドレス
を含む。
【0012】ほとんどのアプリケーションがファイルに
対してデータを連続して書き込む一方で、いくつかのア
プリケーションは、ファイル中のどのようなオフセット
に対してもランダムにデータを書き込む。例えば、アプ
リケーションは、新規ファイルを作成し、ファイル内の
オフセットMから開始する数バイトを書き込むことがで
きる。この場合、ファイルのオフセット0とオフセット
M−1間のバイト番号には決して書き込みがなされるこ
とはないが、これらはファイルの論理的な部分であり、
一般的に、それら全てが値0を有するものとして取り扱
われる。
【0013】決して書き込まれることのない論理ブロッ
ク(すなわち、全て0)に対応する物理ブロックを格納
することは無駄なことなので、いくつかのファイルシス
テムによって使用される1つの一般的な技術は、そのよ
うなブロックに対する現実の割り当てを回避する。ファ
イルシステムは、特別の、しかし存在しない、全て0の
物理ブロックのアドレスを表す、通常0の特別物理ブロ
ックアドレスを指定する。この特別物理アドレスは、
「ホール」と呼ばれている。
【0014】上記の例において、ファイルシステムは、
オフセットMを含む論理ブロックを除く、バイト番号0
〜M−1の範囲内の論理ブロックを、これらのブロック
が未だ割り当てられていないことを示すための特別物理
ブロックアドレスに対してマップする。1つ以上のホー
ルを含むファイルは、「ホーリィ」と呼ばれる。
【0015】本質的に、「ホーリィ」ファイルは、全て
0の物理ブロックを圧縮する基礎圧縮アルゴリズムによ
り既に圧縮されたファイルと見なされ得る。それ故、圧
縮は非常に限定される。また、「ホーリィ」ファイルに
対するアクセスは、ユーザに対して完全にトランスペア
レントである。したがって、「ホーリィ」ファイルを支
持するファイルシステムは、非常に限定された形式のフ
ァイルシステムレベル圧縮をサポートするということが
できる。「ホーリィ」ファイルは、SunSoft S
olarisオペレーティングシステムのような、UN
IXオペレーティングシステムの多くの商業的な製品に
よってサポートされている。多くのUNIXオペレーテ
ィングシステムは、「ホーリィ」ファイルをサポートし
ているが、これらシステムは、ファイルレベル圧縮の多
くの一般的形式をサポートしていない。
【0016】ファイルシステムレベルにおいて圧縮がト
ランスペアレントであるようにサポートするために、フ
ァイルシステムは、次の圧縮属性を維持しなければなら
ない。(1)ファイルが圧縮されているか否か、(2
a)ファイルが1つのユニットとして圧縮され、圧縮フ
ァイルの格納長さであるか、あるいは、(2b)ファイ
ルが同一長さのユニットに分割されており、各ユニット
において圧縮が完了し、各圧縮ユニットの格納長さであ
るか。
【0017】
【発明が解決しようとする課題】しかしながら、現存す
る多くのファイルシステムは、ファイル圧縮についてこ
の形式をサポートするようには設計されていない。した
がって、それらのオンディスクファイルシステム形式
は、通常、圧縮属性を格納するためのスペースを含んで
いない。一般に、現存のファイルシステムが圧縮をサポ
ートするように改良される場合には、オンディスクファ
イルシステム形式もまた、変更されなければならない。
ファイルシステムのオンディスクファイルシステム形式
の変更は、通常、現存するユーザデータについて旧オン
ディスクファイルシステム形式から新形式への変換を必
要とする。この変換は、時間を要し、コストがかかり、
誤りを起こしやすい。
【0018】したがって、本発明は上記した従来技術の
問題点を解決するためになされたものであり、現存デー
タの変換を必要とすることなく、現存ファイルシステム
に対してファイルシステムレベルの圧縮を実施すること
ができるデータ格納方法及びデータ格納装置を提供する
ことを目的とする。また、圧縮が段階的に実施され、圧
縮ファイル、及び展開ファイルが共存し得るデータ格納
方法及びデータ格納装置を提供することを目的とする。
さらに、ファイルシステムにおいて、複数の圧縮アルゴ
リズムを使用できるデータ格納方法及びデータ格納装置
を提供することを目的とする。
【0019】
【課題を解決するための手段】上記課題を解決するため
に請求項1に記載の発明に係るデータ格納方法は、論理
メモリブロックを物理メモリブロックにマップするため
に配置されるマッピングテーブルを有するファイルシス
テムにおけるデータ格納方法であって、前記物理メモリ
ブロックに書き込まれる、選択論理メモリブロックと関
連するデータセグメントを要求するステップと、圧縮デ
ータが前記データセグメントよりも少ないメモリブロッ
クを占めるよう前記データセグメントを圧縮データ内に
圧縮するステップと、前記圧縮データを1つ以上の前記
物理メモリブロックに対して書き込むステップと、前記
圧縮データに関連する各物理メモリブロックが、マッピ
ングテーブルによって前記選択論理メモリブロックの1
つに対応するエントリにマップされるように、また、ど
の物理メモリブロックとも関連しない各選択論理メモリ
ブロックがどの物理メモリブロックにも対応しないホー
ル識別子にマップされるように前記マッピングテーブル
を更新するステップとを備える。
【0020】また、請求項6に記載の発明に係るデータ
格納方法は、論理メモリブロックを物理メモリブロック
にマップするために配置されるマッピングテーブルを有
するとともに、複数の前記論理メモリブロックに対応す
る各クラスタを処理するために配置されるファイルシス
テムにおけるデータ格納方法であって、(A)前記物理
メモリブロックに書き込まれる、複数のクラスタに及ぶ
選択論理メモリブロックと関連するデータセグメントを
要求するステップと、(B)前記データセグメントが前
記複数のクラスタの第1クラスタ内の中間位置にて開始
するか否かを決定するステップと、(C)前記開始位置
決定ステップが、前記データセグメントは中間位置にて
開始すると決定した場合には、現在のクラスタにおける
前記第1クラスタを利用し、(a)展開形式で前記読出
しバッファ内に格納されている前記現在クラスタに関連
するデータを前記物理メモリブロックから読出しバッフ
ァ内に読み出しするサブステップと、(b)前記読出し
ステップが終了した後、前記現在クラスタに関連する前
記データセグメントと一部を前記読出しバッファ内にコ
ピーするサブステップと、(c)前記コピーステップが
終了した後、前記読出しバッファ内に格納されているデ
ータを圧縮するサブステップと、(d)前記圧縮データ
を前記物理メモリブロックに書き込むサブステップと、
(e)前記圧縮データに関連する各物理メモリブロック
が、マッピングテーブルによって前記現在クラスタに関
連する前記選択論理メモリブロックの1つに対応するエ
ントリにマップされるように、また、前記現在クラスタ
に関連するどの物理メモリブロックとも関連しない各選
択論理メモリブロックが、どの物理メモリブロックにも
対応しないホール識別子にマップされるように前記マッ
ピングテーブルを更新するサブステップとを有する部分
クラスタ書込み操作を実行するステップとを備える。
【0021】さらに、請求項13に記載の発明に係るデ
ータ格納方法は、論理メモリブロックを物理メモリブロ
ックにマップするために配置されるマッピングテーブル
を有するファイルシステムにおけるデータ格納方法であ
って、前記物理メモリブロックに書き込まれる、選択論
理メモリブロックと関連するデータセグメントを要求す
るステップと、前記マッピングテーブルを参照して、い
ずれかの選択論理メモリブロックが、前記物理メモリブ
ロック内にセグメントデータが圧縮形式で格納されてい
ることを示すホール識別子に対してマップされているか
否かを決定するステップと、前記マップ決定ステップ
が、データセグメントが圧縮形式で格納されていると決
定した場合に、前記セグメントデータの前記選択論理メ
モリブロックに関連する全物理メモリブロックを、前記
物理メモリブロックから圧縮バッファに読出しするステ
ップと、前記データセグメントが前記圧縮バッファ内に
展開形式で格納されるように前記圧縮バッファ内に格納
される前記物理メモリブロックを展開するステップとを
備える。
【0022】また、請求項19に記載の発明に係るコン
ピュータ装置は、ファイルシステム内における、選択論
理メモリブロックに関連するデータセグメントの圧縮、
及び展開に使用するためのコンピュータ装置であって、
中央処理装置と、前記中央処理装置と通信するランダム
アクセスメモリと、前記中央処理装置と通信する大容量
記憶装置と、前記データセグメントの前記選択論理メモ
リブロックを前記大容量記憶装置の関連する物理メモリ
ブロックにマップするために配置されるマッピングテー
ブルとを備え、その結果、前記データセグメントが前記
大容量記憶装置上に圧縮形式で格納されているときは、
前記圧縮データセグメントは、前記展開データセグメン
トよりも少ない物理メモリブロックを占有し、また、前
記圧縮データに関連する各物理メモリブロックが、マッ
ピングテーブルによって前記選択論理メモリブロックの
1つに対応するエントリにマップされるとともに、どの
物理メモリブロックとも関連しない各選択論理メモリブ
ロックがどの物理メモリブロックにも対応しないホール
識別子にマップされる。
【0023】さらに、請求項23に記載の発明に係るプ
ログラムの記録媒体は、論理メモリブロックを物理メモ
リブロックに対してマップするためのマッピングテーブ
ルを有するコンピュータファイルシステム中におけるデ
ータを圧縮し、また展開するためのプログラムを記録し
た媒体であって、このプログラムは、前記物理メモリブ
ロックに書き込まれる、選択論理メモリブロックと関連
するデータセグメントを要求するステップと、圧縮デー
タが前記データセグメントよりも少ないメモリブロック
を占めるよう前記データセグメントを圧縮データ内に圧
縮するステップと、前記圧縮データを1つ以上の前記物
理メモリブロックに対して書き込むステップと、前記圧
縮データに関連する各物理メモリブロックが、マッピン
グテーブルによって前記選択論理メモリブロックの1つ
に対応するエントリにマップされるように、また、どの
物理メモリブロックとも関連しない各選択論理メモリブ
ロックがどの物理メモリブロックにも対応しないホール
識別子にマップされるように前記マッピングテーブルを
更新するステップとを備えるコンピュータファイルシス
テム中におけるデータを圧縮し、また展開するためのプ
ログラムを記録する。
【0024】ファイルシステム中のマッピングテーブル
は、ファイルの論理メモリブロックを、そこにデータが
格納されるディスク上の現実の物理メモリブロックにマ
ップする。圧縮されていないファイルは、同一のディス
ク上において、論理ブロック数と同数の物理ブロック数
を占める。ブロックは、一般的にクラスタ単位で配置さ
れており、ファイルはクラスタ毎に圧縮され得る。いく
つかの発明の実施の形態では、ホールはクラスタが既に
圧縮されていることを示すだけでなく、そのクラスタを
圧縮するために使用された圧縮アルゴリズムを識別する
ために用いられる。この場合には、ファイル内の異なる
クラスタは、異なる圧縮アルゴリズムを使用して圧縮さ
れ得る。一旦、ファイルのメモリへの書込みが要求され
ると、データの単位は圧縮され、その結果、ファイル
は、自身が有する論理ブロックよりも少ない物理ブロッ
クを占める。そして、ファイルは、メモリに書き込ま
れ、マッピングテーブルが更新される。
【0025】マッピングテーブルは、少ない物理メモリ
ブロックで所定のデータ単位の圧縮を実行し得ることを
示すために更新される。したがって、このデータ単位に
属するいくつかの論理メモリブロックは、物理メモリブ
ロックにマップされず、ホールにマップされる。ホール
は、このデータ単位が圧縮されたことを示し、このデー
タ単位を圧縮するために使用された特定の圧縮アルゴリ
ズムを示す。
【0026】場合によっては、ディスクへ書き込む前
に、先ずディスクからクラスタを読み出さなければなら
ない。例えば、データ単位がクラスタの中間にて開始
し、又は終了している場合には、圧縮単位の属性を保持
するために、また、変更されるべきせないデータに対す
る重ね書きを避けるために、先ず全クラスタがディスク
から読み出されなければならない。例えば、コンピュー
タメモリ内のデータ単位がディスクに書き込まれる場
合、また、データ単位がクラスタの中間にて始まる場合
には、第1クラスタの半分が重ね書きされるので、全ク
ラスタがディスクに書き込まれるべきでない。変更され
ない第1クラスタの半分を保持するため、全クラスタ
が、先ずディスクから読み出されるべきである。データ
が読み出され、クラスタが圧縮されていることをホール
が示すときは、先ずデータが展開されるべきである。一
旦、クラスタがバッファ内に読み出されると、変更部分
が重ね書きされる。そして、クラスタが圧縮され、ディ
スクに書き戻される。クラスタ内でデータ単位が開始
も、終了もしていない場合には、クラスタは初めにディ
スクから読み出される必要はなく、直接に書き込まれ得
る。
【0027】
【発明の実施の形態】以下、本発明に係るファイルシス
テムにおけるデータの格納方法、及び格納装置を具体化
したいくつか発明の実施の形態について図面を参照して
説明する。
【0028】図1は、ファイルシステム200の一般的
な構造を示している。ファイルシステムは、ディレクト
リ構造201の階層、ファイルテーブル301及びマッ
ピングテーブル305を有している。マッピングテーブ
ル305は、ファイルテーブル301中の各エントリに
存在する。ディレクトリ201内には、ファイルシステ
ム中に存在するファイルネームのエントリ、ファイルテ
ーブル内のエントリに対してファイルがインデックスさ
れることを許容する対応ファイル番号が存在する。ファ
イルテーブル301内の各エントリ302は、ファイル
システムのファイルを識別し、また、一般にIノードと
して知られている。図示されているのは、ファイルネー
ム203及びそれに対応するファイル番号205であ
る。ファイル番号205から延びる矢印は、ファイルテ
ーブル301内の特定のIノード302を指し示してい
る。このIノード302、又はファイルテーブル301
の行は、所定のファイルに関する情報を含んでいる。I
ノードは、上述の「The Design and Implementation of
the 4.3BSD UNIX Operating System」7章に詳述され
ている。含まれている情報は、ファイル形式及びファイ
ルアクセス制御といった種々のファイル属性303、特
に、ファイルサイズ307及びこのファイルによって占
められているディスク上の物理ブロックの総数である。
このファイルのマッピングテーブルポインタ304が図
示されている。他の構造をファイルシステムに用いるこ
とが可能であり、また多くのファイルシステムが本発明
に好適に用いられ得ることは理解されるべきである。
【0029】マッピングテーブル305は、どのように
してファイル内の論理ブロックがディスク上の物理ブロ
ックにマップされるかという情報を含んでいる。これら
の物理ブロックは、ハードディスク、フロッピーディス
ク、光学ディスク等に存在し得ることが理解されるべき
である。これらのブロックはまた、コンピュータの物理
メモリ、あるいは類似の記憶装置に含まれ得る。ファイ
ルテーブル305中の第1エントリ306は、ファイル
の論理ブロック番号(0)のための物理ブロック番号3
08にマップする。次のエントリは、例えば、論理ブロ
ック番号(1)についてのマッピングを含んでいる。フ
ァイル307のサイズは、マッピングテーブル305内
のエントリ数を決定する。物理ブロック番号は、論理ブ
ロックが格納されているディスク上の位置を表す。マッ
ピングテーブルはまた、アレイ、リスト、あるいは他の
類似するデータ構造を使用して実行され得、またハード
ウェアにて実行され得る。アレイを使用する場合には、
アレイのインデックスが論理ブロックの番号を表すため
に機能し得る。アレイとしてマッピングテーブルを実行
することは好ましい。
【0030】図2において400は、ファイルの論理ブ
ロックがどのようにハードディスク上の物理ブロックに
マップされ得るかの例示を模式的に示す。コンピュータ
の作動中、一般に、コンピュータのメモリ中に含まれ得
る論理ファイル401が図示されている。また、ハード
ディスク420が図示されている。ハードディスクは、
一般に、物理ブロックに分割されているが、ファイルの
論理ブロックがハードディスク上の連続物理ブロック中
に格納されるという話は、必ずしも真実ではない。例え
ば、ハードディスク420の不連続物理ブロックにマッ
プされている論理ファイル400の論理ブロックが図示
されている。したがって、論理ファイル401がハード
ディスクに書き込まれるとき、論理ブロックは、不連続
物理ブロックに書き込まれる。この例では、論理ブロッ
ク(0)402は物理ブロック(3)428に書き込ま
れる。論理ブロック(1)404は物理ブロック(1)
424に、論理ブロック(2)406は物理ブロック
(K)432に、論理ブロック(N)408は物理ブロ
ック(4)430にそれぞれ書き込まれる。図示される
ように、論理ファイル401は、0〜Nのブロックで構
成されるが、ファイルは、長さ中の1ブロック、又は長
さ中の複数のブロックたり得る。同様に、ハードディス
ク420は、物理ブロック(0)〜物理ブロック(K)
を示すが、論理ブロックはハードディスク上のどの物理
ブロックに対しても書き込まれ得ることは理解されるべ
きである。したがって、どの物理ブロックに論理ブロッ
クが書き込まれているかを示すために、図1のマッピン
グテーブル305がどのように用いられるか理解に難く
ない。ハードディスク420が例として用いられている
が、リソース420は、コンピュータに関連するどのよ
うな記憶媒体であっても良い。
【0031】上述のように、ファイル内の論理ブロック
が非常に小さなデータを含み、あるいは、実際に完全に
空、すなわち、論理ブロックが0で満たされていること
も可能である。例えば、論理ブロック(1)404が完
全に0で満たされている場合には、この0のブロック
は、その全部が物理ブロック(1)424に書き込まれ
る。以上述べたように、完全に0である物理ブロック
は、スペースを無駄使いするので好ましくない。
【0032】図3は、完全に0である物理ブロックの書
込みを回避するために、どのように「ホール」の概念が
使用されるかを説明する説明図である。500は、この
技術の一例である。論理ファイル401及び、それに対
応するマッピングテーブル305が図示されている。こ
の例では、論理ファイル401は、ブロック(0)、ブ
ロック(1)、ブロック(2)及びブロック(N)とい
う4個の論理ブロックを含んでいる。この例では、論理
ブロック(0)402及び論理ブロック(N)408
は、それぞれ0でないデータを含んでいる。しかしなが
ら、論理ブロック(1)及び論理ブロック(2)は共
に、何も含んでおらず0である。図2に戻ると、論理ブ
ロック(0)が物理ブロック(3)に、論理ブロック
(N)が物理ブロック(4)に書き込まれることが見て
取れる。したがって、マッピングテーブル305は、物
理ブロック(3)504に書き込まれる論理ブロック
(0)502を示す。同様にして、物理ブロック(4)
508に書き込まれる論理ブロック(N)が図示506
されている。しかしながら、論理ブロック(1)及び論
理ブロック(2)は、完全に0なので、それらは、対応
する物理ブロックに書き込まれない。代わりに、マッピ
ングテーブルは、どのようにして論理ブロック(1)5
10及び論理ブロック(2)514がホール512,5
16にマップされるかを示している。ここに図示される
ように、ホール512,516は、数字0によって表さ
れている。この場合、0は、特別のアドレス、すなわ
ち、データが書き込まれる現実の物理ブロックアドレス
でないが、対応する論理ブロックは完全に0であること
を示す単一アドレス、を表している。数字の0を用いる
ことはさておいて、ホールの存在を示すために他の技術
が用いられ得ることは理解されるべきである。例えば、
ホールは、負の番号のような不正なメモリアドレスの存
在によって示され得る。
【0033】また、本発明は、圧縮アルゴリズムによっ
て生成されたホールを、ファイル中に当初から存在し、
圧縮されていないホールと区別するために用いられ得る
不正メモリアドレス等を意図する。例えば、0によって
表されている物理ブロックアドレスは、展開ファイル中
にホールが存在することを示し、一方、異なる不正なメ
モリアドレスを含む物理ブロックアドレス等は、ファイ
ルのブロック又はクラスタが圧縮されていることを示
す。
【0034】図4及び図5は、ホールの概念を用いて、
一般に圧縮をサポートしていないシステムにおいてファ
イルの圧縮を実行する本発明の第2の発明の実施の形態
を模式的に示す。図4は、データ圧縮を実行中の論理フ
ァイル610を図示する。論理ファイル610中には、
全てがデータを含む論理ブロック(0)〜論理ブロック
(7)が図示されている。この例では、ファイルシステ
ム中のクラスタは、4つの論理ブロックを含むものとす
る。したがって、論理ブロック(0)〜論理ブロック
(3)を含む第1クラスタ630、論理ブロック(4)
〜論理ブロック(7)を含む第2クラスタ634が図示
されている。この例では、圧縮はクラスタ単位で実行さ
れる。圧縮はどのようなサイズを有するクラスタに対し
ても実行され得る。例えば、論理ブロックサイズの4
倍、あるいは8倍のクラスタサイズに対しても実行可能
であり、論理ブロックサイズの4倍の最小クラスタサイ
ズが好適である。しかしながら、クラスタは、論理ブロ
ックサイズよりも大きくあるべきであり、しかも論理ブ
ロックサイズの整数倍であるべきである。
【0035】この例では、第1クラスタ630は、デー
タが圧縮クラスタ640の論理ブロック(0)及び論理
ブロック(1)だけに現れるように、データが半分に縮
小されている圧縮クラスタ640中に圧縮される。そし
て、圧縮クラスタ640の論理ブロック(2)及び論理
ブロック(3)は、完全に0で満たされる。同様にし
て、クラスタ634は、圧縮クラスタ644中に圧縮さ
れている。この場合、データは、元の大きさのわずか7
5%に圧縮されており、したがって、論理ブロック
(4)、(5)、(6)はデータを含んでおり、論理ブ
ロック(7)は、0で満たされている。この論理ファイ
ル圧縮の説明が650として図示されている。論理ブロ
ック(0)、(1)、(4)、(5)、(6)は、全て
データを含んでおり、論理ブロック(2)、(3)、
(7)は、全て0である。
【0036】圧縮ファイル650についての対応マッピ
ングテーブル305が図6に図示されている。有効デー
タを含む論理ブロックが、現実の物理ブロックアドレス
にマップされていることに注目すべきである。例えば、
論理ブロック(0)616は、物理ブロック(2)61
8のアドレスにマップされる。論理ブロック(2)、
(3)、(7)が全て0であるとき、それらはホールに
マップされる。例えば、論理ブロック(2)620、
(3)624は共に、622、626で示される特別ア
ドレス−2にマップされる。622及び626で示され
る数−2は、特定のクラスタが圧縮されていることを示
す。したがって、クラスタがディスクから読み出される
と、この−2が検出され、そしてクラスタが展開され得
る。この例では、論理ブロック(7)628が、631
で示される特別アドレス−1にマップされている。この
方法では、この特別アドレスは、このクラスタが既に圧
縮されていることだけでなく、特定の圧縮アルゴリズム
がクラスタの圧縮に使用されていることを示し得る。例
えば、622の特別アドレス−2は、第1クラスタが1
つのアルゴリズムを使用して圧縮されていることを示し
得るのに対し、631の特別アドレス−1は、第2クラ
スタが異なるアルゴリズムを使用して圧縮されているこ
とを示し得る。この方法では、1つのファイルのクラス
タを、異なる圧縮アルゴリズムを使用して圧縮すること
ができる。また、異なるファイルを異なる圧縮アルゴリ
ズムを使用して圧縮することもできる。
【0037】図6には、本発明に係る発明の実施の形態
における書込み操作を示すフローチャート700が図示
されている。一般的に、ファイルシステムは、修正デー
タ量が圧縮単位サイズ以上になるまでデータを累積す
る。そして、書込み操作は、データを圧縮し、残りのク
ラスタを0で満たし、0だけを含むあらゆる物理ブロッ
クをホールに置き換え、クラスタをディスクに書き込
む。書込み操作は、入力パラメータを受け取ることによ
って開始する。入力バッファ、初期入力バッファサイ
ズ、ファイルオフセット、及びオープンファイル記述子
といった、4つの変数が書込み操作に対して入力され
る。変数入力バッファは、ディスクに対して書き込まれ
るべきデータを含むデータバッファを示すアドレスであ
る。初期入力バッファサイズは、入力バッファをサイズ
をバイト表示で示す。ファイルオフセットは、データが
書き込まれるファイル中のオフセットである。オープン
ファイル記述子は、書込み操作が、書き込まれ、ファイ
ルサイズを備えるファイルに関するマッピングテーブル
へアクセスすることを許容する。ファイルサイズは、書
き込まれたファイルのサイズをバイトで表示する。ファ
イルシステムのメタデータからもう一つの変数を手に入
れることができる。この変数は、クラスタのサイズをバ
イトで示すクラスタサイズである。
【0038】書込み要求が受け取られた後、3つの変数
がステップ701にて計算される。計算される変数は、
開始クラスタ番号、終了クラスタ番号、及びクラスタオ
フセットである。開始クラスタ番号は、ファイルオフセ
ットをクラスタサイズで割った商である。終了クラスタ
番号は、ファイルオフセットと入力バッファサイズの和
から1を引いた数をクラスタサイズで割った商である。
クラスタオフセットは、ファイルオフセットをクラスタ
サイズで割った余りである。変数クラスタオフセット
は、データが書き込まれる予定のクラスタ内の開始位置
を示す。これらの変数が計算された後、論理は、4つの
変数が初期化されるステップ703に移行する。4つの
変数は、クラスタ番号、入力バッファオフセット、書込
みバイト数、及び初期入力バッファサイズである。クラ
スタ番号は、書き込まれるクラスタを示し、開始クラス
タ番号と等しく設定される。入力バッファオフセット
は、そこからのデータが書き込まれる入力バッファ内の
ポイントを示し、初期化により0に設定される。同様
に、書込みバイト数は、0に設定され、入力バッファサ
イズは、初期入力バッファサイズに等しく設定される。
入力バッファオフセットは、そこからのデータがディス
クに対して書き込まれる入力バッファ内のオフセットで
ある。
【0039】ステップ705では、変数書込みサイズが
計算される。この変数は、この操作を1回繰り返す間に
書き込まれるバイト数を示し、書込みサイズは、クラス
タサイズ以下でなければならない。このステップの詳細
については、図7を参照して後述する。書込みサイズが
決定された後、ステップ707にて(第1)クラスタが
ディスクに書き込まれる。このクラスタは書込みステッ
プの詳細は、図8を参照して後述する。第1クラスタが
書き込まれた後、ステップ709にて変数クラスタ番号
が1つインクリメントされる。そして、ステップ710
にて、ディスクに書き込まれたばかりのバイト数を示す
ため、変数書込みバイト数が書込みサイズだけインクリ
メントされる。この時点で、入力バッファについての最
終クラスタが既に書き込まれたか否かが決定される。こ
の決定は、ステップ711にて、終了クラスタとクラス
タ番号とを比較することにより実行される。クラスタ番
号が最終クラスタ番号よりも大きい場合には、書込み操
作は終了され、制御はステップ719に移行する。クラ
スタ番号が最終クラスタ番号よりも大きくない場合に
は、書込み操作は終了されず、制御はステップ713に
移行する。
【0040】ステップ713では、ディスクへの書き込
みが更に必要なバイト数を示すため、入力バッファサイ
ズが、書込みサイズだけデクリメントされる。ステップ
715では、変数入力バッファオフセットが書込みサイ
ズだけインクリメントされる。ステップ717では、全
ての部分クラスタが書き込まれているので、変数クラス
タオフセットが0に設定され、残りのクラスタは、それ
らの最初から書き込まれる。制御ループは、ステップ7
17からステップ705に戻り、そして操作は、上述し
た他の繰り返しを継続して実行する。ステップ719で
は、変数ファイルサイズが計算され、ディスク上のファ
イルについての新規なファイルの終わりを示すために設
定される。このステップの詳細は、図9を参照して後述
する。ステップ720では、書込み操作が終了し、変数
書込みバイト数が呼び出しエンティティにリターンされ
る。
【0041】図7は、書き込まれるバイト数についての
書込みサイズを計算するための手順705を図示してい
る。書き込まれる先頭、及び末尾のクラスタでは、クラ
スタ内の開始部分、あるいは終了部分に書込みがなされ
得るため、書込みサイズがクラスタサイズと同一でない
ことがあり得る。中間クラスタでは、書込みサイズはク
ラスタサイズと同一であり得る。ステップ731では、
書込みサイズは、クラスタサイズからクラスタオフセッ
トを差し引いた値に設定される。書込みサイズは、クラ
スタサイズ以下でなければならない。書込み手順の最初
の繰り返しでは、クラスタオフセットが存在する場合、
書込みサイズはクラスタサイズより小さいであろう。す
なわち、ディスクへ書き込まれるべきデータがクラスタ
の中間で始まる場合である。書込み手順の次の繰り返し
では、クラスタオフセットがステップ717にて0に設
定されているので、書込みサイズはクラスタサイズに等
しく設定される。ステップ733は、書込みサイズが入
力バッファサイズよりも大きいか否かを判定する。書込
みサイズが入力バッファサイズよりも大きくない場合、
このことは、入力バッファ内の書き込まれるべきデータ
の残りがクラスタよりも大きいことを意味し、書込みサ
イズはクラスタサイズのままであり、手順705が完了
する。
【0042】しかしながら、書込みサイズが入力バッフ
ァサイズよりも大きい場合、このことは、入力バッファ
の終わりに到達したことを意味し、書き込まれるべきデ
ータの残りはクラスタサイズよりも小さい。この場合、
ステップ735では、書込みサイズがデータの残り、す
なわち入力バッファサイズと等しくなるよう設定され
る。変数入力バッファサイズは、ステップ713にて書
込みサイズだけデクリメントされるので、書込み操作が
繰り返し実行される毎に、入力バッファサイズは、変化
することに留意すべきである。ステップ735の後、書
込みサイズ計算ステップ705が完了する。
【0043】図8には、クラスタの書込み手順を示すフ
ローチャートが図示されている。ステップ801では、
クラスタ番号についての全てのブロックマッピング情報
が検索される。例えば、変数オープンファイル記述子
は、書き込まれるファイルに関して、クラスタ全部につ
いてのマッピング情報を含むマッピングテーブルへのア
クセスに用いられ得る。例えば、図4及び図5は、第1
クラスタ640についてのマッピング情報が、どのよう
にしてマッピングテーブル305に取り込まれるかを示
す。
【0044】ステップ805は、全クラスタに書き込み
がなされたか否かを判定する。全クラスタが、入力バッ
ファから出力ファイルへ書き込まれている場合には、ク
ラスタは、直接書き込まれ得る。この判定は、クラスタ
サイズと書込みサイズとを比較することにより実行する
ことができ、書込みサイズがクラスタサイズと等しくな
い場合、このことは全クラスタに書き込みがなされされ
ていないことを意味する。全クラスタに書き込みがされ
ている場合には、ステップ815にて、このクラスタは
圧縮され、また、入力バッファからオープンファイルへ
書き込まれる。入力バッファからのこのクラスタは、圧
縮され、入力バッファ中に格納されたデータを使用し、
入力バッファオフセットの位置にてディスクに書き込ま
れる。このステップ815については、図10を参照し
て詳細に後述する。
【0045】全クラスタに書き込みがされていない場合
には、このクラスタは、先ず、ステップ807〜811
に示すように、書き込まれる前のファイルから読み出さ
れなければならない。全クラスタに書き込みがされてい
ないときに用いられるステップ807〜813は、入力
バッファがクラスタ内の中間位置で開始するか、又はク
ラスタ内の中間位置で終了するかという状況を説明して
いる。入力バッファは、クラスタの始端で始まり、ま
た、クラスタの終端で終わり、そして、これらのステッ
プは必要なくなる。以下の変数は、ステップ807〜8
13で使用される。クラスタ番号は、検索されるデータ
が存在するクラスタであり、読出しバッファは、検索さ
れるデータを含む一時データバッファであり、クラスタ
オフセットは、入力バッファからのデータがコピーされ
る読出しバッファ内のオフセットであり、入力バッファ
は、書き込まれるべきデータを含み、入力バッファオフ
セットは、入力バッファ内からディスクへ書き込まれる
データの入力バッファ内における位置である。
【0046】ステップ807では、読出しバッファ内の
全バイトを0に設定することにより、読出しバッファが
クリアされる。ステップ809では、変数クラスタ番号
に関連するクラスタがファイルから読み出され、必要に
応じて展開され、そして読出しバッファ内に格納され
る。このステップ809については、図14を参照して
後述する。ステップ811では、入力バッファからのデ
ータが読出しバッファにコピーされる。このステップ
は、入力バッファの入力バッファオフセットの位置から
読出しバッファのクラスタオフセットの位置に書込みサ
イズのバイトデータをコピーすることにより実行され得
る。ステップ813では、読出しバッファ内のクラスタ
が圧縮され、ディスク上のファイルに書き込まれる。こ
のステップについては、図10を参照して後述する。ス
テップ815、813が終了した後、この書込みクラス
タ手順707は、ステップ817にて完了する。
【0047】図9は、ファイルサイズ変数を算出する手
続き719を示す。この手順は、サイズに関してファイ
ルが増大しているか否かを調べ、もし増大している場合
には、ファイルサイズ変数を調整する。変数ファイルサ
イズは、ファイルサイズをバイトで示す。ステップ75
1では、変数終了ファイルオフセットが、ファイルオフ
セットに初期入力バッファサイズを加算した値と等しく
設定される。変数ファイルオフセットは、ディスク上の
ファイルの始端からのオフセットを示し、また、変数初
期入力バッファサイズは、書き込まれたデータの総サイ
ズなので、ファイルが長さに関して増大した場合には、
変数終了ファイルオフセットは、現在ファイルの新規な
終わりを示す。ステップ753は、終了ファイルオフセ
ットがファイルサイズよりも大きいか否かを判定する。
終了ファイルオフセットがファイルサイズよりも大きく
ない場合には、このことは、ファイルは長さに関して増
大しておらず、変数ファイルサイズは変化していないこ
とを意味し、この手順は757で完了する。しかしなが
ら、終了ファイルオフセットがファイルサイズよりも大
きい場合には、ステップ755にて変数ファイルサイズ
は変数終了ファイルオフセットと等しくなるよう再設定
される。このステップの後、手順はステップ757にて
完了する。
【0048】図10は、1つのクラスタを圧縮し、ディ
スクに書き込む手順を示している。図10は、図8のス
テップ813又は815のいずれかを表している。この
手順は、変数入力バッファ又は出力バッファのいずれか
を受け取ることによってステップ948で始まる。ステ
ップ813の場合には、クラスタは、読出しバッファ内
に格納されたデータを用いて圧縮され、書き込まれ、ス
テップ815の場合には、クラスタは、入力バッファオ
フセット位置での入力バッファ内に格納されたデータを
用いて圧縮され、書き込まれる。一旦、バッファが受け
取られると、使用する所望の圧縮アルゴリズムがステッ
プ950にて同定される。この圧縮アルゴリズムは、こ
のクラスタ内のデータを圧縮するために用いられる。圧
縮アルゴリズムの選択は、ユーザ、オペレーティングシ
ステム、ファイルシステム等により決定され得る。圧縮
アルゴリズムの選択は、この手順とは独立した手順であ
り、上述のように、圧縮する各クラスタについて異なる
圧縮アルゴリズムを選択し使用することが可能であるこ
とが理解されるべきである。
【0049】ステップ952では、選択済の圧縮アルゴ
リズムを使用して受け取られたバッファ内のデータが圧
縮され、この圧縮データが圧縮バッファに書き込まれ
る。ステップ954では、圧縮が有効であるか否かが決
定される。換言すれば、圧縮データを格納するために必
要な物理ブロックが展開データよりも少ない場合には、
データの物理的データ格納サイズが縮小されているの
で、圧縮アルゴリズムが有効であることを意味する。こ
れに対して、圧縮アルゴリズムが、物理ブロック単位毎
に(又は所望のあらゆる他のデータ単位)僅かにデータ
サイズを縮小しているものの、十分には縮小していない
場合がある。この場合、圧縮データを格納するために、
展開データを格納するのと同数の物理ブロックが必要と
なるので、圧縮は、有効でなく、使用されない。
【0050】圧縮が有効でない場合には、制御はステッ
プ975に移行し、圧縮が有効であると判断された場合
には、制御はステップ956に移行する。ステップ97
5では、クラスタ内にデータを格納するために必要な物
理ブロック数が割り当てられる。ステップ977では、
受信バッファからの展開データがディスク上の割り当て
られた物理ブロックに書き込まれる。ステップ979で
は、論理ブロックを新規に書き込まれた物理ブロックに
マップするために、マッピングテーブルが更新される。
ステップ966では、Iノードが更新される。この更新
には、ファイルサイズ、ファイル内のブロック等の更新
が含まれ得る。ステップ968では、この更新済Iノー
ド情報が、ファイルに関連するディスクに書き込まれ
る。ステップ970では、新規な物理ブロックに対する
書き込みが実行されたので、このクラスタについて割り
当てられた原物理ブロックが解放される。ステップ97
0の後、図8のステップ813及び815についてのこ
の手順は、ステップ972にて完了する。
【0051】圧縮が有効な場合について説明する。ステ
ップ956では、圧縮データを格納するために必要な物
理ブロック数が決定される。例えば、選択済圧縮アルゴ
リズムが、展開データのサイズをその75%にまで縮小
することに成功した場合には、理論上は、展開データに
対して先に使用されていた物理ブロックのわずか75%
だけが圧縮データを格納するために必要となる。ステッ
プ958では、これらの決定された数の物理ブロックが
割り当てられる。ステップ960では、圧縮データが、
圧縮バッファから、ディスク上の割り当てられた物理ブ
ロックに書き込まれる。ステップ962では、新規に書
き込まれた物理ブロックを指示するために、マッピング
テーブルが更新される。このステップ962は、ステッ
プ979に類似している。
【0052】ステップ964では、使用される圧縮アル
ゴリズムが、クラスタ番号によって確認されたクラスタ
に関連する、マッピングテーブル内の残りの論理ブロッ
クに対して割り当てられる。換言すれば、圧縮アルゴリ
ズムが必要な物理ブロック数の低減に成功したので、い
くつかの論理ブロックは、実際の物理ブロックにマップ
される必要はなく、ホールにマップされ得る。上述のよ
うに、このホールは、ディスク上の特別アドレスであ
り、それは不正なアドレス等であり得る。例として、こ
れらの論理ブロックは、特別アドレス(0)に対してマ
ップされ得、あるいは、−1,−2といった不正アドレ
スにマップされ得る。この特別アドレスは、圧縮アルゴ
リズムがこのクラスタ上で使用されたことを表示するた
めに有効なばかりでなく、特定の圧縮アルゴリズムが使
用されたことを表示するためにも有効である。異なる圧
縮アルゴリズムが、圧縮される各クラスタに使用され
得、唯一の特別アドレスがこの圧縮アルゴリズムを表示
するために使用され得ることが理解されるべきである。
ステップ964の後、制御はステップ966に移行し、
この手続き中のフローは、上述のように継続する。
【0053】図11,図12及び図13には、本発明に
係る発明の実施の形態における読出し操作を説明するフ
ローチャート1000が図示されている。ユーザがファ
イルオフセットにおける圧縮データを読み出すとき、フ
ァイルシステムは、オフセットにおけるバイトを含む格
納済圧縮ユニットを受け取り、データを展開し、ユーザ
に戻す。読出し操作は入力パラメータを受け取ることに
よりステップ1002にて開始する。出力バッファ、初
期出力バッファサイズ、ファイルオフセット、及びオー
プンファイル記述子の4つの変数が読出し操作に対して
入力される。変数出力バッファは、ディスクから読み出
されるべきデータを含むデータバッファを示すアドレス
である。初期出力バッファサイズは、出力バッファのサ
イズをバイト数で表示する。ファイルオフセットは、デ
ータが読み出される、ファイル内のオフセットである。
オープンファイル記述子は、読出し操作が、読み出され
るべきファイルについてのマッピングテーブルにアクセ
スし、ファイルサイズを備えることを許容する。システ
ムメタデータから、クラスタサイズをバイトで示すもう
一つの変数、クラスタサイズを手に入れることができ
る。また、変数読出しバイト数が0に初期化される。
【0054】ステップ1004では、ファイルオフセッ
トがファイルサイズと比較される。ファイルオフセット
がファイルサイズ以上の場合、このことは、存在するフ
ァイルの終端を通り過ぎて読み出ししようと試みている
ことを意味し、読み出し手順はステップ1030で終了
する。他方、ファイルオフセットがファイルサイズ未満
の場合には、制御はステップ1006に移行する。ステ
ップ1006では、先ず、出力バッファサイズが初期出
力バッファサイズに等しく設定される。読出し操作がフ
ァイルの終端を越えたデータを要求していると決定され
た場合には、出力バッファサイズは、更に調整される。
出力バッファサイズがファイルサイズからファイルオフ
セットを差し引いた値よりも大きい場合、このことは、
その要求がファイルの終端を越えていることを意味す
る。この場合、出力バッファサイズは、ファイルサイズ
からファイルオフセットを差し引いた値に設定される。
【0055】ステップ1008では、3つの変数、すな
わち、開始クラスタ番号、終了クラスタ番号、及びクラ
スタオフセットが計算される。変数開始クラスタ番号
は、ファイルオフセットをクラスタサイズで割った商で
ある。終了クラスタ番号は、ファイルオフセットに出力
バッファサイズを加算し1を差し引いた数をクラスタサ
イズで割った商である。クラスタオフセットは、ファイ
ルオフセットをクラスタサイズで割った余りである。変
数クラスタオフセットは、そこからデータが読み出され
るクラスタ内の位置を示す。一旦、これらの変数が計算
されると、3つの変数はステップ1010にて初期化さ
れる。クラスタ番号は、読み出されるクラスタを示し、
開始クラスタ番号と等しくなるよう設定される。出力バ
ッファオフセットは、ディスクから読み出されるデータ
を格納するために、出力バッファ内のポイントを示し、
それは0に初期化される。出力バッファオフセットは、
ディスクから読み出されるデータを格納するための、出
力バッファ内のオフセットである。
【0056】ステップ1012では、変数読出しサイズ
が計算される。この変数は、一回の読出し操作サイクル
で読み出されるバイト数を示し、読出しサイズは、クラ
スタサイズ以下でなければならない。このステップにつ
いては、後に図12を参照して詳述する。ステップ10
14では、クラスタがディスクから読み出される。この
ステップについては、図13を参照して後述する。ステ
ップ1016では、クラスタ番号が1つインクリメント
される。ステップ1018では、ディスクから読み出さ
れたばかりのバイト数を示すため、変数読出しバイト数
が読出しサイズだけインクリメントされる。次に、ステ
ップ1020では、出力バッファについての最後のクラ
スタが読み出されたか否かを判定する。クラスタ番号が
終了クラスタ番号よりも大きい場合には、読出し操作は
終了し、制御はステップ1030に移行する。クラスタ
番号が終了クラスタ番号よりも大きくない場合には、読
出し操作は終了せず、制御はステップ1022に移行す
る。
【0057】ステップ1022では、ディスクから読み
出されたバイト数を表示するため、読出しサイズによっ
て出力バッファサイズが決定される。ステップ1024
では、変数出力バッファオフセットが読出しサイズだけ
インクリメントされる。ステップ1026では、変数ク
ラスタオフセットが0に設定される。ステップ1026
から、制御ループはステップ1012に戻り、操作は、
上述したような他の繰り返しを継続する。ステップ10
30では、読出し操作が終了し、変数読出しバイト数が
呼び出しエンティティに返送される。
【0058】図12は、読み出されるバイト数である、
読出しサイズを計算する図11のステップ1012の実
行手順を示す。ステップ1031では、読出しサイズが
クラスタサイズからクラスタオフセットを差し引いた値
と等しく設定される。読出しサイズは、クラスタサイズ
以下でなければならない。読出し操作の最初の繰り返し
では、クラスタオフセットが存在する場合、読出しサイ
ズはクラスタサイズよりも小さいことがある。すなわ
ち、ディスクから読み出されるデータがクラスタの中間
で始まっている場合である。読出し操作における次の繰
り返しでは、クラスタオフセットがステップ1026に
て0に設定されているので、読出しサイズは、クラスタ
サイズと等しくなる。ステップ1033は、読出しサイ
ズが出力バッファサイズよりも大きいか否かを判定す
る。読出しサイズが出力バッファサイズよりも大きくな
い場合には、このことは、ディスク上の出力バッファへ
読み出されるべき残りのデータが、クラスタ以上である
ことを意味し、読出しサイズはクラスタサイズで残存
し、手順1012は完了する。
【0059】しかしながら、読出しサイズが出力バッフ
ァサイズよりも大きい場合には、ことことは、出力バッ
ファの終端に到達し、読み出されるべきデータの残りが
クラスタサイズよりも小さいことを意味する。この場
合、ステップ1035では、読出しサイズが読み出され
るべき残存データ、すなわち、出力バッファサイズと等
しく設定される。変数出力バッファサイズは、ステップ
1022にて読出しサイズだけデクリメントされるの
で、出力バッファサイズは、読出し操作を通して実行さ
れる繰り返し毎に変化することに留意すべきである。ス
テップ1035の後、読出しサイズを計算するステップ
1012が完了する。
【0060】図13は、クラスタ読出し操作を実行す
る、図11のステップ1014の実行手順を示す。この
操作はステップ1051から開始する。ステップ105
1では、クラスタ番号に関連するデータがディスクから
読み出され、展開され、そして読出しバッファに格納さ
れる。このステップ1051については、図14を参照
して後述する。ステップ1053では、データのクラス
タが読出しバッファから出力バッファ中にコピーされ
る。このステップは読出しバッファ内のデータを、読出
しサイズのバイト数についてのクラスタオフセットか
ら、出力バッファオフセットのオフセット位置における
出力バッファにコピーすることにより実行される。この
ステップ1014は、ステップ1055にて終了する。
【0061】図14は、ディスクからデータを読出し、
必要に応じて展開し、このデータを読出しバッファ内に
残す手順900を図示する。この手順900は、図8の
ステップ809及び図13のステップ1051に対応す
る。ステップ901は、圧縮アルゴリズムを示すクラス
タの物理ブロック数が存在するか否かを決定する。上述
のように、ホールが存在し、クラスタが圧縮されている
ことを示すために、有効な物理ブロック数の代わりに、
特別アドレス、又は不正アドレス等がマッピングテーブ
ル内に現れる。
【0062】圧縮アルゴリズムが同定された場合には、
制御はステップ905に移行し、同定されない場合に
は、制御はステップ903に移行する。ステップ905
では、正のブロック番号を備える(あるいは、ホールと
して指定されていない)全物理ブロックがディスクから
読み出され、圧縮バッファ内に格納される。この例で
は、0や負の番号といった特別アドレスが、ホールを示
すために使用され得るので、全ての正のブロック番号
は、その位置に存在するデータを含む有効な物理ブロッ
クを意味する。データを含む有効な物理ブロックは、正
の物理ブロック番号を関連付けられる必要はないが、ホ
ールを示すために予め定められていない物理ブロック番
号と関連付けられ得ることが理解されるべきである。ス
テップ907では、圧縮バッファ内のデータが、同定さ
れた圧縮アルゴリズムを用いて展開され、そして読出し
バッファに書き込まれる。ステップ907の後、ステッ
プは完了する。
【0063】圧縮アルゴリズムが、ステップ901にて
同定されない場合には、ステップ903にて正の物理ブ
ロック番号を備える全物理ブロックが、展開を伴うこと
なく単に読出しバッファ内へ直接読み出される。同様に
このステップでは、正のブロック番号が、データが存在
する有効な物理ブロックを示すために用いられ、0のブ
ロック番号は、ホールの存在を示す。ステップ903の
後、この手順は完了する。
【0064】設定されたファイルサイズ操作は、ディス
ク上のファイルサイズを縮小させるため、あるいは、デ
ィスク上のファイルサイズを増大させるために、ファイ
ルシステムによって使用される。この操作はまた、ファ
イル終端のスペースを改善するために用いられ得る。例
えば、ユーザがコンピュータのメモリ内のファイルを編
集し、そのファイルサイズを低減する場合、そのファイ
ルがディスクに書き込まれる際には、設定ファイルサイ
ズ操作が、前述の書込み操作に代えて使用され得る。設
定ファイルサイズ操作はまた、ファイルサイズを増大さ
せる。設定ファイルサイズ操作の結果、ファイルサイズ
は、旧ファイルサイズから操作に入力される新ファイル
サイズに変更される。新ファイルサイズは、旧ファイル
サイズより大きくも、小さくも、そして等しくもなり得
る。旧ファイルサイズ及び新ファイルサイズが同一の場
合には、実行されるステップはない。これ以外の場合に
は、ファイルは延伸されるか、切り捨てられる。
【0065】図15は、設定ファイルサイズ操作を実行
するためのフローチャートを示している。設定ファイル
サイズ操作は、新ファイルの所望のサイズをバイトで示
すパラメータ新ファイルサイズを入力として受け取るこ
とにより開始する。ステップ1102では、新ファイル
サイズが現在のファイルサイズと比較される。双方が同
一の場合には、設定ファイルサイズ操作は、終了する。
それらが同一でない場合には、新規ファイルサイズは、
ステップ1103においてファイルサイズに対して比較
される。新ファイルサイズがファイルサイズよりも大き
い場合、このことは、ファイルが延伸されなければなら
ないことを意味し、ファイル延伸ステップ1107が実
行される。このステップの詳細については、図17を参
照して後述する。新ファイルサイズがファイルサイズよ
り小さい場合、このことは、ファイルのサイズが縮小さ
れなければならないことを意味し、ファイル切捨てステ
ップ1105が実行される。このステップの詳細につい
ては、図16を参照して後述する。ステップ1109で
は、変数ファイルサイズが新ファイルサイズにリセット
される。ステップ1111では、ファイルについてのI
ノード情報が更新され、そして、このIノードはディス
クに書き込まれる。ステップ1111の後、設定ファイ
ルサイズ操作は終了する。
【0066】図16は、図15中のファイル切捨てステ
ップ1105を実行するためのフローチャートを示す。
ファイル切捨てステップの目的は、クラスタの終端に対
するポインタ新ファイルサイズの後ろのバイト数を0に
することである。そして、オフセット新ファイルサイズ
を含むクラスタの後の全クラスタが解放される。ステッ
プ1151では、変数書込みサイズ及び書込みオフセッ
トが計算される。変数書込みオフセットは、そこからバ
イト数が0にされなければならない、ファイル内の位置
を示すポインタを表している。変数書込みオフセット
は、新ファイルサイズと等しく設定される。変数書込み
サイズは、ファイルオフセット新ファイルサイズにおけ
る、0にされなければならないクラスタの終端までの残
存バイト数を示している。一時変数である一時書込みサ
イズは、クラスタサイズから新ファイルサイズをクラス
タサイズで除算した余りを減じた値に設定される。次
に、新ファイルサイズが0の場合、あるいは、一時書込
みサイズがクラスタサイズと等しい場合には、書込みサ
イズが0に設定される。これ以外の場合には、書込みサ
イズは、一時書込みサイズに設定される。
【0067】書込みサイズが0の場合には、0にしなけ
ればならないバイトは存在せず、クラスタは解放され得
る。ステップ1153では、書込みサイズが0の場合、
制御はステップ1159に移行し、書込みサイズが0以
外の場合には、ステップは1155に移行する。ステッ
プ1155では、書込みバッファがクリアされる。書込
みバッファのサイズは、クラスタサイズと等しい。ステ
ップ1157では、書込みサイズのバイト数が、書込み
バッファから書込みオフセットにおけるファイル始端に
書き込まれる。これは書込み操作なので、ステップ11
57は、図6〜図10中の書込み操作700を使用して
実行され得る。4つの変数がこの書込み操作に対して入
力される。上述のように、フローチャート700は、4
つの入力、すなわち、入力バッファ、入力バッファサイ
ズ、ファイルオフセット、及びオープンファイル記述子
を必要とする。ステップ1157では、書込みバッファ
が入力バッファに、書込みサイズが入力バッファサイズ
に、書込みオフセットがファイルオフセットにそれぞれ
対応し、そして、上記設定ファイルサイズ操作に入力済
の現在のファイルを示すオープンファイル記述子が書込
み操作に対して入力される。
【0068】ステップ1159〜ステップ1167は、
これらのステップを通じて新ファイルサイズを含むクラ
スタの後の残存クラスタを解放されるステップを示して
いる。ステップ1159では、変数開始クラスタ番号及
び終了クラスタ番号が計算される。これらの変数は、例
えば、上述の図6のステップ701における計算のよう
に計算され得る。しかしながら、書込みサイズが0の場
合には、クラスタ番号もまた、1だけデクリメントされ
るべきである。ステップ1161では、クラスタ番号が
1だけインクリメントされる。ステップ1163では、
クラスタ番号が終了クラスタ番号と比較される。クラス
タ番号が終了クラスタ番号よりも大きい場合には、ステ
ップ1105は終了する。クラスタ番号が終了クラスタ
番号よりも大きくない場合、このことは、クラスタが解
放される必要のあることを示す。このプロセスは、例え
ば、上述の図8中のステップ801と同様に実行され得
る。また、このクラスタ中の原ブロックが解放される。
ステップ1167では、マッピングテーブルが更新さ
れ、現クラスタ内の全ブロックが0に設定される。本質
的に、現在0であるこれらのブロックは、ホールとして
マークされる。ステップ1167の後、次のクラスタを
表示するために、ループはステップ1161に続き、ク
ラスタ番号が1だけインクリメントされ、操作は上述の
ように続く。
【0069】図17は、図15のファイル延伸ステップ
1107を示す。このファイル延伸ステップの目的は、
クラスタの終端に対して旧ファイルサイズより後ろの全
てのバイトを0にすることである。オフセット旧ファイ
ルサイズを含むクラスタより後の全クラスタ中のブロッ
クは、ホールとしてマークされる。ステップ1131で
は、変数書込みサイズ及び書込みオフセットが計算され
る。変数書込み変数は、ファイルの後の、そこから後の
バイトが0にされなければならない位置を示すポインタ
を表す。変数書込みオフセットは、新ファイルサイズと
等しく設定される。変数書込みサイズは、オフセット新
ファイルサイズのファイルにおける、0にされなければ
ならないクラスタ終端までの残存バイト数を示す。変数
書込みオフセットは、旧ファイルサイズに1を加算した
値に設定される。次に、一時変数である一時書込みサイ
ズが、クラスタサイズから新ファイルサイズをクラスタ
サイズで除算した余りを減じた値に設定される。次に、
旧ファイルサイズが0であり、あるいは、一時書込みサ
イズがクラスタサイズと等しい場合には、書込みサイズ
が0に設定される。これ以外の場合には、書込みサイズ
は一時書込みサイズに等しく設定される。
【0070】書込みサイズが0である場合には、0にし
なければならないバイトはなく、クラスタはホールとし
てマークされ得る。ステップ1133では、書込みサイ
ズが0の場合には、制御はステップ1139に移行し、
書込みサイズが0でない場合には、制御は、ステップ1
135に移行する。ステップ1135では、書込みバッ
ファがクリアされる。書込みバッファは、クラスタサイ
ズと同一のサイズを有する。ステップ1137では、書
込みサイズのバイト数が書込みバッファから書込みオフ
セットのファイル始端へ書き込まれる。これは書込み操
作なので、ステップ1137は、図6〜図10中の書込
み操作700を使用して実行され得る。4つの変数がこ
の書込み操作に対して入力される。上述のように、フロ
ーチャート700は、4つの入力、すなわち、入力バッ
ファ、入力バッファサイズ、ファイルオフセット、及び
オープンファイル記述子を必要とする。ステップ113
7では、書込みバッファが入力バッファに、書込みサイ
ズが入力バッファサイズに、書込みオフセットがファイ
ルオフセットにそれぞれ対応し、そして、上記設定ファ
イルサイズ操作に入力済の現在のファイルを示すオープ
ンファイル記述子がまた、書込み操作に対して入力され
る。書込み操作が終了した後、制御はステップ1139
に移行する。
【0071】ステップ1139〜ステップ1147は、
ホールとして変数旧ファイルサイズを含むクラスタより
後のクラスタ中における全ブロックのマーキングを実行
する。ステップ1139では、変数開始クラスタ番号及
び終了クラスタ番号が計算される。これらの変数は、例
えば、上述の図6のステップ701における計算のよう
に計算され得る。しかしながら、書込みサイズが0の場
合には、クラスタ番号もまた、1だけデクリメントされ
るべきである。ステップ1141では、クラスタ番号が
1だけインクリメントされる。ステップ1143では、
クラスタ番号が終了クラスタ番号と比較される。クラス
タ番号が終了クラスタ番号よりも大きい場合には、ステ
ップ1107は終了する。クラスタ番号が終了クラスタ
番号よりも大きくない場合、ホールとしてマークされる
クラスタが更に必要となる。ステップ1145では、こ
のクラスタについての全ブロック番号が0に設定され、
このことは、これらのブロックがホールであることを意
味する。ステップ1147では、これらのブロックが現
在ホールとしてマークされていることを反映するため、
マッピングテーブルが更新される。ステップ1147の
後、ループはステップ1141に続き、クラスタ番号
は、次のクラスタを表示するために1だけインクリメン
トされ、そして、操作が継続する。
【0072】以上説明したように、本発明はコンピュー
タシステム中に格納されるデータを改善する種々のプロ
セスステップを採用している。これらのステップは、物
理量の物理的処理を必要とする。そして、必ずしも必要
なことではないが、通常、これら物理量は、記憶、伝
送、結合、比較、及び他の処理が可能である、電気信号
又は磁気信号の形を採る。また、一般に使用されている
ことを主たる理由として、これらの信号は、便宜上、ビ
ット、値、要素、変数、文字、データ構造等と呼ばれる
ことがある。しかしながら、これらの用語、及び同様な
用語の全ては、適当な物理量と関連付けられ、また、単
にこれらの物理量に適用される都合の良いラベルでしか
ないことは理解されるべきである。
【0073】さらに、実行される処理は、しばしば、識
別、実行、あるいは比較といった用語で呼ばれる。上述
した操作は、どれも本発明の一部を成し、これらの操作
は機械操作である。
【0074】本発明の操作を実行するために有用な機械
には、一般的用途のディジタルコンピュータ、あるいは
他の同様な装置が含まれる。全ての場合において、コン
ピュータの操作方法と、演算の方法そのものとは、明確
に区別されるべきである。そして、本発明は、他の所望
の物理信号を生成するために、電気信号、又は他の物理
信号を処理するコンピュータの操作方法に関するもので
ある。
【0075】本発明はまた、これらの操作を実行する装
置に関連している。この装置は、特に特定用途のために
構成されたコンピュータであり、あるいは、コンピュー
タに記憶されているコンピュータプログラムによって選
択的に起動され、または再構成される一般用途のコンピ
ュータである。
【0076】上述の処理は、どのような特定のコンピュ
ータ、あるいは他の装置に対しても、本来的に関連付け
られるものではない。特に、一般的用途の個々の機械
は、ここにおける説明に従って書かれたプログラムと共
に使用されるであろうし、あるいは要求されるステップ
を実行するために、より専用化された装置を構成するこ
とは、より都合が良いであろう。これら多くの機械に要
求される構造は、記述されている。
【0077】さらに、本発明は、コンピュータを作動さ
せる種々のプログラム命令を含むコンピュータプログラ
ムの記録媒体に関連している。媒体、及びプログラム命
令は、本発明の目的のために特別に設計され、構成され
るものであっても良く、また、コンピュータソフトウェ
ア技術分野の当業者にとって良く知られ、利用可能なも
のであっても良い。
【0078】コンピュータプログラムの記録媒体の例と
しては、これらに限られるものではないが、ハードディ
スク、フロッピーディスク、磁気テープのような磁気媒
体、CD−ROMディスクのような光媒体、フロプティ
カルディスクのような光磁気媒体、及び、消去再書込み
可能リードオンリメモリ(EPROM)を含むリードオ
ンリメモリ(ROM)、及び動的ランダムアクセスメモ
リ(DRAM)、静的ランダムアクセスメモリ(SRA
M)、及びネットワークランダムアクセスメモリ(NR
AM)を含むランダムアクセスメモリ(RAM)のよう
なプログラム命令を記憶し、実行するために特別に構成
されたハードウェア装置がある。
【0079】プログラム命令には、例えば、コンパイラ
によって生成される機械コード及びインタプリタを使用
するコンピュータによって実行され得る高レベルコード
を含むファイル、の双方が含まれる。
【0080】図18は、本発明に従う一般的なコンピュ
ータベースシステムを表す。コンピュータシステム10
0は、リードオンリメモリ(ROM)104、及びラン
ダムアクセスメモリ(RAM)106を備える記憶装置
と接続されている中央処理装置(CPU)102を備え
ている。当業者によって良く知られているように、RO
M104は、データ、及び命令をCPU102に対して
単一方向に転送し、RAM106は、一般的にデータ及
び命令を双方向に転送する。
【0081】大容量記憶装置108もまた、双方向に転
送可能であるようにCPU102と接続されており、ま
た追加データ記憶容量を備える。大容量記憶装置108
は、プログラム、データ等を記憶するために用いられ、
また、磁気又は紙テープリーダ、あるいは、他の良く知
られている装置(例えば、CD−ROM)の形を採るこ
とができる。大容量記憶装置108内に残されている情
報は、適当な場合に、一般的な方法により仮想メモリの
形でRAM106の一部として組み込まれるであろうこ
とが理解される。
【0082】CPU102はまた、これらに限定される
ものではないが、ビデオモニタ、トラックボール、マウ
ス、キーボード、マイクロホン、接触感応ディスプレ
イ、トランスジューサカードリーダ、磁気又は紙テープ
リーダ、タブレット、音声又は手書き認識装置、当然の
ことながら他のコンピュータといった他の一般的な入力
装置を含む、1つ以上の入出力装置110と接続されて
いる。
【0083】さらに、CPU102は、コンピュータ、
あるいは112として概念的に示されているネットワー
ク接続回路を使用する通信ネットワークと光学的に接続
され得る。このようなネットワーク接続を備えることに
より、CPUは、上記方法のステップを実行することに
より、ネットワークから情報を受け取り、あるいは、ネ
ットワークに向けて情報を出力できることが予想され
る。上述の装置、及び機器は、コンピュータハードウェ
ア、及びソフトウェアの技術分野における当業者に馴染
みのあるものであろう。
【0084】以上、いくつかの発明の実施の形態に基づ
き詳細に説明したように、本発明に係る発明の実施の形
態の1つでは、ファイル中の異なるクラスタが異なる形
のホールを有し得る。この結果、所定のファイル内に異
なる圧縮アルゴリズムを適用することができる。また、
ファイルシステム内のファイルは、異なる形のホールを
使用して圧縮され得る。この結果、ファイルシステム内
でファイル毎に複数の圧縮アルゴリズムを使用すること
ができる。
【0085】また、本発明に係る種々の発明の実施の形
態では、ファイルシステムレベルの圧縮をサポートする
ために、ホールを備えるファイル概念が用いられる。し
たがって、圧縮及び展開ファイルの共存が可能であり、
この結果、存在する記憶装置中のデータを一度に変換す
る必要がなく、また、オンディスクファイル形式を変更
する必要がないという利点を有する。
【0086】以上、いくつかの発明の実施の形態に基づ
き本発明を説明したが、本発明の趣旨から逸脱しない範
囲で種々の変更改良が可能であることは理解されるべき
である。また、上記、発明の実施の形態、及び例示は、
本発明を説明するために用いられたものであり、いかな
る場合も本発明を限定的に解釈するために用いられるべ
きではない。
【0087】例えば、圧縮ファイルは、コンピュータに
関連するどの記憶媒体に対しても書き込まれ得る。ま
た、データはクラスタ単位で圧縮される必要はなく、フ
ァイル単位、あるいは、クラスタよりも小さな、ブロッ
ク等の構成単位で圧縮されても良い。さらに、マッピン
グテーブル中におけるホールの存在は、全物理ブロック
が割り当てられていないことを示す、どのような表記法
によっても表示され得る。有効な物理ブロックは、記憶
媒体上のメモリ部分を示すいくつかの方法におけるどの
ような番号によっても表され得る。更にまた、上記発明
の実施の形態では、ファイルシステムは、クラスタサイ
ズが各ファイルにおいて同一であるよう構成されてい
た。しかしながら、本発明は、異なるクラスタサイズを
利用するために異なるファイルサイズを許容するファイ
ルシステムと共に使用され得ることが理解されるべきで
ある。
【0088】なお、本発明は、特許請求の範囲に記載さ
れた請求項の他に、以下のようにデータアレイ間におけ
るキャッシュ競合の識別、及び解決のためのプログラム
を記録した媒体としても記載され得る。
【0089】(1)請求項23に記載のコンピュータフ
ァイルシステム中におけるデータを圧縮し、また展開す
るためのプログラムを記録した媒体において、前記ホー
ル識別子は、データセグメントを圧縮するために使用さ
れた圧縮アルゴリズムを識別するコンピュータファイル
システム中におけるデータを圧縮し、また展開するため
のプログラムを記録した媒体。
【0090】(2)請求項23に記載のコンピュータフ
ァイルシステム中におけるデータを圧縮し、また展開す
るためのプログラムを記録した媒体において、前記デー
タセグメントは、複数のクラスタを含み、前記ファイル
システムは、クラスタを処理するために配置され、各ク
ラスタは複数の論理メモリブロックに対応し、前記圧縮
ステップ、及び書込みステップは、クラスタ毎に実行さ
れるコンピュータファイルシステム中におけるデータを
圧縮し、また展開するためのプログラムを記録した媒
体。
【0091】(3)前記(2)に記載のコンピュータフ
ァイルシステム中におけるデータを圧縮し、また展開す
るためのプログラムを記録した媒体において、複数のホ
ール識別子が利用可能であり、特定クラスタに関連して
そのクラスタ内のデータを圧縮するために使用された圧
縮アルゴリズムを識別するコンピュータファイルシステ
ム中におけるデータを圧縮し、また展開するためのプロ
グラムを記録した媒体。
【0092】(4)前記(3)に記載のコンピュータフ
ァイルシステム中におけるデータを圧縮し、また展開す
るためのプログラムを記録した媒体において、前記デー
タセグメント内の異なるクラスタを圧縮するために、異
なる圧縮アルゴリズムが使用されるコンピュータファイ
ルシステム中におけるデータを圧縮し、また展開するた
めのプログラムを記録した媒体。
【0093】(5)請求項23に記載のコンピュータフ
ァイルシステム中におけるデータを圧縮し、また展開す
るためのプログラムを伝送するための方法であって、前
記プログラムをコンピュータが使用し得る媒体上に格納
するステップと、前記プログラムを伝送するための要求
を受け取るステップと、ネットワークを介して前記プロ
グラムを遠隔地に伝送するステップとを備えるプログラ
ムの伝送方法。
【0094】
【発明の効果】以上説明したように、本発明に係るデー
タ格納方法及びデータ格納装置によれば、現存データの
変換を必要とすることなく、現存ファイルシステムに対
してファイルシステムレベルの圧縮を実施することがで
きる。また、圧縮を段階的に実施さすることができ、そ
の結果、圧縮ファイル、及び展開ファイルを共存させる
ことができる。さらに、ファイルシステムにおいて、複
数の圧縮アルゴリズムを使用することができる。
【図面の簡単な説明】
【図1】 一般的なファイルシステム構造を模式的に示
す説明図である。
【図2】 メモリ内、またはディスク上における物理ブ
ロックに対する、ファイル内の論理ブロックのマッピン
グを模式的に示す説明図である。
【図3】 本発明に係る発明の実施の形態の1つにおけ
る論理ブロックについてのマッピングテーブルである。
【図4】 圧縮されるファイル内における論理ブロック
のクラスタを示す説明図である。
【図5】 図4の圧縮ファイルについてのマッピングテ
ーブルの例示である。
【図6】 本発明に係る発明の実施の形態の1つにて実
行される書込み操作を示すフローチャートである。
【図7】 図6に示す書込み操作にて使用される書込み
サイズを計算するためのフローチャートである。
【図8】 図6に示す書込み操作にて使用される書込み
クラスタ操作を示すフローチャートである。
【図9】 図6に示す書込み操作にて使用される計算、
及び設定ファイルサイズ操作を示すフローチャートであ
る。
【図10】 図8に示す書込みクラスタ操作にて使用さ
れる圧縮、及び書込みクラスタ操作を示すフローチャー
トである。
【図11】 本発明に係る発明の実施の形態の1つにて
実行される読出し操作を示すフローチャートである。
【図12】 図11に示す読出し操作にて使用される読
出しサイズを計算するためのフローチャートである。
【図13】 図11に示す書込み操作にて使用される読
出しクラスタ操作を示すフローチャートである。
【図14】 読出し及び書込み操作の双方にて使用され
得る、本発明に係る発明の実施の形態の1つにて実行さ
れる読出し、及び展開操作を示すフローチャートであ
る。
【図15】 本発明に係る発明の実施の形態の1つにて
実行される設定ファイルサイズ操作を示すフローチャー
トである。
【図16】 図15に示す設定ファイルサイズ操作にて
使用される切捨てファイル操作を示すフローチャートで
ある。
【図17】 図15に示す設定ファイルサイズ操作にて
使用される延伸ファイル操作を示すフローチャートであ
る。
【図18】 本発明を実行するために好適な、一般的な
コンピュータシステムを示す概略構成図である。
【符号の説明】
200…ファイルシステム、201…ディレクトリ構
造、203…ファイルネーム、205…ファイル番号、
301…ファイルテーブル、303…ファイル属性、3
04…マッピングテーブルポインタ、305…マッピン
グテーブル、306…論理ブロック番号、307…サイ
ズ、308…物理ブロック番号、309…ブロック、4
01…論理ファイル、402,404,406,408
…論理ブロック、420…ハードディスク、422,4
24,426,428,430,432…物理ブロッ
ク、502,506,510,514…論理ブロック、
504,508,512,516…物理ブロック、61
0…論理ブロック、630…第1クラスタ、634…第
2クラスタ、640…圧縮クラスタ。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 トーマス ケー. ワン アメリカ合衆国, カリフォルニア州, プレザントン, マタロ コート 1118 (72)発明者 マイケル エヌ. ネルソン アメリカ合衆国, カリフォルニア州, サン カルロス, ヒルクレスト ロード 158

Claims (23)

    【特許請求の範囲】
  1. 【請求項1】 論理メモリブロックを物理メモリブロッ
    クにマップするために配置されるマッピングテーブルを
    有するファイルシステムにおけるデータ格納方法であっ
    て、 前記物理メモリブロックに書き込まれる、選択論理メモ
    リブロックと関連するデータセグメントを要求するステ
    ップと、 圧縮データが前記データセグメントよりも少ないメモリ
    ブロックを占めるよう前記データセグメントを圧縮デー
    タ内に圧縮するステップと、 前記圧縮データを1つ以上の前記物理メモリブロックに
    対して書き込むステップと、 前記圧縮データに関連する各物理メモリブロックが、マ
    ッピングテーブルによって前記選択論理メモリブロック
    の1つに対応するエントリにマップされるように、ま
    た、どの物理メモリブロックとも関連しない各選択論理
    メモリブロックがどの物理メモリブロックにも対応しな
    いホール識別子にマップされるように前記マッピングテ
    ーブルを更新するステップとを備えるデータ格納方法。
  2. 【請求項2】 前記ホール識別子は、データセグメント
    を圧縮するために使用された圧縮アルゴリズムを識別す
    る、請求項1に記載のデータ格納方法。
  3. 【請求項3】 前記データセグメントは、複数のクラス
    タを含み、前記ファイルシステムは、クラスタを処理す
    るために配置され、各クラスタは複数の論理メモリブロ
    ックに対応し、 前記圧縮ステップおよび前記書込みステップは、クラス
    タ毎に実行される、 請求項1または請求項2に記載のデータ格納方法。
  4. 【請求項4】 複数のホール識別子が利用可能であり、 特定クラスタに関連してそのクラスタ内のデータを圧縮
    するために使用された圧縮アルゴリズムを識別する、 請求項3に記載のデータ格納方法。
  5. 【請求項5】 前記データセグメント内の異なるクラス
    タを圧縮するために、異なる圧縮アルゴリズムが使用さ
    れる、請求項4に記載のデータ格納方法。
  6. 【請求項6】 論理メモリブロックを物理メモリブロッ
    クにマップするために配置されるマッピングテーブルを
    有するとともに、複数の前記論理メモリブロックに対応
    する各クラスタを処理するために配置されるファイルシ
    ステムにおけるデータ格納方法であって、 (A)前記物理メモリブロックに書き込まれる、複数の
    クラスタに及ぶ選択論理メモリブロックと関連するデー
    タセグメントを要求するステップと、 (B)前記データセグメントが前記複数のクラスタの第
    1クラスタ内の中間位置にて開始するか否かを決定する
    ステップと、 (C)前記開始位置決定ステップが、前記データセグメ
    ントは中間位置にて開始すると決定した場合には、現在
    のクラスタにおける前記第1クラスタを利用し、(a)
    展開形式で前記読出しバッファ内に格納されている前記
    現在クラスタに関連するデータを前記物理メモリブロッ
    クから読出しバッファ内に読み出しするサブステップ
    と、(b)前記読出しステップが終了した後、前記現在
    クラスタに関連する前記データセグメントと一部を前記
    読出しバッファ内にコピーするサブステップと、(c)
    前記コピーステップが終了した後、前記読出しバッファ
    内に格納されているデータを圧縮するサブステップと、
    (d)前記圧縮データを前記物理メモリブロックに書き
    込むサブステップと、(e)前記圧縮データに関連する
    各物理メモリブロックが、マッピングテーブルによって
    前記現在クラスタに関連する前記選択論理メモリブロッ
    クの1つに対応するエントリにマップされるように、ま
    た、前記現在クラスタに関連するどの物理メモリブロッ
    クとも関連しない各選択論理メモリブロックが、どの物
    理メモリブロックにも対応しないホール識別子にマップ
    されるように前記マッピングテーブルを更新するサブス
    テップとを有する部分クラスタ書込み操作を実行するス
    テップとを備えるデータ格納方法。
  7. 【請求項7】 前記現在クラスタが圧縮形式で格納され
    ているか否かを決定し、前記現在クラスタが圧縮形式で
    格納されていると決定された場合には、前記現在クラス
    タデータを前記読出しバッファ内の記憶領域に展開する
    ステップを更に備える、請求項6に記載のデータ格納方
    法。
  8. 【請求項8】 前記ホール識別子は、現在クラスタに関
    連するデータを圧縮するために使用された圧縮アルゴリ
    ズムを識別する、請求項6または請求項7に記載のデー
    タ格納方法。
  9. 【請求項9】 複数のホール識別子が利用可能であり、 特定クラスタに関連してそのクラスタ内のデータを圧縮
    するために使用された圧縮アルゴリズムを識別する、 請求項7または請求項8に記載のデータ格納方法。
  10. 【請求項10】 前記データセグメント内の異なるクラ
    スタを圧縮するために、異なる圧縮アルゴリズムが使用
    される、請求項6から請求項9のいずれかに記載のデー
    タ格納方法。
  11. 【請求項11】 前記データセグメントが前記複数のク
    ラスタの第2クラスタ内の中間位置にて終了するか否か
    を決定するステップと、 前記終了位置決定ステップが、前記データセグメントは
    中間位置にて終了すると決定した場合には、現在のクラ
    スタにおける前記第2クラスタを利用して、部分クラス
    タ書込み操作を実行するステップとを更に備える請求項
    6から請求項10のいずれかに記載のデータ格納方法。
  12. 【請求項12】 前記複数クラスタの1つのクラスタ
    が、書込まれるデータセグメントが前記クラスタ内の中
    間位置にて開始せず、また終了もしない全クラスタであ
    るか否かを決定するステップと、 前記全クラスタ決定ステップが前記複数クラスタの1つ
    のクラスタは全クラスタであると決定した場合に、 前記全クラスタに関連するデータを圧縮するステップ
    と、 前記圧縮データを前記物理メモリブロックに書き込みす
    るステップと、 前記圧縮データに関連する各物理メモリブロックが、前
    記全クラスタに関連する関連論理メモリブロックにマッ
    プされるように、また、前記全クラスタと関連するどの
    物理メモリブロックとも関連しない各選択論理メモリブ
    ロックが、前記圧縮データに関連するどの物理メモリブ
    ロックにも対応しないホール識別子にマップされるよう
    に前記マッピングテーブルを更新するステップとを更に
    備える、請求項6から請求項11のいずれかに記載のデ
    ータ格納方法。
  13. 【請求項13】 論理メモリブロックを物理メモリブロ
    ックにマップするために配置されるマッピングテーブル
    を有するファイルシステムにおけるデータ格納方法であ
    って、 前記物理メモリブロックに書き込まれる、選択論理メモ
    リブロックと関連するデータセグメントを要求するステ
    ップと、 前記マッピングテーブルを参照して、いずれかの選択論
    理メモリブロックが、前記物理メモリブロック内にセグ
    メントデータが圧縮形式で格納されていることを示すホ
    ール識別子に対してマップされているか否かを決定する
    ステップと、 前記マップ決定ステップが、データセグメントが圧縮形
    式で格納されていると決定した場合に、 前記セグメントデータの前記選択論理メモリブロックに
    関連する全物理メモリブロックを、前記物理メモリブロ
    ックから圧縮バッファに読出しするステップと、 前記データセグメントが前記圧縮バッファ内に展開形式
    で格納されるように前記圧縮バッファ内に格納される前
    記物理メモリブロックを展開するステップとを備えるデ
    ータ格納方法。
  14. 【請求項14】 前記ホール識別子は、前記セグメント
    データを圧縮するために使用された圧縮アルゴリズムを
    識別する、請求項13に記載のデータ格納方法。
  15. 【請求項15】 前記データセグメントは、複数のクラ
    スタを含み、 前記ファイルシステムは、複数の前記論理メモリブロッ
    クに対応する各クラスタを処理するために配置され、 前記読出しステップ、及び展開ステップは、クラスタ毎
    に実行される、 請求項13または請求項14に記載のデータ格納方法。
  16. 【請求項16】 複数のホール識別子が利用可能であ
    り、 特定クラスタに対応するマッピングテーブル内の論理メ
    モリブロックは、前記特定クラスタ内の圧縮データに対
    して使用された前記圧縮アルゴリズムを示す、1つ以上
    のホール識別子に対してマップされる、 請求項15に記載のデータ格納方法。
  17. 【請求項17】 前記データセグメント内の異なるクラ
    スタを圧縮するために、異なる圧縮アルゴリズムが使用
    される、請求項15または請求項16に記載のデータ格
    納方法。
  18. 【請求項18】 前記マップ決定ステップが、データセ
    グメントは圧縮形式で格納されていないと決定した場合
    に、 前記データセグメントが読出しバッファ内に展開形式で
    格納されるように、前記セグメントデータの前記選択論
    理メモリブロックに関連する全物理メモリブロックを、
    前記物理メモリブロックから前記読出しバッファに読出
    しするステップを更に備える、 請求項13から請求項17のいずれかに記載のデータ格
    納方法。
  19. 【請求項19】 ファイルシステム内における、選択論
    理メモリブロックに関連するデータセグメントの圧縮、
    及び展開に使用するためのコンピュータ装置であって、 中央処理装置と、 前記中央処理装置と通信するランダムアクセスメモリ
    と、 前記中央処理装置と通信する大容量記憶装置と、 前記データセグメントの前記選択論理メモリブロックを
    前記大容量記憶装置の関連する物理メモリブロックにマ
    ップするために配置されるマッピングテーブルであっ
    て、前記データセグメントが前記大容量記憶装置上に圧
    縮形式で格納されているときは、前記圧縮データセグメ
    ントは、前記展開データセグメントよりも少ない物理メ
    モリブロックを占有し、また、前記圧縮データに関連す
    る各物理メモリブロックが、マッピングテーブルによっ
    て前記選択論理メモリブロックの1つに対応するエント
    リにマップさせるとともに、どの物理メモリブロックと
    も関連しない各選択論理メモリブロックがどの物理メモ
    リブロックにも対応しないホール識別子にマップさせる
    マッピングテーブルとを備えるコンピュータ装置。
  20. 【請求項20】 前記ホール識別子は、前記セグメント
    データを圧縮するために使用された圧縮アルゴリズムを
    識別する、請求項19に記載のコンピュータ装置。
  21. 【請求項21】 前記データセグメントは、各々が前記
    複数の論理メモリブロックに対応する複数のクラスタを
    含み、 複数のホール識別子が利用可能であり、 複数のクラスタに関連して選択される前記ホール識別子
    は、そのクラスタ内のデータを圧縮するために使用され
    た前記圧縮アルゴリズムを識別する、 請求項19に記載のコンピュータ装置。
  22. 【請求項22】 前記データセグメント内の異なるクラ
    スタを圧縮するために、異なる圧縮アルゴリズムが使用
    される、請求項21に記載のコンピュータ装置。
  23. 【請求項23】 論理メモリブロックを物理メモリブロ
    ックに対してマップするためのマッピングテーブルを有
    するコンピュータファイルシステム中におけるデータを
    圧縮し、また展開するためのプログラムを記録した媒体
    であって、このプログラムは、 前記物理メモリブロックに書き込まれる、選択論理メモ
    リブロックと関連するデータセグメントを要求するステ
    ップと、 圧縮データが前記データセグメントよりも少ないメモリ
    ブロックを占めるよう前記データセグメントを圧縮デー
    タ内に圧縮するステップと、 前記圧縮データを1つ以上の前記物理メモリブロックに
    対して書き込むステップと、 前記圧縮データに関連する各物理メモリブロックが、マ
    ッピングテーブルによって前記選択論理メモリブロック
    の1つに対応するエントリにマップされるように、ま
    た、どの物理メモリブロックとも関連しない各選択論理
    メモリブロックがどの物理メモリブロックにも対応しな
    いホール識別子にマップされるように前記マッピングテ
    ーブルを更新するステップとを備えるコンピュータファ
    イルシステム中におけるデータを圧縮し、また展開する
    ためのプログラムを記録した媒体。
JP9075728A 1996-03-27 1997-03-27 ホールを利用するファイルシステムレベルでのデータ格納方法及びデータ格納装置 Pending JPH1069408A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/623907 1996-03-27
US08/623,907 US5774715A (en) 1996-03-27 1996-03-27 File system level compression using holes

Publications (1)

Publication Number Publication Date
JPH1069408A true JPH1069408A (ja) 1998-03-10

Family

ID=24499865

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9075728A Pending JPH1069408A (ja) 1996-03-27 1997-03-27 ホールを利用するファイルシステムレベルでのデータ格納方法及びデータ格納装置

Country Status (4)

Country Link
US (1) US5774715A (ja)
EP (1) EP0798656B1 (ja)
JP (1) JPH1069408A (ja)
DE (1) DE69718543T2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002140168A (ja) * 2000-10-31 2002-05-17 Sony Corp データ変換装置、記憶装置、プロトコル変換装置、デバイス制御装置、記録再生システム、記録再生方法、及び記憶容量の管理方法
US6944742B1 (en) * 2000-04-28 2005-09-13 Microsoft Corporation Compressed file system for non-volatile RAM
KR100753230B1 (ko) * 1999-03-05 2007-08-30 가부시키가이샤 에바라 세이사꾸쇼 폴리싱장치
JP2009230239A (ja) * 2008-03-19 2009-10-08 Hitachi Ltd テープ装置のデータ移行方法およびテープ管理システム

Families Citing this family (125)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5832525A (en) * 1996-06-24 1998-11-03 Sun Microsystems, Inc. Disk fragmentation reduction using file allocation tables
US8079086B1 (en) 1997-11-06 2011-12-13 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US7058822B2 (en) * 2000-03-30 2006-06-06 Finjan Software, Ltd. Malicious mobile code runtime monitoring system and methods
US6353834B1 (en) * 1996-11-14 2002-03-05 Mitsubishi Electric Research Laboratories, Inc. Log based data architecture for a transactional message queuing system
US5960446A (en) * 1997-07-11 1999-09-28 International Business Machines Corporation Parallel file system and method with allocation map
US5953729A (en) * 1997-12-23 1999-09-14 Microsoft Corporation Using sparse file technology to stage data that will then be stored in remote storage
US6219677B1 (en) * 1998-05-01 2001-04-17 Emware, Inc. Split file system
US6542909B1 (en) * 1998-06-30 2003-04-01 Emc Corporation System for determining mapping of logical objects in a computer system
US6883063B2 (en) 1998-06-30 2005-04-19 Emc Corporation Method and apparatus for initializing logical objects in a data storage system
US6329985B1 (en) * 1998-06-30 2001-12-11 Emc Corporation Method and apparatus for graphically displaying mapping of a logical object
US6282602B1 (en) 1998-06-30 2001-08-28 Emc Corporation Method and apparatus for manipulating logical objects in a data storage system
US7383294B1 (en) 1998-06-30 2008-06-03 Emc Corporation System for determining the mapping of logical objects in a data storage system
US6393540B1 (en) 1998-06-30 2002-05-21 Emc Corporation Moving a logical object from a set of source locations to a set of destination locations using a single command
US6624761B2 (en) 1998-12-11 2003-09-23 Realtime Data, Llc Content independent data compression method and system
US6604158B1 (en) 1999-03-11 2003-08-05 Realtime Data, Llc System and methods for accelerated data storage and retrieval
US6601104B1 (en) 1999-03-11 2003-07-29 Realtime Data Llc System and methods for accelerated data storage and retrieval
US6654772B1 (en) * 1999-04-28 2003-11-25 Emc Corporation Multi-volume extent based file system
US20010047473A1 (en) 2000-02-03 2001-11-29 Realtime Data, Llc Systems and methods for computer initialization
US6829678B1 (en) * 2000-07-18 2004-12-07 International Business Machines Corporation System for determining the order and frequency in which space is allocated on individual storage devices
US7417568B2 (en) 2000-10-03 2008-08-26 Realtime Data Llc System and method for data feed acceleration and encryption
US8692695B2 (en) 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
US9143546B2 (en) 2000-10-03 2015-09-22 Realtime Data Llc System and method for data feed acceleration and encryption
US7409685B2 (en) 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
US8479189B2 (en) 2000-11-17 2013-07-02 Hewlett-Packard Development Company, L.P. Pattern detection preprocessor in an electronic device update generation system
US7386046B2 (en) 2001-02-13 2008-06-10 Realtime Data Llc Bandwidth sensitive data compression and decompression
US6697795B2 (en) * 2001-06-04 2004-02-24 Hewlett-Packard Development Company, L.P. Virtual file system for dynamically-generated web pages
TW595012B (en) * 2001-09-03 2004-06-21 Matsushita Electric Ind Co Ltd Semiconductor light-emitting device, light-emitting apparatus and manufacturing method of semiconductor light-emitting device
US7454529B2 (en) * 2002-08-02 2008-11-18 Netapp, Inc. Protectable data storage system and a method of protecting and/or managing a data storage system
US7437387B2 (en) * 2002-08-30 2008-10-14 Netapp, Inc. Method and system for providing a file system overlay
US7882081B2 (en) * 2002-08-30 2011-02-01 Netapp, Inc. Optimized disk repository for the storage and retrieval of mostly sequential data
US6965897B1 (en) * 2002-10-25 2005-11-15 At&T Corp. Data compression method and apparatus
US8024172B2 (en) * 2002-12-09 2011-09-20 Netapp, Inc. Method and system for emulating tape libraries
US7567993B2 (en) * 2002-12-09 2009-07-28 Netapp, Inc. Method and system for creating and using removable disk based copies of backup data
US6973369B2 (en) * 2003-03-12 2005-12-06 Alacritus, Inc. System and method for virtual vaulting
US7072917B2 (en) * 2003-04-24 2006-07-04 Neopath Networks, Inc. Extended storage capacity for a network file server
US7346664B2 (en) * 2003-04-24 2008-03-18 Neopath Networks, Inc. Transparent file migration using namespace replication
US7587422B2 (en) * 2003-04-24 2009-09-08 Neopath Networks, Inc. Transparent file replication using namespace replication
WO2004097624A1 (en) 2003-04-24 2004-11-11 Neopath Networks, Inc. Large file support for a network file server
US7437492B2 (en) * 2003-05-14 2008-10-14 Netapp, Inc Method and system for data compression and compression estimation in a virtual tape library environment
US7533108B1 (en) * 2003-09-12 2009-05-12 Netapp, Inc. Proximity based lossless compression of client information in a network device
US8539081B2 (en) * 2003-09-15 2013-09-17 Neopath Networks, Inc. Enabling proxy services using referral mechanisms
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US9614772B1 (en) 2003-10-20 2017-04-04 F5 Networks, Inc. System and method for directing network traffic in tunneling applications
US7200603B1 (en) 2004-01-08 2007-04-03 Network Appliance, Inc. In a data storage server, for each subsets which does not contain compressed data after the compression, a predetermined value is stored in the corresponding entry of the corresponding compression group to indicate that corresponding data is compressed
US7325159B2 (en) * 2004-02-04 2008-01-29 Network Appliance, Inc. Method and system for data recovery in a continuous data protection system
US7559088B2 (en) * 2004-02-04 2009-07-07 Netapp, Inc. Method and apparatus for deleting data upon expiration
US7720817B2 (en) * 2004-02-04 2010-05-18 Netapp, Inc. Method and system for browsing objects on a protected volume in a continuous data protection system
US7490103B2 (en) * 2004-02-04 2009-02-10 Netapp, Inc. Method and system for backing up data
US7783606B2 (en) * 2004-02-04 2010-08-24 Netapp, Inc. Method and system for remote data recovery
US20050182910A1 (en) * 2004-02-04 2005-08-18 Alacritus, Inc. Method and system for adding redundancy to a continuous data protection system
US7426617B2 (en) 2004-02-04 2008-09-16 Network Appliance, Inc. Method and system for synchronizing volumes in a continuous data protection system
US7315965B2 (en) 2004-02-04 2008-01-01 Network Appliance, Inc. Method and system for storing data using a continuous data protection system
US7904679B2 (en) * 2004-02-04 2011-03-08 Netapp, Inc. Method and apparatus for managing backup data
US7406488B2 (en) * 2004-02-04 2008-07-29 Netapp Method and system for maintaining data in a continuous data protection system
US7155445B1 (en) * 2004-02-05 2006-12-26 Cingular Wireless Ii, Llc System and method for self-recovering real-time data-feed compression and archiving
US20050219076A1 (en) * 2004-03-22 2005-10-06 Michael Harris Information management system
US7904895B1 (en) 2004-04-21 2011-03-08 Hewlett-Packard Develpment Company, L.P. Firmware update in electronic devices employing update agent in a flash memory card
US7720796B2 (en) * 2004-04-23 2010-05-18 Neopath Networks, Inc. Directory and file mirroring for migration, snapshot, and replication
US8195627B2 (en) * 2004-04-23 2012-06-05 Neopath Networks, Inc. Storage policy monitoring for a storage network
US8190741B2 (en) * 2004-04-23 2012-05-29 Neopath Networks, Inc. Customizing a namespace in a decentralized storage environment
US20060190643A1 (en) * 2004-04-26 2006-08-24 Storewiz, Inc. Method and system for compression of data for block mode access storage
CA2564844C (en) * 2004-04-26 2014-12-09 Storewiz, Inc. Method and system for compression of files for storage and operation on compressed files
US20060230014A1 (en) * 2004-04-26 2006-10-12 Storewiz Inc. Method and system for compression of files for storage and operation on compressed files
US7424482B2 (en) * 2004-04-26 2008-09-09 Storwize Inc. Method and system for compression of data for block mode access storage
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US8028135B1 (en) 2004-09-01 2011-09-27 Netapp, Inc. Method and apparatus for maintaining compliant storage
US8024483B1 (en) 2004-10-01 2011-09-20 F5 Networks, Inc. Selective compression for network connections
US7581118B2 (en) * 2004-12-14 2009-08-25 Netapp, Inc. Disk sanitization using encryption
US7558839B1 (en) 2004-12-14 2009-07-07 Netapp, Inc. Read-after-write verification for improved write-once-read-many data storage
US7526620B1 (en) 2004-12-14 2009-04-28 Netapp, Inc. Disk sanitization in an active file system
US7774610B2 (en) * 2004-12-14 2010-08-10 Netapp, Inc. Method and apparatus for verifiably migrating WORM data
WO2006094365A1 (en) * 2005-03-11 2006-09-14 Rocksoft Limited Method for storing data with reduced redundancy using data clusters
US7467282B2 (en) * 2005-04-05 2008-12-16 Network Appliance, Inc. Migrating a traditional volume to a virtual volume in a storage system
US7512862B1 (en) 2005-04-13 2009-03-31 Network Appliance, Inc. Compression of data for protection
US8327050B2 (en) * 2005-04-21 2012-12-04 International Business Machines Corporation Systems and methods for compressing files for storage and operation on compressed files
WO2007002855A2 (en) * 2005-06-29 2007-01-04 Neopath Networks, Inc. Parallel filesystem traversal for transparent mirroring of directories and files
US8959125B2 (en) * 2005-07-01 2015-02-17 226008 Ontario Inc. File system having inverted hierarchical structure
US7809777B2 (en) * 2005-07-01 2010-10-05 Qnx Software Systems Gmbh & Co. Kg File system having deferred verification of data integrity
US7873683B2 (en) * 2005-07-01 2011-01-18 Qnx Software Systems Gmbh & Co. Kg File system having transaction record coalescing
US7970803B2 (en) 2005-07-01 2011-06-28 Qnx Software Systems Gmbh & Co. Kg Optimized startup verification of file system integrity
US7783781B1 (en) 2005-08-05 2010-08-24 F5 Networks, Inc. Adaptive compression
US8533308B1 (en) 2005-08-12 2013-09-10 F5 Networks, Inc. Network traffic management through protocol-configurable transaction processing
US8131689B2 (en) * 2005-09-30 2012-03-06 Panagiotis Tsirigotis Accumulating access frequency and file attributes for supporting policy based storage management
US7401198B2 (en) * 2005-10-06 2008-07-15 Netapp Maximizing storage system throughput by measuring system performance metrics
CN101346883A (zh) * 2005-10-26 2009-01-14 斯多维兹有限公司 用于块模式访问存储的数据压缩的方法和系统
US7464237B2 (en) * 2005-10-27 2008-12-09 International Business Machines Corporation System and method for implementing a fast file synchronization in a data processing system
CN101312794B (zh) * 2005-11-23 2012-07-04 Fsi国际公司 从基材上除去材料的方法
US8275909B1 (en) 2005-12-07 2012-09-25 F5 Networks, Inc. Adaptive compression
US7882084B1 (en) 2005-12-30 2011-02-01 F5 Networks, Inc. Compression of data transmitted over a network
US7976410B2 (en) * 2006-01-04 2011-07-12 Bridgestone Sports Co., Ltd. Golf ball
US7752401B2 (en) 2006-01-25 2010-07-06 Netapp, Inc. Method and apparatus to automatically commit files to WORM status
US7873065B1 (en) 2006-02-01 2011-01-18 F5 Networks, Inc. Selectively enabling network packet concatenation based on metrics
US8565088B1 (en) 2006-02-01 2013-10-22 F5 Networks, Inc. Selectively enabling packet concatenation based on a transaction boundary
US7930508B2 (en) * 2006-03-07 2011-04-19 Apple Inc. File systems for data processing systems
WO2007117514A1 (en) * 2006-03-31 2007-10-18 Hewlett-Packard Company Mobile device capable of multiple updates
US7650533B1 (en) 2006-04-20 2010-01-19 Netapp, Inc. Method and system for performing a restoration in a continuous data protection system
US8769311B2 (en) 2006-05-31 2014-07-01 International Business Machines Corporation Systems and methods for transformation of logical data objects for storage
US9176975B2 (en) 2006-05-31 2015-11-03 International Business Machines Corporation Method and system for transformation of logical data objects for storage
WO2007146710A2 (en) 2006-06-08 2007-12-21 Hewlett-Packard Development Company, L.P. Device management in a network
WO2008014454A2 (en) 2006-07-27 2008-01-31 Hewlett-Packard Development Company, L.P. User experience and dependency management in a mobile device
US8566503B2 (en) * 2006-08-25 2013-10-22 Qnx Software Systems Limited Multimedia filesystem having unified representation of content on diverse multimedia devices
US7599972B2 (en) * 2006-08-25 2009-10-06 Qnx Software Systems Gmbh & Co. Kg File system having variable logical storage block size
US7908276B2 (en) * 2006-08-25 2011-03-15 Qnx Software Systems Gmbh & Co. Kg Filesystem having a filename cache
US20080059510A1 (en) * 2006-08-31 2008-03-06 Daniel Cardamore Multimedia system framework having layer consolidating access to multiple media devices
US9356824B1 (en) 2006-09-29 2016-05-31 F5 Networks, Inc. Transparently cached network resources
US8417833B1 (en) 2006-11-29 2013-04-09 F5 Networks, Inc. Metacodec for optimizing network data compression based on comparison of write and read rates
US20080147747A1 (en) * 2006-12-14 2008-06-19 Dan Cardamore Media system having synchronization with preemptive prioritization of synchronization order
US9106606B1 (en) 2007-02-05 2015-08-11 F5 Networks, Inc. Method, intermediate device and computer program code for maintaining persistency
US8156241B1 (en) 2007-05-17 2012-04-10 Netapp, Inc. System and method for compressing data transferred over a network for storage purposes
US7987162B2 (en) 2009-03-06 2011-07-26 Bluearc Uk Limited Data compression in a file storage system
US9223793B1 (en) * 2009-06-03 2015-12-29 American Megatrends, Inc. De-duplication of files for continuous data protection with remote storage
FR2947926A1 (fr) * 2009-07-07 2011-01-14 Neowave Procede de compaction du contenu d'un cd-rom sur une memoire de faible capacite
CN106445608A (zh) * 2010-01-27 2017-02-22 中兴通讯股份有限公司 一种软件安装包的安装方法及安装装置
US8572315B2 (en) 2010-11-05 2013-10-29 International Business Machines Corporation Smart optimization of tracks for cloud computing
US20120089774A1 (en) 2010-10-12 2012-04-12 International Business Machines Corporation Method and system for mitigating adjacent track erasure in hard disk drives
JP5687639B2 (ja) * 2012-02-08 2015-03-18 株式会社東芝 コントローラ、データ記憶装置及びプログラム
US9558198B2 (en) * 2012-03-28 2017-01-31 Google Inc. File map compression using run length encoding for active blocks
CN104380286A (zh) * 2012-05-31 2015-02-25 富士通株式会社 索引生成程序以及检索程序
US9767029B2 (en) * 2014-04-23 2017-09-19 International Business Machines Corporation Data decompression using a construction area
US9940213B2 (en) 2015-06-10 2018-04-10 International Business Machines Corporation Integrating external services with a clustered file system
US10742731B2 (en) 2015-06-10 2020-08-11 International Business Machines Corporation Maintaining service configuration consistency across nodes of a clustered file system
US9946462B1 (en) * 2016-02-15 2018-04-17 Seagate Technology Llc Address mapping table compression
US10216415B2 (en) 2016-05-18 2019-02-26 Intel Corporation Computer program product, system, and method for dynamically increasing the capacity of a storage device
KR20180041898A (ko) * 2016-10-17 2018-04-25 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10740015B2 (en) 2017-04-06 2020-08-11 Apple Inc. Optimized management of file system metadata within solid state storage devices (SSDs)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9001312D0 (en) * 1990-01-19 1990-03-21 Hewlett Packard Ltd Storage of compressed data
US5237675A (en) * 1990-06-04 1993-08-17 Maxtor Corporation Apparatus and method for efficient organization of compressed data on a hard disk utilizing an estimated compression factor
US5481701A (en) * 1991-09-13 1996-01-02 Salient Software, Inc. Method and apparatus for performing direct read of compressed data file
US5155484A (en) * 1991-09-13 1992-10-13 Salient Software, Inc. Fast data compressor with direct lookup table indexing into history buffer
US5305295A (en) * 1992-06-29 1994-04-19 Apple Computer, Inc. Efficient method and apparatus for access and storage of compressed data
US5394534A (en) * 1992-09-11 1995-02-28 International Business Machines Corporation Data compression/decompression and storage of compressed and uncompressed data on a same removable data storage medium
US5551020A (en) * 1994-03-28 1996-08-27 Flextech Systems, Inc. System for the compacting and logical linking of data blocks in files to optimize available physical storage
JP3426385B2 (ja) * 1995-03-09 2003-07-14 富士通株式会社 ディスク制御装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100753230B1 (ko) * 1999-03-05 2007-08-30 가부시키가이샤 에바라 세이사꾸쇼 폴리싱장치
US6944742B1 (en) * 2000-04-28 2005-09-13 Microsoft Corporation Compressed file system for non-volatile RAM
US6996696B2 (en) 2000-04-28 2006-02-07 Microsoft Corporation Compressed file system for non-volatile RAM
US7356662B2 (en) 2000-04-28 2008-04-08 Microsoft Corporation Compressed file system for non-volatile RAM
JP2002140168A (ja) * 2000-10-31 2002-05-17 Sony Corp データ変換装置、記憶装置、プロトコル変換装置、デバイス制御装置、記録再生システム、記録再生方法、及び記憶容量の管理方法
JP2009230239A (ja) * 2008-03-19 2009-10-08 Hitachi Ltd テープ装置のデータ移行方法およびテープ管理システム

Also Published As

Publication number Publication date
EP0798656A2 (en) 1997-10-01
US5774715A (en) 1998-06-30
EP0798656B1 (en) 2003-01-22
DE69718543D1 (de) 2003-02-27
DE69718543T2 (de) 2003-10-02
EP0798656A3 (en) 1999-08-18

Similar Documents

Publication Publication Date Title
JPH1069408A (ja) ホールを利用するファイルシステムレベルでのデータ格納方法及びデータ格納装置
US5819298A (en) File allocation tables with holes
US5890169A (en) Disk fragmentation reduction using file allocation tables
US5715455A (en) Apparatus and method for storing file allocation table efficiently in memory
US5732265A (en) Storage optimizing encoder and method
US7496586B1 (en) Method and apparatus for compressing data in a file system
US6192432B1 (en) Caching uncompressed data on a compressed drive
US5652865A (en) Linked file storage in a computer memory system
AU722146C (en) A device driver for accessing computer files
US7680842B2 (en) Systems and methods for a snapshot of data
US7631022B2 (en) Information processing apparatus and recording medium
US6185575B1 (en) In-place disk partition canonization and storage optimization
US7953704B2 (en) Systems and methods for a snapshot of data
US8156165B2 (en) Transaction-safe FAT files system
US6850929B2 (en) System and method for managing file system extended attributes
US20080059541A1 (en) Systems and methods for a snapshot of data
JPH07104808B2 (ja) 設置可能なファイルシステムにおいてダイナミックボリュームトラッキングを行う方法及び装置
US6405265B1 (en) Device driver for accessing computer files
US7415653B1 (en) Method and apparatus for vectored block-level checksum for file system data integrity
US6604170B1 (en) Information processing apparatus and method, and computer readable memory
JP2001516090A (ja) イメージ形成中のコンピュータ・パーティション操作
JPH10198587A (ja) ファイル・システムの間接アドレシング方法及び装置
JPH08234921A (ja) アドレス・スペースを管理するための方法及び記憶サブシステム
US7113937B2 (en) Systems, methods, and computer program products to improve performance of ported applications, such as a database, operating on UNIX system services for the OS/390
KR20000022716A (ko) 로그 구조화 목표 저장장치를 사전에 구성하여 볼륨을 효율적으로 복사하는 방법 및 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040325

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070619

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20071113