这个问题在发行版之间可能有所不同,但总的来说,在UNIX世界中使用硬装载还是软装装有什么优点/缺点?
在某些情况下,哪一个更有利或者使用是否相当普遍?
硬装载通常用于块资源,如本地磁盘或SAN。 软装载通常用于NFS或CIFS等networking文件协议。
软安装的优点是,如果您的NFS服务器不可用,内核将在预先configuration的一段时间后超时I / O操作。 缺点是如果您的NFS驱动程序caching数据,并且软安装超时,您的应用程序可能不知道哪些写入到NFS卷实际提交到磁盘。
硬装和“内部”(interruptible)是一个很好的折衷(对于2.6.25之前的内核,请参阅Ryan Horrisberger的评论)。 应用程序不会被成功写入,但如果有东西堵塞了pipe道,你可以杀死它们。
使用某种networking文件系统(NFS或保险丝)的硬装载可能(有时)永远阻塞,同时尝试重新build立断开的连接。 这意味着,每个试图访问该挂载的进程都进入磁盘睡眠(D),直到设备再次可用或系统重新启动。
磁盘睡眠不能中断或死亡。 它就像僵尸进程的僵尸。
总而言之,不要使用硬装载networking文件系统。 如果I / O不可行,您希望文件系统发生故障(立即执行使用系统调用的进程)。 否则,如果FS失败,他们声称的内存也可能被泄漏。
软只会被不了解nfs原理的人使用。 软/硬取决于文件系统的使用情况。 对于任务关键型应用程序,始终使用硬装载来防止文件损坏(这是为什么它是大多数系统默认的原因)。 对于ro文件系统,使用soft和therfor首选是安全的。 顺便说一句nfsv4不再支持软…