kvm使用场景


1.公司测试环境/开发环境

测试开发环境可以使用配置低点的物理机就可以

2.公司生产环境

一般小公司没有私有云或容器团队,运维人员可能就1-2个,然后公司也不舍得花钱买商业化的私有云。

那么在这种情况下搞一台或多台高配的物理机里面装多个虚拟机,可以设置基础的虚拟机模板或根据不同业务设置不同的虚拟机模板,完成初步的环境标准,便于以后自动化运维。

KVM介绍

KVM(Kernel-based Virtual Machine)是一个linux的内核模块,现在已经是内核自带默认编译,不需要单独安装。主要负责控制cpu和内存跟内核的交互调度等工作,工作在内核态。

KVM需要CPU中虚拟化功能的支持,只可在具有虚拟化支持的CPU上运行,即具有VT功能的Intel CPU和具有AMD-V功能的AMD CPU。

KVM 虚拟化特性:

  • 嵌入到Linux正式Kernel(提高兼容性)
  • 代码级资源调用(提高性能)
  • 虚拟机就是一个进程(内存易于管理)
  • 直接支持NUMA技术(提高扩展性)
  • ---------- RedHat收购KVM -----------
  • 保持开源发展模式 更好的商业支持及服务保障

虚拟机镜像:

  • 全镜像模式-RAW
  • 稀疏模式-QCOW2

KVM 管理工具:

Libvirt介绍

libvirt 提供一种虚拟机监控程序不可知的 API 来安全管理运行于主机上的客户操作系统。libvirt 本身不是一种工具, 它是一种可以建立工具来管理客户操作系统的 API。libvirt 本身构建于一种抽象的概念之上。它为受支持的虚拟机监控程序实现的常用功能提供通用的 API。libvirt 起初是专门为 Xen 设计的一种管理 API,后来被扩展为可支持多个虚拟机监控程序。

QEMU介绍

有两种主要运作模式:
* User mode模拟模式,亦即是用户模式。QEMU能启动那些为不
同中央处理器编译的Linux程序。而Wine及Dosemu是其主要目标。
* System mode模拟模式,亦即是系统模式。QEMU能模拟整个电脑系统,
包括中央处理器及其他周边设备。它使得为跨平台编写的程序进行测试及除错工作变得容易。
其亦能用来在一部主机上虚拟数部不同虚拟电脑。

配置步骤


CentOS 7.2 系统最小化安装
一,关闭Selinux,Firewalld,Networkmanager,配置dns服务器ip
[root@--x-x img]# systemctl disable NetworkManager
[root@--x-x img]# systemctl disable firewalld
[root@--x-x img]# grep ^SELINUX /etc/selinux/config
SELINUX=disabled
[root@--x-x network-scripts]# more /etc/resolv.conf
nameserver 114.114.114.114
nameserver 8.8.8.8
二,配置阿里云yum源
rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
三,安装系统常用软件包
yum install net-tools vim screen mtr  nc nmap tree lrzsz open-ssl-devel gcc glibc gcc-c* make zip dos2unix  systat mysql lsof tcpdump ntpdate -y
四,物理机确认bios确认是否开启虚拟机技术

虚拟化 Inter VT-x/EPT(内存虚拟化)或 AMD-V/RVI(V) 开启

grep -E '(vmx|svm)' /proc/cpuinfo
五,安装kvm相关的软件包

kvm是内核虚拟机,需要加载内核模块,libvirtd是用于管理kvm虚拟机

yum install -y qemu-kvm  qemu-kvm-tools  libvirt
六,启动libvirtd
systemctl  start libvirtd
systemctl enable libvirtd
七,安装文件存放的目录,qemu目录是存放虚拟机xml文件

xml是libvirt 自动生成,xml里面的virtio是半虚拟化渠道,hvm是硬件虚拟机,还有一些其他的虚拟机配置信息

