kvm虚拟化初体验

One-Way One-Way     2022-08-10     341

关键词:

KVM 是 Kernel-based Virtual Machine 的简称,是 Linux 下 x86 硬件平台上的全功能虚拟化解决方案;

使用 KVM ,可允许运行多个虚拟机,包括 Linux 和 Windows操作系统。

KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。

 

 

KVM 安装

在Windows 7系统中安装使用vmware,在vmware里安装linux系统,并在linux系统中安装使用kvm,虚拟化linux系统。

 

VMware: VMware® Workstation 10.0.0 build-1295980

Linux: CentOS-6.8-x86_64-minimal.iso

 

一、在VMware中安装Linux CentOS系统

使用自定义方式安装CentOS

先创建虚拟机,然后再在光驱中指定iso镜像文件,再安装linux系统。

系统安装完成后,关闭操作系统,打开CentOS系统的虚拟机设置,点击处理器,选择“虚拟化..."

重启系统

命令检查是否支持虚拟化,

egrep -c '(vmx|svm)' /proc/cpuinfo

结果为支持虚拟化的核数

 

二、设置网络

修改ip地址为静态ip

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.126.200
NETMASK=255.255.255.0
GATEWAY=192.168.126.2  

CentOS的网络链接方式是NAT模式,子网IP是192.168.126.0,设置IP地址为192.168.126.200

GATEWAY的设置为虚拟网络编辑器中的NAT设置中的网关地址

重启网络

service network

或重启主机

init 6

检查是否能够访问外网

ping www.baidu.com

 

三、通过yum安装KVM

安装kvm

yum -y install qemu-kvm

 

安装管理工具

yum -y install virt-manager libvirt libvirt-python python-virtinst bridge-utils

 

libvirt 是一套免费、开源的支持Linux下主流虚拟化工具的C函数库。提供一套方便、可靠的编程接口,支持与C,C++,Ruby,Python,Java等多种主流开发语言的绑定。

它支持各种虚拟机监控程序,包括 Xen 和 KVM,以及 QEMU 和用于其他操作系统的一些虚拟产品。

启动,并设置开机启动项

service libvirtd start
chkconfig libvirt don

 

如果不能安装或安装慢,可以换阿里开源镜像

http://mirrors.aliyun.com/

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

 

内核模块查看

查看已载入系统的模块

lsmod | grep kvm

[root@kvm ~]# lsmod| grep kvm
kvm_intel 55464 0 
kvm 345038 1 kvm_intel

载入模块

modprobe kvm
modprobe kvm-intel

 

 

四、创建虚拟系统

关闭防火墙

service iptables stop

关闭防火墙启动项
chkconfig iptables off

 

创建磁盘镜像文件

qemu-img 磁盘镜像工具

qemu-img --help 查看帮助

create [-f fmt] [-o options] filename [size]

fmt磁盘镜像文件格式,支持的格式有:raw cow qcow vdi vmdk cloop dmg bochs vpc vvfat qcow2 qed vhdx parallels nbd blkdebug null host_cdrom host_floppy host_device file gluster

执行脚本:

[root@kvm ~]# mkdir /kvmImg
[root@kvm ~]# qemu-img create -f qcow2 /kvmImg/centos-6.8.qcow2 5G
Formatting '/kvmImg/centos-6.8.qcow2', fmt=qcow2 size=5368709120 encryption=off cluster_size=65536 

 

安装虚拟机 

虚拟机安装的系统为:CentOS-6.8-x86_64-minimal.iso

先将镜像文件上传至主机的/kvmImg目录下

 

virt-install 工具

virt-install --help 查看帮助

脚本命令:

virt-install --virt-type kvm --name centos-6.8 --ram 1024 \
--vcpus 1 \
--cdrom=/kvmImg/CentOS-6.8-x86_64-minimal.iso \
--disk /kvmImg/centos-6.8.qcow2,format=qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=rhel6
[root@kvm kvmImg]# virt-install --virt-type kvm --name centos-6.8 --ram 1024 \
> --vcpus 1 \
> --cdrom=/kvmImg/CentOS-6.8-x86_64-minimal.iso \
> --disk /kvmImg/centos-6.8.qcow2,format=qcow2 \
> --network network=default \
> --graphics vnc,listen=0.0.0.0 --noautoconsole \
> --os-type=linux --os-variant=rhel6

