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 定義終端額外的參數
開始安裝後,正常的情況下會進入到這樣一個界面:
這是讓你配置語言、時區、安裝源、網絡、密碼等信息,就和我們在VMware裏安裝CentOS虛擬機是一樣的,只不過這個是命令行形式,而VMware裏是圖形界面罷了。
首先設置語言,按數字1,回車進入以下界面:
例如我要選Chinese就按數字68並回車即可,回車之後會讓你選擇是中文簡體還是繁體,也是按下相應的數字並回車即可:
配置完成之後又會再次回到配置界面,這次我們來設置時區:
設置系統安裝盤:
設置root用戶的密碼:
最後開始安裝系統:
安裝完成之後就會停止在以下這個界面,按一下回車即可,這時就會重啓安裝完的系統:
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