rohaniのブログ

ゆるっと自然言語処理奴。ときどき工作系バイト。

サーバ管理未経験者がNFSサーバの保守のために勉強したことをまとめる

ファイルパス等は私の保守対象に依存する

NFS

NFS(Network File System)とは、ネットワーク上のコンピュータが持つストレージを共有するためのシステムのこと。
NFSサーバは、NFSクライアントに対してストレージ領域をエクスポートする。
NFSクライアントは、ネットワークを介してNFSサーバ上のストレージ領域をクライアントのローカルストレージと同様にマウントすることで、NFSのファイルであることを意識せずに読み書きを行うことができる。

ツール:ZFS on Linux

コンピュータのメモリやCPUを限界まで利用するファイルシステムLinuxNFSとSMB(Server Message Block;LAN上の複数のコンピュータ間でファイル共有やプリンタ共有などを行うためのプロトコルおよび通信サービス)サーバと融合されている。
用語として、ZFSプールとZFSデータセットというのがあり、プールはデータセットの入れ物、データセットは大きな入れ物であるプールを小分けにして使いやすくした物、というイメージ。

ツール:autofs

8.4. autofs - Red Hat Customer Portal
9.4.2. autofs の設定 - Red Hat Customer Portal

Automount は、その名の通り NFS ファイルシステムの自動マウントおよび自動アンマウントをしてくれるシステム。
/etc/fstab を使用する場合、ユーザーが NFS でマウントしたファイルシステムにそれほど頻繁にはアクセスしなくても、システムにはその使用頻度に関係なくマウントしているファイルシステム専用のリソースを維持しなければならないという弱点がある。
これに対し、automount システムは自動的にマウント・アンマウントを行うので、システムのリソースを節約することができる。
autofs は、デフォルトの主要設定ファイルとして /etc/auto.master (マスターマップ) を使用する。

NFSサーバ側

動作確認

# exportfs  //方法1
# showmount -e  //方法2

実際のエクスポート状況を確認
ZFS on LinuxNFSの機能を用いている場合でもこれでエクスポート状況を確認できる

# showmount -a

クライアントのマウント状況を確認
クライアントのホスト名とマウントされたディレクトリの両方を(host:dir形式)で表示
ZFS on LinuxNFSの機能を用いている場合はこれではマウント状況を確認できない

# service nfs status

nfsの状況を確認

# zpool list

ZFSプールの状況を確認(共有ボリュームの状況を確認、という感じ)
NAME;プールの名前。SIZE;プールの合計サイズ。ALLOC;すべてのデータセットおよび内部メタデータに割り当てられた物理的容量。使用可能なファイルシステムの容量ではない。FREE;プール内で割り当てられていない容量。CAP (CAPACITY);使用されているディスク容量。総ディスク容量に対するパーセントで表現されます。HEALTH;プールの現在の健全性状態。ALTROOT;プールの代替ルート (存在する場合)。

設定確認

# cat /etc/exports

エクスポート設定ファイルを確認
ZFS on LinuxNFS機能を用いる場合はこのファイルは使わない

# cat /etc/rc.d/rc.local

ランレベルにかかわらず、システム起動時に毎回必ず起動するスクリプト、の確認。
ユーザが起動時に実行させるコマンドなどはこのスクリプトに登録するのが一般的らしい。
私の環境ではこのファイルにZFSのエクスポート設定コマンド(zfs set ...)などを記載している。

設定変更

上記2種類のファイルはお好みのエディタで編集可能。

# zfs set sharenfs="rw=@IPaddress,rw=..." PATHofShareDirectory

zfsによるエクスポート設定
rwはエクスポートオプションを示し、意味は rw = Read Write
接続許可クライアント(複数の場合はカンマ区切りで連ねる)と、共有ボリュームのパスを指定

起動・再起動

# exportfs -r

NFSによるエクスポートを行う。/var/lib/nfs/xtab を /etc/exports と同期させる。 /etc/exports から削除されたエントリを /var/lib/nfs/xtab からも削除し、 既に無効になったエントリをカーネルのエクスポートテーブルから削除する。

# service nfs start

nfs起動

# chkconfig nfs on

nfs自動起動

# zfs share PATHofShareDirectory

zfsによるエクスポートを行う。

NFSクライアント側で行うこと

動作確認

# df -h
# mount

マウント状況を確認

# mount -a

/etc/fstabに記載がある全てのデバイスをマウントする
autofsを用いる際は必要ない(と思う)

# service autofs status

autofsの状況を確認

設定確認

# cat /etc/fstab

mount -aによってマウントされるデバイスの情報が記載されている。
/etc/fstabファイルには、NFS サーバーのホスト名、エクスポートされるサーバーディレクトリー、および NFS 共有がマウントされるローカルマシンディレクトリーなどの設定が記載されている。
ブート時にこのファイルを自動的に読み込み、リモートファイルシステムが自動的にマウントされる。

$ cat /etc/auto.master

autofsの主要設定ファイルを確認する
書式はmount-point mount-nameで、mount-pointはマウントする場所のパス、mount-nameはマウント設定ファイルのパス
Mount-pointとして /- を指定すると、この特定のマップが直接マップであり、マップに関連付けられている特定のマウントポイントがないことを表している...とのことだが、これはいまいちよく分かっていない。

$ cat /etc/auto.mount

autofsによる、自動マウントのアクセス先設定ファイルを確認する
書式はmount-point [options] location
ファイル名はauto.masterのmount-nameに依存。