Centos kvm+ceph

  • Centos kvm+ceph
  • 一. centos6.5 安装kvm
  • 1. disable selinux
  • 2. 确认支持intel虚拟化
  • 3. 安装须要的包
  • 4.设置桥接网络
  • 5.运行kvm instance(此步骤仅用于测试环境是否安装成功)
  • 6.链接到kvm
  • 二. centos安装ceph(firefly版本)
  • 准备机器
  • 管理机安装
  • 安装其余节点
  • 三. kvm使用ceph
  • 建立osd pool(块设备的容器)
  • 设置帐号对该pool的读写权限
  • 用qemu-img在pool中建立img
  • 验证img建立成功
  • 用kvm建立一个虚拟机

Centos kvm+ceph

centos 7没法用公用源安装ceph, 包依赖不知足
centos 6能够安装,但内核不支持rbd,须要更新内核
rpm --importhttp://elrepo.org/RPM-GPG-KEY-elrepo.orgnode

rpm -Uvhhttp://elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpmpython

yum --enablerepo=elrepo-kernel install kernel-lt-y )linux

一. centos6.5 安装kvm

1. disable selinux

vi /etc/selinux/config
rebootgit

2. 确认支持intel虚拟化

egrep '(vmx|svm)' --color=always /proc/cpuinfo
空表明不支持vim

3. 安装须要的包

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
yum install virt-manager libvirt qemu-kvm openssh-askpass kvm python-virtinstcentos

service libvirtd start
chkconfig libvirtd on网络

