z/OS UNIXファイルシステム

z/OSは、MVSオペレーティング・システム内に「UNIX System Service」(*1)と呼ばれるUNIXカーネル環境を提供します。USS(Unix System Service)は、カーネルAPIとシェルによってUNIXプログラムの実行とUNIXコマンドによる操作環境を提供します。USSによって、C言語で作られたプログラムはコンパイルし直せばメインフレーム・コンピューターに移植でき、UNIXシェルと同じ操作でファイル管理などが行えます。そのために、これまでのMVSオペレーティング・システムのものとは異なる、階層型ファイル・システムをUSSコンポーネント内に実装しています。MVSのデータセットはレコード指向のデータの集まりですが、USSではバイト指向のファイルが使えます。
USSは、当初はオープン系システムで構築されたアプリケーションやWebサーバーなどのサービスをMVSシステム内に移植するために提供されたものでしたが、その後、プロセッサー機構がインテルCPUの命令セットなどをサポートしたことでLinuxを直接IBMメインフレーム・コンピューターで動かすことが可能になりました。
本物のUNIX環境がメインフレーム・コンピューター上に実現できたことから、今日ではz/OSのUSSではなくz/Linuxが選択されるようになりましたが、USSには名前付きパイプなどMVSジョブに対しても有用な機能がいくつかあります。USSの階層型ファイル・システムについては、その基本的な使い方を知っておくと、従来のMVSアプリケーション・ジョブの運用にも役立ちます。


*1 USSは、最初にMVS/ESA下でOpenEdition MVSと呼ばれるPOSIX準拠の機能をサポートするコンポーネントとして提供された。その後、OSがOS/390へ拡張されるにつれ機能が強化され、OS/390 V2R6においてUNIX System Serviceとしてエンハンスされ今日に至る。RACFなどでUSSに対しOMVSのリソースやプロファイル名が付いているのはその名残である。

階層型ファイルシステム

階層型ファイル・システムは、UNIXオペレーティング・システムで使われているファイル・システムで、ルート・ディレクトリーを頂点にしてディレクトリーとファイルを階層構造で並べて管理するものです。
すべてのディレクトリーとファイルが、1つのディスク領域やメディアに格納される必要はありません。HDDやDVDなど物理的に異なるストレージ・デバイスをマウントと呼ばれる機能で連結することができ、システム全体で1つのファイル階層を論理的に構築することができます。z/OSのUSSでは、DASD内のMVSデータセットを下図のように複数つなぎ合わせてUSS内でファイル階層を構築できます。

USSの階層型ファイルシステム

標準的にセットアップされたUSSでは、ルート・ファイル・システムとして割り振られたデータセット(OMVS.ROOTあるいはZFS.ROOTなど)内のbin、lib、opt、usrといったディレクトリー下に、USSのUNIXシステムが標準で提供するコマンド・プログラムやインクルード・ファイルなどが格納されます。
USSでは、ユーザー毎(TSOのユーザーID単位)のホーム・ディレクトリーは、ルート下の/uディレクトリーの下にユーザーIDを英小文字にした名前のディレクトリーにすることが推奨されています(*2)。アプリケーション・ジョブで使用されるデータ・ファイルなどもこれに準じて、同じ/uディレクトリーの下にアプリケーション・ジョブ用のディレクトリーを作るのもいいでしょう。各ユーザーやアプリケーション・ジョブで使用するUSSファイルをルート・ファイル・システム内に作成することもできますが、運用上は別のファイル・システムとして格納先データセットを分けた方がいいでしょう。実際、/uディレクトリーもルートとは別のデータセットに割り当てられることが多いです。
異なるファイル・システム・データセットを、ルート・ファイル・システムに連結するのがマウントです。USSでは、MVSのDASDボリューム内のデータセットをUSSファイル・システムのツリー構成の中に組み込むためにマウント機能が使われます。USSファイル・システムのディレクトリーとファイルを格納するためのMVSデータセットが、HFSデータセットもしくはzFSデータセットです。これらのデータセットは、z/OS上ではDASD内の1つのデータセットですが、USSからはマウント可能ファイル・システムと見なされます。


*2 z/OSマニュアル「UNIXシステム・サービス計画」の第4章UNIXセキュリティーの確立を参照。

階層型ファイル・システムの理解に必要な概念

階層型ファイル・システムの理解に必要な概念には次のものがあります。

  • ルート・ファイル・システムとマウント可能ファイル・システム
  • ディレクトリーとファイル
  • パスとパス名

これらは、マニュアル「z/OS UNIX System Serviceユーザーズ・ガイド」(SA88-7053)の「第14章 階層ファイル・システムの概要」に解説されています。もしくは、市販のUnixオペレーティング・システム入門書などの解説を参考にしてもいいでしょう。