文档章节

ceph技巧总结(三)

加油2018
 加油2018
发布于 2014/11/05 18:07
字数 1507
阅读 423
收藏 4
点赞 0
评论 0

1. 设置cephx keys

如果ceph设置了cephx,就可以为不同的用户设置权限。

#创建dummy的key
$ ceph auth get-or-create client.dummy mon 'allow r' osd  'allow rwx pool=dummy'

[client.dummy]
    key = AQAPiu1RCMb4CxAAmP7rrufwZPRqy8bpQa2OeQ==
$ ceph auth list
installed auth entries:
...
client.dummy
    key: AQAPiu1RCMb4CxAAmP7rrufwZPRqy8bpQa2OeQ==
    caps: [mon] allow r
    caps: [osd] allow rwx pool=dummy
...

#对dummy的key重新分配权限
$ ceph auth caps client.dummy mon 'allow rwx' osd 'allow rwx pool=dummy'
updated caps for client.dummy
$ ceph auth list
installed auth entries:
client.dummy
    key: AQAPiu1RCMb4CxAAmP7rrufwZPRqy8bpQa2OeQ==
    caps: [mon] allow rwx
    caps: [osd] allow allow rwx pool=dummy
/dev/sda2       /srv/ceph/osdX1  xfs rw,noexec,nodev,noatime,nodiratime,barrier=0   0   0

2. 查看rbd被挂载到哪里

由于rbd showmapped只能显示本地挂载的rbd设备,如果机器比较多,而你恰好忘了在哪里map的了,就只能逐个机器找了。利用listwatchers可以解决这个问题。

对于image format为1的块:

$ rbd info boot
rbd image 'boot':
    size 10240 MB in 2560 objects
    order 22 (4096 kB objects)
    block_name_prefix: rb.0.89ee.2ae8944a
    format: 1
$ rados -p rbd listwatchers boot.rbd
watcher=192.168.251.102:0/2550823152 client.35321 cookie=1
对于image format为2的块,有些不一样:
[root@osd2 ceph]# rbd info myrbd/rbd1
rbd image 'rbd1':
	size 8192 kB in 2 objects
	order 22 (4096 kB objects)
	block_name_prefix: rbd_data.13436b8b4567
	format: 2
	features: layering
[root@osd2 ceph]# rados -p myrbd listwatchers rbd_header.13436b8b4567
watcher=192.168.108.3:0/2292307264 client.5130 cookie=1
需要将rbd info得到的序号加到rbd_header后面。

3. 怎样删除巨型rbd image

之前在一些博客看到删除巨型rbd image,如果直接通过rbd rm的话会很耗时(漫长的夜)。但在ceph 0.87上尝试了一下,这个问题已经不存在了,具体过程如下:

#创建一个1PB大小的块
[root@osd2 ceph]# time rbd create myrbd/huge-image -s 1024000000

real	0m0.353s
user	0m0.016s
sys	0m0.009s
[root@osd2 ceph]# rbd info myrbd/huge-image
rbd image 'huge-image':
	size 976 TB in 256000000 objects
	order 22 (4096 kB objects)
	block_name_prefix: rb.0.1489.6b8b4567
	format: 1
[root@osd2 ceph]# time rbd rm myrbd/huge-image
Removing image: 2% complete...^\Quit (core dumped)

real	10m24.406s
user	18m58.335s
sys	11m39.507s
上面创建了一个1PB大小的块,也许是太大了,直接rbd rm删除的时候还是很慢,所以用了一下方法:
[root@osd2 ceph]# rados -p myrbd rm huge-image.rbd
[root@osd2 ceph]# time rbd rm myrbd/huge-image
2014-11-06 09:44:42.916826 7fdb4fd5a7e0 -1 librbd::ImageCtx: error finding header: (2) No such file or directory
Removing image: 100% complete...done.

real	0m0.192s
user	0m0.012s
sys	0m0.013s
来个1TB大小的块试试:
[root@osd2 ceph]# rbd create myrbd/huge-image -s 1024000
[root@osd2 ceph]# rbd info myrbd/huge-image
rbd image 'huge-image':
	size 1000 GB in 256000 objects
	order 22 (4096 kB objects)
	block_name_prefix: rb.0.149c.6b8b4567
	format: 1
[root@osd2 ceph]# time rbd rm myrbd/huge-image
Removing image: 100% complete...done.

real	0m29.418s
user	0m52.467s
sys	0m32.372s
所以巨型的块删除还是要用以下方法:

