一、環境介紹:
centos7.4
172.16.5.238
vm虛擬機(BIOS打開VT功能,vmware station打開虛擬化選項)
檢查是否支持虛擬化。
cat /proc/cpuinfo | grep vmx
二、部署
1、配置網卡。
ifcfg-ens33,本地宿主機網卡除了正常配置外,只需要加一個BRIDGE=br0就行。
2、新建一個ifcfg-br0網卡。
#touch ifcfg-br0
文件中寫入如下內容,把宿主機的ip,mask,gateway,dns都原封不動移動過來,再新加其它幾個選項。
3、重啟網卡。
#systemctl restart network.service
4、驗證(reboot重啟完后查看)。
5、根據個人需求,安裝需要的程序。
yum install -y wget lrzsz gcc gcc-c++ vim
6、安裝kvm
yum -y install qemu-kvm qemu-kvm-tools qemu-img virt-manager libvirt libvirt-python libvirt-client bridge-utils virt-viewer virt-install
啟動並設置開機自啟動
systemctl start libvirtd systemctl enable libvirtd
7、查看模塊
lsmod | grep kvm
8、關閉firewalld和selinux,如果有iptables的話,先關閉。
9、新建兩個目錄存放iso文件和image文件。
mkdir -p /data/iso mkdir -p /data/vm-image
10、開始安裝虛擬機,這里我們安裝的是centos7.4
virt-install --name centos7.4 --ram 1024 --vcpus=1 --disk path=/data/vm-image/centos7.4.img,size=5 --network bridge=br0 --cdrom /data/iso/CentOS-7-x86_64-DVD-1708.iso --vnclisten=172.16.5.238 --vncport=6900 --vnc
提示如下的時候,需要打開vnc客戶端軟件連接。

1 virt-install 2 --name centos7.4 #虛擬機名稱 3 --ram 1024 #內存大小 4 --vcpus=1 #CPU個數 5 --disk path=/data/vm-image/centos7.4.img,size=5 #系統存放位置和硬盤大小(GB) 6 --network bridge=br0 #橋接網卡信息 7 --cdrom /data/iso/CentOS-7-x86_64-DVD-1708.iso #iso文件位置 8 --vnclisten=172.16.5.238 #vnc連接地址 9 --vncport=6900 #vnc連接端口 10 --vnc #連接方式
注意:
關閉虛擬機
virsh shutdown +域名
這個時候我在virsh list發現 這個虛擬機還是在運行的,並沒有關閉。
我們需要安裝一個acpid的服務並啟動它,什么是ACPI?
ACPI是Advanced Configuration and PowerInterface縮寫,高級配置和電源管理接口。
acpid中的d則代表daemon。Acpid是一個用戶空間的服務進程,它充當linux內核與應用程序之間通信的接口,負責將kernel中的電源管理事件轉發給應用程序。
Acpid是一個用戶空間的服務進程,它充當linux內核與應用程序之間通信的接口,負責將kernel中的電源管理事件轉發給應用程序。
其實,說明了就是通過這個服務來執行電源關閉的動作,這也是為什么我們執行virsh shutdown +域名無法關機的原因。
所以,我們需要在子系統里面安裝acpid,啟動服務器后重啟一下子系統,這樣我們在virsh控制台就可以reboot和shutdown了,如果是windows,需要在宿主機上安裝acpid,但是是能用shutdown命令,reboot是不可以的。不過可以用destory這個命令。
#yum install -y acpid #/etc/init.d/acpid start或者service start acpid
如果此時我沒法進入子機安裝acpi協議的話,那么就無法關掉該虛擬機,此時可以用下面這種方法。
#virsh destroy +域名
這種方式的關閉,是一種刪除的方式,只是在virsh list中刪除了該虛擬機,更多的時候我們習慣用這個命令關機
11、安裝vncviewer,地址https://www.realvnc.com/en/connect/download/viewer/
12、連接虛擬機
vnc連接上虛擬機后,下面是按照操作系統的事情了,這里不再熬述。

