INFO
Categories

NAS和 OSS对比

对象存储技术揭秘:为何备受瞩目?

在上一篇文章中,我们探讨了数据存储技术的基础知识,并对DAS、SAN和NAS这三种技术进行了深入的对比分析。长期以来,这三种架构一直占据着数据存储市场的主导地位,满足着各类行业用户的数据存储需求。然而,随着时代的演变,一种新兴的数据存储方式崭露头角,开始动摇前三甲的稳固地位。这种备受瞩目的存储技术,正是云计算时代的新宠儿——对象存储。

或许在不断探索与发展的过程中,我们能够意外发现,对象存储技术竟也如此有趣且富有成效。
对象存储,亦被称为“面向对象的存储”,其英文名为Object-based Storage。在云服务领域,这一技术常被直接简称为“云存储”。值得注意的是,不同的云服务提供商在命名上各有千秋。例如,阿里云将其对象存储服务命名为OSS,华为云则称之为OBS,腾讯云为COS,七牛采用Kodo,而百度和网易则分别以BOS和NOS命名。尽管名称各异,但它们所指的技术核心是相同的。相较于之前提及的DAS和SAN这两种基于物理块的存储方式,以及NAS这种基于文件的存储方式,对象存储无疑为现代存储技术领域注入了一股新的活力。

在DAS和SAN这两种存储方式中,存储资源类似于一块块独立的硬盘,它们直接与主机相连,被称为块存储。而NAS则呈现出一个文件系统的目录结构,包含目录、子目录、孙目录以及文件,这被称为文件存储。文件存储的显著特点是,所有存储资源都通过多级路径进行访问,例如常见的文件路径“C:\Program Files (x86)\Tencent\WeChat\WeChat.exe”或网络共享路径“\NJUST-Server\学习资料\通信原理\第一章作业.doc”。

进入20世纪末,随着互联网的迅猛发展,数据存储需求经历了两个深刻的变化。首先,数据量呈现出爆炸式的增长。这种变化的原因不言而喻,我们只需看看自己硬盘中存储的丰富内容便能感知到。
Web应用的广泛普及以及社交需求的不断增长,极大地推动了多媒体内容的创作与分享。用户纷纷上传照片、音乐和视频,进一步推动了数据量的急剧增长。同时,信息技术的迅猛发展与企业数字化的不断推进,也产生了海量数据,对存储资源构成了巨大挑战。

此外,非结构化数据的占比正显著上升。那么,什么是非结构化数据呢?简单来说,它是指无法用二维表结构进行逻辑表达的数据。例如,我们经常处理的excel表格中的姓名、身高、体重等信息,就属于结构化数据。而非结构化数据则包括文本、图片、音频、视频等,它们在数据总量中的占比正日益增加。
而非结构化数据,如图像、音频、视频、word文章以及演示胶片等,在数据总量中的占比正日益上升。据预测,到2020年,全球数据总量的80%将由这些非结构化数据占据。然而,面对这一趋势,传统的DAS、SAN和NAS技术却显得力不从心。因此,专家们致力于研发出一种新的存储技术——对象存储,以应对这一挑战。

尽管对象存储技术近年来备受瞩目,但其历史可追溯至1996年,那时美国卡内基梅隆大学已将其作为研究议题提出。加州大学伯克利分校也紧随其后,开展了类似的项目。在2002年,Filepool公司率先推出了基于内容可寻址技术的Centera系统,标志着对象存储技术的初步成形。而真正将对象存储推向云时代的,则是2006年美国Amazon公司发布的AWS S3(Simple Storage Service)服务。这一里程碑式的事件不仅将对象存储引入了云计算领域,更奠定了其未来的发展基础,从而开启了对象存储的黄金时代。
S3已成为对象存储的公认标准,众多厂商纷纷兼容。那么,对象存储究竟是何方神圣?它与块存储、文件存储又有何异同?

要解开这些疑问,最直接的方法就是从实际使用体验入手。尽管对象存储的底层硬件介质仍是硬盘,这与块存储和文件存储并无二致,但其系统架构却大相径庭。

具体来说,块存储的操作对象是磁盘,遵循SCSI、iSCSI、FC等存储协议,其接口命令如Read/Write等,专注于磁盘读写。而文件存储则以文件和文件夹为操作对象,通过NFS、SAMBA(SMB)、POSIX等协议进行数据交换,其接口命令如READ/WRITE等,涵盖了文件的各项操作。

