kvm的安装以及实例管理

kvm

服务安装

查看机器是否支持虚拟化
cat /proc/cpuinfo | egrep ‘vmx|svm’

安装软件:

yum groupinstall  "Virtualization Client" "Virtualization Platform" "Virtualization Tools" -y
yum install -y qemu-kvm libvirt   ###qemu-kvm用来创建虚拟机硬盘,libvirt用来管理虚拟机
yum install -y virt-install    ###用来创建虚拟机

跟虚拟机相关的目录:

    /etc/libvirt/storage                         #存储池配置文件存放位置
    /etc/libvirt/qemu/                           #虚拟机配置文件存放位置
    /etc/libvirt/qemu/networks            #虚拟网络配置文件存放位置
    /var/lib/libvirt/images/                   #虚拟磁盘文件存放位置(默认存储池)

启动服务:
systemctl start libvirtd
图形管理器
virt-manager
命令方式安装虚拟机:
virt-install

存储

存储池:
存储池(Storage pools)是放置虚拟机的存储位置,存储池可以建立在好几种方式的存储上,我们以基于目录为存储池来学习。
默认存储池位置: **/var/lib/libvirt/images/**

创建存储池(目录)[非必须]
1.图形方式:
编辑 → 连接详情 → 存储
2.命令方式:

       # mkdir  /kvm/disk
    定义存储池
       # virsh pool-define-as vmdisk --type dir --target /kvm/disk
    查看已定义的存储池
       #virsh pool-list --all
    激活并自动启动已定义的存储池,存储池不激活无法使用。
       # virsh pool-start vmdisk
       # virsh pool-autostart vmdisk         

这里vmdisk存储池就已经创建好了,可以直接在这个存储池中创建虚拟磁盘文件了。

存储卷:

存储卷(storage volume)指虚拟磁盘文件,可以理解为虚拟机的硬盘
在存储池中创建虚拟机存储卷
virsh命令:

创建存储卷:
        # virsh vol-create-as vmdisk mini.qcow2 20G --format qcow2  
查看存储卷:
        # virsh vol-list vmdisk
           名称                        路径                                  
----------------------------------------------------------------------------
            mini.qcow2           /kvm/disk/mini.qcow2
      3.qemu命令(不会被存储池管理)
        # qemu-img create -f qcow2 /var/lib/libvirt/images/mini.qcow2 20G  
    注1:KVM存储池主要是体现一种管理方式,可以通过挂载存储目录,lvm逻辑卷的方式创建存储池
    注2:KVM存储池也要用于虚拟机迁移任务。

存储池相关管理命令    
    取消激活存储池
        # virsh pool-destroy vmdisk
    取消定义存储池
        # virsh pool-undefine vmdisk

网络

KVM虚拟机网络配置的两种方式:NAT方式和Bridge方式。
NAT–用户网络(User Networking):让虚拟机访问主机、互联网或本地网络上的资源的简单方法,但是不能从网络或其他的客户机访问客户机。
Bridge–虚拟网桥(Virtual Bridge):这种方式要比用户网络复杂一些,但是设置好后客户机与互联网,客户机与主机之间的通信都很容易。

一. Bridge方式

Bridge方式即虚拟网桥的网络连接方式,是客户机和子网里面的机器能够互相通信。可以使虚拟机成为网络中具有独立IP的主机。

配置:

1、编辑修改网络设备脚本文件,增加网桥设备br0
# vim /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0
BOOTPROTO=static
ONBOOT=yes
TYPE=bridge
IPADDR=192.168.50.40
GATEWAY=192.168.40.254
DNS1=114.114.114.114
DNS2=8.8.8.8

2、编辑修改网络设备脚本文件,修改网卡设备ens33
# vim /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
BRIDGE=br0
BOOTPROTO=none
DEVICE=enp33
ONBOOT=yes

3、重启网络服务
# /etc/init.d/network restart

4、校验桥接接口

    # ifconfig br0
    # brctl show
        bridge name	  bridge id		                      STP enabled	 interfaces
        br0		        8000.f0795962c1cc	           no		            en33
        virbr0		        8000.5254005a2e43	     yes		            virbr0-nic 
 启动STP
     # brctl stp sr0 on
二. NAT方式(默认)

NAT方式是kvm安装后的默认方式。它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机。

修改NAT网络
例:将default网络的dhcp功能关闭
1). 修改网络配置文件
# virsh net-edit defult #删除以下三行

          <dhcp>
              <range start='192.168.122.2' end='192.168.122.254'/>
          </dhcp>
2). 重启default网络
    # virsh net-destroy default     #关闭default网络
    # virsh net-start default          #启动default网络

1.创建NAT网络:
1). 图形方法:
2). 命令方法:
# cd /etc/libvirt/qemu/networks/
创建配置文件:
# cp default.xml nat-20.xml
修改配置文件:
# vim nat-20.xml #改名称,UUID,MAC地址
#加一行nat网络名称
创建网络:
# virsh net-create nat-20.xml
查看网络:
# virsh net-list --all
# virsh net-define /etc/libvirt/qemu/networks/nat-20.xml
# virsh net-autostart nat-20

虚拟机安装

virt-install -n c7 \
--memory 1024 \
--vcpus=1 \
--cdrom /data/iso/CentOS-7-x86_64-DVD-1908.iso \
--disk /data/img/c7.qcow2,size=10,format=qcow2,bus=scsi \
--network bridge=br0 \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole

参数说明:

--name                                # 虚拟机名称,需全局惟一
--memory                              # 虚拟机内在大小,单位为MB
--vcpus                                # VCPU个数及相关配置
--virt-type                           # 使用的hypervisor,如kvm、qemu、xen等;所有可用值可以使用virsh capabilities命令获取;
--cdrom                               # 光盘安装介质
--disk                                # 指定存储设备及其属性
--network bridge=br0                  # 将虚拟机连入宿主机的网络中
--graphics vnc,listen=0.0.0.0         # 使vnc可以连接
--noautoconsole                       # 禁止自动连接至虚拟机的控制台

虚拟机管理:

连接

vncview 端口可用netstat -tnlp 查看
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pvHt7cpn-1607307552811)(_v_images/20201019113245168_30097.png)]
安装过程和vmware 安装无异
vi /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=0e913cd6-599e-4bdb-a2ca-2c15bb87ea60
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.50.100
GATEWAY=192.168.50.254
DNS1=114.114.114.114
DNS2=8.8.8.8
[root@localhost ~]# ping -c 3 g.cn
PING g.cn (203.208.41.98) 56(84) bytes of data.
64 bytes from 203.208.41.98 (203.208.41.98): icmp_seq=1 ttl=128 time=22.7 ms
64 bytes from 203.208.41.98 (203.208.41.98): icmp_seq=2 ttl=128 time=18.9 ms
64 bytes from 203.208.41.98 (203.208.41.98): icmp_seq=3 ttl=128 time=22.2 ms

--- g.cn ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2005ms
rtt min/avg/max/mdev = 18.998/21.344/22.752/1.678 ms
[root@localhost ~]# 

使用 ssh 可直接连接

初始化

systemctl stop firewalld
systemctl stop NetworkManager
systemctl disable firewalld
systemctl disable NetworkManager

宿主机能使用console命令连接
systemctl start serial-getty@ttyS0.service
systemctl enable serial-getty@ttyS0.service
setenforce 0
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config

epel源
rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
yum install -y net-tools vim lrzsz tree screen lsof tcp wget tcpdump nc mtr nmap openssl-devel ntpdate glances bash-completion psmisc

文件描述符数量
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
echo "* soft nproc 65535" >> /etc/security/limits.conf
echo "* hard nproc 65535" >> /etc/security/limits.conf

记录历史命令
echo 'export HISTTIMEFORMAT=" %F %T `whoami` "' >> /etc/profile
source /etc/profile

ntp配置
crontab -e
*/5 * * * * /usr/sbin/ntpdate time1.aliyun.com

