kvm虚拟机_kvm虚拟机网卡直通 - CSDN
  • 在CentOS7上运行KVM虚拟机

    千次阅读 2020-01-06 15:55:46
    在CentOS7上运行KVM虚拟机准备工作检查CPU特性安装必要的软件包安装KVM及其依赖验证安装结果启动服务并设置为开机自动运行创建网络环境使用KVM虚拟机下载操作系统的guest image准备磁盘镜像创建和管理虚拟机使用图形...

    准备工作

    检查CPU特性

    CPU应该支持vmx特性以更好地运行KVM虚拟机:lscpu | grep vmx

    安装一些基础软件包(非必须)

    sudo yum install -y epel-release net-tools vim unzip zip wget ftp bridge-utils
    
    

    安装KVM及相关工具

    sudo yum install -y qemu-kvm libvirt
    sudo yum install -y libguestfs-tools libguestfs-tools libguestfs-tools-c
    

    验证安装结果

    $ lsmod | grep ^kvm
    kvm_intel             174250  0 
    kvm                   570658  1 kvm_intel
    

    启动服务并设置为开机自动运行

    systemctl start libvirtd
    systemctl enable libvirtd
    

    检查服务状态:

    systemctl status libvirtd
    systemctl is-enabled libvirtd
    

    创建网络环境

    注意: 如果这时系统里已经有了virbr0这个网桥,则可以跳过本章节,后面直接使用virbr0网桥即可。

    创建default网络和virbr0网桥:

    sudo virsh net-define /usr/share/libvirt/networks/default.xml
    sudo virsh net-start default
    sudo virsh net-autostart default
    sudo virsh net-list
    

    检查网络设置:

    [root@cheshi-desktop1 ~]# sudo virsh net-list
     Name      State    Autostart   Persistent
    --------------------------------------------
     default   active   yes         yes
    
    [root@cheshi-desktop1 ~]# ifconfig virbr0
    virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 10.66.15.173  netmask 255.255.254.0  broadcast 10.66.15.255
            inet6 fe80::4ecc:6aff:fec5:ad0d  prefixlen 64  scopeid 0x20<link>
            ether 4c:cc:6a:c5:ad:0d  txqueuelen 1000  (Ethernet)
            RX packets 1613  bytes 118768 (115.9 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 74  bytes 10467 (10.2 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    [root@cheshi-desktop1 ~]# ifconfig eno1
    eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet6 fe80::4ecc:6aff:fec5:ad0d  prefixlen 64  scopeid 0x20<link>
            ether 4c:cc:6a:c5:ad:0d  txqueuelen 1000  (Ethernet)
            RX packets 50352153  bytes 7052127783 (6.5 GiB)
            RX errors 0  dropped 111  overruns 0  frame 0
            TX packets 2944305  bytes 2436350686 (2.2 GiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
            device interrupt 16  memory 0xdf000000-df020000  
    

    使用KVM虚拟机

    方案一:使用KVM创建一台不带操作系统的虚拟机,然后使用安装镜像或网络服务为其安装操作系统;
    方案二:直接下载操作系统的“guest image”并由其直接运行虚拟机。(推荐)

    第二种方法可以省去操作系统的安装过程,因此效率比较高,也比较省事,这里着重介绍这种方法。

    下载操作系统的guest image

    CentOS官方的下载页面中,找到供Cloud使用的镜像文件,使用wget等命令将其下载到物理机中。

    wget http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2.xz
    

    准备磁盘镜像

    准备虚拟机的系统盘:

    [cheshi@cheshi-desktop1 kvm_workspace]$ mkdir vm1
    [cheshi@cheshi-desktop1 kvm_workspace]$ cd vm1
    [cheshi@cheshi-desktop1 kvm_workspace]$ xz -d CentOS-7-x86_64-GenericCloud.qcow2.xz 
    [cheshi@cheshi-desktop1 kvm_workspace]$ cp CentOS-7-x86_64-GenericCloud.qcow2 /var/lib/libvirt/images/vm1.qcow2
    [cheshi@cheshi-desktop1 kvm_workspace]$ cd /var/lib/libvirt/images/
    

    接下来需要对镜像做一些修改,步骤中用到的virt-editguestfish命令来源于libguestfs项目,如果找不到这两个工具,可以通过命令sudo yum install libguestfs*来安装。

    出于安全原因,我们无法登录root用户,因此我们需要清空镜像中的root密码:

    sudo virt-edit -a ./vm1.qcow2 /etc/shadow -e 's/^root:[^:]*:/root::/'
    

    在没有配置cloud-init的情况下,这个服务将耗费将近5分钟的启动时间,因此最好把它禁用掉:

    sudo guestfish -a ./vm1.qcow2 -i rm '/etc/systemd/system/multi-user.target.wants/cloud-config.service'
    sudo guestfish -a ./vm1.qcow2 -i rm '/etc/systemd/system/multi-user.target.wants/cloud-final.service'
    sudo guestfish -a ./vm1.qcow2 -i rm '/etc/systemd/system/multi-user.target.wants/cloud-init-local.service'
    sudo guestfish -a ./vm1.qcow2 -i rm '/etc/systemd/system/multi-user.target.wants/cloud-init.service'
    

    备注:

    • 在一些打包有较新版本cloud-init工具的镜像中,cloud-*.service可能位于'/etc/systemd/system/cloud-init.target.wants/路径下,因此上述命令可能需要一些修改。
    • 此外,本节中对镜像的修改也可通过脚本来完成,使用时如遇权限不足的问题请将qcow2镜像放置于/tmp目录下进行修改。

    创建和管理虚拟机

    回到之前的路径下,创建一个xml文件,并更改其信息为:

    [cheshi@cheshi-desktop1 kvm_workspace]$ cat vm1.xml 
    <domain type='kvm' id='1'>
      <name>vm1</name>
      <memory unit='KiB'>2097152</memory>
      <currentMemory unit='KiB'>2097152</currentMemory>
      <vcpu placement='static'>4</vcpu>
      <os>
        <type arch='x86_64' machine='pc-i440fx-2.7'>hvm</type>
      </os>
      <features>
        <acpi/>
        <apic/>
      </features>
      <cpu mode='custom' match='exact'>
        <model fallback='allow'>Skylake-Client</model>
      </cpu>
      <on_poweroff>destroy</on_poweroff>
      <on_reboot>restart</on_reboot>
      <on_crash>destroy</on_crash>
      <devices>
        <emulator>/usr/libexec/qemu-kvm</emulator>
        <disk type='file' device='disk'>
          <driver name='qemu' type='qcow2'/>
          <source file='/var/lib/libvirt/images/vm1.qcow2'/>
          <target dev='vda' bus='virtio'/>
        </disk>
        <interface type='network'>
          <source network='default' bridge='kvmbr0'/>
          <target dev='vnet0'/>
          <model type='virtio'/>
        </interface>
        <console type='pty' tty='/dev/pts/5'>
          <source path='/dev/pts/5'/>
          <target type='serial' port='0'/>
          <alias name='serial0'/>
        </console>
      </devices>
    </domain>
    

    备注:必要时可使用whereis qemu-kvm确定执行文件所在位置。

    创建一台虚拟机:

    [cheshi@cheshi-desktop1 kvm_workspace]$ sudo virsh define ./vm1.xml 
    Domain vm1 defined from ./vm1.xml
    

    启动虚拟机:

    [cheshi@cheshi-desktop1 kvm_workspace]$ sudo virsh start vm1
    Domain vm1 started
    

    连接虚拟机console(使用Ctrl+]退出):

    [cheshi@cheshi-desktop1 kvm_workspace]$ sudo virsh console vm1
    Connected to domain vm1
    Escape character is ^]
    
    CentOS Linux 7 (Core)
    Kernel 3.10.0-862.14.4.el7.x86_64 on an x86_64
    
    dhcp-15-92 login: root
    Last login: Mon Oct 29 07:16:27 on ttyS0
    [root@dhcp-15-92 ~]# ping 8.8.8.8
    PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
    64 bytes from 8.8.8.8: icmp_seq=1 ttl=34 time=46.5 ms
    
    --- 8.8.8.8 ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 46.574/46.574/46.574/0.000 ms
    [root@dhcp-15-92 ~]# exit
    logout
    
    CentOS Linux 7 (Core)
    Kernel 3.10.0-862.14.4.el7.x86_64 on an x86_64
    
    dhcp-15-92 login: 
    

    关闭虚拟机:

    [cheshi@cheshi-desktop1 kvm_workspace]$ sudo virsh shutdown vm1
    Domain vm1 is being shutdown
    

    查看虚拟机状态:

    [cheshi@cheshi-desktop1 kvm_workspace]$ sudo virsh list --all
     Id    Name                           State
    ----------------------------------------------------
     -     centos-minion1                 shut off
     -     vm1                            shut off
    

    销毁虚拟机:

    [cheshi@cheshi-desktop1 kvm_workspace]$ sudo virsh undefine vm1
    Domain vm1 has been undefined
    [cheshi@cheshi-desktop1 kvm_workspace]$ sudo virsh list --all
     Id    Name                           State
    ----------------------------------------------------
     -     centos-minion1                 shut off
    
    [cheshi@cheshi-desktop1 kvm_workspace]$ 
    

    virsh命令参考:

    命令 说明
    autostart 自动开始一个域
    create 从一个 XML 文件创建一个域
    define 从一个 XML 文件定义(但不开始)一个域
    edit 编辑某个域的 XML 配置
    shutdown 关闭一个域
    start 开始一个(以前定义的)非活跃的域
    reboot 重新启动一个域
    suspend 挂起一个域
    resume 重新恢复一个域
    vncdisplay vnc 显示
    undefine 删除虚拟机,只是删除VM的配置文件,并不删除虚拟磁盘文件
    console 连接虚拟机控制台

    使用图形界面管理虚拟机

    运行virt-manager:

    sudo virt-manager
    

    创建虚拟机:

    1. “File” > “New Virtual Machine”;
    2. 在"Choose how you would like to install the OS"处,选择"Import existing disk image";
    3. 在"Provide the existing storage path"处,选择"Browse…";
    4. 弹出对话框中选择"Browse Local"并加载"/home/cheshi/kvm_workspace/vm1/vm1.qcow2"文件并选择"Choose Volume";
    5. 在"Choose an operating system type and version"处,选择"Linux"和"CentOS 7.0",点击"Forward";
    6. 设置"Memory"和"CPUs",点击"Forward";
    7. 在"Name"处填上虚拟机的名字,在"Network selection"处选择"Bridge kvmbr0",最后点击"Finish"。

    使用图形界面管理虚拟机比较直观,这里不再过多介绍。

    参考资料

    1. CentOS7.2部署KVM虚拟机
    2. KVM 操作虚拟机常用命令
    3. CentOS 7 下配置KVM
    4. 三种方式在CentOS 7搭建KVM虚拟化平台
    5. 使用 libvirt创建和管理KVM虚拟机
    6. RHEL Guest Image quick start
    7. CentOS 6.9下KVM虚拟机网络Bridge(网桥)方式与NAT方式详解(转)
    展开全文
  • centos7使用kvm创建虚拟机

    千次阅读 2019-03-29 18:00:53
    centos7使用kvm创建虚拟机1. 查看系统版本2.首先验证CPU是否支持虚拟化,输入有vmx或svm就支持,支持虚拟化则就支持KVM3. 查看是否加载KVM4. 关闭selinux和iptables5.安装libvirt,kvm软件包6.虚拟机安装1)配置网卡2...

    1. 查看系统版本

    [root@promote libvirt]# cat /etc/centos-release
    CentOS Linux release 7.5.1804 (Core)
    

    2.首先验证CPU是否支持虚拟化,输入有vmx或svm就支持,支持虚拟化则就支持KVM

    [root@promote libvirt]# cat /proc/cpuinfo | egrep 'vmx|svm'
    

    3. 查看是否加载KVM

    [root@promote images]# lsmod | grep kvm
    kvm_intel             183720  15 
    kvm                   578558  1 kvm_intel
    irqbypass              13503  3 kvm
    

    这表明已经加载,如果没有加载则执行以下命令加载KVM

    [root@promote images]#modprobe kvm
    

    4. 关闭selinux和iptables

    [root@promote images]#  setenforce 0
    setenforce: SELinux is disabled
    [root@promote images]# vim /etc/sysconfig/selinux
    SELINUX=disabled
    [root@promote images]# systemctl stop firewalld
    

    5.安装libvirt,kvm软件包

    [root@promote images]#  yum install qemu-kvm qemu-img \
     virt-manager libvirt libvirt-python virt-manager \
     libvirt-client virt-install virt-viewer  bridge-utils  -y
    qemu-kvm: KVM模块
    libvirt: 虚拟管理模块
    virt-manager: 图形界面管理虚拟机
    virt-install: 虚拟机命令行安装工具
    

    6.虚拟机安装

    在这里你可以选择图形化界面安装,也可以选择命令行方式去安装。在这里介绍一下命令行的安装形式,图形化安装请参考这篇文章,本文前半部分准备工作也主要参考这篇文章。

    1)配置网卡

    安装完KVM之后,需要配置一下网卡,增加一个桥接网卡:

    [root@localhost ~]# cd /etc/sysconfig/network-scripts/
    [root@localhost /etc/sysconfig/network-scripts]# cp ifcfg-eno16777728 ifcfg-br0  # 拷贝当前的网卡文件
    [root@localhost /etc/sysconfig/network-scripts]# vim ifcfg-eno16777728  # 修改文件内容如下
    TYPE=Ethernet
    BOOTPROTO=dhcp
    DEFROUTE=yes
    PEERDNS=yes
    PEERROUTES=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_PEERDNS=yes
    IPV6_PEERROUTES=yes
    IPV6_FAILURE_FATAL=no
    NAME=eno16777728
    DEVICE=eno16777728
    ONBOOT=yes
    BRIDGE=br0
    [root@localhost /etc/sysconfig/network-scripts]# vim ifcfg-br0  # 修改文件内容如下
    TYPE=Bridge
    BOOTPROTO=dhcp
    DEFROUTE=yes
    PEERDNS=yes
    PEERROUTES=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_PEERDNS=yes
    IPV6_PEERROUTES=yes
    IPV6_FAILURE_FATAL=no
    NAME=br0
    DEVICE=br0
    ONBOOT=yes
    [root@localhost /etc/sysconfig/network-scripts]# systemctl restart network  # 重启服务
    

    重启完服务后,执行ifconfig命令可以看到此时eno16777728网卡的IP到br0网卡上了,这样我们的网卡就配置完成了:

    [root@localhost /etc/sysconfig/network-scripts]# ifconfig
    br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.77.130  netmask 255.255.255.0  broadcast 192.168.77.255
            inet6 fe80::20c:29ff:fef1:912c  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:f1:91:2c  txqueuelen 0  (Ethernet)
            RX packets 51  bytes 8341 (8.1 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 27  bytes 2710 (2.6 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            ether 00:0c:29:f1:91:2c  txqueuelen 1000  (Ethernet)
            RX packets 147615  bytes 168580073 (160.7 MiB)
            RX errors 0  dropped 8  overruns 0  frame 0
            TX packets 45008  bytes 3866579 (3.6 MiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 0  (Local Loopback)
            RX packets 2459  bytes 1125227 (1.0 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 2459  bytes 1125227 (1.0 MiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    

    接下来我们就可以启动KVM的服务了:

    [root@localhost ~]# systemctl start libvirtd  # 启动libvirtd服务
    [root@localhost ~]# ps aux |grep libvirtd  # 检查服务进程
    root       5744  2.2  0.1 614840 14120 ?        Ssl  23:02   0:00 /usr/sbin/libvirtd
    root       5872  0.0  0.0 112664   964 pts/1    R+   23:02   0:00 grep --color=auto libvirtd
    [root@localhost ~]# brctl show  # 可以看到两个网卡
    bridge name bridge id       STP enabled interfaces
    br0     8000.000c29f1912c   no      eno16777728  # 我们配置的桥接网卡
    virbr0      8000.525400240b50   yes     virbr0-nic  # NAT模式的网卡
    
    2)创建卷
    qemu-img create -f qcow2    yunxiang.qcow2  10G
    

    这样就创建了一个10G的动态扩展的qcow2格式的磁盘(这里的10G只是磁盘的最大值,没有被写入数据前只有不到200k大小)
    查看卷信息可以用下面的命令,disk size才是其实际占用的宿主机磁盘大小

    [root@promote images]# qemu-img info  yunxiang.qcow2 
    image: yunxiang.qcow2
    file format: qcow2
    virtual size: 10G (10737418240 bytes)
    disk size: 1.8G
    cluster_size: 65536
    Format specific information:
        compat: 1.1
        lazy refcounts: false
    
    
    3)创建虚拟机

    将服务成功启动后,我们就可以使用KVM安装虚拟机了,首先需要准备一个操作系统的镜像文件,我这里用的是CentOS7的镜像文件:

    [root@promote iso]# ls
    CentOS-7-x86_64-Minimal-1804.iso
    

    到这里,我们安装虚拟机的形式也有两种,分别是命令配置以及xml文件

    a)命令行安装虚拟机

    使用命令行安装这个CentOS7镜像文件:

    [root@localhost ~]# virt-install --name yunxiang --ram=512 --vcpus=2 --location=/home/iso/CentOS-7-x86_64-Minimal-1804.iso --disk path=/home/images/yunxiang.qcow2,size=10 --network bridge=br0 --graphics=none --console=pty,target_type=serial  --extra-args="console=tty0 console=ttyS0"
    
    命令说明:
    
    --name 指定虚拟机的名称
    --memory 指定分配给虚拟机的内存资源大小
    maxmemory 指定可调节的最大内存资源大小,因为KVM支持热调整虚拟机的资源
    --vcpus 指定分配给虚拟机的CPU核心数量
    maxvcpus 指定可调节的最大CPU核心数量
    --os-type 指定虚拟机安装的操作系统类型
    --os-variant 指定系统的发行版本
    --location 指定ISO镜像文件所在的路径,支持使用网络资源路径,也就是说可以使用URL
    --disk path 指定虚拟硬盘所存放的路径及名称,size 则是指定该硬盘的可用大小,单位是G
    --bridge 指定使用哪一个桥接网卡,也就是说使用桥接的网络模式
    --graphics 指定是否开启图形
    --console 定义终端的属性,target_type 则是定义终端的类型
    --extra-args 定义终端额外的参数
    

    开始安装后,正常的情况下会进入到这样一个界面:
    CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统

    这是让你配置语言、时区、安装源、网络、密码等信息,就和我们在VMware里安装CentOS虚拟机是一样的,只不过这个是命令行形式,而VMware里是图形界面罢了。

    首先设置语言,按数字1,回车进入以下界面:
    CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统

    例如我要选Chinese就按数字68并回车即可,回车之后会让你选择是中文简体还是繁体,也是按下相应的数字并回车即可:
    CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统

    配置完成之后又会再次回到配置界面,这次我们来设置时区:
    CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统

    CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统

    CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统

    设置系统安装盘:
    CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统

    CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统

    CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统

    CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统

    CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统

    设置root用户的密码:
    CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统

    最后开始安装系统:
    CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统

    安装完成之后就会停止在以下这个界面,按一下回车即可,这时就会重启安装完的系统:
    CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统


    b)使用xml安装
    xml文件内容

    下面是我平时使用的的xml文件

    <domain type="kvm">
        <name>centos</name>   //虚拟机名称
    
        <memory unit="MiB">1024</memory>   //虚拟机最大内存上线
        <currentMemory unit="MiB">1024</currentMemory>    //虚拟机当前内存
    
        <vcpu>2</vcpu>     //cpu数量
    
        <os>
            <type arch="x86_64" machine="pc">hvm</type>
            <boot dev="hd" />
            <boot dev="cdrom" />
        </os>
    
        <features>
            <acpi />
            <apic />
            <pae />
        </features>
    
        <clock offset="localtime" />
    
        <on_poweroff>destroy</on_poweroff>
        <on_reboot>restart</on_reboot>
        <on_crash>destroy</on_crash>
    
        <devices>
            <emulator>/usr/libexec/qemu-kvm</emulator>   //这个位置一般不动,,这是你的kvm安装位置
    
            <disk type="file" device="disk">
                <driver name="qemu" type="qcow2"/>
                <source file="/home/images/centos.qcow2" />   //qcow2镜像盘位置
                <target dev='sda' bus='virtio'/>
    	    <alias name='virtio-disk0'/>
            </disk>
    
            <disk type="file" device="cdrom">
                <source file="/home/iso/CentOS-7-x86_64-Minimal-1804.iso" /> 
      //iso文件
                 <target dev='hda' bus='ide'/>
            </disk>
    
            <interface type="bridge">
                <source bridge="br0"/>
            </interface>
    
            <input type="mouse" bus="ps2" />
            <graphics type="vnc" port="-1" autoport="yes" listen="0.0.0.0" keymap="en-us" />
     <serial type='pty'>
       <target port='0'/>
     </serial>
     <console type='pty'>
       <target type='serial' port='0'/>
     </console>
        </devices>
    
    </domain>
    

    如果你是启动一个已经安装好系统的qcow2镜像的话,只需要下面这段关于把iso的disk定义删除即可。

            <disk type="file" device="cdrom">
                <source file="/home/iso/CentOS-7-x86_64-Minimal-1804.iso" /> 
      //iso文件
                 <target dev='hda' bus='ide'/>
            </disk>
    

    如果你是需要intel的cpu,那么就在后面加入cpu model

    <cpu mode='host-model'>
    <model fallback='forbid'/>
    </cpu>
    

    如果你想要选择网卡的驱动为virtio 或者rtl8139,可以通过在配置项中加入如下语句(下面为设置为virtio)

    <model type='virtio'/>
    
    安装步骤

    首先定义虚拟机xml模板,然后启动虚拟机就可以

    [root@promote images]# virsh define centos.xml
    [root@promote images]# virsh start centos
    start后面的参数,是之前用xml定义的虚拟机的name标签指定的,也可以在define虚拟机后,使用命令virsh list --alll
    使用virsh undefine [虚拟主机名]来取消虚拟机的定义
    

    vnc查看虚拟机
    查询虚拟机所使用的vnc端口

    [root@promote images]#virsh vncdisplay centos
    

    这里就可以使用自己windows的pc上的vnc去连接被创建的虚拟机。

    以下介绍一下管理虚拟机的一些常用命令:

    [root@localhost ~]# virsh console study01  # 进入指定的虚拟机,进入的时候还需要按一下回车
    [root@localhost ~]# virsh start study01  # 启动虚拟机
    [root@localhost ~]# virsh shutdown study01  # 关闭虚拟机
    [root@localhost ~]# virsh destroy study01  # 强制停止虚拟机
    [root@localhost ~]# virsh undefine study01  # 彻底销毁虚拟机,会删除虚拟机配置文件,但不会删除虚拟磁盘
    [root@localhost ~]# virsh autostart study01  # 设置宿主机开机时该虚拟机也开机
    [root@localhost ~]# virsh autostart --disable study01  # 解除开机启动
    [root@localhost ~]# virsh suspend study01 # 挂起虚拟机
    [root@localhost ~]# virsh resume study01 # 恢复挂起的虚拟机
    

    参考

    https://blog.csdn.net/qq_39452428/article/details/80781403
    http://blog.51cto.com/zero01/2083896
    https://my.oschina.net/hgfdoing/blog/514637
    http://blog.51cto.com/zhongle21/2096413

    展开全文
  • linux搭建KVM虚拟机详解

    万次阅读 2018-11-16 15:50:08
    KVM 一、 概念 Linux下的内核虚拟化模块 Windows下的虚拟化软件Hyper-V 企业化:EXSI 虚拟化的前提:硬件虚拟化() Intel虚拟CPU:Intel VT KVM:就是Keyboard Video Mouse的缩写。KVM 交换机通过...

    KVM

    一、 概念

    Linux下的内核虚拟化模块
    Windows下的虚拟化软件Hyper-V
    企业化:EXSI
    虚拟化的前提:硬件虚拟化()
    Intel虚拟CPU:Intel VT

    KVM:就是Keyboard Video Mouse的缩写。KVM 交换机通过直接连接键盘、视频和鼠标 (KVM) 端口,让您能够访问和控制计算机。KVM 技术无需目标服务器修改软件。这就意味着可以在 Windows 的 BIOS 环境下,随时访问目标计算机。KVM 提供真正的主板级别访问,并支持多平台服务器和串行设备。
    KVM 技术已经从最初的基础SOHO办公型,发展成为企业 IT 基础机房设施管理系统。可以从kvm 客户端管理软件轻松的直接访问位于多个远程位置的服务器和设备。KVM over IP 解决方案具备完善的多地点故障转移功能、符合新服务器管理标准 (IPMI) 的直接界面,以及将本地存储媒体映射至远程位置的功能。
    中文名
    KVM
    全称
    Keyboard Video Mouse
    本质
    计算机技术
    优点
    支持多平台服务器和串行设备
    地位
    网络中的管理设备
    功能
    支持串口overIP远程调试串口设备

    工作原理
    首先简要介绍一下虚拟化技术及其涉及的元素。 虚拟化解决方案的底部是要进行虚拟化的机器。这台机器可能直接支持虚拟化,也可能不会直接支持虚拟化;那么就需要系统管理程序的支持。系统管理程序,或称为 VMM,也称为Hypervisor,可以看作是平台硬件和操作系统的抽象化。
    在某些情况中,这个系统管理程序就是一个操作系统;此时,它就称为主机操作系统。
    系统管理程序之上是客户机操作系统,也称为虚拟机(VM)。这些 VM 都是一些相互隔离的操作系统,将底层硬件平台视为自己所有。但是实际上,是系统管理程序为它们制造了这种假象。
    使用 KVM 引用内核虚拟机,使用 KVM 引用系统管理程序(用来启动一台新虚拟机)。
    更加简单的一种虚拟化是操作系统虚拟化,其中一台计算机可以运行相同类型的多个操作系统。这种虚拟化可以将一个操作系统的多个服务器隔离开来 (这意味着全都必须使用相同类型和版本的操作系统)。 [1]
    要对所有电子线路板进行三防处理。
    特点
    KVM是键盘(Keyboard)、显示器(Video)、鼠标(Mouse)的缩写。KVM技术的核心思想是:通过适当的键盘、鼠标、显示器的配置,实现系统和网络的集中管理;提高系统的可管理性,提高系统管理员的工作效率;节约机房的面积,降低网络工程和服务器系统的总体拥有成本;避免使用多显示器产生的辐射,营建健康环保的机房。利用KVM多主机切换系统,系统管理员可以通过一套键盘、鼠标、显示器在多个不同操作系统的主机或服务器之间进行切换并实施管理。
    一、切换器(KVM)一般应用在哪些领域?
    信息控制中心 、呼叫中心、证券/金融交易系统、银行数据中心、工业控制环境、教学环境、测试中心等所有多服务器或多计算机工作环境。
    二、切换器(KVM)的基本特点。
    即插即用的设计,操作起来方便简单。可支持PC、SUN和MAC等各种品牌计算机和服务器。适用于NETWARE、WIN95/98/2000/ME/XP/NT、UNIX、OS/2等各种操作系统和应用软件。可适配VGA、SVGA和XGA等各种分辨率显示器。有自动扫描、热键切换和OSD菜单等强大功能。
    三、切换器(KVM)有关的名词解释。
    1. 输入接口
    输入接口是切换器的主要参数,指其输入的接口方式和接口数量。切换器一般有4路、8路、32路甚至更多的输入接口,使用BNC插头或复合视频接口。
    2. 输出接口
    输出接口指切换器的输出接口方式,一般为BNC插头或复合视频接口。
    3. 带宽
    带宽又叫频宽,是指在固定的的时间内可传输的资料数量,亦即在传输管道中可以传递数据的能力。在数字设备中,频宽通常以bps表示,即每秒可传输之位数。在模拟设备中,频宽通常以每秒传送周期或赫兹Hz来表示。频宽对基本输入输出系统(BIOS)设备尤其重要,如快速磁盘驱动器会受低频宽的总线所阻碍。
    4. 切换器方式
    切换方式是指KVM切换器在从一台设备转换到控制另外一台设备时所采用的切换方式。一般的产品都是通过按钮、hot-key(热键)和屏幕菜单来操作了。
    5. 支持分辨率
    支持分辨率主要是指KVM切换器在有其中控制的机器向其输出信号时所能显示的分辨率,也就是视频窗口的宽度和高度上的像素数量。
    6. 热插拔
    热插拔是指可以直接增加或移除主机而无需关闭电源。
    7. 热键切换
    指用定义键进行切换。
    8. 多用户
    两个以上用户操作主机。
    9. 级联
    两个以上切换器操作八个以上主机。
    10. 即插即用
    无需驱动程序随时安装使用。
    11. 多平台
    适于所有操作系统和软件环境
    12. 机架式
    可安装在19英寸机架上
    四、使用切换器(KVM)的优越性。
    相对于数据仓库和互联网这些发展极快和服务器数量增加极快的公司来说,采用切换器(KVM)的优越性将体现在以下几个方面:
    1. 节省空间:
    对于这些发展极为快速的行业而言,原先所用的空间相对有限,而搬迁则会造成服务的停顿。在这些情况下,减少键盘、鼠标和显示器的数量,可以为新增加的服务器腾出大量的空间。
    2.提高效率:
    可以想象,当系统或网络维护人员穿梭于服务器、各种机柜所组成的丛林中,寻找出故障的机器时,效率是不会提高的。而这低效率,不但浪费了有限的人力资源,而且使出现的故障得不到及时的修复,使网络或数据中心出现不应有的停顿。能实现在由一套键盘、鼠标、显示器组成的控制台登陆所有的机器,势必将极大地提高系统或网络维护人员的工作效率。
    3.加强管理:
    工作效率的提高,意味着网络或数据中心得到了有效的管理,从而提高了这些系统的稳定性和安全性。
    4.节约成本:
    网络运营成本,尤其是那些必须24小时不间断运行的网络及数据中心的运行成本,逐渐成为网络经营商们成功的关键因素。同时,硬件软件费用、人员费用以及场地费用也是公司运营费用的主要组成部分。
    5.远程管理:
    系统的远程维护和管理也是这些大型系统所面临的重要问题。系统的管理和维护人员不可能24小时在机房里值班,而机器故障却可能在任何时候发生,因信息的交通堵塞而造成系统长时间的不稳定将极大地损坏企业的形象或产生重大的损失。通过远程的键盘、鼠标和显示器来实现系统的远程管理、维护是保证系统24小时不间断、稳定运行的重要手段。
    6.环保节能:
    使用KVM Switch可避免使用多台显示器,从而减少辐射,节省空调、能源等的消耗,营造健康环保节能的工作环境。
    因此,实现一个用户使用一套键盘、鼠标、显示器去访问和操作一台以上主机的功能将为不少的企业节省了空间和服务器外设产品资源,有效提高大规模应用的管理能力。

    二、 实验

    环境:redhat 7.4
    2.1虚拟机关机模式下开启虚拟化引擎后再开机
    这里写图片描述
    查看

    [root@localhost ~]# lscpu | grep vmx
    

    Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap xsaveopt arat
    [root@localhost ~]#

    2.2 安装virt-manager libvirt后,开启libvirtd

    [root@localhost ~]# mount /dev/sr0 /mnt
    [root@localhost ~]# yum install virt-manager libvirt
    [root@localhost ~]# systemctl enable libvirtd
    [root@localhost ~]# systemctl start libvirtd
    

    查看

    [root@localhost test]# lsmod | grep kvm
    kvm_intel             170086  0 
    kvm                   566340  1 kvm_intel
    irqbypass              13503  1 kvm
    

    2.3 上传镜像到一个目录下,上传到/root/test

        [root@localhost test]# ll
    
    总用量 3963904
    -rw-r--r--. 1 root root 4059037696 8月   6 09:49 rhel-server-7.4-x86_64-dvd.iso
    

    2.4图形界面创建虚拟机
    使用virt-manager在图形界面创建虚拟机(不能在xshell),安装系统

    [root@mail ~]# virt-manager
    

    这里写图片描述

    选择文件/新建虚拟机/本地安装介质(iso)/使用ISO映像/
    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    系统安装最好安装命令行界面
    这里写图片描述

    如果想打开,使用virt-manager进去图形界面后右键打开就ok
    这里写图片描述

    2.5命令行界面安装系统

    2.5.1添加桥接网络

    [root@localhost ~]# nmcli connection add type bridge con-name br1 ifname br1
    

    添加从设备到桥接网络

    [root@localhost ~]# nmcli connection add type bridge-slave con-name br1-port1 ifname ens33 master br1
    [root@localhost ~]# nmcli connection show
    

    2.5.2安装必要软件

    [root@localhost ~]# mount /dev/sr0 /mnt
    mount: /dev/sr0 写保护,将以只读方式挂载
    [root@localhost ~]# yum install virt-install virt-viewer
    

    2.5.3虚拟机关机后手动添加一个磁盘后开机

    [root@localhost ~]# fdisk /dev/sdb
    

    N
    P
    回车
    回车
    W

    [root@localhost ~]# partprobe
    [root@localhost ~]# fdisk -l /dev/sdb
    

    2.3.6执行安装命令
    注意:镜像名称、镜像目录、磁盘路径

    [root@localhost ~]# virt-install --name rhel-server-7.4-x86_64-dvd.iso --disk path=/dev/sdb1  --check path_in_use=off --graphics spice --vcpus=1 --ram 1024 --location=/root/test/rhel-server-7.4-x86_64-dvd.iso --network bridge=br1 --os-type=linux --os-variant=rhel7
    
    展开全文
  • Centos 安装KVM并安装虚拟机

    万次阅读 2019-07-01 10:19:21
    如果修改了虚拟机XML配置,需要停止虚拟机,然后使用以下命令重新读取XML配置!!!: virsh define /etc/libvirt/qemu/centos7.xml Linux服务器两块独立的网卡最好不要配置同一网段的IP地址,不然有时会有些Bug...

    需要注意的地方:

    !!!如果修改了虚拟机XML配置,需要停止虚拟机,然后使用以下命令重新读取XML配置!!!:

    virsh define /etc/libvirt/qemu/centos7.xml

    Linux服务器两块独立的网卡最好不要配置同一网段的IP地址,不然有时会有些Bug。

    virsh edit name 可以更改虚拟机配置

    如果虚拟机需要使用双网卡,virsh edit新增一块网卡的配置,并且将新增的网卡挂载到宿主机另一块网卡上即可。挂载在同一块上也行

     

    新增一个网卡:

    virsh attach-interface cent_xu --type bridge --source br0
    virsh dumpxml cent_xu > /etc/libvirt/qemu/cent_xu.xml

    检测是否支持KVM

    KVM 是基于 x86 虚拟化扩展(Intel VT 或者 AMD-V) 技术的虚拟机软件,所以查看 CPU 是否支持 VT 技术,就可以判断是否支持KVM。有返回结果,如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的。

    cat /proc/cpuinfo | egrep 'vmx|svm'
    
    flags   : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm xsaveopt cqm_llc cqm_occup_llc

    关闭SELinux,将 /etc/sysconfig/selinux 中的 SELinux=enforcing 修改为 SELinux=disabled

     

    安装 KVM 环境

    通过 yum 安装 kvm 基础包和管理工具

    # 安装 kvm 基础包
    # ------------------------
    yum -y install kvm
    
    # 安装 kvm 管理工具
    # ------------------------
    yum -y install qemu-kvm python-virtinst libvirt libvirt-python virt-manager libguestfs-tools bridge-utils virt-install
    
    # qemu-kvm: KVM模块
    
    # pyhon-virtinst: 包含python模块和工具(virt-install,virt-clone和virt-image),
    # 用于安装和克隆虚拟机使用libvirt。 它完全支持paravirtulized客人和客人虚拟客人。 
    # 支持的虚拟机管理程序是Xen,qemu(QEMU)和kvm
    
    # libvirt: 虚拟管理模块
    # virt-manager: 图形界面管理虚拟机
    # libguestfs* : virt-cat等命令的支持软件包
    
    
    # 重启宿主机,以便加载 kvm 模块
    # ------------------------
    reboot
    
    # 查看KVM模块是否被正确加载
    # ------------------------
    lsmod | grep kvm
    
    kvm_intel             162153  0
    kvm                   525259  1 kvm_intel

    开启kvm服务,并且设置其开机自动启动

    systemctl start acpid.service
    systemctl enable acpid.service
    systemctl start libvirtd.service
    systemctl enable libvirtd.service

    查看状态操作结果,如Active: active (running),说明运行情况良好

    systemctl status libvirtd
    systemctl is-enabled libvirtd
    
    ● libvirtd.service - Virtualization daemon
       Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
       Active: active (running) since 二 2001-01-02 11:29:53 CST; 1h 41min ago
         Docs: man:libvirtd(8)
               http://libvirt.org

    安装KVM成功后会在宿主机上自动生成一个虚拟网桥,用来虚拟机和宿主机之间的通信

    下面来安装虚拟机:

     

    安装前要设置环境语言为英文LANG="en_US.UTF-8",如果是中文的话某些版本可能会报错。CentOS 7 在这里修改 /etc/locale.conf

    kvm创建虚拟机,特别注意.iso镜像文件一定放到/home 或者根目录重新创建目录,不然会因为权限报错,无法创建虚拟机。

    注:下列两条命令都是在黑窗中进行系统配置然后安装

    virt-install --virt-type=kvm --name=centos88 --vcpus=2 --memory=4096 --location=/tmp/CentOS-7-x86_64-Minimal-1511.iso --disk path=/home/vms/centos88.qcow2,size=40,format=qcow2 --network bridge=br0 --graphics none --extra-args='console=ttyS0' --force

     

    virt-install --virt-type=kvm --name=centos74_2  --vcpus=2 --memory=4096 --location=/home/ISO/CentOS-7-x86_64-Minimal-1708.iso --disk path=/home/vms/centos74_2.qcow2,size=40,format=qcow2 --network bridge=br0 --graphics none --extra-args='console=ttyS0' --force

    提供另一种方式:在服务器上只完成虚拟机的配置信息和镜像的引导,系统的安装通过VNC远程登录系统进行

    virt-install --connect qemu:///system --name kali --memory=4096 --vcpus=2 --disk path=/home/vms/kali.qcow2,device=disk,format=qcow2,bus=virtio,cache=none,size=50 --cdrom /home/ISO/kali-linux-kde-amd64.iso --os-type=linux --network bridge=br0,model=virtio,model=e1000 --hvm --virt-type=kvm --noautoconsole --graphics vnc,listen=0.0.0.0,port=5901
    

    安装WindowsServer2008R2(硬盘格式为ide,即bus=ide)

    virt-install --connect qemu:///system --name windows --memory=4096 --vcpus=2 --disk path=/home/vms/windows.qcow2,device=disk,format=qcow2,bus=ide,cache=none,size=50 --cdrom /home/ISO/cn_windows_server_2008_r2_standard_enterprise_datacenter_web_x64_dvd_x15-50360.iso --os-type=windows --network bridge=br0,model=virtio,model=e1000 --hvm --virt-type=kvm --noautoconsole --graphics vnc,listen=0.0.0.0,port=5902  
    

     

    KVM所在服务器显示如下:

     

    通过VNC远程登录虚拟机后完成系统安装

     

    命令行配置系统

     

    上面创建虚拟机命令最终需要你配置系统基础设置,带 [!] 基本都是要配置的,按照顺序往下配置,按对用的数字以此进行设置。

    Installation
    
     1) [x] Language settings                 2) [!] Timezone settings
            (English (United States))                (Timezone is not set.)
     3) [!] Installation source               4) [!] Software selection
            (Processing...)                          (Processing...)
     5) [!] Installation Destination          6) [x] Kdump
            (No disks selected)                      (Kdump is enabled)
     7) [ ] Network configuration             8) [!] Root password
            (Not connected)                          (Password is not set.)
     9) [!] User creation
            (No user will be created)
      Please make your choice from above ['q' to quit | 'b' to begin installation |
      'r' to refresh]:
    

    一步步配置下去即可

     

    连接虚拟机

    通过 virsh console <虚拟机名称> 命令来连接虚拟机

    # 查看虚拟机
    virsh list              # 查看在运行的虚拟机
    virsh list –all         # 查看所有虚拟机
    
     Id    Name                           State
    ----------------------------------------------------
     7     centos72                       running

    配置虚拟机网络,编辑vi /etc/sysconfig/network-scripts/ifcfg-eth0

    TYPE=Ethernet
    BOOTPROTO=static
    IPADDR=IP   #配置成与网桥同一网段的IP地址
    PREFIX=24
    GATEWAY=GateWay_IP  #配置网关地址,用来连接外网
    DNS1=114.114.114.114  # 配置两个DNS服务器地址,用于域名解析
    DNS2=8.8.8.8    
    DEFROUTE=yes
    PEERDNS=yes
    PEERROUTES=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_PEERDNS=yes
    IPV6_PEERROUTES=yes
    IPV6_FAILURE_FATAL=no
    NAME=eth0
    UUID=adfa3b7d-bf60-47e6-8482-871dee686fb5
    DEVICE=eth0
    ONBOOT=yes

    配置物理机网络

    一般来说,服务器可能有多个网卡,选择一个网卡当做网桥来与虚拟机通信

    在/etc/sysconfig/network-scripts里新增一个文件:ifcfg-br0

    TYPE=Bridge
    BOOTPROTO=static
    NAME=br0
    DEVICE=br0
    GATEWAY=GateWay_IP  # 网关IP
    DNS1=114.114.114
    DNS2=8.8.8.8
    ONBOOT=yes
    IPADDR=IP  # 此处的IP其实是你宿主机上物理网卡,用来与虚拟机通信的网卡的IP
    PREFIX=24

    物理网卡配置:

    TYPE=Ethernet
    BOOTPROTO=none
    NAME=eno1
    DEVICE=eno1
    ONBOOT=yes
    BRIDGE="br0"

    配置路由转发vi /etc/sysctl.conf

    # Controls IP packet forwarding
    net.ipv4.ip_forward = 0
    修改为
    # Controls IP packet forwarding
    net.ipv4.ip_forward = 1    允许内置路由

    Bridge模式配置

    Bridge方式即虚拟网桥的网络连接方式,是客户机和子网里面的机器能够互相通信。可以使虚拟机成为网络中具有独立IP的主机。桥接网络(也叫 物理设备共享)被用作把一个物理设备复制到一台虚拟机。网桥多用作高级设置,特别是主机多个网络接口的情况。

    ┌─────────────────────────┐      ┌─────────────────┐
    │          HOST           │      │Virtual Machine 1│
    │ ┌──────┐      ┌───────┐ │      │    ┌──────┐     │
    │ │ br0  │──┬───│ vnet0 │─│─ ─ ─ │    │ br0  │     │
    │ └──────┘  │   └───────┘ │      │    └──────┘     │
    │     │     │             │      └─────────────────┘
    │     │     │   ┌───────┐ │      ┌─────────────────┐
    │ ┌──────┐  └───│ vnet1 │─│─     │Virtual Machine 2│
    │ │ eno0 │      └───────┘ │ │    │    ┌──────┐     │
    │ └──────┘                │  ─ ─ │    │ br0  │     │
    │ ┌──────┐                │      │    └──────┘     │
    │ │ eno1 │                │      └─────────────────┘
    │ └──────┘                │
    └─────────────────────────┘

    KVM一些常用命令:

    克隆虚拟机:将74克隆到xiang

    virt-clone -o centos74 -n cent_xiang -f /home/cent_xiang.qcow2

     

    • 列出所有的虚拟机

     

    virsh list --all
    • 显示虚拟机信息
    virsh dominfo kvm-1
    • 显示虚拟机内存和cpu的使用情况
    yum install virt-top -y
    virt-top
    • 显示虚拟机分区信息
    virt-df kvm-1
    • 关闭虚拟机(shutodwn)
    virsh shutdown kvm-1
    • 启动虚拟机
    virsh start kvm-1
    • 设置虚拟机(kvm-1)跟随系统自启
    virsh autostart kvm-1
    • 关闭虚拟及自启
    virsh autostart --disable kvm-1
    • 删除虚拟机
    virsh undefine kvm-1
    • 通过控制窗口登录虚拟机
    virsh console kvm-1

    给虚拟机添加硬盘

    添加硬盘(lvm卷)或者USB到虚拟机上

    virsh attach-disk kvm-1 /dev/sdb vbd --driver qemu --mode shareable
    • 使用完成之后可以卸载usb
    virsh detach-disk kvm vdb

    添加lvm卷,并挂载

    [root@sh-kvm-1 ~]# lvcreate -n kvm-1-data -L 50G vg_shkvm1
    [root@sh-kvm-1 ~]# virsh attach-disk kvm-1 /dev/vg_shkvm1/kvm-1-data vdb --driver qemu --mode shareable
    Disk attached successfully
    # 登录到kvm-1上查看lvm是否已经被挂载
    [root@sh-kvm-1 ~]# virsh console kvm-1 # 输入kvm-1的用户和密码
    [root@sh-kvm-1-1 ~]# fdisk -l # 查看硬盘挂载情况
    
    Disk /dev/vda: 21.5 GB, 21474836480 bytes
    16 heads, 63 sectors/track, 41610 cylinders
    Units = cylinders of 1008 * 512 = 516096 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00058197
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/vda1   *           3        1018      512000   83  Linux
    Partition 1 does not end on cylinder boundary.
    /dev/vda2            1018       41611    20458496   8e  Linux LVM
    Partition 2 does not end on cylinder boundary.
    
    Disk /dev/mapper/VolGroup-lv_root: 18.8 GB, 18798870528 bytes
    255 heads, 63 sectors/track, 2285 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00000000
    
    
    Disk /dev/mapper/VolGroup-lv_swap: 2147 MB, 2147483648 bytes
    255 heads, 63 sectors/track, 261 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00000000
    
    
    Disk /dev/vdb: 53.7 GB, 53687091200 bytes  # 新添加的硬盘
    16 heads, 63 sectors/track, 104025 cylinders
    Units = cylinders of 1008 * 512 = 516096 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00000000
    • 格式化新添加的vdb,并添加到lvm组中
    # 对新添加的硬盘分区
    [root@sh-kvm-1-1 ~]# fdisk /dev/vdb
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel with disk identifier 0xf04b6807.
    Changes will remain in memory only, until you decide to write them.
    After that, of course, the previous content won't be recoverable.
    
    Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
    
    WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
             switch off the mode (command 'c') and change display units to
             sectors (command 'u').
    
    Command (m for help): m  # 查看帮助
    Command action
       a   toggle a bootable flag
       b   edit bsd disklabel
       c   toggle the dos compatibility flag
       d   delete a partition
       l   list known partition types
       m   print this menu
       n   add a new partition
       o   create a new empty DOS partition table
       p   print the partition table
       q   quit without saving changes
       s   create a new empty Sun disklabel
       t   change a partition's system id
       u   change display/entry units
       v   verify the partition table
       w   write table to disk and exit
       x   extra functionality (experts only)
    Command (m for help): n  #添加一个分区
    Command action
       e   extended
       p   primary partition (1-4)
    p  #选择添加一个扩展分区
    Partition number (1-4):
    Value out of range.
    Partition number (1-4): 1
    First cylinder (1-104025, default 1):
    Using default value 1
    Last cylinder, +cylinders or +size{K,M,G} (1-104025, default 104025):
    Using default value 104025
    
    Command (m for help): t  #改变分区的格式
    Selected partition 1
    Hex code (type L to list codes): 8e  #改成lvm
    Changed system type of partition 1 to 8e (Linux LVM)
    
    Command (m for help): w  # 保存更改
    root@sh-kvm-1-1 ~]# mkfs.ext4 /dev/vdb1  # 格式化分区
    mke2fs 1.41.12 (17-May-2010)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    3276800 inodes, 13107142 blocks
    655357 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=4294967296
    400 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424
    
    Writing inode tables: done
    Creating journal (32768 blocks): done
    Writing superblocks and filesystem accounting information: done
    
    This filesystem will be automatically checked every 28 mounts or
    180 days, whichever comes first.  Use tune2fs -c or -i to override.
    [root@sh-kvm-1-1 ~]# pvc reate /dev/vdb1   # 创建pv
    vdb   vdb1
    [root@sh-kvm-1-1 ~]# vgextend VolGroup /dev/vdb  # 扩展lvm vg
    vdb   vdb1
    [root@sh-kvm-1-1 ~]# vgs
      VG       #PV #LV #SN Attr   VSize  VFree
      VolGroup   2   2   0 wz--n- 69.50g 50.00g
    # 从上面能看出,新添加的 已经加到lvm组中

    改变虚拟机的参数

    通过命令行更改创建之后虚拟机的内存,cpu等信息

    • 更改内存
    # 1. 查看虚拟机当前内存
    [root@sh-kvm-1 ~]# virsh dominfo kvm-1 | grep memory
    Max memory:     4194304 KiB
    Used memory:    4194304 KiB
    
    # 2、动态设置内存为512MB,内存减少
    virsh setmem kvm-1 524288
    # 注意单位必须是KB
    
    # 3、查看内存变化
    # virsh dominfo kvm-1 | grep memory
    Max memory: 14194304 KiB
    Used memory: 524288 kiB
    
    # 4、内存增加
    virsh shutdown kvm-1
    virsh edit kvm-1  # 直接更改memory
    virsh create /etc/libvirt/demu/kvm-1/xml
    # 之后操作1,2,3步骤增加内存
    • 更改CPU

    需要修改配置文件,因此需要停止虚拟机

    virsh shutdown kvm-1
    virsh edit kvm-1
    #  <vcpu>2</vcpu>  # 4 > 2
    virsh create /etc/libvirt/demu/kvm-1/xml
    • 硬盘扩容
    1. Create a 10-GB non-sparse file:
    # dd if=/dev/zero of=/vm-images/vm1-add.img bs=1M count=10240
    2. Shutdown the VM:
     # virsh shutdown vm1
    3. Add an extra entry for ‘disk’ in the VM's XML file in /etc/libvirt/qemu. You can look copy & paste
    the entry for your mail storage device and just change the target and address tags. For example:
     # virsh edit vm1
     <disk type='file' device='disk'>
     <driver name='qemu' type='raw' cache='none' io='threads'/>
     <source file='/vm-images/vm1.img'/>
     <target dev='vda' bus='virtio'/>
     <address type='pci' domain='0x0000' bus='0x00' slot='0x04'
    function='0x0'/>
     </disk>
     Add:
     <disk type='file' device='disk'>
     <driver name='qemu' type='raw' cache='none' io='threads'/>
     <source file='/vm-images/vm1-add.img'/>
     <target dev='vdb' bus='virtio'/>
     <address type='pci' domain='0x0000' bus='0x00' slot='0x06'
    function='0x0'/>
     </disk>
     # 这里建议使用上面的添加硬盘的方式添加

    删除虚拟机

    • 第一步,停掉虚拟机
    virsh shutdown kvm-1
    • 第二步
    virsh destroy kvm-1
    • 第三步
    virsh undefine kvm-1
    • 第四部
     rm /dev/vg_shkvm1/kvm-1  # 不建议删除硬盘

     

    更为详细的KVM内容见:http://blog.csdn.net/github_27924183/article/details/76914322?locationNum=5&fps=1

     

     

     

    展开全文
  • CentOS7.4安装部署KVM虚拟机

    万次阅读 多人点赞 2018-06-23 15:26:56
    1. 查看系统版本 [root@openstack ~]# cat /etc/centos-release ...2. 首先验证CPU是否支持虚拟化,输入有vmx或svm就支持,支持虚拟化则就支持KVM [root@openstack ~]# cat /proc/cpuinfo | egrep 'vmx|svm' 3...
  • KVM安装虚拟机

    千次阅读 2018-03-29 13:26:10
    一、配置网桥1、输入 ifconfig 查看目前使用的网卡名字如:em2(有IP的那个),并记下其IP地址,如:192.168.0.161;2、cp /etc/sysconfig/network-scripts/ifcfg-em2 /etc/sysconfig/network-scripts/ifcfg-br0,将...
  • CentOS7安装KVM虚拟机(Windows Server2016)详解2018年03月23日 15:20:43阅读数:268通过查阅资料和不断摸索,最终在CentOS7.3系统上成功安装Windows Server2016虚拟机,至于linux虚拟机安装大同小异,不同的地方...
  • KVM虚拟机创建功能详细讲解

    万次阅读 2012-09-01 11:12:17
    KVM虚拟机创建功能详细讲解 一.KVM虚拟机创建的用户操作 对于用户或者管理员来说,虚拟机的创建有着很多的方法,例如:kvm自带命令行工 具、使用virsh命令来创建、使用具有图形界面的virt-manager等等。但是...
  • 1.修改虚拟机配置文件 修改 重新指向磁盘镜像路径 2.配置文件生效 virsh define vm1 ...=================================================================================...克隆kvm虚拟机 1.拷贝镜像、配置
  • KVM虚拟机迁移原理分析

    千次阅读 2018-04-11 19:49:40
    KVM虚拟机在不同主机之间的迁移,是个复杂的问题,有非常多的解决方案,但是不同的解决方案都有其优点和缺点,下面来分析下当前几种可用的KVM虚拟机迁移的方案。1. 虚拟机迁移过程中数据的传输(磁盘镜像和内存数据...
  • 外网访问KVM虚拟机

    千次阅读 2017-01-06 10:13:15
    外网访问KVM虚拟机KVM虚拟机连接到的是virt-manager创建的内部网络,但是有时我们还需要能够从外部网络访问到创建的虚拟机. 虚拟机叫做客户机, 运行虚拟机的物理机叫做宿主机.情景如下:在宿主机上创建一个虚拟网络,...
  • 虚拟机是云计算时代的重要技术之一,经过两年多的研发攻关,龙芯KVM虚拟机软件正式发布1.0版本。龙芯KVM虚拟机能够实现在一台龙芯3A主机上运行多个独立的逻辑虚拟机,并通过与libvirt标准管理工具无缝连接,实现...
  • 我们在开启与关闭KVM虚拟机时,一般是通过start、shutdown、reboot等命令来进行。但是有时候我们会发现在使用shutdown、reboot命令进行关闭和重启虚拟机时,虚拟机没有任何反应,该怎么运行还是怎么运行,这个时候...
  • kvm虚拟机使用说明

    2019-06-15 20:02:24
    一:kvm虚拟化应用场景 场景1:只有一台服务器,但是要运行多个版本的软件,不同版本之间还相互冲突场景2:机房的迁移,物理机在运输过程中容易损坏,导致数据丢失...二:kvm虚拟机安装及使用 1:首先关闭selinux和...
  • 热迁移描述:相比KVM虚拟机冷迁移中需要拷贝虚拟机虚拟磁盘文件,kvm虚拟机热迁移无需拷贝虚拟磁盘文件,但是需要迁移到的宿主机之间需要有相同的目录结构虚拟机磁盘文件,也就是共享存储,本文这部分内容通过nfs来...
  • kvm虚拟机之间通讯

    千次阅读 2019-04-11 11:25:13
    kvm虚拟机间通信,在不影响宿主机通信或者各个虚机间通信互不影响的情况下。 各个虚拟机网卡可以使用virtio驱动,使用宿主机的虚拟网桥进行通信。 1、首先使用brctl show查看宿主机网桥使用情况。 virbr0为宿...
  • 1. 概述2. 计算资源调整2.1 调整处理器配置2.2 调整内存配置3....并且还会包括KVM虚拟机本身的配置调整等。 本篇博客主要设计到KVM虚拟机的资源调整。虚拟机的动态调整参见博客《》 2. 计算资源调整 ...
  • 如何将KVM虚拟机迁移到VMware平台?

    千次阅读 2020-01-16 13:59:46
    前段时间有个项目涉及到KVM虚拟机迁移到VMware平台,今天就在此分享一下思路,具体操作命令就不再赘述了。 点击查看原文,获取更多技术故障解决方案:添加链接描述 **1、首先应该想到P2V工具,**VMware的VMware ...
  • kvm虚拟机安装

    2020-07-24 23:33:57
    kvm虚拟机安装介绍 KVM 虚拟机的管理工具  准确来说,KVM 仅仅是 Linux 内核的一个模块。管理和创建完整的 KVM 虚拟机,需要更多的辅助工具 QEMU-KVM 在 Linux 系统中,首先我们可以用 modprobe 系统工具去加载...
  • kvm虚拟机时间配置

    2019-07-09 00:24:08
    注:在虚拟化环境中,虚拟机在长时间运行过程中,时间会变慢,通常的作法是配置ntpdate定时与时间服务器进行时间同步的计划任务。...kvm虚拟机采用utc时间,需要先修改配置文件使用KVM虚拟机的时间与虚拟主机同步。...
1 2 3 4 5 ... 20
收藏数 28,364
精华内容 11,345
关键字:

kvm虚拟机