基于go-ceph创建CEPH块设备及快照
一、代码执行前准备
1、系统中安装了CEPH集群
2、GOPATH目录下存在src/github.com/noahdesu/go-ceph代码库
3、在ubuntu 14.04下还需apt-get librados-dev和librbd-dev两个包
二、代码示例
package main import (
"fmt"
"github.com/noahdesu/go-ceph/rados"
"github.com/noahdesu/go-ceph/rbd"
) const (
DefaultRadosConfigFile = "/etc/ceph/ceph.conf"
DefaultBaseImageSize = 10 * 1024 * 1024 * 1024
DefaultPoolName = "rbd"
) func main() {
// connect to the cluster
conn,_ := rados.NewConn()
if err := conn.ReadConfigFile(DefaultRadosConfigFile); err != nil {
fmt.Printf("Rbd read config failed: %v",err)
return
}
if err := conn.Connect(); err != nil {
fmt.Printf("Rbd connect failed: %v",err)
return
} // connect to the pool
ioctx,err := conn.OpenIOContext(DefaultPoolName)
if err != nil {
fmt.Printf("Rbd open pool failed: %v",err)
return
} // create base image
baseImageName := "test"
_,err = rbd.Create(ioctx,baseImageName,DefaultBaseImageSize,rbd.RbdFeatureLayering)
if err != nil {
fmt.Printf("Rbd create image failed: %v",err)
return
} img := rbd.GetImage(ioctx,baseImageName) // we should open base image first
if err := img.Open(); err != nil {
fmt.Printf("Rbd open image failed: %v",err)
return
} defer img.Close() // create snapshot
snapName := "test-snap"
snapshot,err := img.CreateSnapshot(snapName)
if err != nil {
fmt.Printf("Rbd create snapshot failed: %v",err)
return
} // protect snapshot
if err := snapshot.Protect(); err != nil {
fmt.Printf("Rbd create snapshot failed: %v",err)
return
} // make a clone image based on the snap shot
cloneImageName := "clone-test"
_,err = img.Clone(snapName,ioctx,cloneImageName,rbd.RbdFeatureLayering)
if err != nil {
fmt.Printf("Rbd clone snapshot failed: %v",err)
return
} return
}
三、最终会生成一个名为"test"的基础image,以及一个基于"test"的名为"test-snap"的snapshot,最后还有一个基于快照"test-snap"的clone。
注:在创建"test"时,size参数不能太小,否则在创建快照的时候会产生错误。
基于go-ceph创建CEPH块设备及快照的更多相关文章
- 初试 Ceph 存储之块设备、文件系统、对象存储
转载自:https://cloud.tencent.com/developer/article/1010543 1.Ceph 存储介绍 Ceph 是一个开源的分布式存储系统,包括对象存储.块设备.文件 ...
- linux 创建虚拟块设备,制作文件系统并挂载,用于测试lustre
1.制作块文件 3 个 [root@localhost yaoxu]# [root@localhost yaoxu]# [root@localhost yaoxu]# 2.创建回环设备 [root@l ...
- 006 管理Ceph的RBD块设备
一, Ceph RBD的特性 支持完整和增量的快照 自动精简配置 写时复制克隆 动态调整大小 二.RBD基本应用 2.1 创建RBD池 [root@ceph2 ceph]# ceph osd pool ...
- Ceph 块设备 - 命令,快照,镜像
目录 一.Ceph 块设备 二.块设备 rbd 命令 三.操作内核模块 四.快照基础 rbd snap 五.分层快照 六.镜像 rbd mirror 七.QEMU 八.libvirt 九.Openst ...
- 7. Ceph 高级篇 - RBD块设备回收站、快照、克隆
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247485298&idx=1&sn=b83fda07 ...
- Ceph 块设备 - 块设备快速入门
目录 一.准备工作 二.安装 Ceph 三.使用块存储 一.准备工作 本文描述如何安装 ceph 客户端,使用 Ceph 块设备 创建文件系统并挂载使用. 必须先完成 ceph 存储集群的搭建,并 ...
- 一篇文章让你理解Ceph的三种存储接口(块设备、文件系统、对象存储)
“Ceph是一个开源的.统一的.分布式的存储系统”,这是我们宣传Ceph时常说的一句话,其中“统一”是说Ceph可以一套存储系统同时提供块设备存储.文件系统存储和对象存储三种存储功能.一听这句话,具有 ...
- Linux 块设备驱动 (二)
linux下Ramdisk驱动 1 什么是Ramdisk Ramdisk是一种模拟磁盘,其数据实际上是存储在RAM中,它使用一部分内存空间来模拟出一个磁盘设备,并以块设备的方式来组织和访问这片内存.对 ...
- Linux中块设备驱动程序分析
基于<Linux设备驱动程序>书中的sbull程序以对Linux块设备驱动总结分析. 開始之前先来了解这个块设备中的核心数据结构: struct sbull_dev { i ...
随机推荐
- 重新想象 Windows 8 Store Apps 系列文章索引
[源码下载][重新想象 Windows 8.1 Store Apps 系列文章] 重新想象 Windows 8 Store Apps 系列文章索引 作者:webabcd 1.重新想象 Windows ...
- KMA & ex_KMP---Revolving Digits
HDU 4333 Description One day Silence is interested in revolving the digits of a positive integer. I ...
- ButterKnife
1.简介 ButterKnife是注解中相对简单易懂的很不错的开源框架 1.强大的View绑定和Click事件处理功能,简化代码,提升开发效率 2.方便的处理Adapter里的ViewHolder绑定 ...
- c#反射获取常量属性名以及其值(真正可用)
最近因为要开发rpc平台的c#客户端,其中部分常量类为了自动加载的map,需要反射解析出静态常量,往上搜了一堆,都各种的不靠谱. 亲自研究了下,如下: Type t = typeof(SpiderEr ...
- SQL数据库基础(二)
数据类型: --类似于C#中的数据类型 Datetime 范围是:1753.1.1—— 9999.12.31 Smalldatetime 1900.1.1 ——2079.6.6 操作: ...
- 轻量级SaaS在线作图工具(继之前介绍后完整介绍)
俗话说“一图胜千言”,在办公应用领域,流程图是一个非常好的表现企业业务流程或工作岗位规范等内容的展现形式,比如去给客户做调研,回来后都要描述出客户的关键业务流程,谁.什么时候.在什么地方.负责什么事情 ...
- 利用jQuery的淡入淡出实现轮播器
基本原理:将所有图片绝对定位在同一位置,透明度设为0,然后通过jQuery的淡入淡出实现图片的切换效果: 但我在使用fadeIn淡入时却无效果,最后只能使用fadeTo实现,求大神指教 HTML: & ...
- 在Mac上配置Android adb命令
一 adb定义: adb(android debug bridge)是android系统中的一种命令行工具,通过它可以和android设备或模拟器通信. 二 在Mac上的配置过程 启动终端 进入当前用 ...
- CocoaPods的安装(图文并茂)OS X 10.11 系统
这里是前言,可以跳过前言部分直接跳到后面"这里正式安装"开始看步骤: 系统:OS X EI Capitan 版本:10.11.2 开发工具:XCode:7.2 先给一个挺不错的关于 ...
- H5文件操作API
引言 在之前我们操作本地文件都是使用flash.silverlight或者第三方的activeX插件等技术,由于使用了这些技术后就很难进行跨平台.或者跨浏览器.跨设备等情况下实现统一的表现,从另外一个 ...