当代存储架构可以分为文件存储、块存储和对象存储。
一张表格了解三者的区别
文件存储 | 块存储 | 对象存储 | |
描述 | 网络上的文件夹 | 网络上的硬盘 | 网络上的文件传输url、文件夹或硬盘 |
应用场景 | 公司文件共享、文件归档备份等 | 以硬盘的形式为服务器、PC或虚拟机提供存储空间 | 大数据存储、云数据中心存储 |
数据组织形式 | inode+block | meta volume- data volume | key-value |
主流应用 | NAS、文件服务器 | SAN,云硬盘 | 分布式存储 |
协议/产品 | CIFS、NFS、Samba、FTP | IPSAN、FCSAN、Cinder | Ceph、Swift、GlusterFS |
文件系统维护 | 服务端 | 客户端 | 服务端 or 客户端 |
服务器端设备 | 单台x86通用设备、专用设备或多台服务器集群 | 单台x86通用设备、专用设备或多台级联设备 | 多台服务器集群 |
数据路径 | 客户端封装数据在CIFS/NFS/FTP协议中存储到服务器端的文件系统 | 客户端封装SCSI数据和指令到iSCSI、FC中传输到服务器端操作底层块设备 | 客户端数据切片、计算key值,根据冗余策略复制多副本或计算校验,存储到多台服务器上 |
注 | 对象存储只是数据组织形式,对用户也可以提供文件或块存储。三种存储并不是完全差集,而是互相有交集。 |
- 以客户端的角度用实例体会三种存储的区别
1.windows上访问CIFS共享(NAS)
可以看到就是网络路径上的一个文件夹,可以直接进行文件操作。文件系统的格式化已经在服务器端完成,不需要进行格式化操作就可以直接使用
通过samba可以在linux上搭建windows文件共享NAS,在这里不再赘述。贴上配置文件
[share]
path = /cifs/
valid users = test
browseable = yes
public = yes
writable = yes
注意要通过smbclient命令添加samba用户才能正常访问
2.windows上通过iSCSI使用块存储(SAN)
通过iscsi发起程序连接IP-SAN
连接成功后可以看到效果,就像给电脑新增加了一块硬盘,需要格式化之后才能够使用
在linux上使用targetcli可以搭建IP-SAN服务。具体过程不再赘述,贴上配置文件
3.windows上访问OpenStack的对象存储服务swift
可见可以通过http接口进行文件下载
通过http上传文件
可见swift的对象存储是通过url提供文件服务,并且文件系统是在服务器端进行维护,不需要在客户端进行格式化操作
一些总结
- 上述演示只是一些个例,不代表全部情况。比如对象存储也可以对客户端提供块服务或文件服务,不只是url的方式。
- 文件、块存储和对象存储并不是完全的差集,而是存在交集的。例如对象存储只是底层数据以对象的方式进行组织,上层也可以提供块存储服务、文件服务。
- 块存储可以给文件服务器进行扩容,也可以给分布式存储的一个节点扩容,应用场景很灵活。
- NAS文件系统在服务器上,而块存储需要客户端自己进行格式化操作。对象存储提供块存储服务时客户端进行格式化,提供文件服务或url服务端维护文件系统。
- 分布式存储本质上将多台服务器上的存储空间整合成了一个大的逻辑上的存储资源池,更加适合现在互联网的场景,由于灵活的扩展性,更加适合大容量存储的场景。主流的产品例如公有云领域阿里云的OSS,私有架构中的Ceph等。
- ServerSAN根据vikibon的定义,是一个整个多台服务器上的存储资源为一个大型资源池,同时具备易扩展、简便、易管理的特性。和分布式存储概念比较类似。
想了解ServerSAN可以点击http://www.chinastor.com/a/jishu/SAN/051IbR014.html进行了解