format 1:

[root@osd2 ceph]# rbd create myrbd/huge-image -s 1024000000
[root@osd2 ceph]# rbd info myrbd/huge-image
rbd image 'huge-image':
	size 976 TB in 256000000 objects
	order 22 (4096 kB objects)
	block_name_prefix: rb.0.14a5.6b8b4567
	format: 1
[root@osd2 ceph]# rados -p myrbd rm huge-image.rbd
[root@osd2 ceph]# time rados -p myrbd ls|grep '^rb.0.14a5.6b8b4567'|xargs -n 200  rados -p myrbd rm
[root@osd2 ceph]# time rbd rm myrbd/huge-image
2014-11-06 09:54:12.718211 7ffae55747e0 -1 librbd::ImageCtx: error finding header: (2) No such file or directory
Removing image: 100% complete...done.

real	0m0.191s
user	0m0.015s
sys	0m0.010s
format 2:
[root@osd2 ceph]# rbd create myrbd/huge-image -s 1024000000 --image-format=2
[root@osd2 ceph]# rbd info myrbd/huge-image
rbd image 'huge-image':
	size 976 TB in 256000000 objects
	order 22 (4096 kB objects)
	block_name_prefix: rbd_data.14986b8b4567
	format: 2
	features: layering
[root@osd2 ceph]# rados -p myrbd rm rbd_id.huge-image
[root@osd2 ceph]# rados -p myrbd rm rbd_header.14986b8b4567
[root@osd2 ceph]# rados -p myrbd ls | grep '^rbd_data.14986b8b4567' | xargs -n 200  rados -p myrbd rm
[root@osd2 ceph]# time rbd rm myrbd/huge-image
2014-11-06 09:59:26.043671 7f6b6923c7e0 -1 librbd::ImageCtx: error finding header: (2) No such file or directory
Removing image: 100% complete...done.

real    0m0.192s
user    0m0.016s
sys    0m0.010s
注意,如果块是空的,不许要xargs那条语句;如果是非空就需要了。

所以,如果是100TB以上的块,最好还是先删除id,再rbd rm进行删除。

4. 查看kvm或qemu是否支持ceph

$ sudo qemu-system-x86_64 -drive format=?
Supported formats: vvfat vpc vmdk vhdx vdi sheepdog sheepdog sheepdog rbd raw host_cdrom host_floppy host_device file qed qcow2 qcow parallels nbd nbd nbd dmg tftp ftps ftp https http cow cloop bochs blkverify blkdebug
$ qemu-img -h
...
...
Supported formats: vvfat vpc vmdk vhdx vdi sheepdog sheepdog sheepdog rbd raw host_cdrom host_floppy host_device file qed qcow2 qcow parallels nbd nbd nbd dmg tftp ftps ftp https http cow cloop bochs blkverify blkdebug

可以到 http://ceph.com/packages/下载最新的rpm或deb包。

5. 利用ceph rbd配置nfs

一种简单实用的存储方法,具体如下:

#安装nfs rpm
[root@osd1 current]# yum install nfs-utils rpcbind
Loaded plugins: fastestmirror, priorities, refresh-packagekit, security
Loading mirror speeds from cached hostfile
epel/metalink                                                                                                  | 5.5 kB     00:00     
 * base: mirrors.cug.edu.cn
 * epel: mirrors.yun-idc.com
 * extras: mirrors.btte.net
 * rpmforge: ftp.riken.jp
 * updates: mirrors.btte.net
Ceph                                                                                                           |  951 B     00:00     
Ceph-noarch                                                                                                    |  951 B     00:00     
base                                                                                                           | 3.7 kB     00:00     
ceph-source                                                                                                    |  951 B     00:00     
epel                                                                                                           | 4.4 kB     00:00     
epel/primary_db                                                                                                | 6.3 MB     00:01     
extras                                                                                                         | 3.4 kB     00:00     
rpmforge                                                                                                       | 1.9 kB     00:00     
updates                                                                                                        | 3.4 kB     00:00     
updates/primary_db                                                                                             | 188 kB     00:00     
69 packages excluded due to repository priority protections
Setting up Install Process
Package rpcbind-0.2.0-11.el6.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package nfs-utils.x86_64 1:1.2.3-39.el6 will be updated
---> Package nfs-utils.x86_64 1:1.2.3-54.el6 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

======================================================================================================================================
 Package                         Arch                         Version                                Repository                  Size
