kvm宿主机 与vm 数据交互 kvm搭建虚拟机集群_linux

KVM虚拟机使用

一、 KVM虚拟机部署

在开始之前首先需要部署一台KVM虚拟,然后指定虚拟机xml配置文件,最后修改虚拟机配置文件指定 从Ceph集群加载磁盘即可,同样使用KVM作为Ceph集群客户端,那么客户端节点必须安装ceph- common软件包,并把ceph.conf配置文件和授权keyring文件复制到对应的节点

1、kvm虚拟环境准备

部署KVM的服务器需要支持虚拟化,否则无法正常使用

#服务器是否支持虚拟化判断, 如果有输出表示支持,否则可能需要另外开启
[root@admin ~]# lsmod | grep kvm


1)#假设底层支持环境没有问题(安装虚拟机环境)
[root@admin ~]#yum -y install qemu-kvm qemu-kvm-tools virt-manager virt-install libvirt



2)#启动服务
[root@admin ~]# systemctl enable libvirtd.service
[root@admin ~]# systemctl start libvirtd.service
2、用户授权准备
[root@admin ~]#ceph auth caps client.osd-mount osd "allow * pool=kvm" mon "allow r"

二、创建kvm使用secret

1、文件编辑创建
1)#创建一个xml文件(文件名称自定义)
    [root@admin ~]# vim kvm.xml
    <secret ephemeral='no' private='no'>
    <usage type='ceph'>
    <name>client.kvm secret</name>
    </usage>
    </secret>
   #注:
   client.kvm代表Ceph集群的用户,type为ceph,表示用户类型为Ceph用户





2)#将创建的xml文件转换为Secret(格式转换)
   [root@admin ~]#virsh secret-define --file secret.xml
   #注:
   --file:指定前面的xml文件,该命令会返回一串Secret字符串,Secret相当于KVM去访问Ceph集群时使用的认证,但这个里面只包含了用户名




3)#将对应用的Ceph用户的Key与Secret合并
   [root@admin ~]#virsh secret-set-value --secret 7b64bd4d-ed43-   4ddf-8e36-97c82397e718 --base64AQCpE9VcOrHbBhAASQ36s2IWCEdw+8wbjoyU/w==
   #注:
   --secret:指定第2步生成的Secret值。
   --base64 :指定Ceph用户的Key信息
2、创建虚拟机模板

原则上可以直接通过创建一个虚拟机模板,该模板内指定使用RBD镜像作为启动盘,然后通过定义了这 个模板来直接启动虚拟机。但有可能每个人所定义的配置不一样,这时候可以通过自定义创建一台虚拟机出来,然后在此虚拟机的模板基础上修改得到新的虚拟机

1、#在Ceph集群创建KVM虚拟机使用的RBD镜像,同样也需要修改该镜像的特性,只支持layering和 striping特性,这里直接使用Linux客户端挂载时创建的镜像,镜像名为img1。




2、#在本地创建KVM虚拟机使用的本地镜像,作为虚拟机首次创建获取模板所用,后面将不使用此镜像启动。
[root@admin ~]#qemu-img create -f raw /opt/CentOS7.raw 2G
#注:
-f:指定镜像格式,raw相当于全镜像模式,性能最好,另外还有一种格式为qcow2,这种为稀疏 格式,性能较差,镜像存储在/opt/CentOS7.raw,并指定大小为2G






3、#使用刚创建的本地镜像,并将一个系统ISO挂载到虚拟驱内一起启动
[root@admin ~]#virt-install --name CentOS7 --virt-type kvm --ram 1024 --cdrom=/opt/CentOS-7-x86_64-Minimal-1810.iso --disk path=/opt/CentOS7.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

#注:
  --cdrom:指定系统ISO镜像。
  --disk:指定本地硬盘镜像,第2步创建的镜像。
  --name:虚拟机名称。
  --virt-type :虚拟机类型。
  --network :虚拟机使用的网络类型。
  --graphics :指定图形相关配置,启动成功后监听0.0.0.0:5900号端口,如果第二台就是 0.0.0.0:5901,以此类推,可以使用VNC客户端进行连接。
  --noautoconsole:不自动连接至控制吧




