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

【NFS】Network File System

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2006/03/28(火) 11:42:41
nfsに関する話題を扱うスレ
0002名無しさん@お腹いっぱい。2006/03/28(火) 11:53:37

  /'           !   ━━┓┃┃
-‐'―ニ二二二二ニ>ヽ、    ┃   ━━━━━━━━
ァ   /,,ィ=-;;,,, , ,,_ ト-、 )    ┃               ┃┃┃
'   Y  ー==j 〈,,二,゙ !  )    。                  ┛
ゝ.  {、  - ,. ヾ "^ }  } ゚ 。
   )  ,. ‘-,,'   ≦ 三
ゞ, ∧ヾ  ゝ'゚       ≦ 三 ゚。 ゚
'=-/ ヽ゚ 。≧         三 ==-
/ |ヽ  \-ァ,          ≧=- 。
  ! \  イレ,、         >三  。゚ ・ ゚
  |   >≦`Vヾ        ヾ ≧
  〉 ,く 。゚ /。・イハ 、、     `ミ 。 ゚ 。 ・
0003名無しさん@お腹いっぱい。2006/03/28(火) 16:30:12
nfsの利用は危険です。
0004名無しさん@お腹いっぱい。2006/03/28(火) 20:44:11
玄箱をNFSサーバとして使ってる。
0005名無しさん@お腹いっぱい。2006/03/30(木) 16:55:01
NFSで接続したディレクトリをsambaで公開することはできないのでしょうか?
0006名無しさん@お腹いっぱい。2006/03/30(木) 16:58:35
OSによるんじゃね
0007名無しさん@お腹いっぱい。2006/03/30(木) 17:18:29
NFSマウントしたディレクトリをSambaで公開することなら、
OS関係なしにできる。
同じNFSディレクトリを、複数のホストでSamba公開すると
ファイルのロックが問題になるので、その点だけ注意すればいいだけ。
0008名無しさん@お腹いっぱい。2006/04/02(日) 17:42:54
nfsdのCPU使用率が異常に高いのですが、考えられる原因を教えてください
0009名無しさん@お腹いっぱい。2006/04/03(月) 00:49:53
マシンのスペックがしょぼい。
0010名無しさん@お腹いっぱい。2006/04/03(月) 16:24:43
NFSマンセー
0011名無しさん@お腹いっぱい。2006/04/23(日) 16:17:54
mount -t nfs 192.168.0.18:/usr/pkgsrc /usr/pkgsrc
とやったら
mount_nfs: rpcbind to nfs on server: RPC: Port mapper failure - RPC: Timed out
といわれるんですけど、何が原因かわかりますかね?

サーバ側のexportsには
/usr/pkgsrc -maproot=root:wheel 192.168.0.0/24
を記述しています
0012名無しさん@お腹いっぱい。2006/04/23(日) 16:20:50
>>11
それは、NFS鯖でportmapまたはrpcbindが起動していない時の症状。

rpcinfo -p 192.168.0.18
の結果貼ってみろ。
0013112006/04/23(日) 16:27:34
>>12
ありがとうございます
rpcinfo -p 192.168.0.18
rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused
になります。

すいませんがよろしくお願いいたします
0014112006/04/23(日) 16:45:31
うぅーーむ・・。
mountd
rpcbind
nfsd -tun 4
を起動しなおしたら

mount -t nfs 192.168.0.18:/usr/pkgsrc /usr/pkgsrc
mount_nfs: can't access /usr/pkgsrc: Permission denied
こうなりました・・。
どこのパーミッションを直したらいいんですかね・・・。 orz
0015名無しさん@お腹いっぱい。2006/04/23(日) 17:21:16
貼れっていったんだから最後まで面倒見てやれよ
0016名無しさん@お腹いっぱい。2006/04/23(日) 18:00:54
>>14
rpcbindの問題は解決したようだね。

次の問題としては、NFS鯖側から見て、クライアントのIPアドレスが
逆引き出来てなくてPermission deniedになってる可能性がある。

あと、クライアントのOSにもよるが、
ソースポートがroot特権ポート以外からのmount要求になってる場合は、
NFS鯖側でinsecureまたはmountdに-nオプションとか、OSによって違うが
そういう設定が必要。
0017名無しさん@お腹いっぱい。2006/04/29(土) 15:57:08
>>14
LinuxでNFSやっているかも?と仮定してちょっとフォロー

