2016-03-08

OpenVMS alphaのNFSサーバに接続してファイルを転送

OpenVMS alphaのNFSサーバに接続してファイルを転送するためには、TCP/IP Services for OpenVMSのNFSサーバ機能を有効にして、設定を幾つか済ませておかなければなりません。

NFSで公開するディレクトリをadd exportで定義します。ここで「add export PWS500$DKA100:[USER]」のような指定が出来ないので、予めmapで定義しておかなければなりません。ただしmapで定義した内容は再起動すると消えてしまうので、永続的に指定するためにはset configuration mapも指定しておく必要があります。
TCPIP> map "/dka100" pws500$dka100:
TCPIP> sh map
            Dynamic Filesystem Map
Pathname                                Logical File System

/dka100                                 PWS500$DKA100:
TCPIP> add export "/dka100/user" /host=*
TCPIP> sh export

File System                             Host name

/dka100/user                            *
さらにFreeBSD/i386側からNFS接続してくるユーザをOpenVMS alpha上のユーザと対応づけておく必要があります。ここで注意が必要だったのは、uid=0すなわちrootアカウントについても対応させておく必要があったことでした。FreeBSD/i386でmountコマンドを用いるときにはrootでおこないますが、その時に対応付けがないとマウントできません。オペレーションコンソールに「%TCPIP-W-NFS_NOCMAP, cannot find client record in proxy database  (TCPIP$PROXY)」と「-TCPIP-S-NFS_CLIENT, uid=0 gid=0 host_name = 以下略」のような出力が出てきてしまいます。FreeBSDにおけるrootはOpenVMSのSYSTEMに相当するわけですが、proxyでSYSTEMに対応付けるのはセキュリティの問題になりそうな気がして抵抗を感じます。そこでNFSサーバを有効にした時に自動作成されるアカウントTCPIP$NFSを使うことにしました。
TCPIP> sh proxy

VMS User_name     Type      User_ID    Group_ID   Host_name

FURUSAWA          ON           1001        1001   *
TCPIP$NFS         ON              0           0   *
NFSサーバの状態はshow nfsやshow portmapperで確認できます。NFSサーバに接続が無い状況では以下のようになっています。
TCPIP> sh nfs
%TCPIP-E-NONFS, NFS server is not active
-SYSTEM-W-NONEXPR, nonexistent process
TCPIP> sh portm
    Program Number      Version   Protocol   Port-number  Process   Service-name
----------------------  -------  ----------  -----------  --------  ------------
000186A0 (     100000)        2  TCP                 111  00000215  PORTMAPPER
000186A0 (     100000)        2  UDP                 111  00000215  PORTMAPPER
FreeBSD/i386側からNFSマウントする時に注意が必要なのはmntudpオプションをつけることです。
root@kazumi:~ # mount -t nfs 192.168.1.161:/dka100/user /mnt
[tcp] 192.168.1.161:/dka100/user: RPCPROG_NFS: RPC: Program not registered
^C
root@kazumi:~ # mount -o mntudp -t nfs
192.168.1.161:/dka100/user /mnt
FreeBSD/i386側からNFSマウントしたOpenVMS alphaのディスクを見ると、OSの違いが顕著に表れます。マウント時のオプションで変更できることもありますが、注意は必要です。
furusawa% cp a.c /mnt/furusawa/a.c.5
furusawa% ls -l /mnt/furusawa/a.c*
-rwxr-x---  1 furusawa  furusawa  94 Oct 15 10:02 /mnt/furusawa/a.c.1
-rwxr-x---  1 furusawa  furusawa  94 Mar  8 09:49 /mnt/furusawa/a.c.2
-rwxr-x---  1 furusawa  furusawa  94 Mar  8 10:12 /mnt/furusawa/a.c.3
-rwxr-x---  1 furusawa  furusawa  84 Mar  8 11:13 /mnt/furusawa/a.c.4
-rw-r--r--  1 furusawa  furusawa  84 Mar  8 11:15 /mnt/furusawa/a.c.5
NFSを経由するとRecord formatが「Variable length」から「Stream_LF」に変わるようです。
$ dir/full a.c;1,;5

Directory DISK$USER:[FURUSAWA]

A.C;1                         File ID:  (3050,6,0)
Size:            1/4          Owner:    [FURUSAWA]
Created:   15-OCT-2015 10:02:50.88
Revised:   15-OCT-2015 10:02:50.95 (1)
Expires:   <None specified>
Backup:    <No backup recorded>
Effective: <None specified>
Recording: <None specified>
File organization:  Sequential
Shelved state:      Online
Caching attribute:  Writethrough
File attributes:    Allocation: 4, Extend: 0, Global buffer count: 0
                    No version limit
Record format:      Variable length, maximum 0 bytes, longest 31 bytes
Record attributes:  Carriage return carriage control
RMS attributes:     None
Journaling enabled: None
File protection:    System:RWED, Owner:RWED, Group:RE, World:
Access Cntrl List:  None
Client attributes:  None

A.C;5                         File ID:  (3762,1,0)
Size:            1/8          Owner:    [FURUSAWA]
Created:    8-MAR-2016 11:15:09.92
Revised:    8-MAR-2016 11:15:39.73 (0)
Expires:   <None specified>
Backup:    <No backup recorded>
Effective: <None specified>
Recording: <None specified>
File organization:  Sequential
Shelved state:      Online
Caching attribute:  Writethrough
File attributes:    Allocation: 8, Extend: 0, Global buffer count: 0
                    No version limit
Record format:      Stream_LF, maximum 0 bytes, longest 32767 bytes
Record attributes:  Carriage return carriage control
RMS attributes:     None
Journaling enabled: None
File protection:    System:RWD, Owner:RWD, Group:R, World:R
Access Cntrl List:  None
Client attributes:  None

Total of 2 files, 2/12 blocks.

NFSマウントを解除する時に「Program/version mismatch」というメッセージが出ますが、マウントは外れています。
root@kazumi:~ # umount /mnt
umount: 192.168.1.161: RPCMNT_UMOUNT: RPC: Program/version mismatch; low version = 1, high version = 1

0 件のコメント:

コメントを投稿