トップページunix
982コメント306KB

【NFS】Network File System

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2006/03/28(火) 11:42:41
nfsに関する話題を扱うスレ
0382名無しさん@お腹いっぱい。2008/05/02(金) 16:42:55
>>381
ttp://nfs.sourceforge.net/
03833762008/05/02(金) 18:48:15
>>382 THX
0384名無しさん@お腹いっぱい。2008/05/03(土) 01:38:24
>>379
NFSマウントしているところで、
シリアスな「ロックファイル」を使っちゃいかん。
firefoxの二重起動禁止程度の奴なら実用上問題ないけど。
0385名無しさん@お腹いっぱい。2008/05/05(月) 02:07:33
NFSで10台くらいとシェアするとやっぱりパフォーマンス落ちますか
0386名無しさん@お腹いっぱい。2008/05/05(月) 03:26:14
サーバによるよ。
ローカルディスクより速いサーバは一杯ある。
0387名無しさん@お腹いっぱい。2008/05/05(月) 12:57:28
ML115なんですが
0388名無しさん@お腹いっぱい。2008/05/05(月) 13:56:40
マウントするだけなら変わらない(当たり前?)。
少々のコマンドを読む程度ならそれもあまり変わらない。
I/Oを大量に発生させるクライアントが多ければ、下がる。

としか言いようがないよ。

ここ参考にならんかな?
http://www.spec.org/benchmarks.html#nfs
ならんか。
0389名無しさん@お腹いっぱい。2008/05/05(月) 14:27:08
実際にやってみて問題がでたら、ひとつずつ解消してきゃいい。
そういう手間暇かけて試行錯誤するのが許されず、
一発で正着が欲しいなら、経験のある人に頼めばいい。
0390名無しさん@お腹いっぱい。2008/05/05(月) 17:06:14
NFSやるならNISも必須だろ
0391名無しさん@お腹いっぱい。2008/05/05(月) 18:03:12
いやそれほどでも
0392名無しさん@お腹いっぱい。2008/05/05(月) 19:49:13
NISとかLDAPとかNetInfoとかアカウント管理なくても、
NFSプロトコルは問題なく動きます。
0393名無しさん@お腹いっぱい。2008/05/05(月) 20:00:13
アカウント管理なんてする必要あるのか?
100台だろうが1万台だろうが、手作業でアカウント設定すりゃいいじゃん
0394名無しさん@お腹いっぱい。2008/05/05(月) 20:05:59
アイデンティティ管理って奴ですかな。
0395名無しさん@お腹いっぱい。2008/05/05(月) 20:07:52
認証したい時(UNIX認証は除く)はsecure RPCかKerberosが必要になる。
03963952008/05/05(月) 20:08:47
>>395
Secure RPCのDES認証かKerberos認証というべきだった。
0397名無しさん@お腹いっぱい。2008/05/08(木) 11:00:16
サーバ、クライアントともに
Ubuntu Linux 6.06 LTS
kernel 2.6.15
で nfs4 での利用を試みているのですが、
ブート後数日は普通に動いているのに
いつの間にか ls すると Input/ouptut error
と表示されるようになります。

でもディレクトリエントリが取得できないだけで
そこにあるはずのファイルは読み書きできます。
何が起こっているのでしょうか?
ちなみに Netfilter (iptables) や hosts.{allow|deny}
での制限は一切無しの状態です。

/etc/exports を書き換えて、同じ場所を
NFS v3 でエクスポートしてマウントすると
普通に ls できます。NFS において ls だけできない
(そこにあるはずのファイルにはアクセスできているのに)
というのはどんな状態なのでしょうか?
0398名無しさん@お腹いっぱい。2008/05/08(木) 11:05:27
>>397
>というのはどんな状態なのでしょうか

普通に、ディレクトリだけが読めない状態。
NFS関係なしに、
chmod a-r .
ってやると、カレントディレクトリをlsできなくなるが、
その下にあるファイルは(ファイル名がわかっていれば)読める。
03993972008/05/08(木) 11:12:12
複数台あるファイル鯖で、NFS v3 で普通はマウントしていて
幸せな暮らしを営んでいるのですが、ファイアウォールの関係で
隣の部署からは NFS v4 (proto=tcp) でマウントしています。