[root@192-168-x-x libvirt]# ls
libvirt-admin.conf libvirt.conf libvirtd.conf lxc.conf nwfilter qemu qemu.conf qemu-lockd.conf storage virtlockd.conf virtlogd.conf
[root@192-168-x-x libvirt]# pwd
/etc/libvirt
八,启动libvirtd后,会自动创建virbr0 桥接网卡 IP地址永远都是192.168.122.1

可以用ifconfig命令查看

#ifconfig
......
virbr0: flags=<UP,BROADCAST,MULTICAST> mtu
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether :::5c:f1:a5 txqueuelen (Ethernet)
RX packets bytes (0.0 B)
RX errors dropped overruns frame
TX packets bytes (0.0 B)
TX errors dropped overruns carrier collisions
九,查看dnsmasq进程,dns和dhcp功能 帮助分配虚拟机,dnsmasq无需配置启动就行
[xiewenming@--x-x ~]$ ps aux |grep dnsmasq
nobody 0.0 0.0 ? S Mar14 : /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
root 0.0 0.0 ? S Mar14 : /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
xiewenm+ 0.0 0.0 pts/ S+ : : grep --color=auto dnsmasq

安装virt-install,virt-edit,virt-manager,tigervnc-server和tigervnc相关的包,分别用于 安装,编辑,管理,vnc服务来管理维护虚拟机

十,libvirt 管理kvm虚拟机

可以提供接口 virsh等 底层都是libvirt libvirtd服务停止 kvm正常,只是管理不了,virsh是用C写的

yum install -y virt-install libguestfs-tools-c  virt-manager tigervnc-server tigervnc
十一,配置网卡桥接方法一

使用命令重启服务器或重启网络后配置丢失 (一般用于调试用)

brctl addbr br0
brctl addif br0 eth0 #(执行这一步会断网,可以把所有步骤写在一个脚本里)
ip addr del dev eth0 192.168.x.x/
ifconfig br1 192.168.x.x/ up
route add default gw 192.168.x.1
十二,配置网卡桥接方法二

桥接信息写到配置文件里面,下面以桥架网卡1为例

[root@192-168-x-x network-scripts]# more ifcfg-br1
TYPE=Bridge
BOOTPROTO=none
DEVICE=br1
ONBOOT=yes
IPADDR0=192.168.x.x
PREFIX0=
GATEWAY0=192.168.x.1
[root@192-168-x-x network-scripts]# more ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BRIDGE=br1
[root@192-168-x-x network-scripts]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.x.10 0.0.0.0 UG br1
169.254.0.0 0.0.0.0 255.255.0.0 U br0
169.254.0.0 0.0.0.0 255.255.0.0 U br1
192.168.x.0 0.0.0.0 255.255.255.0 U br1
192.168.122.0 0.0.0.0 255.255.255.0 U virbr0
十三,安装图形桌面方便vnc管理
yum groupinstall "X Window System"
yum install gnome-classic-session gnome-terminal nautilus-open-terminal control-center liberation-mono-fonts
unlink /etc/systemd/system/default.target
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
十四,配置vncserver及密码默认端口是从5901开始
[root@192-168-x-x network-scripts]# vncpasswd
Password: #设置密码
[root@192-168-x-x network-scripts]# vncserver
New '192-168-x-x.xxx.com:1 (root)' desktop is 192-168-x-x.xxx.com:
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/192-168-x-x.xxx.com:.log
[root@192-168-x-x network-scripts]# netstat -an|grep 0.0.0.0:
tcp 0.0.0.0: 0.0.0.0:* LISTEN
十五,vnc客户端连接管理

十六,登陆以后,打开控制台使用virt-manager打开虚拟机管理界面

十七,进行虚拟机维护

可以关机,重启,删除,增加删除配置,安装系统等等 ,也可以支持安装Windows系统虚拟机

十八,常用的维护命令

可以使用命令安装虚拟机

virt-install创建虚拟机,不熟悉可以用virt-install --help查看帮助命令

