この質問はディストリビューションによって異なりますが、一般的に、UNIXの世界でハードマウントまたはソフトマウントを使用することの利点と欠点は何ですか。
1つがより有益である、またはかなり普遍的な使用がある特定の状況はありますか?
ハードマウントは通常、ローカルディスクやSANなどのブロックリソースに使用されます。ソフトマウントは通常、NFSやCIFSなどのネットワークファイルプロトコルに使用されます。
ソフトマウントの利点は、NFSサーバーが利用できない場合、カーネルが事前に構成された期間の後にI/O操作をタイムアウトすることです。欠点は、NFSドライバーがデータをキャッシュし、ソフトマウントがタイムアウトした場合、NFSボリュームへのどの書き込みが実際にディスクにコミットされたかがアプリケーションで認識されない可能性があることです。
ハードマウントと "intr"(割り込み可能)は良い妥協案です(2.6.25より前のカーネルの場合、Ryan Horrisbergerのコメントを参照)。アプリケーションは書き込みの成功について騙されませんが、何かがチューブを詰まらせた場合、それらを殺すことができます。
ある種のネットワークファイルシステム(nfsまたはFuse)を使用したハードマウントは、壊れた接続を再確立しようとしている間、(ときどき)永久にブロックすることがあります。つまり、そのマウントにアクセスしようとするすべてのプロセスは、デバイスが再び利用可能になるか、システムが再起動されるまで、ディスクスリープ(D)になります。
ディスクのスリープを中断または強制終了することはできません。ゾンビプロセスのゾンビのようなものです。
つまり、ネットワークファイルシステムにハードマウントを使用しないでください。 I/Oが不可能である場合に、ファイルシステムが(syscallsを使用するプロセスに)すぐに失敗するようにします。そうでない場合、FSが失敗すると、彼らが主張するメモリもリークされる可能性があります。
softは、nfsの原理を理解していない人だけが使用します。ソフト/ハードは、ファイルシステムの使用法に依存します。ミッションクリティカルなアプリケーションでは、ファイルの破損を防ぐために常にハードマウントを使用します(これが、ほとんどのシステムでデフォルトになっている理由です)。 roファイルシステムの場合、softおよびtherforを使用するのが安全です。ちなみにnfsv4はもはやソフトをサポートしていません...