======================================================================================================================================
Updating:
 nfs-utils                       x86_64                       1:1.2.3-54.el6                         base                       326 k

Transaction Summary
======================================================================================================================================
Upgrade       1 Package(s)

Total download size: 326 k
Is this ok [y/N]: y
Downloading Packages:
nfs-utils-1.2.3-54.el6.x86_64.rpm                                                                              | 326 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Updating   : 1:nfs-utils-1.2.3-54.el6.x86_64                                                                                    1/2 
  Cleanup    : 1:nfs-utils-1.2.3-39.el6.x86_64                                                                                    2/2 
  Verifying  : 1:nfs-utils-1.2.3-54.el6.x86_64                                                                                    1/2 
  Verifying  : 1:nfs-utils-1.2.3-39.el6.x86_64                                                                                    2/2 

Updated:
  nfs-utils.x86_64 1:1.2.3-54.el6           

#创建一个块并格式化、挂载
[root@osd1 current]# rbd create myrbd/nfs_image -s 1024000 --image-format=2
[root@osd1 current]# rbd map myrbd/nfs_image
/dev/rbd0
[root@osd1 current]# mkdir /mnt/nfs
[root@osd1 current]# mkfs.xfs /dev/rbd0
log stripe unit (4194304 bytes) is too large (maximum is 256KiB)
log stripe unit adjusted to 32KiB
meta-data=/dev/rbd0              isize=256    agcount=33, agsize=8190976 blks
         =                       sectsz=512   attr=2, projid32bit=0
data     =                       bsize=4096   blocks=262144000, imaxpct=25
         =                       sunit=1024   swidth=1024 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=128000, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@osd1 current]# mount /dev/rbd0 -o rw,noexec,nodev,noatime,nobarrier /mnt/nfs

#改写exports文件,添加一行
[root@osd1 current]#  vim /etc/exports
/mnt/nfs 192.168.108.0/24(rw,no_root_squash,no_subtree_check,async)
[root@osd1 current]# exportfs -r
这里还需要执行指令service rpcbind start
[root@osd1 current]# service nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting RPC idmapd:                                       [  OK  ]

此时客户端就可以挂载了。客户端运行:
showmount -e 192.168.108.2
然后进行挂载:
mount -t nfs 192.168.108.2:/mnt/nfs /mnt/nfs

如果无法挂载,运行 service rpcbind start或 service portmap start命令试一下。

© 著作权归作者所有

共有 人打赏支持
加油2018
粉丝 150
博文 276
码字总数 243077
作品 0
海淀
架构师
ceph0.80安装及使用(CentOS7/ceph-deploy)

Ceph的主要目标是设计成基于POSIX的没有单点故障的分布式文件系统,使数据能容错和无缝的复制。详见:http://www.oschina.net/p/ceph 目前大部分部署ceph基本都是在Ubuntu,因为它的内核默认...

fkkeee
2014/09/22
0
4
Installation【快速安装】

Installation【快速安装】 第1步:预检 在部署Ceph分布式存储集群,Ceph客户端和Ceph的节点之前,可能需要一些基本的配置工作。您还可以利用在Ceph的社区帮助文件的“入门”中获取帮助。 Pr...

天空冰雨
2015/03/25
0
0
利用ceph-deploy在ubuntu server14.04上部署ceph并进行其它配置

环境与说明 在ubuntu14.04 server上部署ceph-0.87;设置rbdmap自动挂载/卸载rbd块设备;利用带rbd支持的tgt导出iscsi的rbd块。 2. 安装ceph 1)配置hostname与无密码登录 root@mon0:/etc/cep...

加油2018
2014/11/11
0
16
Ceph 之 块设备、文件系统、对象存储的使用

上面左边是我的个人微信,如需进一步沟通,请加微信。 右边是我的公众号“Openstack私有云”,如有兴趣,请关注。 继上篇《Ceph 之 使用ceph-deploy部署ceph集群》,ceph集群搭建完成之后,接...

余伟兵
06/03
0
0
ceph mon 添加

以下操作在要添加monitor的节点上执行 一、导出monitor的密钥 ceph auth get mon. -o /tmp/keyring 二、监视图 ceph mon getmap -o /tmp/mapfile 三、导入密钥和监视图 ceph-mon -i ceph-p-o...

吴景峰
2017/09/05
0
0
ceph编译(二)

参考:https://my.oschina.net/linuxhunter/blog/682013 一、克隆ceph源码:git clone https://github.com/ceph/ceph.git 完成后进入ceph源码目录 cd ceph。 二、克隆ceph源码的子模块,否则...

