分布式对象存储系统在openstack中的应用研究--Ceph(三)

 

在nova-volume中的应用

这里openstack环境使用folsom-f3版本,在nova.conf中配置:

volume_driver=nova.volume.driver.RBDDriver

rbd_pool=nova

查看pool

#rados lspools

data

metadata

rbd

volume创建nova pool

#rados mkpool nova

#rados lspools

data

metadata

rbd

nova

创建卷:

#nova volume-create --display_name=rbd-vol 1

#nova volume-list

查看nova池中的卷:

#rbd --pool nova ls

volume-badbe797-e0ef-418f-bd17-7f982978db58

#rbd --pool nova info volume-badbe797-e0ef-418f-bd17-7f982978db58

rbd image 'volume-badbe797-e0ef-418f-bd17-7f982978db58':

        size 1024 MB in 256 objects

        order 22 (4096 KB objects)

        block_name_prefix: rb.0.0

        parent:  (pool -1)

openstack中生成虚拟机之后,有三种办法对卷进行Attache

第一种:修改virsh中的虚拟机的xml

#virsh list --all

1     instance-00000001              running

#virsh edit 1

加入:

<disk type='network'>

  <driver name="qemu" type="raw"/>

  <source protocol="rbd" name="nova/ volume-1d3a2d86-07ad-4e2f-84b8-2e75a67052d8 ">

  </source>

  <target dev="vdb" bus="virtio"/>

</disk>

 

#virsh destroy 1

#virsh start instance-00000001

注意,这里的host填的是监控节点,有几个监控节点就写几个hostsourcename的参数格式为:your-pool/your-volume

第二种:

nova volume-attach e26afe59-c9a5-4000-ab50-d4fa4650d4ab 1d3a2d86-07ad-4e2f-84b8-2e75a67052d8 /dev/vdd

其中第一个id是实例id,第二个是卷id

第三种:操作dashboard界面进行Attache

进入虚拟机之后可以看到/dev/vdb的块设备,格式化、挂载就可以用了:

#mkfs.ext4 /dev/vdb

#mount /dev/vdb /mnt

glance中的应用

需要安装python-ceph

修改/etc/glance/glance-api.conf

# Set the rbd storage

default_store = rbd

 

# ============ RBD Store Options =============================

 

# Ceph configuration file path

# If using cephx authentication, this file should

# include a reference to the right keyring

# in a client.<USER> section

rbd_store_ceph_conf = /etc/ceph/ceph.conf

 

# RADOS user to authenticate as (only applicable if using cephx)

rbd_store_user = glance

 

# RADOS pool in which images are stored

rbd_store_pool = images

 

# Images will be chunked into objects of this size (in megabytes).

# For best performance, this should be a power of two

rbd_store_chunk_size = 8

创建images池:

#rados  mkpool  images

successfully created pool images

重启glance-apiglance-registry服务。

查看images池的详情:

#rados  --pool=images  ls

#rados  --pool=images  df

上传镜像到rbd中:

#glance add name=centos_6.2_ramdisk_rbd disk_format=ari container_format=ari is_public=True < initrd-2.6.32-220.el6.x86_64.img

Added new image with ID: b1f797b7-b995-48b5-b4e2-aaa55bd2e15f

#glance add name=centos_6.2_kernel_rbd disk_format=aki container_format=aki is_public=True < vmlinuz-2.6.32-220.el6.x86_64 

Added new image with ID: 78f330fc-8598-4039-b851-f903a3b6cf8c

#glance add name=centos_6.2_final_rbd disk_format=ami container_format=ami is_public=True ramdisk_id=b1f797b7-b995-48b5-b4e2-aaa55bd2e15f kernel_id=78f330fc-8598-4039-b851-f903a3b6cf8c  < centos_6.2_final.img

ceph服务器上查看上传进度:

ceph -w

查看上传结果:

#glance index

#rados  --pool=images  ls

#rados  --pool=images  df

查看数据库:

select * from glance.images where status="Active" \G;

*************************** 4. row ***************************

created_at: 2012-09-26 15:22:35

updated_at: 2012-09-26 15:33:28

deleted_at: NULL

deleted: 0