1.NFS鯖でexportfs -a を行っているかチェック。
2.シンボリックリンクが存在し、リンク先が/etc/exports に記述されていない。
0018名無しさん@お腹いっぱい。2006/04/29(土) 16:26:47
>>17
>>14 ではrpcbindって言ってるからLinuxじゃないね。(Linuxはportmap)
0019名無しさん@お腹いっぱい。2006/04/29(土) 17:40:19
一般に、返事がない場合はすでに解決済みとみなして良い。
何日も前の、しかも不備な質問に、わざわざエスパーして回答してやるこたぁない。
0020名無しさん@お腹いっぱい。2006/05/05(金) 15:43:58
NFSのshareオプションでanon=0と言う物がありますがroot=ホスト名との違いが今一つ
分かりません。
と言うのは、匿名ユーザからのNFSマウントと言う場面を実機で作り事が出来ないで
いるからです。UNIX機では、どんなUIDを用いても匿名ユーザ扱いされないように見え
ます。
anon=0を使用した場合、匿名ユーザからroot権限でmountするにはどの様にすれば良い
のでしょうか?
0021名無しさん@お腹いっぱい。2006/05/05(金) 18:20:28
>>20
それ、完全に勘違いしてるね。
NFSでは、セキュリティ上、rootで直接マウントできないように、
rootのNFSクライアントを匿名ユーザに置き換える。
で、この置換えを辞めてrootのままマウントさせるオプションが、
anon=0(匿名ユーザのUIDを0にするという意味)や
root=ホスト名、なわけ、root=ホスト名、の方が、
特定のホストにのみ許可できるから安全。

で、質問の、「匿名ユーザからroot権限でmountするには」
ということは普通はできない。UIDをマップするようなオプションを使えば
できるOSもあるが、一般的ではないし、そもそもそういうことをするのは危険。
0022名無しさん@お腹いっぱい。2006/05/05(金) 18:55:22
>>21
anon=0,rw=ホスト名 とroot=ホスト名は セキュリティ上、等価と考えて良いのですか?
0023名無しさん@お腹いっぱい。2006/05/05(金) 19:36:50
>>22
なんでやねん。
0024名無しさん@お腹いっぱい。2006/05/05(金) 20:41:35
>root=ホスト名、の方が、特定のホストにのみ許可できるから安全
anon=0でも、アクセス可能なホストを制限すればセキュリティ的に等価になるかなと
思ったのですが。
気になっているのはroot=ホスト名ではなく、anon=0を使用した場合のセキュリティ上の
リスクなんです。
0025名無しさん@お腹いっぱい。2006/06/13(火) 22:11:03
NFSv4 って使ってる人いる? もしいたら、OS とかストレージ名とか
使用感とか漠然とだけど聞きたいな。
0026名無しさん@お腹いっぱい。2006/08/07(月) 13:57:02
すんません、NFSのファイルのロックに関して教えてください。

サーバーがexportしている1つのディレクトリに対して、
2台のnfsクライアント(A,B)がマウントしています。
その2台のマシンから、exportされているディレクトリ以下にある、
ファイルに対してflockをかけるのですが、
Aでflockをした後、Bでもflockできてしまいます。

NFSで1つのファイルに対する排他制御って、flockでは
できないのでしょうか?それとも、NFSの設定がおかしいのでしょうか?

よろしくお願いします。
0027名無しさん@お腹いっぱい。2006/08/07(月) 14:10:38
>>26
NFSv3以前では無理と思うべき。NLMとかlockdとかあるけど、
あんなもんじゃ複数クライアントからのまともなロックはできん。
0028名無しさん@お腹いっぱい。2006/08/07(月) 14:15:18
>>26
NFSのロックはflock()じゃできない。
lockf()を使うこと。(またはfcntl())
常識中の常識。

あと、動いてるとは思うけど、lockf()が動作するには
(rpc.)lockdと、(rpc.)statd相当のデーモンが必要。
詳細はOSによって多少違うが。
0029名無しさん@お腹いっぱい。2006/08/07(月) 14:50:33
fcntlでも複数クライアントはできないんじゃない?
0030名無しさん@お腹いっぱい。2006/08/07(月) 15:07:01
>>29
lockf()は実はフロントエンドであって、
内部でfcntl()を呼んでるわけだが。
lockf()の関数は互換性のため残ってるだけ。

なので、fcntl()で当然排他制御ができる。
なお、NFSはv2であってもOKだよ。
0031292006/08/07(月) 15:37:30
>>30
ん? なんか論点が食い違っているような・・・
flock, lockf, fcntlとNFSの関係に関しては漏れも理解しているつもり。

fcntlを使えばロックができることも知っているし、経験的にもそれが
出来てはいるんだけど、ただ、複数のクライアントのときにうまく
行かなかったのよね。サーバとクライアントが仕様通りの実装に
なっていれば、ちゃんとfcntlでロックできるもんなの?
2台のクライアントからすさまじく高速にロックルーチンを回す試験を
してて、たまにファイルがぶっ壊れてましたけどw
0032名無しさん@お腹いっぱい。2006/08/07(月) 15:52:53
皆様レスありがとう。

