Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
はじめての自宅サーバ構築 - Fedora/CentOS -
Last Update 2018/05/30
[ 更新履歴 ] [ サイト マップ ] [ 質問掲示板 ] [ 雑談掲示板 ] [ リンク ]
トップ >> ファイルサーバ >> ファイルサーバの構築(nfs)
動作確認 [ FC1 / FC2 / FC3 / FC4 / FC5 / FC6 / Fedora7 / Fedora8 / Fedora9 / Fedora10 / Fedora11 / Fedora12 / Fedora13 / Fedora14 / Fedora15 / Fedora16 / Fedora17 / CentOS4 / CentOS5 / CentOS6 ]

■ nfsとは・・・

nfsとは(Network File System)の略で、nfsサーバにあるパス(ディレクトリ)を他のLinux/UNIXで参照や更新できます。

クライアントがWindows等であれば「sambaサーバ『ファイルサーバの構築(Samba)』」、Linux/UNIXであれば「nfsサーバ」という位置付けになっている様です。

■ nfsのインストール

# yum -y install nfs-utils

■ nfsの設定

上記の図のように、nfsサーバに「/export/www」「/export/mail」「/export/common」ディレクトリを共有してnfsクライアントにそのディレクトリへの権限を設定します。

図内の表が、その共有ディレクトリへの対応表を示しており、ヘッダ部分はnfsクライアントのホスト名となっています。

■ nfsサーバの共有ディレクトリ作成

共有ディレクトリを作成
# mkdir -p /export/www
# mkdir -p /export/mail
# mkdir -p /export/common

オーナ・グループ設定
# chown -R nfsnobody:nfsnobody /export
「オーナ・グループ」は後述するが、「nfsnobody」と言うデフォルトの匿名とさせる。

■ nfs設定ファイルの設定

nfs設定ファイルの設定
# vi /etc/exports
「/export/www」の設定
/export/www web(rw,all_squash,sync) develop(rw,all_squash,sync) client(ro,all_squash,sync)
「/export/mail」の設定
/export/mail smtp(rw,all_squash,sync) pop(rw,all_squash,sync) develop(rw,all_squash,sync) client(ro,all_squash,sync)
「/export/common」の設定
/export/common develop(rw,all_squash,sync) client(rw,all_squash,sync)


nfs設定ファイル「/etc/exports」の共有ディレクトリの設定は以下の書式となっています。
<directory> <client>(<option>) [<client>(<option>)] ・・・

directory:共有するディレクトリ
client   :許可するホスト名またはFQDN(ドメイン名)またはネットワーク指定
           例) hogehoge               <-- ホスト名指定
               hogehoge.kajuhome.com  <-- FQDN指定
               *.kajuhome.com         <-- ワイルドカードによるドメイン名指定
               192.168.1.0/24         <-- ネットワーク指定
option   :nfsクライアントに対するオプション
           かなりの数があるので、代表的なオプションを示す。
           rw              読書き可
           ro              読み取りのみ
           sync            遅延書き込みの有効
           root_squash     rootユーザの場合、匿名ユーザにする
           no_root_squash  rootユーザの場合、そのままの権限でアクセスさせる
           all_squash      すべてのユーザを、匿名ユーザにする
           no_all_squash   そのままのユーザ(ID番号)でアクセスさせる
           anonuid=nn      nfsサーバのUIDにマッピングさせる(nnはID番号)
           anongid=nn      nfsサーバのGIDにマッピングさせる(nnはID番号)
                           *:匿名ユーザとは、nfsクライアントから書き込まれたファイルやディレクトリ
                               の所有者・グループがデフォルトの「nfsnobody」となります。

備考1)「/export/common」を例にとりますが、以下の設定でも可能です

例1)
ホスト名とFQDNでの設定
/export/common develop(rw,all_squash,sync) client.kajuhome.com(rw,all_squash,sync)

例2)
FQDNとIPアドレスでの設定
/export/common develop.kajuhome.com(rw,all_squash,sync) 192.168.1.104(rw,all_squash,sync)


備考2)『nfsの設定』の図には準拠しませんが、192.168.1のセグメント全てに許可を与えることも可能です。

例)ネットワーク設定
/export/common 192.168.1.0/24(rw,all_squash,sync)


備考3)「rw (読書き可)」にも拘わらずクライアントから書込できない場合は、nfsサーバ側の「nfsnobody」UID:GIDを指定。

