如果你是Mac用户,你可能想知道在使用网络连接存储设备(如Synology)或NAS / Thunderbolt以太网设备(如QNAP)时,哪种文件共享协议能提供最佳性能。macOS允许人们在AFP、NFS、SMB和CIFS协议之间进行选择,有时很难做出正确的选择,特别是考虑到其中一些协议具有不同的版本,可能会有不同的性能。除此之外,macOS本身可能会根据你运行的版本而有所不同,这可能会让许多摄影师迅速恶化,因为他们只是想让他们的设备发挥出最好的效果。
我目前正在审查另一款QNAP设备,在此过程中,我决定在内置10 GbE连接的iMac Pro上,在最新版本的macOS Mojave 10.14.3上测试所有这些协议。4 bay QNAP设备同时提供Thunderbolt over Ethernet和10 GbE连接选项,所以我对这两种设备都进行了测试,不过结果显示Thunderbolt的整体性能更好,这也是我决定坚持使用它而不是10 GbE的原因。为了确保4-bay QNAP设备发挥最大潜力,我使用了在RAID 0配置中配置的快速7200 RPM 4x WD Red驱动器。QNAP诊断工具中的文件系统分析器显示卷的潜在读速度大约为680 MB/秒,写速度为570 MB/秒,这对于RAID 0配置中的四个驱动器来说是相当不错的(根据HDD Analyzer,每个驱动器可能能够达到180-190 MB/秒)。从配置的角度来看,iMac Pro上没有任何改变,默认的/etc/nfs.conf, /etc/nsmb.conf和/etc/sysctl.conf文件(如果您运行的是旧版本的macOS,您应该编辑/etc/nsmb.conf文件,并确保在文件中添加“signing_required=no”,否则您使用SMB协议的传输速度将受到很大影响)。
为了确保我的数据更加准确,而不仅仅局限于单个NAS系统,我还在8-bay上运行了类似的测试Synology DS1817+ NAS我去年评测过的10gbit的连接。Synology驱动器在RAID 6配置中,使用6 TB HGST 7200 RPM驱动器。由于Synology DS1817+没有Thunderbolt连接,所有测试都是在10 Gbit网络上进行的。为了确保我能获得最大的潜在网络速度,iMac Pro、Synology DS1817+以及10 GbE网络交换机被配置为9000 MTU Jumbo帧。让我们对每个文件共享协议做一个快速的概述,然后我们将进行比较和结论。
目录
什么是法新社?
AFP,意思是苹果归档协议是作为Mac操作系统的一部分而开发的一种专有网络协议。它最初被称为AppleTalk,但后来被更改并更名为AFP。因为它是macOS的原生协议,所以在所有受支持的网络协议中,它是最兼容、功能最丰富的。它内置了对“Spotlight”搜索、Time Machine、Mac Aliases和Bonjour Services的支持,其他协议不兼容。
NFS是什么?
网络文件系统NFS (distributed file system protocol)是为Unix / Linux操作系统环境而开发的一种分布式文件系统协议。它基于开放标准,多年来经历了Unix / Linux社区的多次修订和贡献,从版本2 (NFS v2)一直到2016年发布的最新NFS版本4.2。NFS的大多数现代实现都基于该协议的版本3和4,一些系统支持4.1和现在的4.2。macOS本身支持NFS v3和NFS v4,不过需要通过/etc/nfs.conf文件手动启用对版本4的支持,因为操作系统默认连接到版本3。
什么是SMB / CIFS?
的服务器消息块SMB (internet file sharing protocol)是微软公司开发的一种网络文件共享协议通用因特网文件系统(CIFS协议)是它的一个版本。与AFP类似,SMB / CIFS是作为父操作系统Microsoft Windows的本机协议开发的。SMB还提供了一些特定的特性,如网络打印、共享文件夹认证、文件锁定等。macOS内置了对SMB 1 / CIFS、SMB 2以及SMB 3的支持。
简而言之,可以把这三种协议看作苹果、Unix和Windows协议。每种方法都有其优缺点,但对于Mac用户来说,AFP是典型的选择。
AFP、NFS、SMB / CIFS性能比较
现在您已经了解了这些协议之间的主要区别,让我们来看看在处理大量网络和Thunderbolt流量时它们是如何进行比较的。下面的表格总结了我从4舱QNAP NAS / DAS得到的性能结果:
协议 | 版本 | Seq读取速度 | Seq写入速度 |
---|---|---|---|
法新社 | N/A | 649 MB /秒 | 306 MB /秒 |
NFS | V3 / v4 | 551 MB /秒 | 121 MB /秒 |
SMB | v1 | 161 MB /秒 | 169 MB /秒 |
SMB | v3 | 652 MB /秒 | 624 MB /秒 |
我为每个协议和版本总共运行了5个测试,并选择了最佳结果。
如您所见,这里性能最差的是NFS。虽然它在读取速度方面做得不错,在使用4gb文件的3次测试中平均约为551 MB/秒AJA系统测试Lite基准工具),它的写速度非常糟糕,只有121 MB/秒。尽管AFP是一种原生macOS协议,但它在QNAP上的写性能也令人失望,尽管读取速度非常快。这里表现最好的是SMB v3——使用这个协议,我能够获得652 MB/秒的读取速度和624 MB/秒的写入速度,这是相当令人印象深刻的。SMB v1 / CIFS总体上非常糟糕,显示出非常糟糕的读写速度,因此应该不惜一切代价避免它。
以下是AJA System Test Lite对上述SMB v3结果的截图:
下面是AFP结果的截图:
在运行这些测试之后,我意识到AFP的QNAP实现可能很差,所以我决定在Synology NAS上重复相同的测试。下面是在Synology DS1817+上运行相同测试的结果摘要:
协议 | 版本 | Seq读取速度 | Seq写入速度 |
---|---|---|---|
法新社 | N/A | 1105 MB /秒 | 506 MB /秒 |
NFS | V3 / v4 | 590 MB /秒 | 156 MB /秒 |
SMB | v1 | 75 MB /秒 | 173 MB /秒 |
SMB | v3 | 1108 MB /秒 | 547 MB /秒 |
Synology DS1817+由于拥有更多的物理驱动器,因此能够获得更快的读取速度,正如您从上表中看到的那样,使用AFP和SMB v3协议,我能够获得超过1.1 GB/秒的速度。然而,当涉及到写入速度时,情况就有点不同了。与第一个表类似,性能最好的仍然是SMB v3,展示了出色的读写性能。与QNAP相比,AFP在Synology NAS上的表现更好,但仍然落后于50-75 MB/秒。我用4 GB和8 GB顺序读/写操作重新运行了几次测试,结果仍然相当一致,总体上SMB v3高于AFP。应该像避免Synology上的瘟疫一样避免SMB v1 -我无法获得超过75 MB/秒的读取速度,这基本上证明了该版本的实现可能存在bug。
结论
根据我从两家不同的NAS供应商那里看到的情况,就macOS上的整体性能而言,SMB v3似乎是可以使用的最好的网络协议,而AFP是第二好的。SMB v1和NFS都应该避免使用——它们的写性能相当令人失望。如果AFP提供的特定macOS特性对您很重要,那么您应该在NAS设备上测试SMB v3和AFP,看看它们各自的表现如何。对于Synology来说,性能差异看起来不是很明显,但对于任何使用QNAP设备的人来说,AFP剥夺了几乎一半的写入速度,这实在是太多了……
我知道这篇文章对我们的读者来说可能有点太专业了,但我仍然想分享它,因为我相信一个人应该使用最好的工具来完成这项工作。如果您在您的环境中使用NAS,那么您可以在下面的评论部分中使用类似的工具分享您的结果。
根据我使用这两种协议的个人经验,我想在这个讨论中补充的一点是:
SMB的索引速度比afp快得多。
当我远程vpn到我的网络,并打开一个大卷(8tb)时,在afp中打开一个2tb的文件夹可能需要5-10分钟,而在使用smb时打开相同的文件夹大约需要30分钟。
我没有经验证据证明这一点,但在我的环境中(synology NAS, macbook),我注意到打开大文件夹和卷所花费的时间有巨大的差异。
4k随机读写怎么样?
您是否在NAS中使用SSD ?我担心你的速度,因为没有硬盘能够提供这些。
在使用网络存储时,顺序速度很少是人们所需要的。通常情况下,你会希望随机访问的IO/s比原始的读/写速度更快,特别是在进行增量/差异备份或搜索时。经过长时间的实验,我发现NFS与其他竞争者相比非常健壮,速度也非常快,大约在350…450 IOps,而不是AFP和SMB管理的~200 IOps。
与其在秒表上复制一个大文件,每个人都应该用一种协议,然后用另一种协议,连续几周执行真实的任务,然后自己看看。在Synology盒子上从AFP切换到NFS后,我在总体运行时间和灵敏性方面都有了很大的改进。这很可能是由于我所做的特定的事情,每个人的经历可能有很大的不同,所以请尝试应用您自己的工作负载。
关于安全问题:如果你在未经我同意的情况下设法进入我的存储网络(意思是你已经进入我的房子,并侵入交换机,让你的设备进入,因为存储在自己的有线局域网中,没有到互联网的路由),我将有比我的NFS共享的安全更大的担忧。;)
感谢的人
谢谢你写这篇文章。值得注意的是,使用SMB,我无法保存用户登录凭据。使用AFP, synology框,登录是通过苹果钥匙链保存,这使得重新连接启动更顺利。
很棒的文章和调查,我发现它非常有用。我欣赏更多的技术层面,这是一个恰到好处的技术层面。
建议:
1.在我看来,在两个NAS示例中,传输速度都受到硬盘和NAS的内部接口的限制。我建议在Raid 0中使用3-4个SATA ssd重复测试,以消除这种限制,并将吞吐量提高到10GbE连接之外。
您可以通过SSH拨号到NAS,并执行以下命令(FS_Throughput是接近真实文件复制情况)来检查接口的内部吞吐量:
[~] # qcli_storage -T
[~] # qcli_storage -t
他们给出了这样的结果:
性能测试完成100.000%…
框端口Sys_Name吞吐量RAID RAID_Type raid_吞吐量池
NAS_HOST 1 /dev/sda 538.48 MB/s /dev/md3 RAID 0 1.05 GB/s
NAS_HOST 2 /dev/sdb 522.25 MB/s /dev/md3 RAID 0 1.05 GB/s
NAS_HOST 3 /dev/sdc 407.47 MB/s /dev/md1单块417.48 MB/s 1 .选择“应用”
NAS_HOST 4 /dev/sdd 428.22 MB/s /dev/md2单路428.14 MB/s 2 .选择“单路”
性能测试完成100.000%…
VolID VolName Pool Mapping_Name Throughput Mount_Path fs_吞吐量
1 DataVol1 1 /dev/mapper/cachedev1 393.04 MB/s /share/CACHEDEV1_DATA 397.52 MB/s
2 DataVol2 2 /dev/mapper/cachedev3 429.64 MB/s /share/CACHEDEV3_DATA 421.05 MB/s
3 DataVol3 /dev/mapper/cachedev4 1.07 GB/s /share/CACHEDEV4_DATA 1.02 GB/s
2.制作一个小流程图,说明设备是如何连接的,你使用了哪些卡/接口和电缆。如果有瓶颈的话,这可以帮助你发现瓶颈在哪里。
例如,一个10gbe以上的Thunderbolt适配器的限制是~ 600mb /s。
3.对于10gbe, SFP+比10GbaseT便宜得多。在ebay和速卖通上有很多sever pull card,有配套的光缆。10GbaseT仍然是“新”的,所以你必须买大多数新的、昂贵的东西。此外,它的工作功率不是3-4兆瓦,而是10-12兆瓦,而且卡和适配器可能会变得非常热。
如今,许多人在家工作的最大问题是SMB端口445被许多ISP阻塞。所以他们不能通过SMB连接到Mac服务器,而必须使用AFP。如果他们的电脑在卡特琳娜,他们就完蛋了。苹果在卡塔琳娜打破了AFP。所以他们要么降级,要么升级到大苏尔,这令人惊讶地恢复了AFP的正常工作。
为什么不用vpn呢?我建议你试试Zerotier或Tailscale:这两种技术都很棒(而且是免费的),它们在互联网上提供虚拟网络。无论你从哪里连接,你所有的设备之间都有一个直接的p2p安全网络。只要设置它,忘记ISP的限制,关闭端口等等…
NFS设置可以通过调整来提高性能。我在两台imac之间有一个thunderbolt (v2)桥接,NFS为我提供了大约4Gb/s的写入速度。这几乎是我的SMB测试的两倍。
NFSv3的问题在于默认情况下它不是很安全。所以你真的必须“信任”你的人际网络。或者经历设置NFSv4和Kerberos的麻烦。
由于我偏执和懒惰,我使用SMB,因为内置的用户认证。
非常真实的。然而,适当的检查和维护您的UGO可以保证安全。我见过大多数人设置777,忘记了,在大多数情况下,最后八位元永远不应该是0。总而言之,NFS更快,我只希望OSX支持FS-CACHE,但那是NIX和OSX是BSD,好吧,有点BSD,因为它一直在变化。
好文章,谢谢分享你的发现。