yassy's note

なんかかきます

LinuxにおけるNFSタイムアウト値について

※過去にまとめたwikiからの移行記事

LinuxでのNFSタイムアウト値はtimeo、retransオプションで決定されるが、プロトコル(TCP/UDP)によって若干動きが異なる。

TCPの場合

リトライ時に(timeo/10)秒だけretrans+1回待つ動きとなる。
具体的には以下の通り。
※パラメータはデフォルト設定(timeo=600、retrans=2)

  1. 障害発生
  2. 60秒(timeo/10)待機
  3. リトライ(1回目)
  4. 60秒(timeo/10)待機
  5. リトライ(2回目)
  6. 60秒(timeo/10)待機
  7. リトライ(3回目)&タイムアウト

そのため、180秒待つこととなる。

UDPの場合

retrans+1回リトライするのはTCPと同じであるが、待機秒数が異なる。
UDPの場合では、リトライ毎に待機時間が(前回の待機時間×2)秒となる。
具体的には以下の通り。
※パラメータはデフォルト設定(timeo=600、retrans=2)

  1. 障害発生
  2. 60秒(timeo/10)待機
  3. リトライ(1回目)
  4. 120秒(timeo/10×2)待機
  5. リトライ(2回目)
  6. 240秒(timeo/10×2×2)待機
  7. リトライ(3回目)&タイムアウト

そのため、420秒待つこととなる。

参考

https://linux.die.net/man/5/nfs