KVM架构:

KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案。KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度;
虚机的每个虚拟 CPU 被实现为一个常规的 Linux 进程。这使得 KMV 能够使用 Linux 内核的已有功能。
但是,KVM 本身不执行任何硬件模拟,需要客户空间程序通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟的 I/O,并将它的视频显示映射回宿主的显示屏。
目前这个应用程序是 QEMU。

 

KVM 的功能列表
KVM 所支持的功能包括:
支持CPU 和 memory 超分(Overcommit)
支持半虚拟化I/O (virtio)
支持热插拔 (cpu,块设备、网络设备等)
支持对称多处理(Symmetric Multi-Processing,缩写为 SMP )
支持实时迁移(Live Migration)
支持 PCI 设备直接分配和 单根I/O 虚拟化 (SR-IOV)
支持 内核同页合并 (KSM )
支持 NUMA (Non-Uniform Memory Access,非一致存储访问结构 )

KVM 工具集合
libvirt:操作和管理KVM虚机的虚拟化 API,使用 C 语言编写,可以由 Python,Ruby, Perl, PHP, Java 等语言调用。可以操作包括 KVM,vmware,XEN,Hyper-v, LXC 等 Hypervisor。
Virsh:基于 libvirt 的 命令行工具 (CLI)
Virt-Manager:基于 libvirt 的 GUI 工具
virt-v2v:虚机格式迁移工具
virt-* 工具:包括 Virt-install (创建KVM虚机的命令行工具), Virt-viewer (连接到虚机屏幕的工具),Virt-clone(虚机克隆工具),virt-top 等
sVirt:安全工具

 

该实验是用的VMware 12 pro