【内核参数优化】
cat /etc/sysctl.conf
# 表示套接字由本端要求关闭,这个参数决定了它保持在FIN-wAIT-2状态的时间,默认值是60秒,建议调整为2,该参数对应系统路径为:/proc/sys/net/ipv4/tcp_fin_timeout 60
net.ipv4.tcp_fin_timeout = 2

# 表示开启TCP链接中TIME_WAIT sockets的快速回收,该参数对应系统路径为:/proc/sys/net/ipv4/tcp_tw_recycle,默认为0 表示关闭,不建议开>启,因为nat网络问题
net.ipv4.tcp_tw_reuse = 1

# reuse和recycle这俩个参数是为防止生产环境下web,squid等业务服务器time_wait网络状态数量过多设置的
net.ipv4.tcp_tw_recycle = 0

#表示开启SYN Cookies功能,当出现SYN等待队列溢出时,启用Cookies来处理,可防范少量SYN攻击,该参数对应系统路径为:/proc/sys/net/ipv4/tcp_syscookies,默认为1,表示开启
net.ipv4.tcp_syncookies = 1

# 关闭ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

# 避免放大攻击
net.ipv4.icmp_echo_ignore_broadcasts = 1

#允许系统打开的端口范围,不建议从1024开始,因为某些端口会存在10000以内。一般情况下已够用。
net.ipv4.ip_local_port_range = 10000    65000

缓存设置
yum makecache

克隆

将c7克隆一个为c7-2
virt-clone -o c7 -n c7-2 -f /data/img/c7-2.qcow2 

修改ip地址之后即可使用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1PvkWbB4-1607307552814)(_v_images/20201019115130279_16425.png =467x)]

删除

