VTOC

By 神居 - Posted: 2012/02/14 Last updated: 2012/02/14 - Leave a Comment

VTOC:Volume Table Of Contents(ボリューム目録)

VTOCは、ボリューム内に格納されているデータセットとボリュームの空きスペースを管理する、DASDボリュームの目次ともいえるものです。
目次を構成する一つ一つの項目は140バイトのレコードで出来ており、VTOCそのものは140バイトの固定長レコードを持つ順次データセットと同じ構造になっています。


DSCBの種類

VTOCを構成するレコードはDSCB(Data Set Control Block)と呼ばれ、用途に応じてFormat-0、Format-1、Format-3、Format-4、Format-5、Format-7、Format-8およびFormat-9の8種類があります。いずれのDSCBレコードも先頭の44バイトがキー部、残りの96バイトがデータ部となっています。VTOC内の目的レコードを探す際、キー部の値を示すことでDASDボリュームのハードウェア検索機能によって対応するDSCBレコードに位置付けられます。
DSCBは、Format-n DSCBとして区別されますが、単にDSCBnと呼ばれることもあります。例えばFormat-1 DSCBはDSCB1というようにです。


VTOCの場所と大きさ

VTOCはDASDボリュームの任意の位置に置くことができます(※シリンダー0、トラック0を除く)。一般的にはシリンダー0、トラック1に配置されることが多いです。昔のMVSではVTOCの位置もDASDパフォーマンスのチューニング手段の1つでした。VTOCはデータセットのオープンに先立って必ずアクセスされるため、VTOCが先頭にあるとボリュームの後方にあるデータセットにアクセスする際のディスク・アームの移動量が多くなり、その分時間が掛かるというものです。そのためボリューム内のデータセットへの位置づけの時間を平準化するためVTOCをボリュームの真ん中に置くなどということが行われたりしました。また、頻繁にアクセスされるデータセットをVTOCの近くに配置する、などということも行われたりしました。しかし、現在のディスクは大容量キャッシュが搭載され、CPUによって制御されるストレージ・サブシステム内の論理的な装置となり、ディスクの回転やアクセス・アームの移動などの物理的な特性を考慮する必要性は少なくなりました。

VTOCの大きさは、そのボリュームにどれだけのデータセットを格納するかの数によって決まります。3390ディスクの場合は、VTOC 1トラックあたり50個のDSCBが格納できます。1つのデータセットは最低でも1つ、そのデータセットのエクステント数が増えればそれに応じてさらに1つ、となりますのでこれに基づいて必要な大きさを決めます。

VTOCがボリューム内のどこにあるかは、ボリューム・ラベルに示されています。ボリューム・ラベルの位置はシリンダー0、トラック0の第3レコードと決まっているので、VTOCがどこにあっても必ずポイントすることができます。オンライン・ボリュームの場合はUCBにもVTOCのアドレスが格納されています。


VTOCのアクセス

VTOCへのアクセス用にMVSはいくつかのAPIを用意しています。これらのAPIは大きくDADSMマクロとCVAFの2つに分かれます。

VTOCは固定長非ブロック化レコードの順次データセットと同じ構造なので、順次データセットとしてBSAMでアクセスすることもできます。ただし特定のDSCBからチェインされている他のDSCB(例えばFormat-3 DSCB)は必ずしもチェイン元のDSCBの後ろにあるとは限らないので、Format-1とFormat-3などを正確に関連付けるためにはそれなりの工夫が必要です。また、読み込んだDSCBレコードのDASD上のアドレス位置を求めるにはDECBからBSAMの作業域をポイントしてチャネルプログラム発行用のデータ域(IOB)などを解析する必要もあり面倒です。アクセスは簡単ですが、単にFormat-1 DSCBなどから格納されたデータセット名などを求める用途にしか向きません。マクロ自体は少し複雑ですがCVAFSEQとCVAFDIRを組み合わせるのが一般的です。

Posted in アドミニストレーター編, キーワードから(何が知りたいですか) • • Top Of Page