centos7使用kvm創建虛擬機

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.xml
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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章