###安装配置libvirtd(须有weivirtmgr服务端使用)

01.安装libvirt和KVM

https://github.com/retspen/webvirtmgr/wiki/Setup-Host-Server

curl http://retspen.github.io/libvirt-bootstrap.sh | sudo sh


如开了防火墙还需打开对libvirt端口的访问权限:

iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 16509 -j ACCEPT


02.设置开机自启

chkconfig libvirtd on


03. 配置账号密码

saslpasswd2 -a libvirt webvirtmgr

password: KvmRocks

#sasl是一种用来扩充C/S模式验证能力的机制。

#-a  use appname as application name


04.验证账号密码

virsh -c qemu+tcp://localhost/system nodeinfo

#账号: webvirtmgr   密码:上面设置的密码KvmRocks


05.配置libvirtd

cat >>/etc/libvirt/libvirtd.conf<<EOF

max_clients = 1024

min_workers = 50

max_workers = 200

max_requests = 1000

max_client_requests = 200

EOF


06.重启libvirtd

service libvirtd restart



###配置网卡的bridge模式(命令行见后面)


环境:这里在已经做好了bond的基础上配置bridge (没做bond就用em1代替,配置类似)

01.修改配置ifcfg-bond0

vim /etc/sysconfig/network-scripts/ifcfg-bond0


TYPE=Bond

BOOTPROTO=none

NAME=bond0

DEVICE=bond0

ONBOOT=yes

BOOTPROTO=none

BONDING_MASTER=yes

ONBOOT=yes

#IPADDR=10.0.0.200

#NETMASK=255.255.255.0

#GATEWAY=10.0.0.254

BONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=layer2+3"

BRIDGE=br0

02.配置网桥

vim /etc/sysconfig/network-scripts/ifcfg-br0


DEVICE=br0

TYPE=Bridge

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=none

IPADDR=10.0.0.200

NETMASK=255.255.255.0

GATEWAY=10.0.0.254


03.重新加载网卡配置文件

ifdown bond0 && ifup bond0

ifdown br0 && ifup br0



###图形化安装KVM虚拟机(命令行见后面)


步骤: 需要一个iso镜像,配置存储池,挂载镜像,标准安装

注: 新建虚拟磁盘挂载后,如果mkfs很慢,需要修改libvirtd中的xml配置,设置 cache='none' 或者 cache='unsafe'


xml例子:

<driver name='qemu' type='qcow2' cache='none'/>


01.准备磁盘文件

#方法一:拷贝一个以后镜像

mkdir -p /data/vm/storage1

scp vm-dc-temple-20.img 10.0.0.201                        #复制磁盘文件时,使用此磁盘文件的虚拟机要关闭


#方法二:自己制作镜像(后面有详细步骤)


认证账户密码:webvirtmgr  KvmRocks

02.登录WebVirtMgr仪表盘

http://vm.dc.iqdnet.cn/servers/

输入账户密码  user:root  Pass:KvmRocks


03.创建一个连接

spacer.gif


spacer.gif

user:Webvirtmgr    pass:KvmRocks


04.创建存储池

spacer.gif

spacer.gif

05.创建新的网卡设备

spacer.gif

spacer.gif

spacer.gif

spacer.gif

网桥名称:与物理机网桥设备的名称要相同

06.创建虚拟机实例

spacer.gif

spacer.gif

spacer.gif

spacer.gif

spacer.gif

07.VNC连接测试

spacer.gif

spacer.gif

IP是物理机br0的IP,端口是刚才xml中查看的

(如果镜像是克隆的,可能需要关闭其他虚拟机,使其端口成为5900)

最后能在物理机上ping通12.40这个实例即可!


安装配置libvirtd 客户端

01.安装libvirt和KVM

可参考:https://github.com/retspen/webvirtmgr/wiki/Setup-Host-Server

curl http://retspen.github.io/libvirt-bootstrap.sh | sudo sh


如开了防火墙还需打开对libvirt端口的访问权限:

iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 16509 -j ACCEPT

02.设置开机自启

chkconfig libvirtd on

03. 配置账号密码

saslpasswd2 -a libvirt webvirtmgr

password: KvmRocks

#sasl是一种用来扩充C/S模式验证能力的机制。

04.验证账号密码

virsh -c qemu+tcp://localhost/system nodeinfo

#账号: webvirtmgr   密码:上面设置的密码KvmRocks

05.配置libvirtd

cat >>/etc/libvirt/libvirtd.conf<<EOF

max_clients = 1024

min_workers = 50

max_workers = 200

max_requests = 1000

max_client_requests = 200

EOF

06.重启libvirtd

service libvirtd restart


如果有做好的磁盘镜像文件,则无需创建虚拟机镜像!!!!!

磁盘镜像文件直接放到/data/vm/storage1目录下,然后在webvirtdmgr上即可使用其创建新的虚拟机。

07.创建存储池

       图形方式操作在上面,命令方式操作在下面

08.创建网络池

       图形方式操作在上面

————————————————————————————————


创建KVM虚拟机镜像:

第一部分:安装kvm环境


01.安装kvm依赖包

yum install qemu-kvm libvirt virt-install virt-manager bridge-utils

02.检查是否支持kvm

lsmod | grep kvm

03.启动libvirtd服务

systemctl enable libvirtd.service

systemctl start libvirtd.service



第二部分:搭建网桥