Starting install...
Creating domain...                                                                                 |    0 B     00:00     
Domain installation still in progress. You can reconnect to 
the console to complete the installation process.

 

由于在创建脚本中指定了来宾的图形化工具为VNC --graphics vnc,listen=0.0.0.0,然后通过VNC进入虚拟机,在创建时可指定端口(参考帮助),由于没有指定端口,需要查询一下端口号。

 

查看qemu-kvm虚拟机的端口号为 5900

[root@kvm kvmImg]# netstat -antp|grep kvm
tcp        0      0 0.0.0.0:5900                0.0.0.0:*                   LISTEN      2749/qemu-kvm       

 

通过VNC进入虚拟机

点击ok,进入系统

然后就可以通过vnc对系统进行安装设置,安装完成后,需要重启虚拟机,点击重启

虚拟机没了,找找虚拟机哪里去了

查看端口查找不到

[root@kvm kvmImg]# netstat -antp|grep kvm

那虚拟机应该是关闭了,怎么查看虚拟机的状态,怎么把它启动起来哪?

接下来需要用到virsh工具

 

Virsh:基于libvirt的命令行工具(CLI)

[root@kvm ~]# virsh
Welcome to virsh, the virtualization interactive terminal.

Type: 'help' for help with commands
'quit' to quit

virsh的帮助

