2021-05-12 14:32:11
CentOS 7.2下KVM安裝及初步使用
KVM是Kernel-based Virtual Machine的簡稱,是一個開源的虛擬化模組,今天我將在CentOS7的作業系統上安裝KVM,以下是我的安裝步驟。
一.環境資訊
系統: CentOS 7.2 IP: 10.0.0.12/24
在虛擬機器安裝時,需要啟用CPU的虛擬化功能
二. KVM安裝步驟
1. 安裝qemu-kvm和libvirt
[root@kvm-node1 ~]# yum install -y qemu-kvm libvirt ###qemu-kvm用來建立虛擬機器硬碟,libvirt用來管理虛擬機器
2. 安裝virt-install
[root@kvm-node1 ~]# yum install -y virt-install ###用來建立虛擬機器
3. 啟動libvirtd,並將它設為開機啟動,啟動後使用ifconfig檢視,發現會多出來一塊virbr0的網絡卡,ip預設為192.168.122.1/24,說明libvirtd啟動成功,如果預設沒有ifconfig命令,使用yum install -y net-tools安裝
[root@kvm-node1 ~]# systemctl start libvirtd && systemctl enable libvirtd [root@kvm-node1 ~]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.0.0.12 netmask 255.255.255.0 broadcast 10.0.0.255 inet6 fe80::5505:5aa:3f96:f3f8 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:51:09:70 txqueuelen 1000 (Ethernet) RX packets 22459 bytes 29147955 (27.7 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 5161 bytes 587757 (573.9 KiB) 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 1 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether 52:54:00:fb:b1:55 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
經過以上三步,KVM安裝成功,下面開始使用KVM建立虛擬機器.
三. 使用KVM建立虛擬機器(CentOS7)
1. 使用qemu命令建立一個10G的硬碟(最小10,G,可以更多),硬碟的名稱為: CentOS-7-x86_64.raw
[root@kvm-node1 ~]# qemu-img create -f raw /opt/CentOS-7-x86_64.raw 10G Formatting '/opt/CentOS-7-x86_64.raw', fmt=raw size=10737418240 [root@kvm-node1 ~]# ll -h /opt total 0 -rw-r--r-- 1 root root 10G Aug 22 07:59 CentOS-7-x86_64.raw
2. 使用virt-install建立名稱為CentOS-7-x86_64的虛擬機器,在建立之前,先上傳一個CentOS7的ISO映象,最好在根目錄下建立一個ISO的目錄資料夾
[root@kvm-node1 ~]# virt-install --virt-type kvm --name CentOS-7-x86_64 --ram 1024 --cdrom=/ISO/CentOS-7-x86_64-Everything-1611.iso --disk path=/opt/CentOS-7-x86_64.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole Starting install... Creating domain... | 0 B 00:03 Domain installation still in progress. You can reconnect to the console to complete the installation process.
這時候使用TightVNC工具,連線主機IP 10.0.0.12,設定安裝作業系統的網絡卡名稱為eth0,如圖所示
安裝步驟和我們平時安裝作業系統的方法一樣,安裝完成後,可以使用virsh list --all顯示KVM上所有的虛擬機器
[root@kvm-node1 ~]# virsh list --all Id Name State ---------------------------------------------------- - CentOS-7-x86_64 shut off ### 可以看到虛擬機器的名稱和狀態
四. 管理KVM
1. 使用virsh啟動KVM中的虛擬機器
[root@kvm-node1 ~]# virsh start CentOS-7-x86_64 Domain CentOS-7-x86_64 started
啟動後,使用VNC連線工具,登入後可以看到網絡卡的名稱為eth0,預設沒有ip地址,是因為網絡卡沒有啟用,將ONBOOT改為yes,重新啟動網絡卡,可以看到ip地址為192.168.122.0網段的
當KVM中的虛擬機器啟動後,可以在/etc/libvirt/qemu目錄下,看到啟動的虛擬機器的資訊
[root@kvm-node1 ~]# cd /etc/libvirt/qemu [root@kvm-node1 qemu]# pwd /etc/libvirt/qemu [root@kvm-node1 qemu]# ls -lh total 4.0K -rw------- 1 root root 3.8K Aug 22 08:18 CentOS-7-x86_64.xml drwx------ 3 root root 42 Aug 22 07:51 networks
CentOS-7-x86_64.xml就是啟動的虛擬機器的資訊,當我們使用vim編輯器檢視時,會提示如下資訊:
<!-- WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE OVERWRITTEN AND LOST. Changes to this xml configuration should be made using: virsh edit CentOS-7-x86_64 or other application using the libvirt API. -->
看到提示需要修改虛擬機器的資訊,需要使用命令 virsh edit CentOS-7-x86_64,是用這條命令後,我們可以看到很多虛擬機器的資訊,包括vcpu,memory等
2. CPU熱新增(KVM支援CPU的熱新增,不過局限是宿主機和虛擬機器的系統相同才行,這裡宿主機是CentOS7,虛擬機器也是CentOS7,所以可以模擬CPU熱新增,不過真實生產環境不建議這樣操作)
[root@kvm-node1 ~]# virsh edit CentOS-7-x86_64 6 <vcpu placement='static'>1</vcpu> 修改為: <vcpu placement='auto' current="1">4</vcpu> ##意思是當前cpu為1核,最多可以有4核,修改完虛擬機器的組態檔,必須關閉虛擬機器再啟動,設定才能生效
[root@kvm-node1 ~]# virsh shutdown CentOS-7-x86_64 ##關閉虛擬機器
Domain CentOS-7-x86_64 is being shutdown
[root@kvm-node1 ~]# virsh list --all ##檢視虛擬機器狀態
Id Name State
----------------------------------------------------
- CentOS-7-x86_64 shut off
[root@kvm-node1 ~]# virsh start CentOS-7-x86_64 ##啟動虛擬機器
Domain CentOS-7-x86_64 started
[root@kvm-node1 ~]# virsh list --all
Id Name State
----------------------------------------------------
3 CentOS-7-x86_64 running
先通過VNC工具檢視虛擬機器的cpu資訊
在宿主機上通過命令新增核數
[root@kvm-node1 ~]# virsh setvcpus CentOS-7-x86_64 2 --live ##虛擬機器的cpu新增到2core
再通過VNC工具檢視虛擬機器CPU資訊
3. 記憶體熱新增(還是不建議生產中使用,知道功能就行了)
通過VNC連線虛擬機器,檢視虛擬機器記憶體
[root@kvm-node1 ~]# virsh qemu-monitor-command CentOS-7-x86_64 --hmp --cmd info balloon ## 檢視當前虛擬機器的記憶體 balloon: actual=1024 [root@kvm-node1 ~]# virsh qemu-monitor-command CentOS-7-x86_64 --hmp --cmd balloon 512 ## 修改當前虛擬機器的記憶體為512 [root@kvm-node1 ~]# virsh qemu-monitor-command CentOS-7-x86_64 --hmp --cmd info balloon ## 檢視修改的記憶體資訊已經改變成了512 balloon: actual=512
使用VNC工具連線虛擬機器,檢視記憶體是否有變:
4. 網絡卡設定(如何將KVM虛擬機器中的網絡卡改為橋接模式,讓區域網的其他使用者可以正常存取)
[root@kvm-node1 ~]# brctl show ##檢視已有網橋 bridge name bridge id STP enabled interfaces virbr0 8000.525400fbb155 yes virbr0-nic vnet0
建立一個指令碼,刪除ens33網絡卡的ip資訊,新建一個橋接網絡卡,並且將ens33網絡卡的ip資訊富裕新建的橋接網絡卡
[root@kvm-node1 ~]# vim br0.sh #!/bin/bash brctl addbr br0 #建立一個橋接網絡卡br0 brctl addif br0 ens33 #將ens33網絡卡的橋接資訊轉到br0網絡卡 ip addr del dev ens33 10.0.0.12/24 #將ens33網絡卡的ip資訊刪除 ifconfig br0 10.0.0.12/24 up #將ens33網絡卡的ip資訊這只到br0網絡卡上 route add default gw 10.0.0.2 #新增閘道器
[root@kvm-node1 ~]# chmod u+x br0.sh
[root@kvm-node1 ~]# ./br0.sh
使用ifocnfig檢視網絡卡的ip資訊,可以看到br0的地址已經變為了10.0.0.12/24
[root@kvm-node1 ~]# ifconfig br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.0.0.12 netmask 255.255.255.0 broadcast 10.0.0.255 inet6 fe80::20c:29ff:fe51:970 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:51:09:70 txqueuelen 1000 (Ethernet) RX packets 553 bytes 41723 (40.7 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 680 bytes 63511 (62.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::5505:5aa:3f96:f3f8 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:51:09:70 txqueuelen 1000 (Ethernet) RX packets 6107998 bytes 8708309251 (8.1 GiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 534420 bytes 68906654 (65.7 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 1 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether 52:54:00:fb:b1:55 txqueuelen 1000 (Ethernet) RX packets 6685 bytes 278745 (272.2 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 6981 bytes 34351624 (32.7 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 vnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::fc54:ff:fe6b:5fee prefixlen 64 scopeid 0x20<link> ether fe:54:00:6b:5f:ee txqueuelen 1000 (Ethernet) RX packets 16 bytes 1650 (1.6 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 987 bytes 52236 (51.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
使用命令修改KVM虛擬機器的資訊
[root@kvm-node1 ~]# virsh edit CentOS-7-x86_64 69 <interface type='network'> 修改為: <interface type='bridge'> ##橋接 71 <source network='default'/> 修改為: <source bridge='br0'/>
修改完成後關閉虛擬機器,啟動虛擬機器,通過VNC工具修改ip為10.0.0.14/24,嘗試ping宿主機是否可以ping通,並通過ssh連線
[root@kvm-node1 ~]# virsh shutdown CentOS-7-x86_64 Domain CentOS-7-x86_64 is being shutdown [root@kvm-node1 ~]# virsh start CentOS-7-x86_64 Domain CentOS-7-x86_64 started
通過原生的ssh軟體,嘗試連線,可以連線,並且可以看到IP資訊
以上就是CentOS7中KVM的安裝和簡單管理.
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-08/146414.htm
相關文章