【NFS】Network File System
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2006/03/28(火) 11:42:410026名無しさん@お腹いっぱい。
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を手動で起動しているだけなので。
0038名無しさん@お腹いっぱい。
2006/08/08(火) 11:43:37ファイアーウォールとかで閉じてるんじゃない?
ポート番号は変化するので大変だけど。
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:470041名無しさん@お腹いっぱい。
2006/08/20(日) 09:00:25セッション管理をmysqlとかDBで行う様にした方が良いんじゃない?
確かPHPにそういう仕組みを実現する何かがあったと思うんだが。
外してたらゴメン。
0042名無しさん@お腹いっぱい。
2006/08/21(月) 02:00:54遅レスだけど使ってるよ
鯖、蔵ともにFedora Rawhide、ハードは普通のPCだけど?
0043名無しさん@お腹いっぱい。
2006/10/09(月) 00:29:140044名無しさん@お腹いっぱい。
2006/10/22(日) 22:29:030045名無しさん@お腹いっぱい。
2006/10/22(日) 22:47:200046名無しさん@お腹いっぱい。
2006/10/23(月) 22:26:41サーバー・クライアント間にFirewallを設置せず、
ハードウェア障害のケースを想定しないで
NFSv3を使うことにすれば、
何のOSでもたいていOK、多分ね
全部逆と想定したら、まず神頼みが必要かも
0047名無しさん@お腹いっぱい。
2006/10/23(月) 23:11:29>何のOSでもたいていOK
ダウト。
FreeBSDでは未だにクライアント間でのNFSロックが効かない。
0048名無しさん@お腹いっぱい。
2006/10/25(水) 03:31:38標準はnsswitchで決められて、あとはnisだとかldapだとかにid管理任せればいいんじゃないの?
http://www.citi.umich.edu/projects/nfsv4/crossrealm/libnfsidmap_config.html
うちはnfs4でもマシン数台なんで手動管理。。。
0049名無しさん@お腹いっぱい。
2006/10/25(水) 17:47:17> FreeBSDでは未だにクライアント間でのNFSロックが効かない。
本当?
0050名無しさん@お腹いっぱい。
2006/10/25(水) 17:57:320051名無しさん@お腹いっぱい。
2006/10/28(土) 00:34:22rpc_statd_enable="YES"
でも?
0052名無しさん@お腹いっぱい。
2006/10/28(土) 11:33:21FreeBSD の rpc.lockdは動作がおかしい。
FreeBSD自身の lockf()は、flock()として動作してるw
よって、全然駄目駄目。
試しに、複数のFreeBSDクライアントから lock書ける実験をしてみるといい。
lock無視してファイル壊すから。
0053名無しさん@お腹いっぱい。
2006/10/28(土) 12:32:210054名無しさん@お腹いっぱい。
2006/10/28(土) 13:18:50rpc.lockdの件はともかく、
flock/lockfの件も直ったの?
直ったかどうかというより、これってFreeBSDの仕様の問題だから、
今までflockの動作をしていたのを急にlockfの動作にすると
別の部分で不具合が出るから、直しようがないと思うんだが、、
0055名無しさん@お腹いっぱい。
2006/11/10(金) 14:32:56いつの時代の話?
lockf(3) は内部で fcntl(2) を呼ぶようになっていますが。flock(2) ではなく。
0056名無しさん@お腹いっぱい。
2006/11/12(日) 15:53:180057名無しさん@お腹いっぱい。
2006/11/12(日) 16:49:440058名無しさん@お腹いっぱい。
2006/11/12(日) 22:45:010059名無しさん@お腹いっぱい。
2006/11/12(日) 22:58:160060名無しさん@お腹いっぱい。
2006/11/13(月) 09:37:560061名無しさん@お腹いっぱい。
2006/11/17(金) 15:36:580062名無しさん@お腹いっぱい。
2006/11/17(金) 16:18:120063名無しさん@お腹いっぱい。
2006/11/17(金) 19:02:550064名無しさん@お腹いっぱい。
2006/11/17(金) 19:05:16と聞いてるのと同じ。
0065名無しさん@お腹いっぱい。
2006/11/18(土) 01:13:200066名無しさん@お腹いっぱい。
2006/11/18(土) 04:22:470067名無しさん@お腹いっぱい。
2006/11/18(土) 05:58:43ユーザ領域をNFSマウントしちゃえたことあるよ
28.8bpsで
0068名無しさん@お腹いっぱい。
2006/11/18(土) 06:04:12遠隔地でも出来るできないで言えば出来る
実使用上のいろいろな問題があるだろうけど
0069名無しさん@お腹いっぱい。
2006/11/18(土) 09:12:09IPレベルでは同じ事。NFSはポート番号が変わるため、ファイアーウォールで
NFSだけをうまく許可する方法が難しいという点は確かに違うが、、
0070名無しさん@お腹いっぱい。
2006/11/18(土) 09:17:210071名無しさん@お腹いっぱい。
2006/11/18(土) 09:27:390072名無しさん@お腹いっぱい。
2006/11/18(土) 10:19:58設計されたものなんだが、、実際はTCP/IP版以外は使われていないけど、、
0073名無しさん@お腹いっぱい。
2006/11/19(日) 23:19:20めちゃくちゃ遅いじゃん。TCPパケットヘッダ送るだけで
2秒以上掛かるのか。
0074名無しさん@お腹いっぱい。
2006/11/21(火) 14:43:05NFS v4 VS iSCSI
でどっちが早いのか・・・
0075名無しさん@お腹いっぱい。
2006/11/21(火) 22:03:41私の勘違いでしょうか
0076名無しさん@お腹いっぱい。
2006/11/21(火) 22:17:010077名無しさん@お腹いっぱい。
2006/11/21(火) 23:07:520078名無しさん@お腹いっぱい。
2006/11/21(火) 23:33:46007974
2006/11/21(火) 23:42:49難しいかな・・・
XENでNFSで共有するか
OCFS+iSCSIで共有するかでどっちが良いか検討したかったのですけど
>76
文字足らずなのに理解して頂けたようで感謝です。
ATA-over-Ethernet
も検証候補に入れておきます。
0080名無しさん@お腹いっぱい。
2006/11/21(火) 23:46:390081名無しさん@お腹いっぱい。
2006/11/22(水) 00:47:30金物屋で売ってたよ
0082名無しさん@お腹いっぱい。
2006/11/22(水) 00:59:43鉱床からの金貨収集速度が20%上昇した
0083名無しさん@お腹いっぱい。
2006/11/22(水) 21:48:00「オスマン金物屋使った後、スペイン・オスマン金物屋は使用できない」
0084名無しさん@お腹いっぱい。
2006/11/22(水) 22:51:590085名無しさん@お腹いっぱい。
2006/11/23(木) 14:16:32ttp://www.coraid.com/products.html
これはいいSupermicroですね。
0086名無しさん@お腹いっぱい。
2006/11/23(木) 15:14:200087名無しさん@お腹いっぱい。
2006/11/23(木) 18:21:320088名無しさん@お腹いっぱい。
2006/11/29(水) 17:12:39黒字になる前に、他の業者が販売し始めて、赤字決済。
いや、是非やってくれ。
0089名無しさん@お腹いっぱい。
2006/12/06(水) 14:56:580090名無しさん@お腹いっぱい。
2006/12/10(日) 15:05:28Oracle Cluster File System (OCFS)
Google File Systems (Google GFS)
Redhat Global File System (Redhat GFS)
富士通 PRIMECLUSTER GFS (富士通 GFS)
NEC GSTORAGEFS (NEC GFS)
General Parallel File System (IBM GPFS)
SGI Infinite Storage CXFS (SGI CXFS)
VERITAS Cluster File System (VERITAS CFS)
ほかにある?
そういえば、NFSに馴染み深いはずのWAFSは最近どうなった?
0091名無しさん@お腹いっぱい。
2006/12/10(日) 15:26:40しかも1990年代の時点で。
リストもらっておけばよかったなあ。
009291
2006/12/10(日) 15:29:04>>91の[A-Z]の話は、特定の組織でしか使われないとか
論文になったことがある程度のものだったかも。
0093名無しさん@お腹いっぱい。
2006/12/10(日) 16:40:490094名無しさん@お腹いっぱい。
2006/12/10(日) 18:36:420095名無しさん@お腹いっぱい。
2006/12/27(水) 18:36:410096名無しさん@お腹いっぱい。
2006/12/27(水) 23:10:030097名無しさん@お腹いっぱい。
2007/01/16(火) 20:01:18SFU3.5でSolaris上のNFSをマウントしているのですが、
DOSコマンドのmkdirで存在しない中間ディレクトリの作成をするとこけてしまいます。
これってクライアント側の問題ですか?
0098名無しさん@お腹いっぱい。
2007/03/07(水) 11:19:31こけかたを具体的に。
0099名無しさん@お腹いっぱい。
2007/03/07(水) 13:33:44権限周りを調べるべし
0100名無しさんお腹いっぱい
2007/03/08(木) 05:34:050101名無しさん@お腹いっぱい。
2007/04/08(日) 13:46:29これをWindowsから使いたいと考えています。
NFSサーバはNFSv2/v3/v4を扱えますが、
とりあえずNFSv2は使わない方向で考えています。
ユーザ認証用にAcitiveDirectoryを用意してあるので、
SFUを用いてNISにマッピングすることに問題はありません。
Windows側はDHCPでIPアドレスを割り当てていますが
同じサブネット内に他の部署も混じっているため、
IPアドレスベースでのアクセス制御は実質役に立ちません。
特定のWindowsユーザだけにNFSサーバを使わせたいのですが、
うまい方法は無いでしょうか?
0102名無しさん@お腹いっぱい。
2007/04/08(日) 14:00:41っていう社則を作ればOK
0103名無しさん@お腹いっぱい。
2007/04/08(日) 17:12:23>同じサブネット内に他の部署も混じっているため、
>IPアドレスベースでのアクセス制御は実質役に立ちません。
MACアドレスとIPアドレスの1対1のリストを作ってIPアドレスを配布するか
MACアドレスグループに範囲内のIPアドレスを割り当てる設定にするような感じで
DHCPサーバを弄れば良い
0104名無しさん@お腹いっぱい。
2007/04/08(日) 18:14:48その手法は確実そうなのですが
DHCPサーバは全く違う部署で管理している上、
在籍者全員に割り当てられるだけのアドレス空間の余裕がありません。
(離席者のIPアドレスを回収するためにリース期間を非常に短くしてある)
SFU使ってNFS/CIFSゲートウェイを立てるしかないんでしょうか...
性能ががた落ちするのは明らかなので、
何か別に巧い方法があればとは思うのですが。
0105名無しさん@お腹いっぱい。
2007/04/08(日) 18:25:39DHCPサーバの管理が別部門という条件も出てきた以上、仕方ないですね
性能には目をつぶってそうするしかないでしょう
0106101=104
2007/04/08(日) 18:59:54レスどうもです。
ゲートウェイに使えそうな機材余ってたかな...
CIFSのライセンスキーを購入すれば
こんな妙な事をしなくても済むのですが
3桁万円するので予算が(略
0107106
2007/04/19(木) 10:24:22NFS鯖は他の事業所にドナドナされる事になりました。
少なくとも1.5TBは有ったのに orz
NFS/CIFSゲートウェイの件は機会があれば試してみようと思います。
0108名無しさん@お腹いっぱい。
2007/04/21(土) 05:59:15たいした容量じゃない
0109名無しさん@お腹いっぱい。
2007/07/02(月) 17:15:300110107
2007/07/04(水) 10:05:17HDD4台程度のなんちゃってNASとは
比較にならないよ。
速度もだけど、容量単価も別世界w
FC接続の144GB HDDが21台搭載してあった。
冗長性に余裕持たせたり、
システム領域やsnapshot領域の関係で
物理容量の約半分がユーザ容量になる。
なので1.5GBが使える、と。
0111名無しさん@お腹いっぱい。
2007/07/04(水) 10:07:49たいへんですね。業者にもってかれましたか?
0112名無しさん@お腹いっぱい。
2007/07/12(木) 00:51:220113110
2007/07/15(日) 00:30:53単位間違えてたのか
1.5TBね orz
0114NFSできない!
2007/08/12(日) 19:08:55識者の方、どうぞご教示くださいませ。
設定した項目としては下記の様な感じです。
[/etc/exports]
/test -maproot=nobody -network 192.168.1.1
として
# showmount -e
Exports list on localhost:
/test 192.168.1.1
[/etc/rc.conf]
rpcbind_enable="YES"
nfs_server_enable="YES"
nfs_server_flags="-u -t -n 4"
#nfs_reserved_port_only="YES"
mountd_enable="YES"
mountd_flags="-r"rpcbind_enable="YES"
nfs_server_enable="YES"
nfs_server_flags="-u -t -n 4"
#nfs_reserved_port_only="YES"
mountd_enable="YES"
mountd_flags="-r"
[/etc/hosts.allow]
all : 192.168.1.1 : allow
サーバー側の設定は以上で、その後リブートを実施いたしました。
0115名無しさん@お腹いっぱい。
2007/08/12(日) 19:11:030116NFSできない!
2007/08/12(日) 19:13:56次にクライアント側で
[/etc/rc.conf]
nfs_client_enable="YES"
とした後に
rpcinfo -p 192.168.1.1
program vers proto port service
100000 4 tcp 111 rpcbind
100000 3 tcp 111 rpcbind
100000 2 tcp 111 rpcbind
100000 4 udp 111 rpcbind
100000 3 udp 111 rpcbind
100000 2 udp 111 rpcbind
100000 4 local 111 rpcbind
100000 3 local 111 rpcbind
100000 2 local 111 rpcbind
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100005 1 udp 838 mountd
100005 3 udp 838 mountd
100005 1 tcp 741 mountd
100005 3 tcp 741 mountd
で確認をとり念の為クライアント側もリブートを行いました。
0117NFSできない!
2007/08/12(日) 19:14:30# mount_nfs nfs_server:/test /test
[udp] 59.106.93.70:/test: RPCPROG_MNT: RPC: Authentication error; why = Client credential too weak
となり、文献を調べてみてもクライアント側からrootで上記コマンドを実施していれば問題なさそうなのです。
サーバー側の/var/log/messagesには
Aug 12 19:10:46 ns5 mountd[754]: mount request from 192.168.1.1 from unprivileged port
となります。
ちなみに-Pオプションとかをつけてみても状況変わらずです。
2chのNFS識者の方、是非たすけてください。
0118NFSできない!
2007/08/12(日) 19:19:15めちゃくちゃ早いレスありがとうございます!
そんな事情があったんですか。うちのサーバー5.4なんで無理っていう事ですかね。。
0119名無しさん@お腹いっぱい。
2007/08/12(日) 19:21:27mountd_flags="-n"
してみろ。
0120NFSできない!
2007/08/12(日) 19:22:430121NFSできない!
2007/08/12(日) 19:28:03すげーーーーーーーーーーーーーーーーーーーー1
ありがとぅううう
0122名無しさん@お腹いっぱい。
2007/08/13(月) 12:33:45すげー
コード書き直してくれてるの?
超期待
0123名無しさん@お腹いっぱい。
2007/09/21(金) 12:08:45これ本当?
もう6.2Rくらいまで行ってるんだけど未だに改善されてないの?
0124名無しさん@お腹いっぱい。
2007/09/21(金) 12:37:430125名無しさん@お腹いっぱい。
2007/09/21(金) 14:44:28■ このスレッドは過去ログ倉庫に格納されています