日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在CentOS7上运行KVM虚拟机

發布時間:2024/3/12 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在CentOS7上运行KVM虚拟机 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在CentOS7上運行KVM虛擬機

  • 準備工作
    • 檢查CPU特性
    • 安裝一些基礎軟件包(非必須)
    • 安裝KVM及相關工具
    • 驗證安裝結果
    • 啟動服務并設置為開機自動運行
    • 創建網絡環境
  • 使用KVM虛擬機
    • 下載操作系統的guest image
    • 準備磁盤鏡像
    • 創建和管理虛擬機
    • 使用圖形界面管理虛擬機
  • 參考資料

準備工作

檢查CPU特性

CPU應該支持vmx特性以更好地運行KVM虛擬機:lscpu | grep vmx

安裝一些基礎軟件包(非必須)

sudo yum install -y epel-release net-tools vim unzip zip wget ftp bridge-utils

安裝KVM及相關工具

sudo yum install -y qemu-kvm libvirt sudo yum install -y libguestfs-tools libguestfs-tools libguestfs-tools-c

驗證安裝結果

$ lsmod | grep ^kvm kvm_intel 174250 0 kvm 570658 1 kvm_intel

啟動服務并設置為開機自動運行

systemctl start libvirtd systemctl enable libvirtd

檢查服務狀態:

systemctl status libvirtd systemctl is-enabled libvirtd

創建網絡環境

注意: 如果這時系統里已經有了virbr0這個網橋,則可以跳過本章節,后面直接使用virbr0網橋即可。

創建default網絡和virbr0網橋:

sudo virsh net-define /usr/share/libvirt/networks/default.xml sudo virsh net-start default sudo virsh net-autostart default sudo virsh net-list

檢查網絡設置:

[root@cheshi-desktop1 ~]# sudo virsh net-listName State Autostart Persistent --------------------------------------------default active yes yes[root@cheshi-desktop1 ~]# ifconfig virbr0 virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 10.66.15.173 netmask 255.255.254.0 broadcast 10.66.15.255inet6 fe80::4ecc:6aff:fec5:ad0d prefixlen 64 scopeid 0x20<link>ether 4c:cc:6a:c5:ad:0d txqueuelen 1000 (Ethernet)RX packets 1613 bytes 118768 (115.9 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 74 bytes 10467 (10.2 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0[root@cheshi-desktop1 ~]# ifconfig eno1 eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet6 fe80::4ecc:6aff:fec5:ad0d prefixlen 64 scopeid 0x20<link>ether 4c:cc:6a:c5:ad:0d txqueuelen 1000 (Ethernet)RX packets 50352153 bytes 7052127783 (6.5 GiB)RX errors 0 dropped 111 overruns 0 frame 0TX packets 2944305 bytes 2436350686 (2.2 GiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0device interrupt 16 memory 0xdf000000-df020000

使用KVM虛擬機

方案一:使用KVM創建一臺不帶操作系統的虛擬機,然后使用安裝鏡像或網絡服務為其安裝操作系統;
方案二:直接下載操作系統的“guest image”并由其直接運行虛擬機。(推薦)

第二種方法可以省去操作系統的安裝過程,因此效率比較高,也比較省事,這里著重介紹這種方法。

下載操作系統的guest image

在CentOS官方的下載頁面中,找到供Cloud使用的鏡像文件,使用wget等命令將其下載到物理機中。

wget http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2.xz

準備磁盤鏡像

準備虛擬機的系統盤:

[cheshi@cheshi-desktop1 kvm_workspace]$ mkdir vm1 [cheshi@cheshi-desktop1 kvm_workspace]$ cd vm1 [cheshi@cheshi-desktop1 kvm_workspace]$ xz -d CentOS-7-x86_64-GenericCloud.qcow2.xz [cheshi@cheshi-desktop1 kvm_workspace]$ cp CentOS-7-x86_64-GenericCloud.qcow2 /var/lib/libvirt/images/vm1.qcow2 [cheshi@cheshi-desktop1 kvm_workspace]$ cd /var/lib/libvirt/images/

接下來需要對鏡像做一些修改,步驟中用到的virt-edit和guestfish命令來源于libguestfs項目,如果找不到這兩個工具,可以通過命令sudo yum install libguestfs*來安裝。

出于安全原因,我們無法登錄root用戶,因此我們需要清空鏡像中的root密碼:

sudo virt-edit -a ./vm1.qcow2 /etc/shadow -e 's/^root:[^:]*:/root::/'

在沒有配置cloud-init的情況下,這個服務將耗費將近5分鐘的啟動時間,因此最好把它禁用掉:

sudo guestfish -a ./vm1.qcow2 -i rm '/etc/systemd/system/multi-user.target.wants/cloud-config.service' sudo guestfish -a ./vm1.qcow2 -i rm '/etc/systemd/system/multi-user.target.wants/cloud-final.service' sudo guestfish -a ./vm1.qcow2 -i rm '/etc/systemd/system/multi-user.target.wants/cloud-init-local.service' sudo guestfish -a ./vm1.qcow2 -i rm '/etc/systemd/system/multi-user.target.wants/cloud-init.service'