#!/bin/bash
#delete KVM host completely
read -p "please input host that you want to delete:" $host
virsh destroy $host
virsh undefine $host
rm -f /var/lib/libvirt/images/$host.qcow2

快照

创建

virsh snapshot-create-as c7 c7-mir

恢复

yum install acpid -y
恢复快照前虚拟机需要关闭
virsh snapshot-revert c7 c7-mir

删除

删除快照也需要虚拟机关闭
virsh snapshot-delete c7 c7-mir

查看
[root@km img]# virsh snapshot-list c7
 Name                 Creation Time             State
------------------------------------------------------------
 c7-mir               2020-10-18 23:58:49 -0400 running

[root@km img]# 

virsh snapshot-dumpxml c7 c7-mir ## 查看一个快照的详细信息
virsh snapshot-current #查看最新的快照

迁移

虚拟机迁移分为冷迁和热迁
冷迁:又叫静态迁移,虚拟机在关机状态下,拷贝虚拟机虚拟磁盘文件与配置文件到目标主机中,实现的迁移。
热迁:又叫动态迁移,虚拟机无需关机,无需拷贝虚拟磁盘文件,但是需要迁移到的虚拟主机之间需要有相同的目录结构虚拟机磁盘文件.
基于共享存储的热迁移

冷迁
    迁移源主机:    192.168.50.40 km
    迁移目标主机: 192.168.50.41  km2

1.确定虚拟机处于关机状态
# virsh list --all
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z9Ev8yvD-1607307552815)(_v_images/20201019121720164_5506.png =498x)]
2准备迁移c7虚拟机,查看该虚拟机配置的磁盘文件
virsh domblklist c7
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aB6nhsGl-1607307552818)(_v_images/20201019122004881_14856.png =360x)]
3.拷贝磁盘文件,配置文件到目标宿主机

# cd  /data/img
# rsync  c7.qcow2 192.168.50.41:/data/img
# cd  /etc/libvirt/qemu
# rsync  c7.xml  192.168.50.41:/etc/libvirt/qemu

4.在目标宿主机上激活虚拟机

# virsh define /etc/libvirt/qemu/test.xml

5.启动虚拟机

# virsh start test
热迁(基于本地存储)
    迁移源主机:    192.168.50.40 
    迁移目标主机:  192.168.50.41
    使用tcp认证

配置libvirtd服务** 源宿主机和目标宿主机都要执行**
vim /etc/libvirt/libvirtd.conf

listen_tls = 0  
listen_tcp = 1
tcp_port = "16509"
listen_addr = "0.0.0.0"
auth_tcp = "none"
mdns_adv = 0

配置libvirtd监听方式(无论是tcp,ssh,tls认证方式都需要配置) ** 源宿主机和目标宿主机都要执行**

# vim /etc/sysconfig/libvirtd
 LIBVIRTD_ARGS="--listen"

**编辑/etc/libvirt/qemu.conf文件 **源宿主机和目标宿主机都要执行

#vim /etc/libvirt/qemu.conf
vnc_listen = "0.0.0.0"

重启libvirtd服务,使配置生效, 源宿主机和目标宿主机都要执行

systemctl restart libvirtd

检查端口和进程,源宿主机和目标宿主机都要执行

# netstat -tanp |grep libv
            tcp   0   0 0.0.0.0:16509      0.0.0.0:*    LISTEN   5061/libvirtd

原机器和目标机器要做好hosts解析
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y4Lo7cr9-1607307552819)(_v_images/20201019143319844_22546.png =650x)]
在源宿主机测试连接目标宿主机

# virsh -c qemu+tcp://192.168.50.41/system  list --all

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iAGbjQBr-1607307552820)(_v_images/20201019141636057_21240.png =580x)]
在目标宿主机上创建同样大小的磁盘文件,名称,路径,大小都要一样

# virsh vol-create-as img c7-2.qcow2 10G --format qcow2

迁移

# virsh migrate --live --copy-storage-all --unsafe --persistent  test qemu+tcp://km-2/system

不知道是不是宿主机是vmware 的缘故报错说cpu 不支持

硬件管理

添加硬件都可以用virsh edit DomainName 来修改

cpu

生成环境只增不减
virsh setvcpus c7 2

硬盘

创建一个硬盘
qemu-img create -f qcow2 c7-sdb.qcow2 20G
#新建xml文件
[root@idc img]# vim temp.xml

<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='writeback'/>
<source file='/data/img/c7-sdb.qcow2'/>
<target dev='sdb' bus='scsi'/>
</disk>

#加载xml文件 参数 --config 是写入配置文件 --live 是热添加

virsh attach-device c7 temp.xml --config --live

Device attached successfully

#查看虚拟机c7的硬盘信息
virsh domblklist c7
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-12e23j1r-1607307552822)(_v_images/20201019165550590_28342.png =394x)]
讨论技术可加群:438676220

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值