
OS/360 とその後継、CMS、およびDOS/360 とその後継のストレージ アーキテクチャでは、ボリューム テーブル オブ コンテンツ( VTOC ) は、特定のDASDボリューム上に存在するデータセットの位置を特定する方法を提供するデータ構造です。Linux on Z [ 2 ]のIBM Z 互換ディスク レイアウト[ 1 ] [注 1 ]を除き、Unix ライクシステムのファイルシステムでは、MS/PC DOSファイル アロケーション テーブル(FAT)、NTFSマスター ファイル テーブル(MFT)、およびinodeテーブルと機能的に同等です。[注 2 ] VTOC は IPLTEXT [注 3 ]を格納するために使用されず、IPL プロセスで役割もありません[注 4 ]。したがって、MBR で使用されるデータや、MBR と機能的に同等のデータはありません。ボリューム上の各データセットの名前、サイズ、場所、およびアクセス許可を一覧表示します。さらに、ボリューム上の連続する空き領域ごとにエントリが含まれています。任意の DASD (ディスクなど) ボリュームの最初のシリンダの最初のトラックの 3 番目のレコードはボリューム ラベルと呼ばれ、VTOC の位置へのポインタが含まれている必要があります。VTOC の位置は、ボリュームの初期化時に指定できます。頻繁に参照されるため、パフォーマンス上の理由から、ボリュームの中心にできるだけ近い場所に配置される場合があります。現在のシステムでは、デバイス サポート ファシリティ[注 5 ]プログラムICKDSFを使用して DASD ボリュームを初期化すると、VTOC が追加されます。
OS/360 および後継システムでは、データセットを割り当てる際に、通常はカタログを検索して、データセットが格納されているボリュームを特定します。[注 6 ]プログラムがダイレクト アクセス ストレージ デバイス(DASD) データセットを開く場合、OPEN ルーチンは、VTOC インデックス (VTOCIX) が存在する場合はそれを検索し、VTOCIX が存在しない場合は VTOC を直接検索します。
VTOCは、データセット制御ブロック[ 3 ] [ 4 ](DSCB)と呼ばれる140バイトのレコードのシーケンスで構成されています。DSCBには10種類あります。
VTOC はボリュームの最初の 64K トラック内に存在する必要があります。VTOC の最初の DSCB は常にフォーマット 4 の DSCB であり、VTOC 自体[注 8 ]と、この VTOC が存在する DASD ボリュームの属性を記述します。2 番目の DSCB は常にフォーマット 5 の DSCB であり、VTOC 内の空き領域を記述します。通常、VTOC の残りの部分は、空のエントリであるフォーマット 0 の DSCB と、データセットの範囲を記述し、ディスク上の最大 16 個の範囲の開始アドレスと終了アドレス[注 9 ]を示すフォーマット 1 またはフォーマット 3 の DSCB で構成されます。データセットの最初の部分は、フォーマット 1 の DSCB で記述されます。必要に応じて、フォーマット 3 の DSCB を使用して、データセットの残りの範囲を記述します。データセットが削除されると、そのフォーマット1のDSCBは上書きされてフォーマット0のDSCBになり、フォーマット3のDSCBが存在する場合は同様に削除されます。
当初、VTOC検索はDSCBを順次スキャンし、正しいフォーマット1のDSCBが見つかるかVTOCの終端に達すると停止する方式でした。DASDボリュームが大きくなるにつれて、VTOC検索がボトルネックとなったため、VTOCインデックスが追加されました。
このVTOCエントリはデータセットを記述し、その最初の3つの範囲を定義します。これは、 Y2K対策による変更前の1973年のOS/360リリース21.7のDSCBのフォーマットです。[ 5 ]