分布式文件存储相关概念

分布式文件存储

1 常见专业术语

1.1 备份技术

出于数据恢复的目的而创建的一份额外的数据副本

分类:直接连接备份,网络连接备份, 脱局域网备份,脱服务器备份
在线备份,离线备份,近线备份

①冷备份

冷备份在执行操作时,服务器不再接受来自用户或应用对数据的更新,解决了在备份复制进行时,并发更新的问题。冷备份时间过长,服务器不再接受任何更新操作

②热备份

用户和应用正在更新数据时,系统也可以进行备份,存在完整性问题;每一个文件或数据库实体都需要作为一个完整的,一致的版本进行备份

③文件级备份

文件级备份: 使用服务器操作系统和文件系统来备份文件 优点是很容易恢复某个或某些特定的文件,在进行备份时,操作系统和应用程序可以继续访问文件,但是所需时间较长,比如备份大量的小文推荐,操作系统和文件及目录元数据的访问开销很高,"打开文件"的备份无法解决

④块级备份

映像级备份,完全绕过文件和文件系统,将数据作为裸磁盘块,从磁盘上直接读取数据,不关心有多少文件,也不深入道文件内部,按块在磁盘上的次序读取,而不是在文件中的次序,所以不会因为读取有大量分片的文件数据时因寻道而导致的性能下降。块级备份通常有内建的即时快照支持,可以从根本上解决 "打开文件"问题, 通过执行特殊的操作将运行着的应用程序和它们在服务器内存中的数据进入一致状态,冲刷到磁盘,然后做一个快照,备份过程从快照而不是实际卷上读取改变的数据块,备份完成后删除快照

⑤双活

主备数据中心之间一般有热备、冷备、双活三种备份方式。

热备的情况下,只有主数据中心承担用户的业务,在不停机情况下对主数据中心进行备份。

冷备的情况下,也是只有主数据中心承担业务,在停机情况下对主数据中心进行备份。

双活是觉得备用数据中心只做备份太浪费了,所以让主备两个数据中心都同时承担用户的业务,此时,主备两个数据中心互为备份,并且进行实时备份。一般来说,主数据中心的负载可能会多一些,比如分担60~70%的业务,备数据中心只分担40%~30%的业务 。

⑥两地三中心

两地 = 本地 + 异地

三中心 = 本地中心 + 本地容灾中心 +异地备份中心

1.2 快照技术

快照技术是一种在存储系统中创建数据备份的方法。它可以记录存储设备上特定时间点的数据状态,并且能够在需要时恢复到该时间点的状态。快照技术通过记录数据的变化,而不是复制整个数据集,来实现高效的备份和恢复操作。快照技术可以帮助用户在发生数据丢失、数据损坏或其他故障时,快速恢复到之前的数据状态。

1.3 连续数据保护技术

连续数据保护技术是一种数据备份和恢复的方法,它通过实时记录数据的变化来提供更加精确和及时的数据保护。与传统的周期性备份不同,连续数据保护技术可以在每次数据变化时立即备份数据,从而减少数据丢失的风险。连续数据保护技术通常使用增量备份的方式来记录数据的变化,并且可以提供灵活的恢复点选择,使用户可以选择任意时间点进行数据恢复。

1.4 RAID技术

RAID(Redundant Array of Independent Disks 磁盘阵列)技术是一种通过将多个独立的硬盘组合起来,以提供更高的数据可靠性和性能的存储技术。RAID技术通过将数据分布在多个硬盘上,并使用冗余校验信息来保护数据的完整性。不同的RAID级别提供不同的数据保护和性能特性,例如RAID 0提供了高性能但没有冗余保护,RAID 1提供了数据冗余但没有性

1.5 多路径技术

多路径技术是一种在存储系统中使用多个独立的路径来提供更高的可靠性和性能的方法。多路径技术可以通过使用多个网络连接、多个存储控制器或多个存储设备来实现。当一个路径发生故障时,多路径技术可以自动切换到另一个可用的路径,从而保证存储系统的连续性和可用性。多路径技术还可以通过同时使用多个路径来提高存储系统的性能,例如通过并行传输数据或负载均衡来提供更高的吞吐量和响应性能。

1.6 虚拟化技术

虚拟化技术是一种将物理资源抽象为虚拟资源的方法,以提供更高的资源利用率和灵活性。在存储领域,虚拟化技术可以将多个物理存储设备组合成一个逻辑存储池,并为用户提供统一的存储接口。虚拟化技术可以隐藏底层存储设备的细节,使用户可以更方便地管理和使用存储资源。虚拟化技术还可以提供诸如快照、克隆、压缩、去重等高级功能,以提高存储效率和数据管理的灵活性。