id: 44ec62fa-43cc-49ea-9d09-df4fb042a2ff

name: centos_6.2_final_rbd

disk_format: ami

container_format: ami

size: 2146435072

status: active

is_public: 1

location: rbd://44ec62fa-43cc-49ea-9d09-df4fb042a2ff

checksum: e54e654825c36a0805ae7f45c24fa2d7

min_disk: 0

min_ram: 0

owner: NULL

protected: 0

基于CephFS共享的在线迁移

1. 试验坏境:

node1openstack控制节点+计算节点  ip1.1.1.2

node2openstack计算节点   ip1.1.1.3

node3cephFS存储    ip1.1.1.4

2. 挂载共享

openstack的实例存储目录挂到ceph共享上,如本文的目录为/home/nova/instances

命令:

mount.ceph 1.1.1.4:6789:/ /home/nova/instances

df -h

这里挂载时需要注意:挂载机要安装ceph模块,否则报没有模块的错误。

安装模块有两种方法:

第一种:下载代码编译出模块,但是这种方法需要至少linux内核为2.6.34以上,否则会报错:

# git clone git://ceph.newdream.net/git/ceph-client-standalone.git

# cd ceph-client-standalone/

# git branch master-backport origin/master-backport

# make -C libceph

# cp libceph/Module.symvers ceph/ 

# make -C ceph

# insmod ./libceph/libceph.ko 

# insmod ./ceph/ceph.ko

第二种:下载较新的linux内核,进行内核升级,升级时将ceph编译为模块。

3. 修改配置文件

修改nova.conf的配置文件:

--live_migration_retry_count=30

--live_migration_uri=qemu+tcp://%s/system

--live_migration_flag=VIR_MIGRATE_TUNNELLED,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_UNDEFINE_SOURCE

--live_migration_bandwidth=0

其中live_migration_flag的作用:

VIR_MIGRATE_LIVE 迁移中不进行暂停操作,只在成功的瞬间出现短暂的暂停。在xp的虚拟机迁移时,该选项会导致迁移后的实例鼠标无法响应,需要重启才能恢复。建议去掉该选项,迁移过程中一直暂停,迁移之后实例状态正常。

VIR_MIGRATE_PEER2PEER 源主机和目标主机进行直连。
   
VIR_MIGRATE_TUNNELLED libvirtRPC通道上使用隧道传输迁移数据。
   
VIR_MIGRATE_PERSIST_DEST 
   
VIR_MIGRATE_UNDEFINE_SOURCE 迁移成功后删除源主机的domain
   
VIR_MIGRATE_CHANGE_PROTECTION 
   

ceph存储系统node3上的ceph.conf配置文件拷贝到node1node2/etc/ceph文件夹下。

 

修改libvirt相关配置(Centos)

vi  /etc/libvirt/libvirtd.conf:

listen_tls = 0

listen_tcp = 1

listen_addr = "0.0.0.0"

vi  /etc/sysconfig/libvirtd 

#LIBVIRTD_OPTS="--listen"

去掉以上语句注释

重启libvirt服务,查看进程是否有--listen

service libvirtd restart

ps aux | grep libvirt

root  3068  1.8  0.1 1005608 13176 ?  Sl  06:00   0:05 libvirtd --daemon --listen

4. 在线迁移

使用命令:

nova  --debug  live-migration  bb63b800-c6ce-4de3-aa2d-d6cfa421d77b  node2

以上命令是调用openstack的迁移命令,将node1上的uuidbb63b800-c6ce-4de3-aa2d-d6cfa421d77b的虚拟机迁移到node2上。

virsh migrate --debug --live instance_name qemu+tcp://node2/system

以上命令是使用libvirt的迁移命令进行迁移。

dashboard中添加迁移功能进行迁移。

5. 错误解决

在迁移过程中如果报错: error: Unable to read from monitor: Connection reset by peer

解决:将nova.conf中关于vnc的字段去掉。如果要使用vnc协议的话,解决方法如下:安装或更新最新的vnc相关软件包之后可以正常进行迁移。

 

你可能感兴趣的:(云计算,openstack,虚拟化,ceph,分布式对象存储系统)