我有一台装有 RHEL 6、Apache 2.2.22 和 NFS 客户端(nfs-utils-1.2.3)的服务器,并且在私有网络上访问 NFS 服务器。
我的问题当文件数量增加时,我的网站会变慢并且 CPU 负载过高。
在这种情况下,使用 SAN 存储与 NFS 相比有哪些优点或缺点?
谢谢
答案1
NFS 是或可以是 SAN – 因此您在定义方面存在问题。
当然,在与其他流量共享的网络上使用的 1Gbps NFS 存储解决方案可能比专用的 10/40/100Gbps FCoE 网络慢,但话又说回来,您可以在这些速度下通过专用网络运行 NFS。因此,一切都取决于您实际拥有的东西以及您可以给出的预算等。
现在你说你有“高 CPU 负载”——这真的是高 CPU 负载还是存储赶上时的高进程等待?如果你的 CPU 负载真的很高,那么更快的存储可能会有所帮助,但远非一定如此。
基本上,您必须向我们提供比现在更多的细节才能得到确切的答案,其他任何事情都只是纯粹的猜测。
答案2
也许很明显但是... SAN 和 NAS(NFS)之间的区别在于 NFS 允许您通过网络共享同一个文件系统,而 SAN 允许您通过网络访问块存储:
NFS: network->file system->block device
SAN: file-system->network->block device
如果您不需要共享存储,SAN 可以作为解决方案,但您需要专用(和特殊)网络才能获得良好的性能。如果您已经安装了 NFS - 请尝试对其进行优化。我建议尝试以下操作:
- 尝试使用 vers=3 进行挂载
- 如果文件变化不太频繁,请尝试增加 acregmin 和 acregmax
- 尝试启用 fsc (FsCache)
当然,您必须检查 NFS 服务器是否没有受到其他客户端的负载。
答案3
通常,SAN 是指用于存储、块级
NFS/CIFS 使用 TCP/UDP 并提供文件级访问
iSCSI 是一种 TCP 协议(可路由但可能不应该被路由)
FC 不遵循 OSI 模型,需要 FC 网络设备(FC 交换机、FC HBA)
FCoE 使用以太网的较低层但不使用 IP(FCoE 交换机,如 Cisco Nexus 和 CNA(HBA+NIC))
为了在块级存储上共享访问,必须使用集群感知文件系统(处理冲突、锁定)
使用 SAN 专用硬件处理 I/O 请求(在一定程度上),因此对 CPU 的压力较小。您几乎无需投资硬件即可使用 iSCSI。请注意,NIC iSCSI 卸载可能需要许可证(Broadcom)。
SAN 支持多路径。或者您可能可以使用第 2 层链路聚合(需要 NIC 和交换机支持)。100Mbps 链路对于存储来说远远不够。我建议至少使用 2x1Gbps 链路。拥塞的链路会大大降低存储性能。使用专用 VLAN 或(哑)交换机进行 iSCSI 以确保性能并简化故障排除。