KVM虛擬化使用詳解--技術流ken

 

KVM介紹

 

Kernel-based Virtual Machine的簡稱,是一個開源的系統虛擬化模塊,自Linux 2.6.20以後集成在Linux的各個主要發行版本中。html

KVM的虛擬化須要硬件支持(如Intel VT技術或者AMD V技術)。是基於硬件的徹底虛擬化。shell

 

虛擬化是雲計算的基礎。虛擬化能夠知足在一臺物理的服務器上運行多個虛擬機。虛擬機共享物理機的 CPU、內存、IO 硬件資源,但邏輯上虛擬機之間是相互隔離的。centos

物理機咱們通常稱爲宿主機(Host),宿主機上面的虛擬機稱爲客戶機(Guest)。api

 

虛擬化分類

 

虛擬化分爲兩種:1型虛擬化和2型虛擬化。bash

 

1型虛擬化

 

Hypervisor 直接安裝在物理機上,多個虛擬機在 Hypervisor 上運行。Hypervisor 實現方式通常是一個特殊定製的 Linux 系統。Xen 和 VMWare 的 ESXi 都屬於這個類型。服務器

 

 

2型虛擬化

 

物理機上首先安裝常規的操做系統,好比 Redhat、Ubuntu 和 Windows。Hypervisor 做爲 OS 上的一個程序模塊運行,並對管理虛擬機進行管理。KVM、VirtualBox 和 VMWare Workstation 都屬於這個類型。網絡

 

 

理論上講:dom

1型虛擬化通常對硬件虛擬化功能進行了特別優化,性能上比2型要高;ssh

2型虛擬化由於基於普通的操做系統,會比較靈活,好比支持虛擬機嵌套。嵌套意味着能夠在KVM虛擬機中再運行KVM。工具

 

 

 

部署KVM

 

環境準備

 

確認開啓虛擬化

[root@ken ~]# grep -E "(vmx)|(svm)" /proc/cpuinfo flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc art rep_good nopl tsc_reliable nonstop_tsc extd_apicid aperfmperf eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw retpoline_amd vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap xsaveopt clzero irperf xsaveerptr ibpb arat nptsvm_lock nrip_save vmcb_clean flushbyasid decodeassists

 

 

第一步:下載相關軟件

[root@ken ~]# yum install libvirt virt-install qemu-kvm -y

 

libvirt :  KVM 的管理工具。Libvirt 包含 3 個東西:後臺 daemon 程序 libvirtd、API 庫和命令行工具 virsh

qemu-kvm:KVM 和 QEMU 的核心包,提供 CPU、內存和 IO 虛擬化功能

virt-install是一個命令行工具,它可以爲KVM、Xen或其它支持libvrit API的hypervisor建立虛擬機並完成GuestOS安裝

 

第二步:啓動libvirt

[root@ken ~]# systemctl restart libvirtd

 

第三步:建立磁盤

[root@ken ~]# qemu-img create -f raw /ken/centos7-x86_64.raw 10G Formatting '/ken/centos7-x86_64.raw', fmt=raw size=10737418240

 

第四步:建立虛擬機

[root@ken ~]# virt-install --virt-type kvm --name Centos7-x86_64 --ram 1024 --cdrom=/tmp/CentOS-7.3-x86_64-Minimal-1511.iso --disk path=/ken/centos7-x86_64.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

 

注意:須要上傳一個鏡像到/tmp目錄下,其餘目錄也能夠,上面指定便可

 

第五步:快速使用VNC進行鏈接

ip地址輸入虛擬機ip

 

開始安裝系統

 

定製化系統

 

開始安裝

 

 第六步:查看已經建立的虛擬機

[root@ken ~]# virsh list --all
Id Name State
----------------------------------------------------
- Centos7-x86_64 shut off

 

第七步:啓動虛擬機

[root@ken ~]# virsh start Centos7-x86_64 Domain Centos7-x86_64 started [root@ken ~]# virsh list --all Id Name State ----------------------------------------------------
 2     Centos7-x86_64                 running

 

第八步:使用VNC再次鏈接

如今就能夠登陸進去咱們建立的虛擬機裏面去了

 

第九步:ssh鏈接

宿主機上鍊接

首先查看新建虛擬機IP地址

 

 宿主機進行鏈接

[root@ken ~]# ssh 192.168.122.198 The authenticity of host '192.168.122.198 (192.168.122.198)' can't be established.
ECDSA key fingerprint is SHA256:t+jpHwwHJk8mo2XZB93H9afhSVy7BCMvLsvqsUF+Obg. ECDSA key fingerprint is MD5:48:d5:9e:db:f8:bb:5e:56:c1:c8:1d:a2:4b:45:d6:fc. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.122.198' (ECDSA) to the list of known hosts. root@192.168.122.198's password: 
Last login: Mon Mar 18 21:06:27 2019 [root@localhost ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:89:17:d7 brd ff:ff:ff:ff:ff:ff inet 192.168.122.198/24 brd 192.168.122.255 scope global dynamic eth0 valid_lft 3510sec preferred_lft 3510sec inet6 fe80::5054:ff:fe89:17d7/64 scope link valid_lft forever preferred_lft forever

 

登陸退出虛擬機

 

第一步:在建立的KVM虛擬機裏面執行以下的命令

[root@localhost ~]# grubby --update-kernel=ALL --args="console=ttyS0"

 

第二步:重啓KVM虛擬機

 

第三步:使用virsh console登陸登陸虛擬機

執行virsh console 虛擬機名稱

[root@ken ~]# virsh console Centos7-x86_64 Connected to domain Centos7-x86_64 Escape character is ^] #到這步再次按回車 CentOS Linux 7 (Core) Kernel 3.10.0-327.el7.x86_64 on an x86_64 localhost login: root #輸入用戶 Password: #密碼 Last login: Mon Mar 18 22:19:47 on ttyS0 [root@localhost ~]#

 

第四步:退出KVM虛擬機

按這兩個組合鍵,按ctrl加上中括號的右邊: ctrl+]