(每行前面带 # 号的都是一条命令,没带 # 号的都是执行带 # 号的命令后出来的结果)
开始安装:
在VMware 12 pro 中装一个centos 7
在 “编辑虚拟机设置” --->"处理器"--->勾选"虚拟化 Intel VT-x/EPT 或 AMD-V/RVI" 和 "虚拟化CPU性能计数器"
--->开启虚拟机---> 执行 cat /proc/cpuinfo |egrep "vmx|svm" # 看系统是否支持虚拟化

# yum -y install vim lrzsz
# cat /etc/centos-release
  CentOS Linux release 7.4.1708 (Core)
# uname -a
  Linux bogon 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

# mount /dev/sr0 /mnt/usb1      # 挂载光盘
# yum -y install qemu-kvm virt-manager python-virtinst qemu-kvm-tools libvirt virt-install libvirt-python      # 其中第2-4个是KVM的管理工具
# lsmod |grep kvm         # 确定是否正确加载kvm模块
# reboot              # 重启后下面的命令才管用,否则会出错
# systemctl enable libvirtd       # 将libvitd服务加入开机自启
# systemctl start libvirtd      # 启动libvitd服务
# systemctl status libvirtd      # 查看libvitd服务的状态

# virsh -c qemu:///system list (或者virsh  list)     # 如出现下面的信息则表明kvm成功安装

Id 名称             状态
----------------------------------------------------

网卡配置:
# cd /etc/sysconfig/network-scripts
# cp ifcfg-ens33 ifcfg-br0
# vim ifcfg-ens33
    DEVICE=ens33
    BRIDGE=br0
    ONBOOT=yes
# vim ifcfg-br0
    TYPE=Bridge
    BOOTPROTO=static
    DEVICE=br0
    ONBOOT=yes
    IPADDR=192.168.0.223
    NETMASK=255.255.255.0
    GATEWAY=192.168.0.2
    DNS1=219.xxx.xxx.xx
    DNS2=219.xxx.xxx.xx      # 我这里是用的centos做的网关服务器上的网,所以我这里写的是外网的dns

开启转发功能并修改ulimit参数
# echo 1 > /proc/sys/net/ipv4/ip_forward
# /bin/echo "* soft nproc 65500" >>/etc/security/limits.conf
# /bin/echo "* hard nproc 65500" >>/etc/security/limits.conf
# /bin/echo "* soft nofile 65500" >>/etc/security/limits.conf
# /bin/echo "* hard nofile 65500" >>/etc/security/limits.conf

 

拷贝win10镜像:
# dd if=/dev/sr0 of=/mnt/usb2/win10.iso
注:如果是centos系统,则把centos镜像挂载上去(sr0里面就是centos的系统),然后 of 时指定位置和名字即可

创建虚拟机硬盘:
# mkdir /kvmdir # 创建虚拟硬盘的存放位置
# qemu-img create -f qcow2 /kvmdir/opop.img 500G       # 创建一个500G的qcow2格式并且名为opop的镜像
输出:Formatting '/kvmdir/opop.img', fmt=qcow2 size=53687091200 encryption=off cluster_size=65536 lazy_refcounts=off
# ls -al /kvmdir/ # 查看镜像
-rw-r--r-- 1 root root 197632 5月 2 09:39 opop.img

创建虚拟机:
virt-install --virt-type kvm \

--name win10_64 \            # 指定虚拟机的名称

--memory 4096 \             # 指定虚拟机的内存用量

--cdrom=/mnt/usb2/win10.iso \         # 指定cdroom的位置 

--boot cdrom \              # 引导时从cdroom启动

--disk path=/kvmdir/opop.img,bus='ide'  \   # 硬盘的位置和硬盘接口的类型

--cpu host-model-only \          # cpu的模式,man virt-install  可查到该项

--network=default,model='e1000' \      # 网卡的定义和速率

--graphics vnc,listen=0.0.0.0 \          # 指定图形界面和指定连接工具(vnc)并监听所有端口

--vnc --vncport=5900           # 指定VNC的端口

--vcpus 5 \                 # 指定虚拟机的虚拟 CPU (Virtual CPU,VCPU) 数量 

--noautoconsole \              # 无控制台

--os-type=windows \            # 指定系统的类型(这里指定为windows)

开始安装提示信息:
开始安装......
域安装仍在进行。您可以重新连接          # 出现这个后才能用VNC进行连接
到控制台以便完成安装进程。
-----------------------------------------------------------------------------------------------------------------------------------
创建虚拟机时的提示错误和解决办法:
ERROR internal error: process exited while connecting to monitor: Cannot set up guest memory 'pc.ram': Cannot allocate memory
解决办法:
# vim /etc/libvirt/qemu.conf
user = “root”      # 该项去星号
group = "root"    # 该项去星号
# 这个问题是你的虚拟机的内存有点小,虚拟机的内存小的同时还来带一台机器,所以会报错。
刚开始我设置的内存是24G(出错),后来设置成16G(出错),后来设置成10G(也出错了),后来设置成2G能起来了
后来我把VMware的内存调到32G后就能正常的创建4G内存的虚机了
-----------------------------------------------------------------------------------------------------------------------------------
然后用VNC连接就会看到win10的安装画面:
VNC地址:
https://pan.baidu.com/s/15Mtu-il20XxWHkJEYOHaKQ      密码:l94k
打开VNC客户端,输入本机ip:5900(第一个安装的系统默认就是5900,第二个是5901,以此类推)可连接到所通过vmvare创建的kvm虚拟机上
-----------------------------------------------------------------------------------------------------------------------------------
注:上面的 virsh -c qemu:///system list 命令解释:
-c是--connect的意思
官方:
  qemu:///system
  For creating KVM and QEMU guests to be run by thesystem libvirtd instance.
  This is the default modehat virt-manager uses, and what most KVM users want.
翻译:
  QEMU:///系统
  用于创建由KVM和QEMU运行的客人系统libvirtd实例。
  这是默认模式该virt-manager使用,以及大多数KVM用户想要的。
-----------------------------------------------------------------------------------------------------------------------------------
在VMware 12 pro上常见操作命令:
yum -y install numactl
numactl --hardware        # 查看主机上的CPU物理情况
-----------------------------------------------------------------------------------------------------------------------------------
客户机系统三种模式:
Guest 模式: 负责将执行客户机系统非 I/O 代码,并在需要的时候驱动 CPU 退出该模式
Kernel 模式: 负责将 CPU 切换到 Guest mode 执行 Guest OS 代码,并在 CPU 退出 Guest mode 时回到 Kenerl 模式
User 模式: 代表客户机系统执行 I/O 操作
-----------------------------------------------------------------------------------------------------------------------------------
kvm文件默认路径:
    cd /etc/libvirt/qemu
磁盘文件默认路径:
    cd /var/lib/libvirt/images/
kvm虚拟机开机自启动目录:
    /etc/libvirt/qemu/autostart
    virsh autostart win10_64       # 这个是命令
默认情况下virsh工具不能对linux虚拟机进行关机操作,linux操作系统需要开启与启动acpid服务:
    chkconfig acpid on
    service acpid restart
关机:
    virsh shutdown win10_64 # win10_64是虚拟机的名字
强制关闭电源
    virsh destroy win10_64
导出KVM虚拟机配置文件
    virsh dumpxml win10_64 > /etc/libvirt/qemu/wintest02.xml # 可以通过这种方式进行备份
删除kvm虚拟机
    virsh undefine win10_64
编辑KVM虚拟机配置文件:
    vim /etc/libvirt/qemu/win10_64.xml 或者 virsh edit win10_64
挂起虚拟机:
    virsh suspend win10_64
恢复服务器
    virsh resume win10_64
-----------------------------------------------------------------------------------------------------------------------------------

Centos 7 KVM安装win10的更多相关文章

  1. centos 和KVM安装

  2. KVM安装、镜像创建(一)

    环境准备 VMware Workstation Pro启动虚拟化 查看启动的系统是否支持vmx或svm grep -E '(vmx|svm)' /proc/cpuinfo 备注:操作系统centos ...

  3. CentOS 7.5 安装KVM虚拟机(Windows)

    一.KVM环境搭建1.检测系统是否支持cat /proc/cpuinfo | egrep 'vmx|svm' KVM是基于x86虚拟化扩展(Intel VT 或者 AMD-V)技术的虚拟机软件,所以查 ...

  4. CentOS 7.5 安装KVM虚拟机(Linux)

    1.认识理解KVM虚拟机 Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中.它使用Linu ...

  5. 服务器里Centos 7安装KVM,并通过KVM安装Centos 7

    一.安装KVM 1.进入系统后,检查cpu参数是否支持虚拟化: [root@localhost ~]# grep -Ei 'vmx|svm' /proc/cpuinfo 如果有出现vmx或者svm关键 ...

  6. 云计算之KVM安装(二)

    云计算之KVM安装(二) 调整虚拟机 虚拟化Intel使用的是intel VT-X AMD使用的是AMD-V 创建虚拟机步骤 1.准备虚拟机硬盘 2.需要系统iso镜像 3.需要安装一个vnc的客户端 ...

  7. 烂泥:kvm安装windows系统蓝屏

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 最近一直在学习有关KVM的知识,实验一直是在虚拟机VM中进行的.今天刚好公司有一台空闲的服务器,直接拿来安装centos.kvm等等,然后相关的配置. ...

  8. 烂泥:虚拟化KVM安装与配置

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 最近打算把公司的服务器全部做成虚拟化,一是跟有效的利用了服务器,二也是对自己是一个学习的机会. KVM的安装与配置步骤如下: 1. 查看是否支持虚拟化 ...

  9. kvm安装及配置

     yum install kvm libvirt python-virtinst qemu-kvm virt-viewer bridge-utils virt-install 修改网卡信息 /etc/ ...

随机推荐

  1. python全局解释器锁(GIL)

    文章作者:卢钧轶(cenalulu) 本文原文地址:http://cenalulu.github.io/python/gil-in-python/ ,对文章做了适当的修改,加入了一些自己的理解. CP ...

  2. js之搜索框

    目标效果:点击搜索框,搜索框内提示信息消失,可输入搜索信息,点击搜索框外搜索框如果没提示信息或者为空时,显示搜索框提示信息,如果有搜索信息,显示搜索信息. 代码如下: <!DOCTYPE htm ...

  3. js keyup、keypress和keydown事件

    js keyup.keypress和keydown事件都是有关于键盘的事件 当一个按键被pressed 或released在每一个现代浏览器中,都可能有三种客户端事件. keydown event k ...

  4. Docker 镜像运行时区不准确处理

    启动 tomcat 容器时发现容器时间与本地时间不一致,相差 8 个小时 docker run -d --rm -p 8888:8080 tomcat:latest # 查看容器 ID docker ...

  5. Vue性能优化

    今天来谈一谈Vue中一些性能优化的问题,仅仅是个人使用中的一些小心得,来,今天我一句废话不多说,直接上内容好吧 1.v-if和v-show的使用, 我们都知道这两个都可以控制显隐,那我们用哪个呢,个人 ...

  6. 【读书笔记】iOS-单元测试工具

    一,单元测试工具. 1,OCUnit 苹果自带的. 2,GHUnit GHUnit是Objective-C语言里的另外一种单元测试工具. GHUnit- https://github.com/gh-u ...

  7. css div相对屏幕永远居中

    不管屏幕如何滑动,该div始终保持在屏幕正中央(支持IE7(包括IE7)以上版本) <div class="loginBox"></div> .loginB ...

  8. Android Studio 在项目中引用第三方jar包

    在Android Studio项目中引用第三方jar包的方法: 步骤: 1.在build.gradle文件中添加如下代码: 备注:要添加在Android作用域下 sourceSets { main { ...

  9. OneAPM大讲堂 | Metrics, Tracing 和 Logging 的关系

    [编者按]这是在 OpenTracing 和分布式追踪领域内广受欢迎的一片博客文章.在构建监控系统时,大家往往在这几个名词和方式之间纠结. 通过这篇文章,作者很好的阐述了分布式追踪.统计指标与日志之间 ...

  10. mysql 临时数据突然变大

    晚上收到紧报警,一台数据库服务器磁盘空间使用快速从50%使用率到80%.我们生产的数据库都磁盘是>2T 登录机器发现*.myd文件异常大 登入数据库查询进程 mysql>showproce ...