对象存储则独树一帜,以对象(Object)为主要操作单位,运用SSwift等存储协议。以S3为例,其接口命令简洁明了,如PUT/GET/DELETE等,无需处理复杂的目录树结构。在对象存储系统中,用户无法直接打开或修改文件,而是需要先下载、修改后再上传,这与百度网盘或ftp服务的使用体验颇为相似。

1、技术:OSS是对象存储;NAS是传统的NFS,即挂载共享文件夹;
2、使用方式:OSS使用阿里丰富的API,提供了PHP,Python,Java等多种语言的SDK;而NAS像访问磁盘一样不需要改任何程序,一般高IO带宽或高IOPS应用场景不建议使用NAS作为存储介质;
3、存储内容:OSS和NAS的存储内容基本类似,面向的都是图片、文档等静态文件的存储;对于零散的数据(如文本文件、办公文档、图片、视频、音频等)且有多区域或多用户共享或权限要求严格的需求可以使用NAS作为存储介质,且不影响整体交易类数据;
5、性能:系统组之前完成过OSS NAS性能测试,OSS性能不如NAS,可以通过断点续传上传文件/断点续传下载等方式提升性能。
6、集群访问:NAS文档中提到NFS 协议本身并没有提供Atomic Append语义的支持,因此可能会出现写覆盖、交叉、串行等异常现象;OSS的无此类问题,即集群文件共享功能。

对比项文件存储 NAS对象存储块存储
特点原有使用单机本地文件系统的应用无需修改,即可直接访问。提供高吞吐和高IOPS的同时,支持文件的随机读写和在线修改支持公网访问,一个低成本的海量共享存储空间,适合存储写入后较少修改的数据块级存储,可随机读写,类似物理硬盘,支持分区格式化并建立文件系统
应用场景主要应用于科学计算、容器数据持久化和企业在线生产应用的数据存储。如:AI计算、基因计算、药物计算、容器共享PV、日志数据持久化、CI/CD平台、云桌面数据文件共享等主要应用于基于对象API开发的互联网应用程序的数据存储。如:互联网业务的音视频存储、数据湖、云相册、个人/企业网盘类应用适用于OLTP数据库、NoSQL数据库等IO密集型的高性能、低时延业务场景
数据模型扁平化对象存储(Key-Value结构)文件系统树状结构(目录/子目录)
数据寻址全局唯一Bucket+Object键通过路径名逐级查找
访问模式上千个ECS或上万个容器,通过POSIX接口并发读取相同文件,随机读写数百万客户端通过SDK、RESTful并发读相同文件,追加写EBS是裸磁盘,挂载到ECS后不能被操作系统应用直接访问,需要格式化成文件系统(ext3、ext4、NTFS等)后访问。当不多于16台ECS实例同时访问一块云盘时,需要使用集群文件系统(例如,OCFS2、GFS2、Veritas CFS、Oracle ACFS和DBFS等),保障多实例间数据同步。
最低时延毫秒级(NFS或SMB方式访问)
微秒级(容器ACK通过CNFS方式访问
几十毫秒级微秒级
单实例最大吞吐20 GB/s2~100 Gbps
单个账号上传和下载最大吞吐在各个地域不同。
数GB/s
容量GiB~PiB无限制GiB~TiB
文件级别的授权支持支持不支持
数据存储方式目录树的组织形式扁平的文件组织形式需拆分数据到任意划分且大小相同的卷中
协议NFS和SMB协议HTTP/HTTPS协议标准虚拟块设备协议接口或NVMe协议接口
其他低延迟(<5ms)的随机读写
吞吐受限于网络带宽和协议开销
小文件操作性能优于OSS(如Git仓库场景)
高吞吐但延迟不稳定(50-200ms)
适合顺序读写(如视频流上传)
单对象上限5TB,但小文件性能差(需合并上传)
应用场景1、传统应用迁移
需要保持文件系统语义的ERP/OA系统
2、高性能计算
生物信息学分析(BWA等工具依赖POSIX)
3、开发环境
Docker Volume持久化存储(需-v /nfs/path:/container_path)
1、非结构化数据湖
存储图片/视频等静态资源(配合CDN加速)
日志归档(生命周期自动转低频存储)
2、云原生应用
与Severless集成
3、跨区域同步
通过跨区域复制(CRR)实现异地容灾
建议热数据存NAS(频繁访问)冷数据存OSS(设置生命周期策略)