[root@ken ~]# virsh console Centos7-x86_64 Connected to domain Centos7-x86_64 Escape character is ^] CentOS Linux 7 (Core) Kernel 3.10.0-327.el7.x86_64 on an x86_64 localhost login: root Password: Last login: Mon Mar 18 22:20:44 on ttyS0 [root@localhost ~]# [root@ken ~]#

 

克隆虛擬機

 

第一步:關閉虛擬機

[root@ken ~]# virsh shutdown Centos7-x86_64 Domain Centos7-x86_64 is being shutdown [root@ken ~]# virsh list --all Id Name State ----------------------------------------------------
 -     Centos7-x86_64                 shut off

 

第二步: 建立磁盤位置

[root@ken ~]# mkdir /ken/img

 

第三步:使用virt-clone克隆新的虛擬機

[root@ken ~]# virt-clone -o Centos7-x86_64 -n centos7_test -f /ken/img/centos7_test.img Allocating 'centos7_test.img'                                                                                  |  10 GB  00:00:36 Clone 'centos7_test' created successfully.

 

第四步:查看虛擬機

[root@ken ~]# virsh list --all Id Name State ----------------------------------------------------
 -     Centos7-x86_64 shut off -     centos7_test                   shut off

 

第五步:啓動虛擬機

[root@ken ~]# virsh start centos7_test Domain centos7_test started [root@ken ~]# virsh list --all Id Name State ----------------------------------------------------
 3     centos7_test                   running

 

第六步:進入虛擬機

[root@ken ~]# virsh console centos7_test Connected to domain centos7_test Escape character is ^] CentOS Linux 7 (Core) Kernel 3.10.0-327.el7.x86_64 on an x86_64 localhost login: root Password: Last login: Mon Mar 18 22:21:24 on ttyS0 [root@localhost ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:cc:69:f8 brd ff:ff:ff:ff:ff:ff inet 192.168.122.161/24 brd 192.168.122.255 scope global dynamic eth0 valid_lft 3597sec preferred_lft 3597sec inet6 fe80::5054:ff:fecc:69f8/64 scope link valid_lft forever preferred_lft forever

 

xshell鏈接虛擬機

 

如今物理主機是ping不通KVM虛擬機的,只有宿主機能夠和KVM通訊

 

第一步:建立腳本並執行

[root@ken ~]# cat bridg.sh #!/bin/bash brctl addbr br0 #建立橋接網卡 brctl addif br0 eth0 #把eth0加入到br0中 ip a d 192.168.4.190/24 dev eth0 #刪除eth0的IP地址 ifconfig br0 192.168.4.190/24 up #啓動br0網絡 route add default gw 192.168.4.1 #添加網關

 

第二步:查看網絡

 

第三步:測試外網連通性

[root@ken ~]# ping www.baidu.com PING www.a.shifen.com (119.75.217.26) 56(84) bytes of data. 64 bytes from 119.75.217.26 (119.75.217.26): icmp_seq=1 ttl=54 time=6.08 ms 64 bytes from 119.75.217.26 (119.75.217.26): icmp_seq=2 ttl=54 time=9.20 ms 64 bytes from 119.75.217.26 (119.75.217.26): icmp_seq=3 ttl=54 time=8.58 ms ^C --- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 6020ms rtt min/avg/max/mdev = 6.087/7.957/9.201/1.346 ms

 

第四步:編輯虛擬機

 修改以下的三處位置便可

[root@ken ~]# virsh edit Centos7-x86_64

 

第五步: 啓動KVM虛擬機並進入KVM虛擬機編輯網卡

配置一個與物理主機同網段的網絡

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE="Ethernet" BOOTPROTO="static" NAME="eth0" DEVICE="eth0" ONBOOT="yes" IPADDR=192.168.4.165 NETMASK=255.255.255.0 GATEWAY=192.168.4.1 DNS1=8.8.8.8 [root@localhost ~]# systemctl restart network

 

第六步:xshell鏈接KVM虛擬機

Connecting to 192.168.4.165:22... Connection established. To escape to local shell, press 'Ctrl+Alt+]'. WARNING! The remote SSH server rejected X11 forwarding request. Last login: Mon Mar 18 23:33:21 2019 [root@localhost ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:89:17:d7 brd ff:ff:ff:ff:ff:ff inet 192.168.4.165/24 brd 192.168.4.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:fe89:17d7/64 scope link valid_lft forever preferred_lft forever

 

原文出處:https://www.cnblogs.com/kenken2018/p/10550350.html

相關文章
相關標籤/搜索