【云存储】SDS软件定义存储,数据存储的类型与技术方案(块/文件/对象,Ceph、RBD等)

【云存储】SDS软件定义存储,数据存储的类型与技术方案(块/文件/对象,Ceph、RBD等)

文章目录

声明:本文所有内容均来自互联网 & AIGC,无加密资料,引用已注明出处(见参考资料),侵删

1、分布式存储架构(软件定义存储SDS,超融合基础架构HCI)

云存储

  • 云存储,是一种云计算领域存储服务方式,底层构建在分布式存储基础之上,上层通过Internet形式提供存储服务,除具备分布式存储基础特性外,更兼具灵活性,通常由云厂商提供。
  • 公有云,私有云,混合云存储,本质上与本地存储类型一致,以产品的形式可以有以下三个存储分类,块存储,文件存储,对象存储
  • 存储技术与解决方案有分布式,集中式 。具体技术有RDB,Ceph,HDFS等等,下面也会详细介绍。

存储架构发展趋势:从集中式架构向分布式架构不断演进

  • 引用-重点看!, 存储市场按照存储架构可以分为传统企业级存储(TESS)、软件定义存储(SDS)、超融合基础架构(HCI),随着数据量增长及数据分析需求爆发,存储架构从传统的集中式存储向分布式演进,分布式存储的主要形式分为软件定义与超融合

  • 传统集中式存储架构演进

    DAS(直接连接存储):存储设备是通过电缆(通常是SCSI接口电缆)直接连到服务器的。

    NAS方式则全面改进了以前低效的DAS存储方式。它采用独立于服务器,使用网络连接存储专用文件服务器来连接存储设备,自形成一个网络。

    SAN是一个用在服务器和存储资源之间的、专用的、高性能的网络体系。

  • 分布式存储架构

    软件定义存储SDS:将存储硬件中的存储控制器功能抽出来放到软件上 ,包括卷管理、RAID、数据保护、快照和复制 等等。虚拟化和虚拟化和云技术的发展和成熟转变了数据中心的设计、建造、管理和运维方式,这种变革使软件定义存储越来越有吸引力。

    超融合架构HCI: 超融合基础架构除对计算、存储、网络等基础元素进行虚拟化外,通常还包括诸多IT架构管理功能多个单元设备可以通过网络聚合起来,实现模块的无缝横向扩展,形成统一资源池。

存储服务商

参考资料:12,345

2、存储类型(块存储,文件存储,对象存储)

参考资料:1, 23

块存储(硬盘裸盘, ssd, hdd, raw, qcow2)

  • 块存储提供的是不带文件系统裸磁盘 ,使用之前需先进行初始化。我们比较常见的块存储形式是我们的Windows硬盘或手机存储空间,数据是按字节来存储和访问的。
  • 块存储使用时,文件系统在客户端,例如Windows系统,我们可以在Windows桌面查看我们存储的内容,但是对于硬盘里的内容和格式,我们是一无所知的,只有借助客户端的文件系统才能查看
  • 由于块存储只负责数据读取和写入,因此具有有高带宽、低延迟的优势,但是扩展能力有限,适用于对响应时间要求高的系统。比如数据库、ERP等企业核心应用的存储等。DAS、SAN这两种存储设备于块存储类型。
  • 基于Block块的存储模式,两种常见存储方式:
    DAS(Direct Attch Storage), 直连主机存储方式
    SAN (Storage Area Netowrk),高速网络链接主机存储方式
  • 块存储不仅仅是直接使用物理设备,间接使用物理设备的也叫块设备,比如虚机创建虚拟磁盘。VMware、VirtualBox都可以创建虚拟磁盘,虚机创建的磁盘格式包括raw、qcow2等,这与主机使用的裸设备不一样,且有不同的应用场景。
  • 优点
  • 1、通过RAID与LVM等手段,对数据提供了保护(RAID可实现磁盘的备份和校验,LVM可以做快照);
  • 2、RAID将多块廉价的硬盘组合起来,构建大容量的逻辑盘对外提供服务,性价比高;
  • 3、写数据时,由于是多块磁盘组合成的逻辑盘,可以并行写入,提升了读写效率;
  • 4、很多时候块存储采用SAN架构组网,传输速率以及封装协议的原因,使得传输速度与读写速率得到提升。
  • 缺点:
  • 不利于不同操作系统主机间的数据共享,因为操作系统使用不同的文件系统,格式化完成后,不同文件系统间的数据是无法共享的。

