1 NAS和 SAN的主要区别是什么?实际场景中推荐使用哪个?
1.1 主要区别:
NAS: Network Attached Storage
是基于IP/Ethernet网络的文件级访问,在客户端看到的是文件和目录结构;
常用的协议有:NFS(适用于Linux); SMB/CIFS(适用于Windows)
SAN: Storage Area Network
是基于iSCSI/FC网络的块级访问,在客户端看到的是未格式化的原始磁盘文件块;
常用的协议有:FC, iSCSI, FCoE;
1.2 使用场景
NAS: Network Attached Storage
文件共享与协同办公;
跨平台环境,Windows, Linux, Mac等;
音频和视频等流媒体;
海量非结构化数据,比如AI训练、天气气象、基因测序等。
SAN: Storage Area Network
数据库(如Oracle,SqlServer等)、ERP; 高IOPS低延迟的应用;
虚拟化(Hyper-V; VMware);
某些高性能计算和金融交易系统等。
2 如果一款存储产品,大量小文件的读写速度比较慢,可能的原因有哪些?如何排查,以及如何优化?
海量小文件操作是NAS存储的痛点。
2.1 可能的原因
2.1.1 元数据瓶颈
元数据是最大的瓶颈。海量小文件的读写、查询和关闭等操作都会产生多次元数据请求,海量请求会压垮元数据服务。
2.1.2 磁盘IOPS 瓶颈
小文件读写是随机IO模式,如果是HDD盘,读写效率会非常低,无法满足高并发需求。
2.1.3 网络延迟
每个小文件操作都会需要多次网络来回,海量操作会使网络延迟效应放大。
2.1.4 协议开销
NFS/SMB都有固定的协议头开销,处理海量小文件时,有效数据占比低,效率低下。
2.2 如何排查和优化
2.2.1 存储侧优化
a. 使用SSD作为元数据缓存或独立元数据盘;对于热点小文件,可以使用SSD作为数据缓存或数据分层的热层;
b. 分布式架构:通过分布式元数据架构,通过增加节点来线性扩展元数据性能。此条是重点或者根本解决方案;
2.2.2 架构与方案优化
a. 打包存储:在应用层把海量小文件打包成tar或者zip包,或者使用数据库和对象存储来管理小文件;
b. 选择正确协议:对于海量小文件,NFS V4 比V3可能会有性能提升;
2.2.3 客户端优化
a. 确保客户端有足够的内存和CPU资源;
b. 使用正确的挂载选项,例如actimeo调整缓存时间,减少getattr请求等;
2.2.4 排查工具
a. 使用iostat -x 1 查看磁盘util%和await是否很高;
b. nfsiostat(NFS)查看网络延迟和操作速率;
c. 存储平台自带监控工具,查看IOPS, lantency,带宽等指标。
------------------------------------------The End ----------------------------------------------
(待续)
也欢迎大家点赞关注我的微信公众号:大滨读书健身(全网同名)
会分享读书、健身、投资等心得体会,人生除了代码还有生活!
172万+

被折叠的 条评论
为什么被折叠?



