admin 管理员组

文章数量: 887021


2024年3月12日发(作者:powerful calculator)

NFS和iSCSI,孰优孰劣?

作者:暂无

来源:《计算机世界》 2013年第2期

这是两种主要的IP 存储协议,但它们却有着全然不同的优缺点。那么,到底谁能更胜一

筹呢?

SymQuest 集团系统和网络架构师Matt Prigge

其实像之前大家热议的许多IT 话题一样,对于在任何两种流行的竞争技术之间做一个选

择,其关键不是比较哪一种技术在整体上更佳,而是要看哪一种技术最适合解决所面临的挑战。

NFS 和iSCSI 也不例外,它们各自都有优缺点,究竟选择哪一种,这要具体情况具体分析。不

过,选择哪一种协议对存储的未来大有影响。

文件VS. 数据块

无论是从实现方法还是发展历史看,NFS 和iSCSI 都有着天壤之别。NFS 由Sun公司在上

世纪80 年代初开发,当时作为一种通用的文件共享协议,让网络客户端可以通过网络从服务

器读取文件,或将文件写入到服务器。而iSCSI 的问世要晚得多,它出现在2000 年年初,作

为光纤通道之外的一种基于IP 的替代协议, 与光纤通道一样,iSCSI 对数据块级的SCSI 命

令进行封装,然后通过网络发送。

两者的区别主要在于对文件系统在哪里加以实现和管理。对于像NFS 这样的文件级协议而

言, 由服务器或存储阵列托管文件系统,在客户端读取文件,并将文件写入到该文件系统中。

而对于像iSCSI 和光纤通道这样的数据块级协议而言,存储阵列为客户端提供数据块集合,然

后客户端根据它决定需要使用的文件系统,对该原始存储数据进行格式化。

虽然这种区别具有许多影响,但最重要的影响可能在于,在像iSCSI 和光纤通道这些数据

块级协议中, 存储阵列通常并不明白自己在存储什么内容,它只知道自己分配了数据块集合,

哪个或哪些iSCSI 客户端可能访问它们。

反之,在像NFS 这些基于文件的协议中,存储阵列完全了解存储在其上面的应用数据,无

论这是一般的文件共享数据,还是组成虚拟机集合的文件。

从实际的角度来看,由于存储阵列端了解存储在基于NFS 的部署环境中的数据,因而存储

阵列更容易跟踪实际的存储使用情况,在自动精简配置场合下,就能够拍摄快照或备份单个虚

拟机,甚至可以在阵列端对主存储数据进行重复数据删除。

但是,VMware 的阵列集成vSphere 应用编程接口(VAAI)最近进行了SCSI T10方面的改

进, 通过支持UNMAP SCSI 原始命令,为基于数据块的存储增添了类似功能,这改进了虚拟化

堆栈释放未使用数据块(因而让阵列可以回收这些数据块)的功能,还改进了阵列端副本卸载

功能,因而加快了虚拟机克隆等任务。从某种意义上说,通过针对SCSI 协议的扩展,在使用

NFS 的文件级系统中,已经实现的虚拟机管理程序与阵列的智能化集成,一部分移植到了数据

块级实现的环境中。

文件与数据块之间的区别还不止这些。

尽管添加这些SCSI 原始命令,让基于SCSI的存储协议可以具有与NFS 同样的一些本领,

但是在其他情形下,文件级协议还是有其优势,延伸集群(stretched clusters)就是一个例

子。在这种同步复制的、地理位置分散的存储实现环境中,让存储层能够把每个虚拟机视做单

独的存储资源,以便可以单个移动和故障切换,而非作为巨大的不透明群组,这极其重要,这

可能也是使用基于数据块的存储协议很难实现的原因。

网络上各异

从网络的角度来看,NFS 和iSCSI 也大不一样。如果使用NFS,额外的吞吐量和冗余性主

要通过两种方法来实现,一个是基于网络的链路汇聚,另一个是格外注意在多个阵列端的IP

地址别名上均衡存储连接,确保负载均衡卓有成效。另外,iSCSI 拥有内置的多路径功能,如

果与支持该功能的厂商的技术配合使用,可以提供更高级的负载均衡算法,从而在多条服务器

和阵列端存储路径上智能化地均衡存储流量。

在这两种情况下,使用万兆以太网可以减轻出于存储性能的原因而采用多路径的重要性,

因为对绝大多数企业来说, 接近千兆的吞吐量是完全不可想像的,至少今天是这样。不过,

iSCSI 在这方面仍比NFS更有优势,尤其是在汇聚多条千兆以太网链路时。

从网络安全的角度看,iSCSI 也具有优势。除了NFS 和iSCSI 都支持的基于源IP 的安全

限制外,iSCSI 还内置了对双向的质询握手验证协议(CHAP) 的支持,该协议可以防止未经授

权的服务器连接至存储资源,并让服务器可以验证它们所连接的存储阵列的真实性。

关于现代NFS 实现机制的一个常见误解是,误以为它们是基于UDP/IP 的。这种误解往往

源自NFS版本2 完全基于UDP这个事实,少数几种定制的实现除外。虽然UDP 是一种延迟比较

低的IP 传输协议,但是它缺少TCP/IP具有的状态连接跟踪功能所提供的安全性和传输有保障

等优点。从NFS 版本3 开始,TCP 成了一种得到支持的传输协议。这也是目前大多数基于NFS

的存储阵列和虚拟机管理程序(如VMwarevSphere)采用的传输协议,使NFS 与基于TCP/IP

的iSCSI 不相上下。

明天赢输未知

如今,iSCSI 似乎是赢家,至少从网络角度来看是这样,因为它提供了更好的多路径支持

和更高级别的端到端的安全性。不过,如果在阵列端得到适当的利用,NFS 仍然有相当大的优

势,因为它让阵列能够清楚地了解虚拟化堆栈是如何处理存储资源的,还能智能化地参与针对

该存储资源执行的加速、快照和重复数据删除等操作。从长远来看,那些基于阵列的智能化优

点,以及未来NFS4.1 问世后对NFS 客户端进行的多路径和安全性方面的改进,想必最后会使

天平向NFS这边倾斜。

不要相信哪一种协议会完全击败另一种。两者有区别反而是件好事,因为这使我们找到满

足自己特定要求的基于IP 的解决方案的可能性大增,这两种协议发展史的最后篇章目前还是

未知数。


本文标签: 协议 数据 实现 网络 文件