備注:

  • 在一些打包有較新版本cloud-init工具的鏡像中,cloud-*.service可能位于'/etc/systemd/system/cloud-init.target.wants/路徑下,因此上述命令可能需要一些修改。
  • 此外,本節中對鏡像的修改也可通過腳本來完成,使用時如遇權限不足的問題請將qcow2鏡像放置于/tmp目錄下進行修改。

創建和管理虛擬機

回到之前的路徑下,創建一個xml文件,并更改其信息為:

[cheshi@cheshi-desktop1 kvm_workspace]$ cat vm1.xml <domain type='kvm' id='1'><name>vm1</name><memory unit='KiB'>2097152</memory><currentMemory unit='KiB'>2097152</currentMemory><vcpu placement='static'>4</vcpu><os><type arch='x86_64' machine='pc-i440fx-2.7'>hvm</type></os><features><acpi/><apic/></features><cpu mode='custom' match='exact'><model fallback='allow'>Skylake-Client</model></cpu><on_poweroff>destroy</on_poweroff><on_reboot>restart</on_reboot><on_crash>destroy</on_crash><devices><emulator>/usr/libexec/qemu-kvm</emulator><disk type='file' device='disk'><driver name='qemu' type='qcow2'/><source file='/var/lib/libvirt/images/vm1.qcow2'/><target dev='vda' bus='virtio'/></disk><interface type='network'><source network='default' bridge='kvmbr0'/><target dev='vnet0'/><model type='virtio'/></interface><console type='pty' tty='/dev/pts/5'><source path='/dev/pts/5'/><target type='serial' port='0'/><alias name='serial0'/></console></devices> </domain>

備注:必要時可使用whereis qemu-kvm確定執行文件所在位置。

創建一臺虛擬機:

[cheshi@cheshi-desktop1 kvm_workspace]$ sudo virsh define ./vm1.xml Domain vm1 defined from ./vm1.xml

啟動虛擬機:

[cheshi@cheshi-desktop1 kvm_workspace]$ sudo virsh start vm1 Domain vm1 started

連接虛擬機console(使用Ctrl+]退出):

[cheshi@cheshi-desktop1 kvm_workspace]$ sudo virsh console vm1 Connected to domain vm1 Escape character is ^]CentOS Linux 7 (Core) Kernel 3.10.0-862.14.4.el7.x86_64 on an x86_64dhcp-15-92 login: root Last login: Mon Oct 29 07:16:27 on ttyS0 [root@dhcp-15-92 ~]# ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=34 time=46.5 ms--- 8.8.8.8 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 46.574/46.574/46.574/0.000 ms [root@dhcp-15-92 ~]# exit logoutCentOS Linux 7 (Core) Kernel 3.10.0-862.14.4.el7.x86_64 on an x86_64dhcp-15-92 login:

關閉虛擬機:

[cheshi@cheshi-desktop1 kvm_workspace]$ sudo virsh shutdown vm1 Domain vm1 is being shutdown

查看虛擬機狀態:

[cheshi@cheshi-desktop1 kvm_workspace]$ sudo virsh list --allId Name State ----------------------------------------------------- centos-minion1 shut off- vm1 shut off

銷毀虛擬機:

[cheshi@cheshi-desktop1 kvm_workspace]$ sudo virsh undefine vm1 Domain vm1 has been undefined [cheshi@cheshi-desktop1 kvm_workspace]$ sudo virsh list --allId Name State ----------------------------------------------------- centos-minion1 shut off[cheshi@cheshi-desktop1 kvm_workspace]$

virsh命令參考:

命令說明
autostart自動開始一個域
create從一個 XML 文件創建一個域
define從一個 XML 文件定義(但不開始)一個域
edit編輯某個域的 XML 配置
shutdown關閉一個域
start開始一個(以前定義的)非活躍的域
reboot重新啟動一個域
suspend掛起一個域
resume重新恢復一個域
vncdisplayvnc 顯示
undefine刪除虛擬機,只是刪除VM的配置文件,并不刪除虛擬磁盤文件
console連接虛擬機控制臺

使用圖形界面管理虛擬機

運行virt-manager:

sudo virt-manager

創建虛擬機:

  • “File” > “New Virtual Machine”;
  • 在"Choose how you would like to install the OS"處,選擇"Import existing disk image";
  • 在"Provide the existing storage path"處,選擇"Browse…";
  • 彈出對話框中選擇"Browse Local"并加載"/home/cheshi/kvm_workspace/vm1/vm1.qcow2"文件并選擇"Choose Volume";
  • 在"Choose an operating system type and version"處,選擇"Linux"和"CentOS 7.0",點擊"Forward";
  • 設置"Memory"和"CPUs",點擊"Forward";
  • 在"Name"處填上虛擬機的名字,在"Network selection"處選擇"Bridge kvmbr0",最后點擊"Finish"。
  • 使用圖形界面管理虛擬機比較直觀,這里不再過多介紹。

    參考資料

  • CentOS7.2部署KVM虛擬機
  • KVM 操作虛擬機常用命令
  • CentOS 7 下配置KVM
  • 三種方式在CentOS 7搭建KVM虛擬化平臺
  • 使用 libvirt創建和管理KVM虛擬機
  • RHEL Guest Image quick start
  • CentOS 6.9下KVM虛擬機網絡Bridge(網橋)方式與NAT方式詳解(轉)
  • 總結

    以上是生活随笔為你收集整理的在CentOS7上运行KVM虚拟机的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。