IBM iにおける
ファイルの管理
LinuxやWindowsにおけるファイル管理は、フォルダ(ディレクトリ)とファイルによる多階層のツリー構造である。IBM iではファイル(オブジェクト)はどのように管理されるのだろうか。
IBM iにおけるオブジェクト管理は、ライブラリーと呼ばれる論理的な入れ物のなかにオブジェクトを格納するという、2階層を基本とした単純なものだ(図表1)。
【図表1 画像をクリックすると拡大します】
正確には、「ライブラリーQSYS」というシステム提供の特殊なライブラリー・オブジェクト内に、そのほかのライブラリー・オブジェクトが配置され、これらのライブラリー・オブジェクトに各種オブジェクトが格納されるという3階層になる。そのため、IBM iのなかでオブジェクトを特定する場合には、どのライブラリーに、どの名前の、どのタイプのオブジェクトが格納されるのかがわかれば、一意に特定できる。
統合ファイル・システム
(IFS)
この2階層によるオブジェクト管理のファイル・システムを「QSYS.LIBファイル・システム」「ライブラリー・ファイル・システム」などと呼ぶことがある。このようにLinuxやWindowsとはまったく異なる概念のオブジェクト管理手法が取られているが、IBM iではQSYSファイル・システム以外にも、ほかのプラットフォームとのシームレスな連携を図る目的で、さまざまなファイル・システムを透過的に取り扱う「統合ファイル・システム」(IFS:Integrated File System)という考え方が導入されている。
IFSでは、「/(ルート)」配下に図表2のように、利用目的に応じてシステムとして複数用意されたファイル・システムが統合されている。
【図表2 画像をクリックすると拡大します】
なお、IFSは1ファイルあたりの最大サイズ(ファイル・システムによって異なり、後述の「/QOpenSys」であれば、Type1ファイルは128GBで、Type2ファイルは1TB)や、含められるサブ・ディレクトリ数といった論理的な数的制限は存在するものの、各ディレクトリの物理容量に制限はない。ほかのプラットフォームでは、運用管理項目として一般的に行われているログ・ディレクトリに対する容量管理、ディレクトリ・フルによるアプリケーション停止を防止するためのクォータ管理は必要ない。あくまでIBM iのOS全体としてのストレージ容量を把握しておけばよい。
ここからは、よく使われる代表的なファイル・システムを挙げてみよう。「/QOPT」など、ここで挙げたもの以外のファイル・システムについてはぜひ、Knowledge Centerで確認されたい。
ルート・
ファイル・システム
IFSの基本となるファイル・システムで、Windowsなどと同じ多階層のディレクトリ構造となっている。論理的には「/」配下にほかのファイル・システムが配置される形態を取っており、「/」からディレクトリをたどることで各ファイル・システムにアクセスできる。
DB2 for iのテーブルに格納されているデータをエクスポートしたい場合には、CPYTOIMPFコマンドを使用して、ルート・ファイル・システムにCSVファイルとしてエクスポートする。
また、ほかのプラットフォームとのデータ授受で、通常のファイルを介した連携を行う場合にも、IBM i側のルート・ファイル・システムにファイルとして配置し、その後IBM i側でデータを取り込んだり、加工したりという使い方が一般的だ。
ライブラリー・
ファイル・システム
ライブラリー/オブジェクト形式で管理するファイル・システムである。「/QSYS.LIB/ライブラリー名.LIB/オブジェクト名.オブジェクトタイプ」と指定することで、オブジェクトを一意に識別できる。
ちなみに、FTPでも対象ファイルを上記のパスで指定することでデータの転送を行える。保管ファイル・イメージ(*FILE SAVFオブジェクト)をFTP転送する場合、転送先のIBM i上には通常SAVFオブジェクトを転送の前に作成しておき、上書き転送する必要がある(作成しておかなければ通常の物理ファイル・オブジェクトとして転送されてしまう)。上記パス指定で転送することで事前作成の必要はなく直接SAVFオブジェクトを配置できる(図表3)。
【図表3 画像をクリックすると拡大します】
また、このパス指定方式では総称指定も容易だ。あるライブラリー内の複数のオブジェクトの所有者を一括して変更したい場合、ネイティブ・コマンドであるCHGOBJOWNコマンドでは各オブジェクトに対して設定変更を行う必要がある。そこで、IFSの所有者変更コマンドであるCHGOWNコマンドを用い、対象オブジェクトを総称指定することで簡単に設定できたりもする(図表4)。
【図表4 画像をクリックすると拡大します】
QOpenSys
ファイル・システム
UNIXベースのオープンシステムとの互換性を保つ目的で用意されているファイル・システムである。
IBM iのなかにはPASE(Portable Application Solutions Environment)と呼ばれるAIX実行環境が用意されている。IBM i上ではJavaやPHP、Node.jsなどはこのPASEと呼ばれる実行環境上で動く仕組みだ。このPASEが利用しているファイル・システムが「QOpenSysファイル・システム」になる。
Windowsではディレクトリやファイル名の大文字・小文字は区別されないが、Linuxのext3やUNIXでは厳密に区別され、たとえば「FILE」「File」「file」は別のファイルとして同一ディレクトリに配置できる。
「/QOpenSys」配下ではUNIX同様大文字・小文字を区別するので、とくにLinuxやUNIXとのファイル授受などには「/QOpenSys」配下にディレクトリを作成、利用するとよいだろう(図表5)。
【図表5 画像をクリックすると拡大します】
また、ls、rm、chmodなどUNIXで使用されるファイルの操作・管理系のコマンドもPASE実行環境から利用できるので、権限管理などUNIXでのファイル管理になじみのある人がIBM iに携わる際には、PASEは取り付きやすいインターフェースと言える(もちろんIFS上のオブジェクトに対する権限管理はCHGAUTというCLコマンドで実行できる)。
QFileSvr.400
ファイル・システム
リモートのIBM i上のファイル・システムに透過的にアクセスするためのファイル・システムで、IBM iホスト・サーバー機能で実現されているものである。TCP/IPが登場・普及する以前から実装されているファイル・システムで、歴史のあるIFS上のファイル共有の仕組みと言える(図表6)。
【図表6 画像をクリックすると拡大します】
なお、サインオンしているユーザーおよびパスワードでリモートのIBM iに接続するので、ユーザー、 パスワードおよびシステム値のパスワード・レベル QPWDLVLがお互いのIBM iで一致している必要がある。しかし、「/QFileSvr.400」直下に名前解決可能なホスト名もしくはIPアドレスでディレクトリを作成するだけでよいので、IBM i間の接続に簡単に使える機能である。
QNTC
ファイル・システム
「/QFileSvr.400」がIBM i間のディレクトリ共有の仕組みであるのに対して、/QNTCはWindows上のフォルダ共有やLinuxのSMB/CIFSサーバーに対してIBM iからクライアントとして接続するためのファイル・システムである。
IBM iを基幹サーバーとして、周辺にWindows、 Linuxサーバーを配置し、相互に連携させて社内システムを構築しているケースは多いが、そのような構成においてIBM iがクライアントとして周辺のサーバーのディレクトリをマウント、IBM iからファイルとしてデータを提供する際などに利用できる(図表7)。
【図表7 画像をクリックすると拡大します】
またこの逆、すなわちIBM iがSMB/CIFSサーバーとして機能するものが「NetServer」と呼ばれる機能である。NetServerの場合には、IBM i上のディレクトリを周辺がマウントする形式でファイル共有を行う仕組みとなる。[中村陽一]