01数据存储
块、文件、对象是三种以不同的方式来保存、整理和呈现数据的存储格式。这些方式各有特点和限制,并不能绝对说某一种存储格式就优于另一种,而要根据使用场景适当地进行选择,以达到性能、安全性、可靠性、用户体验、成本之间的平衡。
02块存储、文件存储、对象存储
块存储
块存储是一种用于将数据存储成块的技术。这些块随后作为单独的部分存储,每个部分都有一个唯一的标识符,所以存储系统能将较小的数据存放在最合适的位置。对于需要快速、高效和可靠的数据传输的计算场景,开发人员倾向于使用块存储。
块存储是以一种裸磁盘的方式给服务器或云主机使用,对于块存储的访问需要通过块驱动程序来实现,一般需要先格式化成某种文件系统才能使用,传统的 SAN 和 DAS 都使用的块存储。
文件存储
文件存储也称为文件级或基于文件的存储,是一种用于组织和存储数据的分层存储方法。换言之,数据存储在文件中,文件被组织在文件夹中,文件夹则被组织在目录和子目录的层次结构下。
对象存储
对象存储通常称为基于对象的存储,是一种用于处理大量非结构化数据的数据存储架构。这些数据无法轻易组织到具有行和列的传统关系数据库中,或不符合其要求。具体示例包括PDF、照片、音频、视频、网页以及其他类型的媒体和 Web 内容(文本或非文本)。
03 三种存储的优缺点
块存储
优点
快速查找:大部分块存储技术都可以通过检索内存中的指令来查找数据,从而使数据的查找速度更快。
节约存储空间:如果将数据存储在块存储系统中,系统将会将数据块分成更小的块,从而降低整个系统的存储空间,以节约存储成本。
易于管理:块存储技术可以通过内存中的指令来实现对数据的读写,从而可以根据需要对数据进行分类、排序和筛选等操作,从而更加方便地管理和查找数据。
更好的可靠性:块存储技术可以使用更小的硬盘驱动器,从而可以降低硬盘的故障率,以及减少对硬盘的维护和更频繁的数据读写操作。
缺点
采用 SAN 架构组网,需额外购买光纤通道卡和光纤交换机,成本高昂。
不同主机以及不同操作系统的主机间难以实现数据共享。
文件存储
优点
简单:文件存储是在计算机硬盘驱动器或 NAS 设备上组织文件和文件夹的最简单、最熟悉和最直接的方法。只需命名文件,用元数据进行标记,并将它们存储在目录和子目录层次结构下的文件夹中即可。不需要为了访问数据而编写应用或代码。
文件共享:文件存储是在局域网 (LAN) 内集中和共享文件的理想选择。网络上具有适当权限的任何计算机都可轻松访问存储在 NAS 设备上的文件。
常用协议:文件存储使用常见的文件级协议,如服务器消息块 (SMB)、通用互联网文件系统 (CIFS) 或网络文件系统 (NFS)。如果您使用 Windows 或 Linux 操作系统,那么,SMB/CIFS 和 NFS 等标准协议支持您通过局域网 (LAN) 向基于 Windows 或基于 Linux 的服务器读写文件。
数据保护:将文件存储在连接到 LAN 的单独存储设备上,可以在网络计算机出现故障时提供一定程度的数据保护。基于云的文件存储服务可以将数据文件复制到分布于多个地理位置的数据中心,从而提供额外的数据保护和灾难恢复能力。
经济实惠:使用 NAS 设备的文件存储有助于将文件从昂贵的计算硬件转移到更便宜的连接 LAN 的存储设备上。此外,如果您选择订购云文件存储服务,就可以消除本地硬件升级成本以及相关的持续维护和运营成本。
缺点
数据的传输、读写速度慢
对象存储
优点
可扩展性:无限规模伸缩可能是基于对象的数据存储最显著的优势。可以将对象,即(任意数量的)独立数据单元,存储在服务器等存储设备内的扁平结构数据环境中。只需将更多设备/服务器并行添加到对象存储器集群,即可进行额外处理,并支持视频或图像等大型文件所需的更高吞吐量。
降低复杂性:包含文件夹和目录的分层文件系统带来的复杂性,可以由对象存储器解决。因为无需浏览文件夹、目录或复杂的层次结构,所以降低了性能延迟的可能性,并提高了检索数据的效率。这样一来就可以提高性能,特别是在管理大量数据时。
可用性:可以配置对象存储系统,以便其复制内容。如果集群内的某个磁盘出现故障,则可以使用复制磁盘,确保系统继续运行,不会中断或性能下降。可以在节点和集群内以及在分布式数据中心之间复制数据,以便在非现场甚至跨地理区域进行额外备份。
缺点
法修改对象,必须一次性完整地写入对象。
不能很好地与传统数据库搭配使用。
04应用场景
块存储:数据库、ETL、高性能计算、操作系统存储、启动卷
文件存储:跨多个计算实例共享文件
对象存储:不同对象(如图像、音频和视频)的大型、可扩展且持久的存储、灾难恢复和归档数据
05 如何使用
块存储
比如我们有一块单独的磁盘或者云盘,我们通过fdisk命令看一下:
1 >fdisk -l
2 >磁盘 /dev/vdb:500GB, 322122547200 字节,629145600 个扇
这时候磁盘还没有挂载,我们通过mount命令将磁盘挂载到系统的/home/apps目录下,这样就可以使用了。
1 > mount /dev/vdb /home/apps
2 >df -h
3 文件系统 容量 已用 可用 已用% 挂载点
4 /dev/vdb 500G 0G 500G 0% /home/apps
文件存储
磁盘在挂载之后,要想使用的话还需要先安装文件系统,我们通过mkfs来格式化:
1 > mkfs -t ext4 /dev/vdb
格式化完之后,我们使用mount命令进行挂载,挂载之后我们就可以对文件系统进行操作了。
1 > cd /home/apps/
2 > mkdir a b c d
3 > ls
4 a b c d
由于文件存储组织文件的方式是树状的,每次都需要递归遍历,因此如果文件所在目录比较深的话,查找速度会比较慢。
对象存储
对象存储是将数据以对象的形式存储在存储空间中,并赋予其唯一标识进行访问,有目录结构,但实际的存储方式还是扁平的,因此查找效率会很高。对象存储通常对外会提供一套 RESTFul API 供开发者使用,通过 PUT 来上传对象,GET 来获取对象。
上传:
1 PUT /ObjectName HTTP/1.1
2 Content-Length:ContentLength
3 Content-Type: ContentType
4 Host: 127.0.0.1Date: GMT
5 Date
6 Transfer-Encoding: chunked
获取:
1GET /ObjectName HTTP/1.1
2 Host: 127.0.0.1
3 Date: GMT Date
总结
块存储:存储读写快,不利于共享
文件存储:存储读写慢,利于共享
对象存储:存储读写快,利于共享
文章转载自:画心智能公众号