zrz11
2016/12/12
33
0
ceph配置日志使用独立分区

查看当前日志所在的位置 ceph --admin-daemon /var/run/ceph/ceph-osd.0.asok config show grep osd_journal 输出结果如下所示: [root@ceph-gw-209214 ~]# ceph --admin-daemon /var/run/ce......

cephn1
02/06
0
0
k8s 与ceph结合

一、创建相应的pool ceph osd pool create k8s 4096 4096 二、创建ceph的对k8s pool的用户 ceph auth get-or-create client.k8s mon 'allow r' osd 'allow class-read objectprefix rbdchild......

吴景峰
2017/10/16
0
0
架构设计:系统存储(28)——分布式文件系统Ceph(挂载)

(接上文《架构设计:系统存储(27)——分布式文件系统Ceph(安装)》) 3. 连接到Ceph系统 3-1. 连接客户端 完成Ceph文件系统的创建过程后,就可以让客户端连接过去。Ceph支持两种客户端挂...

yinwenjie
2017/04/14
0
0
Gluster vs Ceph:开源存储领域的正面较量

引言:开源存储软件Ceph和Gluster能够提供相似的特性并且能够为用户节省不小的开支。那么谁更快?谁又更易用呢? 开源的Ceph及Red Hat旗下的Gluster都是成熟的技术,但兴许不久之后就将经历某...

oschina
2014/02/21
7.9K
6

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Weblogic问题解决记录

问题:点击登录,页面刷新但是不进去管理界面。解决:删除cookies再登录。

wffger
22分钟前
0
0
RxJava2的错误处理方案

最近使用retrofit2 + rxKotlin2写接口访问,想尽量平铺代码,于是就想到当借口返回的状态码为「不成功」时(比如:code != 200),就连同网络错误一起,统一在onError方法中处理。想法总是好的...

猴亮屏
30分钟前
0
0
程序的调试信息

调试二进制程序时,经常要借助GDB工具,跟踪程序的执行流程,获取程序执行时变量的值,以发现问题所在。GDB能得到这些信息,是因为编译程序时,编译器保存了相应的信息。Linux下的可执行程序...

qlee
53分钟前
0
0
应用级缓存

缓存命中率 从缓存中读取数据的次数与总读取次数的比例,命中率越高越好 java缓存类型 堆缓存 guavaCache Ehcache3.x 没有序列化和反序列化 堆外缓存ehcache3.x 磁盘缓存 存储在磁盘上 分布式...

writeademo
今天
0
0
python爬虫日志(3)find(),find_all()函数

1.一般来说,为了找到BeautifulSoup对象内任何第一个标签入口,使用find()方法。 以上代码是一个生态金字塔的简单展示,为了找到第一生产者,第一消费者或第二消费者,可以使用Beautiful Sou...

茫羽行
今天
0
0
java:thread:顺序执行多条线程

实现方案: 1.调用线程的join方法:阻塞主线程 2.线程池 package com.java.thread.test;public class MyThread01 implements Runnable {@Overridepublic void run() {Syste...

人觉非常君
今天
0
0
ElasticSearch 重写IK分词器源码设置mysql热词更新词库

常用热词词库的配置方式 1.采用IK 内置词库 优点:部署方便,不用额外指定其他词库位置 缺点:分词单一化,不能指定想分词的词条 2.IK 外置静态词库 优点:部署相对方便,可以通过编辑指定文...

键走偏锋
今天
19
0
Git 2.18版本发布:支持Git协议v2,提升性能

Git 2.18版本发布:支持Git协议v2,提升性能Git 2.18版本发布:支持Git协议v2,提升性能 新版本协议的主要驱动力是使 Git 服务端能够对各种 ref(分支与 tag)进行过滤操作。 这就意味着,G...

linux-tao
今天
0
0
python浏览器自动化测试库【2018/7/22-更新】

64位py2.7版本 更新 document_GetResources 枚举页面资源 document_GetresourceText 获取指定url的内容 包括页面图片 下载地址下载地址 密码:upr47x...

开飞色
今天
42
0
关于DCL双重锁失效及解决方案

关于DCL双重锁失效及解决方案 Double Check Lock (DCL)实现单例 DCL 方式实现单例的优点是既能够在需要时才初始化单例,又能够保证线程安全,且单例对象初始化后调用getInstance方法不进行...

DannyCoder
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部