安裝KVM并創(chuàng)建虛擬機(jī)及基本使用方式
#環(huán)境說(shuō)明:Centos7
環(huán)境準(zhǔn)備
CPU開(kāi)啟虛擬化,給宿主機(jī)的CPU和內(nèi)存分配足夠多的配置
安裝KVM
1.安裝相關(guān)軟件包
yum -y install qemu-kvm libvirt virt-manager virt-install virt-viewer
軟件包簡(jiǎn)介:
- qemu-kvm: 為kvm提供底層仿真支持
- libvirt: 使用最多的KVM虛擬化管理工具和應(yīng)用程序接口,即通過(guò)libvirt調(diào)用KVM創(chuàng)建虛擬機(jī), libvirt是KVM通用的訪問(wèn)API,其不但能管理KVM,還能管理VMware、Xen、Hyper-V、 virtualBox等虛擬化方案
- virt-manager: 圖形界面管理工具,其底層也是調(diào)用libvirt API來(lái)完成對(duì)虛擬機(jī)的操作,包括虛擬機(jī)的 創(chuàng)建、刪除、啟動(dòng)、停止以及一些簡(jiǎn)單的監(jiān)控功能等
- virt-install: 虛擬機(jī)命令行安裝工具
- virt-viewer: 通過(guò) VNC 和 SPICE 協(xié)議顯示虛擬機(jī)器圖形控制臺(tái)的最小工具。該工具在其同名軟件包 中:virtviewer
2.啟動(dòng)服務(wù)
systemctl start --now libvirtd
創(chuàng)建虛擬機(jī)
下面介紹三種創(chuàng)建虛擬機(jī)的方法
在創(chuàng)建之前需要在宿主機(jī)上先創(chuàng)建一個(gè)存放系統(tǒng)鏡像的目錄,然后上傳至此目錄下
mkidr -p /data/isos
1.使用virt-manager圖形化界面進(jìn)行創(chuàng)建
#打開(kāi)圖形化需要下載Xmanager,并在Xshell開(kāi)啟下面功能:
#圖形化界面如果亂碼,修改語(yǔ)言為英文就能解決
輸入virt-manager命令打開(kāi)圖形化界面
基于ISO鏡像文件創(chuàng)建
瀏覽
選擇鏡像
設(shè)置虛擬機(jī)內(nèi)存
設(shè)置磁盤(pán)大小
后面按照安裝Centos7系統(tǒng)時(shí)進(jìn)行配置即可
2.使用virt-install創(chuàng)建虛擬機(jī)(需要手動(dòng)安裝系統(tǒng))
創(chuàng)建前,需要先利用qume-img命令創(chuàng)建虛擬磁盤(pán),如下:
qemu-img create -f qcow2 /var/lib/libvirt/images/centos7.qcow2 20G
然后使用下面命令創(chuàng)建虛擬機(jī):
virt-install --virt-type kvm --name centos7 --ram 1024 --vcpus 2 \ --cdrom=/data/isos/CentOS-7-x86_64-Minimal-2009.iso --disk \ path=/var/lib/libvirt/images/centos7.qcow2 --network=default --graphics \ vnc,listen=0.0.0.0 --noautoconsole --os-variant=centos7.0
選項(xiàng)解析如下:
- --virt-type:指定要使用的虛擬機(jī)監(jiān)控程序名稱(chēng)(kvm, qemu, xen)
- --name:指定kvm虛擬機(jī)的名稱(chēng)
- --ram:指定kvm虛擬機(jī)的內(nèi)存大小
- --vcpus:指定kvm虛擬機(jī)的CPU核數(shù)
- --cdrom:指定ISO鏡像文件所在路徑
- --disk:指定虛擬磁盤(pán)所在路徑
- --network:指定kvm虛擬機(jī)的網(wǎng)絡(luò)模式,default為NAT模式;橋接模式為--bridge="網(wǎng)卡"
- --graphics:是否使用vnc,none為否
- --noautoconsole:宿主機(jī)不自動(dòng)嘗試連接kvm虛擬機(jī)
- --os-variant:指定要安裝的系統(tǒng)版本
vnc工具
kvm默認(rèn)網(wǎng)絡(luò)模式是NAT,宿主機(jī)會(huì)充當(dāng)路由器,為內(nèi)部的kvm虛擬機(jī)做端口映射。如果開(kāi)啟了vnc連接功能,kvm會(huì)為每個(gè)kvm虛擬機(jī)開(kāi)啟一個(gè)連接端口。可以訪問(wèn)宿主機(jī)的設(shè)備,就可以使使用vnc工具來(lái)連接kvm虛擬機(jī)
下面是宿主機(jī)為kvm虛擬機(jī)開(kāi)啟的vnc端口:
查看啟動(dòng)的虛擬機(jī):
3.配合kickstart實(shí)現(xiàn)自動(dòng)化部署kvm虛擬機(jī)(無(wú)須手動(dòng)安裝系統(tǒng))
在創(chuàng)建前還是需要先創(chuàng)建虛擬磁盤(pán),如下:
qemu-img create -f qcow2 /var/lib/libvirt/images/centos7.qcow2 20G
編寫(xiě)應(yīng)答文件:
#需要自行創(chuàng)建
vim /root/ks.cfg
#platform=x86, AMD64, 或 Intel EM64T #version=DEVEL # Install OS instead of upgrade install # Keyboard layouts keyboard 'us' # Root password rootpw --iscrypted $6$Dx1M9/RlV5sB0KJv$19AdCxXsCbBnXSrUbYWhHQvKmtgCd0stJSHb3NrMQXZj.OpZWcNGzOROn/tg6fgxU3HYVptC35dgMcg8rpY.61 # 系統(tǒng)語(yǔ)言 #lang zh_CN.UTF-8 lang en_US # System authorization information auth --useshadow --passalgo=sha512 # Use CDROM installation media #cdrom # Use text mode install # 使用字符界面安裝操作系統(tǒng) text # Do not configure the X Window System # 不配置圖形界面系統(tǒng) skipx # SELinux configuration selinux --disabled # Firewall configuration firewall --disabled # 設(shè)置動(dòng)態(tài)獲取 IP network --bootproto=dhcp --device=eth0 --onboot=on #network --hostname=HOSNAME # 設(shè)置靜態(tài) IP # network --bootproto=static --device=eth0 --gateway=192.168.122.1 --ip=192.168.122.100 --nameserver=192.168.122.1 --netmask=255.255.255.0 --activate # 系統(tǒng)安裝完成后 重啟系統(tǒng) #halt reboot # System timezone 系統(tǒng)時(shí)區(qū) timezone Asia/Shanghai # System services 系統(tǒng)啟動(dòng)時(shí)候自動(dòng)啟動(dòng)的服務(wù) services --enable="chronyd" # System bootloader configuration #系統(tǒng)啟動(dòng)引導(dǎo)方式 vda 是kvm 虛擬機(jī)時(shí)候的第塊磁盤(pán)名稱(chēng) bootloader --location=mbr --boot-drive=vda # 清除主引導(dǎo)記錄 zerombr # 刪除原來(lái)的分區(qū)和磁盤(pán)標(biāo)簽 clearpart --all --initlabel # 磁盤(pán)分區(qū)信息,這里采用的是 lvm 自動(dòng)分區(qū) autopart --type=lvm # 下面是自定義分區(qū) #part /boot --fstype="xfs" --ondisk=vda --size=200 #part / --fstype="xfs" --ondisk=vda --size=10040 #part /var --fstype="xfs" --ondisk=vda --size=2048 #part /home --fstype="xfs" --ondisk=vda --size=2048 # 安裝軟件 %packages @^minimal @core chrony %end # 禁用 kdump %addon com_redhat_kdump --disable --reserve-mb='auto' %end # 安裝系統(tǒng)完成后執(zhí)行的命令腳本 #%post --interpreter=/bin/bash #yum install -y epel-release bash-completion vim-enhanced wget #yum group install "Development Tools" -y #%end # 用戶(hù)密碼策略 %anaconda pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty %end
#上文件中rootpw --iscrypted指定的為root賬戶(hù)的密碼,如過(guò)想修改為其它密碼可以用下面命令生成加密字符串,將其替掉即可:
python -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'
運(yùn)行下面命令創(chuàng)建虛擬機(jī):
virt-install -v \ --arch x86_64 --virt-type kvm \ --name centos7 \ --memory 1024 \ --vcpus 2 \ --os-type linux \ --location /data/isos/CentOS-7-x86_64-Minimal-2009.iso \ --network default \ --graphics vnc,listen=0.0.0.0 \ --os-variant centos7.0 \ --initrd-inject "/root/ks.cfg" \ --extra-args "ks=file:/ks.cfg \ console=tty0 console=ttyS0,115200n8 \ hostname=centos7" \ --disk /var/lib/libvirt/images/centos7.qcow2,cache=writeback,io=threads,bus=virtio
選項(xiàng)解析如下:
location
:指定安裝源,這里用于指定ISO鏡像文件路徑os-type
:操作系統(tǒng)類(lèi)型initrd-inject
:指定ks.cfg文件路徑extra-args
:根據(jù)location指定的方式安裝系統(tǒng)時(shí),用于給內(nèi)核傳遞額外的選項(xiàng)
安裝完后輸入賬戶(hù)密碼即可登錄kvm虛擬機(jī):
- 賬戶(hù):root
- 密碼:123.com
- Ctrl+}退出
克隆現(xiàn)有的虛擬機(jī)
virt-clone -o centos7 -f /var/lib/libvirt/images/centos7.qcow2 -n centos7-2
選項(xiàng)解析:
-o
:指定已存在的虛擬機(jī)名稱(chēng)-f
: 指定新虛擬機(jī)磁盤(pán)文件路徑-n
:指定新虛擬機(jī)的名稱(chēng)
磁盤(pán)快照管理
qemu-img管理磁盤(pán)快照
創(chuàng)建快照
qemu-img snapshot -c centos7-snapshot1 /var/lib/libvirt/images/centos7.qcow2
選項(xiàng)解析:
-c:指定快照名稱(chēng)
查看快照
qemu-img snapshot -l /var/lib/libvirt/images/centos7.qcow2
查看快照的詳細(xì)信息
qemu-img info /var/lib/libvirt/images/centos7.qcow2
恢復(fù)快照
#需要關(guān)機(jī)后進(jìn)行
qemu-img snapshot -a centos7-snapshot /var/lib/libvirt/images/centos7.qcow2
選項(xiàng)解析:
-a:指定需要恢復(fù)的快照名稱(chēng)
刪除快照
#需要關(guān)機(jī)后進(jìn)行
qemu-img snapshot -d centos7-snapshot /var/lib/libvirt/images/centos7.qcow2
選項(xiàng)解析:
-d:指定需要?jiǎng)h除的快照名稱(chēng)
virsh管理虛擬機(jī)快照
創(chuàng)建快照
virsh snapshot-create centos7
查看快照
virsh snapshot-list centos7
恢復(fù)快照
#無(wú)須關(guān)機(jī)
virsh snapshot-revert centos7 --snapshotname 1600593611 --running
選項(xiàng)解析:
snapshotname
:先查看快照確認(rèn)快照的名稱(chēng),是一段數(shù)字,在--snapshotname后跟上快照名稱(chēng)running
:恢復(fù)后,將狀態(tài)更改為正在運(yùn)行
刪除快照
virsh snapshot-delete centos7 --snapshotname 1600593611
網(wǎng)絡(luò)管理
配置虛擬機(jī)和宿主機(jī)為橋接網(wǎng)絡(luò),實(shí)現(xiàn)網(wǎng)絡(luò)互通并用Xshell連接
1)配置宿主機(jī)的橋接網(wǎng)絡(luò)
修改宿主機(jī)網(wǎng)卡文件為以下,模式為空,NM_CONTROLLED=no,意思為此網(wǎng)絡(luò)不受NetworkManager控制,網(wǎng)橋名為br0:
BOOTPROTO=none NAME=ens32 DEVICE=ens32 ONBOOT=yes NM_CONTRLLED=no BRIDGE=br0
創(chuàng)建并編寫(xiě)br0網(wǎng)卡文件為一下, 模式為靜態(tài),類(lèi)型是網(wǎng)橋,不受NM控制,定義IP:
BOOTPROTO=static TYPE=Bridge NAME=br0 DEVICE=br0 ONBOOT=yes NM_CONTRLLED=no IPADDR=10.0.0.200 PREFIX=24 NETMASK=255.255.255.0 GATEWAY=10.0.0.0.2 DNS=202.106.0.20
關(guān)閉NetworkManager:
systemctl stop NetworkManager systemctl disable NetworkManager
重啟網(wǎng)絡(luò)服務(wù):
systemctl restart network
使用brctl show命令查看虛擬設(shè)備情況,沒(méi)有的話(huà),安裝名為bridge-utils的包即可:
[root@centos7-temp ~]# brctl show bridge name bridge id STP enabled interfaces br0 8000.000c291e1dd4 yes ens32 virbr0 8000.5254006c683e yes virbr0-nic vnet0
#由上可見(jiàn),br0設(shè)備,綁定了ens32網(wǎng)卡成功,stp enabled為no,可以執(zhí)行brctl stp br0 on打開(kāi)
使用route命令查看路由情況:
[root@centos7-temp ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.0.0.2 0.0.0.0 UG 0 0 0 br0
#由上可見(jiàn),所有地址,網(wǎng)關(guān)為10.0.0.2,通過(guò)br0,進(jìn)行通信
2)配置虛擬機(jī)橋接網(wǎng)絡(luò)
修改/etc/qemu-kvm/bridge.conf文件:
allow virbr0 #加上下面一行 allow br0
將虛擬機(jī)關(guān)機(jī):
virsh shutdown <name>
查看啟動(dòng)的虛擬機(jī):
virsh list
修改虛擬機(jī)配置文件中網(wǎng)絡(luò)部分兩處:
vim /etc/libvirt/qemu/centos7.xml
修改前如下:
修改為:
啟動(dòng)虛擬機(jī):
virsh start <name>
使用virt-manager打開(kāi)圖形化界面將網(wǎng)卡修改橋接網(wǎng)卡:
修改虛擬機(jī)網(wǎng)絡(luò)配置文件:
#加上帶注釋的行即可
vi /etc/sysconfig/network-scripts/ifcfg-eth0
NAME="eth0" HWADDR="52:54:00:38:8D:43" ONBOOT="yes" NETBOOT="yes" UUID="50682a96-3672-42ac-8469-2c2f20ffde5a" IPV6INIT="yes" BOOTPROTO="static" #設(shè)置靜態(tài)IP IPADDR=10.0.0.201 #選擇和宿主機(jī)在同一個(gè)網(wǎng)段的IP NETMASK=255.255.255.0 #與宿主機(jī)同網(wǎng)段 GATEWAY=10.0.0.2 #與宿主機(jī)同網(wǎng)關(guān) DNS=202.106.0.20 #與宿主機(jī)同DNS TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no"
在虛擬機(jī)中關(guān)閉NetworkManager:
systemctl stop NetworkManager
重啟網(wǎng)絡(luò)服務(wù):
systemctl restart network
3)驗(yàn)證
在宿主機(jī)上ping虛擬機(jī)的地址,驗(yàn)證網(wǎng)絡(luò)是否能通信:
在虛擬機(jī)上ping外網(wǎng)地址,驗(yàn)證是否能上外網(wǎng):
通過(guò)Xshell終端工具連接虛擬機(jī):
virsh常用命令:
- 查看當(dāng)前啟動(dòng)的虛擬機(jī): virsh list
- 查看所有虛擬機(jī):virsh list --all
- 啟動(dòng)虛擬機(jī):virsh start <name>
- 正常關(guān)機(jī):virsh shutdown <name>
- 強(qiáng)制關(guān)機(jī)::virsh destroy <name>
- 暫停虛擬機(jī)::virsh suspend <name>
- 恢復(fù)虛擬機(jī):virsh resume <name>
- 設(shè)置虛擬機(jī)隨宿主機(jī)啟動(dòng)而自啟動(dòng):virsh autostart <name>
- 禁用虛擬機(jī)隨宿主機(jī)啟動(dòng)而自啟動(dòng):virsh autostart <name> --distable
- 刪除虛擬機(jī)配置,但不刪除磁盤(pán)文件:virsh undefine <name>
- 刪除虛擬機(jī)包括磁盤(pán)文件:virsh undefine <name> --remove-all-storage
- 查看虛擬機(jī)網(wǎng)卡配置:virsh domiflist <name>
- 查看虛擬機(jī)的網(wǎng)卡地址信息:virsh domifaddr <name>
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
kvm?透?jìng)黠@卡至win10虛擬機(jī)的方法
這篇文章主要介紹了kvm?透?jìng)黠@卡至win10虛擬機(jī),本文通過(guò)命令腳本實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09CentOS?8?安裝調(diào)試KVM的詳細(xì)步驟
這篇文章主要介紹了CentOS?8?KVM?的安裝調(diào)試,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04