基于go-ceph创建CEPH块设备及快照
2016-03-15 10:37
591 查看
一、代码执行前准备
1、系统中安装了CEPH集群
2、GOPATH目录下存在src/github.com/noahdesu/go-ceph代码库
3、在ubuntu 14.04下还需apt-get librados-dev和librbd-dev两个包
二、代码示例
三、最终会生成一个名为"test"的基础image,以及一个基于"test"的名为"test-snap"的snapshot,最后还有一个基于快照"test-snap"的clone。
注:在创建"test"时,size参数不能太小,否则在创建快照的时候会产生错误。
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语言以匿名组合的方式实现继承
- sougou word library TXT download
- Go语言学习笔记
- Mac系统搭建Go语言Sublime Text 2环境配置
- Graceful Restart in Golang
- Django入门(八) cookie和session
- XP下的进程静音技术(遍历进程,遍历输入模块,遍历输入函数,找到函数并HOOK) good
- Django的请求流程(url)
- UVALive 6665 Dragonâs Cruller(BFS+优先队列+康拓展开)
- Go语言核心之美 1.2-变量及声明篇
- 无知造就对阿法狗(AlphaGo)的恐惧与喧闹
- 我与小娜(36):人机大战第五局,AlphaGo必胜!
- 使用hugo搭建博客
- 第55课:实战Hive分析搜索引擎的数据
- google官方的下拉刷新控件SwipeRefreshLayout
- 人机大战中AlphaGo及其执子人黄士杰
- AlphaGo实现论文阅读笔记一
- 图片处理方法汇总imagemagick-Golang
- [golang note] 协程基础
- Django Model 查询