2016/12/17
1.kvm vmware
2.openstack
3.puppet saltstack ansble
4.docker
KVM介绍
KVM与QEMU
QEMU虚拟化的软件,用户层面的虚拟技术。
KVM内核级虚拟化可以虚拟CPU内存,无法虚拟磁盘网卡,PCI设备,借助QEMU来虚拟。
在vmware workstation中虚拟虚拟机嵌套虚拟。
老服务器需要在BIOS中开启CPU虚拟化。
#################################################################################################################################################################
一、
安装使用KVM
qemu-kvm 模拟虚拟机 virt-install创建虚拟机 libvirt管理虚拟机
[root@linux-node1 ~]# yum install -y qemu-kvm qemu-kvm-tools libvirt
virt-install安装虚拟机用的
[root@linux-node1 ~]# yum install -y virt-install net-tools
启动libvirt
[root@linux-node1 ~]# systemctl enable libvirtd
[root@linux-node1 ~]# systemctl start libvirtd
二、
启动完libvirt之后会自动在虚拟机中创建virbr网卡类型
创建一台虚拟机条件
1.需要硬盘
2.需要镜像
3.需要VNC工具来连接虚拟机
正式开始创建虚拟机步骤:
磁盘格式介绍
raw 裸磁盘不支持快照
qcow2,不保存原始镜像只会记录操作和原始镜像不同的内容,做快照。写时拷贝的一种技术,这种技术把所做的操作记录在一个文件中,只对这个文件镜像。Openstack使用的方式推荐使用这个
区别:
qcow2 数据的基本组成单元是cluster
raw性能比qcow2快
raw创建多大磁盘,就占用多大空间直接分配,qcow2动态的用多大占用多大空间。
创建磁盘
创建虚拟机镜像 raw裸磁盘 磁盘的名称 磁盘多小10G 注意的是这个磁盘只能为一台机器使用,相当于一个10G物理硬盘,在创建其他机器需要重新再创建磁盘。
qemu-img create -f raw /opt/CentOS-7-x86_64.raw 10G
查看磁盘镜像的格式
qemu-img info /opt/CentOS-7-x86_64.raw
注意镜像权限。
安装虚拟机 虚拟机名称自定义 内存大小 镜像路径 指定刚才创建的磁盘。 网络默认使用桥接网卡 监听VNC使用VNC工具连接直接操作
virt-install --virt-type kvm --name CentOS-7-x86_64 --ram 1024 --cdrom=/root/CentOS-7.2-x86_64-DVD-1511.iso --disk path=/opt/CentOS-7-x86_64.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
执行完之后
在VNC中连接
192.168.56.11:5900
安装Centos6
创建10G raw硬盘,创建虚拟机时使用这个10G硬盘,一个硬盘只能使用在一台机器上面。
qemu-img create -f raw /opt/CentOS-6-x86_64.raw 10G
virt-install --virt-type kvm --name CentOS-6-x86_64 --ram 1024 --cdrom=/opt/rhel-server-6.4-x86_64-dvd.iso --disk path=/opt/CentOS-6-x86_64.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
在虚拟机世界里面越简单越好,方便扩展。
如果多次执行安装Centos6
rm -rf /opt/CentOS-6-x86_64.raw
qemu-img create -f raw /opt/CentOS-6.6-x86_64.raw 10G
virt-install --virt-type kvm --name CentOS-6-x86_64 --ram 1024 --cdrom=/opt/rhel-server-6.4-x86_64-dvd.iso --disk path=/opt/CentOS-6.6-x86_64.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
3.TightVNC 连接到192.168.56.11:5900
KVM虚拟机就是一个进程,只要是进程都会受到CPU的调度。
###############################################################################################################################################################
管理KVM虚拟机
一、
常用命令
(0)查看有哪些虚拟机
[root@linux-node1 ~]# virsh list --all
Id Name State
[root@localhost ~]# virsh list --all
[root@linux-node1 ~]# virt-install
#建立kvm虚拟机
[root@linux-node1 ~]# virsh list
#查看正在运行的KVM虚拟机
[root@linux-node1 ~]# virsh list --all
#查看所有KVM虚拟机
[root@linux-node1 ~]# virsh start name
#启动KVM虚拟机
[root@linux-node1 ~]# virsh shutdown name
#正常关闭KVM虚拟机
[root@linux-node1 ~]# virsh destroy name
#强制关闭KVM虚拟机(类似于直接断电)
[root@linux-node1 ~]# virsh suspend name
#挂起KVM虚拟机
[root@linux-node1 ~]# virsh resume name
#恢复挂起的KVM虚拟机
[root@linux-node1 ~]# virsh dumpxml name
#查看KVM虚拟机配置文件
[root@linux-node1 ~]# virsh edit name
#编辑KVM虚拟机的xml配置文件
[root@linux-node1 ~]# virsh undefine name
#彻底删除KVM虚拟机,不可逆,如果想找回来,需要备份/etc/libvirt/qemu的xml文件)
----------------------------------------------------
- CentOS-7-x86_64 shut off
(1)启动kvm虚拟机
[root@linux-node1 ~]# virsh start CentOS-7-x86_64
(2)关闭KVM虚拟机
[root@linux-node1 ~]# virsh shutdown CentOS-7-x86_64
(3)挂起KVM虚拟机
[root@linux-node1 ~]# virsh resume CentOS-7-x86_64
Domain CentOS-7-x86_64 resumed
(4)创建快照
查看创建过哪些快照
[root@linux-node1 ~]# virsh snapshot-list CentOS-7-x86_64
[root@linux-node1 ~]# virsh snapshot-create CentOS-7-x86_64 #注意创建快照的命令,raw格式磁盘不支持创建快照
error: unsupported configuration: internal snapshot for disk vda unsupported for storage type ra
[root@linux-node1 ~]# virsh snapshot-delete #删除快照
三、
通过VNC连接到KVM虚拟机设置IP地址
创建完虚拟机默认是没有IP地址,需要修改机器的网卡配置文件。
vim /etc/resolv.conf 添加nameserver
vim /etc/sysconfig/network-scripts/ifcfg-eth0 修改网卡内容 ONBOOT=yes 注释掉UUID
/etc/init.d/network restart 重启网卡
四、
这个就是刚才创建虚拟机生成的xml文件,这个文件记录了虚拟机硬件和软件内容。
[root@linux-node1 ~]# ls /etc/libvirt/qemu/
CentOS-7-x86_64.xml networks
[root@linux-node1 ~]# virsh edit CentOS-7-x86_64.xml 编辑虚拟机的XML文件。
virtio半虚拟化的驱动
五、
测试虚拟机删除和恢复:
虚拟机是通过xml来管理的,不小心把xml删除掉的话可以通过xml来进行恢复,前提是硬盘还在。
(0)备份xml文件
[root@linux-node1 ~]# virsh dumpxml CentOS-7-x86_64 >CentOS-7-x86_64-bakcup.xml
(1)彻底删除kvm虚拟机做测试
[root@linux-node1 ~]# virsh undefine CentOS-7-x86_64
(2)关闭虚拟机
[root@linux-node1 ~]# virsh shutdown CentOS-7-x86_64
(3)查看虚拟机,刚才创建的一台虚拟机没有了。
[root@linux-node1 ~]# virsh list --all
Id Name State
----------------------------------------------------
(4)恢复虚拟机
[root@linux-node1 ~]# virsh define CentOS-7-x86_64-bakcup.xml
(5)启动虚拟机
[root@linux-node1 ~]# virsh start CentOS-7-x86_64
#################################################################################################################################################################
虚拟机调整
CPU 内存
网络
三部分进行调整
一、CPU参数修改
1.编辑虚拟机的XML文件,动态修改CPU个数,不是动态修改CPU个数,修改完需要重新启动KVM虚拟机。
[root@linux-node1 ~]# virsh edit CentOS-7-x86_64
将<vcpu placement='static'>1</vcpu>
修改为<vcpu placement='auto' current="1">4</vcpu> CPU个数允许添加到4个。
重新启动KVM虚拟机
[root@linux-node1 ~]# virsh shutdown CentOS-7-x86_64
[root@linux-node1 ~]# virsh start CentOS-7-x86_64
使用命令修改CPU个数,不用重启自动生效。
[root@linux-node1 ~]# virsh setvcpus CentOS-7777-x86_64 2 --live
二、内存参数设置
修改不了KVM xml配置文件
修改内存只能调小,不能增大内存,可以再创建KVM虚拟机时将内存设置大一些这样就可以*向小的调整了。
[root@linux-node1 ~]# virsh qemu-monitor-command CentOS-7-x86_64 --hmp --cmd balloon 1021
查看内存
[root@linux-node1 ~]# virsh qemu-monitor-command CentOS-7-x86_64 --hmp --cmd info balloon
balloon: actual=1021
三、网络
KVM内网走的是nat转换。
1.查看桥接网卡
[root@linux-node1 ~]# brctl show
bridge name
bridge id
STP enabled
interfaces
virbr0
8000.fe540052e4a8
yes
vnet0
2.将KVM网卡IP地址桥接到物理网卡上
brctl addbr br0
3.创建br0桥接网卡
[root@linux-node1 ~]# brctl addif br0 eth0
4.将br0的关联到eth0上面,这一步会断网。最佳实践是使用脚本。
[root@linux-node1 ~]# ip addr del dev eth0 192.168.56.11/24
进入到虚拟机中操作
5.[root@linux-node1 ~]# ifconfig br0 192.168.56.11/24 up
6.添加路由要不然不能上网。
[root@linux-node1 ~]# route add default gw 192.168.56.2
7.修改xml文件修改网卡
[root@linux-node1 ~]# virsh edit CentOS-7777-x86_64
将
<interface type='network'>
修改为
<interface type='bridge'>
将
<source bridge='br0'/>
修改为
保存退出
8.重启虚拟机
[root@linux-node1 ~]# virsh shutdown CentOS-7-x86_64
Domain CentOS-7-x86_64 is being shutdown
[root@linux-node1 ~]# virsh start CentOS-7-x86_64
Domain CentOS-7-x86_64 started
使用VNC登录上去修改网络配置文件
192.168.56.11:5900
vim /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
NAME=eth0
#UUID=a800d4a6-9b1a-4f4c-95e9-242cdccdf372
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.56.18 #自己设置的网卡IP地址,桥接网卡和物理机在同一个网端中。
NETMASK=255.255.255.0
GATEWAY=192.168.56.2
创建桥接网卡脚本
#!/bin/bash
brctl addbr br0
brctl addif br0 eth0
ip addr del dev eth0 192.168.56.11/24
ifconfig br0 192.168.56.11/24 up
route add default gw 192.168.56.2
相关文章
- teamfoundationserver2010之使用vs2010&&vs2013创建修改签入签出提交代码等操作
- Java-多线程第三篇3种创建的线程方式、线程的生命周期、线程控制、线程同步、线程通信
- iOS多线程编程之创建线程安全(转载)
- iOS多线程编程之创建线程(转载)
- oracle函数创建及调用
- 代码创建数据库_表--SqlServer数据库
- shell 脚本定时创建月份表
- 【翻译】Sencha Touch 2入门:创建一个实用的天气应用程序之三
- Cocos2d-x3.0(一)Cocos2d-x3.0简介以及创建新的Cocos2d-x跨平台工程
- 如何用 React Native 创建一个iOS APP?