「nfsnobody」のUID確認
# cat /etc/passwd | grep nfsnobody
nfsnobody:x:4294967294:4294967294:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
「nfsnobody」のGID確認
# cat /etc/group | grep nfsnobody
nfsnobody:x:4294967294:

例)
/export/common develop(rw,all_squash,sync,anonuid=4294967294,anongid=4294967294) client(rw,all_squash,sync,anonuid=4294967294,anongid=4294967294)

  • ホスト名やFQDN・ドメイン名で指定する場合は、名前解決できていなければなりません。
  • 名前解決方法は、DNS解決・hostsファイル解決どちらでも構いません。

■ nfsの起動

■ FC1 / FC2 / FC3 / FC4 / FC5 / FC6 / CentOS4 / CentOS5 の場合

  • NFS は portmap を使用するので「portmap」を起動する必要があります。

portmapを起動する
# /etc/rc.d/init.d/portmap start

*:「portmap」がインストールされていない場合は以下のコマンドでインストールして下さい
# yum -y install portmap

nfsを起動する
# /etc/rc.d/init.d/nfs start


portmapを起動しなかった場合、以下のエラーメッセージが出力されます。
# /etc/rc.d/init.d/nfs start
NFS サービスを起動中:                                      [  OK  ]
NFS クォータを起動中: サービスを登録できません: RPC: 受け取れません; errno = 接続を拒否されました
rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp).
                                                           [失敗]
NFS デーモンを起動中:                                      [失敗]
NFS mountd を起動中:  Cannot register service: RPC: Unable to receive; errno = Connection refused
                                                           [失敗]
RPC idmapd を起動中:                                       [  OK  ]

■ Fedora7 以降 / CentOS6 の場合

  • NFS は rpcbind を使用するので「rpcbind」を起動する必要があります。

rpcbindを起動する
【Fedora7 から Fedora15 / CentOS6 の場合】
# /etc/rc.d/init.d/rpcbind start

【Fedora16以降 の場合】
# systemctl start rpcbind.service


「rpcbind」がインストールされていない場合は以下のコマンドでインストールして下さい
# yum -y install rpcbind


nfsを起動する
【Fedora7 から Fedora15 / CentOS6 の場合】
# /etc/rc.d/init.d/nfs start

【Fedora16以降 の場合】
# systemctl start nfs-server.service


rpcbindを起動しなかった場合、以下のエラーメッセージが出力されます。
# /etc/rc.d/init.d/nfs start
NFS サービスを起動中:                                      [  OK  ]
NFS クォータを起動中: サービスを登録できません: RPC: 受け取れません; errno = 接続を拒否されました
rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp).
                                                           [失敗]
NFS デーモンを起動中:                                      [失敗]

■ 全バージョン共通

nfsサーバ起動後にnfs設定ファイル「/etc/exports」を変更した場合は以下のコマンドで可能です。
*:nfsサービスを再起動する必要はありません

# exportfs -ra

*:コマンド実行時に下記の様にメッセージ出力した場合は、クライアントの名前解決する必要があります。
hosts ファイルや DNS サーバを構築して、クライアント(web develop client smtp pop)を名前解決します。
 注:FQDNやショート名にご注意ください。
# exportfs -ra
exportfs: Failed to resolve web
exportfs: Failed to resolve web
exportfs: Failed to resolve develop
exportfs: Failed to resolve develop
exportfs: Failed to resolve client
exportfs: Failed to resolve client
exportfs: Failed to resolve smtp
exportfs: Failed to resolve smtp
exportfs: Failed to resolve pop
exportfs: Failed to resolve pop
exportfs: Failed to resolve develop
exportfs: Failed to resolve develop
exportfs: Failed to resolve client
exportfs: Failed to resolve client
exportfs: Failed to resolve develop
exportfs: Failed to resolve develop
exportfs: Failed to resolve client
exportfs: Failed to resolve client

nfs のバージョンによって以下のメッセージの場合もあります。
exportfs: web has non-inet addr
exportfs: web has non-inet addr
exportfs: develop has non-inet addr
exportfs: develop has non-inet addr
exportfs: client has non-inet addr
exportfs: client has non-inet addr
exportfs: smtp has non-inet addr
exportfs: smtp has non-inet addr
exportfs: pop has non-inet addr
exportfs: pop has non-inet addr
exportfs: develop has non-inet addr
exportfs: develop has non-inet addr
exportfs: client has non-inet addr
exportfs: client has non-inet addr
exportfs: develop has non-inet addr
exportfs: develop has non-inet addr
exportfs: client has non-inet addr
exportfs: client has non-inet addr



