メインコンテンツに移動

共有フォルダの設定

NFS共有フォルダの設定

NFSというのは,Linuxにおけるファイル共有のシステムです.ファイル共有というのは

  • コンピュータのディスクのファイルを別のマシンに「公開」
  • 別のマシンでは,その公開されたファイルに読み書き可能

一見便利ですが,

  • 1GBのファイルのうち0.001%を書き換えた→周囲の0.1%を持ち主に転送
  • 別の人がファイルを書き換えた→利用者全部に転送

となるわけですので,はっきり言って,めちゃくちゃ低速です.ですが,使いやすいんで,プログラムファイルとか,小さいのをこれで共有しておくと便利なんですよね・・・

IPAサーバーで共有するフォルダーを登録

IPAサーバーで【Network Services】【Automount】【default】を選ぶ

すると二つのテーブルがあります:

auto.master

伝統的に, 親玉をauto.masterと呼びます.あなたが作成しなくても,これはできてるはず.

/フォルダー名     が「ファイル共有はここ」という名前です./フォルダー名/共有の名前   とアクセスすると, 「共有の名前」で設定したコンピュータの該当するフォルダにアクセスできるわけです.この例では

cd /net/sun0

とやると, sun0というマシンのフォルダーが見えるようになる.では, その定義である「共有の名前」は, この例では auto.home テーブルに書いてある.

auto.home

個々の共有の詳細を見てみましょう. もしテーブルが存在しなければ【Add】【IndirectMap】で作成すればよし.

最初の欄が「共有の名前」で,右がその定義です.まあ殆ど決まりきったもので

-fstype=nfs4 ネットワークを通したファイル共有だよ(CDROMとかDVDもあるけど・・・奴らは滅亡した)
rw 読み書き可能. 読みのみも設定できる
hard アクセスしたら相手のコンピュータがダウンしていたとしよう.hardがついていると,復活するまでリトライする.
sun0:/diskX コンピュータの名前はsun0である. そのコンピュータが「公開」しているIDを指定する

 各コンピュータで公開IDの内容を指定

/etc/exports

/etc/exportsファイルに,公開IDとその内容を記述:

#name                 export to ....
/export               10.249.229.111/24(rw,fsid=0) localhost(rw,fsid=0)
/export/disk0         10.249.229.111/24(rw,nohide) localhost(rw,nohide)
/export/disk1         10.249.229.111/24(rw,nohide) localhost(rw,nohide) 

最初の一行目は, 公開するフォルダを指定. 後ろは公開範囲で, IPアドレスとネットマスク. 

2行目以降は, 公開するフォルダのサブフォルダで,実際に公開荒れるフォルダを指定する.

/etc/fstab

/etc/fstab に, ローカルフォルダーと公開フォルダの関係を記載する.

#上の方にあるのはOSの設定なので, 書き換えてはダメ
UUID=c74de6c0-edb7-4487-98ab-cf1e862d3486 /                       xfs     defaults        0 0
UUID=46c625df-da77-4f94-a66a-447d61f2b0ca /boot                   xfs     defaults        0 0
UUID=1758cc75-9f99-4a14-8f6d-f5e5d57f8420 none                    swap    defaults        0 0
#local-folder         export-folder
/local/disk0          /export/disk0                none bind 0 0
/local/disk1          /export/disk1                none bind 0 0
#speedup for local-access
/local/disk0          /disk0                       none bind 0 0
/local/disk1          /disk1                       none bind 0 0 

公開フォルダを別のマシンから /net/sun0/disk0 とアクセスすると,ネットワークを経由してゆっくりアクセス可能である.

だが, 同じマシンから自分の公開フォルダにアクセスすると, 自分のディスクなのに,ネットワークを経由してゆっくりアクセスする.で,そらいやだ,という場合に,下の方の設定を使う.これはなぜかというと

  • /net/KEY フォルダーにアクセスがあった!
  • 上のマップを参照すると, KEYは, ホスト名 MACHINE のディスク名 /DISK であることがわかったとする.
    • もしMACHINEが自分でないなら,何の躊躇もなくNFSを経由して/DISKを提供してもらう.
    • もしMACHINEが自分自身であれば,NFSを経由すると速度が低下してしまう.そこで,/DISKが利用できるか?調べる
      • つまり, 提供しているディスク名 /DISK がローカルファイルシステムに存在するなら使う
      • 存在しなければ,諦めてローカルマシンにNFSで提供してもらう
    • もちろんNFSアクセスでは爆遅になってしまうので,提供しているディスク/DISK がローカルファイルシステムにも存在した方が良い.
    • そこで, /export/DISK と同じ内容を /DISK にバインド設定しておくと高速になる

という仕組みである.

NFSサーバーを起動

# systemctl enable nfs-server
# firewall-cmd --permanent --zone=public --add-service=nfs
# firewall-cmd --reload

再起動

設定が終わったら,まあ再起動するのがコマンド覚えなくて良いから楽でしょうね.