マウントポイントでファイルを開いているときに NFS4 サーバーを再起動すると、nfs クライアントで遅延が発生します
Environment
-
Red Hat Enterprise Linux 5/6
-
nfsv4
Issue
-
マウントポイントでテクストファイルを cat しているときに NFS4 サーバーを再起動すると、nfs クライアントで遅延が発生します。
-
RHEL サーバーで簡易な NFS エクスポートを設定します。
/tmp *(rw,no_root_squash,fsid=0)
別の RHEL 6 サーバーでエクスポートディレクトリをマウントします
# mount -t nfs4 x.x.x.x://mnt/tmp
マウント配下でテキストファイルを cat してください。サーバー上の nfs サービスを再起動した場合は、マウントポイント配下で同じテキストファイルを cat すると遅延が発生します。これは nfs クライアントがセッションの更新に 90 秒の猶予期間分待機するように強制されているようです。
Resolution
猶予期間の目的は、サーバーが再起動したことをクライアントに通知し、既存のロックが再要求される時間を確保し、ロックを失うことを防ぐための時間を確保します。これにより、mailbox/database/logfile/... など、ロックに依存しているファイルでデータの破損を防ぐことができるため、強く推奨されます。
nfsv4 RFC ( http://www.ietf.org/rfc/rfc3530.txt ) には、以下のように記載されています。
During the grace period, the server must reject READ and WRITE
operations and non-reclaim locking requests (i.e., other LOCK and
OPEN operations) with an error of NFS4ERR_GRACE.
訳: サーバーは猶予期間内、READ および WRITE 操作と、
再要求以外のロック要求 (つまり、その他の LOCK および OPEN 操作)
を拒否し、NFS4ERR_GRACE エラーが発生します。
猶予期間を短くするには、以下のファイルでカーネルパラメータの値を変更します。
注意: lease 時間には、grace 期間と同じ値を設定する必要があります。"lease 時間" は、サーバーとクライアント間のファイルロック要求の時間間隔に使用されるため、そのパラメータの値を減らすと、ネットワークトラフィックがよりビジーとなる場合があります。
# service nfs stop
# echo 10 > /proc/sys/fs/nfs/nlm_grace_period
# echo 10 > /proc/fs/nfsd/nfsv4gracetime
# echo 10 > /proc/fs/nfsd/nfsv4leasetime
# service nfs start
echo "10" は 10 秒を示しています。
Root Cause
90 秒の猶予期間が原因で遅延が発生します。
Diagnostic Steps
問題は再現できます。
166 21:48:46.082089 10.65.211.44 10.65.211.9 NFS V4 COMP Call (Reply In 167) <EMPTY> PUTFH;SAVEFH SAVEFH;OPEN OPEN;GETFH GETFH;GETATTR GETATTR;RESTOREFH RESTOREFH;GETATTR GETATTR
167 21:48:46.082207 10.65.211.9 10.65.211.44 NFS V4 COMP Reply (Call In 166) <EMPTY> PUTFH;SAVEFH SAVEFH;OPEN OPEN(10013)
ステータス '10013' は NFS4ERR_GRACE になります。
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Comments