使用 NFS 托管主文件夹是否可行?

voy*_*ger 32 unix nfs user-management home-directory

我打算部署一些自助服务终端计算机,并希望将它们与一个小型随身碟作为启动盘,将其余部分保留在易于备份的服务器 ala LTSP 中

现在我正在考虑两种选择。NFSed /home/ 或 ~/ 的本地副本在登录时复制,在注销时同步。

我担心处理文件可能会变得太慢,或者我的网络可能会堵塞

Aar*_*own 33

我在生产环境中将 NFS 用于我的主目录。有几个技巧。

  1. 不要将 NFS 挂载到/home- 这样您就可以拥有一个本地用户,在 NFS 服务器出现故障时允许您进入。我们安装到/mnt/nfs/home

  2. 使用软挂载和非常短的超时 - 这将防止进程永远阻塞。

  3. 使用自动挂载器。这将降低资源使用率,也意味着当 NFS 服务器由于某种原因关闭时,您无需担心重新启动服务。

    auto.master:
      +auto.master
      /mnt/nfs /etc/auto.home --timeout=300
    
    auto.home
       home -rw,soft,timeo=5,intr      home.bzzprod.lan:/home
    
    Run Code Online (Sandbox Code Playgroud)
  4. 使用单点登录系统,这样您就不会遇到与权限相关的问题。我有一个 OpenLDAP 服务器。

  • 好吧,使用 /etc/passwd 和 NFS 挂载主目录是一个坏主意,因为您必须保持 UID 和 GID 同步 - 使用类似 OpenLDAP 的东西,但是是的,用户的主目录设置为 /mnt/nfs/home /用户名。 (2认同)

fau*_*ver 7

HowtoForge 发表了一篇文章,标题为在 Debian Lenny 上使用 GlusterFS 创建类似 NFS 的独立存储服务器,您可能想查看一下。

以下是GlusterFS项目页面中关于为什么它是 NFS 的一个很好的“可行”替代方案的简短描述:

GlusterFS 可以即时自我修复。没有 fsck。存储后端可作为常规文件和文件夹(NFS 风格)直接访问。启用复制后,GlusterFS 可以承受硬件故障。

更多信息可以在项目文档中找到。

此外,使用 GlusterFS 的另一个好处是,如果您在 SAN 上需要更多空间,您只需添加另一个存储砖(服务器节点),您就可以在需要时并行扩展/增长您的存储。


wzz*_*zrd 7

小心软装!软挂载 NFS 文件系统意味着 IO 将在超时发生后失败。确保这是您想要的用户主目录!我的猜测是你没有。结合 intr 选项在主目录上使用硬挂载在这里感觉更安全。

Hard 不会超时:IO 操作将无限重试。intr 选项可以中断安装过程。因此,如果您挂载导出并遇到失败,则硬挂载将锁定您的会话。intr 选项可以中断挂载,因此该组合非常安全,并确保您不会轻易丢失用户数据。

无论如何,autofs 使这一切变得更加容易。


Xer*_*xes 5

需要注意的一件事是,当 NFS 服务器关闭时 - 您的挂载将冻结 - 执行软挂载不会阻塞,因此可以避免“冻结”本身,但是这不会解决主目录的问题,因为没有主目录目录,无论如何用户都被搞砸了。

即使当 NFS 服务器恢复时,除非您对此采取措施,否则冻结问题仍将存在 - 您必须终止挂载机器上的进程,然后重新挂载。这样做的原因是当 NFS 服务器恢复时,它分配了一个不同的fsid- 所以你至少可以通过fsid在 NFS 服务器上硬编码s 来解决这个问题,例如......

#. Home Directories
/usr/users \
  192.168.16.0/22(rw,sync,no_root_squash,fsid=1) \
  192.168.80.0/22(rw,sync,no_root_squash,fsid=1)

#. Scratch Space
/var/ftp/scratch \
  192.168.16.0/22(rw,async,no_root_squash,fsid=3) \
  192.168.80.0/22(rw,async,no_root_squash,fsid=3) \
  172.28.24.151(rw,async,root_squash,fsid=3)
Run Code Online (Sandbox Code Playgroud)

exports(5)手册页指出...

fsid=num
          This option forces the filesystem identification portion of the file handle
          and  file attributes used on the wire to be num instead of a number derived
          from the major and minor number of the block device on which the filesystem
          is  mounted.   Any 32 bit number can be used, but it must be unique amongst
          all the exported filesystems.

          This can be useful for NFS failover, to ensure that  both  servers  of  the
          failover  pair use the same NFS file handles for the shared filesystem thus
          avoiding stale file handles after failover.
Run Code Online (Sandbox Code Playgroud)

...虽然这表明只要主要/次要编号不更改(通常不会更改,除非您导出 SAN/多路径卷时,可能会更改),但我发现我们已经完全解决了这个问题——即,如果 NFS 服务器恢复了——连接已经迅速恢复——我仍然真的不知道为什么这/dev/sdaX对例如这样的设备产生了影响。

我现在应该指出,我的论点主要是轶事 - 它为什么解决了问题实际上没有意义,但它“似乎”已经解决了它 - 不知何故 - 这里可能还有其他变量在起作用,我已经尚未发现。=)