存储概念 - 存储类型对比

存储选择需要考虑的问题:不同的文件访问方式? 在关注存储之前,需要关注下面一些问题: “应用” 访问数据的方式是什么? 一次读取 或 分块读取 一个连续的“流”传输最好的方式是什么 有序的 或 随机的 “数据的类型是什么”? 数据库,Text,视频/音频,图像… 静态 / 固定 / 动态 是否需要数据共享? 由应用共享 / 由存储共享 读 / 写 共享方面关注的问题? Narrow (只需要更新部分内容,这可以共享特定部分内容,这将不是一个广泛共享) / Broad 安全和访问控制: 应用什么级别的的安全性? 访问性会影响存储的选择: Local / Network 介质:光纤,以太网,SAS,SATA,PCIe… 有了这些问题,就可以引入存储的类型,以便选择最佳的存储(Balance performance and cost ) DAS Direct Attached Storage (DAS) 直接附加存储是指,直接连接到服务器存储系统,通俗来讲就是直接连接磁盘,服务器与存储系统之间“没有经过网络设备” (如交换机等),服务器与存储直接由专用的“连接技术”进行连接,如 SCSI, 但现在更常见的是 “eSATA”, “SAS”, 或 “光纤通道”。 图:DAS结构图 Source:https://www.pcmag.com/encyclopedia/term/direct-attached-storage 图:DAS接口类型 Source:https://ramsaihan.wordpress.com/2017/10/16/the-sas-sata-scsi-and-ata-in-storage-and-peripheral-communication/ 外部连接 直连存储也可以通过连接电缆从服务器连接到存储设备,但服务器中必须存在 SAS、以太网或 FC 控制器,只有该服务器可以使用外部磁盘空间。因此直连存储也可以作为是服务器的扩展 SAS 作为连接介质价格低廉,但距离仅限于几米(最大 5 或 10 米,具体取决于制造商);光纤通道的传输距离可达数公里,因此也可用作灾备系统。...

 ·  · 

使用cephadm纯离线安装Ceph集群

开篇常例 - 概述 Ceph 是一个广泛使用的开源存储平台。 它提供高性能、可靠性和可扩展性。 Ceph 分布式存储系统提供了对象存储、块存储和文件级存储。 Ceph 旨在提供无单点故障的分布式存储系统。 在本教程中,将通过 ceph-adm 方式在 CentOS 7 上安装和构建 Ceph 集群。该实验的 Ceph 集群需要以下 Ceph 组件: Ceph OSD (ceph-osd) - 处理数据存储、数据复制和恢复;通常一个Ceph集群至少需要两台 OSD 服务器 。 Ceph Monitor (ceph-mon) - 监视集群状态、OSD 映射和 CRUSH 映射,我们在这里与 cephadm 或 OSD 公用一个节点 Ceph 元数据服务器 (ceph-mds) - 这是使用 CephFS 所需的组件。 有了上面的条件,我们实验环境所需要的节点如下: 三台服务器节点,CentOS 7 注:CentOS 7 可安装最高级别的 ceph 版本就是 O 版 本教程中的服务器将使用以下主机名和 IP 地址: 主机名 IP地址 作用 cephadmin 10.0.0.20 作为 ceph 管理节点,以管理与部署 ceph 集群 osd01 10....

 ·  · 

Ceph集群安装 - ceph-deploy

环境配置 Ceph 是一个开源去中心化存储平台,专为满足现代存储需求而设计。 Ceph可扩展至 EB 级,并且设计为无单点故障,使其成为需要高度可用的灵活存储的应用程序的理想选择。 下图显示了具有 Ceph 存储的示例 3 节点集群的布局。 两个网络接口可用于增加带宽和冗余,这有助于保持足够的带宽来满足存储要求,而不影响客户端应用程序。 图:Ceph存储集群 Source:https://www.jamescoyle.net/how-to/1244-create-a-3-node-ceph-storage-cluster 图中架构表示了一个无单点故障的 3 节点 Ceph 集群,以提供高度冗余的存储。 每个节点都配置了两个磁盘; 一台运行 Linux 操作系统,另一台将用于 Ceph 存储。 下面的输出显示了可用的存储空间,每个主机上的存储空间完全相同。 /dev/sda 是包含操作系统安装的根分区, /dev/sdb 是一个未触及的分区,将用于部署 Ceph 集群,对应的硬件信息如下表所示。 主机名 public IP cluster IP 数据盘 ceph-nautilus01 10.0.0.50 10.0.0.50 /dev/sda /dev/sdb ceph-nautilus02 10.0.0.51 10.0.0.51 /dev/sda/dev/sdb ceph-nautilus03 10.0.0.52 10.0.0.52 /dev/sda/dev/sdb ceph-control 10.0.0.49 10.0.0.49 /dev/sda 部署工具 ceph-deploy 工具是在 “管理节点” (ceph-admin) 上的目录中运行。 ceph-deploy 部署ceph的原生工具 (最后支持版本 octopus 15) 借助于ssh来管理目标主机,sudo,和一些 python 模块来完成 ceph 集群的部署和后期维护。 一般讲 ceph-deploy 放置在专用节点,作为 ceph 集群的管理节点。 ceph-deploy 不是一个通用的部署工具,只是用于管理Ceph集群的,专门为用户快速部署并运行一个Ceph集群,这些功能和特性不依赖于其他的编排工具。 它无法处理客户端的配置,因此在部署客户端时就无法使用此工具。 下图是来自 ceph 官网的 ceph-deploy 部署工具的一个模型图...

 ·  · 

Ceph RBD - 初识块存储RBD

