当您已经在使用 Autofs 软件包,处理(home)目录的挂载时,就会出现问题。让我们看看这两个软件包之间的区别。
autofs 的主要目的是按需处理网络挂载,而不是同时挂载所有内容,从而节省系统资源。虽然 autofs 软件包中提供了一些按需挂载 home 目录的支持,但要求是这些 home 目录必须已经存在。
另一方面,Autodir 专门仅用于本地目录的创建和按需挂载。
Autodir 还可以创建磁盘文件系统中的真实目录,这些目录不位于单个扁平的基目录中。 这就是像 useradd 这样的实用程序默认创建的方式。在标准文件系统设置中,所有 home 目录都位于基目录/home目录下。 对于像 ext2 和 ext3 这样的文件系统,如果单个基目录中存在大量 home 目录,性能将会下降。
对于访问这些目录的应用程序,Autodir 以 按需 方式在 单个 autofs 挂载的虚拟基目录下呈现所有目录; 实际目录是在某些其他目录的子目录中以分层样式创建的。
例如,用户名为user1的用户的真实 home 目录将被创建为/autohome/u/us/user1如果这样配置,但会按需挂载到/home以供应用程序访问 /home 目录中的 home 目录/home/user1.
实际 home 目录所在的真实基目录的权限(/autohome在上面的示例中)以这样的方式保存:/autohome除了 root 之外,任何人都无法访问。
这种按需挂载目录并在不使用时卸载的功能提供了一个有趣的机会:能够判断目录是否正在使用。 如果某个目录未使用,则可以在卸载目录时安全地启动备份应用程序等程序。
Autodir 通过在目录变为未使用时启动命令行中提到的备份来利用此功能。
如果您是阅读本文档的管理员,还需要介绍一个更重要的问题。 Autodir 不像 autofs 软件包那样调用外部程序 mount 和 umount; 而是直接使用系统调用。 作为副作用,它更快更可靠,但mtab文件不会更新。 我认为这没有必要,因为所有挂载和卸载都是本地目录。
另一个小的区别是 Autodir 是完全多线程的。 Autofs 也有望在未来的版本中实现多线程。