virt-intall --virt-type kvm --name CentOS--x86_64 --ram  --cdrom=/Data/CentOS--x86_64-DVD--.iso \
--disk path=/Data/CentOS--x86-_64.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

用VNC客户端链接(60s内) 默认从5900开始,客户端安装截图略....我一般都通过vnc然后再用virt-manager进行管理虚拟机

brctl show #查看桥接网卡信息
virsh edit vname.xml #修改xml文件
virsh shutdown vname #关闭虚拟机
virsh start vname #启动虚拟机
virsh list --all #列出全部虚拟机
virsh dumpxml vname > vname.bak.xml #备份
qemu-img convert -f raw -O qcow2 vname test.qcow2 #镜像文件格式转换
qemu-img create -f raw node-192.168.3.30-centos-7.2.disk 50G #创建磁盘镜像命令
virsh undefine node1.xml (删除虚拟机域,生产环境不用此命令,非常危险)
virt-clone -o centos7_mini -n centos7_mini15 --auto-clone #克隆mini,新克隆的为mini15
-o #原始机名字,必须为关闭或暂停状态
-n #新客户机的名称
--auto-clone #从原始客户机配置中自动生成克隆名称和存储路径
--replace #不检查命名冲突,覆盖任何使用相同名称的客户机
-f #可以指定克隆后的主机镜像放在指定目录下 virsh autostart xxx #让子机随宿主机开机自动启动
virsh autostart --disable xxx #解除自动启动 virt-install #建立kvm虚拟机
virsh list #查看正在运行的KVM虚拟机
virsh start name #启动KVM虚拟机
virsh shutdown name #正常关闭KVM虚拟机
virsh destroy name #强制关闭KVM虚拟机(类似于直接断电)
virsh suspend name #挂起KVM虚拟机
virsh resume name #恢复挂起的KVM虚拟机
virsh dumpxml name #查看KVM虚拟机配置文件,可以把输出的内容定义到xml里,用来克隆迁移用。
virsh edit name #编辑KVM虚拟机的xml配置文件
virsh define /etc/libvirt/qemu/name.xml #定义注册虚拟机,需要先查看xml文件对应的镜像,img等路径是否存在或修改指定路径
virsh undefine name #彻底删除KVM虚拟机,不可逆,如果想找回来,需要备份/etc/libvirt/qemu的xml文件
virsh attach-disk centos7_mini15 /home/disk_data/centos7_mini15.img vdb #分离虚拟机硬盘
virsh detach-disk centos7_mini15 /home/disk_data/centos7_mini15.img vdb#为虚拟机添加硬盘

遇到的一些问题


1.之前用CentOS7.3的时候windows虚拟机安装的时候黑屏,一直没有找到解决办法,最后没有办法就降到CentOS7.2,所有建议生产环境不用使用CentOS7.3部分服务有兼容的不太好

2.磁盘满了部分虚拟机进程被系统kill掉

3.没有可用内存时,也会出现部分虚拟机被系统kill掉,严重的情况下物理服务器可能会自动重启(所有在使用的过程中资源尽量不要超配)

4.有时可能会出现桥接的网卡和时间配置的网卡不是同一个 可以用ifconfig -a查看