什么是块存储 RBD Ceph RBD (RADOS Block Device) 是 Ceph 提供的三种存储类型之一 (块存储 RBD, 文件存储 CephFS, 对象存储 RGW),也是另外两个存储类型 (文件存储 CephFS, 对象存储 RGW) 的底座,位于 RADOS 架构中的最底层,由下图可以看出 图:Ceph RADOS架构图 Source:https://www.supportsages.com/ceph-part-3-technical-architecture-and-components/ RADOS 是可信赖的自动分布式对象存储 (Reliable Autonomous Distributed Object Store) 的简写,通俗来说,RADOS 代表的就是整个 Ceph 集群,数据对象在集群中的存储方式会“将对象复制为多副本” 以实现容错,所以 Ceph 集群的底座就是 RADOS,一个 RADOS 集群的组件通常包含三个,OSD Daemon , MDS, MON Object Storage Device (OSD) Daemon:RADOS集群中负责存储守护进程,与 OSD (数据的物理或逻辑存储单元【通常指一个硬盘】)交互。集群中的每个 Ceph Node 都必须运行 OSD Daemon。对于每个 OSD,可以有一个关联的硬盘 (通常一个OSD Daemon 对应一个存储单元)。 MONITORS (Mon Daemon):Monitor (ceph-mon) 不是集群存储组件的一部分,但它通过监视 OSD 状态并生成 “Cluster Map” 而成为 RADOS 不可或缺的一部分。它监视 OSD 并跟踪在给定时间点哪些 OSD 处于运行状态、哪些 OSD 处于对等状态、OSD 的状态等。一般来说,它充当存储集群中所有 OSD 的 Monitor Manager (MGR Daemon):Manager (ceph-mgr) 是与 ceph-mon 一同运行的守护进程,为外部监控和管理系统提供额外的监视和接口。默认情况下,ceph-mgr 除了确保其正在运行之外不需要其他配置。如果没有运行 ceph-mgr,ceph -s 将会看到一条 WARN;不管是使用什么方式部署的集群 ( ceph-deploy, cephadm),ceph-mgr 总会 与 ceph-mon 同时运行在一个节点上,也可单独运行在 Ceph Node 之上。 通常 Monitor (ceph-mon) 不构成“存储”集群的一部分,只是通过监视 OSD 状态并生成 Cluster map 而成为 ceph存储集群中不可缺少的组件。它通过监视 OSD 并跟踪在给定时间点哪些 OSD 处于运行状态、哪些 OSD 处于对等状态、OSD 的状态等。...

 ·  · 

Ceph RBD - 关于RBD的操作与管理

上一章提到了 RBD 块设备相关的基本配置,这章主要描述 RBD 操作部分 ceph块设备接口(RDB) Ceph块设备,也称为RADOS块设备(简称RBD),是一种基于RADOS存储系统支持超配(thin-provisioned)、可伸缩的条带化数据存储系统,它通过librbd库与OSD进行交互。RBD为KVM等虑拟化技术和云OS(如OpenStack和CloudStack)提供高性能和无限可扩展性的存储后端,这些系统依赖于libvirt和QEMU实用程序与RBD进行集成。 客户端基于librbd库即可将RADOS存储集群用作块设备,不过,用于rbd的存储池需要实现启用rbd功能并进行初始化。例如,下面的命令创建rbddata的存储池,在启动rbd功能后对其进行初始化。 sh 1 2 3 4 ceph osd pool create rbdpool 64 # 创建存储池 rbd pool init -p rbdpool # rbd create rbdpool/img1 --size 2G rbd ls -p rbdpool 不过rbd存储池并不能直接用于块设备,而是需要事先在其中按需创建影响(image) RBD是建立在librados之上的客户端,全程为Rados Block Devices,是对rados存储服务做抽象,将rados位于存储池当中所提供的存储空间,使用对象式存储数据的能力的机制。 rbd虚拟磁盘设备要想使linux内核所识别使用,要求linux在内核级支持Ceph,内核级有一个Ceph模块,专门用来驱动Ceph设备的。这个驱动就叫librbd。此模块自己是一个客户端,能够连接至RBD服务上,检索出他所管理的镜像文件。从而镜像文件完全可以被linux主机作为一块完整的硬盘来使用。 创建存储池镜像 --object-size 任何数据存储在存储池中都被切分为固定大小的对象,对象通常称之为条带,切分的对象大小,默认4M --image-feature 指定镜像文件的特性,每种特性代表镜像文件能支持哪些种功能,可被单独启用或禁用。 layering(+), 分层克隆 exclusive-lock 排它锁,是否支持分布式排它锁,已用来限制一个镜像文件同时只能被一个客户端使用。 object-map(+*) 对象映射,是否支持对象位图,主要用于加速导入、导出及已用容量统的。 fast-diff(+*), 快速比较,主要用于做快照之间的比较 deep-flatten(+-) , 深层展评 journaling 日志,用户在修改image数据时是否记录日志。 shared image --no-progress:不显示创建过程 sh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 $ rbd help create usage: rbd create [--pool <pool>] [--image <image>] [--image-format <image-format>] [--new-format] [--order <order>] [--object-size <object-size>] [--image-feature <image-feature>] [--image-shared] [--stripe-unit <stripe-unit>] [--stripe-count <stripe-count>] [--data-pool <data-pool>] [--journal-splay-width <journal-splay-width>] [--journal-object-size <journal-object-size>] [--journal-pool <journal-pool>] [--thick-provision] --size <size> [--no-progress] <image-spec> Create an empty image....

 ·  ·