そいつだけたまにディレクトリエントリが見えなくなるのです。
ファイルにはアクセスできているので気づかないことも多いです。
障害発生時刻とログをつぶさに観察していると

nfs_update_inode : inode number mismatch
expected (0:14/0x2), got(0:14/0xb001)

がサーバ側で出たあとにクライアント側からディレクトリ
エントリが見えなくなるようです。それが出たあとも
気を取り直して NFS v3 でマウントしているクライアントからは
何も障害が見えません。

さらに NFS 鯖のログをさかのぼってみていると
nfs4_cb : server xxx.xxx.xxx.xxx not responding, timed out
が頻繁に出ています。これと関係あるのでしょうか。
nfs4_cb が何かこれからググろうと思いますが、
属性キャッシュがらみなのだろうか・・
0400名無しさん@お腹いっぱい。2008/05/08(木) 11:17:59
まずfirewallを疑えよ。
firewallの中でnfs4で確かめてみたら。
0401名無しさん@お腹いっぱい。2008/05/08(木) 11:18:43
スキルもなく実績もないUbuntuLTSなんか使うなよ。
04023972008/05/08(木) 11:42:00
>>400
ファイル鯖上で localhost がエクスポートしているものを
localhost でマウントしても同じ障害が発生します。
とりあえず週末に業務が終わったらカーネルを差し替えるべく
VMware 上で他のバージョンのカーネルでの挙動を確かめてみます。
0403名無しさん@お腹いっぱい。2008/05/08(木) 11:59:23
TCPにしたいだけなら、NFSv3のTCPにすればいいじゃないか。
04043972008/05/08(木) 13:06:30
>>403
できれば idmap も使いたく・・
0405名無しさん@お腹いっぱい。2008/05/08(木) 13:12:41
uid振り直して統一しておけばいい。
0406名無しさん@お腹いっぱい。2008/05/08(木) 13:19:01
Googleもいいけど、そこまでログ追ったならソースコード見た方が早いよ
0407名無しさん@お腹いっぱい。2008/05/09(金) 17:45:30
サーバをSolarisに変えろ! > NFSv4
0408名無しさん@お腹いっぱい。2008/05/10(土) 04:31:26
>>397
NFSv4 で認証した時のプロセスID が変わってたらそれが原因の一つでは?

任意の時間で、チェックしてアクティブに umount してからマウントしな
おすと何事もなかったように見えるのではないでしょうか。
0409名無しさん@お腹いっぱい。2008/05/11(日) 14:29:05
>>407みたいなこという人ってどこまで本気なんだろう?
0410名無しさん@お腹いっぱい。2008/05/12(月) 18:17:58
まじ
0411名無しさん@お腹いっぱい。2008/05/13(火) 15:31:21
LinuxでNFSサーバとかどこまでマジなの? という切り口もあるので
どっちもどっち。立ち位置の違いに過ぎない。
0412名無しさん@お腹いっぱい。2008/05/13(火) 16:10:19
NECと富士通の独自NFSサーバはLinux製。
ただしNFSモジュールは別途開発したものに差し替えてる。
0413名無しさん@お腹いっぱい。2008/05/15(木) 00:31:40
nfs mount 時の rsize, wsize ですが、これを指定しない場合は
いくらになるんでしょうか?
0414名無しさん@お腹いっぱい。2008/05/15(木) 07:00:16
>>413
指定しなければデフォルトの値になります。
指定しなかったからといって決して 0にはなりませんので、ご安心ください。
0415名無しさん@お腹いっぱい。2008/05/15(木) 08:55:59
>>414
あほか。wsize/rsizeをいじりたくなったらデフォルト値を知る必要があるだろ。