>>30
了解です。
で、fcntlでロックをしようとすると、今度は
「No locks available」のエラーになっちゃう・・・
ローカルディレクトリで、同じプログラムを動作させると、
ちゃんとロックするんですが。
教えてくんですみませんが、原因などご存知でしたら教えてください。

0033名無しさん@お腹いっぱい。2006/08/07(月) 16:09:28
>>32
>>28 が書いてるとおり、lockd statdを起動していないからだと思われ。
0034名無しさん@お腹いっぱい。2006/08/07(月) 18:19:04
>>33
rpc.statdと、lockdはクライアント側、サーバー側で、
rpcinfo -p
で、statusとnlockmgrもいます。
クライアント側から、rpcinfo -p サーバーIPで、
サーバー側も見れます。

なにか設定がおかしいんでしょうかね・・・?
0035名無しさん@お腹いっぱい。2006/08/07(月) 18:49:45
>>34
fcntl()の、引数指定間違えてない?
一度 lockf()使って呼んでみれ。
0036名無しさん@お腹いっぱい。2006/08/07(月) 18:59:09
"No locks available"って、errnoに ENOLCKがセットされた時のエラーで、
ロックが多過ぎてロックテーブルがオーバーフローした状態なわけだが。
テストプログラム起動し過ぎてるとかない?
0037名無しさん@お腹いっぱい。2006/08/07(月) 19:29:22
皆様、何度もご協力ありがとうございます。
>>35
実は、もともとの問題は、PHPのセッションファイルは、NFSマウントしたディレクトリに置いて、Load balancer配下のサーバーで
共有できるか?というところだったりします。んで、PHP4のセッションファイルを作成しているところのlソースを参照して、
そのロックの手法を抜き出して、そのままテストプログラムにしてます。
テストプログラムは以下のような感じで、
呼び出し側は、php_flock(fp, LOCK_EX)で、
関数は↓
int php_flock(int fd, int operation) {
  struct flock flck;
  int ret;
  flck.l_start = flck.l_len = 0;
  flck.l_whence = SEEK_SET;
  if (operation & LOCK_SH)
    flck.l_type = F_RDLCK;
  else if (operation & LOCK_EX)
    flck.l_type = F_WRLCK;
  else if (operation & LOCK_UN)
    flck.l_type = F_UNLCK;
  else {
    errno = EINVAL;
    return -1;
  }
  ret = fcntl(fd, operation & LOCK_NB ? F_SETLK : F_SETLKW, &flck);
・・・・
}
です。
>>36
テストプログラムは、数多く起動はしていないです。テストプログラムをコンパイルした、
a.outを手動で起動しているだけなので。

0038名無しさん@お腹いっぱい。2006/08/08(火) 11:43:37
lockd/statdが使用してる(RPC登録してる)ポートを
ファイアーウォールとかで閉じてるんじゃない?
ポート番号は変化するので大変だけど。
rpcinfo -pだと、111ポートだけが開いてればstatus/nlockmgrが
表示されるけど、それだけだと確認にならない。
0039名無しさん@お腹いっぱい。2006/08/19(土) 12:20:18
最近出来たスレなんですね。
お詳しい方がいらっしゃるので、私もこれから勉強していきたいと思います。

私はあまりNFSに詳しくないのですが、
以前からNFSROOT好きです。

Solaris/x86をNFSROOT化したり、
「Fedora Core Linux ディスクレス化キット」を開発したりしています。

昨日ホームページを開設しまして、「Fedora Core Linux ディスクレス化キット」
を公開しました。
http://wikiwiki.jp/disklessfun/?disklessfc
Fedora Core をカーネルリコンパイルせずにNFSROOT化するキットです。

また、http://dl-x86solaris.sourceforge.jp/では
Solaris/x86をNFSROOTでインストールしたり運用するキットを開発・公開しています。

非常にマイナーな世界の話ですが、もし興味があればいらして下さい。
0040名無しさん@お腹いっぱい。2006/08/19(土) 15:38:47
>>39 GJ あとで見ておく。
0041名無しさん@お腹いっぱい。2006/08/20(日) 09:00:25
>>37
セッション管理をmysqlとかDBで行う様にした方が良いんじゃない?
確かPHPにそういう仕組みを実現する何かがあったと思うんだが。
外してたらゴメン。
0042名無しさん@お腹いっぱい。2006/08/21(月) 02:00:54
>>25
遅レスだけど使ってるよ
鯖、蔵ともにFedora Rawhide、ハードは普通のPCだけど?
0043名無しさん@お腹いっぱい。2006/10/09(月) 00:29:14
nfs4のidmapdで、uidの異なるマシン間でuidをマップする方法をご存じの方、教えていただけませんか?
0044名無しさん@お腹いっぱい。2006/10/22(日) 22:29:03
今、NFSが一番安心して使えるOSはどれですか?
0045名無しさん@お腹いっぱい。2006/10/22(日) 22:47:20
Solaris.
0046名無しさん@お腹いっぱい。2006/10/23(月) 22:26:41
サーバーとクライアントを同じプラットフォームで統一して、
サーバー・クライアント間にFirewallを設置せず、
ハードウェア障害のケースを想定しないで
NFSv3を使うことにすれば、

