#author("2018-05-21T16:38:10+09:00","default:tanak0to","tanak0to") RIGHT:[[Mac 関係覚え書き]] *目次 [#r1b83f49] #contents *Mac OS X NFS マウント検証 [#j7fd9f92] [[MYCOM PCWEB:http://pcweb.mycom.co.jp/cgi-bin/print?id=17224]] より **OS ブート時に NFS マウントするには [#w113a54b] 任意の場所(以下の例では /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 ディレクトリの下に,サーバ名:/エクスポートという名前の サブディレクトリができており,その属性として -dir -opts などが設定されている. //-------------------------------------------------------------- **一気に設定 [#ibd82b81] 前節の設定をファイルを流し込んで一気にやる方法. $ nidump -r /mounts / > /tmp/nfs.nidump $ vi /tmp/nfs.nidump $ sudo niload -r /mounts / < /tmp/nfs.nidump //-------------------------------------------------------------- **Netboot と NFS での不具合 [#g39d2ffa] なぜだかわからないが,NFS サーバと Netboot サーバとの 組合わせで不具合が出る. NFS export の設定によっては, Netboot クライアントが起動直後にパニックになってしまう. わかっていること. -セカンダリのディスク領域を export する際, export 領域をサブネットにするとアウト. -セカンダリのディスク領域を export する際, ワールドにはなぜかできない. -フォルダ名に空白がある/なしは関係なし. -システムフォルダについては,どのように export しても問題なし. **32bit クライアントでの不具合 [#a4763251] 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 を加えてやるとこの問題は解決するようだ. ---- *Lepard での NFS マウント [#s62a8893] **スタティックマウント [#jf27bcd6] NFS マウントの制御は「ディレクトリユーティリティ」から制御できる. 「マウントタブ」から -「リモート NFS の URL」 -「マウント先」 を入力. また,「詳細マウントパラメータ」にマウントオプションを スペースで区切って羅列し, その他必要があれば,オプションにチェックを入れる. コマンドラインでは 作成 $ 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 **Automounter [#v269cc5d] ***(1) [#s77b392f] /etc/auto_master /- auto_home /etc/auto_home /home -resvport linux:/home ***(2) [#w07c18ff] /etc/auto_master /home auto_home /etc/auto_home * -resvport linux:/home/& (1)の方が Finder との相性はよいようだ. (「移動」からのアクセスなど) **Automounter と GUI 設定との混合はどうする? [#w571639e] NFS マウントを利用するのであれば,GUI で 設定するのがいいと思う. その場合,/etc/auto_master はどうすべきか? /etc/auto_master には /- -static のみ残しておき,それ以外はコメントアウトする. ---- *MT Lion での NFS マウント設定 [#m0ffff4c] NFS マウントの設定は /System/Library/CoreServices/DirectoryUtility.app で 編集する. このツールの中の,「ディレクトリエディタ」を使う. /etc/auto_master で /home を殺しておくのを忘れないこと. /etc/auto_master には /- -static のみ残しておき,それ以外はコメントアウトする. ノードとして [/Local/Default] を選択し, 右の鍵マークをクリックし,ローカル admin の認証を済ませる. (鍵マークが開錠される) [表示]で(PATH) [Mounts] を表示させる. 下方の[+]を押し,以下のようなレコードを追加する. (適宜,[保存]をしながら編集する. ん〜.なんか,Tiger 時代の netinfo マネージャに戻ったみたいだ) -RecodeName: NFSサーバ名:パス("/"はエスケープしなくてもいいみたいだ) ex) nfs.example.com:/home -VFSLinkDir: マウントポイント ex) /home -VFSOpts: マウントオプション ex) resvport -VFSType: nfs ---- *アプリの不具合が出る場合 [#u4266a23] アドレスブックなどのアプリケーションで不具合が出る場合, NFS Lock を無効にするとうまくいく場合があるようだ. /etc/hostconfig を編集し, NFSLOCKS=-NO- として再起動する. もしくは,マウントオプションに nolocks を加える. あるいは,マウントオプションに locallocks ではどうだろう. %%また,よくある書き込みでは両方つけているようだ.%% %% nolocks locallocks %% NetApp を NFS サーバとする場合は locallocks のみをつけてやるとうまくいくようだ(2013/03) 参考: http://www.spack.org/wiki/AppleOsxIntegrationWithOpenLdap#head-488c9103c0a6c62935ef6a3f034e987855151f8a ただし,NFS Lock を無効にすると,逆にアプリケーションに不具合を多発させる場合もある. 2010 年以降のアップデートがかかった Leopard/Snow Leopard と Solaris10 での組み合わせで 経験済み. NFS サーバと NFS lock の通信がうまくいかないと コマンドレベルでは問題がないが, Finder でのファイル一覧表示でデッドロックする. *NFC/NFD [#yeef4e3a] Mac のファイル名での UTF-8 の扱いは,濁点などが別文字となる NFD が利用されている. NFS サーバ上のファイルシステムをマウントしてファイルを作成すると, 濁点などがあるの文字がそのまま(NFD のまま)ファイルサーバに書き込まれる. このファイルを Windows などから見ると,濁点が分かれたファイル名のファイルとなっていたりする. それを避けるために MT Lion ぐらいから NFS のマウントオプションに "nfc"というオプションが追加されたようだ. nfc オプションを指定して NFS マウントすると,Mac 側で NFD -> NFC のファイル名変換をして NFS サーバに書き込むようだ. ただし,Mavericks では Finder での動きがとても不安定. 濁点のあるファイルをゴミ箱に入れると,そのファイルがあったフォルダに同じファイル名のファイルをコピーできない. ただ,コマンドラインでコピーすると問題ないとか,アプリケーションからファイルを作成すると問題ない. Finder のバグなのか,ファインダでの濁点のあるファイルの扱いが不安定なるようだ. (Mavericks のマイナーバージョンアップ 10.9.4 で少しマシになったようだ) ---- *マウントオプションを表示する [#xc1b7857] 現在マウントしているファイルシステムのマウントオプションを表示する. デフォルトで有効になっているオプションもわかる. % nfsstat -m ---- *ネットワークドライブへのアクセスが遅いときのおまじない [#i52afcf4] TCP遅延 ACK http://qiita.com/strsk/items/7ecea0118d3ca47ab16f /etc/sysctl.conf を作成して net.inet.tcp.delayed_ack=1 値は, -0: 遅延無し -1: 6パケットごとに 1 ACK 送信 -2: 2パケットごとに 1 ACK 遅延(Windows 互換) -3: 自動? 4パケットごとに 1 ACK(デフォルト値) http://www.shabangs.net/osx/speed-up-macos-x-file-transferring-over-network/ ---- *CentOS 7 をサーバとする場合の firewalld 設定 [#kf0468f1] # 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 でのマウントができなかった.