文件存储(属性索引, ftp, nfs, smb)

  • 依附网络提供文件存储服务。文件存储也有软硬一体化的设备,用一台普通服务器/笔记本,只要安装上合适的操作系统与软件,就可以对外提供FTP与NFS服务。
  • 文件存储的存储端带有文件系统,我们常见的NAS存储都是文件存储设备。这些文件存储设备除了磁盘外还带有文件系统,用户直接通过存储端的文件系统就能调用存储资源。
  • 文件存储一般体现形式是目录和文件(比如C:\User\Program Files\Common Files),数据以文件的方式存储和访问,按照目录结构进行组织。文件存储有自己的文件系统,对于每个客户端而言是一个统一的文件系统,可以同时供多个客户端使用,易于共享。
  • 相比于块存储,文件存储由于有自己的文件系统,可以实现更高级的管理,可以很方便的共享,因此用途非常广泛。比如常用的NFS、CIFS、ftp等都是基于文件存储的。但相比于块存储,文件存储读写速度相对于块存储要慢一点。
  • 读写速率低,传输速率慢:以太网,上传下载速度较慢,另外读写操作都分布到单台服务器,与磁阵的并行写相比性能差距较大。
  • 主流应用:CephFS、HDFS、NFS、CIFS、Samba、FTP

对象存储(哈希索引, oss)

  • 块存储性能出色但是不能共享,文件存储可以共享但是速度又总是不让人满意;做为不会做选择题的成年人既想性能,还要实现共享,同时还要满足大规模扩展需求,所有就有了对象存储。
  • 对象存储一般体现形式是一个UUID(比如我们常见的网址xxx),这个UUID是唯一性的,即使在全球也只有通过这一个UUID。
  • 数据和元数据打包在一起作为一个整体对象存在一个超大池子里。用户想访问,只需能通过它的UUID,才能找到它
  • 对象存储端的文件系统就是采用这种哈希表-键值(可以理解为查字典,最多两层目录)这种方式来提高读写速度的 。对象存储就可以非常简单的扩展到超大规模,因此非常适合数据量大、增速又很快的视频、图像等,例如百度网盘、大数据存储。
  • 成本:数据库等追求高性能的应用更适合采用块存储。对象存储的成本比普通的文件存储还是较高。

三类存储的区别

  • 这三者的本质差别是使用数据的"用户"不同:
    块存储的用户是可以读写块设备的软件系统,例如传统的文件系统、数据库;
    文件存储的用户是自然人
    对象存储的用户则是其它计算机软件。
  • 引用

3、存储技术与解决方案(RDB,Ceph,HDFS等等)


参考资料:1, 2-ceph基础34, 5, 6

单机/集中式存储系统

  • 单机存储系统是单机存储引擎 (数据结构在机械磁盘、SSD等持久化介质上的实现)的一种封装 ,对外提供文件、键值、表格或者关系模型的存储服务。
  • 集中式存储相对与单机存储而言,存储系统中包含了更多组件,除了机头(控制器)、磁盘阵列(JBOD)和交换机等设备外,还有管理设备等辅助设备。

分布式存储系统

  • 分布式存储系统,是将分散独立的存储设备通过网络互联,系统关联,对外作为一个整体提供存储服务。
  • 设计原则参考CAP

HDFS (Hadoop Distributed File System)

  • 架构: 主-从架构
    特点: 高吞吐量和冗余存储
    劣势: 高延迟,更多适用于批处理作业

Ceph

  • Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。它是一个统一的存储系统,既支持传统的块、文件存储协议,例如SAN和NAS,也支持新兴的对象存储协议,如S3和Swift,这使得Ceph理论上可以满足时下一切主流的存储应用的要求。
  • 组件: Ceph OSD, Mon, MDS
    用途: 对象存储、块存储和文件系统
    挑战: 高复杂性,需要专业知识进行管理
  • Kubernetes 支持 Ceph 的块存储(Ceph RBD)和文件存储(CephFS)作为 Kubernetes 的持久存储后端。Kubernetes 自带 Ceph RBD 的 internal provisioner,可以配置动态提供,如果要使用 CephFS 作为动态存储提供,需要安装外置的 provisioner。
  • ceph结构
    LIBRADOS: 一个允许应用程序直接访问 RADO 的库,支持 C、C++、Java、Python、Ruby 和 PHP
    RADOSGW: 基于存储桶的 REST网关,兼容s3和Swift
    RBD: 一个负责任的,完全-分布式块设备,使用Linux内核cliont和QEMU/KVM驱动程序
    CEPHFS: 符合POSIX标准的分发文件系统,具有Linux内核客户端和对FUSE的支持
    RADOS: 由自我修复、自我管理、智能存储节点组成的可靠、自主、分布式对象存储

