什么是块存储、文件存储、对象存储?

我们都知道,存储设备就是为数据提供空间。

U盘、硬盘和固态硬盘都是存储最终的存储设备。而块存储、文件存储和对象存储也可以简单地理解是不同类型的存储设备,它们是根据使用介质存储数据的手段或方法不同来划分的。

首先我们来看下块存储:

块存储提供的是不带文件系统裸磁盘,使用之前需先进行初始化。

我们比较常见的块存储形式是我们的Windows硬盘或手机存储空间,数据是按字节块来存储和访问的。

块存储使用时,文件系统在客户端,例如Windows系统,我们可以在Windows桌面查看我们存储的内容,但是对于硬盘里的内容和格式,我们是一无所知的,只有借助客户端的文件系统才能查看。

通俗的来说,**在块存储中,数据就像每个瓜子一样,堆放在存储仓里。瓜子就是每个数据块,这个存储舱就是磁盘。**块存储只关心瓜子的进来和出去,不关心瓜子粒之间的关系和用途。

下面我们来看下什么是文件存储:

**文件存储的存储端带有文件系统,**我们常见的NAS存储都是文件存储设备。

这些文件存储设备除了磁盘外还带有文件系统,用户直接通过存储端的文件系统就能调用存储资源。

文件存储一般体现形式是目录和文件(比如C:\User\ProgramFiles\CommonFiles),数据以文件的方式存储和访问,按照目录结构进行组织。文件存储有自己的文件系统,对于每个客户端而言是一个统一的文件系统,可以同时供多个客户端使用,易于共享。

好比上面图中,数据像瓜子一样在一起组成了向日葵,再对应到不同的向日葵杆,要找到某个向日葵籽,先找到这个对应的向日葵杆,再找到这个向日葵,然后根据在这个向日葵上对应的位置找到这个瓜子。

相比于块存储,文件存储由于有自己的文件系统,**可以实现更高级的管理,可以很方便的共享,因此用途非常广泛。**比如常用的NFS、CIFS、ftp等都是基于文件存储的。但相比于块存储,文件存储读写速度相对于块存储要慢一点。

最后我们来看下对象存储:

块存储性能出色但是不能共享,文件存储可以共享但是速度又总是不让人满意。

作为不会做选择题的成年人,既想性能,还要实现共享,同时还要满足大规模扩展需求,所有后来就出现了对象存储。

对象存储一般体现形式是一个UUID(比如我们常见的网址https://new.qq.com/omn/20201119/20201119A0CEI01210.html),这个UUID是唯一性的,即使在全球也只有通过这一个UUID。

数据和元数据打包在一起作为一个整体对象存在一个超大池子里。用户想访问,只需能通过它的UUID,才能找到它。

好比上面图中,数据的葵花籽被做成了包装袋,每个包装袋都有一个唯一出厂条形码,但是找对应的对应的瓜子袋,只能通过唯一条形码找到对应的瓜子袋,但每一次都只能是一袋为单位。

对象存储端的文件系统就是采用这种哈希表-键值(可以理解为查字典,最多两层目录)这种方式来提高读写速度的。

对象存储就可以非常简单的扩展到超大规模,因此非常适合数据量大、增速又很快的视频、图像等,例如百度网盘、大数据存储;

相关推荐
Crazy Struggle16 天前
.NET 8.0 文档管理系统网盘功能的实现
文件存储·.net 8.0·文档管理系统
wusong9991 个月前
minio笔记之windows下安装使用
笔记·对象存储·minio
戴国进2 个月前
分布式对象存储minio
对象存储·oss
thanks2 个月前
Bond——大数据时代的数据交换和存储格式
大数据·对象存储
大小胖虎2 个月前
专业课笔记——(第十二章:文件的读写)
c语言·笔记·字符串·文件·文件存储·文件的读写
MinIO官方账号3 个月前
MinIO 网络与覆盖网络
linux·服务器·网络·安全·kubernetes·对象存储
NPE~3 个月前
文件系统小册(Fuse&Posix&K8s csi)【3 K8s csi】
云原生·容器·kubernetes·对象存储·csi·挂载
CTRA王大大5 个月前
【golang】动态生成微信小程序二维码实战下:golang 生成 小程序二维码图片 并通过s3协议上传到对象存储桶 | 腾讯云 cos
微信小程序·小程序·golang·对象存储·s3
黯然神伤8886 个月前
前端、后端上传文件到OSS,简明记录
java·前端·对象存储
繁依Fanyi6 个月前
Flutter Provider 使用指南详解
开发语言·javascript·git·flutter·缓存·对象存储·oss