特開2015-225554(P2015-225554A)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧
特開2015-225554テープ記録システム用ファイルシステムを介した読み書きする方法
<>
  • 特開2015225554-テープ記録システム用ファイルシステムを介した読み書きする方法 図000003
  • 特開2015225554-テープ記録システム用ファイルシステムを介した読み書きする方法 図000004
  • 特開2015225554-テープ記録システム用ファイルシステムを介した読み書きする方法 図000005
  • 特開2015225554-テープ記録システム用ファイルシステムを介した読み書きする方法 図000006
  • 特開2015225554-テープ記録システム用ファイルシステムを介した読み書きする方法 図000007
  • 特開2015225554-テープ記録システム用ファイルシステムを介した読み書きする方法 図000008
  • 特開2015225554-テープ記録システム用ファイルシステムを介した読み書きする方法 図000009
  • 特開2015225554-テープ記録システム用ファイルシステムを介した読み書きする方法 図000010
  • 特開2015225554-テープ記録システム用ファイルシステムを介した読み書きする方法 図000011
  • 特開2015225554-テープ記録システム用ファイルシステムを介した読み書きする方法 図000012
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2015-225554(P2015-225554A)
(43)【公開日】2015年12月14日
(54)【発明の名称】テープ記録システム用ファイルシステムを介した読み書きする方法
(51)【国際特許分類】
   G06F 12/00 20060101AFI20151117BHJP
   G06F 3/06 20060101ALI20151117BHJP
【FI】
   G06F12/00 514K
   G06F3/06 302A
   G06F3/06 303G
