ceph KVM使用rbd做存储

博客:https://blog.csdn.net/bobpen/article/details/40112939
博客:http://www.aboutyun.com/thread-13195-1-1.html

导言

很多cepher都会使用RBD块存储功能,下面介绍qemu-kvm访问RBD的方法。

操作

目前Ubuntu 14.04.x和CentOS 7.1 (如使用CentOS 7建议升级到7.1, CentOS 6.x需要升级Qemu-kvm包) 内置的qemu-kvm包已经支持RBD块设备。这里以CentOS 7.1为例描述:

[Bash shell] 纯文本查看 复制代码

?

|

1

2

3

4

5

6

7

8

|

[root@performance ~]``# uname -a

Linux performance 3.10.0-229.1.2.el7.x86_64 #1 SMP Fri Mar 27 03:04:26 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

[root@performance ~]``# cat /etc/redhat-release

CentOS Linux release 7.1.1503 (Core)

[root@performance ~]``# qemu-img --help | grep rbd

Supported formats: vvfat vpc vmdk vhdx vdi sheepdog rbd raw host_cdrom host_floppy host_device file qed qcow2 qcow parallels nbd iscsi gluster dmg cloop bochs blkverify blkdebug

[root@performance ~]``# ldd /usr/libexec/qemu-kvm | grep rbd

librbd.so.1 => /lib64/librbd``.so.1 (0x00007fc8c00e6000)

|

这里看到qemu-img支持rbd块设备,qemu-kvm动态链接到librbd.so.1 。如上述所示,qemu-kvm具备访问RBD的能力。

首先对Ceph建立一个Pool,并且vmimages的pool访问权限key:

[Bash shell] 纯文本查看 复制代码

?

|

1

2

|

ceph osd pool create vmimages 100 100

ceph auth get-or-create client.vmimages mon 'allow r' osd 'allow rwx pool=vmimages'

|

上述步骤会返回一个访问key值,请留意下面使用。然后创建一个secret.xml文件,加载到libvirt内部:

[Bash shell] 纯文本查看 复制代码

?

|

1

2

3

4

5

6

7

8

|

echo "

private=``'no'``>

type``=``'ceph'``>

client.vmimages secret<``/name``>

<``/usage``>

<``/secret``>" > secret.xml

virsh secret-define --``file secret.xml

|

上述步骤创建一个密钥,并返回uuid值。请把上述两个步骤的输出值对应更换一下命令:

[Bash shell] 纯文本查看 复制代码

?

|

1

|

virsh secret-``set``-value 76e3a541-b997-58ac-f7bd-77dd7d4347cb AQAREH1QkNDNCBaac03ZICi``/CePnRDS``+vGyrqQ==

|

接下来要创建一个块设备。可以通过rbd命令进行创建:

[Bash shell] 纯文本查看 复制代码

?

|

1

|

rbd create vmimages``/ubuntu-newdrive --size=2048

|

也可以通过qemu-img命令创建块设备:

[Bash shell] 纯文本查看 复制代码

?

|

1

|

qemu-img create -f rbd rbd:vmimages``/ubuntu-newdrive 2G

|

如果在计算节点上使用qemu-img创建块设备,要完整指定key信息:

[Bash shell] 纯文本查看 复制代码

?

|

1

|

qemu-img create -f rbd rbd:vmimages``/ubuntu-newdrive``:``id``=vmimages:key=AQAREH1QkNDNCBaac03ZICi``/CePnRDS``+vGyrqQ==:auth_supported=cephx\;none:mon_host=192.168.0.100\:6789 2G

|

最后就是把这个块设备动态添加到虚拟机:

[Bash shell] 纯文本查看 复制代码

?

|

01

02

03

04

05

06

07

08

09

10

11

12

13

14

|

echo "

type``=``'network' device=``'disk'``>

type``=``'raw'``/>

type``=``'ceph' uuid=``'76e3a541-b997-58ac-f7bd-77dd7d4347cb'``/>

<``/auth``>

<``source protocol=``'rbd' name=``'vmimages/ubuntu-newdrive'``>

port=``'6789'``/>

<``/source``>

bus=``'virtio'``/>

<``/disk``>

" > device.xml

virsh attach-device ubuntu device.xml --persistent

|

这样做好之后,在虚拟机即可见到vdc的磁盘裸设备,此时对裸设备分区格式化便可使用。

你可能感兴趣的:(ceph KVM使用rbd做存储)