1.7 数据复制与容灾

1.7.1 恢复时间目标(RTO,最大容忍服务停滞时间)

恢复时间目标(RTO: Recovery Time Objective),其以应用为出发点,即应用的恢复时间目标,主要指的是所能容忍的应用停止服务的最长时间,也就是从灾难发生到业务系统恢复服务功能所需要的最短时间周期。RTO是反映业务恢复及时性的指标,表示业务从中断到恢复正常所需的时间。RTO的值越小,代表容灾系统的数据恢复能力越强;

1.7.2 恢复点目标(RPO,最大容忍数据丢失量)

恢复点目标(RPO: Recovery Point Objective),RPO是反映恢复数据完整性的指标,其以数据为出发点,主要指的是业务系统所能容忍的数据丢失量

1.7.3 主动/被动与双活

①主动/被动:

  • 数据备份的一种方式,数据主要存储在主数据中心中,备用数据中心只是在主数据中心出现故障或停机的时候起到备份的作用。而在主数据中心出现故障的期间,备用数据中心并不会被用于实时的数据访问或应用使用。

②双活:两个数据中心承担业务。

  • 双活是觉得备用数据中心只做备份太浪费了,所以让主备两个数据中心都同时承担用户的业务,此时,主备两个数据中心互为备份,并且进行实时备份。一般来说,主数据中心的负载可能会多一些,比如分担6070%的业务,备数据中心只分担40%30%的业务 。

【转】一张秒懂的单机、集群、热备、硬盘阵列
在这里插入图片描述

1.8 桶的对象查询

对象:对象是存储桶的基本单元,可以是任何类型的文件或数据。每个对象都有一个唯一的键(key)用于标识和检索。

①生命周期管理(Lifecycle Management)

生命周期管理是一种自动化管理对象的策略。通过定义规则和条件,可以自动将对象从存储桶中转移到其他存储层级。如:低频访问存储(Infrequent Access Storage)、归档存储(Archive Storage)等,以优化存储成本和性能。

②碎片管理(Fragmentation Management)

当对象被修改或被删除时,可能会导致存储桶中存在不连续的空间。碎片管理可以通过重新组织或压缩存储桶来优化存储空间的利用率。

③标签(Tags)

标签是用于对存储桶中的对象进行分类和组织的元数据。可以为对象添加自定义标签,例如项目名称、所有者、过期日期等,以便更方便地管理和查询对象。

1.9 其他

①workflow

在文件存储中,workflow(工作流程)指的是一系列的操作和步骤,用于管理文件的创建、存储、访问、共享和处理过程。它描述了在文件从创建到最终处理和归档的整个过程中所涉及的任务和活动。

  1. 创建文件
  2. 选择存储位置
  3. 存储文件
  4. 组织和分类
  5. 访问和共享
  6. 协作和版本控制
  7. 处理和修改
  8. 审查和批准
  9. 存档和归档
  10. 销毁或删除

② EOS(Enterprise Object Storage)、OSG、XMS、3DS

  1. EOS

EOS 是 Enterprise Object Storage 的缩写,意思是企业级对象存储。它是一种用于存储和管理大规模数据的存储解决方案。对象存储是一种不同于传统文件系统或块存储的存储模型,它将数据存储为独立的对象,每个对象都有一个唯一的标识符(通常是一个URL)。

  1. OSG

OSG(Open Storage Gateway):开放存储网关,是一种用于连接本地存储和云存储的软件解决方案。OSG 提供了统一的接口和协议,使得应用程序可以无缝地访问本地存储和云存储,并实现数据的高可用性和灵活性。

  1. XMS

XMS(eXtensible Metadata System):可扩展元数据系统,是一种用于管理和存储元数据的框架。XMS 可以帮助组织有效地管理和检索大量的元数据,以支持数据管理、数据分析和数据治理等任务。它提供了灵活的架构和接口,可以根据需要扩展和定制。

  1. 3DS

3立体数据管理系统