>>413
OS(とそのバージョン)による。
FreeBSDなら/usr/include/nfsclient/nfs.hにNFS_WSIZE,NFS_RSIZEで定義されてる。
他は知らん。
0416名無しさん@お腹いっぱい。2008/05/15(木) 09:27:37
>>414
Linuxなら、mountコマンドを引数なしで実行したら表示されるだろww
一般ユーザーでも可能。
0417名無しさん@お腹いっぱい。2008/05/15(木) 09:34:42
>>415
ソースを見るんじゃなくて、稼働中のカーネルで実際にマウントされている時の
wsize/rsizeはわからないんですか?
0418名無しさん@お腹いっぱい。2008/05/15(木) 12:28:33
Solarisならman mount_nfsに書いてある。
0419名無しさん@お腹いっぱい。2008/05/15(木) 12:34:17
>>418
それだと、mount後に「現在の」rsize,wsizeを知ることができないじゃん。
0420名無しさん@お腹いっぱい。2008/05/15(木) 13:16:50
もうさ、tcpdumpでNFS WRITEのサイズ見ればいいじゃん
0421名無しさん@お腹いっぱい。2008/05/15(木) 14:50:09
>>418
デフォルト値がわかるからいいじゃんか。
0422名無しさん@お腹いっぱい。2008/05/15(木) 16:00:17
>>418
Solaris なら nfsstat -m でずらっと出てくるお
0423名無しさん@お腹いっぱい。2008/05/15(木) 16:28:26
Linuxでも nfsstat -m で rsize/wsize 他のパラメータもわかる。

manの情報は実際のカーネルとは合ってないことがあるし、
やっぱり現物で確認する方法がいいよね。
0424名無しさん@お腹いっぱい。2008/05/15(木) 21:08:45
その知見は現物でしか使えないけどね。
0425名無しさん@お腹いっぱい。2008/05/16(金) 16:38:33
mountコマンドが、
コマンドラインオプションで指定されなかったnfs mountオプションを、
mount(2)に渡す時に、
・0にしてkernelに任せる
・具体的な規定値を設定する
と二種類あるから気をつけて。
0426名無しさん@お腹いっぱい。2008/05/20(火) 07:44:06
server1 --- server2 -- cilent

server1は指定のディレクトリをNFSで公開します。
server2はserver1のディレクトリをマウントし、NFSで公開します
clientはserver2のディレクトリをマウントします

これはできる?
0427名無しさん@お腹いっぱい。2008/05/20(火) 07:58:47
>>426
Linuxなら可能。一般には不可能。
0428名無しさん@お腹いっぱい。2008/05/20(火) 08:33:56
>>427に追加
server2がLinuxなら〜
0429名無しさん@お腹いっぱい。2008/05/21(水) 12:53:23
>>426
ちなみにserver2でsmbでマウントしたディレクトリを公開したら
書き込みできなかった
0430名無しさん@お腹いっぱい。2008/05/22(木) 00:34:19
>>420
便乗質問
NFS WRITE のサイズって、具体的にどこを見ればいいの?
0431名無しさん@お腹いっぱい。2008/05/22(木) 01:40:19
汎用性あるかしらんが、Linuxなら、

/proc/mount
NFS-SERVER:/home /home nfs rw,v3,rsize=32768,wsize=32768
0432名無しさん@お腹いっぱい。2008/05/22(木) 06:31:01
>>431
/proc/mounts だな
0433名無しさん@お腹いっぱい。2008/06/30(月) 10:19:33
マシンA,B,Cがあったとして

AからBへnfsマウントして、さらに
BからCへnfsマウントできますか?
つまりCからAのディスクをnfsを2回中継してマウントしたいです。
0434名無しさん@お腹いっぱい。2008/06/30(月) 11:26:07
>>433
>>427
0435名無しさん@お腹いっぱい。2008/06/30(月) 11:32:13
Linuxでもできない実装なかったっけ
0436名無しさん@お腹いっぱい。2008/06/30(月) 11:41:00
knfsdは不可
unfsdは可
0437名無しさん@お腹いっぱい。2008/06/30(月) 12:01:58
いまどきunfsdなんて使われてないから、結局Linuxでも不可ってこと?
0438名無しさん@お腹いっぱい。2008/06/30(月) 12:10:00
あえてunfsd使えば可ってこと
0439名無しさん@お腹いっぱい。2008/07/09(水) 14:56:06
MACOSXServer10.4のフォルダをエクスポートして、Solaris9でNFSマウントする。
その環境で、Solaris9上でMacのフォルダの容量を取得したい。

