Ceph块设备管理与Openstack配置(上)

Oepnstack之CEPH系列是根据Ceph Cookbook整理的笔记,分为以下几个部分:

  1. 《Ceph简介》
  2. 《Ceph集群操作》
  3. 《Ceph块设备管理与Openstack配置》
  4. 《深入Ceph》
  5. 《ceph优化与性能测试》

注意:此文对应ceph版本为10.1.2

#ceph -v
ceph version 10.1.2(4a2a6f72640d6b74a3bbd92798bb913ed380dcd4)

前言

目前接触到的Mitaka版本Openstack中,ceph主要用来提供块设备作为cinder、nova、glance的存储端。本篇也是讲述的块设备的相关概念及管理,以及在Openstack中虚拟机不同的启动方式对应ceph中不同的存储结构。本篇分为两个部分:块设备的特性与rbd命令;Openstack中ceph块设备使用。

Ceph块设备

Ceph块设备即RBD(RADOS Block Device),RBD通过librbd将数据条带化的存在ceph集群的OSD上。同时RBD是建立RADOS层之上,这样每一个块设备都会分布在多个ceph节点上。目前RBD驱动已经完美集成在linux内核中,提供了多种企业特性,如完整和增量快照(full and incremental snapshot)、自动精简配置(thin provision)、写时复制克隆(copy on write clone)、动态调整大小(dynamic resizing)、内存内缓存(In-memory caching)。
RBD的读写方式有下面两种:

  • 1、在虚拟化引擎支持下,通过Hypervisor控制librbd库来对块设备读写。在对接上Openstack后,可以很好的利用RBD写时复制特性来快速启动多台虚拟机,后面会进一步介绍相关内容。
  • 2、在映射完块设备后,本地文件系统通过内核KRBD驱动直接访问。

一、RBD命令操作

创建块设备

~~~bash
rbd create  -p  volumes  --size 1024   rbd_test
-p 参数指定存储池,--size 指定大小,默认以M为单位,可以自己加单位如10G,最后rbd_test为创建的镜像名。

rbd ls|list   -p volumes
查看volumes池下的images即块设备

rbd  du   -p volumes
查看volumes的使用情况。可以观察到使用了精简配置。

rbd info  -p volumes   rbd_test
查看rbd_test的相关信息,如大小,objects数量,order,format id和features。
~~~

Tips:

1、-p 参数有时候可省略,使用pool/image_name的方式,如rbd info volumes/rbd_test
2、 创建块设备时默认object层为2,即带上了 –image-format 2的参数,会有许多高级性能,默认有features: layering, exclusive-lock, object-map, fast-diff, deep-flatten。

映射块设备

rbd map volumes/rbd_test
映射rbd_test到本地

rbd showmapped  
查看映射的设备,有点问题,默认只能查看rbd池的块设备,其他池的只能看上一条命令的输出结果。默认从/dev/rbd0开始

mkfs.xfs  /dev/rbd0;mkdir  -p /mnt/rbd_test; mount /dev/rbd0   /mnt/rbd_test
格式化并挂载。

Tips:

1、map是报错”rbd: sysfs write failed
rbd: map failed: (6) No such device or address“,这是因为上面创建的object特性引起的,在我当前Ubuntu1610上,map命令不支持exclusive-lock之后等相关特性,需要手动指定layering特性,或者将image-format值设为1

rbd create -p volumes --size 10  rbd_test1 --image-format 2 --image-feature layering


调整RBD镜像大小

在上面的映射完块设备格式化挂载后,使用resize命令调整RBD,然后用XFS在线调整特性扩容文件系统。

rbd resize  volume/rbd_test  --size 20
xfs_growfs -d /mnt/rbd_test

二、RBD快照与克隆

为了深入了解Openstack中nova、cinder、glance之前的存储关
系,需要学习RBD的快照与克隆。
快照是某时间点上生成的只读RBD镜像的副本。

1、RBD快照操作

echo "hello ,This is a file ready to delete!" >>/mnt/rbd_test/snap_test_file
在块设备的挂载目录创建一个文件。

rbd snap create volumes/[email protected]
创建一个snapshot1的镜像。

rbd snap ls  volumes/rbd_test
查看volumes池中rbd_test镜像所拥有的快照

