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

【NFS】Network File System

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2006/03/28(火) 11:42:41
nfsに関する話題を扱うスレ
0357名無しさん@お腹いっぱい。2008/04/15(火) 14:24:09
誰も固定にするなんて言っていない。
0358名無しさん@お腹いっぱい。2008/04/15(火) 14:47:45
そういう場合はどうすると言ったのかを言わないと「固定にする」と言ったとみなされたままになる。
0359名無しさん@お腹いっぱい。2008/04/15(火) 22:30:41
べつにNISでもLDAPでもNetInfoでもいいよ
0360名無しさん@お腹いっぱい。2008/04/16(水) 02:54:04
>>359
比較するとしたらどれが良いと思う?
0361名無しさん@お腹いっぱい。2008/04/16(水) 04:21:04
LDAP
0362impress入門者2008/04/16(水) 16:14:03
>>682, 683

マイレイアウト追加って出来ますか?
数式の規定フォントの指定って出来ますか?
0363名無しさん@お腹いっぱい。2008/04/16(水) 16:25:44
NFSじゃ無理
0364名無しさん@お腹いっぱい。2008/04/16(水) 22:21:40
いや、なんとかすりゃできるかもよ?
俺は教えないけどね
0365名無しさん@お腹いっぱい。2008/04/19(土) 03:14:55
NFSで/usrをシェアするってどうなの?
0366名無しさん@お腹いっぱい。2008/04/19(土) 06:55:24
どうって、普通だよ
0367名無しさん@お腹いっぱい。2008/04/19(土) 13:57:21
や、/usr/localを共有するもんだと思ってたんだけど
>>365みたく/usrなんて共有していいものなのか?
0368名無しさん@お腹いっぱい。2008/04/19(土) 14:53:31
>>367
/usrだからこそ共有していい。

ホスト間で共有できるものは /usr以下(/usr/bin /usr/lib /usr/sbin等)に。
ホスト間で共有できないものは /etc /var /bin /sbin /lib等に
というルールになっている。
Solarisではホスト間で共有できるファイルを増やすため、
/binをsymlinkにして、すべて/usr/binに移動している。
0369名無しさん@お腹いっぱい。2008/04/19(土) 16:58:26
NFS鯖に障害が出たときにすげー面倒くさそう。/sbinだけあってもなぁw
用途や規模や更新頻度にもよるけど、漏れはrsyncとかパッケージの管理とかで
統一する方が好きかな。
0370名無しさん@お腹いっぱい。2008/04/19(土) 21:36:28
んじゃ、NFSじゃなくrsyncで全ホスト間の/usrで同期をとるならば
cronとかで定期的に親機から全ホストに対してrsyncするスクリプトを叩く、でおk?
一時間おきとかに。
0371名無しさん@お腹いっぱい。2008/04/20(日) 11:17:05
パッケージとパッチ使えよ。
0372名無しさん@お腹いっぱい。2008/04/20(日) 12:23:00
/usr以下なら、更新したタイミングで同期すればいいじゃない
0373名無しさん@お腹いっぱい。2008/04/20(日) 12:58:33
ガチで管理したいならもうpuppetとか導入しちゃった方がいいんじゃない?
0374名無しさん@お腹いっぱい。2008/04/25(金) 02:29:03
パペットってどうよ?
10台以下の環境で使うほどの必要あるかな
0375名無しさん@お腹いっぱい。2008/04/27(日) 10:35:38
RDISKはNFSですか?
0376名無しさん@お腹いっぱい。2008/05/02(金) 07:46:00
NFSでマウントしたボリュームについても,クライアント側で
通常のファイルシステムのようにキャッシュは有効なのでしょうか?

NFS 鯖においてあるファイルを NFSv3 でマウントして,
そこそこ大きなファイル(10M程度のログファイル)を
何度も読み込むとすると,何度もトラフィックが発生
するものなのでしょうか?

Linux ユーザなのですが NFS のスレが Linux 板にないのでここに来ました.
なお,FS-Cache とか cachefilesd は使っていません.
通常のディスクキャッシュの仕組みがNFSでマウントした
ボリュームでも働くかどうかということです.
0377名無しさん@お腹いっぱい。2008/05/02(金) 07:51:22
>>376
当然キャッシュされる。もちろん、クライアントの搭載メモリ次第だが。
同じファイルを読み込む場合、2回目は速い。
0378名無しさん@お腹いっぱい。2008/05/02(金) 09:19:12
>>376
man 5 nfsも読んどいてくれ
03793762008/05/02(金) 13:35:30
レスありがとうございます。最近NFSを利用している
クライアントマシンから「NFSが気絶してる」という
苦情を受けるので、使い方を聞いてみたら10000個ほどの
10MB程度のファイルを次々と grep しただけ、とのこと。
しかも1ファイルごとに100回くらい読み直したとのコト。

せめてクライアント側でキャッシュが有効なら同じファイル
100個読むのは別に負荷じゃないよなぁとおもったのです。

さきほど nfsstat をサーバ側でやってみたら、

Server nfs v3:
null getattr setattr lookup access readlink
6 0% 18278453 80% 143964 0% 781712 3% 2524218 11% 0 0%
read write create mkdir symlink mknod
352987 1% 455073 1% 54698 0% 6321 0% 0 0% 0 0%
remove rmdir rename link readdir readdirplus
51737 0% 5598 0% 88 0% 0 0% 107265 0% 27950 0%
fsstat fsinfo pathconf commit
8 0% 2 0% 0 0% 17191 0%

うむむ、getattr だけで 80% らしい。80% というのが回数なのか
そのコールを処理するのにかかった時間なのかわかりませんが、
なんにせよ getattr 恐るべし。man 5 nfs によるとディレクトリ
エントリがらみのキャッシュ時間を設定しろということなのでしょうか。

うちの使い方では関係ないですが、ディレクトリエントリを
キャッシュしちゃうとロックファイルのような使い方を
してるアプリケーションにとってはまずいことがおきる?
0380名無しさん@お腹いっぱい。2008/05/02(金) 13:44:43
>>379
RHEL4ならbugzilla見にいけ
03813762008/05/02(金) 16:31:35
>>380
サーバは Ubuntu LTS 6.0.6 LTS です。が
今使ってるカーネルのバージョンに絡んだ何かが
あるかもしれないので時間のあるときに見てみます。

ところで、みなさん nfsd の数ってどうやって最適値を
見積もってらっしゃるんでしょうか? デフォルトが 8
だし、デュアルコアだから 16、いや、20 くらいにしておこう
程度の発想しかできないんですが、たとえば /proc 以下の
何かをモニタしていればヒントが得られるのでしょうか。
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も共有するのですね、わかります
■ このスレッドは過去ログ倉庫に格納されています