emulator 通常是qemu-kvm,也多是其余。
/usr/libexec/qemu-kvm -M ? 查看支持的host系统类型 (我碰到的状况,启动虚拟机时提示host类型rhel6.5不支持,virsh edit ...将host中的rhel6.5改成pc经过)
/usr/libexec/qemu-kvm -drive format=? 查看支持的设备类型 (必须支持rbd,若是没有显示,须要安装支持的版本。源码安装git clone git://git.qemu.org/qemu.git;./configure --enable-rbd。 可能未必产生qemu-kvm,也许是qemu-system-x86_64之类的,那就须要在配置文件里将emulator换成编译好的可执行文件)app

4.设置桥接网络

yum install bridge-utils
vi /etc/sysconfig/network-scripts/ifcfg-br0ssh

DEVICE="br0"
NM_CONTROLLED="no"
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=none
IPADDR=192.168.0.100
PREFIX=24
GATEWAY=192.168.0.1
DNS1=8.8.8.8
DNS2=8.8.4.4
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System br0"测试

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
NM_CONTROLLED="no"
ONBOOT=yes
TYPE="Ethernet"
UUID="73cb0b12-1f42-49b0-ad69-731e888276ff"
HWADDR=00:1E:90:F3:F0:02
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
BRIDGE=br0

/etc/init.d/network restart

5.运行kvm instance(此步骤仅用于测试环境是否安装成功)

virt-install --connect qemu:///system -n vm10 -r 512 --vcpus=2 --disk path=/var/lib/libvirt/images/vm10.img,size=12 -c /dev/cdrom --vnc --noautoconsole --os-type linux --os-variant debiansqueeze --accelerate --network=bridge:br0 --hvm

6.链接到kvm

若是须要安装gui
yum -y groupinstall "Desktop" "Desktop Platform" "X Window System" "Fonts"

二. centos安装ceph(firefly版本)

准备机器

一台安装管理机:admin
一台monitor:node1
两台数据机osd: node2, node3
一台使用ceph rbd的客户端: ceph-client

全部机器上都建立ceph用户,给予sudo权限,因此后续命令以ceph用户执行。
全部机器关闭 selinux
全部机器关闭Defaults requiretty(sudo visudo)
全部机器检查iptables等防火墙设置,节点间通信使用22,6789,6800等端口,防止被拒绝

管理机安装

添加repo
sudo vim /etc/yum.repos.d/ceph.repo

[ceph-noarch]
name=Ceph noarch packages
baseurl=http://ceph.com/rpm-{ceph-release}/{distro}/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc

我将baseurl替换为baseurl=http://ceph.com/rpm-firefly/el6/noarch

执行sudo yum update && sudo yum install ceph-deploy

使得admin用ssh key登录其余机器
ssh-keygen
ssh-copy-id ceph@node1
ssh-copy-id ceph@node2
ssh-copy-id ceph@node3

安装其余节点

admin机器上
mkdir my-cluster
cd my-cluster

初始化配置:
ceph-deploy new node1
此时会在当前目录下建立配置文件ceph.conf,编辑ceph.conf,
添加osd pool default size = 2, 这是由于咱们只有2个osd
添加rbd default format = 2, 将默认的rbd image格式设置为2,支持image的clone功能
添加journal dio = false,

在全部节点上安装ceph
ceph-deploy install admin node1 node2 node3

初始化监控节点
ceph-deploy mon create-initial node1

初始化osd节点
ssh node2
sudo mkdir /var/local/osd0
exit
ssh node3
sudo mkdir /var/local/osd1
exit

ceph-deploy osd prepare node2:/var/local/osd0 node3:/var/local/osd1
ceph-deploy osd activate node2:/var/local/osd0 node3:/var/local/osd1
(此处两个命令应该在数秒内结束,若长时间不响应直至300秒超时,考虑是否有防火墙因素。)

将配置拷贝到各个节点
ceph-deploy admin admin-node node1 node2 node3

sudo chmod +r /etc/ceph/ceph.client.admin.keyring
ceph health
ceph status
但愿获得active_clean状态

三. kvm使用ceph

建立osd pool(块设备的容器)

ceph osd pool create libvirt-pool 128 128

设置帐号对该pool的读写权限

假设咱们使用的帐号是libvirt(若是使用admin帐号默认拥有全部权限,无需设置)
ceph auth get-or-create client.libvirt mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=libvirt-pool'

用qemu-img在pool中建立img

qemu-img create -f rbd rbd:libvirt-pool/new-libvirt-image 10G
这一步我遇到了Unknown file format 'rbd', 这是由于低版本的qemu-img不支持rbd.
可是个人qemu-img版本号已经够了,猜想是个人包在编译时没有加rbd的选项。无奈强制安装了版本号更低的 http://ceph.com/packages/qemu-kvm/centos/x86_64/qemu-img-0.12.1.2-2.355.el6.2.cuttlefish.x86_64.rpm 才支持)

验证img建立成功

rbd -p libvirt-pool ls

用kvm建立一个虚拟机

1. 用virsh命令或virt-manager建立一个虚拟机
须要一个iso或img 在/var/lib/libvirt/images/下
我将它命名为test。 cd rom中选择一个iso,好比debian.iso.不选硬盘。

2. virsh edit test

将该vm的配置修改成使用rbd存储
找到
<devices>

在其后添加以下:
<disk type='network' device='disk'>
<source protocol='rbd' name='libvirt-pool/new-libvirt-image'>
<host name='{monitor-host}' port='6789'/>
</source>
<target dev='vda' bus='virtio'/>
</disk>

3. 建立访问ceph的帐号
cat > secret.xml <<EOF
<secret ephemeral='no' private='no'>
<usage type='ceph'>
<name>client.libvirt secret</name>
</usage>
</secret>
EOF

sudo virsh secret-define --file secret.xml
<uuid of secret is output here>
保存用户libvirt的key
ceph auth get-key client.libvirt | sudo tee client.libvirt.key
保存产生的uuid

sudo virsh secret-set-value --secret {uuid of secret} --base64 $(cat client.libvirt.key) && rm client.libvirt.key secret.xml

virsh edit test

add auth
...
</source>
<auth username='libvirt'>
<secret type='ceph' uuid='9ec59067-fdbc-a6c0-03ff-df165c0587b8'/>
</auth>

4. 开启虚拟机安装os
同时 virsh edit test
将配置的boot方式从cdrom改成hd

5.安装结束重启虚拟机,会boot from vda,也就是rbd

6. 下一步可使用rbd snap, rdb clone, virsh, guestfs制做和使用虚拟机模板

相关文章
相关标签/搜索