概述
我目前有一台 CentOS 7 服务器,使用 KVM 将其设置为 VM 主机。它有一个 4TB(2x2TB 镜像)ZFS 阵列,将用于 VM 和文件存储。这是在 Server 2012 R2 上从头重建 AD 域的过程的一部分(老 IT 人员留下的当前 2008 R2 域有点乱,运行在旧的 Core 2 时代台式机上)。我们需要 Server 2012 R2 来实施组策略。有 7/8.1/10 机器的混合版本,但几个月内所有机器都将运行 Windows 10。用户在服务器上有一个共享,它作为 安装在他们的机器上Z:
,他们还可以访问服务器上保存各个部门使用的文档的共享。我们还将实施一个新的备份系统(Crashplan/Carbonite/Mozy 是目前最有可能的选择)。
规模
该网络由主办公室的大约 55 台计算机以及办公室外的其他计算机组成,这些计算机稍后将通过 OpenVPN 连接。总共,我查看了大约 150 台计算机。至少有这么多用户。此外,新域将有大约一到二十个安全组。
选项
我正在尝试决定如何最好地处理网络文件存储和共享。具体来说,我是否应该使用 Samba,如果不行,我是否应该将文件存储在磁盘映像中,或者在 ZFS 阵列上创建数据卷,然后将其作为原始块存储设备传递给 Server 2012 VM。
将文件存储在磁盘映像中以供虚拟机使用对我来说一直是一个糟糕的解决方案。它很简单,而且可以工作,但我并不特别喜欢它。如果我需要将这些文件传输到 Windows 服务器,我必须安装映像或启动虚拟机。将所有文件放在一个映像中传输很方便,但如果传输中断,就会出现问题。这可以通过使用 rsync 之类的工具来解决,但这意味着我只能传输到另一个 Linux 机器。使用磁盘映像的另一个问题是,我只能在虚拟机内运行备份软件(否则我将失去文件级访问权限)。不过我想我可以在主机上以只读方式安装映像,或者将映像添加到另一个具有专门针对备份软件的只读访问权限的虚拟机中。
我知道 ZFS 允许您创建用作块级设备的数据卷,然后可以将其作为物理驱动器传递到 VM。这基本上意味着在 ZFS 阵列中有一个 NTFS 分区。我可以将此卷的只读访问权限授予另一个处理备份软件的 VM,或者我可以将卷以只读方式安装在裸机上,并可能在 Docker 容器内运行备份软件。我还可以通过 ZFS 快照将文件传输到另一个 Linux 主机。传输到 Windows 主机仍然意味着安装卷或启动 VM。
最后一种选择是将所有文件直接存储在 ZFS 阵列中,然后运行 Samba 通过网络共享它们。我预计会有相当复杂的权限层次结构,我担心通过 Samba 进行管理(我只在家庭服务器环境中使用过 Samba)。另一方面,我知道我可以有效地管理 Server 2012 R2 中的层次结构,尤其是使用 Powershell。另一件要考虑的事情是,我可以直接在 VM 主机上、VM 内部或 Docker 容器内运行 Samba,因此它相当灵活。
问题
从长远来看,哪种选择能给我带来最大的灵活性,而不会带来不必要的开销或复杂性?我希望尽可能地将我的职责分开,所以我喜欢让 Samba 共享文件,而让 Server 2012 R2 处理 AD 和组策略(尽管我也可以为此运行单独的 Server 2012 R2 实例而不是 Samba)。但是,就像我说的那样,我犹豫是否要在这种规模的网络中使用 Samba。如果我使用 Samba,我还担心解决文件权限问题会很困难(Windows 本身就够糟糕的了,这是本机选项)。
我们也欢迎任何其他潜在的解决方案。
答案1
我们有一个类似的设置,但有一个很大的优势,那就是我们的 ZFS 存储由 Solaris 提供。为什么这是一件大事?因为 Solaris 有一个集成的 SMB 服务器。只要您的 Zpools 以让您晚上睡得安稳的方式得到保护,我就会推荐以下方法:
- 设置 Solaris 主机而不是 CentOS 机器
- 将 Solaris 主机加入到您的域
- 设置身份映射
- 为虚拟机存储创建 NFS 共享
- 为文件存储创建 SMB 共享(在 ZFS 数据集上)
- 在文件存储数据集上正确设置 NFSV4 ACL
- 在数据集上创建快照例程
好处:
- 如果 Windows 用户/主机“挂载”这样的 SMB 数据集,它可以使用其 Kerberos 票证对 solaris 框(Windows DC)进行身份验证
- 不需要做复杂的事情,所有需要的服务都包含在 solaris 中
- Windows 可以处理 SMB 共享的 ZFS 快照。它们可通过 Windows 中的“上一版本文件/文件夹”对话框访问
- Windows 和 Solaris 完全支持 NFSV4 ACL。它们甚至可以处理最复杂的权限
- 如果您想部署其他服务,则无需运行 Linux VM,只需创建 Solaris Zone 即可。
如果你决定采用 UNIX 方式,我可以为你提供安装文档