4、虚拟机创建成功后,查看监听端口,这时候使用VNC客户端连接至该端口,正常情况该虚拟机已经 启动,并进入系统安装界面



5、查看所有虚拟机运行状态
[root@admin ~]#virsh list --all



6、关闭虚拟机,并获取获取机的配置文件
 [root@admin ~]#virsh destroy CentOS7
 #注:
   默认虚拟机配置文件存放在/etc/libvirt/qemu/下以虚拟机名称命名,只需要将该配置文件复制一份即可
  [root@admin ~]#cp /etc/libvirt/qemu/CentOS7.xml ./CentOS7-RBD.xml

 
 7、将新配置文件修改如下,前面的2到6步操作主要是为了演示配置文件的由来,如果在实验的情况下,此配置文件可直接根据自己的信息修改后使用
[root@admin ~]#vim CentOS7-RBD.xml

<domain type='kvm'>
<name>CentOS7-RBD</name>
<memory unit='KiB'>1048576</memory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64'>hvm</type>
<boot dev="cdrom"/>
</os>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='network' device='disk'>
<source protocol='rbd' name='kvm/img1'>
<host name='192.168.6.126,192.168.6.127,192.168.6.128'
port='6789'/>
</source>
<auth username='osd-mount'>
<secret type='ceph' uuid='6c5a16cc-7b16-4bdc-be85-d9d664b14570'/>
</auth>
<target dev='vda' bus='virtio'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hda' bus='ide'/>
<source file='/opt/CentOS-7-x86_64-Minimal-1810.iso'/>
<readonly/>
</disk>
<interface type='network'>
<source network='default'/>
<model type='virtio'/>
</interface>
<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
</graphics>
</devices>
</domain>

#将配置文件必须的部分保留,注意更改了最上面的,删除了与虚拟机相关的配置。在内指定了引导 启动设备为cdrom,并且在内指定了cdrom相关的配置。主要配置为,有两个配置,一个为ISO镜 像的配置,另一个配置如下


<disk type='network' device='disk'>
<source protocol='rbd' name='kvm/img1'>
<host name='192.168.6.126,192.168.6.127,192.168.6.128' port='6789'/> </source>
<auth username='osd-mount'>
<secret type='ceph' uuid='6c5a16cc-7b16-4bdc-be85-d9d664b14570'/>
</auth>
〈target dev='vda' bus='virtio'/>
</disk>

#注:
:type指定磁盘从网络获取。
:指定源协议为rbd,镜像名为kvm/imgl,相当于/
:指定Mon主机的IP与端口,多个主机使用逗号分隔,端口单独指定。
:指定认证信息,username用来指定用户名。
:secret指定密码,其中type指定为ceph类型,而uuid为前面创建的Secret的ID,可以使用命令virsh secret-list获取。
3、将配置文件定义为虚拟机
[root@admin ~]#virsh define CentOS7-RBD.xml
4、这时候通过virsh list --all查看新创建的虚拟机,此时状态为关闭,接下来就是开机安装系统即可
[root@admin ~]#virsh start CentOS7-RBD
#注:
   正常情况下虚拟机启动成功后就可以用VNC客户端连接上面正常安装系统即可,关于虚拟机网络即可
   
   
#系统安装完成后将disk设置为开机引导项即可,删除cdrom的块即可,可再使用一份新的配置文件重新定义一台虚拟机,如:
[root@admin ~]# CentOS7-RBD_01.xml
<domain type='kvm'>
<name>CentOS7-RBD</name>
<memory unit='KiB'>1048576</memory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64'>hvm</type>
</os>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='network' device='disk'>
<source protocol='rbd' name='kvm/img1'>
<host name='192.168.6.126,192.168.6.127,192.168.6.128'
port='6789'/>
</source>
<auth username='osd-mount'>
<secret type='ceph' uuid='6c5a16cc-7b16-4bdc-be85-d9d664b14570'/>


</auth>
<target dev='vda' bus='virtio'/>
</disk>
<interface type='network'>
<source network='default'/>
<model type='virtio'/>
</interface>
<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
</graphics>
</devices>
</domain>