【NFS】Network File System
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2006/03/28(火) 11:42:410193名無しさん@お腹いっぱい。
2007/11/23(金) 12:16:000194名無しさん@お腹いっぱい。
2007/11/23(金) 12:18:50Broadcomでいいじゃん
0195名無しさん@お腹いっぱい。
2007/11/23(金) 23:24:060196名無しさん@お腹いっぱい。
2007/11/24(土) 00:21:000197名無しさん@お腹いっぱい。
2007/11/24(土) 14:06:57int main() {
int fd; char buf[10];
int fd=open("poi", O_CREAT|O_TRUNC|O_WRONLY|O_EXCL, S_IRUSR|S_IRGRP|S_IROTH);
write(fd, buf, sizeof(buf)); /* creatを行ったfdは書き込みが可能 */
fclose(fd);
}
これをNFSv3マウントされたディレクトリ上で実行すると
CREAT, SETATTR, WRITEのprotocolが順に発行されます。
これをNFSサーバ側で問題なく扱おうとすると面倒があって
最後の読取専用へのWRITEを許可するかどうか、
WRITE要求のハンドルがCREATE時のものと一致するかで判断しないといけない。
このような判定の実装はNFSサーバにとって義務なのかな?
0198名無しさん@お腹いっぱい。
2007/11/24(土) 14:11:09当然義務。
読取専用かどうかは、creatまたはopenの際のみに有効な属性で、
一旦open(ハントル取得)してさえしまえば、
ファイル自体の読みとり専用かどうかに関係なく、
O_WRONLYとかでopenされたのなら書き込みができなければならない。
0199名無しさん@お腹いっぱい。
2007/11/24(土) 14:11:38プログラム中のfclose(fd)はclose(fd)の間違いです
0200名無しさん@お腹いっぱい。
2007/11/24(土) 14:17:29おー、こんなピンポイントで回答が来るなんて凄いです 流石unix板
ちなみにこれはCVSが実際にやってくれる操作です
0201名無しさん@お腹いっぱい。
2007/11/24(土) 14:19:25シェル上で同じことができる。
umask 777
echo hoge > file
とやれば、fileは読み込みも書き込みも不許可で作成されるが、
echo hogeの内容はちゃんとfileに書き込まれる。
fileがNFS上にあっても当然動作しなければならない。
0202名無しさん@お腹いっぱい。
2007/11/24(土) 14:21:350203名無しさん@お腹いっぱい。
2007/11/24(土) 17:34:17RFC1813, 4.4 Permission issues の第3段落に書いてありました
0204名無しさん@お腹いっぱい。
2007/11/25(日) 15:06:35NATルータ越しのNFSは_?
VPN 通すしかない?
0205名無しさん@お腹いっぱい。
2007/11/25(日) 17:00:41結局、NICのROMのアドレス1部変更で直った。
2.6カーネルでは解消された。
0206名無しさん@お腹いっぱい。
2007/12/06(木) 13:41:08実装によってはポート固定も無理ではないが、
ここで聞かないとわからないレベルならお薦めしない。
あと、WebNFSという選択肢もある。
0207名無しさん@お腹いっぱい。
2007/12/19(水) 02:30:55NFSサーバに10GBのファイルがあって、それをNFSクライアントで読み込むときに
10GB全部をクライアントでリード・ライトしなきゃいけないとかそういうことなんでしょうか?
0208名無しさん@お腹いっぱい。
2007/12/19(水) 09:08:58> NFSとiSCSIでよくファイル単位と、ブロック単位という比較を聞くんですが、
どこであるいは誰に聞いた?
0209名無しさん@お腹いっぱい。
2007/12/19(水) 09:21:46google: NFS iSCSI ファイル ブロック
http://itpro.nikkeibp.co.jp/article/COLUMN/20060407/234778/
>データ転送の単位は,NASにアクセスするときはファイル単位となる。つまり,NASへのデータ・アクセスでは,ファイル名や共有名などファイルを特定する呼び名で管理している。
>これに対し,SANの場合はブロック単位の処理になる(通常1つのファイルは1つまたは複数のブロックで構成される)。SANでは,リモートにあるディスク装置内のディスクが,あたかもローカル・ディスク(RAWデバイス*4)であるかのように振る舞う。
(略)
>IP-SANには,「FCIP(Fibre Channel over IP)」「iFCP(Internet Fibre Channel Protocol)」「iSCSI(Internet SCSI)」という規格がある。この中で最も期待されているのがiSCSIである。
ってことじゃねーの?
0210名無しさん@お腹いっぱい。
2007/12/19(水) 09:58:180211名無しさん@お腹いっぱい。
2007/12/19(水) 11:14:580212名無しさん@お腹いっぱい。
2007/12/20(木) 16:46:400213名無しさん@お腹いっぱい。
2007/12/20(木) 16:58:190214名無しさん@お腹いっぱい。
2007/12/27(木) 14:42:36ファイル操作システムコール(API)
VFS
個々のファイルシステム(ext3,xfs,reiserfs,fat16,iso9660)
ドライバ
ハードウェア
NFSってのはファイル操作システムコールに相当、ファイル単位でも扱えるし、
バイト単位で読んだりもできる。VFSから下は考えなくてよい。
iSCSIってのはドライバに相当、ファイル単位では考えないで、
ハードウェアとのやりとりの最小単位(ブロック単位)で考えなければならない。
システムとして利用するには、ファイルシステム、VFS、システムコールも備えていなければならない。
0215名無しさん@お腹いっぱい。
2007/12/27(木) 14:48:10以って?
0216名無しさん@お腹いっぱい。
2007/12/27(木) 19:59:34NFS サーバと NFS クライアント側では、それぞれの /etc/passwd にユーザが同じuid、gidで
登録されていて、group hoge に属するユーザだけに書き込ませたいです。
NFSサーバ側:
# mkdir -p /opt/share; ← NFS で共有したいディレクトリを作成
# chgrp hoge share
# chmod g+ws share;
/etc/exports の内容:
/opt/share 192.168.0.0/255.255.255.0(rw,sync)
NFS クライアント側
# mkdir -p /opt/share ← マウントポイントとなるディレクトリを作成
# chgrp hoge share
# chmod g+ws share;
mount -t nfs {nfs_server_name}:/opt/share /opt/share
ここまでは簡単にできたなのですが、nfs クライアント側から、umask が 0022 なユーザが
書き込みをすると、NFS サーバ側では -rw-r--r-- というファイルができます。
ここまではあたりまえですが、これを NFS 側で、強制的に -rw-rw-r として保存するような設定はありますか?
samba だと smb.conf で、公開ディレクトリのブロックの中で
directory mask = 0664
とできますが、これと同じようなことがしたいです。
0217名無しさん@お腹いっぱい。
2007/12/28(金) 05:39:34NFSサーバの実装によってはそういうのもありえるかもしれないけど、
NFSサーバでumaskを強制させてもあまり意味がないのかも。roかrwくらいだろうし…
0218216
2008/01/05(土) 07:48:19レスどうもありがとうございます。遅くなってすみません。
結局以下の方法で対応しました。
NFS サーバ側で uid hoge / gid hoge という共通ユーザを作成し、
NFS サーバの /etc/exports で以下のようにした。
/opt/share 192.168.0.0/255.255.255.0(rw,sync,all_squash,anonuid=xxx,anongid=xxx)
↑ uid=xxx gid=xxx は、hoge:hoge の uid と gid
こうすることで、NFS クライアント側は gid hoge に属していれば、uid は別のユーザが
作成したファイルを、別のユーザが消すことができるようになりました。
理想は NFS サーバ側で、どの NFS クライアントのユーザがファイルを作成したか知れたほうが
よかったのですが、ここは目をつぶりました。
なお man mount すると、-t で指定するファイルシステムタイプの中で、
一部では -o に mask みたいなオプションが指定できるようですが、-t nfs のときは、
mask と行ったオプションは用意されていませんでした。
0219名無しさん@お腹いっぱい。
2008/01/06(日) 11:20:480220名無しさん@お腹いっぱい。
2008/01/06(日) 21:59:39NISが許されるのは10人未満のLANまでだよねーwww
0221名無しさん@お腹いっぱい。
2008/01/06(日) 23:17:07じゃあなんNISればいいんですか?><
0222名無しさん@お腹いっぱい。
2008/03/08(土) 17:17:43みなさんの運用方法で「これはおすすめ!」っての、教えてもらえないでしょうか。
ちなみにうちはCentOS5の6台構成(Web 3台、Db1台、開発用1台、DB&NFS&Samba鯖機1台)
0223名無しさん@お腹いっぱい。
2008/03/08(土) 17:39:300224名無しさん@お腹いっぱい。
2008/03/08(土) 17:43:03え、そうなの?
/usr/local/libならシェアしてるけども。
0225名無しさん@お腹いっぱい。
2008/03/08(土) 23:39:090226名無しさん@お腹いっぱい。
2008/03/08(土) 23:47:11/homeのNFS共有は当然として、
OSのバージョンが同じなら /usr以下をすべてNFS共有する。
updatesとか、OSのバージョン管理が一元化できる。
ホストを1台増やす時でも、OSをインストールする必要はない。
もともとインストール済の/usrをNFS共有して、
ホスト毎に必要な/etcや/varなどを個別に用意するだけで済むから。
0227名無しさん@お腹いっぱい。
2008/03/09(日) 13:46:30ロードバランサーでWebサーバ束ねているような場合、コンテンツの
directoryをNFSで共有って、良くやるパターンだよね?
セキュリティの事を気にして言っているの?
だとしても、その対処法はあるわけで。
0228名無しさん@お腹いっぱい。
2008/03/09(日) 21:25:20少なくとも、 ベンダやメンテナによるテストはあまりされていないよね。
そもそも今はパッケージシステム(と安くなったディスク)のおかげで、/usrを共有する必要性って薄くない?
ロードバランサで分散しなきゃならないWebトラフィックって、CGI(CPU bound)なやつで、
その場合はRDBを共有するんじゃないかな。NFSサーバではなく。
NFSに限らず、ネットワークは不確かで、トラブルの発生源の代表格。
厄介なホスト間の依存性も発生するし、ホストローカルで完結するならその方がいいに決まってる。
このシステムにNFSって本当に必要なの? って自問してみるのは、管理コストを減らすのに役立つと思う。
個人的な感覚では、システムのメンテナンスのためにNFSをスポットで利用するのは便利だと思う。
(一般ユーザの/homeや/usr/portsみたいなのを共有するということね)
0229名無しさん@お腹いっぱい。
2008/03/09(日) 22:31:09パッケージは SUNW**u が /usr用、SUNW**r が /usr以外用と、
きちんと分けて考えられてるね。
なるべく共有できるバイナリを増やすため、
/binを廃止して /binを /usr/binへのsymlinkにしてるくらいだし。
0230名無しさん@お腹いっぱい。
2008/03/09(日) 23:41:52ていうかNFSで共有してる時点でかなりアクセスのパフォーマンスが低下することは避けられないですよね、うーむ。
LAN内で共有してるのであればそんなに気にスンナってか。
0231名無しさん@お腹いっぱい。
2008/03/10(月) 10:44:400232名無しさん@お腹いっぱい。
2008/03/10(月) 11:13:09日本語が読めてないな。
Solarisは/usrを共有することを想定して設計されているから共有できる。
おまえが使うOSはSolarisなのか?
0233名無しさん@お腹いっぱい。
2008/03/10(月) 11:36:110234名無しさん@お腹いっぱい。
2008/03/10(月) 11:42:270235名無しさん@お腹いっぱい。
2008/03/10(月) 13:58:020236名無しさん@お腹いっぱい。
2008/03/10(月) 14:41:03ってことはデータベース(MySQL)のデータ領域をNFS共有して運用するなんてしちゃだめですね。
でもなんでWebならいいんだ?
0237名無しさん@お腹いっぱい。
2008/03/10(月) 14:53:290238名無しさん@お腹いっぱい。
2008/03/10(月) 16:02:19通常のデータベースはNFSファイルシステム上に置いてはいけない。
> でもなんでWebならいいんだ?
Webでもよくはない。NFSで複数のWebサーバがコンテンツを共有するのは、
導入費用も管理コストも高くつくアプローチだ。
0239名無しさん@お腹いっぱい。
2008/03/10(月) 16:05:35意味なくね?
0240名無しさん@お腹いっぱい。
2008/03/10(月) 16:08:35> OracleみたいにNFS向けに最適化されている
そうなんか。
Windows 用のだとネットワークストレージ上に DB 作成するのは
やめとけ、みたいな感じだったけど(実際ごにょごにょしないと
作成出来ないし)。
0241名無しさん@お腹いっぱい。
2008/03/10(月) 16:20:33NFSなんて使わないほうがいい
0242名無しさん@お腹いっぱい。
2008/03/10(月) 16:36:32>>227のことと合わせて考えると、Webの場合はCPUがボトルネックになりやすいから、
ロードバランサを導入する意味はある。ただし、変更されるデータの一貫性維持は
どこかで考えておかないといけない。ありがちなのは、そういうデータはDBサーバに
置いて、一貫性維持はアプリケーションとDBの合わせ技でまかなう感じ。
で、Webサーバと同じ理屈で、DBサーバのデータ領域をNFS上に置いて並列運用すると
どうなるかは…
0243名無しさん@お腹いっぱい。
2008/03/10(月) 16:40:10サーバが自社内に10台あります、1台目(A)がDBサーバ兼Sambaファイル共有サーバ、もう一台(B)がログ解析&バックアップ機、
残りの8台をWebサーバにしているのですが、この8台にWebコンテンツが分散しているのが運用上大変(めんどくさい)なため
Aのサーバサーバとして8台のWebをクライアントとしたNFSを構成しようと考えていました。
Webコンテンツは/home以下にHTMLファイルのほかPHPやJavaで書いたスクリプトやプログラムが含まれています。また、オリジナルで
書いたライブラリや、PEARなどの外部ライブラリを習慣として各Web機の/usr/local/libに格納しています。
これらそれぞれのバージョン管理などが非常にめんどくさいので、NFSを導入したいと考えているのですが、
↑のお話だとパフォーマンスが悪いので辞めたほうがよいということですか?
詳しいから、お知恵拝借させてください。
0244名無しさん@お腹いっぱい。
2008/03/10(月) 17:01:22WEBサーバの場合、どういう手法が良いんですかね?
rsyncとか?
0245名無しさん@お腹いっぱい。
2008/03/10(月) 17:05:01rsync3.0が出て速くなった(らしい)よ
0246名無しさん@お腹いっぱい。
2008/03/10(月) 20:38:04ここでそれを質問するということは、NFS環境下で障害を起こすアプリケーション・
ユーザコードの有無を検証できる人があなたの組織にはいないと見るけど、どうかな。
ならばrsyncで各サーバにファイルを配布するスクリプトを書いた方が安全だと思う。
コマンド1発で出来るようにしておけば管理の手間も生じない。
(バージョンに依存したアプリケーションが置かれているとかの理由で)共通化できない
特定のホストを個別に対応することも容易。
一般論として、すでに動いているサーバの構成を変えるのは上策じゃない。
NFSを入れるなら、運用を開始する前にテストするべき。
0247名無しさん@お腹いっぱい。
2008/03/10(月) 21:37:330248名無しさん@お腹いっぱい。
2008/03/10(月) 21:38:39どんなん?
0249名無しさん@お腹いっぱい。
2008/03/10(月) 22:05:11DBにデータを書き込むアプリなら良いけど、ファイルシステム上に
ファイル生成したり、書き換えたりする奴もあるよね。
そうした場合は、NFS置くのが定石。
NetAppみたいの使えば、パフォーマンスもそれほど心配無いだろう。
0250名無しさん@お腹いっぱい。
2008/03/11(火) 16:22:220251名無しさん@お腹いっぱい。
2008/03/11(火) 16:32:41アプリケーションがちゃんと並列動作まで考慮してくれてるならいいけど、
通常ファイル使うことからしてあまり期待できないような。
アプリケーションの中身知ってるものならいいけど、自分は定石とまでは言いたくないな。
0252名無しさん@お腹いっぱい。
2008/03/11(火) 23:07:040253名無しさん@お腹いっぱい。
2008/03/12(水) 00:42:22ここで言っているアプリは、ロードバランサーで負荷分散できる様な
Webアプリだからね。DBだけじゃなくて、ファイルに書く奴あるじゃん。
そう言うのは、NFSファイルサーバ立てて使うよね?
0254名無しさん@お腹いっぱい。
2008/03/12(水) 08:27:40逆説的だけど、NFS環境を想定したコードが書ける人は、NFSに依存しないで済む方法も用意する。
NFSを使わざるを得ない、というのは、それが本当にNFS上で運用しても問題ないように出来ているのか、一沫の不安を感じるのだ。
NetAppまで導入してしまえば、バックアップ等の運用コストを下げられる余地がでてくるので、
NFSをデスクトップクライアント限定の技術だと考えるのは保守的な考え方かもしれないけどね。
0255名無しさん@お腹いっぱい。
2008/03/12(水) 12:59:400256名無しさん@お腹いっぱい。
2008/03/12(水) 13:04:17>>253はファイルに書くって書いてるじゃん……
0257名無しさん@お腹いっぱい。
2008/03/12(水) 13:30:05アプリケーションの設計の話だ。
ストレージはファイルシステムだけじゃないだろ?
複数ホスト間で変更の共有が必要な情報を、安易にファイルシステムに格納するアプリケーションは、
トラブルを潜在している徴候だ。
0259名無しさん@お腹いっぱい。
2008/03/13(木) 02:27:16/homeを一台でNFS共有して使いまわそうかなと思うのだけど、邪道かな
ついでに/usr/local以下も共有して、自作ライブラリやソースファイルをシェアするってのも検討中。
ガッコで教わったわけじゃないので、どういう風に使うのかが正道なのかわからず、すまんかった…
0260名無しさん@お腹いっぱい。
2008/03/13(木) 10:22:350261名無しさん@お腹いっぱい。
2008/03/13(木) 11:25:47てか、自宅なら好きにやればいいと思うが、
システムのブートやデーモンの類はNFSサーバに依存させないのが吉。
ホスト間の依存関係が複雑になると管理がとてもとても面倒になるから。
あと卒直に言えば、ログインが面倒になるほどホスト増やす時点で
かなり間違った道を進んでいる。
0262名無しさん@お腹いっぱい。
2008/03/13(木) 12:16:40ログイン簡単にするって、どうすればいいの?
うちの会社は100台弱あって大変… /usr/localをシェアするのっていいなあ
0263名無しさん@お腹いっぱい。
2008/03/13(木) 13:23:30なんのためのUNIXだよ。
0264名無しさん@お腹いっぱい。
2008/03/13(木) 13:29:48クライアントの /usr/local他のデータを個別に NFS鯖側に持つ。
すると、NFS鯖にログインするだけですべてのクライアントのデータをいじれる。
シェアはしていないので、書き込み競合とかの問題もなし。
0265名無しさん@お腹いっぱい。
2008/03/13(木) 15:14:19それ、俺もすげー興味ある。
どんな感じで管理してるの? 参考にしたい。
0266名無しさん@お腹いっぱい。
2008/03/13(木) 16:38:40NISも導入した方がいいでしょうか? ひとつのサーバにパスワードやグループなどを
一括管理できるようになるのはメリットかと思うのですが、逆にデメリットって実運用
ではどんなことがあるのかと思い。 よろしくおねがいしまんこ。
0267名無しさん@お腹いっぱい。
2008/03/13(木) 16:40:04LDAPで良いんじゃね?
0268名無しさん@お腹いっぱい。
2008/03/13(木) 18:19:01デメリットとしては、古臭いというぐらいだと思うw ある程度の規模になると
LDAP + NSS + nscd の方が安定性も反応性も高い希ガスです。
>>262 100台って少ないね・・・
>>263 激しく同意。人間様のプライドとして単純作業はすべて機械にやらせる。
>>265 cfengine とか Puppet とか?
漏れは自作フレームワークでインスコからメンテから全部楽々運用だな。
人海戦術の手作業で鯖管理してるような DQN を見てると悲しくなる。
0269名無しさん@お腹いっぱい。
2008/03/13(木) 19:14:310270名無しさん@お腹いっぱい。
2008/03/13(木) 19:17:460271名無しさん@お腹いっぱい。
2008/03/13(木) 19:37:56/homeと/usrをNFSで共有。PXE Bootで/もNFS越し。
まあ、数値計算用でほとんど同じ構成だから、あまり凝ったことをしなくても管理は楽。
0272名無しさん@お腹いっぱい。
2008/03/13(木) 20:48:20ypcatで表示しなくなる。
それでも気になる人はNIS+をどうぞ。
0273名無しさん@お腹いっぱい。
2008/03/13(木) 21:16:380274名無しさん@お腹いっぱい。
2008/03/13(木) 22:41:030275名無しさん@お腹いっぱい。
2008/03/15(土) 01:07:040276名無しさん@お腹いっぱい。
2008/03/15(土) 05:48:300277名無しさん@お腹いっぱい。
2008/03/15(土) 09:32:290278名無しさん@お腹いっぱい。
2008/03/15(土) 15:36:040279名無しさん@お腹いっぱい。
2008/03/15(土) 16:06:22悪いこといわんからLDAPにしとけ。
NIS/NIS+はobsolete technologyだ。
特に100台あると(>>262)、NISにはmap転送ストームの問題がある。
0280名無しさん@お腹いっぱい。
2008/03/15(土) 16:56:060281名無しさん@お腹いっぱい。
2008/03/15(土) 19:10:52NISは今も今後も現役。
0282名無しさん@お腹いっぱい。
2008/03/15(土) 19:55:48rsyncで毎晩mirrorする設定にしてるよ。共有してるのは/homeだけ。
/usr/localを更新したら トリガーになるファイルのタイムスタンプを更新して
NFS server側で
touch /usr/local/UPDATE
と印付けておく。
で、client側では、
if [ /mnt/local/UPDATE -nt /usr/local/UPDATE ]; then
DORSYNC="1"
fi
とかして実行させる。ここで全てのclientが同時にrsyncかけると負担がかかるので
そのへんはばらけるように工夫する。
0283名無しさん@お腹いっぱい。
2008/03/15(土) 20:12:24NISはレプリカが多い時に、
パスワードの同時変更が起きると悲惨。
まさにobsolete。
0284名無しさん@お腹いっぱい。
2008/03/15(土) 20:14:030285名無しさん@お腹いっぱい。
2008/03/15(土) 20:18:360286名無しさん@お腹いっぱい。
2008/03/15(土) 20:21:160287名無しさん@お腹いっぱい。
2008/03/15(土) 20:23:380288名無しさん@お腹いっぱい。
2008/03/15(土) 20:30:300289名無しさん@お腹いっぱい。
2008/03/16(日) 01:21:260290名無しさん@お腹いっぱい。
2008/03/16(日) 14:43:570291名無しさん@お腹いっぱい。
2008/03/16(日) 15:30:250292名無しさん@お腹いっぱい。
2008/03/22(土) 05:02:33そして、各Webサーバ(ひとまず4台)からはそれぞれ/homeをマウントさせて運用したいのですが、変でしょうか?
いちお同バージョンのLinux(centos5.1 x86_64)同士なので/usrも共有しようかなと、これは全機共通で。
こういう使い方ってNFSのパフォーマンス悪いのでしょうか
■ このスレッドは過去ログ倉庫に格納されています