そこで質問>>
Solaris9上でNFSマウントしたMacのフォルダをdu -skの値と、
Mac上でdu -skの値に差がある。

Solaris9:2676
Mac:892

NFSマウント方法や、他に容量の取得する方法があれば教えてほしい。
お願いします。
0440名無しさん@お腹いっぱい。2008/07/09(水) 15:28:30
>>439
つ du -sB 1 filename
0441名無しさん@お腹いっぱい。2008/07/14(月) 05:04:45
>216 >218 と同じことやってた。

NFS でマウントしたディレクトリ以下で、
mkdir した場合は、強制的に permission 775 に
するようにできないのかな。
exports しているディレクトリは 2775 にセットしているから、
直下に 755 なファイルを作られても、group ユーザは消せる
けど、directory を 755 で掘らて、その下に 755 なファイルや
ディレクトリを作られると、消せなくて不便。

anonymous にすると、group で共有ディレクトリを制御
できないし。
0442名無しさん@お腹いっぱい。2008/07/14(月) 06:43:05
>>441
クライアント側で mountする時に、-o grpid オプションを付ければ、
ディレクトリのgidはサブディレクトリに伝播するよ。
0443名無しさん@お腹いっぱい。2008/07/14(月) 23:59:16
ありがと。ただ、それは、export 元で permission
を 2775 の 2 (setgid) を立てておくのと同じです。

結局、 全員に permission 775 (umask 002) 以外に
設定することを禁止し、その代わり /usr/home 用に、
uid ごとの個別のgid を用意して、運用することにしました。

NFS をグループ別に共有することができるようになったけど、
なんか、車輪の再生産をした気分。
0444名無しさん@お腹いっぱい。2008/07/15(火) 11:32:01
君は何も生産してないよ。
0445名無しさん@お腹いっぱい。2008/07/21(月) 14:23:42
ちょいと質問。すべて同じOS・同じバージョンです。具体的にはCentOS5.1のx64版。
NFSで/usr/localを共有するのと、/usrを共有するのってどちらの方が運用上賢いでしょうか?
yum upgradeとかしたときに全てのサーバマシンに影響するのかな。
0446名無しさん@お腹いっぱい。2008/07/21(月) 19:54:13
CentOSとやらがどこまでNFS共有を想定しているのか知らんが、
NFSで/usrを共有すると、たとえばNFSサーバ上で何かパッケージをインストール
したとき、NFSクライアント側は、/usrが更新されて/varが更新されていないという
不整合な状態になると思われ。