現在のエクスポートリストを表示
# exportfs -v
/export/common  develop(rw,wdelay,root_squash,all_squash)
/export/common  client(rw,wdelay,root_squash,all_squash)
/export/mail    smtp(rw,wdelay,root_squash,all_squash)
/export/mail    pop(rw,wdelay,root_squash,all_squash)
/export/mail    develop(rw,wdelay,root_squash,all_squash)
/export/mail    client(ro,wdelay,root_squash,all_squash)
/export/www     web(rw,wdelay,root_squash,all_squash)
/export/www     develop(rw,wdelay,root_squash,all_squash)
/export/www     client(ro,wdelay,root_squash,all_squash)

■ nfsクライアントの設定

  • ここでは、nfsクライアント(web.kajuhome.com・smtp.kajuhome.com・pop.kajuhome.com・develop.kajuhome.com・client.kajuhome.com)での設定です。
  • nfsサーバ(fedora.kajuhome.com)での設定ではないので注意してください。

■ クライアント側の設定とマウント方法

マウント先を作成する
# mkdir /mnt/xxxxx
ディレクトリ名は任意です。
上記は説明上「/mnt/xxxxx」となっていますので、必要に応じてマウント先を作成して下さい。

以降のnfsクライアントのマウント先は、適当なディレクトリを作成済みとしています。

nfsサーバの共有ディレクトリをマウントする
*:mountコマンドのパラメータ
mount <ファイルシステムタイプ> <nfsサーバ:共有名> <マウント先>

【web.kajuhome.com の場合】
# mount -t nfs fedora.kajuhome.com:/export/www /mnt/www

【smtp.kajuhome.com および pop.kajuhome.com の場合】
# mount -t nfs fedora.kajuhome.com:/export/mail /mnt/mail

【develop.kajuhome.com および client.kajuhome.com の場合】
# mount -t nfs fedora.kajuhome.com:/export/www /mnt/www
# mount -t nfs fedora.kajuhome.com:/export/mail /mnt/mail
# mount -t nfs fedora.kajuhome.com:/export/common /mnt/common

■ マウント時のエラーについて

以下の様にマウント時エラーが発生する場合
# mount -t nfs fedora.kajuhome.com:/export/xxxxx /mnt/xxxxx
mount.nfs: rpc.statd is not running but is required for remote locking.
mount.nfs: Either use '-o nolock' to keep locks local, or start statd.
mount.nfs: an incorrect mount option was specified

クライアント側でポートマッピングサービス「portmap」または「rpcbind」を起動する必要があります。

# /etc/rc.d/init.d/portmap start
または
# /etc/rc.d/init.d/rpcbind start

systemd services 系の場合のサービス起動は以下(例:rpcbind)
# systemctl start rpcbind.service


*:何れのサービスかは上記のサーバサービス起動時のディストリビューション参照の事

■ nfsの動作確認

上記の動作確認を全て説明しても意味がないので、「rw権」「ro権」の両方が存在する「client.kajuhome.com」に絞って説明します。

■ nfsクライアントでの動作確認

「ro」権の共有ディレクトリに試験ファイルを作成し保存してみる
# vi /mnt/www/client.dat
1234567890
abcdefghijklmnopqrstuvwxyz
「:wq」コマンドで保存
"/mnt/www/client.dat"
"/mnt/www/client.dat" E212: 書込み用にファイルを開けません
続けるにはENTERを押すかコマンドを入力してください

上記の様にメッセージ出力され、保存できない事が確認できる


「rw」権の共有ディレクトリに試験ファイルを作成し保存してみる
# vi /mnt/common/client.dat
1234567890
abcdefghijklmnopqrstuvwxyz
「:wq」コマンドで保存

作成できているか確認
# ls -l /mnt/common/client.dat
-rw-r--r--  1 nfsnobody nfsnobody 38  2月 16 16:04 /mnt/common/client.dat

■ nfsサーバでの動作確認

nfsクライアントでの動作確認』で保存した「client.dat」を確認してみる
# cat /export/common/client.dat
1234567890
abcdefghijklmnopqrstuvwxyz
nfsクライアントで作成した内容を確認できた


*:同様にnfsサーバで作成したファイルが、nfsクライアントで確認できるかも検証してみてください。
   「rw」権があるnfsクライアントは、作成されたファイルが確認できて保存も可能であること。
   「ro」権のnfsクライアントは、作成されたファイルが確認(読み取りのみ)できること。

