サーバ - NFS

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動

概要

NFSプロトコルは、1983年にSun Microsystemsによって最初に開発された。
これは、クライアントPCがネットワーク経由でファイルにアクセスできるようにするための方法として設計された。

NFS(Network File System)を使用することにより、
NFSサーバのディスクパーティションをクライアント端末のHDD /SSDのようにマウントすることができるようになる。

ここでは、以下のような環境を例に、NFSサーバを構築する。

+----------------------+             |             +----------------------+
| [    NFS Server    ] |192.168.1.10 | 192.168.1.11| [    NFS Client    ] |
|     www.suse.com     +-------------+-------------+   client.suse.com    |
|                      |                           |                      |
+----------------------+                           +----------------------+



NFSサーバのインストール

まず、全てのパッケージが最新であることを確認する。

# CentOS
sudo yum update

# SUSE
sudo zypper update

# Raspberry Pi
sudo apt-get update
sudo apt-get upgrade


NFSサーバをインストールするため、以下のコマンドを実行する。

# CentOS
sudo yum install nfs-utils

# SUSE
sudo zypper install nfs-kernel-server

# Raspberry Pi
sudo apt-get install nfs-kernel-server



NFSサーバの設定

NFSサーバのドメイン名を設定するため、以下のコマンドを実行する。
ドメインを使用しない場合は、以下の設定を行わない。

sudo vi /etc/idmapd.conf


# /etc/idmapd.confファイル
# 5行目:自ドメイン名に変更
# CentOS
Domain = centos.com

# SUSE
Domain = suse.com

# Raspberry Pi
Domain = raspberrypi.com


/etc/exportsファイルの設定を行う。
/etc/exportsファイルは、どのクライアント端末に、どのディレクトリを、どのような権限でアクセス許可するかを設定するファイルである。
例えば、以下の設定では、/home/ユーザ名/NFSディレクトリを共有ディレクトリとして、読み書き可能としている。

sudo vi /etc/exports


# /etc/exportsファイル

# マウント設定を記述
/home/ユーザ名/NFS 192.168.1.0/24(rw,no_root_squash)


exportsの主なオプションを下表に示す。

オプション 説明
rw 読み込みと書き込みの両方を許可する
ro 読み込みを許可する
sync 同期書き込みを有効にする(デフォルト)
async 非同期書き込みを有効にする
secure 1024番ポートより小さいポートからのリクエストのみ受け付ける (デフォルト)
insecure 1024番ポート以降のポートからのリクエストも受け付ける
wdelay 別の書き込み要求が実行中 / 発生予定の場合、書き込みを遅延させる(デフォルト)
no_wdelay wdelayを無効にする。
asyncと合わせて設定する
subtree_check サブツリーのチェックを行う。(デフォルト)
一般的な指針として、多くは読み込みのみでファイル名の変更があまり行われないようなディレクトリをエクスポートする場合は、
サブツリーチェックが有効の方が良い。
no_subtree_check サブツリーのチェックを無効にする。
一般的な指針として、ホームディレクトリのような細かなファイルが多く、変更も多いディレクトリをエクスポートする場合は、
サブツリーのチェックを無効にした方が良い。
root_squash root UID / GIDをanonymous UID / GIDにマッピングする。
エクスポートされたディレクトリに対して、root権限ではアクセスできないようにする。
no_root_squash rootをanonymous UID / GIDにマッピングしない。
エクスポートされたディレクトリに対して、root権限でアクセスできるようにする。
all_squash 全てのUID / GIDをanonymous UID / GIDにマッピングする。
no_all_squash 全てのUID / GIDをanonymous UID / GIDにマッピングしない。(デフォルト)
anonuid=UID 指定のUIDをanonymous UIDにマッピングする。
anongid=GID 指定のGIDをanonymous GIDにマッピングする。


/etc/exportsファイルの設定の変更を反映させる。

exportfs -ra



NFSサービスの自動起動

Linuxの起動時に、NFSサービスを自動起動するために、以下のコマンドを実行する。

# CentOS
sudo systemctl start rpcbind nfs-server
sudo systemctl enable rpcbind nfs-server

