PowerMAX/OS を NFS クライアント、RedHawk を NFS サーバにする

PowerMAX/OS を NFS クライアント、RedHawk を NFS サーバにする場合の設定方法
NFS は、クライアント−サーバのユーザーID とグループ ID が一致していなくてはなりませんが、以下の
ように異なっています。
ph940 # fgrep nobody /etc/passwd
nobody:x:2147483646:2147483646:uid no body:/:
ihawk # fgrep nfsnobody /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
また、PowerMAX/OS は、NFS-V2 のみサポートしています。また、NFS-V2 は secureNFS は、使用で
きますがディフォルトは、Non-sccureNFS です。
ところが、RedHawk は、NFS-V4 をサポートし、NFS-V2 は、secureNFS がディフォルトです。
このような状態なので、ファイルを export する RedHawk 側に多少の設定を加える必要があります。
その設定を、/etc/exports ファイルに以下のように記述します。
# cat /etc/exports
/home/share ph940(rw,sync,no_root_squash,insecure,anonuid=214783646,anongid=214783646)
ホスト名
rw モード
非 secure モード
sync モード
ユーザーID
グループ ID
root でも write 可能
その上で、RedHawk から exportsfs コマンドを使って認識させます。
ihawk # exportfs -r
ihawk # exportfs -v
/home/share
ph940(rw,wdelay,insecure,no_root_squash,no_subtree_check,anonuid=214783646,anongid=214783646)
この設定が、PowerHawk から見えるか、dfshare コマンドで確認します。
ph940 % dfshares iHawk
RESOURCE
iHawk:/home/share
SERVER ACCESS
iHawk -
TRANSPORT
-
正しく設定出来ていたら、コマンドラインでマウントしてみます。
ph940 % mount -F nfs -o rw iHawk:/home/share /home/share/
df コマンドと ls コマンドで確認します。
ph940 % df
/
(/dev/root
): 3576744 ブロック 126459 ファイル
/dev/fd
(/dev/fd
):
0 ブロック
0 ファイル
/system/processor (/system/processor):
0 ブロック
0 ファイル
/proc
(/proc
):
0 ブロック
350 ファイル
/var
(/dev/var
): 3228666 ブロック 126976 ファイル
/usr
(/dev/usr
): 2078340 ブロック
99253 ファイル
/home
(/dev/home
):269475630 ブロック 33717500 ファイル
/home/share
(iHawk:/home/share):88105624 ブロック 12295886 ファイル
ph940 % ls /home/share/
test
ph940 % umount iHawk:/home/share
ph940 % ls /home/share/
ph940 % df
/
(/dev/root
): 3576744 ブロック 126459 ファイル
/dev/fd
(/dev/fd
):
0 ブロック
0 ファイル
/system/processor (/system/processor):
0 ブロック
0 ファイル
/proc
(/proc
):
0 ブロック
350 ファイル
/var
(/dev/var
): 3228666 ブロック 126976 ファイル
/usr
(/dev/usr
): 2078340 ブロック
99253 ファイル
/home
(/dev/home
):269475630 ブロック 33717500 ファイル%
も し 、 動 作 し て い な い な ら 、 nfsstat,nfsping 等 を つ か っ て 、 確 認 し て く だ さ い 。 も し か す る
と、.etc/rc3.d/S22nfs が動作していないかもしれません。
nfs が起動している場合
ph940 % nfsstat
Server rpc:
calls
badcalls
0
0
Server nfs:
calls
badcalls
0
0
null
getattr
0 0%
0 0%
write
create
0 0%
0 0%
rename
link
0 0%
0 0%
commit
0 0%
Client rpc:
calls
badcalls
27
0
Client nfs:
calls
badcalls
27
0
null
getattr
0 0%
6 22%
write
create
0 0%
3 11%
rename
link
0 0%
0 0%
commit
0 0%
nullrecv
0
0
setattr
0 0%
mkdir
0 0%
readdir
0 0%
xdrcall
0
lookup
access
0 0%
0 0%
symlink
mknod
0 0%
0 0%
readdirp
fsstat
0 0%
0 0%
retrans
0
badlen
badxid
0
0
readlink
0 0%
0
remove
0 0%
0
fsinfo
0 0%
0
timeout
0
nclget
nclsleep
27
0
setattr
lookup
access
1 3%
7 25%
0 0%
mkdir
symlink
mknod
0 0%
0 0%
0 0%
readdir
readdirp
fsstat
0 0%
0 0%
5 18%
wait
read
0%
rmdir
0%
pathconf
0%
newcred
0
readlink read
0%
0 0%
remove
rmdir
0 0%
0 0%
fsinfo
pathconf
5 18%
0 0%
0
ph940 % nfsping -a
nfsping: rpcbind is running
nfsping: nfsd is running
nfsping: biod is running
nfsping: mountd is running
nfsping: lockd is running
nfsping: statd is running
nfsping: bootparamd is running
nfsping: pcnfsd is running
nfsping: The system is running in client, server, bootserver,
and pc server modes
nfs が起動していない場合
ph940 % nfsstat
nfsstat: kernel is not configured with the server nfs and rpc code.
nfsstat: kernel is not configured with the client nfs and rpc code.
ph940 % nfsping -a
nfsping: rpcbind is running
nfsping: nfsd is not running
nfsping: biod is not running
---コントロール C を入力しないと待ちになっている。
マニュアル設定を/etc/vfstab に書き込みます。automaount を no にしておけば、RedHawk が立ち上がって
いない場合でもハングしませんし、手動で”mount iHawk:/home/share”と入力しない限りマウントされまっ
せん。
ph940 % cat /etc/vfstab
#special
fsckdev
mountp fstype fsckpass automnt mntopts
/dev/root
/dev/rroot
/
ufs
0
yes
/dev/swap
swap
yes
/dev/usr
/dev/rusr
/usr
ufs
1
yes
/dev/var
/dev/rvar
/var
ufs
0
yes
/dev/home
/dev/rhome
/home xfs
0
yes
/proc
/proc
proc
no
/dev/fd
/dev/fd fdfs
no
/system/processor /system/processor profs no
iHawk:/home/share /home/share nfs no
rw
RedHawk 側で NFS の設定を無効にします。(設定ファイルはそのままで良い)
ihawk # exportfs -v
/home/share
ph940(rw,wdelay,insecure,no_root_squash,no_subtree_check,anonuid=214783646,anongid=214783646)
ihawk # exportfs -au
ihawk # exportfs –v
--表示されません-
下記に RedHak の exportfs コマンドのマニュアルを示します。
exportfs(8)
exportfs(8)
名前
exportfs - NFS エクスポートするファイルシステムのリストを管理する
書式
/usr/sbin/exportfs
/usr/sbin/exportfs
/usr/sbin/exportfs
/usr/sbin/exportfs
/usr/sbin/exportfs
[-avi] [-o options,..] [client:/path ..]
-r [-v]
[-av] -u [client:/path ..]
[-v]
-f
説明
exportfs コマンドは、現在 NFS でエクスポートしているファイルシステムのテーブルを管理するために使うコマンドである
。このリストは /var/lib/nfs/xtab という名前のファイルに保存される。このファイルはリモートホストからファイルツリー
を マウントするアクセス要求があった時に mountd から参照される。また、このリストのうちアクティブになっているものが
カーネルのエクスポートテーブルに保存される。
通常この xtab ファイルは、 exportfs -a を実行することにより、 /etc/exports に書かれた全てのファイルシステムのリス
トで初期化される。
し かし管理者は、 /etc/exports を修正することなく、 exportfs を使って選択的に個々のファイルシステムを追加・削除で
きる。
exportfs とそのパートナとなるプログラム mountd は 2 つのモードの何れかで動作する。レガシーモードは Linux カーネル
2.4 以前で利用される。新しいモードは 2.6 以降で利用され、 /proc/fs/nfsd または /proc/fs/nfs にマウントされる nfsd
仮想ファイルシステムを提供する。このファイルシステムが 2.6 でマウントされない場合、レガシーモードが使用される。
新しいモードでは、 exportfs はカーネルには全く情報を提供ぜず、 /var/lib/nfs/xtab ファイルを通して mountd に情報を
提供するだけである。 mountd はカーネルからの要求を待ち受け、必要に応じて情報を提供する。
レ ガシーモードでは、 (サブネットやネットグループなどではなく) 特定のホストを指定したエクスポート要求は、カーネル
のエクスポートテーブルに直接書き込まれるとともに、 /var/lib/nfs/xtab にも書き込まれる。さらに、ホストを特定しない
エ クスポート要求が /var/lib/nfs/rmtab にリストされているマウントポイントにマッチすると、このファイルに書かれてい
るホストに向けたエクスポートエントリが、カーネルのエクスポートテーブルに入れられる。
オプション
-a
全てのディレクトリをエクスポート・アンエクスポートする。
-o options,...
exports(5) と同じ形式でエクスポートオプションのリストを指定する。
-i
/etc/exports ファイルを無視する。デフォルトのオプションとコマンドラインで指定されたオプションのみが使わ れ
る。
-r
全てのディレクトリを再エクスポートする。/var/lib/nfs/xtab を /etc/exports と同期させる。 /etc/exports か
ら削除されたエントリを /var/lib/nfs/xtab からも削除し、既に無効になったエントリをカーネルのエクスポート テ
ーブルから削除する。
-u
1 つ以上のディレクトリをアンエクスポートする。
-f
「 新しい」モードにおいて、カーネルのエクスポートテーブルから全てを書き出す。アクティブなクライアントは、
mountd によって追加された新しいエントリを、次に要求を行ったときに取得する。
-v
詳細に表示する。エクスポートまたはアンエクスポートするときに状況を表示する。現在のエクスポートリストを表示
するとともに、エクスポートオプションも表示する。
議論
ディレクトリのエクスポート
1 番目の書式は、新しいエントリをエクスポートテーブルに追加するためのコマンドの呼び出し方である。 exportfs -a を使
うと、 exports(5) にある全てのディレクトリが xtab に追加され、結果として得られるリストがカーネルに入れられる。
host:/path 引き数は、エクスポートするディレクトリとホストを指定する。 exports(5) に記述されている全てのフォーマッ
トがサポートされている。全てのホストに対してディレクトリをエクスポートするには、単純に :/path と指定すればよい。
特定のホスト/ディレクトリのペアに対するエクスポートオプションは、いろいろな方法で指定できる。デフォルトのオプショ
ンがいくつか存在するが、これらは (-i オプションが指定されない限り) /etc/exports のエントリで変更できる。さらに 、
管 理者はこれらの方法で指定されたオプションを -o 引き数を使って変更できる。 -o オプションの後には、 exports(5) で
指定するのと同じ形式で、コンマで区切ったオプションのリストを置く。このようにして、 exportfs は既にエクスポート さ
れているディレクトリのオプションを変更することもできる。
nfsd(8) が使うカーネルのエクスポートテーブルを修正すると、コマンドラインが解析された後すぐに反映され、 xtab ファ
イルが更新される。
デフォルトのエクスポートオプションは sync,ro,root_squash,no_delay である。
ディレクトリのアンエクスポート
3 番目の書式は、現在エクスポートされているディレクトリをアンエクスポートする方法である。 exportfs -ua を使うと 、
xtab にリストされているエントリがカーネルのエクスポートテーブルから削除され、このファイルはクリアされる。これによ
り全ての NFS の動作を効率的にシャットダウンすることができる。
個々のエクスポートエントリを削除するためには、 host:/path ペアを指定すればよい。 (このペアがもし存在すれば) 指 定
されたエントリが xtab から削除され、対応するカーネルエントリも削除される。
エクスポートテーブルのダンプ
exportfs を引き数なしで起動すると、現在エクスポートされているファイルシステムのリストを表示する。 -v オプションを
指定すると、各エクスポートエントリに付属しているフラグのリストも表示する。
例
次のコマンドは、 /etc/exports にリストされた全てのディレクトリを /var/lib/nfs/xtab に追加し、結果として得られるエ
クスポートエントリをカーネルにプッシュする:
# exportfs -a
/usr/tmp ディレクトリをホスト djando にエクスポートし、非同期書き込みを許可する場合は、次のようにすればよい。
# exportfs -o async django:/usr/tmp
依存性
IP ネットワークや DNS ドメイン、NIS ドメインへエクスポートしたときは、これらのグループに属するクライアントは即座
には NFS にアクセスできない。どちらかというと、このようなエクスポートは mountd(8) がこれらのクライアントからの マ
ウント要求を許可するかどうかに対するヒントなのである。既存のマウントポイントはリブートしても rmtab に保存されるの
で、これは通常は大した問題にはならない。
ネットワークエントリやドメインエントリをアンエクスポートする場合、このグループのメンバに現在エクスポートされて い
るエントリについて、エクスポートが有効になっているかがチェックされ、既に有効でない場合は削除される。
関連項目
exports(5), mountd(8)
著者
Olaf Kirch, <okir@monad.swb.de>
Neil Brown, <neilb@cse.unsw.edu.au>
18 July 2003
exportfs(8)