サーバ - NFS
概要
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
以上の設定を行うと、ファイルエクスプローラの[ネットワークロケーション]または[ネットワーク]に共有ディレクトリが表示される。