# SUSE
sudo systemctl start nfs-server
sudo systemctl enable nfs-server



ファイアーウォールの設定

Firewalldを有効にしている場合は、NFSサービスの許可が必要である。

# NFS v4の許可
sudo firewall-cmd --add-service=nfs --permanent

# NFS v3も許可する場合
sudo firewall-cmd --add-service={nfs3,mountd,rpc-bind} --permanent

sudo firewall-cmd --reload



NFSの共有ディレクトリへの接続

Linuxクライアント

まず、NFSクライアントをインストールする。

# CentOS
sudo yum install nfs-utils

# SUSE
sudo zypper install nfs-client

# Raspberry Pi
sudo apt-get install nfs-common


次に、ドメインの設定を行う。
ドメインが存在しない場合は、この設定を行わない。

sudo vi /etc/idmapd.conf


# /etc/idmapd.confファイル

# 自ドメイン名に変更
Domain = <ドメイン名>


手動マウント

NFSサーバの共有ディレクトリをマウントする。

sudo mount -t nfs <NFSサーバのIPアドレスまたはホスト名>:/home/ユーザ名/NFS <マウントするクライアントPCのディレクトリ>


正常にマウントされているか確認するために、以下のコマンドを実行する。

df -hT


もし、NFS v3でマウントする場合は、-o vers=3オプションを付加してマウントする。

sudo mount -t nfs -o vers=3 <NFSサーバのIPアドレスまたはホスト名>:/home/ユーザ名/NFS <マウントするクライアントPCのディレクトリ>


Linuxの起動時に自動マウント

Linuxの起動時にNFS共有ディレクトリを自動マウントする場合は、/etc/fstabファイルに以下のように設定する。

sudo vi /etc/fstab

# /etc/fstabファイル(最下行に追記)
<NFSサーバのIPアドレスまたはホスト名>:/home/ユーザ名/NFS   <マウントするクライアントPCのディレクトリ>   nfs   defaults   0   0


マウントポイントのアクセス時に自動マウント

マウントポイントのアクセス時に、動的にNFS共有ディレクトリにマウントする場合は、以下のように設定する。
以下の例では、/mnt/NFSディレクトリに動的マウントするように設定している。

sudo mkdir /mnt/NFS


sudo zypper install autofs


sudo vi /etc/auto.master

# /etc/auto.masterファイル(最下行に追記)
/-    /etc/auto.mount


sudo vi /etc/auto.mount

# /etc/auto.mountファイル
# [マウントポイント] [オプション] [ロケーション]
/mnt/NFS -fstype=nfs,rw <NFSサーバのIPアドレスまたはホスト名>:/home/ユーザ名/NFS


AutoFSを自動起動設定にする。

sudo systemctl start autofs
sudo systemctl enable autofs


正常に機能しているか確認するため、マウントポイントへ移動して以下のコマンドを実行する。

cd /mnt/NFS
ls -ahlF
cat /proc/mounts | grep mntdir


Windowsクライアント

WindowsからNFSの共有ディレクトリと通信するには、NFSクライアントを有効にする必要がある。
初期設定では、この機能は無効になっている。

これを有効にするには、コントロールパネルから[プログラム] - [プログラムと機能] - [Windowsの機能を有効または無効にする]を選択する。
[Windowsの機能]画面が表示されるので、機能一覧から[NFS用サービス]チェックボックスにチェックを入力して、[OK]ボタンを押下する。

ファイルエクスプローラを起動して、[ネットワークドライブの割り当て]を選択して、NFSの共有ディレクトリを設定する。
[ネットワークドライブ]画面が表示されるので、NFSサーバのIPアドレス(またはホスト名)とNFSの共有ディレクトリのパスを続けて入力する。

例えば、NFSサーバのIPアドレスが"192.168.1.10"、共有ディレクトリのパスが"/home/ユーザ名/NFS"の場合、以下のように入力する。

\\192.168.1.10\home\ユーザ名\NFS


以上の設定を行うと、ファイルエクスプローラの[ネットワークロケーション]または[ネットワーク]に共有ディレクトリが表示される。