パッケージシステムを使うなら、複数ホストのパッケージ管理を1操作で
できるようにするのが筋ではないかと。
0447名無しさん@お腹いっぱい。2008/07/21(月) 19:58:22
/usr/localが吉
0448名無しさん@お腹いっぱい。2008/07/21(月) 20:30:09
>>445
system-config-netbootで全部
0449名無しさん@お腹いっぱい。2008/07/21(月) 23:36:11
>>447
そんなの初耳なんだが
0450名無しさん@お腹いっぱい。2008/07/22(火) 07:24:50
>>446
NFS 鯖と心中という障害ポイントを作る以上のメリットがない。
そんな程度なら定期的に rsync とかで同期した方が安定かつ高速。
0451名無しさん@お腹いっぱい。2008/07/22(火) 08:16:30
>450
定期的にrsync、というのはどの程度の間隔が良いのでしょうか?
ていうか、障害ポイントを発生させたとしても、管理ポイントが共有によりひとつに
まとまるNFSの方が楽じゃない? NFS鯖を極力落ちないよう準備しておけばいいだけだし。
あくまで確率論だとは思いますが。
0452名無しさん@お腹いっぱい。2008/07/22(火) 08:23:43
>>446は読んだんか?
パッケージ管理の整合性という本質的な問題が理解できてないように思うが?
0453名無しさん@お腹いっぱい。2008/07/23(水) 09:13:30
どんなに暗くても、明けない夜はない。
NFSサーバだってきっと落ちるさ。
0454名無しさん@お腹いっぱい。2008/07/23(水) 14:40:53
>>451
マスターサーバを更新したときに手動で実行するとか、
もしくはクライアントがマスターサーバに何らかの方法で問い合わせて、
更新フラグが立ってたら同期するとかね。
0455名無しさん@お腹いっぱい。2008/07/23(水) 17:53:21
/varも共有してしまえばOK。
0456名無しさん@お腹いっぱい。2008/07/23(水) 18:04:07
/var共有ということは、ほかにも/etcも共有するのですね、わかります
0457名無しさん@お腹いっぱい。2008/07/23(水) 18:17:14
素直にディスクレスクライアントにしてしまえ。
0458名無しさん@お腹いっぱい。2008/07/23(水) 18:28:45
ディスクレスクライアントにしてるよ。
パッケージアップデートとか、
NFS鯖上で各クライアントディレクトリにchrootしてやってる。
クライアントPCが電源OFFでも、NFS鯖上だけでアップデートできるので管理すごく楽。
0459名無しさん@お腹いっぱい。2008/07/23(水) 18:43:02
>>458
クライアントごとにインスタンス作ってるの?
すごく無駄な気が...
0460名無しさん@お腹いっぱい。2008/07/23(水) 18:48:04
>>459
クライアントごとにあるのは / (/var /etc /sbin等)のみ。
/usrは共有してる。共有後にパッケージ管理もしてる。

あ、/sbinのバイナリは個別にハードリンク共有してる。
0461名無しさん@お腹いっぱい。2008/08/07(木) 14:41:19
賢い人はyumを使うような環境で/usrをmountしたりはしない
0462名無しさん@お腹いっぱい。2008/08/07(木) 23:56:53
aufs+NFSで/ごとマウントしてマウント先で個別にyumしてもいいし、
逆にyumは一切しないで元ツリー側でのyumに任せる運用をしてもいいぞ。
0463名無しさん@お腹いっぱい。2008/08/13(水) 08:19:45
CentOS5.2入れて、mount -t nfs したんだけど
flock()使ってるPerlのCGI動かすと1分くらい無反応になって終了しちゃう
ファイルロックかからなくていいから、flock使っても無視するmount方法ってないかな?
ちょっと前のLinuxだと、ふつーにmountしてflockつかっても問題ないんだけど
0464名無しさん@お腹いっぱい。2008/08/13(水) 08:43:04
>>463
mount -o nolock
0465名無しさん@お腹いっぱい。2008/08/13(水) 11:17:26
>>463
ちょっと前っていつ頃?
0466名無しさん@お腹いっぱい。2008/08/13(水) 11:38:34
おれが夕焼けだったころ
0467名無しさん@お腹いっぱい。2008/08/13(水) 13:00:34
a)flockが動かないのに、なぜ動かないのか調べない
b)ファイルロックかからなくていい
c)スクリプトの方を書き換えようとしない
d)デフォルトでNFSマウントされたディレクトリでflockしようとする

いずれも俺には理解できない発想の集合体だ。

a)システムが正常に動いてないんだから、まずどこが異常なのか調べてくれ。
statdとかlockdとか動いてないんじゃないのか。他のアプリケーションの動作にも
支障があるだろう。
b)競合すればデータが壊れる。同時実行しないという仮定でCGI運用したって
必ずいつかどこかで隙を突かれる。
c)なんのためのスクリプト言語なんだ
d)たとえhomeとかNFSマウントしてても、CGIを実行するホストが単一なら
/varのようなローカルマウントしてるディレクトリ上のファイルに対する
ロックで排他するのが筋。
0468名無しさん@お腹いっぱい。2008/08/13(水) 14:12:26
cとdは連鯖なら普通だろ。
aはNFS鯖がFreeBSDとかじゃねーの?
0469名無しさん@お腹いっぱい。2008/08/13(水) 14:23:57
>>468
> cとdは連鯖なら普通だろ。

