ハードマウント
- リモートサーバーが応答しなくなった場合、マウントされたファイルシステムの操作は「ブロック」され、サーバーが復帰するまで待機します。
- プロセスがリモートサーバーにアクセスする際にタイムアウトが発生することはなく、リトライが繰り返されます。サーバーが戻ってきた時点で、処理が再開されます。
- 例えば、リモートサーバーが停止している場合、リモートファイルシステムへのアクセスを試みるプロセスは永遠に待機し続けます。
主な特徴:
- 永続的な再試行。サーバーが復旧すれば、処理が続行されます。
- ファイルシステムの整合性が重要な場合に使用されます。
- エラー処理が「待機」の形を取るため、アプリケーションがハングしたり、操作が遅くなったりすることがあります。
ソフトマウント
- リモートサーバーが応答しなくなった場合、エラーが発生し、操作は一定回数のリトライ後に失敗します。
- 失敗した場合、
IO
エラーを返し、プロセスは通常通り終了します。サーバーが回復しても、再度接続する必要があります。 - 例えば、リモートサーバーが停止している場合、操作は一定回数リトライを試み、その後エラーが返されます。
主な特徴:
- サーバーが応答しなくても、待機せずにエラーを返します。
- アプリケーションがハングするのを避けたい場合や、アクセスが失敗した場合に処理を中断したい場合に使用されます。
- システム全体が停止するリスクを減らすため、一般的にはネットワークの不安定な環境や、データの整合性よりも可用性を重視する場合に使用されます。
選択の基準
ハードマウント: ファイルシステムの整合性が非常に重要で、サーバーが一時的にダウンしてもアクセスを試み続けて処理を行いたい場合に使用します。
ソフトマウント: 可用性を重視し、リモートサーバーが一時的にダウンした場合でも、アプリケーションがハングしないようにしたい場合に使用します。