##测试快照功能
rm  -rf /mnt/rbd_test/*

rbd snap rollback   volumes/[email protected] 
将volumes/rbd_test的快照snapshot1回滚

umount  /dev/rbd0 
mount /dev/rbd0 /mnt/rbd_test
ls  /mnt/rbd_test
观察到文件恢复

## 快照的删除
rbd snap  rm volumes/[email protected]
rbd snap purge volumes/rbd_test
批量删除rbd_test上的镜像。

Tips:

1、快照和被快照的镜像是同等的,具有相同大小和特性,都是池中的一个镜像。
2、新建的快照通过”rbd ls”查看不到,需要用”rbd du”

2、RBD克隆操作
  Ceph一个非常好的特性,即以COW(写时复制)的方式从RBD快照创建克隆(clone),在ceph中也称为快照分层(snapshow layering)。
  在云平台中通常以创建快照来保护RBD镜像(rbd du -p images查看)。然后再从快照上来启动实例。启动的实例是COW克隆镜像。每一个克隆镜像都需要读取父镜像的数据,因此父镜像需要设置保护。当新的数据写入克隆镜像时会存在本身,克隆镜像与RBD镜像具有相同功能,如创建快照等。

rbd snap create volumes/[email protected]_for_clone
创建一个名为snapshot_for_clone的镜像

rbd snap protect  volumes/[email protected]_for_clone
对此镜像设置保护

rbd clone  volumes/[email protected]_for_clone   volumes/clone_rbd
创建克隆镜像

rbd info  volumes/clone_rbd
查看克隆镜像

##将克隆镜像独立出来,完全拥有父镜像数据,中断依赖关系
rbd flatten  volumes/clone_rbd

Tips:

1、一个快照需要有分层特性(layering)才能创建COW克隆。在旧版本创建镜像默认为format-1类型,不具有此特性。

Ending:Ceph块设备管理与Openstack配置上篇结束,下篇将开始记录RBD在Openstack中的不同表现方式~

时间: 2024-08-21 05:43:22

Ceph块设备管理与Openstack配置(上)的相关文章

Ceph块设备介绍与安装配置

一:rbd介绍 块是字节序列(例如,一个512字节的数据块).基于块的存储接口是使用旋转介质(例如硬盘,CD,软盘甚至传统的9-track tape)存储数据的最常用方法.块设备接口的无处不在,使虚拟块设备成为与海量数据存储系统(如Ceph)进行交互的理想候选者. Ceph块设备经过精简配置,可调整大小,并在Ceph集群中的多个OSD上存储条带化数据,ceph块设备利用了RADOS功能,例如快照,复制和一致性. Ceph的RADOS块设备(RBD)使用内核模块或librbd库与OSD进行交互.'

Ceph 块设备

块是一个字节序列(例如,一个 512 字节的数据块).基于块的存储接口是最常见的存储数据方法,它们基于旋转介质,像硬盘. CD .软盘.甚至传统的 9 磁道磁带.无处不在的块设备接口使虚拟块设备成为与 Ceph 这样的海量存储系统交互的理想之选. Ceph 块设备是精简配置的.大小可调且将数据条带化存储到集群内的多个 OSD . Ceph 块设备利用 RADOS 的多种能力,如快照.复制和一致性. Ceph 的 RADOS 块设备( RBD )使用内核模块或 librbd 库与 OSD 交互.

Ceph实践总结之:Centos 下RBD块设备客户端的配置

在进行本章的操作之前,要先完成基本集群的搭建,请参考http://blog.csdn.net/eric_sunah/article/details/40862215 Ceph的块设备又称为 RBD 或是RADOS. 块设备 实验的过程中,可以用虚拟机来作为ceph-client的节点,但是为了保证集群的稳定,不要在集群的节点上做下面的操作 安装Ceph 通过 OS Recommendations 判断你的客户端的OS是否满足基本的要求. 在管理节点使用 ceph-deploy 在ceph-cli

译:块设备和 OpenStack

libvirt 配置了 librbd 的 QEMU 接口,通过它可以在 OpenStack 中使用 Ceph 块设备镜像.Ceph 块设备镜像被当作集群对象,这意味着它比独立的服务器有更好的性能. 在 OpenStack 中使用 Ceph 块设备,必须首先安装 QEMU,libvirt 和 OpenStack.建议 OpenStack 安装的时候使用独立的物理节点.OpenStack 节点建议最小 8G RAM和四核处理器.下图描述了 OpenStack 和 Ceph 技术层次. Importa

理解 OpenStack + Ceph (5):OpenStack 与 Ceph 之间的集成 [OpenStack Integration with Ceph]

理解 OpenStack + Ceph 系列文章: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 基础数据结构 (5)Ceph 与 OpenStack 的集成 1. Glance 与 Ceph RBD 集成 1.1 代码 Kilo 版本中,glance-store 代码被从 glance 代码中分离出来了,地址在 https://github.com/openstack/glance_store. Glance 中与 Ceph 相关的配置项

Ceph 对象存储及客户端配置(三)

一.对象存储介绍 作为文件系统的磁盘,操作系统不能直接访问对象存储.相反,它只能通过应用程序级别的API访问.Ceph是一种分布式对象存储系统,通过Ceph对象网关提供对象存储接口,也称为RADOS网关(RGW)接口,它构建在Ceph RADOS层之上. RGW使用librgw (RADOS Gateway Library)和librados,允许应用程序与Ceph对象存储建立连接. RGW为应用程序提供了一个RESTful S3 / swift兼容的API接口,用于在Ceph集群中以对象的形式

Openstack配置文件管理的变迁之路

在管理一个Openstack集群时,如何维护配置文件无疑是其中最艰难和繁琐的任务之一.因为你不仅要面对众多的核心服务(nova,keystone,glance,cinder,etc)的配置文件,还需要管理其相关服务的配置文件(mysql,rabbitmq,bind9,etc).并且在Openstack组件式的设计架构,以及将功能抽象为plugin或是pipeline中的一个filter的灵活配置下,使用者可以根据自己的需求来选择适合自己的架构,或者进行调整. 随手举一些例子: 选择使用nova-

Centos7.4部署ceph块设备

在部署块设备前必须保证Ceph存储集群处于active+clean状态. 一. 环境准备 IP 主机名 角色 10.10.10.20 admin-node ceph-deploy 10.10.10.24 ceph-client client 二.  安装CEPH 在管理节点上,通过 ceph-deploy 把 Ceph 安装到 ceph-client 节点. [[email protected] ceph]# ceph-deploy install ceph-client 在管理节点上,用 ce

[ ceph ] 基本介绍及硬件配置

1. Ceph简介 所有的 Ceph 存储集群的部署都始于一个个 Ceph节点.网络和 Ceph存储集群.Ceph 存储集群至少需要一个 Ceph Monitor.一个 Manager和一个Ceph OSD 守护进程.在运行 Ceph 作为文件存储时,还需要 Ceph 元数据服务. Monitors:Ceph监视器(ceph-mon)维护集群状态的映射,包括监视器映射.管理器映射.OSD映射和 CRUSH 映射.这些映射是Ceph守护进程相互协调所需的关键集群状态.Monitor还负责管理守护进