RBD (RADOS Block Device)

  • RBD(RADOSBlockDevice)指分布式块存储服务组件,是Ceph对外的三大存储服务组件之一。另外两个分别是CephFS以及Radosgw 。
  • 它允许用户在 Ceph 集群上创建、管理和使用虚拟块存储设备,类似于传统的硬盘分区或逻辑卷。这些虚拟块设备可以用于云计算环境中的虚拟机(例如 KVM、QEMU)作为虚拟磁盘,也可以直接挂载在物理服务器上作为块设备使用。
  • 上层应用访问RBD有两种途径:librbd以及krbd。其中librbd是基于librados的用户态接口库,而krbd是继承在GNU/Linux内核中的一个内核模块。通过librbd命令行工具,将RBD块设备映射为本地的一个块设备文件。

ceph 运维常用命令

bash 复制代码
# 镜像
ceph df   #查看集群使用状态
ceph health detail  #显示集群健康状态
rados -p [pool_name] ls #缓存对象
rbd -p [pool_name] map [img_name]  #挂载镜像
rbd -p [pool_name] unmap [img_name] #卸载RBD镜像
rbd ls -p  [pool_name] -l   #查看存储池内RBD镜像
rbd ls [pool_name]  #查看RBD镜像
rbd rm --pool [pool_name]--image [img_name] # 删除RBD镜像
rbd create [img_name] --size nM|G|T --pool [pool_name] --image-format 2 --image-feature layering # 创建RBD镜像
rbd status --pool [pool_name] --image [img_name] # 查看缓存状态
rbd status {pool-name}/{image-name} #缓存状态
rbd info [pool-name/]image-name #检索 RBD 镜像详情
rbd du [pool-name/]image-name #检索 RBD 镜像的调配磁盘使用量和实际磁盘使用量。
rbd resize [pool-name/]image-name --size nM|G|T #调整 RBD 镜像大小
rbd rm [pool-name/]image-name #删除 RBD 镜像
rbd cp [pool-name/]src-image-name [pool-name/] tgt-image-name #复制 RBD 镜像
rbd mv [pool-name/]src-image-name [pool-name/] new-image-name #重命名 RBD 镜像
rbd trash mv [pool-name/]image-name #将 RBD 镜像移到回收站中
rbd trash rm [pool-name/]image-name #从回收站中删除 RBD 镜像
rbd trash restore [pool-name/]image-name #从回收站中恢复 RBD 镜像
rbd trash ls [pool-name] #列出回收站中的所有 RBD 镜像
rbd fs fail  <fs_name> #允许快速删除文件系统(以进行测试)或快速关闭文件系统和MDS守护程序
ceph fs set <fs_name> joinable false #允许快速删除文件系统(以进行测试)或快速关闭文件系统和MDS守护程序
ceph fs set <fs_name> joinable true #恢复cephfs集群