04.创建网桥

nmcli c add type bridge autoconnect yes con-name br0 ifname br0

05.创建网桥IP地址

nmcli c modify br0 ipv4.address 10.50.13.0/24 ipv4.method manual

06.创建网桥网关地址

nmcli c modify br0 ipv4.gateway 10.0.0.254

07.删除eth0网卡配置

nmcli c delete em1

08.给eth0网卡指定网桥

nmcli c add type bridge-slave autoconnect yes con-name em1 ifname em1 master br0

09.重启网络服务

systemctl restart network


第三部分:创建kvm虚拟机


10.创建磁盘

ps:分为ram和qcow2俩种磁盘格式

       qcow2的磁盘空间可以动态增长

qemu-img create -f qcow2 /data/vm/m7-template.qcow2 100G

11. 查看磁盘信息

ps:虽然通过ls看磁盘为20G,但实际空间为0,所以说通过qemu-img创建的磁盘为稀疏模式磁盘。

qemu-img info m7-template.qcow2

12.安装虚拟机

图形界面安装:

virt-install --name m7-vm-ops-37 --vcpus1 --ram 4096 --disk /data/vm/m7-template.qcow2,format=qcow2 --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel7 --location=/iso/CentOS-7-x86_64-DVD-1611.iso

ps:--location 后面也可以指定远程镜像,--os-variant 后面写成rhel7(不要写centos7,不识别)


安装完后,可以通过vnc端口连接并配置(vnc端口在xml文件中)

-------------------------------------------------------------------------------

命令行界面安装:

virt-install --name  m7-vm-ops-37 --ram 512 --vcpus 2 --disk path=/data/vm/m7-template.img,size=10 --os-type linux --os-variant rhel7 --graphics none --console pty,target_type=serial --location=/data/CentOS-7-x86_64-DVD-1503-01.iso --extra-args 'console=ttyS0,115200n8 serial'

从1开始配置,时区,密码,磁盘选1......

安装完后的磁盘文件可用作模板,在图形界面(webvirtmgr)可以使用其创建新的虚拟机。

虚拟机克隆:

方法一:

virt-clone -o m7-vm-ops-37 -n m7-vm-test-38 -f /data/vm/storage1/m7-vm-test-38.qcow2

ps:-f 指定新的磁盘文件  -o 指定被克隆虚拟机  -n 新的虚拟机


方法二:

拷贝磁盘文件和xml文件,修改里面关键点即可


虚拟机快照:

virsh snapshot-create

常用命令:

#宿主机和虚拟机切换

退出虚拟机:crtl+]

进入虚拟机:virsh console centos71

#开启虚拟机

virsh start centos71


#关闭虚拟机

virsh shutdown centos71           

#连接虚拟机

virsh console centos71

#强制关闭虚拟机

virsh destroy centos71     


#编辑这个虚拟机文件.xml

virsh edit centos71

#删除虚拟机包括配置

virsh undefine centos71

#查看所有kvm虚拟机

virsh list --all

#进入vrish环境

virsh

#磁盘挂载(在vrish环境下使用)

attach-disk m7-vm-ops-37 /data/vm/m7-template.qcow2 vdb

#查看下有没有vdb

fdisk -l


brctl show                                   #查看网桥

brctl delbr br0                             #删除网桥

brctl delif br0 vnet0                    #删除网桥接口


创建存储池:


手动创建文件:

/var/libvirt/storage/m7-vm-ops-37.xml:


<pool type='dir'>

  <name>m7-vm-ops-37</name>                    #存储池名称

  <capacity>0</capacity>

  <allocation>0</allocation>                             #最大容量

  <available>0</available>                                #可见容量

  <source></source>

  <target>

   <path>/var/libvirt/storage</path>

   <permissions>

      <mode>0700</mode>

      <owner>-1</owner>

      <group>-1</group>

   </permissions>

  </target>

</pool>


----------------------------以下可作为参考---------------------------------


vim /etc/libvirt/storage/storage1.xml

<pool type='dir'>

  <name>storge1</name>

  <uuid>4aa56c0c-a23e-6569-7ef5-0584e3bd6a8a</uuid>       #复制时删除此标签

  <capacity unit='bytes'>0</capacity>

  <allocation unit='bytes'>0</allocation>

  <available unit='bytes'>0</available>

  <source>

  </source>

  <target>

    <path>/data/vm/storage1</path>

    <permissions>

      <mode>0755</mode>

      <owner>-1</owner>

      <group>-1</group>

    </permissions>

  </target>

</pool>

常用命令:


#查看存储值

virsh pool-list

#定义存储值

virsh pool-define /var/libvirt/storage/linux43.xml

#查看存储值

virsh pool-list --all

#开启存储值

virsh pool-start linux43

#自动启动

virsh pool-autostart linux43

#查看存储值

virsh pool-list


#挂载磁盘

virsh deattach-disk cirros vdb

补充:

#virsh console vm-ops

卡死连接不上执行下面命令后reboot


在虚拟机中执行:

grubby --update-kernel=ALL --args="console=ttyS0"



错误总结:

1.报错与网络有关;提示什么NetworkManager


nmcli device status

systemctl stop NetworkManager

systemctl start NetworkManager

# nmcli c add type bridge autoconnect yes con-name br0 ifname br0

brctl show        #检查vnet0是否存在

br0             eth0

                  vnet0