③ETag、Key、MetaData、Bucket、Grok等

  1. ETag(Entity Tag):ETag是HTTP协议中用于标识资源的一种机制。它是一个由服务器生成的唯一标识符,用于判断资源是否发生变化。当客户端请求某个资源时,服务器会将该资源的ETag值返回给客户端。客户端可以在后续的请求中使用该ETag值来验证资源是否发生了变化,从而避免不必要的数据传输。
  2. Key(键):在存储系统中,Key是用于唯一标识一个存储对象的字符串。它类似于数据库中的主键,用于在存储系统中定位和访问特定的对象。Key通常是由用户指定的,可以根据业务需求来设计。
  3. Bucket(存储桶):Bucket是一种用于组织和管理存储对象的容器。它类似于文件系统中的文件夹,可以包含多个存储对象(如文件)。Bucket通常是由存储系统提供商创建的,用户可以在其中创建、删除和管理存储对象。
  4. Metadata(元数据):元数据是描述存储对象的数据。它包含了关于对象的属性信息,如大小、创建时间、修改时间等。元数据通常与存储对象一起存储,并且可以通过存储系统的API来获取和修改。
  5. ACL(Access Control List):ACL是一种访问控制机制,用于定义存储对象的访问权限。通过ACL,用户可以设置存储对象的读写权限,以控制谁可以访问和修改对象。
  6. CDN(Content Delivery Network):CDN是一种分布式网络架构,用于加速静态内容的传输和分发。CDN通过将内容缓存到离用户更近的节点上,减少了数据传输的延迟,提高了用户的访问速度和体验。
  7. Replication(复制):复制是一种数据保护和容灾技术,通过将数据复制到多个存储节点上,提高数据的可靠性和可用性。当一个节点发生故障时,可以从其他节点获取数据,确保数据的持久性和可恢复性。
  8. Grok 是一种用于解析和匹配文本数据的表达式。它是由 Elasticsearch 社区开发的一种强大的模式匹配引擎,常用于日志分析和数据处理中。
# 以下是一个使用 Grok 表达式解析 Apache 访问日志的示例:
%{
    
    IP:client} %{
    
    USER:ident} %{
    
    USER:auth} \[%{
    
    HTTPDATE:timestamp}\] "%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" %{
    
    NUMBER:response} %{
    
    NUMBER:bytes} "(?:%{URI:referrer}|-)" "%{DATA:agent}"

ETag(实体标签)与Version(版本控制)的区别:

  1. ETag:实体标签
    • ETag是一个由服务器生成的唯一标识符,用于标识资源的特定版本。
    • ETag的生成方式可以是根据资源内容的hash算法,也可以是基于其他规则生成。
    • 当客户端请求某个资源时,服务器会将该资源的ETag值返回给客户端。
    • 客户端可以在后续的请求中使用该ETag值来验证资源是否发生了变化,从而避免不必要的数据传输。
    • ETag通常适用于对资源进行细粒度的控制或验证,例如缓存机制的实现。
  2. Version:版本控制
    • 版本控制通过维护资源的不同版本,用于标识资源的不同状态或修改历史。
    • 版本控制可以基于时间戳、递增的版本号或其他机制来描述资源的不同版本。
    • 每当资源发生变化时,都会创建一个新的版本,并记录相应的变更信息。
    • 客户端可以根据资源的版本号或历史记录来获取或回滚到特定的版本。
      版本控制通常适用于对资源进行完整的历史记录和管理,例如团队协作或代码版本管理系统。

ETag和版本控制的主要区别在于生成方式和应用场景:

  • ETag是基于资源内容生成,适用于对资源进行细粒度的控制和验证,可以用于缓存、条件请求等;而版本控制是基于资源的变更历史生成,适用于管理和跟踪资源的不同版本和变化。
  • ETag主要用于控制缓存和优化网络传输等方面,而版本控制主要用于团队协作、代码管理等需要完整历史记录和版本回滚的场景。

④HCI、SDS、RAID、SAN

  1. HCI

HCI(Hyper-Converged Infrastructure):超融合基础架构,是一种将计算、存储和网络功能整合到一台服务器中的架构。HCI 提供了简化的管理和扩展,以及高度集成的计算和存储资源。

  1. SDS

SDS(Software-Defined Storage):软件定义存储,是一种通过软件来实现存储功能的架构。SDS 可以将存储功能与硬件解耦,提供灵活性、可扩展性和成本效益。

  1. RAID

RAID(Redundant Array of Independent Disks):独立磁盘冗余阵列,是一种通过将多个磁盘组合在一起来提供数据冗余和性能增强的技术。RAID 可以提供高可靠性和高性能的存储解决方案。

  1. SAN

SAN(Storage Area Network):存储区域网络,是一种高速网络架构,用于连接存储设备和服务器。SAN 提供了高带宽、低延迟的存储连接,支持多台服务器同时访问共享存储资源。

2 常见的分布式文件系统

2.1 GFS(Google File System)

​ Google GFS文件系统,一个面向大规模数据密集型应用的、可伸缩的分布式文件系统。GFS虽然运行在廉价的普遍硬件设备上,但是它依然了提供灾难冗余的能力,为大量客户机提供了高性能的服务。GFS是一个为Google内部设计的大数据分布式存储框架,由2003年Google发表的论文提出,遗憾的是Google并没有将其开源,但是基于GFS的设计理念,诞生了很多优秀的开源类GFS文件系统。

