【NFS】Network File System
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2006/03/28(火) 11:42:410002名無しさん@お腹いっぱい。
2006/03/28(火) 11:53:37/' ! ━━┓┃┃
-‐'―ニ二二二二ニ>ヽ、 ┃ ━━━━━━━━
ァ /,,ィ=-;;,,, , ,,_ ト-、 ) ┃ ┃┃┃
' Y ー==j 〈,,二,゙ ! ) 。 ┛
ゝ. {、 - ,. ヾ "^ } } ゚ 。
) ,. ‘-,,' ≦ 三
ゞ, ∧ヾ ゝ'゚ ≦ 三 ゚。 ゚
'=-/ ヽ゚ 。≧ 三 ==-
/ |ヽ \-ァ, ≧=- 。
! \ イレ,、 >三 。゚ ・ ゚
| >≦`Vヾ ヾ ≧
〉 ,く 。゚ /。・イハ 、、 `ミ 。 ゚ 。 ・
0003名無しさん@お腹いっぱい。
2006/03/28(火) 16:30:120004名無しさん@お腹いっぱい。
2006/03/28(火) 20:44:110005名無しさん@お腹いっぱい。
2006/03/30(木) 16:55:010006名無しさん@お腹いっぱい。
2006/03/30(木) 16:58:350007名無しさん@お腹いっぱい。
2006/03/30(木) 17:18:29OS関係なしにできる。
同じNFSディレクトリを、複数のホストでSamba公開すると
ファイルのロックが問題になるので、その点だけ注意すればいいだけ。
0008名無しさん@お腹いっぱい。
2006/04/02(日) 17:42:540009名無しさん@お腹いっぱい。
2006/04/03(月) 00:49:530010名無しさん@お腹いっぱい。
2006/04/03(月) 16:24:430011名無しさん@お腹いっぱい。
2006/04/23(日) 16:17:54とやったら
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それは、NFS鯖でportmapまたはrpcbindが起動していない時の症状。
rpcinfo -p 192.168.0.18
の結果貼ってみろ。
001311
2006/04/23(日) 16:27:34ありがとうございます
rpcinfo -p 192.168.0.18
rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused
になります。
すいませんがよろしくお願いいたします
001411
2006/04/23(日) 16:45:31mountd
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:160016名無しさん@お腹いっぱい。
2006/04/23(日) 18:00:54rpcbindの問題は解決したようだね。
次の問題としては、NFS鯖側から見て、クライアントのIPアドレスが
逆引き出来てなくてPermission deniedになってる可能性がある。
あと、クライアントのOSにもよるが、
ソースポートがroot特権ポート以外からのmount要求になってる場合は、
NFS鯖側でinsecureまたはmountdに-nオプションとか、OSによって違うが
そういう設定が必要。
0017名無しさん@お腹いっぱい。
2006/04/29(土) 15:57:08LinuxでNFSやっているかも?と仮定してちょっとフォロー
1.NFS鯖でexportfs -a を行っているかチェック。
2.シンボリックリンクが存在し、リンク先が/etc/exports に記述されていない。
0018名無しさん@お腹いっぱい。
2006/04/29(土) 16:26:47>>14 ではrpcbindって言ってるからLinuxじゃないね。(Linuxはportmap)
0019名無しさん@お腹いっぱい。
2006/04/29(土) 17:40:19何日も前の、しかも不備な質問に、わざわざエスパーして回答してやるこたぁない。
0020名無しさん@お腹いっぱい。
2006/05/05(金) 15:43:58分かりません。
と言うのは、匿名ユーザからのNFSマウントと言う場面を実機で作り事が出来ないで
いるからです。UNIX機では、どんなUIDを用いても匿名ユーザ扱いされないように見え
ます。
anon=0を使用した場合、匿名ユーザからroot権限でmountするにはどの様にすれば良い
のでしょうか?
0021名無しさん@お腹いっぱい。
2006/05/05(金) 18:20:28それ、完全に勘違いしてるね。
NFSでは、セキュリティ上、rootで直接マウントできないように、
rootのNFSクライアントを匿名ユーザに置き換える。
で、この置換えを辞めてrootのままマウントさせるオプションが、
anon=0(匿名ユーザのUIDを0にするという意味)や
root=ホスト名、なわけ、root=ホスト名、の方が、
特定のホストにのみ許可できるから安全。
で、質問の、「匿名ユーザからroot権限でmountするには」
ということは普通はできない。UIDをマップするようなオプションを使えば
できるOSもあるが、一般的ではないし、そもそもそういうことをするのは危険。
0022名無しさん@お腹いっぱい。
2006/05/05(金) 18:55:22anon=0,rw=ホスト名 とroot=ホスト名は セキュリティ上、等価と考えて良いのですか?
0023名無しさん@お腹いっぱい。
2006/05/05(金) 19:36:50なんでやねん。
0024名無しさん@お腹いっぱい。
2006/05/05(金) 20:41:35anon=0でも、アクセス可能なホストを制限すればセキュリティ的に等価になるかなと
思ったのですが。
気になっているのはroot=ホスト名ではなく、anon=0を使用した場合のセキュリティ上の
リスクなんです。
0025名無しさん@お腹いっぱい。
2006/06/13(火) 22:11:03使用感とか漠然とだけど聞きたいな。
0026名無しさん@お腹いっぱい。
2006/08/07(月) 13:57:02サーバーがexportしている1つのディレクトリに対して、
2台のnfsクライアント(A,B)がマウントしています。
その2台のマシンから、exportされているディレクトリ以下にある、
ファイルに対してflockをかけるのですが、
Aでflockをした後、Bでもflockできてしまいます。
NFSで1つのファイルに対する排他制御って、flockでは
できないのでしょうか?それとも、NFSの設定がおかしいのでしょうか?
よろしくお願いします。
0027名無しさん@お腹いっぱい。
2006/08/07(月) 14:10:38NFSv3以前では無理と思うべき。NLMとかlockdとかあるけど、
あんなもんじゃ複数クライアントからのまともなロックはできん。
0028名無しさん@お腹いっぱい。
2006/08/07(月) 14:15:18NFSのロックはflock()じゃできない。
lockf()を使うこと。(またはfcntl())
常識中の常識。
あと、動いてるとは思うけど、lockf()が動作するには
(rpc.)lockdと、(rpc.)statd相当のデーモンが必要。
詳細はOSによって多少違うが。
0029名無しさん@お腹いっぱい。
2006/08/07(月) 14:50:330030名無しさん@お腹いっぱい。
2006/08/07(月) 15:07:01lockf()は実はフロントエンドであって、
内部でfcntl()を呼んでるわけだが。
lockf()の関数は互換性のため残ってるだけ。
なので、fcntl()で当然排他制御ができる。
なお、NFSはv2であってもOKだよ。
003129
2006/08/07(月) 15:37: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>>28 が書いてるとおり、lockd statdを起動していないからだと思われ。
0034名無しさん@お腹いっぱい。
2006/08/07(月) 18:19:04rpc.statdと、lockdはクライアント側、サーバー側で、
rpcinfo -p
で、statusとnlockmgrもいます。
クライアント側から、rpcinfo -p サーバーIPで、
サーバー側も見れます。
なにか設定がおかしいんでしょうかね・・・?
0035名無しさん@お腹いっぱい。
2006/08/07(月) 18:49:45fcntl()の、引数指定間違えてない?
一度 lockf()使って呼んでみれ。
0036名無しさん@お腹いっぱい。
2006/08/07(月) 18:59:09ロックが多過ぎてロックテーブルがオーバーフローした状態なわけだが。
テストプログラム起動し過ぎてるとかない?
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を手動で起動しているだけなので。
■ このスレッドは過去ログ倉庫に格納されています