何のOSでもたいていOK、多分ね


全部逆と想定したら、まず神頼みが必要かも
0047名無しさん@お腹いっぱい。2006/10/23(月) 23:11:29
>>46
>何のOSでもたいていOK
ダウト。
FreeBSDでは未だにクライアント間でのNFSロックが効かない。
0048名無しさん@お腹いっぱい。2006/10/25(水) 03:31:38
>>43
標準はnsswitchで決められて、あとはnisだとかldapだとかにid管理任せればいいんじゃないの?
http://www.citi.umich.edu/projects/nfsv4/crossrealm/libnfsidmap_config.html

うちはnfs4でもマシン数台なんで手動管理。。。
0049名無しさん@お腹いっぱい。2006/10/25(水) 17:47:17
>>47
> FreeBSDでは未だにクライアント間でのNFSロックが効かない。

本当?

0050名無しさん@お腹いっぱい。2006/10/25(水) 17:57:32
Yes
0051名無しさん@お腹いっぱい。2006/10/28(土) 00:34:22
rpc_lockd_enable="YES"
rpc_statd_enable="YES"

でも?
0052名無しさん@お腹いっぱい。2006/10/28(土) 11:33:21
>>51
FreeBSD の rpc.lockdは動作がおかしい。
FreeBSD自身の lockf()は、flock()として動作してるw

よって、全然駄目駄目。

試しに、複数のFreeBSDクライアントから lock書ける実験をしてみるといい。
lock無視してファイル壊すから。
0053名無しさん@お腹いっぱい。2006/10/28(土) 12:32:21
今年の5月か6月あたりに直ったんじゃなかったっけ。
0054名無しさん@お腹いっぱい。2006/10/28(土) 13:18:50
>>53
rpc.lockdの件はともかく、
flock/lockfの件も直ったの?
直ったかどうかというより、これってFreeBSDの仕様の問題だから、
今までflockの動作をしていたのを急にlockfの動作にすると
別の部分で不具合が出るから、直しようがないと思うんだが、、
0055名無しさん@お腹いっぱい。2006/11/10(金) 14:32:56
>>54
いつの時代の話?
lockf(3) は内部で fcntl(2) を呼ぶようになっていますが。flock(2) ではなく。
0056名無しさん@お腹いっぱい。2006/11/12(日) 15:53:18
NFS over SSHのやり方を教えてください。
0057名無しさん@お腹いっぱい。2006/11/12(日) 16:49:44
http://www.google.com/search?num=50&hl=ja&q=%22NFS%26%23160%3Bover%26%23160%3BSSH%22
0058名無しさん@お腹いっぱい。2006/11/12(日) 22:45:01
結局ステートレスじゃないNFSに替わるネットワークを透過的に使えるファイルシステムなんてものは無いということなのか?
0059名無しさん@お腹いっぱい。2006/11/12(日) 22:58:16
つ SMB
0060名無しさん@お腹いっぱい。2006/11/13(月) 09:37:56
mjsk
0061名無しさん@お腹いっぱい。2006/11/17(金) 15:36:58
NFSv4の立場は・・・・・・
0062名無しさん@お腹いっぱい。2006/11/17(金) 16:18:12
FreeBSDの NFSv4対応はいつになりますか? Linuxでさえ対応してるのに、、
0063名無しさん@お腹いっぱい。2006/11/17(金) 19:02:55
NFSって遠隔地、例えば東京大阪間のようなものでもグローバルIPさえあればつなぐことができるのでしょうか?
0064名無しさん@お腹いっぱい。2006/11/17(金) 19:05:16
電子メールって遠隔地、例えば東京大阪間のようなものでもグローバルIPさえあれば送ることができるのでしょうか?

と聞いてるのと同じ。
0065名無しさん@お腹いっぱい。2006/11/18(土) 01:13:20
同じかなー
0066名無しさん@お腹いっぱい。2006/11/18(土) 04:22:47
なんか怖いな
0067名無しさん@お腹いっぱい。2006/11/18(土) 05:58:43
20世紀の頃、某ISPのWebサーバの
ユーザ領域をNFSマウントしちゃえたことあるよ
28.8bpsで

■ このスレッドは過去ログ倉庫に格納されています