CentOS - NFSサーバー/クライアントの構築

CentOS NFS を導入するメモ。

サーバとクライアント側で設定が必要なのでVagrantを使って環境を構築したいと思います。

環境

CentOS 6.5

構成

サーバ: 192.168.33.11
クライアント: 192.168.33.12

Vagrantの導入

はじめてのVagrant - kzy52's blog

Vagrantの設定

# ~/vagrant/Vagrantfile

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "centos653"

  config.vm.define :nfs_server do |vm_config|
    vm_config.vm.network :private_network, ip: "192.168.33.11"
  end

  config.vm.define :nfs_client do |vm_config|
    vm_config.vm.network :private_network, ip: "192.168.33.12"
  end
end
$ vagrant up
$ vagrant ssh-config nfs_server --host vagrant-nfs-s >> ~/.ssh/config
$ vagrant ssh-config nfs_client --host vagrant-nfs-c >> ~/.ssh/config

NFSサーバ側の設定

ログインする

$ ssh vagrant-nfs-s

インストールする

$ sudo yum -y install nfs-utils

共有ディレクトリを作成する

$ sudo mkdir /var/db/store
$ sudo chown -R nfsnobody:nfsnobody /var/db/store

設定

# /etc/exports

# /var/db/store => 共有するディレクトリ  
# 192.168.33.12 => 共有するクライアントのIP
# rw => 読み書きを許可する。
# sync => ファイルシステムへの書き込みを同期して行う。
# no_wdelay => 別の書き込みが実行予定あるいは実行中の場合に、 ディスクへの書き込みを遅らせる機能(wdelay)を無効にする。
# root_squash => NFSクライアントのスーパユーザが、NFSサーバ上のnfsnobodyユーザとしてアクセスされるようにする。
/var/db/store 192.168.33.12(rw,sync,no_wdelay,root_squash)

設定を反映する

$ sudo exportfs -ra

設定を確認する

$ sudo exportfs -v
/var/db/store   192.168.33.12(rw,no_root_squash,no_subtree_check)

起動する

$ sudo /etc/rc.d/init.d/rpcbind start
$ sudo /etc/init.d/nfs start

自動起動の設定をする

$ sudo chkconfig rpcbind on
$ sudo chkconfig nfs on

NFSクライアント側の設定

ログインする

$ ssh vagrant-nfs-c

portmapまたはrpcbindが入っていることを確認する

入っていなければインストールする。

設定

# /etc/fstab

# 192.168.33.11 => NFSサーバ側のIP
# /var/db/store => NFSサーバ側の共有ディレクトリ
# /data => マウント先ディレクトリ
192.168.33.11:/var/db/store      /data           nfs     defaults        0 0

マウント用のディレクトリを作成する

$ sudo mkdir /data

マウントする

$ sudo mount -a

確認する

$ df -h
192.168.33.11:/var/db/store  7.9G  925M  6.6G  13% /data
[server]$ sudo touch /var/db/store/test-file

[client]l$ ls -la /data
-rw-r--r--   1 root      root         0 Sep 18 15:45 test-file

このようにファイルが共有されていたら成功。