1 # virsh list //查看正在運行 2 # virsh list --all //查看所有 3 # virsh start benet //啟動 4 # virsh shutdown benet //關機 5 # virsh destroy benet //強制關機 6 # virsh autostart benet //隨機啟動 7 # virsh suspend benet //掛起 8 # virsh resume benet //恢復 9 # virsh undefine benet //刪除 10 # virsh edit benet //編輯、
13、增加硬盤
熱添加(虛擬機必須是開機的狀態下添加,添加成功后,重啟就會失效。)
1、查看當前硬盤名稱,如下,只有/dev/vda這個一個5GB的硬盤,我們下面給他增加一塊3GB的硬盤。
2、進入img存放的目錄,這里是/data/vm-image/,然后創建一個硬盤文件。
qemu-img create -f raw /data/vm-image/centos7.4_disk.img 3G
3、添加硬盤。
virsh attach-disk centos7.4 /data/vm-image/centos7.4_disk.img vdb --cache none
驗證;
冷添加(虛擬機是關機狀態下添加,常用)
qemu-img create -f qcow2 /data/vm-image/centos7.4_disk.img 4G
qcow2是我們提前看了安裝操作系統完成后,對應操作系統的xml文件中disk區域type的名稱。后面的路徑就是我們要把這個硬盤文件存放到哪里,叫什么名字。最后面的4G是我們要添加的硬盤容量。
修改對應操作系統的xml文件(如若不熟悉可以提前cp一份,備份)
vim /etc/libvirt/qemu/centos7.4.xml
在文件中第一塊硬盤的下面添加如下內容(注意里面的內容全部是從上面復制下來,刪除開頭是<address這一行,注意type的名稱一定要和上面創建時候的-f后面選項對應上,file=硬盤文件的絕對路徑和名稱,dev是我們要加的第幾塊硬盤,這里我加的是第二塊,所以是vdb,為什么是vd呢,看上面第一塊硬盤的名稱是vda,那第二塊就是vdb,千萬別自作主張寫個sdb或者hdb。):
<disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/data/vm-image/centos7.4_disk.img'/> <target dev='vdb' bus='virtio'/> </disk>
修改完成后注意,一定要重啟libvirtd服務才會生效。
systemctl restart libvirtd
開機啟動虛擬機,查看
剩下的就不在熬述,結果如下圖:
14、克隆
首先需要將被克隆的服務器關機,被克隆的機器沒有增加過硬盤。

1 virt-clone 2 --original centos7.4 #被克隆服務器明后才能 3 --name centos7.4.bak #克隆后的服務器名稱 4 -f /data/vm-image/centos7.4-bak #被克隆服務器存放位置 5 --force #強制
virt-clone --original centos7.4 --name centos7.4.bak -f /data/vm-image/centos7.4-bak --force
查看,一個克隆成功的操作系統已經完成,他也有xml和img文件。這里我們需要修改xml文件。
修改該xml文件,如下圖克隆完成后的xml文件的連接信息,可以確定port肯定不能是自動。
修改為。
然后重啟libvirtd服務,否則連接端口肯定就從5900開始了。
15、遷移
冷遷移:
基本原理就是把這個虛擬機的xml文件和img傳到其它虛擬機里面,然后修改xml文件中的ip和端口等其它文件,如果你有磁盤文件,也需要一起cp到目標服務器上。
可以用domblklist centos7.4(domblklist 虛擬機名稱)查看對應虛擬機的img文件(包括系統文件和硬盤文件等)
定義虛擬機。
#virsh define /etc/libvirt/qemu/centos7.4.xml
熱遷移:
https://blog.csdn.net/taiyang1987912/article/details/47973479
a、首先用到的肯定是img和xml文件,先將這兩個文件傳動需要恢復的KVM主機上面。
16、增加網卡
a、首先我們需要在xml文件中復制一份interface的內容,並修改。
b,重啟libvirtd服務。
c、使用ip a命令查看是否添加成功,如下,mac地址就是我上面在xml文件中寫的那個mac地址。
d、使用命令nmcli conn查看網卡的UUID
e、cp ifcfg-eth0 到ifcfg-eth1。
f、這里是ifcfg-eth1網卡信息,注意網卡名稱和UUID的修改。
g、添加成功