virsh # help
Grouped commands:

 Domain Management (help keyword 'domain'):
    attach-device                  attach device from an XML file
    attach-disk                    attach disk device
    attach-interface               attach network interface
    autostart                      autostart a domain
    blkdeviotune                   Set or query a block device I/O tuning parameters.
    blkiotune                      Get or set blkio parameters
    blockcommit                    Start a block commit operation.
    blockcopy                      Start a block copy operation.
    blockjob                       Manage active block operations
    blockpull                      Populate a disk from its backing image.
    blockresize                    Resize block device of domain.
    change-media                   Change media of CD or floppy drive
    console                        connect to the guest console
    cpu-baseline                   compute baseline CPU
    cpu-compare                    compare host CPU with a CPU described by an XML file
    cpu-stats                      show domain cpu statistics
    create                         create a domain from an XML file
    define                         define (but don't start) a domain from an XML file
    desc                           show or set domain's description or title
    destroy                        destroy (stop) a domain
    detach-device                  detach device from an XML file
    detach-disk                    detach disk device
    detach-interface               detach network interface
    domdisplay                     domain display connection URI
    domhostname                    print the domain's hostname
    domid                          convert a domain name or UUID to domain id
    domif-setlink                  set link state of a virtual interface
    domiftune                      get/set parameters of a virtual interface
    domjobabort                    abort active domain job
    domjobinfo                     domain job information
    domname                        convert a domain id or UUID to domain name
    dompmsuspend                   suspend a domain gracefully using power management functions
    dompmwakeup                    wakeup a domain from pmsuspended state
    domuuid                        convert a domain name or id to domain UUID
    domxml-from-native             Convert native config to domain XML
    domxml-to-native               Convert domain XML to native config
    dump                           dump the core of a domain to a file for analysis
    dumpxml                        domain information in XML
    edit                           edit XML configuration for a domain
    inject-nmi                     Inject NMI to the guest
    send-key                       Send keycodes to the guest
    managedsave                    managed save of a domain state
    managedsave-remove             Remove managed save of a domain
    maxvcpus                       connection vcpu maximum
    memtune                        Get or set memory parameters
    migrate                        migrate domain to another host
    migrate-setmaxdowntime         set maximum tolerable downtime
    migrate-setspeed               Set the maximum migration bandwidth
    migrate-getspeed               Get the maximum migration bandwidth
    numatune                       Get or set numa parameters
    reboot                         reboot a domain
    reset                          reset a domain
    restore                        restore a domain from a saved state in a file
    resume                         resume a domain
    save                           save a domain state to a file
    save-image-define              redefine the XML for a domain's saved state file
    save-image-dumpxml             saved state domain information in XML
    save-image-edit                edit XML for a domain's saved state file
    schedinfo                      show/set scheduler parameters
    screenshot                     take a screenshot of a current domain console and store it into a file
    setmaxmem                      change maximum memory limit
    setmem                         change memory allocation
    setvcpus                       change number of virtual CPUs
    shutdown                       gracefully shutdown a domain
    start                          start a (previously defined) inactive domain
    suspend                        suspend a domain
    ttyconsole                     tty console
    undefine                       undefine a domain
    update-device                  update device from an XML file
    vcpucount                      domain vcpu counts
    vcpuinfo                       detailed domain vcpu information
    vcpupin                        control or query domain vcpu affinity
    emulatorpin                    control or query domain emulator affinity
    vncdisplay                     vnc display

 Domain Monitoring (help keyword 'monitor'):
    domblkerror                    Show errors on block devices
    domblkinfo                     domain block device size information
    domblklist                     list all domain blocks
    domblkstat                     get device block stats for a domain
    domcontrol                     domain control interface state
    domif-getlink                  get link state of a virtual interface
    domiflist                      list all domain virtual interfaces
    domifstat                      get network interface stats for a domain
    dominfo                        domain information
    dommemstat                     get memory statistics for a domain
    domstate                       domain state
    list                           list domains

 Host and Hypervisor (help keyword 'host'):
    capabilities                   capabilities
    freecell                       NUMA free memory
    hostname                       print the hypervisor hostname
    node-memory-tune               Get or set node memory parameters
    nodecpustats                   Prints cpu stats of the node.
    nodeinfo                       node information
    nodememstats                   Prints memory stats of the node.
    nodesuspend                    suspend the host node for a given time duration
    qemu-attach                    QEMU Attach
    qemu-monitor-command           QEMU Monitor Command
    qemu-agent-command             QEMU Guest Agent Command
    sysinfo                        print the hypervisor sysinfo
    uri                            print the hypervisor canonical URI
    version                        show version

 Interface (help keyword 'interface'):
    iface-begin                    create a snapshot of current interfaces settings, which can be later committed (iface-commit) or restored (iface-rollback)
    iface-bridge                   create a bridge device and attach an existing network device to it
    iface-commit                   commit changes made since iface-begin and free restore point
    iface-define                   define (but don't start) a physical host interface from an XML file
    iface-destroy                  destroy a physical host interface (disable it / "if-down")
    iface-dumpxml                  interface information in XML
    iface-edit                     edit XML configuration for a physical host interface
    iface-list                     list physical host interfaces
    iface-mac                      convert an interface name to interface MAC address
    iface-name                     convert an interface MAC address to interface name
    iface-rollback                 rollback to previous saved configuration created via iface-begin
    iface-start                    start a physical host interface (enable it / "if-up")
    iface-unbridge                 undefine a bridge device after detaching its slave device
    iface-undefine                 undefine a physical host interface (remove it from configuration)

 Network Filter (help keyword 'filter'):
    nwfilter-define                define or update a network filter from an XML file
    nwfilter-dumpxml               network filter information in XML
    nwfilter-edit                  edit XML configuration for a network filter
    nwfilter-list                  list network filters
    nwfilter-undefine              undefine a network filter

 Networking (help keyword 'network'):
    net-autostart                  autostart a network
    net-create                     create a network from an XML file
    net-define                     define (but don't start) a network from an XML file
    net-destroy                    destroy (stop) a network
    net-dumpxml                    network information in XML
    net-edit                       edit XML configuration for a network
    net-info                       network information
    net-list                       list networks
    net-name                       convert a network UUID to network name
    net-start                      start a (previously defined) inactive network
    net-undefine                   undefine an inactive network
    net-update                     update parts of an existing network's configuration
    net-uuid                       convert a network name to network UUID

 Node Device (help keyword 'nodedev'):
    nodedev-create                 create a device defined by an XML file on the node
    nodedev-destroy                destroy (stop) a device on the node
    nodedev-detach                 detach node device from its device driver
    nodedev-dumpxml                node device details in XML
    nodedev-list                   enumerate devices on this host
    nodedev-reattach               reattach node device to its device driver
    nodedev-reset                  reset node device

 Secret (help keyword 'secret'):
    secret-define                  define or modify a secret from an XML file
    secret-dumpxml                 secret attributes in XML
    secret-get-value               Output a secret value
    secret-list                    list secrets
    secret-set-value               set a secret value
    secret-undefine                undefine a secret

 Snapshot (help keyword 'snapshot'):
    snapshot-create                Create a snapshot from XML
    snapshot-create-as             Create a snapshot from a set of args
    snapshot-current               Get or set the current snapshot
    snapshot-delete                Delete a domain snapshot
    snapshot-dumpxml               Dump XML for a domain snapshot
    snapshot-edit                  edit XML for a snapshot
    snapshot-info                  snapshot information
    snapshot-list                  List snapshots for a domain
    snapshot-parent                Get the name of the parent of a snapshot
    snapshot-revert                Revert a domain to a snapshot

 Storage Pool (help keyword 'pool'):
    find-storage-pool-sources-as   find potential storage pool sources
    find-storage-pool-sources      discover potential storage pool sources
    pool-autostart                 autostart a pool
    pool-build                     build a pool
    pool-create-as                 create a pool from a set of args
    pool-create                    create a pool from an XML file
    pool-define-as                 define a pool from a set of args
    pool-define                    define (but don't start) a pool from an XML file
    pool-delete                    delete a pool
    pool-destroy                   destroy (stop) a pool
    pool-dumpxml                   pool information in XML
    pool-edit                      edit XML configuration for a storage pool
    pool-info                      storage pool information
    pool-list                      list pools
    pool-name                      convert a pool UUID to pool name
    pool-refresh                   refresh a pool
    pool-start                     start a (previously defined) inactive pool
    pool-undefine                  undefine an inactive pool
    pool-uuid                      convert a pool name to pool UUID

 Storage Volume (help keyword 'volume'):
    vol-clone                      clone a volume.
    vol-create-as                  create a volume from a set of args
    vol-create                     create a vol from an XML file
    vol-create-from                create a vol, using another volume as input
    vol-delete                     delete a vol
    vol-download                   download volume contents to a file
    vol-dumpxml                    vol information in XML
    vol-info                       storage vol information
    vol-key                        returns the volume key for a given volume name or path
    vol-list                       list vols
    vol-name                       returns the volume name for a given volume key or path
    vol-path                       returns the volume path for a given volume name or key
    vol-pool                       returns the storage pool for a given volume key or path
    vol-resize                     resize a vol
    vol-upload                     upload file contents to a volume
    vol-wipe                       wipe a vol

 Virsh itself (help keyword 'virsh'):
    cd                             change the current directory
    connect                        (re)connect to hypervisor
    echo                           echo arguments
    exit                           quit this interactive terminal
    help                           print help
    pwd                            print the current directory
    quit                           quit this interactive terminal

查看帮助,使用list命令

virsh # list
 Id    Name                           State
----------------------------------------------------

virsh # list --all
 Id    Name                           State
----------------------------------------------------
 -     centos-6.8                     shut off

使用 list --al列出所有,查看centos-6.8状态是shut off,那接下里想办法把他启动起来

查看帮助,使用start命令

virsh # start centos-6.8
Domain centos-6.8 started

start命令后面参数是虚拟机名称,提示已经启动起来,然后通过vnc链接测试,可以登录系统,一个虚拟机完成简单安装。

 

rhel7体验kvm虚拟机

   KVM是基于内核2.6+的虚拟化,前提是硬件须支持虚拟化!RedHatEnterpriseVirtualization-Management,即RHEV-M(管理多个RHEV-H系统)虚拟化软件qemu,深入内核硬件层虚拟!安装前准备1.查看机器是否支持虚拟化V终端输入命令:grepvmx/... 查看详情

jdbc初体验

...的对象    ResultSet:结果集或一张虚拟表一、代码初体验:(首先数据库中存在相应的数据库,服务开启)1importjava.sql.Connection;2importjava.sql.DriverManag 查看详情

docker深入浅出系列|容器初体验(代码片段)

...Docker深入浅出系列|容器初体验教程目标预备工作容器与虚拟化技术什么是Docker为什么要用Docker事例什么是容器镜像和容器容器与虚拟机的区别Vagrant与Docker的区别Docker引擎和架构Docker的镜像分层VirturalBox和Docker如何搭配使用主体... 查看详情

docker从零开始容器初体验(代码片段)

...。对网络接口和磁盘驱动器等资源的访问在此环境中进行虚拟化,该环境与系统的其他部分隔离,因此您需要将端口映射到外部世界,并具体说明要“复制”到哪些文件哪个环境。但是,在执行此操作之后,您可以预期Dock... 查看详情

runninglinuxkernel初体验

微信公众号获取资料:runninglinuxkernel安装VMware或者virtualBox导入虚拟机编译内核sudo./run_debian_arm64.shbuild_kernel编译根文件系统sudo./run_debian_arm64.shbuild_rootfs运行系统奔跑起来sudo./run_debian_arm64.shrun登录user:rlkpasswd:123退出qemu 查看详情

runninglinuxkernel初体验

微信公众号获取资料:runninglinuxkernel安装VMware或者virtualBox导入虚拟机编译内核sudo./run_debian_arm64.shbuild_kernel编译根文件系统sudo./run_debian_arm64.shbuild_rootfs运行系统奔跑起来sudo./run_debian_arm64.shrun登录user:rlkpasswd:123退出qemu系统CTRL+a,x 查看详情

元宇宙初体验

14天学习训练营导师课程:张子良《元宇宙体系结构、关键技术和实践探索》前言最近这段时间加入勤学会的学习中,我加入的是元宇宙相关的学习组,为什么我选择元宇宙,不仅因为元宇宙是应用场景和生活方式的未来,而且... 查看详情

scala初体验

  因为工作中要用到Scala了,本来前面自己还在学习Storm的,没有办法,先把Scala和Spark的这些内容学完在回去看Storm吧!  既然我们要学习Scala,那么我们不禁的要问了,什么是Scala?  Scala是一种多范式的编程语言,其设... 查看详情

kvm虚拟机使用说明

一:kvm虚拟化应用场景场景1:只有一台服务器,但是要运行多个版本的软件,不同版本之间还相互冲突场景2:机房的迁移,物理机在运输过程中容易损坏,导致数据丢失场景3:openstack部署太难!步骤太繁琐,如何体验最新版的... 查看详情

lvs初体验(代码片段)

一、简介  LVS是LinuxVirtualServer的简称,也就是Linux虚拟服务器。这是一个由章文嵩博士发起的一个开源项目,它的官方网址是http://www.linuxvirtualserver.org,现在LVS已经是Linux内核标准的一部分。使用LVS可以达到的技术目标是:通... 查看详情

docker初体验(代码片段)

断断续续的使用Docker好几年了,但是一直没有全面深入的去了解过,每次用到都是Google一下相关的命令解决临时的问题,到头来却毫无收获。好在,我终于意识到了这个问题,便决定从头开始,耐心的学学Docker,并把学习过程记... 查看详情

免费服务器之初体验

...配置基本上能够满足,装上软件就可以开始搞了3、总体体验除了稳定,站长最关心的就是网站访问速度了。我觉得这个无庸置疑,免费虚拟主机和免费云服务器访 查看详情

aks初体验:登录到node节点的几种方式

在上一篇文章中,我们创建好了一个AKS集群,并通过在集群中起pod的方式登录到node节点上,在平日的运维中,显然通过pod登录的方式是比较麻烦的,这里我们也可以通过其他更简单的方法去登录:1,通过跳板机登录2,通过loadba... 查看详情

苹果mac电脑:虚拟器virtualbox安装openeuler,开启linux初体验

参考技术A在上一篇,我详细讲解了苹果Mac系统安装虚拟器VirtualBox的方法与步骤,紧接着我们Linux开发者可以开始安装国产开源的Linux发行版-服务器操作系统openEuler。进入OpenEuler官网后,我们根据其ISO目录和下载路径选择openEuler... 查看详情

docker初体验(代码片段)

...何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机 查看详情

《linux就该这么学》--linux初体验

本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材,目前是国内最值得去读的Linux教材,也是最有价值的Linux实验手册。章节包括有:第0章... 查看详情

hadoop初体验(代码片段)

Hadoop初体验HDFS初体验HDFSshell常用命令WebUI页面操作思考HadoopMapReduce+YARN初体验计算圆周率Pi的值--官方示例词频统计--官方示例通过webui查看运行结果HDFS初体验HDFSshell常用命令#在/目录创建一个目录hdaoopfs-mkdir/itcast#上传文件到/it... 查看详情

《harmonyos实战—harmonyos(鸿蒙)开发初体验,华为如何引领物联网时代》

Harmonyos(鸿蒙)开发初体验,华为如何引领物联网时代华为鸿蒙系统是一款全新的面向全场景的分布式操作系统,创造一个超级虚拟终端互联的世界,将人、设备、场景有机地联系在一起,将消费者在全场... 查看详情