存储相关基本知识:oss\s3\文件存储\块存储\

存储

常见的存储格式

  • 文件存储会以文件和文件夹的层次结构来整理和呈现数据;
  • 块存储会将数据拆分到任意划分且大小相同的卷中;
  • 对象存储会管理数据并将其链接至关联的元数据。
img

DAS和SAN是基于物理块的存储方式,而NAS是基于文件的存储方式。

  • 在DAS和SAN中,存储资源就像一块一块的硬盘,直接挂载在主机上,我们称之为块存储
  • 而在NAS中,呈现出来的是一个基于文件系统的目录架构,有目录、子目录、孙目录、文件,我们称之为文件存储
img

文件存储

数据会以单条信息的形式存储在文件夹中,正如您将几张纸放入一个文件夹中一样。当您需要访问该数据时,您的计算机需要知道相应的查找路径。存储在文件中的数据会根据数量有限的元数据来进行整理和检索,这些元数据会告诉计算机文件所在的确切位置。

在这里插入图片描述

操作对象:文件和文件夹

存储协议:NFS、SAMBA(SMB)、POSIX

接口命令:以NFS为例,文件相关的接口命令包括:READ/WRITE/CREATE/REMOVE/RENAME/LOOKUP/ACCESS 等;文件夹相关的接口命令包括:MKDIR/RMDIR/READDIR 等

存储架构:NAS

块存储

块存储会将数据拆分成块,并单独存储各个块。每个数据块都有一个唯一标识符,所以存储系统能将较小的数据存放在最方便的位置。这意味着有些数据可以存储在 Linux环境中,有些则可以存储在 Windows 单元中。

由于块存储不依赖于单条数据路径(和文件存储一样),因此可以实现快速检索。每个块都独立存在,且可进行分区,因此可以通过不同的操作系统进行访问,这使得用户可以完全自由地配置数据。它是一种高效可靠的数据存储方式,且易于使用和管理。它适用于要执行大型事务的企业和部署了大型数据库的企业。这意味着,需要存储的数据越多,就越适合使用块存储。

块存储有一些缺点。块存储的成本高昂。它处理元数据的能力有限。

操作对象:磁盘

存储协议:SCSI、iSCSI、FC

接口命令:以SCSI为例,主要有Read/Write/Read Capacity

存储架构:DAS、SAN

对象存储

对象存储,也称为基于对象的存储,是一种扁平结构,其中的文件被拆分成多个部分并散布在多个硬件间。在对象存储中,数据会被分解为称为“对象”的离散单元,并保存在单个存储库中,而不是作为文件夹中的文件或服务器上的块来保存

img

操作对象:对象(Object)

存储协议:S3、Swift

接口命令:主要有PUT/GET/DELETE等,你不能直接打开/修改文件,只能先下载、修改,再上传文件

存储架构:去中心化框架

在这里插入图片描述

基本概念

对象存储呈现出来的是一个“桶”(bucket),你可以往“桶”里面放“对象(Object)”。这个对象包括三个部分:Key、Data、Metadata。

存储桶(bucket)

我们的数据都是存储在AWS 的存储桶中,我们可以把桶理解为磁盘分区,不过它是由一个桶名(字符串)唯一标识,即你不能创建别人已经创建过的桶。

在这里插入图片描述

对象
Key:可以理解文件名,对象的全局唯一标识符(UID)

Key是用于检索对象,服务器和用户不需要知道数据的物理地址,也能通过它找到对象。这种方法极大地简化了数据存储

例如这个云服务key,看上去就是一个URL网址:

在这里插入图片描述

Metadata 元数据

元数据有点类似数据的标签,标签的条目类型和数量是没有限制的,可以是对象的各种描述信息。

  • 元数据的好处,可以大大加快对象的排序,还有分类和查找。
  • 上传对象后,将无法修改对象元数据。它是那种把整个数据取出来,修改,再放回去的模式,不支持直接在存储上修改,哪怕只是加一行数据,都不行。所以,它不适合存储需要频繁查写的数据(例如关系型数据库的数据)。

举个例子,如果对象是一张人物照片,那么元数据可以是姓名、性别、国籍、年龄、拍摄地点、拍摄时间等。

在传统的文件存储里,这类信息属于文件本身,和文件一起封装存储。而对象存储中,元数据是独立出来的,并不在数据内部封装。

Data 数据:也就是用户数据本体
架构

对象存储系统可以是一个提供海量存储服务的分布式架构。

  • 容量无限大,对象存储的所有业务、存储节点采用分布式集群方式工作,各功能节点、集群都可以独立扩容。
  • 数据安全可靠:对象存储采用了分布式架构,对数据进行多设备冗余存储(至少三个以上节点),实现异地容灾和资源隔离。
  • 使用方便:除了可以使用网页(基于http)直接访问之外,大部分云服务提供商都有自己的图形化界面客户端工具,用户存取数据就像用网盘一样。

在这里插入图片描述

常见的对象存储系统

