虚拟化为 NFS 提供新机遇

  • 崔康

2013 年 10 月 28 日

话题:云计算DevOps语言 & 开发架构

NFS(网络文件系统)诞生已经有三十多年的历史,虽然有众多其他选择,但是很多厂商和解决方案提供商仍然选择 NFS 作为其虚拟化存储技术,为什么呢?资深专家 Paul Venezia 从多个角度分析了 NFS 复兴的原因,可能 NFS 并不完美,但是新技术并没有足够淘汰 NFS 的优势。

NFS 是第一个现代网络文件系统(构建于 IP 协议之上)。在 20 世纪 80 年代,它首先作为实验文件系统,由 Sun Microsystems 在内部完成开发。NFS 协议已归档为 Request for Comments(RFC)标准,并演化为大家熟知的 NFSv2。作为一个标准,由于 NFS 与其他客户端和服务器的互操作能力而发展快速。标准持续地演化为 NFSv3,在 RFC 1813 中有定义。这一新的协议比以前的版本具有更好的可扩展性,支持大文件(超过 2GB),异步写入,以及将 TCP 作为传输协议,为文件系统在更广泛的网络中使用铺平了道路。在 2000 年,RFC 3010(RFC 3530 )将 NFS 带入企业设置。Sun 引入了具有较高安全性,带有状态协议的 NFSv4(NFS 之前的版本都是无状态的)。如今,NFS 是版本 4.1(RFC 5661),它增加了对跨越分布式服务器的并行访问的支持。

Paul 认为 NFS 在虚拟化环境中的复兴表明,一些好的想法不会过时:

一些技术的运行得这么好,以至于它们已经成为不朽之作——也许,不是因为它们是完美的,而是因为新技术没有能足够的提高自己的优势来推翻旧技术,即使它们可以对旧技术产生一定的冲击。NIS 就是这方面的一个例子。虽然现在有许多新的网络认证机制可以用,但是 NIS 仍然是无处不在。另一个例子就是 IPv4,虽然 IPv6 是更具有扩展性和更加现代化,但是,我们大多数人仍然在使用 IPv4,所以,要等待 IPv6 的到来,我们还需要等待一段时间。再有就是 NFS,它明年就将“年满”30 了。NFS 作为一个强大的分布式文件系统非常有用,这使得它仅仅通过做了一些改变就从大型机时代转型到虚拟化时代。如今最常用的 NFS 是 NFSv3,而它还是 18 年前的产品。然而,即便如此,它依然在全世界范围内被广泛使用。

曾经有一段时间,NFS 的发展陷入了低谷,它只被用于 Unix 上,服务于各处的 Solaris、Linux 和 FreeBSD 的文件系统,但是由于它太过老旧和不安全被许多厂商避之不及,不能广泛应用。即使是虚拟化时代的到来,当时也没有立刻让 NFS 立刻火起来,,充其量是文件系统的一个后备选项。iSCSI 现在呈上升趋势,光纤通道是快速访问网络存储资源的媒介,NFS 只是的一种。但随着 10G 网络的广泛使用以及随后的 10G 端口的价格下降,NFS 已经看到了复兴的希望,特别是在虚拟化领域里。当然,仍然有成千上万的 Unix 机器使用 NFS, 但现在也有数百万通过虚拟机管理程序运行以 NFS 存储的虚拟化 Windows 服务器。越来越多的存储厂商出于各种各样的原因,推荐 NFS 而不是 iSCSI 作为虚拟化部署的首选。

Paul 分析了 NFS 复兴的原因:首先,NFS 在使用和管理方面远远比 iSCSI 简单。你没必要移除每一套虚拟化主机的 LUNs(或者在某些虚拟机管理程序中,需要移除每一台机器的 LUNs);相反的,你可以仅仅把文件系统导出到一个委托的封闭的存储网络中,这样任何一台主机就都可以正常的玩游戏。当然了,你也可以没有进行 CHAP 认证和授权,当然这在许多情况下也不是必须的。在许多数据中心里, iSCSI 认证的存在仅仅是为了在扫描的时候,阻止没有访问权限的主机访问 LUNs。 现如今通过 iSCSI 而不是文件系统的存储方式加重了在主机自身上管理并发主机访问的负担。所有的锁管理和写管理都必须在存储阵列以外解决,这意味着当一台主机出现问题,你就有可能遇上灾难性的后果。

有几次,我已经完全失去了一个 iSCSI LUN,这时一场几台 ESXi 主机之间的冲突刚刚结束,结果导致了 LUN 上的 VMFS 导致了严重的损坏。我不得不销毁卷,然后从备份中重新创建。在 NFS 中,文件系统层中的所有任务都被阵列来处理,对于多系统的访问,这是一种更加紧密的环境——就像在虚拟化环境中一样。

此外,Paul 指出,NFS 导出的卷更容易被作为一个整体来管理。如果你需要调整 NFS 卷上的文件,你可以从一个工作站或者不在卷上运行的虚拟机来挂载。在 Linux 上,你可以仅仅使用几条 Linux 工具箱中的命令来备份整个 NFS 卷。如果你这样做,你不用担心自己会踩到任何一根脚趾。但是如果你因为表达格式错误不经意间把 iSCSI LUN 挂载到错误的机器上,所有的数据都会丢失。在许多情况下,你可能会发现,NFS 在性能上击败了 iSCSI。根据使用中的传输和存储情况, NFS 在某些工作负载的情况下吞吐量可以超过 iSCSI,尤其是当写入次数特别频繁的时候。在最坏的情况下,NFS 的性能通常与 iSCSI 相差无几。iSCSI 有先进的工具集,但是对于一些原始操作,一些存储厂商支持基于 NFS 的 VAAI,如完全的复制和卸载克隆。

NFS 与光纤通道是两种不同的讨论话题,考虑到光纤通道需要专用 HBA 和交换机,但是即使这样,在与 FCoE(以太网光纤通道)对比中,NFS 非常轻易地就赢得“简单性”方面的胜利。 在恢复性方面, iCSCI 和 FiBer Channel 或者 FCoE 的冗余的存储路径比 NFS 更加先进。尽管大多数虚拟机管理程序将允许多个并发的存储路径,而 NFS 仅限于故障转移和绑定的网卡聚合。然而,在实践中,这通常不是一个显著的问题。此外,人们希望 NFSv4 的广泛采用,将给人们带来多路径和附加的安全特征。曾经有几年,iSCSI 是虚拟化世界的宠儿—至少对于那些不要求当时的速度比光纤通道更快的公司是这样认为的。但是,趋势似乎现在正在改变,NFS 正在被重新推回到聚光灯下。

云计算DevOps语言 & 开发架构