MYCOM PCWEB より
任意の場所(以下の例では /tmp)にマウントする場合.
% sudo nicl . -create /mounts/dummy vfstype nfs % sudo nicl . -create /mounts/dummy dir /tmp % sudo nicl . -create /mounts/dummy opts rw resvport soft nolock noac rdirplus % sudo nicl . -create /mounts/dummy name サーバ名:/エクスポートのポイント
/Network/Servers/サーバ名 にマウントする場合.
% sudo nicl . -create /mounts/dummy vfstype nfs % sudo nicl . -create /mounts/dummy opts net rw soft rdirplus % sudo nicl . -create /mounts/dummy name サーバ名:/エクスポートのポイント
ちなみに,NetInfo マネージャで作成後の構成をみると /mounts ディレクトリの下に,サーバ名:/エクスポートという名前の サブディレクトリができており,その属性として
などが設定されている.
前節の設定をファイルを流し込んで一気にやる方法.
$ nidump -r /mounts / > /tmp/nfs.nidump $ vi /tmp/nfs.nidump $ sudo niload -r /mounts / < /tmp/nfs.nidump
なぜだかわからないが,NFS サーバと Netboot サーバとの 組合わせで不具合が出る. NFS export の設定によっては, Netboot クライアントが起動直後にパニックになってしまう.
わかっていること.
Mac OS X Server(特に Tiger Server)を NFS サーバとし,
クライアントに Linux や Intel Mac(Core Duo 以前の CPU もしくは OS が Tiger 以前)で
ある場合,
NFS マウント自体は問題なくできるが,tar などで階層構造の深いディレクトリ群をコピーし,
所有権を変更したり,再帰的に削除する場合に,
ディレクトリがあるにも関わらす,見つからないなどと文句を言われて
うまくできない場合がある.
いろいろ Google ってみたら,(まるまる当てはまる事例はなかったが) どうも NFS の READDIR の処理に関する処理にバグがあるらしく, サイズの大きいディレクトリリスト(ls の結果が大量に出るといった場合か?)を 操作する場合に不具合が出るようだ.
クライアントの方は 32bit で READDIR リクエストをおくるが サーバの方は 64bit で処理しようとするので,不具合が出るらしい.
そういった場合,サーバ側で exports のオプションをつけてやればうまくいく場合があるようだ. ただ,ワークグループマネージャの NFS 共有の設定画面ではそういった設定ができないので, Netinfo(Netinfo マネージャ)で設定してやる必要がある.
Netinfo の /exports の属性で,
"opts" の値に "32bitclients"
を加えてやる.
Intel Mac がクライアントの場合も同じような不具合が出たが,
上記の対応ではうまくいかなかった.
解決法不明.
そのため,ファイルのコピーは cp -r でやっている.
おそらくクライアント側のマウントオプションで
rdirplus
を加えてやるとこの問題は解決するようだ.
NFS マウントの制御は「ディレクトリユーティリティ」から制御できる.
「マウントタブ」から
また,「詳細マウントパラメータ」にマウントオプションを スペースで区切って羅列し, その他必要があれば,オプションにチェックを入れる.
コマンドラインでは
作成
$ sudo dscl . -create /Mounts/foo $ sudo dscl . -create /Mounts/foo VFSLinkDir /home $ sudo dscl . -create /Mounts/foo VFSOpts resvport rw nosuid $ sudo dscl . -create /Mounts/foo VFSType nfs $ sudo dscl . -create /Mounts/foo RecordName nfs.example.com:/home
表示
$ dscl . -list /Mounts $ dscl . -read /Mounts/サーバ名:\/シェアポイント
で,表示ができる.
GeneratedUID: XXXXXX RecordName: サーバ名:\/シェアポイント RecordType: dsRecTypeStandard:Mounts VFSLinkDir: マウントポイント VFSOpts: マウントオプション VFSType: nfs
というのが表示できる.
ダンプは
$ dsexport 吐き出すファイル名 /Local/Default dsRecTypeStandard:Mounts
でできる.
インポートは
$ dsimport -g 読み込むファイル /Local/Default O -u admin
NFS サーバの変更は
$ sudo dscl . -change /Mounts/サーバ名:%2Fexport%2Fhome RecordName サーバ名:/export/home 新サーバ名:/export/home
最初の export path の部分で / を %2F とするのがミソのようだ.
マウントオプションの変更は以下の例のようにする.
(1)新規追加の場合(今までマウントオプションを指定していなかった場合)
$ sudo dscl . -create /Mounts/サーバ名:%2Fexport%2Fhome VFSOpts locallocks
(2)変更の場合
$ sudo dscl . -change /Mounts/サーバ名:%2Fexport%2Fhome VFSOpts locallocks nolocks
/etc/auto_master
/- auto_home
/etc/auto_home
/home -resvport linux:/home
/etc/auto_master
/home auto_home
/etc/auto_home
* -resvport linux:/home/&
(1)の方が Finder との相性はよいようだ. (「移動」からのアクセスなど)
NFS マウントを利用するのであれば,GUI で 設定するのがいいと思う.
その場合,/etc/auto_master はどうすべきか?
/etc/auto_master には
/- -static
のみ残しておき,それ以外はコメントアウトする.
NFS マウントの設定は /System/Library/CoreServices/DirectoryUtility.app で 編集する. このツールの中の,「ディレクトリエディタ」を使う.
/etc/auto_master で /home を殺しておくのを忘れないこと.
/etc/auto_master には
/- -static
のみ残しておき,それ以外はコメントアウトする.
ノードとして [/Local/Default] を選択し,
右の鍵マークをクリックし,ローカル admin の認証を済ませる. (鍵マークが開錠される)
[表示]で(PATH) [Mounts] を表示させる.
下方の[+]を押し,以下のようなレコードを追加する. (適宜,[保存]をしながら編集する. ん〜.なんか,Tiger 時代の netinfo マネージャに戻ったみたいだ)
ex) nfs.example.com:/home
アドレスブックなどのアプリケーションで不具合が出る場合, NFS Lock を無効にするとうまくいく場合があるようだ.
/etc/hostconfig を編集し,
NFSLOCKS=-NO-
として再起動する.
もしくは,マウントオプションに
nolocks
を加える.
あるいは,マウントオプションに
locallocks
ではどうだろう.
また,よくある書き込みでは両方つけているようだ.
nolocks locallocks
NetApp を NFS サーバとする場合は
locallocks
のみをつけてやるとうまくいくようだ(2013/03)
ただし,NFS Lock を無効にすると,逆にアプリケーションに不具合を多発させる場合もある. 2010 年以降のアップデートがかかった Leopard/Snow Leopard と Solaris10 での組み合わせで 経験済み.
NFS サーバと NFS lock の通信がうまくいかないと コマンドレベルでは問題がないが, Finder でのファイル一覧表示でデッドロックする.
Mac のファイル名での UTF-8 の扱いは,濁点などが別文字となる NFD が利用されている. NFS サーバ上のファイルシステムをマウントしてファイルを作成すると, 濁点などがあるの文字がそのまま(NFD のまま)ファイルサーバに書き込まれる. このファイルを Windows などから見ると,濁点が分かれたファイル名のファイルとなっていたりする.
それを避けるために MT Lion ぐらいから NFS のマウントオプションに "nfc"というオプションが追加されたようだ.
nfc オプションを指定して NFS マウントすると,Mac 側で NFD -> NFC のファイル名変換をして NFS サーバに書き込むようだ.
ただし,Mavericks では Finder での動きがとても不安定.
濁点のあるファイルをゴミ箱に入れると,そのファイルがあったフォルダに同じファイル名のファイルをコピーできない. ただ,コマンドラインでコピーすると問題ないとか,アプリケーションからファイルを作成すると問題ない. Finder のバグなのか,ファインダでの濁点のあるファイルの扱いが不安定なるようだ. (Mavericks のマイナーバージョンアップ 10.9.4 で少しマシになったようだ)
現在マウントしているファイルシステムのマウントオプションを表示する. デフォルトで有効になっているオプションもわかる.
% nfsstat -m
TCP遅延 ACK
http://qiita.com/strsk/items/7ecea0118d3ca47ab16f
/etc/sysctl.conf を作成して
net.inet.tcp.delayed_ack=1
値は,
http://www.shabangs.net/osx/speed-up-macos-x-file-transferring-over-network/
# firewall-cmd --permanent --add-service=nfs # firewall-cmd --permanent --add-service=mountd # firewall-cmd --permanent --add-service=rpc-bind # firewall-cmd --permanent --add-port=udp/2049 # firewall-cmd --reload
4行目(--add-port=udp/2049)がないと,手動ではマウントできるが, ディレクトリアクセスや autofs でのマウントができなかった.