動かない規定scriptがあるレンタルサーバが普通なのか?

> aはNFS鯖がFreeBSDとかじゃねーの?

( ゚д゚)ポカーン
0470名無しさん@お腹いっぱい。2008/08/13(水) 14:30:07
>>469
おまいさんは客のスクリプトを勝手に書き換えるのか?

>( ゚д゚)ポカーン
このすれを>>1から読んでこい
0471名無しさん@お腹いっぱい。2008/08/13(水) 14:43:34
質問に回答して、解決すればそれでいいんだよ。
質問主からの結果報告がないようだけど。
>>464 の回答で解決でしょ。
0472名無しさん@お腹いっぱい。2008/08/13(水) 16:08:43
「苦しいんです。いっそ殺して楽にしてください」って患者に言われて、 言われるままに青酸カリを処方する医者は薮なんだぜ。
0473名無しさん@お腹いっぱい。2008/08/13(水) 16:15:24
たとえになってない。
ハイ次。
0474名無しさん@お腹いっぱい。2008/08/13(水) 16:19:56
>>472
Linuxの -o nolock オプション付でmountした場合、
rpc.lockd経由の異ホスト間のロックがかからなくなるだけで、
同一ホスト上だと、(たとえロック対象ファイルがNFS上でも)ちゃんとlockがかかるよ。
なので、-o nolock が質問者に対する適切な回答と思われる。
0475名無しさん@お腹いっぱい。2008/08/13(水) 17:08:08
「まず壊れているものを直す」これが問題解決の原則。
この場合、壊れているのはロック要求に応えないNFSサーバであり、
ロックの必要がないのに獲得しようとしているスクリプトだ。

-o nolockは逆に、壊れていないNFSクライアントを壊してしまう。
(ネットワークワイドでのlockを無効にし、アプリケーションにエラーも返さない)。
そのサイトで動作するアプリケーション全体に影響が及ぶことを考えれば、
他で対処できないときの次善の策と考えた方がよい。
0476名無しさん@お腹いっぱい。2008/08/13(水) 17:29:56
「まず質問者が質問していることに答える」これが問題解決の原則。
0477名無しさん@お腹いっぱい。2008/08/13(水) 17:39:09
自分のやり方を押しつけちゃいかんよ。
どっちも。
0478名無しさん@お腹いっぱい。2008/08/13(水) 17:54:02
「自分のやり方を押しつけちゃいかん」という考えも押しつけちゃいかんよ。
3人とも。
0479名無しさん@お腹いっぱい。2008/08/13(水) 21:31:45
ありがとう -o nolock で無視できた
でもしっくりいかないなあ
statdやlockd走しらせてmountしたファイルシステムにflockかけただけで半ストール状態になっちゃうものなの?
サーバー側がおかしいのかな
0480名無しさん@お腹いっぱい。2008/08/13(水) 23:43:29
質問者はその問題に関する知識がない(これは質問者なんだから当たり前)。
だから、質問者が発した質問が適切に組み立てられるとは期待出来ない。
質問の裏にある、質問者が抱えている真の問題を見抜いて解決法を回答するのが、
知識のある回答者の側の責務。

>>479
サーバ側、もしくはサーバとの通信がおかしい。
たとえばdaemonは動いていてもどこかのレイヤでパケットがフィルタリングされている、等。
0481名無しさん@お腹いっぱい。2008/08/14(木) 07:01:31
>>480
質問者はその問題に関する知識がないからこそ、
直接の回答なしに質問以外のことに対する余分な指図と思われる返答があっても
それを受け入れない、または理解できない。
まずは質問に対する直接の回答をするべき。
一旦その回答を質問者が試した上でさらに質問や疑問点があれば
再度質問すればいいことだから。
■ このスレッドは過去ログ倉庫に格納されています