# 存储池
ceph osd pool create <poolname> pg_num pgp_num {replicated|erasure} #创建存储池
ceph osd pool ls [detail] #列出存储池
ceph osd pool lspools #列出存储池
ceph osd pool stats [pool name] #获取存储池的时间信息
ceph osd pool old-name new-name #重命名存储池
ceph osd pool get [pool name] size #获取存储池对象副本数默认为一主两倍3副本
ceph osd pool get [pool name] min_size #存储池最下副本数
ceph osd pool get [pool name] pg_num #查看当前pg数量
ceph osd pool get [pool name] crush_rule #设置crush算法规则,默认为副本池(replicated_rule)
ceph osd pool get [pool name] nodelete  #控制是否可以删除。默认可以
ceph osd pool get [pool name] nopgchange  #控制是否可更新存储池的pg num 和pgp num
ceph osd pool set [pool name] pg_num 64 #修改制定pool的pg数量
ceph osd pool get [pool name] nosizechange #控制是否可以更改存储池的大小,默认允许修改
ceph osd pool set-quota [pool name] #获取存储池配额信息
ceph osd pool set-quota [pool name] max_bytes   21474836480 #设置存储池最大空间,单位字节
ceph osd pool set-quota [pool name] max_objects 1000 #设置存储池最大对象数量
ceph osd pool get [pool name] noscrub #查看当前是否关闭轻量扫描数据,默认值为false,不关闭,开启
ceph osd pool set [pool name] noscrub true #修改制定的pool轻量扫描为true,不执行轻量扫描
ceph osd pool set [pool name] nodeep-scrub #查看当前是否关闭深度扫描数据,默认值为false,不关闭,开启
ceph osd pool set [pool name] nodeep-scrub true #修改制定pool的深度扫描测量为true,即不执行深度扫描
ceph osd pool get [pool name] scrub_min_interval #查看存储池的最小整理时间间隔,默认值没有设置,可以通过配置文件中的osd_scrub_min_interval参数指定间隔时间。
ceph osd pool get [pool name] scrub_max_interval #查看存储池的最大整理时间间隔,默认值没有设置,可以通过配置文件中的osd_scrub_max_interval参数指定。
ceph osd pool get [pool name] deep_scrub_interval #查看存储池的深层整理时间间隔,默认值没有设置,可以通过配置文件中的osd_deep_scrub_interval参数指定。
rados df #显示存储池的用量信息

# 快照
ceph osd pool mksnap [pool name] [snap name] #创建存储池快照
rados -p [pool name] mksnap [snap name]  #创建存储池快照
rados -p [pool name] lssnap # 列出存储池快照
radps rollback  -p [pool name] [object name] [snap name] #通过快照还原某个文件
ceph osd pool rnsnap [pool name] [snap name] # 删除存储池快照
rados -p [pool name ] rmsnap [snap name] # 删除存储池快照

参考资料:1, 2, 34, 5

镜像 (Mirroring)技术

  • 类型: 同步镜像和异步镜像
  • 优点: 高数据可靠性和容灾能力
  • 缺点: 在同步模式下可能影响性能
  • 在日常使用镜像的过程中,您可能需要将某格式的镜像转换为其他格式,以下为您提供qemu-img工具或自研qemu-img-hw工具转换镜像格式的操作指导。
  • qemu-img工具 支持vhd、vmdk、qcow2、raw、vhdx、qcow、vdi或qed格式的镜像之间相互转换,qemu-img-hw工具弥补了qemu-img工具不支持zvhd和zvhd2格式的缺陷。
  • 通过qemu-img工具转换镜像格式: 格式转换

快照 (Snapshot)技术

  • 实现方式: 写时复制 (Copy-on-write)
  • 优点: 快速备份和恢复
  • 缺点: 可能占用较多存储空间
  • 管理快照可以参考上面的ceph命令

NFS (Network File System)协议

  • 版本: NFSv3, NFSv4
  • 功能: 支持文件锁定和ACLs
  • 挑战: 网络延迟和安全问题

SMB/CIFS (Server Message Block)协议

  • 主要应用: Windows环境中的文件共享
  • 特点: 文件和打印机共享
  • 版本: SMB1, SMB2, SMB3

文件系统 (File System)

  • 常见类型: Ext4, NTFS, XFS, Btrfs
  • 特性: 日志记录、快照、压缩和加密
  • 用途: 管理和组织存储设备上的数据
相关推荐
翼龙云_cloud16 小时前
阿里云渠道商:如何手动一键扩缩容ECS实例?
运维·服务器·阿里云·云计算
Yeats_Liao18 小时前
MindSpore开发之路(二十四):MindSpore Hub:快速复用预训练模型
人工智能·分布式·神经网络·机器学习·个人开发
AKAMAI18 小时前
基准测试:Akamai云上的NVIDIA RTX Pro 6000 Blackwell
人工智能·云计算·测试
IT大白19 小时前
2、Kafka原理-Producer
分布式·kafka
China_Yanhy21 小时前
AWS EKS三种类别,如何选择
云计算·aws
xybDIY1 天前
亚马逊云 Organizations 组织 Link 账号关联与解绑自动化解决方案
运维·自动化·云计算·aws
倪某某1 天前
阿里云无影GPU部署WAN2.2模型
阿里云·云计算
倪某某1 天前
阿里云ECS GPU部署WAN2.2
人工智能·阿里云·云计算
巧克力味的桃子1 天前
Spark 课程核心知识点复习汇总
大数据·分布式·spark
Java 码农1 天前
RabbitMQ集群部署方案及配置指南05
分布式·rabbitmq