文章目錄
1. 什麼是KVM???
KVM(Kernel-based Virtual Machine)是一個開源軟件,基於內核的虛擬化技術,實際是嵌入系統的一個虛擬化模塊,通過優化內核來使用虛擬技術,該內核模塊使得Linux變成了一個Hypervisor,虛擬機使用 Linux 自身的調度器進行管理。
KVM 是基於虛擬化擴展(Intel VT或者AMD-V)的X86硬件的開源的Linux原生的全虛擬化解決方案
。KVM中,虛擬機被實現爲常規的Linux進程,由標準Linux調度程序進行調度;虛機的每個虛擬CPU被實現爲一個常規的Linux進程。這使得KVM能夠使用 Linux內核的已有功能。但是,KVM本身不執行任何硬件模擬,需要客戶空間程序通過/dev/kvm接口設置一個客戶機虛擬服務器的地址空間,向它提供模擬的I/O,並將它的視頻顯示映射回宿主的顯示屏。目前這個應用程序是QEMU。
2. 案例目標
- 使用命令安裝KVM組件
- 掌握NAT啓動腳本的編寫和使用
- 掌握在NAT模式下啓動虛擬機
2.1 案例分析
2.2 規劃節點
IP | 主機名 | 節點 |
---|---|---|
192.168.200.9 | localhost | KVM |
2.3 基礎準備
使用VMWare Workstation軟件安裝CentOS 7.2操作系統,鏡像使用提供的CentOS-7-x86_64-DVD-1511.iso,關閉防火牆並且配置SELinux規則,配置IP地址。YUM源使用提供的kvm_yum
文件夾。
3. 案例實施
3.1 查看CPU是否支持虛擬化
grep -E '(svm|vmx)' /proc/cpuinfo
找到flags部分,如果其中輸出有SVM或VMX,表明CPU支持虛擬化技術
svmSecure virtual machine, AMD的虛擬化技術AMD-V
vmxIntel的虛擬化技術Intel-VT
如果無輸出結果,需要在BIOS中開啓VT,然後在vmware workstation中開啓,如下圖所示
3.2 安裝KVM
配置本地YNM安裝源,將提供的kvm_yum文件夾上傳至/opt目錄,並配置本地YNM源,命令如下:
[root@localhost ~]# vi /etc/yum.repos.d/yum.repo
[kvm]
name=kvm
baseurl=file:///opt/kvm_yum
gpgcheck=0
enabled=1
使用YUM安裝KVM的主要組件及工具。命令如下:
[root@localhost ~]# yum install qemu-kvm openssl libvirt -y
命令解釋:
qemu-kvm qemu-img (qcow2,raw)
作用
:管理虛擬機的虛擬磁盤
openssl: 進行安全通信,避免竊聽,同時確認另一端連接者的身份
libvirt 作用: 虛擬機的管理軟件
libvirt: kvm,xen,qemu,lxc…
啓動libvirtd服務,命令如下:
[root@localhost ~]# systemctl start libvirtd
將/usr/libexec/qemu-kvm鏈接爲/usr/bin/qemu-kvm。命令如下:
ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm
3.3 創建NAT模式KVM虛擬機
將cirros-0.3.3-x86_64-disk.img鏡像
與qemu-ifup-NAT.txt腳本文件
上傳到系統/root目錄下
[root@localhost ~]# ls
cirros-0.3.3-x86_64-disk.img qemu-ifup-NAT.txt
給腳本賦予執行權限。命令如下:
[root@localhost ~]# chmod +x /root/qemu-ifup-NAT.txt
通過qemu-kvm命令啓動KVM虛擬機。命令如下:
[root@localhost ~]# qemu-kvm -m 1024 -drive file=/root/cirros-0.3.3-x86_64-disk.img,if=virtio -net nic,model=virtio -net tap,script=/root/qemu-ifup-NAT.txt -nographic -vnc :1
4. 驗證
創建虛擬機完成後,cirros用戶登錄虛擬機,輸入用戶名爲cirros,密碼爲cubswin:)。然後輸入ip a命令查詢IP地址,最後輸入route -n命令查詢路由表。命令如下:
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.89/24 brd 192.168.122.255 scope global eth0
inet6 fe80::5054:ff:fe12:3456/64 scope link tentative flags 08
valid_lft forever preferred_lft forever
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.122.1 0.0.0.0 UG 0 0 0 eth0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
至此,使用KVM服務創建虛擬機完畢