KVM配置及维护的更多相关文章

  1. Linux DNS 服务器安装、配置和维护

    每个 IP 地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开.有了主机名,就不要死记硬背每台 IP 设备的 IP 地址,只要记住相对直观有意义的主机名就行了.这就是 DNS ...

  2. [转载]虚拟化之KVM配置

    虚拟化之KVM配置 2017-11-06 [TOC] 虚拟化:通过虚拟化工具把cpu,内存,硬盘等真实硬件资源给模拟成更少的虚拟硬件资源.进行虚拟化的好处是,最大限度的利用硬件资源.也是云计算的基础. ...

  3. Vue+webpack项目配置便于维护的目录结构

    新建项目的时候创建合理的目录结构便于后期的维护是很重要 环境:vue.webpack 目录结构: 项目子目录结构 子目录结构都差不多,主要目录是在src下面操作 src目录结构 src/common ...

  4. ES系列十六、集群配置和维护管理

    一.修改配置文件 1.节点配置 1.vim elasticsearch.yml # ======================== Elasticsearch Configuration ===== ...

  5. CentOS下KVM配置NAT网络(网络地址转换模式)

    KVM虚拟机Nat方式上网: # 查看当前活跃的网络 virsh net-list # 查看该网络的详细配置 virsh net-dumpxml default 客户机的XML配置文件中interfa ...

  6. 3、kvm配置vnc

    配置kvm通过vnc访问 virsh edit privi-server 添加如下配置: <graphics type='vnc' port='5901' autoport='no' liste ...

  7. kvm配置虚拟机[待整理]

    working note 4-12-2016 1,利用libvirt图形虚拟机管理工具virt-manager搭建虚拟机,通过存储池(storage pool )和卷(volume)存放虚拟机镜像(I ...

  8. Oracle 11g Dataguard 配置,维护与详解 (ADG)

    一.前言: 本手册主要记录如何配置,还介绍了配置原因,以及注意要点,已经主备切换,以及故障转移等重要操作步骤,我希望这个文章可以作为进行dataguard配置的一个参考手册. 二.前提 1.主库是归档 ...

  9. GitLab 安装,配置及维护

    参考: GitLab 官方文档 docker-gitlab,通过 docker-compose 快速安装 GitLab rake,是 Rails 的工具,类似 ruby 中常用的的 make.通过 R ...

随机推荐

  1. HTML5跨平台开发环境配置

    http://hi.baidu.com/kuntakinte/item/1bbd3759b4901a3695eb050c

  2. Yii框架2.0的小部件

    小部件是视图里的可重用单元. 小部件是在视图中使用的,但是可能需要使用控制器传给他的模型,比如在渲染表单的时候.比如一般的时间拾取器就可以直接砸视图里加入如下代码就可以: <?php use y ...

  3. react 组件积累

    material-ui material-table ant-design https://ant.design/docs/react/getting-started-cn 定义组件(注意,组件的名称 ...

  4. mytest3.py-api接入平台获取数据

    mytest3.py-api接入平台获取数据 import base64 import datetime import hashlib import urllib import urllib.pars ...

  5. PHP SPL使用方法和他的威力

    什么是SPL,如何使用,他有什么作用,下面我我们就讲讲PHP SPL的用法 SPL,PHP 标准库(Standard PHP Library) ,此从 PHP 5.0 起内置的组件和接口,并且从 PH ...

  6. mysql杀死线程

    查询 正在执行的事务:SELECT * FROM information_schema.INNODB_TRX 根据这个事务的线程ID(trx_mysql_thread_id): 可以使用mysql命令 ...

  7. 记录:tensoflow改错TypeError: Cannot interpret feed_dict key as Tensor: Can not convert a float into a Te

    错误描述: TypeError: Cannot interpret feed_dict key as Tensor: Can not convert a float into a Tensor. 改错 ...

  8. [Python] logging.logger

    <1>. mylogger = logging.getLogger("abc") logging.debug()/logging.info()/logging.warn ...

  9. iClap助力移动互联网企业高效实现规范化管理

    移动互联网的迅速崛起,智能移动客户端深刻而全面地影响着人类生活与工作习惯.而企业办公已从原始的纸张办公,到固定PC办公,跨入到一个应用范围更广.效率更高的移动办公时代.由静生动,让企业办公更加人性化和 ...

  10. ZOJ - 3229 Shoot the Bullet (有源汇点上下界最大流)

    题意:要在n天里给m个女生拍照,每个女生有拍照数量的下限Gi,每天有拍照数量的上限Di,每天当中每个人有拍照的上限Lij和Rij.求在满足限制的基础上,所有人最大能拍多少张照片. 分析:抛开限制,显然 ...