JP2004334255A - 領域共用ファイル管理装置およびメンバ削除方法並びにプログラム - Google Patents
領域共用ファイル管理装置およびメンバ削除方法並びにプログラム Download PDFInfo
- Publication number
- JP2004334255A JP2004334255A JP2003124697A JP2003124697A JP2004334255A JP 2004334255 A JP2004334255 A JP 2004334255A JP 2003124697 A JP2003124697 A JP 2003124697A JP 2003124697 A JP2003124697 A JP 2003124697A JP 2004334255 A JP2004334255 A JP 2004334255A
- Authority
- JP
- Japan
- Prior art keywords
- bam
- data block
- data
- block
- blocks
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】領域共用ファイルにおけるメンバの削除処理を高速化する。
【解決手段】領域共用ファイル3におけるメンバを削除する際、メンバ削除手段12は、削除対象となるメンバに割り当てられているデータブロックを、データブロック間のチェーンを辿りながら求めると共に求めたデータブロックのアドレスをメモリ領域2上の拡張空データブロック管理表23に一旦登録する。メンバに割り当てられている全てのデータブロックのアドレスを拡張空データブロック管理表23に登録すると、メンバ削除手段12は、解放されるデータブロックを複数含むデータブロック群に対応するBAMブロック51−jについては、拡張空データブロック管理表23に登録されたアドレスに基づいて一回の入出力でBAM記述を更新する。
【選択図】 図1
【解決手段】領域共用ファイル3におけるメンバを削除する際、メンバ削除手段12は、削除対象となるメンバに割り当てられているデータブロックを、データブロック間のチェーンを辿りながら求めると共に求めたデータブロックのアドレスをメモリ領域2上の拡張空データブロック管理表23に一旦登録する。メンバに割り当てられている全てのデータブロックのアドレスを拡張空データブロック管理表23に登録すると、メンバ削除手段12は、解放されるデータブロックを複数含むデータブロック群に対応するBAMブロック51−jについては、拡張空データブロック管理表23に登録されたアドレスに基づいて一回の入出力でBAM記述を更新する。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、複数のメンバによってデータ部が共用される領域共用ファイルに関し、特に、メンバの削除処理を高速化する技術に関する。
【0002】
【従来の技術】
従来のこの種の技術として、領域共用ファイルのデータ領域を連続した定数個のデータブロックからなる論理トラックに分割し、この論理トラックをメンバに対する割り当て及び解放の単位とし、論理トラックを論理トラック使用状況ビットマップ(BAMブロック)で管理する場合に、BAMブロックの一部をメモリテーブル化した空論理トラック管理テーブルを作成することにより、BAMブロックへのアクセス回数を減らし、メンバの削除処理を高速化する技術が知られている(例えば、特許文献1参照)。即ち、上述した従来の技術では、メンバの削除時、データブロック間のチェーンを辿りながらメンバが占有していた論理トラックを空論理トラック管理テーブルに返却し、空論理トラック管理テーブルが満杯になり、返却できない場合には、直接BAMブロックに論理トラックを返却するようにしている。
【0003】
【特許文献1】
特開昭62−154149号公報
【0004】
【発明が解決しようとする課題】
上述した従来の技術は、領域共用ファイル上のBAMブロックに比較して高速アクセスが可能なメモリ上の空論理トラック管理テーブルを利用することにより、メンバの削除処理を高速化できるようにしている。しかし、削除対象としているメンバが多数のデータブロックにより構成されている場合には、削除処理中に空論理トラック管理テーブルが満杯になる場合があり、このような場合には、データブロック間のチェーンに基づいて解放すべきデータブロックを検出する度に、領域共用ファイル上のBAMブロックを入出力しなければならないので、十分な削除処理速度を得られないという問題があった。
【0005】
そこで、本発明の目的は、BAMブロックの入出力回数を減らすことにより、メンバの削除処理を高速化できるようにすることにある。
【0006】
【課題を解決するための手段】
本発明にかかる第1の領域共用ファイル管理装置は、上記目的を達成するため、
複数のデータブロックから構成されるデータ部と、
該データ部中のデータブロックを、複数のデータブロックを含む複数のデータブロック群にグループ分けした際の各データブロック群毎のBAMブロックから構成され、該各BAMブロックが、データブロック毎のビットによって対応するデータブロックがメンバに割り当て済みか否かを示すBAM記述を保持するBAM部と、
データブロックが割り当てられたメンバのメンバ名、先頭データブロックのアドレスおよび終端データブロックのアドレスが格納されるディレクトリエントリから構成されるディレクトリ部とを含む領域共用ファイルを管理する領域共用ファイル管理装置であって、
メンバの削除時、削除対象となるメンバを構成するデータブロックを、データブロック間のチェーンを辿りながら求めると共に該求めたデータブロックのアドレスをメモリ領域に格納し、前記メンバを構成する全てのデータブロックのアドレスを前記メモリ領域に格納した後、解放されるデータブロックを複数含むデータブロック群に対応するBAMブロックについては、前記メモリ領域に格納されたアドレスに基づいて一回の入出力でBAM記述を更新するメンバ削除手段を備えたことを特徴とする。
【0007】
より具体的には、本発明にかかる第2の領域共用ファイル管理装置は、第1の領域共用ファイル管理装置において、
前記メンバ削除手段が、解放されるデータブロックを複数含むデータブロック群に対応するBAMブロックを前記BAM部から入力し、該入力したBAMブロック中のBAM記述の内の、前記解放されるデータブロックに対応するビットを未使用に更新した後、前記BAM部に書き戻す構成を有することを特徴とする。
【0008】
また、本発明にかかる第3の領域共用ファイル管理装置は、
複数のデータブロックから構成されるデータ部と、
該データ部中のデータブロックを、複数のデータブロックを含む複数のデータブロック群にグループ分けした際の各データブロック群毎のBAMブロックから構成され、該各BAMブロックが、データブロック毎のビットによって対応するデータブロックがメンバに割り当て済みか否かを示すBAM記述を保持するBAM部と、
データブロックが割り当てられたメンバのメンバ名、先頭データブロックのアドレスおよび終端データブロックのアドレスが格納されるディレクトリエントリから構成されるディレクトリ部とを含む領域共用ファイルを管理する領域共用ファイル管理装置であって、
メモリ領域上に設けられた拡張空データブロック管理表と、
メンバの削除時、削除対象となるメンバを構成するデータブロックを、データブロック間のチェーンを辿りながら求めると共に該求めたデータブロックのアドレスを前記拡張空データブロック管理表に登録し、前記メンバを構成する全てのデータブロックのアドレスを拡張空データブロック管理表に登録した後、解放されるデータブロックを複数含むデータブロック群に対応するBAMブロックについては、前記拡張空データブロック管理表に登録されたアドレスに基づいて一回の入出力でBAM記述を更新するメンバ削除手段を備えたことを特徴とする。
【0009】
【作用】
メンバの削除時、メンバ削除手段は、
削除対象となるメンバを構成するデータブロックを、データブロック間のチェーンを辿りながら求め、求めたデータブロックのアドレスをメモリ領域に一旦格納しておく。その後、上記メンバを構成する全てのデータブロックのアドレスをメモリ領域に格納すると、解放されるデータブロックを複数含むデータブロック群に対応するBAMブロックについては、上記メモリ領域に格納されたアドレスに基づいて一回の入出力でBAM記述を更新する。例えば、解放されるデータブロックを10個含むデータブロック群に対応するBAMブロックを考えた場合、データブロック間のチェーンに基づいて解放すべきデータブロックを検出する度に、BAM記述を変更する従来の技術では、上記BAMブロックを10回入出力しなければならないが、本発明では、上記BAMブロックに対する入出力を1回とすることができるので、メンバの削除処理を高速化することができる。
【0010】
【発明の実施の形態】
次に本発明の実施の形態について図面を参照して詳細に説明する。
【0011】
【実施例の構成】
図1は本発明にかかる領域共用ファイル管理装置の実施例のブロック図であり、プログラム制御により動作するホストコンピュータ(中央処理装置;プロセッサ;データ処理装置)1と、領域共用ファイル3とから構成されている。
【0012】
領域共用ファイル3は、ディレクトリ部4、BAM部5、および、データ部6から構成される。
【0013】
データ部6は、複数個のデータブロック61から構成される。データブロック61は、データを格納するための物理的な最小単位であり、図2に示すように1個のブロックヘッダ62と、複数個のレコード63−1〜63−nとから構成されている。ブロックヘッダ62には、図3に示すように、次データブロックアドレス621と、前データブロックアドレス622と、レコード数623と、バイト数624とが格納される、次データブロックアドレス621、前データブロックアドレス622は、それぞれ当該データブロックが割り当てられているメンバ中の、当該ブロックよりも1つ後、1つ前のデータブロックのアドレスを示す。なお、メンバ中の先頭データブロックの前データブロックアドレス622及びメンバ中の最終データブロックの次データブロックアドレス621にはオール“0”が設定される。また、データ部6中のデータブロック61は、アドレス順に、それぞれが5個のデータブロックを含むデータブロック群G1、G2、…にグループ分けされている。つまり、アドレス「01」〜「05」のデータブロック61によりデータブロック群G1が構成され、アドレス「06」〜「10」のデータブロック61によりデータブロック群G2が構成されている。
【0014】
BAM部5は、データブロック群G1、G2、…毎のBAMブロック51−1、51−2、…から構成されている。BAMブロック51は、図4に示すように、1つのブロックヘッダ52と、対応するデータブロック群中のデータブロックのメンバへの割り当て状況を管理しているビットマップであるBAM記述53とから構成される。ブロックヘッダ52は、当該BAMブロック51と対応するデータブロック群中に存在する、未使用のデータブロック数を示す。例えば、図1に示したBAMブロック51−4は、アドレス「16」〜「20」の5個のデータブロック61から構成されるデータブロック群G4に対応するものであり、BAM記述「10011」は、アドレス「16」「19」「20」のデータブロックが未使用で、アドレス「17」「18」のデータブロックが割り当て済みであることを示している。
【0015】
ディレクトリ部4は、複数のディレクトリブロック41で構成されている。ディレクトリブロック41は、図5に示すように、1個のブロックヘッダ42と、複数個のディレクトリエントリ43とから構成されている。ディレクトリエントリ43には、図6に示すように、データブロックを割り当てたメンバのメンバ名431と、先頭データブロックアドレス432と、最終データブロックアドレス433とが設定される。先頭データブロックアドレス432は、メンバに割り当てられた先頭のデータブロックのアドレスを示し、最終データブロックアドレス433は、メンバに割り当てられた終端のデータブロックのアドレスを示す。
【0016】
ホストコンピュータ1内には、メンバ作成手段11、メンバ削除手段12、および、メモリ領域2が存在し、メモリ領域2内には、BAMブロック管理表21、空データブロック管理表22、および、拡張空データブロック管理表23が存在する。
【0017】
メンバ作成手段11は、メンバ名をキーとして、ディレクトリ部4にディレクトリエントリ43を登録すると共に、空データブロックをメンバに割り当て、データの出力を行う。
【0018】
メンバ削除手段12は、メンバ名をキーとして、ディレクトリ部4に登録されているディレクトリエントリ43を削除すると共に、当該メンバのデータが格納されていたデータブロックの解放を行う。
【0019】
BAMブロック管理表21は、各BAMブロック51−1、51−2…中に空データブロック(メンバに割り当てられていないデータブロック)が存在するか否かを管理するビットマップである。図7に示すように、空データブロックが存在するBAMブロックに対応するビットには“1”が、空データブロックが存在しないBAMブロックに対応するビットには“0”が設定される。また、ビットマップの第1ビット目、第2ビット目、…は、それぞれBAMブロック51−1、51−2、…に対応している。
【0020】
空データブロック管理表22は、図8に示すように、1つのヘッダ部24と、複数のエントリ部25とから構成され、データ部6に存在する空データブロックの内の、一部の空データブロックのアドレスが格納される。ヘッダ部24には、図9に示すように、当該空データブロック管理表22の総エントリ数241と、次の拡張空データブロック管理表23へのポインタ242が設定される。なお、次の拡張空データブロック管理表が存在しない場合には、NULLが設定される。また、エントリ部25には、図10に示すように、データ部6に存在する空データブロックのアドレス252と、当該空データブロックのビットマップが格納されているBAMブロックのアドレス251とが格納される。
【0021】
拡張空データブロック管理表23は、メンバ削除時に一時的に使用される管理表で、構成は空データブロック管理表22に準ずる。
【0022】
記録媒体Kは、ディスク、半導体メモリ、その他の記録媒体であり、ホストコンピュータ1上にメンバ作成手段11、メンバ削除手段12を実現するためのプログラムが記録されている。このプログラムは、ホストコンピュータ1によって読み取られ、その動作を制御することにより、ホストコンピュータ1上にメンバ作成手段11、メンバ削除手段12を実現する。
【0023】
【実施例の動作の説明】
次に、各図を参照して本実施例の動作について詳細に説明する。
【0024】
先ず、メンバ作成時の動作について説明する。
【0025】
メンバ作成手段11は、指定されたメンバ名が格納されているディレクトリエントリ43の検索を行う(図11のステップA1)。当該メンバのディレクトリエントリ43が既に存在するかどうかの判断を行い(ステップA2)、ディレクトリエントリ43が既に存在する場合は、エラー情報を返却し(ステップA21)処理を終了する。これに対して、ディレクトリエントリ43が存在しなかった場合は、ディレクトリエントリ43を登録する(ステップA3)。
【0026】
次に、空データブロック管理表22のエントリ部25を検索し(ステップA4)、空データブロックのアドレスを格納したエントリ部25を探し出す(ステップA5)。空データブロックのアドレスを格納したエントリ部25を探し出すことができた場合は、上記エントリ部25中のアドレスによって示される空データブロックをメンバに割り当てた後(ステップA6)、上記エントリ部25を0クリアし(ステップA7)、更に、割り当てたデータブロック61にデータ出力を行う(ステップA8)。なお、ステップA6においては、必要に応じて、先頭データブロックアドレス432、次データブロックアドレス621、前データブロックアドレス622を更新する。
【0027】
次に、ステップ8で出力したデータが当該メンバの最終データかどうかの判断を行い(ステップA9)、最終データだった場合は、当該メンバのディレクトリエントリ43の最終データブロックアドレス433に最後に出力したデータブロック61のアドレスを格納する(ステップA20)。これに対して、最終データではない場合は、ステップ4に戻る。
【0028】
ステップA5で空データブロック管理表22上に空データブロックのアドレスを格納したエントリ部25を探し出すことができなかった場合は、BAMブロック管理表21を検索し(ステップA10)、空データブロックを管理しているBAMブロックが存在するかどうかを確認する(ステップA11)。ここで、BAMブロック51−1、51−2、…は、それぞれデータブロック群G1、G2、…に対応するものであるので、ステップA11では、空データブロックが存在するデータブロック群が存在するかどうかを確認していることになる。
【0029】
そして、空データブロックを管理しているBAMブロックが存在しない場合は、エラー情報返却を行い(ステップA21)、処理を終了する。これに対して、空データブロックを管理しているBAMブロック51−jが存在した場合は、先ず、BAMブロック51−jの入力を行う(ステップA12)。その後、空データブロック情報(データブロック群Gj中の空データブロックの内の1つのアドレス)とBAMブロック51−jのアドレスとを空データブロック管理表22の空エントリに登録し(ステップA13)、更に、登録した空データブロックをBAMブロック51−jのBAM記述上、割り当て済み状態とする(ステップA14)。
【0030】
次に、空データブロック管理表22の全エントリ部25に空データブロック情報が登録されているかどうかを判断する(ステップA15)。そして、全エントリ部25に空データブロック情報が登録されている場合は、ステップA12で入力したBAMブロック51−j中に空データブロック情報が残っているか否か、即ちデータブロック群Gjに空データブロックが残っているか否かを判断し(ステップA22)、残っている場合は、ステップA4に戻り、残っていない場合は、BAMブロック管理表21のBAMブロック51−jに対応するビットを“0”に更新し、データブロック群Gjに空データブロックが残っていないことを表示した後(ステップA23)、ステップA4に戻る。
【0031】
これに対して、空データブロック管理表22に、空データブロック情報が登録されていないエントリ部25が存在する場合(ステップA15がNO)は、ステップA12で入力したBAMブロック51−j中に空データブロック情報が残っているかどうかを判断し(ステップA16)、残っている場合は、ステップA13に戻る。これに対して、空データブロック情報が残っていない場合は、BAMブロック管理表21上のBAMブロック51−jに該当するビットを“0”とし(ステップA17)、再度、BAMブロック管理表21を検索する(ステップA18)。そして、空データブロックを管理しているBAMブロック51−kが存在する場合はステップA12に戻り、空データブロックを管理しているBAMブロック51−kが存在しない場合はステップA4に戻る。以上がメンバ作成時の動作である。
【0032】
次にメンバ削除時の動作について説明する。
【0033】
メンバ削除手段12は、指定されたメンバ名が格納されているディレクトリエントリ43の検索を行う(図12のステップB1)。当該メンバのディレクトリエントリ43が既に存在するかどうかの判断を行い(ステップB2)、ディレクトリエントリ43が存在しない場合は、エラー情報を返却し(ステップB20)、処理を終了する。
【0034】
これに対して、ディレクトリエントリ43が存在した場合は、指定されたメンバ名が格納されているディレクトリエントリ43を削除し(ステップB3)、削除したディレクトリエントリ43中に格納されていた先頭データブロックアドレス432のデータブロック61を入力する(ステップB4)。次に、空データブロック管理表22を検索し(ステップB5)、空データブロック管理表22中に空エントリ部25が存在するかどうかを確認する(ステップB6)。
【0035】
そして、空データブロック管理表22中に空エントリ部25が存在しない場合(ステップB6がNO)は、拡張空データブロック管理表23を検索し(ステップB10)、拡張空データブロック管理表23中に空エントリ部25が存在するかどうかを判断する(ステップB11)。拡張空データブロック管理表23中に空エントリが存在しない場合は、拡張データブロック管理表23を拡張した後(ステップB12)、入力したデータブロック61の情報を空データブロック情報として拡張空データブロック管理表23のエントリ部25に登録し(ステップB13)、ステップB8に進む。ステップB11で拡張空データブロック管理表23中に空エントリが存在した場合は、ステップB13に進む。
【0036】
これに対して、空データブロック管理表22中に空エントリ部25が存在する場合(ステップB6がYES)は、入力したデータブロック61の情報を空データブロック情報として空データブロック管理表22の空エントリ部25に登録し(ステップB7)、入力したデータブロック61のブロックヘッダから、次データブロック61が存在するかどうかを判断する(ステップB8)。
【0037】
そして、次データブロック61が存在する場合は、次データブロック61を入力して(ステップB9)、ステップB5に戻る。これに対して、次データブロック61が存在しない場合(ステップB8がNO)は、拡張空データブロック管理表23を検索し(ステップB14)、拡張空データブロック管理表23中に空データブロック情報が格納されたエントリ部25が存在するかどうかを判断する(ステップB15)。
【0038】
そして、拡張空データブロック管理表23中に空データブロック情報が格納されたエントリ部25が存在しない場合は処理を終了する。これに対して、拡張空データブロック管理表23中に空データブロック情報が格納されたエントリ部25が存在した場合(ステップB15がYES)は、先ず、当該空データブロック情報を返却すべきBAMブロック51−iを入力する(ステップB16)。次いで、拡張空データブロック管理表23上のエントリの内の、BAMブロック51−iによって空データブロックであることが示されているデータブロックのアドレスを格納したエントリを全て0クリアし、更にBAMブロック51−iのビットマップの内の、上記0クリアしたエントリに格納されていたアドレスによって指し示されるデータブロックに対応するビットを“1”(未使用状態)とする(ステップB17)。その後、ステップB16で入力したBAMブロック51−iをBAM部5に出力し(ステップB18)、更に、BAMブロック管理表21中の当該BAMブロック51−iに相当するビットを立てた後(ステップB19)、ステップB14に戻る。以上がメンバ削除時の動作である。
【0039】
次に、具体例を挙げてメンバ削除時の動作について説明する。
【0040】
今、メモリ領域2の内容および領域共用ファイル3の内容が図1に示すものである時に、削除対象とするメンバのメンバ名が指定されると、メンバ削除手段12は、上記メンバ名が格納されているディレクトリエントリ43の検索を行う(ステップB1)。この検索の結果、先頭データブロックアドレス432がアドレス「00」、最終データブロックアドレス433がアドレス「15」となっているディレクトリエントリ43が探し出されたとする。
【0041】
その後、メンバ削除手段12は、上記探し出したディレクトリエントリ43を削除した後、削除対象にしているメンバの先頭データブロック(アドレス「00」のデータブロック)を入力する(ステップB4)。この時点では、空データブロック管理表22の第4番目のエントリ部25が空エントリとなっているので、メンバ削除手段12は、この第4番目のエントリ部25に先頭データブロックのアドレス「000001」と、このデータブロックのメンバへの割り当て状況を管理しているBAMブロック51−1のアドレス「01」とを格納する(ステップB5〜B7)。この結果、空データブロック管理表22、拡張空データブロック管理表23の内容は、図13に示すものとなる。
【0042】
その後、メンバ削除手段12は、削除対象にしているメンバ中の第2番目のデータブロック(アドレス「12」のデータブロック)を入力する(ステップB8がYES、B9)。この時点では、図13に示すように、空データブロック管理表22には、空エントリが存在しないので、拡張空データブロック管理表23の空エントリに第2番目のデータブロックのアドレス「000012」と、このデータブロックのメンバへの割り当て状況を管理しているBAMブロック51−3のアドレス「03」を格納する(ステップB10〜B13)。以下、同様にして、メンバ削除手段12は、削除対象にしているメンバ中の各データブロックのアドレスおよびBAMブロックのアドレスを拡張空データブロック管理表23の空エントリ部25に格納する。メンバ中の最後のデータブロックまで処理することにより、空データブロック管理表22、拡張空データブロック管理表23の内容は、図14に示すものとなる。
【0043】
その後、メンバ削除手段12は、拡張空データブロック管理表22(図14参照)を検索し、その先頭エントリに格納されているBAMブロックアドレス「03」を取得する(ステップB14)。次いで、アドレス「03」のBAMブロック51−3を入力する。この入力したBAMブロック51−3のBAM記述は「00010」(図1参照)となっているので、アドレス「11」「12」「13」「15」が格納されているエントリが拡張空データブロック管理表23中に存在すれば、そのエントリを0クリアする。この例の場合、拡張空データブロック管理表23の第1番目、第4番目のエントリに、それぞれアドレス「000012」「000015」が格納されているので、メンバ削除手段12は、上記第1番目、第4番目のエントリを0クリアする。更に、メンバ削除手段12は、ステップB16で入力したBAMブロック51−3のBAM記述「000010」の内、0クリアしたエントリに格納されていたアドレス「000012」「000015」に対応する第2ビット目、第5ビット目を“1”に更新する(ステップB16、B17)。その後、メンバ削除手段12は、更新後のBAMブロック51−3をBAM部5に書き戻す(ステップB18)。この結果、BAM部5上のBAMブロック51−3のBAM記述は「01011」となり、削除対象メンバに割り当てられていたアドレス「12」「15」のデータブロックは解放される(ステップB19)。
【0044】
その後、メンバ削除手段12は、拡張空データブロック管理表23を参照して前述した処理と同様の処理を行い、削除対象メンバに割り当てられていたデータブロックを全て解放する。
【0045】
【発明の効果】
本発明の効果は、領域共用ファイルにおけるメンバの削除処理を高速化できることにある。
【0046】
その理由は、メンバの削除時、削除対象となるメンバに割り当てられているデータブロックを、データブロック間のチェーンを辿りながら求める際に、求めたデータブロックのアドレスをメモリ領域に一旦格納しておき、上記メンバに割り当てられている全てのデータブロックのアドレスをメモリ領域に格納した後に、解放されるデータブロックを複数含むデータブロック群に対応するBAMブロックについては、上記メモリ領域に格納されたアドレスに基づいて一回の入出力でBAM記述を更新するようにしているからである。例えば、解放されるデータブロックを10個含むデータブロック群に対応するBAMブロックを考えた場合、データブロック間のチェーンに基づいて解放すべきデータブロックを検出する度に、BAM記述を変更する従来の技術では、上記BAMブロックを10回入出力しなければならないが、本発明では、上記BAMブロックに対する入出力を1回とすることができるので、メンバの削除処理を高速化することができる。
【図面の簡単な説明】
【図1】本発明の実施例のブロック図である。
【図2】データブロック61の構成例を示す図である。
【図3】データブロック61のブロックヘッダ62の構成例を示す図である。
【図4】BAMブロック51の構成例を示す図である。
【図5】ディレクトリブロック41の構成例を示す図である。
【図6】ディレクトリエントリ43の構成例を示す図である。
【図7】BAMブロック管理表21を説明するための図である。
【図8】空データブロック管理表22、拡張空データブロック管理表23を説明するための図である。
【図9】空データブロック管理表22、拡張空データブロック管理表23のヘッダ部24の構成例を示す図である。
【図10】空データブロック管理表22、拡張空データブロック管理表23のエントリ部25の構成例を示す図である。
【図11】メンバ作成手段11の処理例を示すフローチャートである。
【図12】メンバ削除手段12の処理例を示すフローチャートである。
【図13】メンバ削除時の動作を説明するための図である。
【図14】メンバ削除時の動作を説明するための図である。
【符号の説明】
1…ホストコンピュータ
11…メンバ作成手段
12…メンバ削除手段
2…メモリ領域
21…BAMブロック管理表
22…空データブロック管理表
23…拡張空データブロック管理表
3…領域共用ファイル
4…ディレクトリ部
5…BAM部
6…データ部
K…記録媒体
【発明の属する技術分野】
本発明は、複数のメンバによってデータ部が共用される領域共用ファイルに関し、特に、メンバの削除処理を高速化する技術に関する。
【0002】
【従来の技術】
従来のこの種の技術として、領域共用ファイルのデータ領域を連続した定数個のデータブロックからなる論理トラックに分割し、この論理トラックをメンバに対する割り当て及び解放の単位とし、論理トラックを論理トラック使用状況ビットマップ(BAMブロック)で管理する場合に、BAMブロックの一部をメモリテーブル化した空論理トラック管理テーブルを作成することにより、BAMブロックへのアクセス回数を減らし、メンバの削除処理を高速化する技術が知られている(例えば、特許文献1参照)。即ち、上述した従来の技術では、メンバの削除時、データブロック間のチェーンを辿りながらメンバが占有していた論理トラックを空論理トラック管理テーブルに返却し、空論理トラック管理テーブルが満杯になり、返却できない場合には、直接BAMブロックに論理トラックを返却するようにしている。
【0003】
【特許文献1】
特開昭62−154149号公報
【0004】
【発明が解決しようとする課題】
上述した従来の技術は、領域共用ファイル上のBAMブロックに比較して高速アクセスが可能なメモリ上の空論理トラック管理テーブルを利用することにより、メンバの削除処理を高速化できるようにしている。しかし、削除対象としているメンバが多数のデータブロックにより構成されている場合には、削除処理中に空論理トラック管理テーブルが満杯になる場合があり、このような場合には、データブロック間のチェーンに基づいて解放すべきデータブロックを検出する度に、領域共用ファイル上のBAMブロックを入出力しなければならないので、十分な削除処理速度を得られないという問題があった。
【0005】
そこで、本発明の目的は、BAMブロックの入出力回数を減らすことにより、メンバの削除処理を高速化できるようにすることにある。
【0006】
【課題を解決するための手段】
本発明にかかる第1の領域共用ファイル管理装置は、上記目的を達成するため、
複数のデータブロックから構成されるデータ部と、
該データ部中のデータブロックを、複数のデータブロックを含む複数のデータブロック群にグループ分けした際の各データブロック群毎のBAMブロックから構成され、該各BAMブロックが、データブロック毎のビットによって対応するデータブロックがメンバに割り当て済みか否かを示すBAM記述を保持するBAM部と、
データブロックが割り当てられたメンバのメンバ名、先頭データブロックのアドレスおよび終端データブロックのアドレスが格納されるディレクトリエントリから構成されるディレクトリ部とを含む領域共用ファイルを管理する領域共用ファイル管理装置であって、
メンバの削除時、削除対象となるメンバを構成するデータブロックを、データブロック間のチェーンを辿りながら求めると共に該求めたデータブロックのアドレスをメモリ領域に格納し、前記メンバを構成する全てのデータブロックのアドレスを前記メモリ領域に格納した後、解放されるデータブロックを複数含むデータブロック群に対応するBAMブロックについては、前記メモリ領域に格納されたアドレスに基づいて一回の入出力でBAM記述を更新するメンバ削除手段を備えたことを特徴とする。
【0007】
より具体的には、本発明にかかる第2の領域共用ファイル管理装置は、第1の領域共用ファイル管理装置において、
前記メンバ削除手段が、解放されるデータブロックを複数含むデータブロック群に対応するBAMブロックを前記BAM部から入力し、該入力したBAMブロック中のBAM記述の内の、前記解放されるデータブロックに対応するビットを未使用に更新した後、前記BAM部に書き戻す構成を有することを特徴とする。
【0008】
また、本発明にかかる第3の領域共用ファイル管理装置は、
複数のデータブロックから構成されるデータ部と、
該データ部中のデータブロックを、複数のデータブロックを含む複数のデータブロック群にグループ分けした際の各データブロック群毎のBAMブロックから構成され、該各BAMブロックが、データブロック毎のビットによって対応するデータブロックがメンバに割り当て済みか否かを示すBAM記述を保持するBAM部と、
データブロックが割り当てられたメンバのメンバ名、先頭データブロックのアドレスおよび終端データブロックのアドレスが格納されるディレクトリエントリから構成されるディレクトリ部とを含む領域共用ファイルを管理する領域共用ファイル管理装置であって、
メモリ領域上に設けられた拡張空データブロック管理表と、
メンバの削除時、削除対象となるメンバを構成するデータブロックを、データブロック間のチェーンを辿りながら求めると共に該求めたデータブロックのアドレスを前記拡張空データブロック管理表に登録し、前記メンバを構成する全てのデータブロックのアドレスを拡張空データブロック管理表に登録した後、解放されるデータブロックを複数含むデータブロック群に対応するBAMブロックについては、前記拡張空データブロック管理表に登録されたアドレスに基づいて一回の入出力でBAM記述を更新するメンバ削除手段を備えたことを特徴とする。
【0009】
【作用】
メンバの削除時、メンバ削除手段は、
削除対象となるメンバを構成するデータブロックを、データブロック間のチェーンを辿りながら求め、求めたデータブロックのアドレスをメモリ領域に一旦格納しておく。その後、上記メンバを構成する全てのデータブロックのアドレスをメモリ領域に格納すると、解放されるデータブロックを複数含むデータブロック群に対応するBAMブロックについては、上記メモリ領域に格納されたアドレスに基づいて一回の入出力でBAM記述を更新する。例えば、解放されるデータブロックを10個含むデータブロック群に対応するBAMブロックを考えた場合、データブロック間のチェーンに基づいて解放すべきデータブロックを検出する度に、BAM記述を変更する従来の技術では、上記BAMブロックを10回入出力しなければならないが、本発明では、上記BAMブロックに対する入出力を1回とすることができるので、メンバの削除処理を高速化することができる。
【0010】
【発明の実施の形態】
次に本発明の実施の形態について図面を参照して詳細に説明する。
【0011】
【実施例の構成】
図1は本発明にかかる領域共用ファイル管理装置の実施例のブロック図であり、プログラム制御により動作するホストコンピュータ(中央処理装置;プロセッサ;データ処理装置)1と、領域共用ファイル3とから構成されている。
【0012】
領域共用ファイル3は、ディレクトリ部4、BAM部5、および、データ部6から構成される。
【0013】
データ部6は、複数個のデータブロック61から構成される。データブロック61は、データを格納するための物理的な最小単位であり、図2に示すように1個のブロックヘッダ62と、複数個のレコード63−1〜63−nとから構成されている。ブロックヘッダ62には、図3に示すように、次データブロックアドレス621と、前データブロックアドレス622と、レコード数623と、バイト数624とが格納される、次データブロックアドレス621、前データブロックアドレス622は、それぞれ当該データブロックが割り当てられているメンバ中の、当該ブロックよりも1つ後、1つ前のデータブロックのアドレスを示す。なお、メンバ中の先頭データブロックの前データブロックアドレス622及びメンバ中の最終データブロックの次データブロックアドレス621にはオール“0”が設定される。また、データ部6中のデータブロック61は、アドレス順に、それぞれが5個のデータブロックを含むデータブロック群G1、G2、…にグループ分けされている。つまり、アドレス「01」〜「05」のデータブロック61によりデータブロック群G1が構成され、アドレス「06」〜「10」のデータブロック61によりデータブロック群G2が構成されている。
【0014】
BAM部5は、データブロック群G1、G2、…毎のBAMブロック51−1、51−2、…から構成されている。BAMブロック51は、図4に示すように、1つのブロックヘッダ52と、対応するデータブロック群中のデータブロックのメンバへの割り当て状況を管理しているビットマップであるBAM記述53とから構成される。ブロックヘッダ52は、当該BAMブロック51と対応するデータブロック群中に存在する、未使用のデータブロック数を示す。例えば、図1に示したBAMブロック51−4は、アドレス「16」〜「20」の5個のデータブロック61から構成されるデータブロック群G4に対応するものであり、BAM記述「10011」は、アドレス「16」「19」「20」のデータブロックが未使用で、アドレス「17」「18」のデータブロックが割り当て済みであることを示している。
【0015】
ディレクトリ部4は、複数のディレクトリブロック41で構成されている。ディレクトリブロック41は、図5に示すように、1個のブロックヘッダ42と、複数個のディレクトリエントリ43とから構成されている。ディレクトリエントリ43には、図6に示すように、データブロックを割り当てたメンバのメンバ名431と、先頭データブロックアドレス432と、最終データブロックアドレス433とが設定される。先頭データブロックアドレス432は、メンバに割り当てられた先頭のデータブロックのアドレスを示し、最終データブロックアドレス433は、メンバに割り当てられた終端のデータブロックのアドレスを示す。
【0016】
ホストコンピュータ1内には、メンバ作成手段11、メンバ削除手段12、および、メモリ領域2が存在し、メモリ領域2内には、BAMブロック管理表21、空データブロック管理表22、および、拡張空データブロック管理表23が存在する。
【0017】
メンバ作成手段11は、メンバ名をキーとして、ディレクトリ部4にディレクトリエントリ43を登録すると共に、空データブロックをメンバに割り当て、データの出力を行う。
【0018】
メンバ削除手段12は、メンバ名をキーとして、ディレクトリ部4に登録されているディレクトリエントリ43を削除すると共に、当該メンバのデータが格納されていたデータブロックの解放を行う。
【0019】
BAMブロック管理表21は、各BAMブロック51−1、51−2…中に空データブロック(メンバに割り当てられていないデータブロック)が存在するか否かを管理するビットマップである。図7に示すように、空データブロックが存在するBAMブロックに対応するビットには“1”が、空データブロックが存在しないBAMブロックに対応するビットには“0”が設定される。また、ビットマップの第1ビット目、第2ビット目、…は、それぞれBAMブロック51−1、51−2、…に対応している。
【0020】
空データブロック管理表22は、図8に示すように、1つのヘッダ部24と、複数のエントリ部25とから構成され、データ部6に存在する空データブロックの内の、一部の空データブロックのアドレスが格納される。ヘッダ部24には、図9に示すように、当該空データブロック管理表22の総エントリ数241と、次の拡張空データブロック管理表23へのポインタ242が設定される。なお、次の拡張空データブロック管理表が存在しない場合には、NULLが設定される。また、エントリ部25には、図10に示すように、データ部6に存在する空データブロックのアドレス252と、当該空データブロックのビットマップが格納されているBAMブロックのアドレス251とが格納される。
【0021】
拡張空データブロック管理表23は、メンバ削除時に一時的に使用される管理表で、構成は空データブロック管理表22に準ずる。
【0022】
記録媒体Kは、ディスク、半導体メモリ、その他の記録媒体であり、ホストコンピュータ1上にメンバ作成手段11、メンバ削除手段12を実現するためのプログラムが記録されている。このプログラムは、ホストコンピュータ1によって読み取られ、その動作を制御することにより、ホストコンピュータ1上にメンバ作成手段11、メンバ削除手段12を実現する。
【0023】
【実施例の動作の説明】
次に、各図を参照して本実施例の動作について詳細に説明する。
【0024】
先ず、メンバ作成時の動作について説明する。
【0025】
メンバ作成手段11は、指定されたメンバ名が格納されているディレクトリエントリ43の検索を行う(図11のステップA1)。当該メンバのディレクトリエントリ43が既に存在するかどうかの判断を行い(ステップA2)、ディレクトリエントリ43が既に存在する場合は、エラー情報を返却し(ステップA21)処理を終了する。これに対して、ディレクトリエントリ43が存在しなかった場合は、ディレクトリエントリ43を登録する(ステップA3)。
【0026】
次に、空データブロック管理表22のエントリ部25を検索し(ステップA4)、空データブロックのアドレスを格納したエントリ部25を探し出す(ステップA5)。空データブロックのアドレスを格納したエントリ部25を探し出すことができた場合は、上記エントリ部25中のアドレスによって示される空データブロックをメンバに割り当てた後(ステップA6)、上記エントリ部25を0クリアし(ステップA7)、更に、割り当てたデータブロック61にデータ出力を行う(ステップA8)。なお、ステップA6においては、必要に応じて、先頭データブロックアドレス432、次データブロックアドレス621、前データブロックアドレス622を更新する。
【0027】
次に、ステップ8で出力したデータが当該メンバの最終データかどうかの判断を行い(ステップA9)、最終データだった場合は、当該メンバのディレクトリエントリ43の最終データブロックアドレス433に最後に出力したデータブロック61のアドレスを格納する(ステップA20)。これに対して、最終データではない場合は、ステップ4に戻る。
【0028】
ステップA5で空データブロック管理表22上に空データブロックのアドレスを格納したエントリ部25を探し出すことができなかった場合は、BAMブロック管理表21を検索し(ステップA10)、空データブロックを管理しているBAMブロックが存在するかどうかを確認する(ステップA11)。ここで、BAMブロック51−1、51−2、…は、それぞれデータブロック群G1、G2、…に対応するものであるので、ステップA11では、空データブロックが存在するデータブロック群が存在するかどうかを確認していることになる。
【0029】
そして、空データブロックを管理しているBAMブロックが存在しない場合は、エラー情報返却を行い(ステップA21)、処理を終了する。これに対して、空データブロックを管理しているBAMブロック51−jが存在した場合は、先ず、BAMブロック51−jの入力を行う(ステップA12)。その後、空データブロック情報(データブロック群Gj中の空データブロックの内の1つのアドレス)とBAMブロック51−jのアドレスとを空データブロック管理表22の空エントリに登録し(ステップA13)、更に、登録した空データブロックをBAMブロック51−jのBAM記述上、割り当て済み状態とする(ステップA14)。
【0030】
次に、空データブロック管理表22の全エントリ部25に空データブロック情報が登録されているかどうかを判断する(ステップA15)。そして、全エントリ部25に空データブロック情報が登録されている場合は、ステップA12で入力したBAMブロック51−j中に空データブロック情報が残っているか否か、即ちデータブロック群Gjに空データブロックが残っているか否かを判断し(ステップA22)、残っている場合は、ステップA4に戻り、残っていない場合は、BAMブロック管理表21のBAMブロック51−jに対応するビットを“0”に更新し、データブロック群Gjに空データブロックが残っていないことを表示した後(ステップA23)、ステップA4に戻る。
【0031】
これに対して、空データブロック管理表22に、空データブロック情報が登録されていないエントリ部25が存在する場合(ステップA15がNO)は、ステップA12で入力したBAMブロック51−j中に空データブロック情報が残っているかどうかを判断し(ステップA16)、残っている場合は、ステップA13に戻る。これに対して、空データブロック情報が残っていない場合は、BAMブロック管理表21上のBAMブロック51−jに該当するビットを“0”とし(ステップA17)、再度、BAMブロック管理表21を検索する(ステップA18)。そして、空データブロックを管理しているBAMブロック51−kが存在する場合はステップA12に戻り、空データブロックを管理しているBAMブロック51−kが存在しない場合はステップA4に戻る。以上がメンバ作成時の動作である。
【0032】
次にメンバ削除時の動作について説明する。
【0033】
メンバ削除手段12は、指定されたメンバ名が格納されているディレクトリエントリ43の検索を行う(図12のステップB1)。当該メンバのディレクトリエントリ43が既に存在するかどうかの判断を行い(ステップB2)、ディレクトリエントリ43が存在しない場合は、エラー情報を返却し(ステップB20)、処理を終了する。
【0034】
これに対して、ディレクトリエントリ43が存在した場合は、指定されたメンバ名が格納されているディレクトリエントリ43を削除し(ステップB3)、削除したディレクトリエントリ43中に格納されていた先頭データブロックアドレス432のデータブロック61を入力する(ステップB4)。次に、空データブロック管理表22を検索し(ステップB5)、空データブロック管理表22中に空エントリ部25が存在するかどうかを確認する(ステップB6)。
【0035】
そして、空データブロック管理表22中に空エントリ部25が存在しない場合(ステップB6がNO)は、拡張空データブロック管理表23を検索し(ステップB10)、拡張空データブロック管理表23中に空エントリ部25が存在するかどうかを判断する(ステップB11)。拡張空データブロック管理表23中に空エントリが存在しない場合は、拡張データブロック管理表23を拡張した後(ステップB12)、入力したデータブロック61の情報を空データブロック情報として拡張空データブロック管理表23のエントリ部25に登録し(ステップB13)、ステップB8に進む。ステップB11で拡張空データブロック管理表23中に空エントリが存在した場合は、ステップB13に進む。
【0036】
これに対して、空データブロック管理表22中に空エントリ部25が存在する場合(ステップB6がYES)は、入力したデータブロック61の情報を空データブロック情報として空データブロック管理表22の空エントリ部25に登録し(ステップB7)、入力したデータブロック61のブロックヘッダから、次データブロック61が存在するかどうかを判断する(ステップB8)。
【0037】
そして、次データブロック61が存在する場合は、次データブロック61を入力して(ステップB9)、ステップB5に戻る。これに対して、次データブロック61が存在しない場合(ステップB8がNO)は、拡張空データブロック管理表23を検索し(ステップB14)、拡張空データブロック管理表23中に空データブロック情報が格納されたエントリ部25が存在するかどうかを判断する(ステップB15)。
【0038】
そして、拡張空データブロック管理表23中に空データブロック情報が格納されたエントリ部25が存在しない場合は処理を終了する。これに対して、拡張空データブロック管理表23中に空データブロック情報が格納されたエントリ部25が存在した場合(ステップB15がYES)は、先ず、当該空データブロック情報を返却すべきBAMブロック51−iを入力する(ステップB16)。次いで、拡張空データブロック管理表23上のエントリの内の、BAMブロック51−iによって空データブロックであることが示されているデータブロックのアドレスを格納したエントリを全て0クリアし、更にBAMブロック51−iのビットマップの内の、上記0クリアしたエントリに格納されていたアドレスによって指し示されるデータブロックに対応するビットを“1”(未使用状態)とする(ステップB17)。その後、ステップB16で入力したBAMブロック51−iをBAM部5に出力し(ステップB18)、更に、BAMブロック管理表21中の当該BAMブロック51−iに相当するビットを立てた後(ステップB19)、ステップB14に戻る。以上がメンバ削除時の動作である。
【0039】
次に、具体例を挙げてメンバ削除時の動作について説明する。
【0040】
今、メモリ領域2の内容および領域共用ファイル3の内容が図1に示すものである時に、削除対象とするメンバのメンバ名が指定されると、メンバ削除手段12は、上記メンバ名が格納されているディレクトリエントリ43の検索を行う(ステップB1)。この検索の結果、先頭データブロックアドレス432がアドレス「00」、最終データブロックアドレス433がアドレス「15」となっているディレクトリエントリ43が探し出されたとする。
【0041】
その後、メンバ削除手段12は、上記探し出したディレクトリエントリ43を削除した後、削除対象にしているメンバの先頭データブロック(アドレス「00」のデータブロック)を入力する(ステップB4)。この時点では、空データブロック管理表22の第4番目のエントリ部25が空エントリとなっているので、メンバ削除手段12は、この第4番目のエントリ部25に先頭データブロックのアドレス「000001」と、このデータブロックのメンバへの割り当て状況を管理しているBAMブロック51−1のアドレス「01」とを格納する(ステップB5〜B7)。この結果、空データブロック管理表22、拡張空データブロック管理表23の内容は、図13に示すものとなる。
【0042】
その後、メンバ削除手段12は、削除対象にしているメンバ中の第2番目のデータブロック(アドレス「12」のデータブロック)を入力する(ステップB8がYES、B9)。この時点では、図13に示すように、空データブロック管理表22には、空エントリが存在しないので、拡張空データブロック管理表23の空エントリに第2番目のデータブロックのアドレス「000012」と、このデータブロックのメンバへの割り当て状況を管理しているBAMブロック51−3のアドレス「03」を格納する(ステップB10〜B13)。以下、同様にして、メンバ削除手段12は、削除対象にしているメンバ中の各データブロックのアドレスおよびBAMブロックのアドレスを拡張空データブロック管理表23の空エントリ部25に格納する。メンバ中の最後のデータブロックまで処理することにより、空データブロック管理表22、拡張空データブロック管理表23の内容は、図14に示すものとなる。
【0043】
その後、メンバ削除手段12は、拡張空データブロック管理表22(図14参照)を検索し、その先頭エントリに格納されているBAMブロックアドレス「03」を取得する(ステップB14)。次いで、アドレス「03」のBAMブロック51−3を入力する。この入力したBAMブロック51−3のBAM記述は「00010」(図1参照)となっているので、アドレス「11」「12」「13」「15」が格納されているエントリが拡張空データブロック管理表23中に存在すれば、そのエントリを0クリアする。この例の場合、拡張空データブロック管理表23の第1番目、第4番目のエントリに、それぞれアドレス「000012」「000015」が格納されているので、メンバ削除手段12は、上記第1番目、第4番目のエントリを0クリアする。更に、メンバ削除手段12は、ステップB16で入力したBAMブロック51−3のBAM記述「000010」の内、0クリアしたエントリに格納されていたアドレス「000012」「000015」に対応する第2ビット目、第5ビット目を“1”に更新する(ステップB16、B17)。その後、メンバ削除手段12は、更新後のBAMブロック51−3をBAM部5に書き戻す(ステップB18)。この結果、BAM部5上のBAMブロック51−3のBAM記述は「01011」となり、削除対象メンバに割り当てられていたアドレス「12」「15」のデータブロックは解放される(ステップB19)。
【0044】
その後、メンバ削除手段12は、拡張空データブロック管理表23を参照して前述した処理と同様の処理を行い、削除対象メンバに割り当てられていたデータブロックを全て解放する。
【0045】
【発明の効果】
本発明の効果は、領域共用ファイルにおけるメンバの削除処理を高速化できることにある。
【0046】
その理由は、メンバの削除時、削除対象となるメンバに割り当てられているデータブロックを、データブロック間のチェーンを辿りながら求める際に、求めたデータブロックのアドレスをメモリ領域に一旦格納しておき、上記メンバに割り当てられている全てのデータブロックのアドレスをメモリ領域に格納した後に、解放されるデータブロックを複数含むデータブロック群に対応するBAMブロックについては、上記メモリ領域に格納されたアドレスに基づいて一回の入出力でBAM記述を更新するようにしているからである。例えば、解放されるデータブロックを10個含むデータブロック群に対応するBAMブロックを考えた場合、データブロック間のチェーンに基づいて解放すべきデータブロックを検出する度に、BAM記述を変更する従来の技術では、上記BAMブロックを10回入出力しなければならないが、本発明では、上記BAMブロックに対する入出力を1回とすることができるので、メンバの削除処理を高速化することができる。
【図面の簡単な説明】
【図1】本発明の実施例のブロック図である。
【図2】データブロック61の構成例を示す図である。
【図3】データブロック61のブロックヘッダ62の構成例を示す図である。
【図4】BAMブロック51の構成例を示す図である。
【図5】ディレクトリブロック41の構成例を示す図である。
【図6】ディレクトリエントリ43の構成例を示す図である。
【図7】BAMブロック管理表21を説明するための図である。
【図8】空データブロック管理表22、拡張空データブロック管理表23を説明するための図である。
【図9】空データブロック管理表22、拡張空データブロック管理表23のヘッダ部24の構成例を示す図である。
【図10】空データブロック管理表22、拡張空データブロック管理表23のエントリ部25の構成例を示す図である。
【図11】メンバ作成手段11の処理例を示すフローチャートである。
【図12】メンバ削除手段12の処理例を示すフローチャートである。
【図13】メンバ削除時の動作を説明するための図である。
【図14】メンバ削除時の動作を説明するための図である。
【符号の説明】
1…ホストコンピュータ
11…メンバ作成手段
12…メンバ削除手段
2…メモリ領域
21…BAMブロック管理表
22…空データブロック管理表
23…拡張空データブロック管理表
3…領域共用ファイル
4…ディレクトリ部
5…BAM部
6…データ部
K…記録媒体
Claims (7)
- 複数のデータブロックから構成されるデータ部と、
該データ部中のデータブロックを、複数のデータブロックを含む複数のデータブロック群にグループ分けした際の各データブロック群毎のBAMブロックから構成され、該各BAMブロックが、データブロック毎のビットによって対応するデータブロックがメンバに割り当て済みか否かを示すBAM記述を保持するBAM部と、
データブロックが割り当てられたメンバのメンバ名、先頭データブロックのアドレスおよび終端データブロックのアドレスが格納されるディレクトリエントリから構成されるディレクトリ部とを含む領域共用ファイルを管理する領域共用ファイル管理装置であって、
メンバの削除時、削除対象となるメンバを構成するデータブロックを、データブロック間のチェーンを辿りながら求めると共に該求めたデータブロックのアドレスをメモリ領域に格納し、前記メンバを構成する全てのデータブロックのアドレスを前記メモリ領域に格納した後、解放されるデータブロックを複数含むデータブロック群に対応するBAMブロックについては、前記メモリ領域に格納されたアドレスに基づいて一回の入出力でBAM記述を更新するメンバ削除手段を備えたことを特徴とする領域共用ファイル管理装置。 - 請求項1記載の領域共用ファイル管理装置において、
前記メンバ削除手段が、解放されるデータブロックを複数含むデータブロック群に対応するBAMブロックを前記BAM部から入力し、該入力したBAMブロック中のBAM記述の内の、前記解放されるデータブロックに対応するビットを未使用に更新した後、前記BAM部に書き戻す構成を有することを特徴とする領域共用ファイル管理装置。 - 複数のデータブロックから構成されるデータ部と、
該データ部中のデータブロックを、複数のデータブロックを含む複数のデータブロック群にグループ分けした際の各データブロック群毎のBAMブロックから構成され、該各BAMブロックが、データブロック毎のビットによって対応するデータブロックがメンバに割り当て済みか否かを示すBAM記述を保持するBAM部と、
データブロックが割り当てられたメンバのメンバ名、先頭データブロックのアドレスおよび終端データブロックのアドレスが格納されるディレクトリエントリから構成されるディレクトリ部とを含む領域共用ファイルを管理する領域共用ファイル管理装置であって、
メモリ領域上に設けられた拡張空データブロック管理表と、
メンバの削除時、削除対象となるメンバを構成するデータブロックを、データブロック間のチェーンを辿りながら求めると共に該求めたデータブロックのアドレスを前記拡張空データブロック管理表に登録し、前記メンバを構成する全てのデータブロックのアドレスを拡張空データブロック管理表に登録した後、解放されるデータブロックを複数含むデータブロック群に対応するBAMブロックについては、前記拡張空データブロック管理表に登録されたアドレスに基づいて一回の入出力でBAM記述を更新するメンバ削除手段とを備えたことを特徴とする領域共用ファイル管理装置。 - 複数のデータブロックから構成されるデータ部と、
該データ部中のデータブロックを、複数のデータブロックを含む複数のデータブロック群にグループ分けした際の各データブロック群毎のBAMブロックから構成され、該各BAMブロックが、データブロック毎のビットによって対応するデータブロックがメンバに割り当て済みか否かを示すBAM記述を保持するBAM部と、
データブロックが割り当てられたメンバのメンバ名、先頭データブロックのアドレスおよび終端データブロックのアドレスが格納されるディレクトリエントリから構成されるディレクトリ部とを含む領域共用ファイルにおけるメンバ削除方法であって、
削除対象となるメンバを構成するデータブロックを、データブロック間のチェーンを辿りながら求めると共に該求めたデータブロックのアドレスをメモリ領域に格納する格納ステップと、
該格納ステップにおいて、前記メンバを構成する全てのデータブロックのアドレスを前記メモリ領域に格納した後、解放されるデータブロックを複数含むデータブロック群に対応するBAMブロックについては、前記メモリ領域に格納されたアドレスに基づいて一回の入出力でBAM記述を更新するBAM記述更新ステップとを含むことを特徴とするメンバ削除方法。 - 請求項4記載のメンバ削除方法において、
BAM記述更新ステップが、解放されるデータブロックを複数含むデータブロック群に対応するBAMブロックを前記BAM部から入力し、該入力したBAMブロック中のBAM記述の内の、前記解放されるデータブロックに対応するビットを未使用に更新した後、前記BAM部に書き戻す処理を行うことを特徴とするメンバ削除方法。 - コンピュータを、
複数のデータブロックから構成されるデータ部と、該データ部中のデータブロックを、複数のデータブロックを含む複数のデータブロック群にグループ分けした際の各データブロック群毎のBAMブロックから構成され、該各BAMブロックが、データブロック毎のビットによって対応するデータブロックがメンバに割り当て済みか否かを示すBAM記述を保持するBAM部と、データブロックが割り当てられたメンバのメンバ名、先頭データブロックのアドレスおよび終端データブロックのアドレスが格納されるディレクトリエントリから構成されるディレクトリ部とを含む領域共用ファイルを管理する領域共用ファイル管理装置として機能させるためのプログラムであって、
前記コンピュータを、
メンバの削除時、削除対象となるメンバを構成するデータブロックを、データブロック間のチェーンを辿りながら求めると共に該求めたデータブロックのアドレスをメモリ領域に格納し、前記メンバを構成する全てのデータブロックのアドレスを前記メモリ領域に格納した後、解放されるデータブロックを複数含むデータブロック群に対応するBAMブロックについては、前記メモリ領域に格納されたアドレスに基づいて一回の入出力でBAM記述を更新するメンバ削除手段として機能させるためのプログラム。 - 請求項6記載のプログラムにおいて、
前記メンバ削除手段が、解放されるデータブロックを複数含むデータブロック群に対応するBAMブロックを前記BAM部から入力し、該入力したBAMブロック中のBAM記述の内の、前記解放されるデータブロックに対応するビットを未使用に更新した後、前記BAM部に書き戻す構成を有することを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003124697A JP2004334255A (ja) | 2003-04-30 | 2003-04-30 | 領域共用ファイル管理装置およびメンバ削除方法並びにプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003124697A JP2004334255A (ja) | 2003-04-30 | 2003-04-30 | 領域共用ファイル管理装置およびメンバ削除方法並びにプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004334255A true JP2004334255A (ja) | 2004-11-25 |
Family
ID=33502159
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003124697A Pending JP2004334255A (ja) | 2003-04-30 | 2003-04-30 | 領域共用ファイル管理装置およびメンバ削除方法並びにプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004334255A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007220029A (ja) * | 2006-02-20 | 2007-08-30 | Nec Corp | 領域共用ファイル管理装置、領域共用ファイルの削除メンバの復旧方法、及びプログラム |
-
2003
- 2003-04-30 JP JP2003124697A patent/JP2004334255A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007220029A (ja) * | 2006-02-20 | 2007-08-30 | Nec Corp | 領域共用ファイル管理装置、領域共用ファイルの削除メンバの復旧方法、及びプログラム |
JP4586742B2 (ja) * | 2006-02-20 | 2010-11-24 | 日本電気株式会社 | 領域共用ファイル管理装置、領域共用ファイルの削除メンバの復旧方法、及びプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9454534B2 (en) | Method and apparatus for fault-tolerant memory management | |
JP5142995B2 (ja) | メモリページ管理 | |
US8472449B2 (en) | Packet file system | |
JP2013533991A (ja) | 記憶装置の間で移動されるトラックのエクステントへの書込み動作の管理方法、システム、及びコンピュータ・プログラム | |
JP2002202902A (ja) | パーティション作成方法および削除方法、プログラムを記録した記録媒体、情報処理装置 | |
CN100403279C (zh) | 信息记录介质的数据区域管理方法、使用数据区域管理方法的信息处理装置 | |
JP5821744B2 (ja) | データ有無判定装置、データ有無判定方法及びデータ有無判定プログラム | |
JP2553751B2 (ja) | ディスクセクタ代替方式 | |
US7437528B1 (en) | Gang blocks | |
JP2004334255A (ja) | 領域共用ファイル管理装置およびメンバ削除方法並びにプログラム | |
US8782353B2 (en) | Information processing device having data field and operation methods of the same | |
US20200133776A1 (en) | Methods, devices and computer readable medium for managing a redundant array of independent disks | |
JP2010191903A (ja) | 分散ファイルシステムのストライピング種別選択方法及びその分散ファイルシステム | |
JP2004013786A (ja) | データ記憶方法およびデータ記憶制御装置 | |
JP3061385B2 (ja) | データ管理装置およびデータ管理方法 | |
JPS62287350A (ja) | インデツクス一括更新方式 | |
JP2017146722A (ja) | ストレージ装置 | |
JP2008134777A (ja) | ファイル割当テーブルのキャッシュ方法 | |
JPH0362137A (ja) | 可変長ブロック群による長大データの格納方法 | |
JP2649675B2 (ja) | 光ディスクの記憶管理方法 | |
JP6794827B2 (ja) | ストレージ管理装置、ストレージシステム、方法およびプログラム | |
JP2689116B2 (ja) | 光ディスクの記憶管理方法 | |
JPS62297948A (ja) | デ−タベ−スの障害回復方式 | |
JP2014137749A (ja) | ストレージ装置、書込制御方法、および書込制御プログラム | |
JPH06348572A (ja) | マルチ機構ディスクシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070821 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080311 |