2.2 HDFS(Hadoop Distributed File System)

HDFS是Hadoop(Apache开源项目)的专用文件系统, Hadoop是一个大数据计算框架,它允许使用简单的编程模型跨计算机集群分布式处理大型数据集,是Google发表的MapReduce算法的实现,HDFS是GFS的开源实现。

2.3 Ceph

Ceph是加州大学Santa Cruz分校的Sage Weil(DreamHost的联合创始人)专为博士论文设计的新一代自由软件分布式文件系统,并使用Ceph完成了他的论文。Ceph的主要目标是设计成基于POSIX的没有单点故障的分布式文件系统,使数据能容错和无缝的复制。与其它分布式文件系统相比,ceph 性能最高,因为其使用C++编写而成。 由于 ceph 使用 btrfs 文件系统, 而btrfs 文件系统需要 Linux 2.6.34 以上的内核才支持。自2007年毕业之后,Sage开始全职投入到Ceph开 发之中,使其能适用于生产环境,经过十几年的发展,Ceph已经趋向于成熟。

2.4 Lustre

Lustre是一个开源、分布式并行文件系统软件平台,具有高可扩展、高性能、高可用等特点。Lustre的构造目标是为大规模计算系统提供一个全局一致的POSIX兼容的命名空间,这些计算系统包括了世界上包含最强大的高性能计算系统。它支持数百PB数据存储空间,支持数百GB/s乃至数TB/s并发聚合带宽。

2.5 GridFS

GridFS 是MongDB的分布式存储系统,用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片、音频、视频等)。GridFS 也是文件存储的一种方式,但是它是存储在MonoDB的集合中。GridFS 可以更好的存储大于16M的文件。GridFS 会将大文件对象分割成多个小的chunk(文件片段),一般为256k/个,每个chunk将作为MongoDB的一个文档(document)被存储在chunks集合中。GridFS 用两个集合来存储一个文件:fs.files与fs.chunks。每个文件的实际内容被存在chunks(二进制数据)中,和文件有关的meta数据(filename,content_type,还有用户自定义的属性)将会被存在files集合中。

2.6 MogileFS

MogileFS是一个开源的分布式文件存储系统,是由LiveJournal旗下的Danga Interactive公司开发。目前使用MogileFS的公司非常多,如日本排名先前的几个互联公司以及国内的Yupoo(又拍)、digg、豆瓣、大众点评、搜狗等,分别为所在的组织或公司管理着海量的图片。以大众点评为例,用户全部图片均有MogileFS存储,数据量已经达到500TB以上

2.7 FastDFS(Fast Distributed File System)

FastDFS是一个开源的分布式文件系统,由纯C编写,性能很高。她对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

2.8 TFS(Taobao File System)

TFS是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,主要针对海量的非结构化数据,它构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问。TFS为淘宝提供海量小文件存储,通常文件大小不超过1M,满足了淘宝对小文件存储的需求,被广泛地应用在淘宝各项应用中。它采用了HA架构和平滑扩容,保证了整个文件系统的可用性和扩展性。同时扁平化的数据组织结构,可将文件名映射到文件的物理地址,简化了文件的访问流程,一定程度上为TFS提供了良好的读写性能。

2.9 NFS(Network File System)

NFS 是一种分布式文件系统协议,用于在网络上共享文件和目录。它允许远程计算机通过网络访问和操作共享的文件,就像它们是本地文件一样。NFS 是一个客户端-服务器协议,其中服务器维护存储文件的文件系统,而客户端可以通过网络挂载和访问这些文件系统。NFS 在许多操作系统和存储设备上都得到广泛支持,常用于共享文件和数据的场景。

3 常见存储服务软件介绍

3.1 对象存储

①S3(Simple Storage Service)

S3(Simple Storage Service)是亚马逊网络服务(Amazon Web Services,AWS)提供的一种高度可扩展的对象存储服务。它被广泛用于存储和检索各种类型的数据,包括文本文件、图像、视频、数据库备份、应用程序日志等。

S3特性:

  1. 对象存储
  2. 高可扩展性
  3. 数据持久性和可靠性
  4. 数据安全性
  5. 存储桶和键
  6. 数据访问和传输
  7. 数据生命周期管理
  8. 版本控制
  9. 事件

参考文章:https://blog.csdn.net/qq_37862148/article/details/113999206

猜你喜欢

转载自blog.csdn.net/weixin_45565886/article/details/130878940