【審査請求】未請求
【請求項の数】10
【出願形態】OL
【全頁数】24
(21)【出願番号】特願2014-110671(P2014-110671)
(22)【出願日】2014年5月28日
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
2.WINDOWS
3.AIX
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】板垣 浩
(72)【発明者】
【氏名】渡邊 輝江
(72)【発明者】
【氏名】三間 慎介
(72)【発明者】
【氏名】長谷川 徹
(72)【発明者】
【氏名】芦田 貴
(57)【要約】      (修正有)
【課題】キャッシュを利用したテープ記録システムにおいて、テープカートリッジの排出を短時間にする方法を提供する。
【解決手段】ホストのアプリケーションから受け取った読み書きアクセスのファイルに含まれる対象データを保管するためのキャッシュであって、読込みキャッシュ、書込みキャッシュ、およびインデックスファイルを保管するインデックス・キャッシュを設ける。メディアをドライブから排出する際に、インデックス・キャッシュに保管された更新されたインデックスファイルをメディアのインデックス・パーティションに書込むことと、書込みキャッシュに保管された対象データをメディアのデータ・パーティションにファイルシステムを介さず書込むことと、を含む。テープカートリッジのアンロードの時の全キャッシュのデータの読み書きを高速化できる。
【選択図】図1
【特許請求の範囲】
【請求項1】
ホストに接続されテープ装置を含むテープ記録システムにおいて、前記テープ装置に搭載されたメディアに対してファイルシステムを介したファイルの読み書きする方法であって、
(a)ホストのアプリケーションから受け取った読み書きアクセスのファイルに含まれる対象データを保管するためのキャッシュであって、読込みアクセスによりメディアからの対象データを保管する読込みキャッシュ、書込みアクセスによるアプリケーションからの対象データを保管する書込みキャッシュ、および前記メディアのインデックス・パーティションから取得したインデックスファイルを保管するインデックス・キャッシュに区分けされ前記キャッシュを設けることと、
(b)前記読み書きアクセスにより前記メディアをドライブに搭載して、メディアのインデックス・パーティションに保管された複数のファイルのメタ情報を含むインデックスファイルをインデックス・キャッシュに読み込むことと、
(c)前記読み書きアクセスに対して、
対象データを書込みキャッシュ及び読み込みキャッシュに保管すること、および、
前記書込みキャッシュに保管された対象データについて、前記対象データの位置メタ情報を反映するように前記インデックスファイルを更新して最新のインデックスファイルをインデックス・キャッシュに保管することと、
(d)前記メディアをドライブから排出する際に、
インデックス・キャッシュに保管された更新されたインデックスファイルをメディアのインデックス・パーティションに書込むことと、および、書込みキャッシュに保管された対象データを前記メディアのデータ・パーティションにファイルシステムを介さず書込む ことと、を含むファイルの読み書き方法。
【請求項2】
読み込みアクセスの対象データを受け取る前記(c)のステップは、
前記対象データが、書き込みキャッシュおよび読み込みキャッシュに存在することを確認することと、
書込みキャッシュに前記対象データが存在する場合、前記対象データをアプリケーションに送出することと、
読込みキャッシュに対象データが存在する場合、前記対象データをアプリケーションに送出することと、
対象データが書込みキャッシュおよび読込みキャッシュに存在しない場合、メディアからファイルシステムを使用して対象データをアプリケーションに送出することと、
を含む請求項1に記載の方法。
【請求項3】
読み込みアクセスの対象データを受け取る前記(c)のステップは、読込みキャッシュがフルになった場合にもっとも使われていないデータを前記キャッシュから破棄して、前記キャッシュの空いたスペースにメディアから対象データを読み込み前記対象データの排出をすること、を含む請求項1に記載の方法。
【請求項4】
書込みアクセスの対象データを受け取る前記(c)のステップは、
書込みアクセスの対象データが既に書込みキャッシュに保管されている複数のデータを含む複数のファイルの内の特定のファイルに含まれるかどうかを確認し、対象データおよび前記既に書き込まれた複数のデータをファイルごとに並べ替えることと、
インデックス・キャッシュに保管されたインデックスファイルに、前記ファイルごとに並べ替えた対象データを含む複数のデータのメタ情報を反映するようにインデックス・キャッシュ上のインデックスファイルを更新することと、
【請求項5】
インデックス・キャッシュ上のインデックスファイルを更新する前記ステップは、
書込みキャッシュに保管された既存のデータと前記対象データとが連続であるか確認することと、
前記対象データが書込みキャッシュに済みデータの少なくもと1つと連続である場合には、連続するそれらデータを連結してインデックスファイルをフラグメント化しないように更新することと、
を含む請求項4に記載の方法。
【請求項6】
インデックス・キャッシュのインデックスファイルを更新する前記ステップは、
書込みキャッシュに書き込まれた順番で、書き込みデータをそれらのオフセットおよびサイズで関連付けて書込み順のデータの表を一時ファイルとして作成することと、
前記書込み順のデータ表に含まれるオフセットおよびサイズに基づいて、同じファイルに含まれる連続するデータを連結する接続データの表を一時ファイルとして作成することと、
前記接続データ表に含まれるオフセットおよびサイズに基づいて、書込みキャッシュに残っている複数のデータのエクステントを計算し、前記エクステントを前記メディアから取得した最新のインデックスファイルに追加してインデックス・キャッシュ上のインデックスファイルを更新すること、
を含む請求項5に記載の方法。
【請求項7】
書込みキャッシュに保管されたデータを、インデックス・キャッシュ上のインデックスファイルに記録している順番でメディアに書き出すことと、
全てのデータが書き出されたら、インデックス・キャッシュ上のインデックスファイルを、メディアのデータ・パーティションおよびインデックス・パーティションに書き込むこと、を含む請求項5に記載の方法。
【請求項8】
前記キャッシュを、ホスト側の記憶装置に設ける請求項1に記載の方法。
【請求項9】
ホストに接続されテープ装置を含むテープ記録システムにおいて、前記テープ装置に搭載されたメディアに対してファイルシステムを介したファイルの読み書きするプログラムであって、
(a)ホストのアプリケーションから受け取った読み書きアクセスのファイルに含まれる対象データを保管するためのキャッシュであって、読込みアクセスによりメディアからの対象データを保管する読込みキャッシュ、書込みアクセスによるアプリケーションからの対象データを保管する書込みキャッシュ、および前記メディアのインデックス・パーティションから取得したインデックスファイルを保管するインデックス・キャッシュに区分けされ前記キャッシュを設けることと、
(b)前記読み書きアクセスにより前記メディアをドライブに搭載して、メディアのインデックス・パーティションに保管された複数のファイルのメタ情報を含むインデックスファイルをインデックス・キャッシュに読み込むことと、
(c)前記読み書きアクセスに対して、
対象データを書込みキャッシュ及び読み込みキャッシュに保管すること、および、
前記書込みキャッシュに保管された対象データについて、前記対象データの位置メタ情報を反映するように前記インデックスファイルを更新して最新のインデックスファイルをインデックス・キャッシュに保管することと、
(d)前記メディアをドライブから排出する際に、
インデックス・キャッシュに保管された更新されたインデックスファイルをメディアのインデックス・パーティションに書込むことと、および、書込みキャッシュに保管された対象データを前記メディアのデータ・パーティションにファイルシステムを介さず書込むことと、
をテープ記録システムに実行させるプログラム。
【請求項10】
ホストに接続されテープ装置を含むテープ記録システムにおいて、前記テープ装置に搭載されたメディアに対してファイルシステムを介したファイルの読み書きするテープ記録システムであって、
(a)ホストのアプリケーションから受け取った読み書きアクセスのファイルに含まれる対象データを保管するためのキャッシュであって、読込みアクセスによりメディアからの対象データを保管する読込みキャッシュ、書込みアクセスによるアプリケーションからの対象データを保管する書込みキャッシュ、および前記メディアのインデックス・パーティションから取得したインデックスファイルを保管するインデックス・キャッシュに区分けされ前記キャッシュを設けることと、
(b)前記読み書きアクセスにより前記メディアをドライブに搭載して、メディアのインデックス・パーティションに保管された複数のファイルのメタ情報を含むインデックスファイルをインデックス・キャッシュに読み込むことと、
(c)前記読み書きアクセスに対して、
対象データを書込みキャッシュ及び読み込みキャッシュに保管すること、および、
前記書込みキャッシュに保管された対象データについて、前記対象データの位置メタ情報を反映するように前記インデックスファイルを更新して最新のインデックスファイルをインデックス・キャッシュに保管することと、
(d)前記メディアをドライブから排出する際に、
インデックス・キャッシュに保管された更新されたインデックスファイルをメディアのインデックス・パーティションに書込むことと、および、書込みキャッシュに保管された対象データを前記メディアのデータ・パーティションにファイルシステムを介さず書込むことと、を実行するテープ記録システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、テープ記録システム用のファイルシステムを介した読み書きする方法に関する。詳しくは、本発明は、キャッシュの利用したファイルのデータの高速な読み書きにより、テープカートリッジ(テープ、メディア)の排出(unload)を短時間にする方法に関する。
【背景技術】
【0002】
テープドライブ用ファイルシステムのLTFS(Linear Tape FileSystem)は、メディアに、OS(Linux,Windows,AIX)上のアプリケーションからファイル単位でデータを書込み・読み出しすることを可能にする。LTFSは、テープドライブ用ファイルシステムとして、第5世代LTO(Linear Tape Open)テープドライブ(LTO5)及び第4世代IBMエンタープライズテープドライブTS1140と共に利用することができる。LTFSによって、ユーザ(アプリケーション)はテープカートリッジをリムーバブルメディアとしてドライブに搭載および排出の操作で、大容量外部記録メディアとして使用することができる。テープドライブによるメディアの読み書きアクセスはメディアの排出、搭載、およびメディア上のデータの頭出しの操作にかかる時間が秒単位であり、アクセスパフォーマンスを劣化させる。
【0003】
一般に、低速のストレージによる待ち時間を軽減するために、例えば高速のストレージ(例えば、HDD,Flashストレージ)をキャッシュとして利用する手法が知られている。LTFSを用いてテープカートリッジ(LTFSテープ)を読み書きする場合、この手法は有用であると考えられる。LTFSをテープカートリッジのようなリムーバブルメディアに対して使用する場合、その対象メディアがドライブから排出される際には、キャッシュ上のデータを全てリムーバブルメディアに書き出す。その際、キャッシュ上のデータの全てを、一気にLTFSテープに書き戻すことになる。メディアの排出がリクエストされてからの動作開始となるので、この書き戻し作業は短時間であればあるほど望ましい。従来のようなキャッシュの利用において、テープドライブ用ファイルシステムのLTFSの高速化を考慮されていない。
【0004】
特許文献1は、小さいファイルを、キャッシュ上でまとめて書くことで容量を効率よく使に、容量の節約できる技術を示す。
【0005】
特許文献2は、テープ上のデータを識別する情報をデータの最後尾に書き込む技術である。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特許公開2003−150413号公報
【特許文献2】特許公開2002−182952号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
そこで、本発明では、ディスク上にLTFSの操作を強化するキャッシュを用意することを考える。本発明では、キャッシュにデータのみでなくインデックスファイルも一時保管し、以降の読み書き操作はキャッシュ上で行うこと考える。
【0008】
従って、本発明の目的は、メディアの排出リクエストに対してキャッシュからの書き出し作業を短時間にする方法を提供することである。
【課題を解決するための手段】
【0009】
かかる目的のもと、本発明は、ホストに接続されテープ装置を含むテープ記録システムにおいて、前記テープ装置に搭載(ロード)されたメディア(テープ)に対してファイルシステムを介したファイルの読み書きする方法である。この方法は、
(a)ホストのアプリケーションから受け取った読み書きアクセス(LTFS−API)のファイルに含まれる対象データを保管するためのキャッシュであって、読込みアクセスによりメディアからの対象データを保管する読込みキャッシュ、書込みアクセスによるアプリケーションからの対象データを保管する書込みキャッシュ、および前記メディアのインデックス・パーティションから取得したインデックスファイルを保管するインデックス・キャッシュに区分けされ前記キャッシュを設けることと、
(b)前記読み書きアクセスにより前記メディアをドライブに搭載して、メディアのインデックス・パーティション(IP)に保管された複数のファイルのメタ情報を含むインデックスファイルをインデックス・キャッシュに読み込むことと(第1特殊API)、
(c)前記読み書きアクセス(LTFS−API)に対して、
対象データを書込みキャッシュ及び読み込みキャッシュに保管すること、および、
前記書込みキャッシュに保管された対象データについて、前記対象データの位置メタ情報(エクステント)を反映するように前記インデックスファイルを更新して最新のインデックスファイルをインデックス・キャッシュに保管することと、
(d)前記メディアをドライブから排出(アンロード)する際に(LTFS−API)、
インデックス・キャッシュに保管された更新されたインデックスファイルをメディアのインデックス・パーティション(IP)に書込むことと(第2特殊API)、および、書込みキャッシュに保管された対象データ(ファイルの一部又は全部)を前記メディアのデータ・パーティション(DP)にファイルシステムを介さず書込むことと(第3特殊API)、を含む。
【0010】
また、ファイルシステムを介したファイルの読み書きする前記方法において、読み込みアクセス(LTFS−API)の対象データを受け取る前記(c)のステップは、
前記対象データが、書き込みキャッシュおよび読み込みキャッシュに存在することを確認することと、
書込みキャッシュに前記対象データが存在する場合、前記対象データをアプリケーションに送出することと、
読込みキャッシュに対象データが存在する場合、前記対象データをアプリケーションに送出することと、
対象データが書込みキャッシュおよび読込みキャッシュに存在しない場合、メディアからファイルシステムを使用して対象データをアプリケーションに送出することと、 を含むことを特徴とする。
【0011】
また、読み込みアクセスの対象データを受け取る前記(c)のステップは、読込みキャッシュがフルになった場合にもっとも使われていないデータを前記キャッシュから破棄して、前記キャッシュの空いたスペースにメディアから対象データを読み込み前記対象データの排出をすることを特徴とする。
【0012】
また、ファイルの読み書きする前記方法において、書込みアクセスの対象データを受け取る前記(c)のステップは、
書込みアクセスの対象データを受け取る前記(c)のステップは、
書込みアクセスの対象データが既に書込みキャッシュに保管されている複数のデータを含む複数のファイルの内の特定のファイルに含まれるかどうかを確認し、対象データおよび前記既に書き込まれた複数のデータをファイルごとに並べ替えることと、
インデックス・キャッシュに保管されたインデックスファイルに、前記ファイルごとに並べ替えた対象データを含む複数のデータのメタ情報を反映するようにインデックス・キャッシュ上のインデックスファイルを更新することと、を含むことを特徴とする。
【0013】
また、ファイルの読み書きする方法において、インデックス・キャッシュ上のインデックスファイルを更新する前記ステップは、
書込みキャッシュに保管された既存のデータと前記対象データとが連続であるか確認することと、
前記対象データが書込みキャッシュに済みデータの少なくもと1つと連続である場合には、連続するそれらデータを連結してインデックスファイルをフラグメント化しないように更新することとを含むことを特徴とする。
【0014】
また、ファイルの読み書きする方法において、インデックス・キャッシュ上のインデックスファイルを更新する前記ステップ(c)は、
書込みアクセスの対象データが、既に書込みキャッシュに保管されている複数のデータを含む複数のファイルの内の特定のファイルに含まれるかどうかを確認すること、
前記対象データが同一ファイルに含まれる場合、書込みキャッシュに保管された既存のデータと前記対象データとが連続であるか確認することと、
前記対象データが書込みキャッシュに済みデータの少なくもと1つと連続である場合には、連続するそれらデータを連結してインデックスファイルをフラグメント化しないように更新することとを含むことを特徴とする。
【0015】
また、ファイルの読み書きする方法において、
書込みキャッシュに保管されたデータを、インデックス・キャッシュ上のインデックスファイルに記録している順番でメディアに書き出すことと(第3特殊API)、
全てのデータが書き出されたら、インデックス・キャッシュ上のインデックスファイルを、メディアのデータ・パーティション(DP)およびインデックス・パーティション(IP)に書き込むことと(第2特殊API)、を含むこと特徴とする。
【0016】
また、ファイルの読み書きする方法において、前記キャッシュをホスト側の記憶装置に設けることを特徴とする。
【0017】
更に、かかる目的のもと、ホストに接続されテープ装置を含むテープ記録システムにおいて、前記テープ装置に搭載(ロード)されたメディア(テープ)に対してファイルシステムを介したファイルの読み書きするためのプログラムである。このプログラムは、
(a)ホストのアプリケーションから受け取った読み書きアクセス(LTFS−API)のファイルに含まれる対象データを保管するためのキャッシュであって、読込みアクセスによりメディアからの対象データを保管する読込みキャッシュ、書込みアクセスによるアプリケーションからの対象データを保管する書込みキャッシュ、および前記メディアのインデックス・パーティション(IP)から取得したインデックスファイルを保管するインデックス・キャッシュに区分けされ前記キャッシュを設けることと、
(b)前記読み書きアクセスにより前記メディアをドライブに搭載して、メディアのインデックス・パーティションに保管された複数のファイルのメタ情報を含むインデックスファイルをインデックス・キャッシュに読み込むことと、
(c)前記読み書きアクセス(LTFS−API)に対して、
対象データを書込みキャッシュ及び読み込みキャッシュに保管すること、および、
前記書込みキャッシュに保管された対象データについて、前記対象データの位置メタ情報(エクステント)を反映するように前記インデックスファイルを更新して最新のインデックスファイルをインデックス・キャッシュに保管することと、
(d)前記メディアをドライブから排出(アンロード)する際に(LTFS−API)、
インデックス・キャッシュに保管された更新されたインデックスファイルをメディアのインデックス・パーティション(IP)に書込むこと(第2特殊API)、および、書込みキャッシュに保管された対象データ(ファイルの一部又は全部)を前記メディアのデータ・パーティション(DP)にファイルシステムを介さず書込むことと(第3特殊API)、
をテープ記録システムに実行させるプログラム。
【0018】
更に、かかる目的のもと、本発明は、ホストに接続されテープ装置を含むテープ記録システムにおいて、前記テープ装置に搭載(ロード)されたメディア(テープ)に対してファイルシステムを介したファイルの読み書きするテープ記録システムである。このテープ記録システムは、
(a)ホストのアプリケーションから受け取った読み書きアクセス(LTFS−API)のファイルに含まれる対象データを保管するためのキャッシュであって、読込みアクセスによりメディアからの対象データを保管する読込みキャッシュ、書込みアクセスによるアプリケーションからの対象データを保管する書込みキャッシュ、および前記メディアのインデックス・パーティション(IP)から取得したインデックスファイルを保管するインデックス・キャッシュに区分けされ前記キャッシュを設けることと、
(b)前記読み書きアクセスにより前記メディアをドライブに搭載して、メディアのインデックス・パーティションに保管された複数のファイルのメタ情報を含むインデックスファイルをインデックス・キャッシュに読み込むことと、
(c)前記読み書きアクセス(LTFS−API)に対して、
対象データを書込みキャッシュ及び読み込みキャッシュに保管すること、および、
前記書込みキャッシュに保管された対象データについて、前記対象データの位置メタ情報(エクステント)を反映するように前記インデックスファイルを更新して最新のインデックスファイルをインデックス・キャッシュに保管することと、
(d)前記メディアをドライブから排出(アンロード)する際に(LTFS−API)、
インデックス・キャッシュに保管された更新されたインデックスファイルをメディアのインデックス・パーティション(IP)に書込むこと(第2特殊API)、および、書込みキャッシュに保管された対象データ(ファイルの一部又は全部)を前記メディアのデータ・パーティション(DP)にファイルシステムを介さず書込むことと(第3特殊API)、
を実行する。
【発明の効果】
【0019】
上述の本発明の適用により、テープカートリッジのアンロードの時の全キャッシュのデータの読み書きを速くできるためカートリッジの排出を高速化できる。また、テープドライブ用ファイルシステムのファイルの何度のもの変更書込みでも、データのフラグメント(fragment)化を抑制できる。
【図面の簡単な説明】
【0020】
図1】本発明のシステム構成を示す。
図2】LTFSの2つのパーティションにより区分けされたテープを示す。
図3】本発明が適用される、ホストおよびテープドライブ(磁気テープ装置)を含むテープストレージシステム(テープ記録システム)のハードウェア構成例を示す。
図4】LTFSフォーマットでのメディアのインデックス・パーティションとデータ・パーティションの内容を示す。
図5】1つのファイルを部分的な書き換えの場合のインデックスファイルに含まれる位置メタ情報(エクステント)の変更内容を示す。
図6】読込みアクセス(Readアクセス)を受け取った場合フローチャートを示す。
図7】読込みキャッシュ(Readキャッシュ)へのデータの読み込みのフローチャートを示す。
図8】書込みアクセス(Writeアクセス)を受け取った場合のフローチャートを示す。
図9】書込みアクセス(Writeアクセス)を受け取った場合のインデックスの更新フローチャートおよびキャッシュテーブルを示す。
図10】テープカートリッジを排出する場合のフローチャートを示す。
【発明を実施するための形態】
【0021】
ホストのアプリケーションからファイルシステムを介して読み書きされる場合、キャッシュを設けてテープ記録システム(テープストレージ・システム)への書込み、読込み、メディアの排出を行う場合の実施の形態(実施例)を説明する。
図1は、本発明のテープ記録システムの構成を示す。
テープ記録システムは、ホストのアプリケーションに接続されたテープ装置およびテープライブラリである。実施例では、テープAとテープBというカートリッジが現在使用中である場合を例示する。読込み/書込みのキャッシュに対象データが保管されると共に、それらの別々のインデックスファイルが共にインデックス・キャッシュ上に置かれている。
【0022】
テープストレージ用ファイルシステムのためのキャッシュを用意する際に、データのみでなくインデックスファイルもキャッシュし、以降の操作はキャッシュ上で行う。LTFSテープの排出の際に、キャッシュ、例えばディスク上からLTFSテープにデータを書き戻す時に、LTFSのAPI(LTFS−API)を介さないで直接LTFSテープにデータを書き込む。ファイルシステムのオーバーヘッドを排除して、テープドライブのネイティブのスピードでデータを書き出すことを可能とする。
【0023】
本発明を適用する例として、IBM LTFS LE(Library Edition) のような、LTFSによるアクセスを提供するソフトウェアを使用する、アプリケーションを想定する。
アプリケーションはユーザにファイルシステムを提供し、ディスク上のキャッシュをコントロールし、LTFSソフトウェアが使用するテープドライブを独占的に使用している。ディスク上のキャッシュには、読込みキャッシュ(Readキャッシュ)と書込みキャッシュ(Writeキャッシュ)の2種類のキャッシュとインデックスファイルを保管するインデックス・キャッシュを用意する。複数のテープカートリッジを同時に扱う場合には、使用中のテープカートリッジごとにこれらのキャッシュを用意する。本発明ではキャッシュ・マネージャ(Cach Manager)が、ホストのアプリケーションからのLTFSを介した読み書きアクセス(LTFS- APIによるアクセス)の他に3つの特殊APIを用意する。
(第1特殊API)テープ上のインデックスファイルを読み出すAPI。
(第2特殊API)外部で用意したインデックスファイルを書き込むAPI。
(第3特殊API)提供されるデータをデータ・パーティションの最後尾から連続して書き込むAPI。
これらは一例であり、キャッシュの部分およびキャッシュ・マネージャは、ファイルシステム(LTFSソフトウェア)に設けてもよい。また、キャッシュ・マネージャ等は、ホスト側ばかりでなくテープドライブ側に組み込んでもよい。
【0024】
本発明の実施例の基本動作を説明する。
本発明のキャッシュ・マネージャは、従来通りアプリケーション(ユーザ)にファイルシステムのインターフェース(LTFS−API)を提供する。アプリケーションがLTFS上のファイルにアクセスを要求したときに、キャッシュ・マネージャはインデックスファイルをテープから読み取り、キャッシュする。LTFSテープがドライブから排出されるまで、対象テープ上のファイルへのアクセスは、テープ上のインデックスファイルではなく、キャッシュ上のインデックスファイルを使用して行われる。
【0025】
ファイルへの書込みアクセス(Writeアクセス)が発生した場合、書込みキャッシュ→読込みキャッシュの順に対象データが存在しないか確認する。対象データが存在する場合はこれらキャッシュのデータ内容を提供する。対象データが存在しなかった場合にはテープ上から該当データを読み出す。読み出された部分は読込みキャッシュに保管される。
【0026】
ファイルへのWriteアクセスが発生した場合、対象ファイルへの変更部分は書込みキャッシュに保存され、インデックス・キャッシュに保管されたインデックスファイルが更新される。この時、キャッシュに保管されているインデックスファイルは、キャッシュ上のデータがテープ上へ書き出された後の状態を表している。
【0027】
読込みキャッシュがフルとなった場合、もっとも使われていない(LRU:Least Recently Used)データからキャッシュ・データを破棄する。書込みキャッシュがフルとなった場合、もっとも使われていない(LRU)データをテープ上に、LTFSのファイルシステムAPIを使用して書き出す。書き出し完了後、キャッシュ上のインデックスファイルを更新する。この時、書き出し完了後のテープから再度インデックスファイルを読み取り、その後に、キャッシュ上に残っているデータが書かれていくことを考慮して、インデックスファイルを更新する。
【0028】
本発明を具体的な例で説明する。書込みキャッシュ内のデータA,B,Cが、この順にインデックス上にリストされているとき、データBがLRUデータとして書き出された場合、インデックスファル上のデータの並びを、データA、B,Cから、データB,A,Cと並べ替える必要がある。ここで、データBまでを含んだインデックスファイルをテープから読み取ることができるので、その後ろに、データA,Cを追記する形で、キャッシュ上のインデックスファイルを更新する。ここでは便宜上「Fullとなった場合」と表現しているが、実装上はいくらかのマージンを確保して、記述した動作を行うことになる。
【0029】
図2は、LTFSの2つのパーティションにより区分けされたテープを示す。
LTO5テープドライブは、テープの長手方向に沿った書き込み領域のラップ(wrap)を往復しながらデータを書く。LTFSではこのラップ2本分(1往復分)をインデックス・パーティションとして利用している。テープの先端部(BOT:Beginning of Tape)から終端部(EOT:End of tape)に渡ってIPとDPとの2つに区分される。ヘッドが同時に読み書きするトラック群であり、トラック16本がラップ1本に相当する。LTO5のテープカートリッジでは、テープ長手方向は約800m、横手方向はラップ数80本の幅である。IPとDPとは2本のラップの保護領域(guard band)で区分される。テープはラップの長手方向に前後に進行し、BOTおよびEOTにおいて進行する向きを反転することをラップターン(wrap turn)と呼ぶ。テープドライブのヘッドに対してテープの長手方向のBOTからEOTの移動時間は60〜90秒である。長手方向の半分のテープ移動時間は30〜45秒程度である。LTO5のテープカートリッジの記憶容量は、約1TBである。例えば、メディア情報を含むIPの容量はユーザが変更できるが、典型的には全体容量の5%(50GB)を占める。
【0030】
テープドライブ用のファイルシステム、例えばLTFSでは、メディア上に書かれたデータをファイルとして見せることができる。ユーザがLTFSを利用してテープメディアに書き込むと、テープメディアではファイル本体の他、インデックスファイル(単にインデックスとも言う)と呼ばれるメタ情報をテープメディアに書き込む。インデックスは、メタ情報としてファイル名やファイル作成日、及び、メディア上の位置、サイズ、ファイル内のオフセットなどを含む位置メタ情報(図5で説明されるエクステント)を含む。IPには、主に最新のインデックスが書き込まれる。DPには、ファイルの本体、及び、インデックスの履歴が書き込まれる。
【0031】
LTFS を用いてテープメディア上のファイルを読み書きする場合、レコードと呼ばれる単位でデータの読み書きを行う。レコードは、LTFSではブロックと読んでLTFSフォーマットを与える。ブロックは、ファイルのデータが記録されるパーティション毎にパーティションの先頭から何番目のブロックであるという番号で管理される。各ファイルのインデックスファイル、ファイルのデータに対するブロックの番号で指示される位置メタ情報で構成される。
【0032】
図3は、本発明が適用される、ホストおよびテープドライブ(磁気テープ装置)を含むテープストレージシステム(テープ記録システム)のハードウェア構成例を示す。
テープドライブ60は、ホスト300のアプリケーションからファイルシステム(LTFS)を介してファイルの読み書き要求を受け取る。テープドライブは、通信I/F(インターファース)110と、バッファ120と、記録チャネル130と、読書きヘッド140と、制御部150と、位置決め部160と、モータドライバ170と、モータ180とを含む。
【0033】
インターフェース110は、ネットワークを介してホスト300との通信を行う。例えばインターフェース110は、ホスト300から、テープカートリッジ(メディア、テープ、メディア)40へのデータの書込みを指示する書込みコマンドを受信する。またインターフェース110は、ホスト300から、メディア40からのデータ読出しを指示する読出しコマンドを受信する。インターファース110は、書込みデータの圧縮を読み出しデータの非圧縮を行う機能を有し、実際のデータに対してメディアへの記憶容量を約2倍近く高めている。
【0034】
テ−プドライブ60は、ホスト300のアプリケーションから送られた複数のレコードで構築されるデータセット(DataSet:DSと言う)単位でメディア40への読み書きを行う。DSの典型的な大きさは4MBである。ホスト300のアプリケーションは、ファイルシステム(例えばLTFS−API)によりファイルを指定して読み書きアクセスをテープドライブ60に発行する。ファイルシステムは、SCSIコマンドのレベルでレコードをテープドライブに書込み/読み出し要求(Write/Read)を送る。DSは複数のレコードで構成される。
【0035】
各DSは、データセットに関する管理情報を含む。ユーザデータはレコード単位で管理される。管理情報はデータセット情報テーブル(DSIT:Data Set Information Table)に含まれる。DSITは、そのDSに含まれるレコード又はブロック数およびFM(Filemark)数、更にはメディアの先頭から書かれた累積レコード数および累積FM数、を含む。
【0036】
バッファ120は、メディア40に書込むべきデータ、また、メディアから読み出したデータを一時的に蓄積するメモリである。例えばバッファ120は、DRAM(Dynamic Random Access Memory)によって構成される。記録チャネル130は、バッファ120に蓄積されたデータをメディア40に書き出すため、またはメディア40から読み出されたデータをバッファ120に一時的に蓄積するために用いられる通信経路である。
【0037】
読書きヘッド140は、データ読書き素子を有し、メディア40へのデータの書込み及びメディアからのデータの読出しを行う。本実施形態に係る読書きヘッド140はまたサーボ読取り素子を有し、メディア40に設けられたサーボトラックから信号を読み取る。位置決め部160は、カートリッジ40の短手方向(幅方向)に読書きヘッド140の移動を指示する。モータドライバ170は、モータ180を駆動する。
【0038】
テ−プドライブ60は、ホスト300から受取ったコマンドに従って、データのテ−プへの書込みやテ−プからの読出しをする。テ−プドライブ60は、バッファ、読み書きチャネル、ヘッド、モ−タ、テ−プを巻きつけるリ−ルと、読み書き制御と、ヘッド位置制御システムと、モ−タドライバとを含む。テ−プドライブは、テープカートリッジを着脱可能に搭載する。テ−プは、リ−ルの回転に伴い、長手方向に移動する。ヘッドは、テテープの長手方向に移動してデータを書き込んだり、テ−プからデータを読出したりする。また、テープカートリッジ40はカートリッジメモリ(CM:Cartridge Memory)と呼ばれる非接触不揮発性メモリを備える。テープカートリッジ40に搭載されたCMは、テープドライブ60により非接触的に読み書きされる。CMはカートリッジ属性を保管する。テープドライブは、読出し及び書込み時に、CMからカートリッジ属性を取り出して最適な読み書きができるようにする。
【0039】
制御部150は、テープドライブ60の全体の制御を行う。すなわち、制御部150は、インターフェースで受信したコマンドに従って、データのメディア40への書込み及びメディア40からのデータの読出しを制御する。また、制御部150は、読取られたサーボドラックの信号に従って位置決め部160を制御する。更に制御部150は、位置決め部160及びモータドライバ170を介してモータの動作を制御する。なお、モータドライバ170は制御部150に直接接続されてもよい。
【0040】
テープドライブ60は、更新対象のファイルが保管されたメディア40をロードしている。メディアからインデックスを読み出し、インデックスをキャッシュ80にコピーする。キャッシュ80はHDD、Flashストレージ(例えばSDD)、およびDRAMなどの外部記憶装置であり、テープドライブ60の側に含まれても良い。キャッシュはテープドライブ内のメモリ(DRAM)などであってもよい。LTFSは、テープドライブがメディアをロードすると同時に、メディアのIPに保管されたインデックスをキャッシュにコピーする。LTFSは、事前にキャッシュ80にコピーされているインデックスを参照して、ファイルのフラグメント化するかを確認できる。
【0041】
図4は、LTFSフォーマットでのメディアのインデックス・パーティションとデータ・パーティションの内容を示す。
(A)は、LTFSフォーマットで初期化した直後のテープメディアに書き込まれるメタ情報を示す。
テープメディアを LTFS フォーマットで初期化した直後には、テープメディアにはA)に示す情報が書き込まれる。
・FID(Format Identification Data set)は、テープドライブがテープメディアを初期化する際、テープメディアの先頭に書き込まれる特殊なデータであり、テープメディア上のパーティションの数や各パーティションの容量などの情報を持つ。
・VOL1 Labelは、ANSI Label とも呼ばれるもので、文字通りANSIで規定された一般的なフォーマットのラベルである。
・LTFS Labelは、LTFS フォーマットで規定されたラベルで、このテープメディアがLTFSフォーマットのどのバージョンに準拠してフォーマットされたかといった情報を保持するラベルである。ここでメディアに記録されるレコードのサイズを指示する。レコードサイズはブロック・サイズ(block size)とも言う。ファイルの終端がレコード・サイズ(例えば、512KB)に満たない場合でもレコードサイズを確保する。
・FM(Filemark)とは、テープメディアで一般的に利用される、いわば本のしおりのようなものであり、データの位置合わせ(seek)を行う際に利用される。
・Index#0とは、フォーマット時に書き込まれるインデックスであり、この段階ではファイル自体は一つも存在しないためファイル固有の情報は持たないもののテープメディアのボリューム名などの情報を保持するため書き込まれる。
【0042】
(B)は、LTFSフォーマットで初期化した後にファイルを書き込んだ場合にテープメディアに書き込まれる情報を示す。
LTFSフォーマットで初期化後、ファイル(File1)を書き込むと、テープメディア上に書き込まれたデータは(B)のようになる。太線で囲まれた部分が追加/更新されたデータである。Index#1はFile1のメタ情報(インデックス)を持つ。IPは最新のインデックスのみ保持する一方、DPはインデックスの履歴を保持する。インデックスを更新するタイミングはファイルシステムの実装にまかされており、例えば一定時間毎に更新したり、テープドライブからテープメディアを取り出す時のみ更新したりしている。更に使い続ける場合も、IPに置かれるインデックスは常に最新のインデックスのみが置かれ、DPは既存のインデックスを上書きすることなく、ファイルおよびインデックスを追記していく。
【0043】
図4の(C)は、(B)の状態の後、更にファイル(File2)を書き込んだ場合のテープメディアに書き込まれる情報を示す。
最初のファイル(File1)をテープメディア上に書き込んだ後、次のファイル(File2)を追加すると、格納されるFile1にFile2が連続してテープメディアに保管される。Index#2はFile1およびFile2のメタ情報(インデックス)を持つ。
【0044】
図4の(D)は、(B)の状態の後、File1の末尾に文字情報(File1-2)を追加してFile1を更新した後、メディア上に書き込まれるメタ情報を示す。
アプリケーションによるが、文書作成アプリケーション(例、マイクロソフト社のワード)は、メディア上に書き込まれたファイルを更新した後、1つのファイル(File1)がFile1-1及びFile1-2のようにフラグメント化(分散)して記録する。このようなファイルの書き換えでは、更新時のテープメディアの空き容量の減少分が更新した情報量に依存する。つまりメディアの容量は、ファイルサイズは大きくても更新量が少なければ空き容量はほとんど減らないため、デメリットはない。しかしながら、ファイルを読み出す際に位置合わせを実施する必要があるため、読み出しに時間がかかる。この位置合わせに時間がかかるという問題は、テープドライブはハードディスクと比較し位置合わせ所要時間が桁外れに長くかかるため、LTFS特有の課題であると言える。本発明では、フラグメント化したファイルの読み出し時間を向上する方法を提供することが課題である。
【0045】
図5は、1つのファイルを部分的な書き換えの場合のインデックスファイルに含まれる位置メタ情報(エクステント)の変更内容を示す。
インデックス(index)はファイルの位置情報(ポインター)をエクステント(extent)と呼ぶ形式で保管する。エクステントの要素(element)は、ファイルの部分(データ部分)の先頭のブロックの番号(StartBlock),その番号のブロック内での開始オフセット(ByteOffset),データのサイズ(ByteCount),データ部分のファイルでの位置(FileOffset)を含む。ユーザデータはブロックサイズで指定されたサイズ(例えば512KB)単位のレコード単位でメディアに記録される。
StartBlockは、テープメディアの先頭から固定サイズのブロックの順番を指す。ByteOffsetは、特定番号のブロック内で書き始めるオフセットを示す。
ByteCountは、エクステントで指示されるデータ部分のデータサイズを指す。
FileOffsetは、エクステントで指示されるデータ部分のファイル位置を指す。
ブロックは、レコードまたはFM(FileMaker:レコードの区切り)を含み、LTFS Labelにおいてサイズが指定される。ユーザデータはブロックサイズで指定されたサイズ(例えば512KB)単位のレコード単位でメディアに記録される。
【0046】
File1のサイズがLをメディアに記録されている最初の場合(A)、インデックスはエクステント(x)であることを示す。File1は、テープメディアの長手方向にレコード単位で連続して書き込まれている斜線部分である。レコードはエクステントではブロックに相当する。データ部分の書換えの場合(B)は、(A)でFile1を書き込んだ後、そのFile1のMバイトから600KBを250KBのレコードで書換えた場合エクステント(x)(y)(z)の情報を示す。エクステント(y)は、File1のデータ部分600KBバイトを変更して書き込まれる250KBのデータ(レコード)を指示する。データ部分の連続ではなく、後続するBlock番号(StartBlock:N+4)のレコードとして追記書込む。
エクステント(y)は、StartBlock=N+4のオフセットByteOffset=0から250KBを追記(append write)する。
エクステント(x)は、StartBlock=NのByteCount=Mまでのデータ(レコード)を指示す。ブロックNのオフセットMから600KBのデータは変更される。
エクステント(z)は、StartBlock=N+2のByteOffset=(M+600K)mod DからByteCount=L-(M+600)のデータ部分を示す。Dはブロックサイズ(例えば512KB)である。ByteOffsetはM+600KBをDで割った余りであり、ブロック番号N+2でのオフセットを与える。
File1のインデックスは、データ部分な書換えにより、複数のエクステント(x)→(y)→(z)にようにフラグメント(分散)化した配置情報を含む。LTFSによるFile1が編集されるとこのようにエクステントが分散し、変更されたFile1へのシーケンシャルなアクセスができない。エクステント(x)→(y)→(z)の位置合わせはテープの巻き戻し操作が発生させ、読み出しパフォーマンスを悪化させる課題を生じさせる。
【0047】
テープ記録システムの構成(図1図3)において、ホスト・アプリケーションからのファイルシステムを介した読込み書込み実施例の詳細説明を与える。本発明を実装したソフトウェア、即ちキャッシュ・マネージャは次の機能を実行する。
テープへの初回アクセスの段階で次のようにキャッシュを準備する。
該当テープ用の読込みキャッシュおよび書込みキャッシュを作成する。
該当テープのインデックスファイルを読み出して、そのインデックスファイル用の保管のためのキャッシュを作成する。
【0048】
図6は、読込みアクセス(Readアクセス)を受け取った場合フローチャートを示す。
(610) 対象データ(ファイルの全体あるいは部分)が書込みキャッシュにあるかどうかを確認する。
対象データが有る場合は何もせずステップ640を行う。
(620) 対象データが無い場合は対象データが読込みキャッシュにあるかどうか確認する。対象データが有る場合は何もせずステップ640を行う。
(630) 無い場合は対象データをテープからLTFSの提供するAPIを使用して読み込む。
(640) 書込みキャッシュあるいは読込みキャッシュから対象データを読み取り、ホスト・アプリケーションに送出する。
キャッシュとホスト又はテープ装置との間のデータ・トランザクションを管理するキャッシュ・マネージャが、読込みアクセスではこれらステップを繰り返す。
【0049】
図7は、読込みキャッシュ(Readキャッシュ)へのデータの読み込みのフローチャートを示す。
(710) 読込みキャッシュがデータでフルであるか確認する。
(720)キャッシュに空きがある場合、ファイルシステム(LTFS)を経由して、対象データをテープから読み取る。
(730)キャッシュがフルの場合、もっとも使われていない(LRU)データをキャッシュから削除して開いたスペースにデータを読み取る。
キャッシュ・マネージャが読み込みアクセスに対して上記ステップを繰り返す。
【0050】
図8は、書込みアクセス(Writeアクセス)を受け取った場合のフローチャートを示す。
キャッシュ・マネージャは、ホストのアプリケーションから書込みアクセスを受け取ると次のステップを行う。
(800)LTFS−APIを介した書込みアクセスのデータを書込みキャッシュに保管する。
(810) 書込みキャッシュがフルになる場合には、もっとも使われていない(LRU)データを、テープへLTFSのファイルシステムを経由して書き出す。具体的な書込みアクセス後、同期要求(Syncコマンド)により完全にテープにデータを確実に保存する。
(820) 書き出しの完了後テープから新しいインデックスファイルを取得してインデックス・キャッシュに保管する(第1特殊API)。このステップは、第1特殊APIにより再度テープ上のインデックスファイルを取得してキャッシュ上でもインデックスファイルが新しいことを保証する。
(830) テープから取得した新しいインデックスファイルにキャッシュに残っているデータに対応する情報を反映させ最新のインデックスファイルに更新する。ステップ820においてテープに書き出したデータ以外に、未だテープにキャッシュアウトされるべきデータが残っている。これら残余のデータを反映した最新のインデックスファイルを構築する必要がある。なお、インデックスファイルの再構築の際に書込みキャッシュ内でデータのインデックスファイルのフラグメント化をできるだけ抑えることを考慮する。図9の更新のフローチャートで後述するが、書込みキャッシュ上の同一ファイルに含まれる連続した複数のデータを連結してテープに書き込む手法を採用する。
【0051】
図9は、書込みアクセス(Writeアクセス)を受け取った場合のインデックスの更新フローチャートおよびキャッシュテーブルを示す。キャッシュ・マネージャが、書込みデータを管理するキャッシュテーブルを参照してキャッシュ内で最新のインデックスファイルを更新する処理を与える。
(b)は、キャッシュ内でデータを反映した最新のインデックスファイルを更新する際に、キャッシュ・マネージャが参照する書込みデータのリストとその位置・サイズを含むメタ情報を表したキャッシュテーブルを示す。
キャッシュテーブルは、キャッシュ内のデータ内容を記録・検索するために、書き込みキャッシュに書き込まれたデータ順番の書込み順データ表(上表)と、同じファイルに含まれるデータを連続させて1つのファイルを連続するデータを連結した連続データ表(下表)とを与える。書込み順データ表(上表)は、書込み時系列順でリストした一時ファイルである。この表は、各データにそのデータが含まれるファイル内でのオフセット(offset)およびサイズ(length)を示している。連続データ表は、書込みデータ順表のオフセットおよびサイズに基づいて、同じファイルに含まれる連続するデータを連結させた一時ファイルとする。
【0052】
(a)は、テープに保管されていないキャッシュ内の対象データを反映したインデックスファイルの更新を表すフローチャートを示す。キャッシュ・マネージャが書込みアクセスを受取り、次のステップを実行する。
(900)キャッシュ・マネージャはホスト・アプリケーションからLTFS−APIによる新しいデータ(対象データ)の書込みアクセスを受け取る。新しいデータ、即ち対象データ(ファイルの全体あるいは部分)を書込みキャッシュに保管する。
(910)新しいデータのTape上のパス名(ファイル名)と一致するデータをキャッシュテーブル(上表)から検索する。キャッシュ・マネージャは、新たに書き込まれたデータを含むファイルと同じデータが、ホスト・アプリケーションからLTFS−APIを介して順次書き込まれた、データ(例えば、001.dat、002.dat、003.dat)が同じファイル名のファイルがあるかを検索する。アプリケーションは、ファイルシステムのLTFS−APIを用いて、パス名、オフセット、サイズを指定して対象データを書込む。キャッシュ・マネージャはLTFS−APIから、各データおよびそのメタ情報を獲得して、書込み順データ表(上表)を一時ファイルとして作成できる。
(920)キャッシュ・テーブル(上表)に、新たなデータを含むファイル名と同じものに含まれるデータがあるか確認する。キャッシュテーブルに同じファイルのリストが新しいデータのファイルが存在しない場合はステップ970を行う。
(930)新しいデータのファイルと同じファイル名に含まれる複数のデータは、ファイルごとにまとめて並べ替える。複数のデータは、アプリケーションからの書込み順からファイル単位でまとめて整理する。1つのファイル内の複数のデータの順番は、ファイル内の位置オフセット(offset)の順番で並べる。キャッシュテーブルにある同じファイルのデータが新しいデータと連続していない場合であってもファイルごとに集約してテープ上に配置することを意図している。特に、同じファイル名、例えばfileA.txtに含まれる2つのデータ001.datおよび003.datが連続している場合は連結するステップ処理950を実行する。同じファイルの新しいデータの連続性は、書込み順データ表(上表)を参照して各データのオフセットとサイズから判断できる。
(940)キャッシュテーブルから見つかった同一ファイルのデータに対応するインデックスファイル内の表記(エクステント)を削除する。キャッシュテーブルに新しいデータを含む同じファイルのデータが既に有る場合、インデックス・キャッシュに登録されている直近のインデックスファイルは、新しいデータの表記、即ち位置メタ情報(エクステント)を反映していない。直近のインデックスファイルから同じファイルの既存データのエクステントを削除して(940)、ステップ950で生成された接続データのエクステント(970)で置き換えて、最新のインデックスファイルを再構築(980)する必要がある。
(950)キャッシュテーブルから見つかった同じファイルの内のデータと、追加の新しいデータとを接続し、接続データとして当該テーブルに記録管理する。ステップ930において同じファイルに含まれる複数のデータを纏めて、ファイル内のオフセット順に並べ替えられている。特にオフセットとサイズから2つデータが連続する場合、2つのデータを連結した1つの連続データとしたオフセットおよびサイズを書き換えている。例えば、接続データとは、下表に含まれる同じパス名fileA.txtに含まれる001.dat+003.datを意味する。なお、この明細書では、同じファイルに含まれる2以上のデータであって完全に連続していないデータであっても、同じファイルに含まれる2以上のデータを便宜的に「連続データ」と呼ぶ。具体的には書込み順データ表(上表)を参照すると、同じファイルfileA.txtに含まれる2つのデータ001.datおよび003.datの間に、別のファイルfileB.txtのデータ002.daを介在させてテープ配置で、読み出しパフォーマンスに影響を与える。しかし、ホスト・アプリケーションから書き込まれた順番にかかわらず、同じファイル内に存在するデータとして書込みテープ位置の分散(フラグメント化)を小さくできる点で意義がある。
(960)接続データを新しいデータとして、更に同じファイル名で連続する3番目のデータが存在するかを確認ステップ920で実行する。この例のキャッシュテーブル(下表)には連続データ001.datおよび003.dat以外は存在しないので、ステップ920はNOとなる。ステップ(970、980)において、接続データ001.dat+003.datを新しいデータとして、インデックスファイルに反映させる処理を行う。
(970)新しいデータのサイズからブロック数を算出し、エクステントを計算する。
(980)新しいデータに対応するインデックスファイル内の表記、即ち位置メタ情報(エクステント)を更新する。ステップ970で計算されたエクステントが新しいデータに対応するインデックスファイル内の表記、即ち位置メタ情報を与える。新たなデータは特定のファイルの1つのデータとして最新のインデックスファイルを確保するために、直近のインデックスファイルに新たなデータの表記(エクステント)を追加する。
(990)ホスト・アプリケーションから新しいデータの書込みアクセスを受け取り、ステップ910〜980を繰り返す。
【0053】
接続データの生成について詳述する。接続データは特定のファイルfileA.txtに含まれる1つの連続するデータとして記録し、第3特殊APIでテープに書き出す際にファイルのフラグメント化を避けることができる。書込み順データ表(上表)は、書込みキャッシュに、同じファイル名fileA.txtの2つのデータ001.datおよび003.dat間に別のファイル名fileB.txtのデータ002.datがアプリケーションから書き込まれていることを表す。キャッシュ・マネージャは、同じファイル名fileA.txtに含まれる2つのデータを検索できる。また、2つのデータの位置が、メタ情報(オフセット、サイズ)から連続していることを判定できる。キャッシュ・マネージャは、同じファイル名(dirA/fileA.txt)に含まれる2つのデータ001.dat(オフセット=0,サイズ=1024000)および003.dat(オフセット=1024000, サイズ=512000)を連結して、1つの位置メタ情報(オフセット=0、サイズ=1536000)を与えて3つのデータを並べ替えて接続データ表(下表)を生成する。キャッシュ・マネージャは、ファイル名fileA.txtに含まれる連結した2つのデータ001.datおよび003.datのエクステント(図5参照)を、接続データ表を参照して位置メタ情報(オフセット=0、イズ=1536000))から生成できる。
【0054】
図10は、テープカートリッジを排出する場合のフローチャートを示す。
(1000)メディアの排出にともない、Writeキャッシュの全データをテープに吐き出す(Flush)処理を実行することを示す。
(1100) 書込みキャッシュのデータを、キャッシュ上のインデックスファイルに記録している順番でテープに書き出す。ここでは第3特殊APIを用い、ファイルシステム、例えばLTFS−APIは使用しない。テープドライブの固有の書込みパフォーマンスを発揮させるため、高速なデータのLTFSテープへの退避できる。
(1200) 全てのデータが書き出されたら、インデックスファイル・キャッシュ上の最新のインデックスファイルを、データ・パーティションおよびインデックス・パーティションに第2特殊APIを使用して書き込む。テープドライブの固有の書込みパフォーマンスを発揮させるため、高速なインデックスファイルのLTFSテープへの退避できる。
(1300)上記ステップのLTFSテープへのキャッシュ内の書込みデータおよび最新のインデックスファイルを吐き出しが完了した後、そのLTFSテープのテープドライブからの排出が実行される。
キャッシュ・マネージャは、メディアの排出の際に、第2特殊APIおよび第3特殊APIを使用して、最新書込みデータを反映した最新インデックスファイルをLTFSテープに書込み、LTFSフォーマットを保証している。
【0055】
以上より、上述の実施例の方法では、テープカートリッジのアンロードの時の全キャッシュのデータの書き出しが速いできるため、カートリッジの排出を高速化できる。また、本発明は、キャッシュ上のファイルに何度も修正を加えるようなオペレーションをする場合にインデックスのフラグメント化最小化、即ちデータの分散化を抑えることが出来る。なお、本発明を実施の形態(実施例)を用いて説明したが、本発明の範囲は上記実施例には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
【符号の説明】
【0056】
40…テープカートリッジ(メディア、テープ)、
60…テープドライブ(テープ記録ドライブ)、
80…外部記憶装置(例、HDD)、キャッシュ、
110…通信I/F(インターフェース)、
120…バッファ(ドライブバッファ)、
130…記録チャネル、
140…読み書きヘッド、
150…制御部(コントローラ、読み書き制御を含む)、
160…位置決め部
170…モータドライバ、
180…モータ、
300…ホスト(サーバ)、
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
【手続補正書】
【提出日】2014年5月30日
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ホストに接続されテープ装置を含むテープ記録システムにおいて、前記テープ装置に搭載されたメディアに対してファイルシステムを介したファイルの読み書きする方法であって、
(a)ホストのアプリケーションから受け取った読み書きアクセスのファイルに含まれる対象データを保管するためのキャッシュであって、読込みアクセスによりメディアからの対象データを保管する読込みキャッシュ、書込みアクセスによるアプリケーションからの対象データを保管する書込みキャッシュ、および前記メディアのインデックス・パーティションから取得したインデックスファイルを保管するインデックス・キャッシュに区分けされ前記キャッシュを設けることと、
(b)前記読み書きアクセスにより前記メディアをドライブに搭載して、メディアのインデックス・パーティションに保管された複数のファイルのメタ情報を含むインデックスファイルをインデックス・キャッシュに読み込むことと、
(c)前記読み書きアクセスに対して、
対象データを書込みキャッシュ及び読み込みキャッシュに保管すること、および、
前記書込みキャッシュに保管された対象データについて、前記対象データの位置メタ情報を反映するように前記インデックスファイルを更新して最新のインデックスファイルをインデックス・キャッシュに保管することと、
(d)前記メディアをドライブから排出する際に、
インデックス・キャッシュに保管された更新されたインデックスファイルをメディアのインデックス・パーティションに書込むことと、および、書込みキャッシュに保管された対象データを前記メディアのデータ・パーティションにファイルシステムを介さず書込むことと、
を含むファイルの読み書き方法。
【請求項2】
読み込みアクセスの対象データを受け取る前記(c)のステップは、
前記対象データが、書き込みキャッシュおよび読み込みキャッシュに存在することを確認することと、
書込みキャッシュに前記対象データが存在する場合、前記対象データをアプリケーションに送出することと、
読込みキャッシュに対象データが存在する場合、前記対象データをアプリケーションに送出することと、
対象データが書込みキャッシュおよび読込みキャッシュに存在しない場合、メディアからファイルシステムを使用して対象データをアプリケーションに送出することと、
を含む請求項1に記載の方法。
【請求項3】
読み込みアクセスの対象データを受け取る前記(c)のステップは、読込みキャッシュがフルになった場合にもっとも使われていないデータを前記キャッシュから破棄して、前記キャッシュの空いたスペースにメディアから対象データを読み込み前記対象データの排出をすること、を含む請求項1に記載の方法。
【請求項4】
書込みアクセスの対象データを受け取る前記(c)のステップは、
書込みアクセスの対象データが既に書込みキャッシュに保管されている複数のデータを含む複数のファイルの内の特定のファイルに含まれるかどうかを確認し、対象データおよび前記既に書き込まれた複数のデータをファイルごとに並べ替えることと、
インデックス・キャッシュに保管されたインデックスファイルに、前記ファイルごとに並べ替えた対象データを含む複数のデータのメタ情報を反映するようにインデックス・キャッシュ上のインデックスファイルを更新することと、
を含む請求項1に記載の方法。
【請求項5】
インデックス・キャッシュ上のインデックスファイルを更新する前記ステップは、
書込みキャッシュに保管された既存のデータと前記対象データとが連続であるか確認することと、
前記対象データが書込みキャッシュに済みデータの少なくもと1つと連続である場合には、連続するそれらデータを連結してインデックスファイルをフラグメント化しないように更新することと、
を含む請求項4に記載の方法。
【請求項6】
インデックス・キャッシュのインデックスファイルを更新する前記ステップは、
書込みキャッシュに書き込まれた順番で、書き込みデータをそれらのオフセットおよびサイズで関連付けて書込み順のデータの表を一時ファイルとして作成することと、
前記書込み順のデータ表に含まれるオフセットおよびサイズに基づいて、同じファイルに含まれる連続するデータを連結する接続データの表を一時ファイルとして作成することと、
前記接続データ表に含まれるオフセットおよびサイズに基づいて、書込みキャッシュに残っている複数のデータのエクステントを計算し、前記エクステントを前記メディアから取得した最新のインデックスファイルに追加してインデックス・キャッシュ上のインデックスファイルを更新すること、
を含む請求項5に記載の方法。
【請求項7】
書込みキャッシュに保管されたデータを、インデックス・キャッシュ上のインデックスファイルに記録している順番でメディアに書き出すことと、
全てのデータが書き出されたら、インデックス・キャッシュ上のインデックスファイルを、メディアのデータ・パーティションおよびインデックス・パーティションに書き込むこと、
を含む請求項5に記載の方法。
【請求項8】
前記キャッシュを、ホスト側の記憶装置に設ける請求項1に記載の方法。
【請求項9】
ホストに接続されテープ装置を含むテープ記録システムにおいて、前記テープ装置に搭載されたメディアに対してファイルシステムを介したファイルの読み書きするプログラムであって、
(a)ホストのアプリケーションから受け取った読み書きアクセスのファイルに含まれる対象データを保管するためのキャッシュであって、読込みアクセスによりメディアからの対象データを保管する読込みキャッシュ、書込みアクセスによるアプリケーションからの対象データを保管する書込みキャッシュ、および前記メディアのインデックス・パーティションから取得したインデックスファイルを保管するインデックス・キャッシュに区分けされ前記キャッシュを設けることと、
(b)前記読み書きアクセスにより前記メディアをドライブに搭載して、メディアのインデックス・パーティションに保管された複数のファイルのメタ情報を含むインデックスファイルをインデックス・キャッシュに読み込むことと、
(c)前記読み書きアクセスに対して、
対象データを書込みキャッシュ及び読み込みキャッシュに保管すること、および、
前記書込みキャッシュに保管された対象データについて、前記対象データの位置メタ情報を反映するように前記インデックスファイルを更新して最新のインデックスファイルをインデックス・キャッシュに保管することと、
(d)前記メディアをドライブから排出する際に、
インデックス・キャッシュに保管された更新されたインデックスファイルをメディアのインデックス・パーティションに書込むことと、および、書込みキャッシュに保管された対象データを前記メディアのデータ・パーティションにファイルシステムを介さず書込むことと、
をテープ記録システムに実行させるプログラム。
【請求項10】
ホストに接続されテープ装置を含むテープ記録システムにおいて、前記テープ装置に搭載されたメディアに対してファイルシステムを介したファイルの読み書きするテープ記録システムであって、
(a)ホストのアプリケーションから受け取った読み書きアクセスのファイルに含まれる対象データを保管するためのキャッシュであって、読込みアクセスによりメディアからの対象データを保管する読込みキャッシュ、書込みアクセスによるアプリケーションからの対象データを保管する書込みキャッシュ、および前記メディアのインデックス・パーティションから取得したインデックスファイルを保管するインデックス・キャッシュに区分けされ前記キャッシュを設けることと、
(b)前記読み書きアクセスにより前記メディアをドライブに搭載して、メディアのインデックス・パーティションに保管された複数のファイルのメタ情報を含むインデックスファイルをインデックス・キャッシュに読み込むことと、
(c)前記読み書きアクセスに対して、
対象データを書込みキャッシュ及び読み込みキャッシュに保管すること、および、
前記書込みキャッシュに保管された対象データについて、前記対象データの位置メタ情報を反映するように前記インデックスファイルを更新して最新のインデックスファイルをインデックス・キャッシュに保管することと、
(d)前記メディアをドライブから排出する際に、
インデックス・キャッシュに保管された更新されたインデックスファイルをメディアのインデックス・パーティションに書込むことと、および、書込みキャッシュに保管された対象データを前記メディアのデータ・パーティションにファイルシステムを介さず書込むことと、
を実行するテープ記録システム。