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)
© Copyright 2024 Paperzz