Ceph:是一个分布式对象存储系统,具有高可用性、可扩展性和自修复性。
GlusterFS:是一个可扩展的分布式文件系统,旨在提供高可用性、可伸缩性和数据可靠性。
Sheepdog:是一个开源的对象存储系统,旨在为虚拟机提供可靠的存储服务。
Lustre:是一个高性能的对象存储系统,用于大规模并行计算。
Swift:是一个用于OpenStack的分布式对象存储系统,具有高可用性、可扩展性和自修复性。
Cinder:是一个用于OpenStack的块存储服务,提供高性能、低延时的块存储服务。
TFS:是一个分布式的对象存储系统,用于构建大规模的共享访问应用。
HDFS:是一个分布式文件系统,是大数据处理的重要基础设施。
MooseFS:是一个可扩展的分布式文件系统,具有高可用性、可伸缩性和数据可靠性。
FastDFS:是一个轻量级的分布式文件系统,用于共享访问、备份和镜像等应用。
MinIO:是一个高性能的分布式对象存储系统,用于云存储和共享访问等应用。中文文档:https://www.minio.org.cn/docs/minio/kubernetes/upstream/
MogileFS:是一个分布式的对象存储系统,具有高可用性、可扩展性和自修复性。

JuiceFS 是一款面向云原生设计的高性能分布式文件系统,介绍文档:https://juicefs.com/docs/zh/community/introduction/

go 操作s3

https://www.cnblogs.com/Yemilice/p/11490918.html
在这里插入图片描述

对象存储服务(Object Storage Service)

对象存储,也称为“面向对象的存储”,现在很多云厂商,也直接称之为“云存储”。

不同的云厂商对它有不同的英文缩写命名。例如阿里云把自家的对象存储服务叫做OSS,华为云叫OBS,腾讯云叫COS,七牛叫Kodo,百度叫BOS,网易叫NOS……五花八门,反正都是一个技术。

Amazon S3服务

Amazon S3(Simple Storage Service)对象存储出现得比较早且使用简单的RESTful API,于是成为了对象存储服务(Object Storage Service,OSS)业内的标准接口规范。它是一种面向 Internet 的存储服务,将数据作为对象存储在存储区中。一个对象由一个文件和可选的描述该文件的任何元数据组成。使用SDK的访问服务

用户文档:https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/Welcome.html

在S3里面实质上是没有目录和文件夹的概念,即目录概念实质只是对象的前缀,并不存在实体。

AliyunOSS服务

阿里云对象存储OSS,简单地说就是我们花钱在阿里购买一块存储空间,然后我们就可以将图片、音频、视频等各种文件资源存储在对象存储OSS服务器上。接着对象存储OSS服务器就可以供有权限的人员上传、下载、删除这些文件

参考文档:https://help.aliyun.com/product/31815.html

python SDK:https://help.aliyun.com/document_detail/32025.html?spm=a2c4g.32006.0.0

API文档:https://aliyun-oss-python-sdk.readthedocs.io/en/latest/api.html

数据以对象(Object)的形式存储在OSS的存储空间(Bucket )中。如果要使用OSS存储数据,您需要先创建Bucket,并指定Bucket的地域、访问权限、存储类型等属性。创建Bucket后,您可以将数据以Object的形式上传到Bucket,并指定Object的文件名(Key)作为其唯一标识。

OSS以HTTP RESTful API的形式对外提供服务,访问不同地域需要不同的访问域名(Endpoint)。当您请求访问OSS时,OSS通过使用访问密钥(AccessKey ID和AccessKey Secret)对称加密的方法来验证某个请求的发送者身份

  • 存储空间(Bucket)

    存储空间是用户用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。存储空间具有各种配置属性,包括地域、访问权限、存储类型等。用户可以根据实际需求,创建不同类型的存储空间来存储不同的数据。

  • 对象

    对象是OSS存储数据的基本单元,也被称为OSS的文件。和传统的文件系统不同,对象没有文件目录层级结构的关系。对象由元信息(Object Meta),用户数据(Data)和文件名(Key)组成,并且由存储空间内部唯一的Key来标识。对象元信息是一组键值对,表示了对象的一些属性,比如最后修改时间、大小等信息,同时用户也可以在元信息中存储一些自定义的信息。

  • 对象名称

    在各语言SDK中,ObjectKey、Key以及ObjectName是同一概念,均表示对Object执行相关操作时需要填写的Object名称。例如向某一存储空间上传Object时,ObjectKey表示上传的Object所在存储空间的完整名称,即包含文件后缀在内的完整路径,如填写为abc/efg/123.jpg。

  • 地域

    Region表示OSS的数据中心所在物理位置。用户可以根据费用、请求来源等选择合适的地域创建Bucket。一般来说,距离用户更近的Region访问速度更快。

  • 访问域名

    Endpoint表示OSS对外服务的访问域名。OSS以HTTP RESTful API的形式对外提供服务,当访问不同的Region的时候,需要不同的域名。通过内网和外网访问同一个Region所需要的Endpoint也是不同的。例如杭州Region的外网Endpoint是oss-cn-hangzhou.aliyuncs.com,内网Endpoint是oss-cn-hangzhou-internal.aliyuncs.com。

  • 访问密钥

    AccessKey简称AK,指的是访问身份验证中用到的AccessKeyId和AccessKeySecret。OSS通过使用AccessKeyId和AccessKeySecret对称加密的方法来验证某个请求的发送者身份。AccessKey ID用于标识用户;AccessKey Secret是用户用于加密签名字符串和OSS用来验证签名字符串的密钥,必须保密。

存储空间管理(Bucket)

对象管理(Object)

访问控制
验证中用到的AccessKeyId和AccessKeySecret。OSS通过使用AccessKeyId和AccessKeySecret对称加密的方法来验证某个请求的发送者身份。AccessKey ID用于标识用户;AccessKey Secret是用户用于加密签名字符串和OSS用来验证签名字符串的密钥,必须保密。

存储空间管理(Bucket)

对象管理(Object)

访问控制

  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值