■ 接続元の限定設定

nfsサーバ側で、接続元のホスト名(IPアドレス)を限定する事によりセキュリティを高めます。

デフォルト状態では全てのホストよりportmap使用許可されているので注意して下さい。

接続拒否設定
# vi /etc/hosts.deny
#
# hosts.deny    This file describes the names of the hosts which are
#               *not* allowed to use the local INET services, as decided
#               by the '/usr/sbin/tcpd' server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow.  In particular
# you should know that NFS uses portmap!

portmap: ALL

接続許可設定
# vi /etc/hosts.allow
#
# hosts.allow   This file describes the names of the hosts which are
#               allowed to use the local INET services, as decided
#               by the '/usr/sbin/tcpd' server.
#
接続許可をローカルネットワークに限定する
portmap: 192.168.1.0/255.255.255.0

■ OSの再起動を行なった時にnfsを自動的に起動するように設定する

起動時に portmap または rpcbind を起動する
【FC1 / FC2 / FC3 / FC4 / FC5 / FC6 / CentOS4 / CentOS5 の場合】
# chkconfig portmap on
設定内容を確認
# chkconfig --list portmap
portmap         0:off   1:off   2:on    3:on    4:on    5:on    6:off

【Fedora7 から Fedora15 / CentOS6 の場合】
# chkconfig rpcbind on
設定内容を確認
# chkconfig --list rpcbind
rpcbind         0:off   1:off   2:on    3:on    4:on    5:on    6:off

【Fedora16以降 の場合】
# systemctl enable rpcbind.service
設定内容を確認
# systemctl status rpcbind.service
rpcbind.service - RPC bind service
          Loaded: loaded (/lib/systemd/system/rpcbind.service; enabled)
          Active: active (running) since Thu, 17 Nov 2011 08:42:56 +0900; 2h 3min ago
        Main PID: 989 (rpcbind)
          CGroup: name=systemd:/system/rpcbind.service
                  └ 989 /sbin/rpcbind -w


起動時にnfsを起動する
【FC1 から Fedora15 / CentOS4 / CentOS5 / CentOS6 の場合】
# chkconfig nfs on
設定内容を確認
# chkconfig --list nfs
nfs             0:off   1:off   2:on    3:on    4:on    5:on    6:off

【Fedora16以降 の場合】
# systemctl enable nfs-server.service
設定内容を確認
# systemctl status nfs-server.service
nfs-server.service - NFS Server
          Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled)
          Active: active (running) since Thu, 17 Nov 2011 10:36:10 +0900; 13min ago
        Main PID: 7156 (rpc.rquotad)
          CGroup: name=systemd:/system/nfs-server.service
                  ├ 7156 /usr/sbin/rpc.rquotad
                  └ 7171 /usr/sbin/rpc.mountd

■ こんな時は・・・

nfsサービス起動時に以下のメッセージが出力される場合

NFSサービスを起動中:  exportfs: /etc/exports:1: syntax error: bad option list
                                                           [失敗]
「/etc/exports」に設定した内容が構文エラーです。内容を確認してください。


NFS サービスを起動中:                                      [  OK  ]
NFS クォータを起動中: サービスを登録できません: RPC: 受け取れません; errno = 接続を拒否されました
rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp).
                                                           [失敗]
NFS デーモンを起動中:                                      [失敗]
NFS mountd を起動中:  Cannot register service: RPC: Unable to receive; errno = Connection refused
                                                           [失敗]
RPC idmapd を起動中:                                       [  OK  ]
nfsの起動』でも触れましたが、「portmap」サービスを起動していない為です。
「# /etc/rc.d/init.d/portmap start」を実行してサービスを起動後に「nfs」サービスを起動してください。


nfsクライアントでマウント時に以下のメッセージが出力される場合

mount: mount to NFS server 'fedora.kajuhome.com' failed: RPC Error: プログラムが登録されていません.
nfsサーバ側で「nfs」サービスが起動していません。「nfs」サービスを起動してください。


mount: fedora.kajuhome.com:/export/www failed, reason given by server: 許可がありません
nfsサーバのnfs設定ファイル「/etc/exports」に要求してきたnfsクライアントが定義されていない。
または、共有するディレクトリ名が誤っていかのどちらかです。


nfsクライアントでマウント後、アクセスできない場合
nfsサーバの共有ディレクトリのアクセス権を確認する。

■ コンテンツ関連

■ その他


Copyright(©)2004-2018 First home server construction. All Right Reserved.