KVM虛擬機相關步驟

KVM是Kernel-based Virtual Machine的簡稱,是一個開源的虛擬化模塊,該文檔是基于CentOS 7.4環境操作的

一、操作系統安裝

本文采用的是CentOS 7.4

1、查看系統版本

cat /etc/redhat-release

2、系統更新

Yum makecache &&yum update && yum upgrade

3、關閉SElinux

setenforce 0 (臨時生效)

vi /etc/sysconfig/selinux

將SElinux=enforcing修改成SElinux=disabled

reboot (重啟后永久生效)

getenforce (查看selinux狀態)

4、安裝防火墻

yum –y install iptables-service

systemctl start iptables.service

systemctl enable iptables.service

二、虛擬化環境配置

1、驗證CPU是否支持KVM

半虛擬化是不能運行與安裝KCM虛擬機的

egrep 'vmx|svm' /proc/cpuinfo

如果結果中有vmx(Intel)或svm(AMD)字樣,說明CPU支持

2、安裝基本軟件包

yum –y install epel-release net-tools vim unzip zip wget

3、安裝KVM軟件包

yum –y install qemu-kvm libvirt virt-install bridge-util virt-viewer acpid kvm python-virtinst tunctl virt-manager qemu-kvm-tools virt-v2v libguestfs-tools

4、驗證安裝結果

4.1查看虛擬機環境

systemctl start libvirtd

virsh –c qemu:///system list

4.2查看kvm模塊支持

lsmod | grep kvm

kvm_intel???????????? 170086? 0

kvm?????????????????? 566340? 1 kvm_intel

irqbypass????????????? 13503? 1 kvm

4.3查看虛擬工具版本

virsh –version

ls -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm

qemu-kvm -version

5、查看操作狀態

systemctl status libvirtd

systemctl is-enabled libvirtd

6、配置網橋模式

先把/etc/sysconfig/network-scripts/目錄下的網卡配置文件備份一份(不要備份在當前目錄及其子目錄,其他目錄隨意)

cp /etc/sysconfig/network-scripts/ifcfg-enp6s0 /root/ifcfg-enp6s0.bak

6.1創建ifcfg-br0文件

內容如下:

BOOTPROTO=static

DEVICE=br0

TYPE=Bridge

NM_CONTROLLED=no

IPADDR=192.168.0.121

NETMASK=255.255.255.0

GATEWAY=192.168.0.1

DNS1=222.88.88.88

DNS2=222.85.85.85

6.2移除掉原來的ifcfg-enp6s0,重新創建該文件

內容如下:

BOOTPROTO=none

DEVICE=enp6s0

NM_CONTROLLED=no

ONBOOT=yes

BRIDGE=br0

6.3重啟網絡服務

systemctl restart network

使用ifconfig驗證結果,多出來一塊網卡br0,現在訪問該服務器使用192.168.0.121就可以了

ifconfig

br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>? mtu 1500

??????? inet 192.168.0.121? netmask 255.255.255.0? broadcast 192.168.0.255

??????? inet6 fe80::a62:66ff:fea2:54f2? prefixlen 64? scopeid 0x20<link>

??????? ether 08:62:66:a2:54:f2? txqueuelen 1000? (Ethernet)

??????? RX packets 973? bytes 98149 (95.8 KiB)

??????? RX errors 0? dropped 0? overruns 0? frame 0

??????? TX packets 84? bytes 13557 (13.2 KiB)

??????? TX errors 0? dropped 0 overruns 0? carrier 0? collisions 0

enp6s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>? mtu 1500

??????? inet6 fe80::a62:66ff:fea2:54f2? prefixlen 64? scopeid 0x20<link>

?? ?????ether 08:62:66:a2:54:f2? txqueuelen 1000? (Ethernet)

??????? RX packets 62930? bytes 66814944 (63.7 MiB)

??????? RX errors 0? dropped 0? overruns 0? frame 0

??????? TX packets 25644? bytes 2550988 (2.4 MiB)

??????? TX errors 0? dropped 0 overruns 0? carrier 0? collisions 0

??????? device interrupt 17? memory 0xcc200000-cc220000

enp7s0: flags=4099<UP,BROADCAST,MULTICAST>? mtu 1500

??????? ether 08:62:66:a2:54:f3? txqueuelen 1000? (Ethernet)

??????? RX packets 0? bytes 0 (0.0 B)

??????? RX errors 0? dropped 0? overruns 0? frame 0

??????? TX packets 0? bytes 0 (0.0 B)

??????? TX errors 0? dropped 0 overruns 0? carrier 0? collisions 0

??????? device interrupt 18? memory 0xcc100000-cc120000

lo: flags=73<UP,LOOPBACK,RUNNING>? mtu 65536

??????? inet 127.0.0.1? netmask 255.0.0.0

??????? inet6 ::1? prefixlen 128? scopeid 0x10<host>

??????? loop? txqueuelen 1? (Local Loopback)

??????? RX packets 60? bytes 7012 (6.8 KiB)

??????? RX errors 0? dropped 0? overruns 0? frame 0

??????? TX packets 60? bytes 7012 (6.8 KiB)

??????? TX errors 0? dropped 0 overruns 0? carrier 0? collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>? mtu 1500

??????? inet 192.168.122.1? netmask 255.255.255.0? broadcast 192.168.122.255

??????? ether 52:54:00:a9:aa:73? txqueuelen 1000? (Ethernet)

??????? RX packets 0? bytes 0 (0.0 B)

??????? RX errors 0? dropped 0? overruns 0? frame 0

??????? TX packets 0? bytes 0 (0.0 B)

??????? TX errors 0? dropped 0 overruns 0? carrier 0? collisions 0

三、安裝linux虛擬機

1、準備操作系統安裝鏡像文件

make -p/home/iso與本機環境一樣的CentOS7.4,放在/home/iso目錄下

2、創建虛擬機文件存放目錄

nkdir –p /home/kvm-bak

3、使用virt-install創建虛擬機

virt-install -n vm01 -r 2048 --disk /home/kvm-bak/vm01.img,format=qcow2,size=40 --network bridge=br0 --os-type=linux --os-variant=rhel7.4 --cdrom /home/iso/CentOS-7-x86_64-Minimal-1708.iso --vnc --vncport=5910 --vnclisten=0.0.0.0

說明:在linux系統安裝開始就要注意添加提高性能的一些參數,后面就不需要做一些調整了。

參數說明:

--name:指定虛擬機名稱

--ram:分配內存大小。

--vcpus:分配CPU核心數,最大與實體機CPU核心數相同

--disk:指定虛擬機鏡像,size指定分配大小單位為G。

--network:網絡類型,此處用的是默認,一般用的應該是bridge橋接。

--accelerate:加速

--cdrom:指定安裝鏡像iso

--vnc:啟用VNC遠程管理,一般安裝系統都要啟用。

--vncport:指定VNC監控端口,默認端口為5900,端口不能重復。

--vnclisten:指定VNC綁定IP,默認綁定127.0.0.1,這里改為0.0.0.0。

--os-type=linux,windows

--os-variant=

win7:MicrosoftWindows7

winxp:MicrosoftWindowsXP

win2k8:MicrosoftWindowsServer2008

rhel7:RedHatEnterpriseLinux7

?

不用理會提示里面的錯誤,接著往下走

4、打開防火墻的5910端口

vim /etc/sysconfig/iptables

-A INPUT -p tcp -m state --state NEW -m tcp --dport 5910 -j ACCEPT

systemctl reload iptables.service

5、使用VNC連接該虛擬機,進行虛擬機系統的安裝

a. VNC Viewer

?

b. 新建連接

提供宿主IP、端口號(在virt-install創建過程中指定的)以及名稱

?

c. Expert頁簽

將ColorLevel的值由原來的 pal8 修改為 rgb222 ,點擊OK按鈕保存(新版VNC Viewer該值默認已經是rgb222)

?

d. 雙擊連接的名稱后,進入安裝界面

?

?

e、接下來就安裝CentOS7.4

過程略,默認是最小化的安裝(估計跟上面使用的鏡像有關)

6、重啟

安裝完CentOS,系統要求重啟,虛擬機重啟后自動關閉了

[root@localhost home]# virsh list? --all

?Id??? 名稱???????????????????????? 狀態

----------------------------------------------------

?-???? vm01?????????????????????????? 關閉

7、手動啟動虛擬機

[root@localhost home]# virsh start vm01

域 vm01 已開始

?[root@localhost home]# virsh list? --all

?Id??? 名稱???????????????????????? 狀態

----------------------------------------------------

?4???? vm01?????????????????????????? running

再次使用VNC連接,發現已經可以連接進去了

?

8、虛擬機開啟電源服務模式

yum -y install acpid

systemctl start acpid.service

systemctl enable acpid.service

四、安裝windows server 2012 R2 datacenter虛擬機

1、上傳鏡像文件到/home/iso目錄

cn_windows_server_2012_r2_vl_with_update_x64_dvd_6052729.iso

2、安裝

virt-install -n ws1 -r 4096 --vcpus=4 --disk /home/kvm-bak/ws1.img,format=qcow2,size=40 --network bridge=br0 --accelerate --os-type=windows --os-variant=win2k8 --cdrom /home/iso/cn_windows_server_2012_r2_vl_with_update_x64_dvd_6052729.iso --vnc --vncport=5912 --vnclisten=0.0.0.0

--os-variant= 2k8,2k8R2,2k12,2k12R2,2k16,w7,w8,w8.1,w10(根據系統選擇)

3、防火墻放行該端口,使用VNC進行連接安裝系統

安裝完畢后系統會重啟,但是重啟不來,需要手動重啟

賬號:Administrator,密碼:1123456bnm,.

4、網絡配置

同其他windows系統配置那樣,使用的橋接網絡,雖說是虛擬機,但跟真實的物理機一樣

五、簡單配置KVM虛擬機

KVM虛擬機的管理主要是通過virsh命令對虛擬機進行管理

1、網橋配置

如果在虛擬機安裝CentOS的過程中配置了合適的網絡參數,那么這時虛擬機是可以使用網絡的。如果當時采用系統安裝包的默認方式,未啟用網卡,那么此時需要啟動虛擬機的網卡,網卡配置文件是ifcfg-eth0,,配置文件跟普通安裝的沒啥區別,按照實際情況配置即可,默認是dhcp模式

2、配置在宿主端登錄虛擬機shell

當然在宿主端可以通過SSH登錄的,虛擬機也可以直接使用SSH方式登錄,但是直接登錄也是一個不錯的方式.(虛擬機中的文件,不是宿主機中的)

a. 在虛機里運行命令

Cetos7系統:grubby --update-kernel=ALL --args="console=ttyS0"

b.重啟虛擬機reboot

c.在宿主機上進入虛擬控制臺

退出的話使用ctrl+](右方括號)

virsh start vm2

virsh console vm2

3、查看KVM虛擬機配置文件及運行狀態

3.1 kvm虛擬機默認配置文件位置

/etc/libvirt/qemu,autostart目錄是配置kvm虛擬機開機自啟動的目錄

3.2 KVM虛擬機運行狀態

virsh list --all

六、遷移虛擬機

虛擬機建好后,最大的好處就是任由我們折騰,而不用擔心重裝系統的麻煩。所以一定要知道虛擬機怎么復制遷移,這里有兩種情況,一種是本機上鏡像復制,另一種是將本機鏡像遷移到其他服務器上。

1、本機復制

a.先關閉虛擬機

virsh shutdown vm1

b.在 /home 下新建文件夾 /home/kvm-img

mkdir -p /home/kvm-img

c.使用virt-clone克隆vm2為新的虛擬機

virt-clone -o vm1 -n vm2 -f /home/kvm-img/vm2.img

注意:提示圖形設備端口為自動端口,需要進行如下操作查看:

c.1 virsh dumpxml vm2

<graphics type='vnc' port='5900' autoport='yes' listen='0.0.0.0'>

????? <listen type='address' address='0.0.0.0'/>

</graphics>

c.2在宿主機的防火墻上放行該端口,即可使用VNC連接克隆出的該虛擬機,使用 virsh list --all 查看

d. 開啟vm2,修改IP地址、主機名

virsh start vm2

d.1 修改IP地址

vi /etc/sysconfig/network-scripts/ ifcfg-eth0 靜態配置

BOOTPROTO=static

IPADDR=192.168.0.252

GATEWAY=192.168.0.1

NETMASK=255.255.255.0

DNS1=222.88.88.88

DNS2=222.85.85.85

重啟網絡:service network restart

d.2修改主機名

hostname vm2

vi /etc/hostname?? (echo ‘vm2’ > /etc/hostname)

e. reboot 重啟虛擬機

2. 將虛擬機鏡像遷移到其他服務器上

a. 先將虛擬機的配置文件和鏡像文件放到傳輸到新服務器上

虛擬機配置文件路徑:/etc/libvirt/qemu/vm2.xml

虛擬機鏡像文件路徑:/home/kvm-img/vm2.img

b.在新服務器上編輯要遷移過來的虛擬機

把vm2.xml放在新服務器的/etc/libvirt/qemu/目錄下,把vm2.img放在新服務器的/home/kvm-img/目錄下

編輯vm2.xml文件,將里面所有vm2替換為vm3,然后把UUID換為新的(UUID在線生成)

c.定義新虛擬機

virsh define /etc/libvirt/qemu/vm3.xml

d.給新虛擬機配置新主機名和ip等

vrish start --all ,virsh start vm3, virsh console vm3

3. 克隆或遷移后的虛擬機使用VNC連接

重新指定VNC的端口號,將 /etc/libvirt/qemu/vm3.xml 中的VNC端口號修改你需要的值,然后在防火墻中放行該端口號

七、虛擬機快照

KVM虛擬機要使用快照功能,磁盤格式必須是qcow2,通過查看虛擬機配置文件獲取,路徑:/etc/libvirt/qemu/

1、創建快照

[root@localhost ~]# virsh snapshot-create vm2

已生成域快照 1508564438

快照配置文件在/var/lib/libvirt/qemu/snapshot/虛擬機名稱/下

2、查看當前虛擬機快照版本信息

[root@localhost ~]# virsh snapshot-current vm2

<domainsnapshot>

? <name>1508564438</name> //快照版本號

? <state>shutoff</state>

? <creationTime>1508564438</creationTime>

? <memory snapshot='no'/>

…………. //省略部分內容

3、查看虛擬機鏡像快照信息

[root@localhost ~]# virsh snapshot-list vm2

?名稱?????????????? 生成時間????????????? 狀態

------------------------------------------------------------

?1508564438?????? ????2017-10-21 13:40:38 +0800 shutoff

4、再次創建新快照

[root@localhost ~]# virsh snapshot-create vm2

已生成域快照 1508564761

5、查看快照信息

[root@localhost ~]# virsh snapshot-list vm2

?名稱?????????????? 生成時間????????????? 狀態

------------------------------------------------------------

?1508564438?????????? 2017-10-21 13:40:38 +0800 shutoff

?1508564761?????????? 2017-10-21 13:46:01 +0800 shutoff

6、恢復虛擬機狀態至某個版本

6.1先關閉虛擬機

virsh shutdown vm2

6.2 確認恢復的快照時間進行版本恢復

virsh snapshot-revert vm2 1508564438

7、刪除快照

7.1 查看虛擬機快照

qemu-img info vm2.qcow2

7.2 刪除快照

virsh snapshot-delete vm2 1508564761

已刪除域快照 1508564761

八、virsh常用命令篇

1、查看運行的虛擬機

virsh list

2、查看所有的虛擬機

virsh list –all

3、開啟虛擬機

virsh start vm01 或virsh create /etc/libvert/qemu/vm01.xml(通過配置文件的方式)

4、連接虛擬機

virsh console +域名(虛擬機的名稱)

5、退出虛擬機

ctrl+]

6、關閉虛擬機

6.1 virsh shutdown +域名

這個時候在virsh list發現 test02這個虛擬機還是在運行的,并沒有關閉。我們需要安裝一個acpid的服務并啟動它,什么是ACPI? ACPI是Advanced Configuration and PowerInterface縮寫,高級配置和電源管理接口。acpid中的d則代表daemon。Acpid是一個用戶空間的服務進程,它充當linux內核與應用程序之間通信的接口,負責將kernel中的電源管理事件轉發給應用程序。

Acpid是一個用戶空間的服務進程,它充當linux內核與應用程序之間通信的接口,負責將kernel中的電源管理事件轉發給應用程序。

其實,說明了就是通過這個服務來執行電源關閉的動作,這也是為什么我們執行virsh shutdown +域名無法關機的原因。

(虛擬機安裝acpid服務)

yum install -y acpid

systemctl start acpid.service

systemctl enable acpid.service

如果此時我沒法進入虛擬機安裝acpi協議的話,那么就無法關掉該虛擬機,此時可以用下面這種方法。

6.2? virsh destroy +域名

強制關閉電源

7、掛起虛擬機

virsh suspend +域名

8、恢復被掛起的虛擬機

virsh resume +域名

9、配置開機自啟動虛擬機

virsh autostart +域名

autostart目錄是kvm虛擬機開機自啟動目錄,可以看到該目錄中有KVM配置文件鏈接

10、取消自動啟動

virsh auotstart --disable +域名

11、徹底刪除虛擬機

11.1刪除虛擬機?

virsh destroy +域名

11.2解除標記

virsh undefine +域名

說明:該命令只是刪除vm01的配置文件,并不刪除虛擬磁盤文件

附:重新定義虛擬機配置文件

mv /root/vm01.xml /etc/libvirt/qemu/vm01.xml (備份的虛擬機文件放到虛擬機配置文件存放路徑)

virsh define /etc/libvirt/qemu/vm01.xml

11.3刪除虛擬機文件

12、啟動虛擬機并進入該虛擬機

virsh start 域名 --console

13、導出kvm虛擬機配置文件

virsh dumpxml vm01 > /root/vm01.xml

kvm虛擬機配置文件可以通過這種方式進行備份

14、編輯kvm虛擬機配置文件

virsh edit vm01

virsh edit將調用vi命令編輯/etc/libvirt/qemu/vm01.xml配置文件。也可以直接通過vi命令進行編輯,修改,保存。可以但不建議直接通過vi編輯。

九、kvm虛擬機vnc配置

1、修改qemu.conf

# vi /etc/libvirt/qemu.conf

vnc_listen = "0.0.0.0"

說明1:vnclisten 默認綁定127.0.0.1 在配置文件里指定VNC 綁定0.0.0.0IP,就不用在安裝kvm虛擬機時指定vnclisten參數了。

說明2:在虛擬主機上有很多個虛擬機的時候,需要指定每個虛擬機的端口,否則將會很亂。

2、修改虛擬機配置文件

# virsh edit oeltest01

<graphics type='vnc' port='5910' autoport='no' listen='0.0.0.0'>?????

? <listen type='address' address='0.0.0.0'/>??????

</graphics>

配置VNC的配置文件,port是指定端口號,autoport是自己分配端口號

3、查看vnc

netstat –tulnp

十、kvm虛擬機時間配置

在虛擬化環境中,虛擬機在長時間運行過程中,時間會變慢,通常的作法是配置ntpdate定時與時間服務器進行時間同步的計劃任務。KVM虛擬機默認采用utc時間,需要專門修改,以及考慮kvm時間同步問題。

1、kvm虛擬機修改時間配置文件

kvm虛擬機采用utc時間,需要先修改配置文件使用KVM虛擬機的時間與虛擬主機同步。

修改utc為localtime,保存退出,重啟虛擬機。

2、關于kvm虛擬機時間問題解決思路

(1) 虛擬機時間慢是所有虛擬化平臺的一共性問題。

(2) 解決時間的最終解決方法就是在生產環境中配置時間服務器,kvm虛擬化服務器與kvm機均都要配置時間同步的計劃任務,這才是解決這一個問題最終解決方案。

示例:如果能訪問互聯網,最簡單了,需要kvm虛擬機與主機時間同步,但是運行一段時間會慢,一定要做時間同步,特別是對時間敏感的環境。?

# crontab -e??

01 */3 * * * /usr/sbin/ntpdate ntp.fudan.edu.cn >> /dev/null 2>&1

十一、KVM的Windows server 虛擬機使用virtio驅動

KVM安裝Windows默認使用的是qemu虛擬化IDE硬盤模式,在這種情況下,IO性能比較低,如果使用virtio的方式可以提高虛擬機IO性能。而virtio所驅動的網卡,也將原來的百兆擴展到千兆。

這里就簡單介紹下如何使用virtio驅動安裝window server 2008. 其它windows版本操作相同,只需選擇對應的驅動即可。

KVM安裝Windows需要使用virtio的驅動:

https://fedoraproject.org/wiki/Windows_Virtio_Drivers#Direct_download

1、下載virtio驅動yum文件并安裝

wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo

yum install virtio-win -y

2、查看virtio-win提供的驅動

[root@localhost ~]# rpm -ql virtio-win | grep iso

/usr/share/virtio-win/virtio-win-0.1.141.iso? ?=>virtio-win- latest

/usr/share/virtio-win/virtio-win.iso ?????????=>virtio-win- stable

3、wget方式下載

Stable virtio-win iso: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

Stable virtio-win x86 floppy: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win_x86.vfd

Stable virtio-win amd64 floppy: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win_amd64.vfd

Latest virtio-win iso: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso

Latest virtio-win x86 floppy: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win_x86.vfd

Latest virtio-win amd64 floppy: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win_amd64.vfd

Latest qemu-ga files: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-qemu-ga/

4、安裝window虛擬機時附帶virtio驅動

(1)、安裝windows

使用virtio驅動安裝虛擬機:

virt-install -n ws2 -r 4096 --vcpus=4 --disk /home/kvm-bak/ws2.img,format=qcow2,size=40,bus=virtio --disk path=/usr/share/virtio-win/virtio-win_x86.vfd,device=floppy --network bridge=br0 --accelerate --os-type=windows --os-variant=win2k8 --cdrom /home/iso/cn_windows_server_2012_r2_vl_with_update_x64_dvd_6052729.iso --vnc --vncport=5912 --vnclisten=0.0.0.0

提示: 這里是使用的是軟盤方式加載,如果鏡像和驅動都使用cdrom的方式加載,在有些情況系統會找不到啟動鏡像,導致無法啟動. 加載的驅動有x86和amd64兩種類型,64位系統選擇amd64. 32為系統選擇x86.

(2)、 安裝過程中,在選擇磁盤界面會找不到磁盤,選擇“加載驅動”,“瀏覽”,找到“軟盤驅動器”,點開后選擇 “server 2008”確定,驅動加載完成后,磁盤就出現了,繼續安裝即可。

(3)、安裝完成后,在設備管理器中可以看到使用的是virtio:

5、在已安裝的kvm虛擬機上添加virtio驅動

(1)、以傳統的IDE硬盤模式安裝

virt-install -n ws2 -r 4096 --vcpus=4 --disk /home/kvm-bak/ws2.img,format=qcow2,size=40 --network bridge=br0,model=virtio --accelerate --os-type=windows --os-variant=win2k8 --cdrom /home/iso/cn_windows_server_2012_r2_vl_with_update_x64_dvd_6052729.iso --vnc --vncport=5912 --vnclisten=0.0.0.0

(2)、加載virtio驅動的iso文件到虛擬機光驅

virsh? attach-disk? ws2 /usr/share/virtio-win/virtio-win.iso hdb --type cdrom

或者使用如下命令:

virsh change-media ws2g hdb /usr/share/virtio-win/virtio-win.iso

舉例:

[root@localhost ~]# virsh? attach-disk? ws2 /usr/share/virtio-win/virtio-win.iso hdb --type cdrom

成功附加磁盤

(3)、修改虛擬機的xml文件

使其能發現virtio類型的設備,否則驅動無法安裝

增加一塊virtio驅動的硬盤:

cd /home/kvm-img

qemu-img? create -f qcow2 test.img 1G

注意test.img的權限問題,否則開啟ws2時會提示test.img文件權限不夠(chmod 777 test.img)

修改虛擬機的xml文件,在原有的"disk type"區域增加一個test磁盤的配置:??

<disk type='file' device='disk'>

????? <driver name='qemu' type='qcow2'/>

????? <source file='/home/kvm-img/test.img'/>

????? <target dev='hdc' bus='virtio'/>?? #注意磁盤,系統盤had,光驅hdb,這個應為hdc

</disk>

修改網卡類型為 virtio, 在 interface type 區域,修改model type=‘virtio‘ :

?<interface type='bridge'>

????? <mac address='52:54:00:39:f9:60'/>

????? <source bridge='br0'/>

????? <model type='virtio'/>

提示:如果不是使用vnc遠程連接,需要新增一個網卡配置,在沒有安裝驅動前,使用上面的配置,虛擬機是斷網狀態。

修改完成之后,開啟虛擬機:virsh start ws2

(4)、手動更新驅動

可以事先把光驅中的驅動文件復制一份到磁盤中,開機后會發現沒有網絡適配器。在計算機設備管理器中找到網絡適配器,然后手動更新,選擇驅動文件所在目錄

更新后的結果顯示:

磁盤控制區:QEMU HARDDISK ATA Device(原有的)和Red Hat VirtIO SCSI controller(新增的)

存儲控制器:Microsoft存儲空間控制器(原有的)和Red Hat VirtIO SCSI controller(新增的)

網絡適配器:Red Hat VirtIO Ethernet Adapter(速度是10.0Gbps)

(5)、再次修改xml文件

virsh edit ws2

原有磁盤信息:

<disk type='file' device='disk'>

? <driver name='qemu' type='qcow2'/>

? <source file='/home/kvm-bak/ws2.img'/>

? <target dev='hda' bus='ide'/>

? <address type='drive' controller='0' bus='0' target='0' unit='0'/>

</disk>

新增的磁盤信息:

<disk type='file' device='disk'>

? <driver name='qemu' type='qcow2'/>

? <source file='/home/kvm-img/test.img'/>

? <target dev='hdc' bus='virtio'/>

? <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>

</disk>

兩者更改后的信息顯示:

<disk type='file' device='disk'>

? <driver name='qemu' type='qcow2'/>

? <source file='/home/kvm-bak/ws2.img'/>

? <target dev='vda' bus='virtio'/>

? <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>

</disk>?

操作說明:把原有磁盤信息中的address這一行替換為新增磁盤的address這一行,然后把dev='vda' bus='virtio'。

十二、調整虛擬機cpu和內存

1、查看虛擬機配置信息

virsh dumpxml ws2 | head –n 10

<domain type='kvm'>

? <name>ws2</name>

? <uuid>cc86e316-cb50-4983-8eba-c714f3b447f7</uuid>

? <memory unit='KiB'>8388608</memory> #當前內存大小

? <currentMemory unit='KiB'>8388608</currentMemory>? #最大內存大小

? <vcpu placement='static'>6</vcpu> ?#最大cpu數

? <os>

??? <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>

??? <boot dev='hd'/>

? </os>

或者:virsh dominfo ws2

2、調整cpu

2.1修改配置文件

<vcpu placement='static'>6</vcpu>的值(需關機)

2.2在線調整虛擬機CPU

# virsh setvcpus ws2 4 (只能增大,不能減小)

同樣,能夠動態調整的最大VCPU個數也不能超過為虛擬機設置的最大VCPU數量

設置VM使用的最大內存或最大CPU可以使用 # virsh edit vm1命令

3、調整內存

3.1修改配置文件

virsh edit ws2

?<memory unit='KiB'>8388608</memory> #當前內存大小 8388608/1024/1024=8G

?<currentMemory unit='KiB'>8388608</currentMemory>? #最大內存大小

3.2在線調整虛擬機內存

virsh setmem ws2 4G (增大或減小)

能夠在線調整的最大內存不能超過為虛擬機分配的最大內存,否則需要關閉虛擬機上調最大內存

轉載于:https://www.cnblogs.com/sanduzxcvbnm/p/7707258.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253079.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253079.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253079.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

dds設計信號發生器

高一 150206101 Dds數字信號發生器設計方案 DDS的工作原理框圖如下 在微機內&#xff0c;若插入一塊D/A轉換卡&#xff0c;然后編制一段小程序&#xff0c;如連續進行加一運算到一定值&#xff0c;然后連續進行減一 運算回到原值&#xff0c;在反復運行該程序&#xff0c;則微機…

Maven--資源文件resource的問題

2019獨角獸企業重金招聘Python工程師標準>>> Maven項目的目錄有&#xff1a; src/java/main src/java/resource src/test/main src/test/resource 有的時候在resource目錄下添加文件卻不能加載出來&#xff0c;解決的辦法是從把添加的資源文件添加到properties---&g…

pthread_create()創建線程最大個數

線程應用程序最常見導致創建線程失敗的原因是線程棧大小的設置。創建一個新的線程&#xff0c;默認情況下系統為線程棧預留了2MB的尋址空間。線程棧起始于進程虛擬 內存的高端地址&#xff0c;并向虛擬內存底端地址方向擴展。取決于線程本身的大小以及其它線程內存分配的情況&a…

C++ Primer 5 CH4 表達式

4.1 基礎 函數調用也是一種特殊的運算符&#xff0c;它對運算對象的數量沒有限制。C 的表達式要么是左值&#xff0c;要么是右值。左值可以位于賦值語句的左邊&#xff0c;右值則不可以。當一個對象被用作右值的時候&#xff0c;用的是對象的值&#xff1b;當對象被用作左值的時…

PHY以太網自動協商原理

自協商原理&#xff1a;自協商是通過一種叫做快速連接脈沖&#xff08;Fast Link Pulse&#xff09;的信號實現的&#xff0c;簡稱FLP。自協商的雙方通過FLP來交換數據。 在具備自協商能力的端口沒有Link的情況下&#xff0c;端口一直發送FLP&#xff0c;在FLP中包含著…

canvas--初級

摘要&#xff1a; canvas:默認寬高為300*150&#xff0c;需用canvas的API定義其寬高繪畫路徑以beginPath()開始,以closePath()結束常用方法fill()、stroke()、rect()、arc()、text()、lineTo()、moveTo()以下為代碼&#xff1a; var cdocument.getElementById("mycanvas&q…

撲克牌翻牌問題(遞歸)

撲克牌翻牌問題 題目描述&#xff1a; 有52張牌&#xff0c;使它們全部正面朝上&#xff0c;從第2張開始&#xff0c;凡是2的倍數位置上的牌翻成正面朝下&#xff1b;接著從第3張牌開始&#xff0c;凡是3的倍數位置上的牌&#xff0c;正面朝上的翻成正面朝下,正面朝下的翻成正面…

以太網自動協商原理

自協商基本原理 自動協商模式是端口根據另一端設備的連接速度和雙工模式&#xff0c;自動把它的速度調節到最高的公共水平&#xff0c;即線路兩端能具有的最快速度和雙工模式。 自協商功能允許一個網絡設備能夠將自己所支持的工作模式信息傳達給網絡上的對端&#xff0c;并接受…

Python學習-文件的調用-讀取

1.文件的打開 open(filename[,mode[,buffering]]) #這個一定要記得關文件。close.() filename,要以路徑的形式展示&#xff0c;比如在"c:\"中&#xff0c;則要這樣寫: rc:\filename 如果不用路徑展示&#xff0c;那就用filename.其會在執行文件所在的文件夾進行搜索…

javascript . 05 json的組成、for...in 遍歷對象、簡單數據類型與復雜數據類型的傳值與傳址、內置對象...

對象字面量 JSON var obj { aaa :999};   var json{"aaa":999&#xff0c;“bbb”&#xff1a;888}; ”kay“&#xff1a;value 對象字面2??定義方法和json很像&#xff0c;只有一點不同&#xff0c;json的key 必須加“”   &#xff1b; 對象&#xff0c;數…

nohup命令

nohup命令 起因 ssh到機器上&#xff0c;然后執行某個程序&#xff0c;再登錄發現程序早就不運行了。 原因 ssh過去之后&#xff0c;執行的大部分命令&#xff08;守護進程不會斷開&#xff09;&#xff0c;都是ssh進程的子進程&#xff0c;ssh斷開&#xff0c;命令自然會中斷 …

mac與phy如何實現網絡自適應

這兩天修改網卡驅動以實現10/100/1000M自適應&#xff0c;因此研究了下phy芯片和emac驅動如何兼容10/100/1000M網絡環境&#xff0c;記錄在此。 網絡中設備端數據鏈路層由mac芯片和phy芯片組成&#xff0c;phy芯片根據外部網絡環境完成自動協商以及配置&#xff0c;驅動中根據p…

asp.net(mvc) 框架

1、NFine mvcef 2、Grove orm架構 3、NHibernate orm 4、NBear 5、petshop 6、Membership 7、Brnshop 網上商城 8、cms快速開發&#xff1a;http://www.open-open.com/news/view/a90f1 9、c#開源框架&#xff1a;http://www.cnblogs.com/gaoyuchuanIT/articles/5612268.html 來…

LVM邏輯卷詳解及創建

我們先來看一下這張圖片&#xff1a;PV: 底層的一個硬盤設備&#xff0c;可以是一個分區&#xff0c;也可能是一個RAID。我們可以把這個塊設備創建成一個物理卷格式&#xff0c;即一個PV。VG: 將一個或多個PV提供的存儲空間在一個更低的單位上劃分成一個個獨立的存儲單元&#…

python文件操作總結

python中對文件、文件夾&#xff08;文件操作函數&#xff09;的操作需要涉及到os模塊和shutil模塊。 得到當前工作目錄&#xff0c;即當前Python腳本工作的目錄路徑: os.getcwd() 返回指定目錄下的所有文件和目錄名:os.listdir() 函數用來刪除一個文件:os.remove() 刪除多個目…

Fread 和fwrite的參數不同,返回值不同

函數fwrite 功能C語言函數&#xff0c;向文件寫入一個數據塊 。size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);注意&#xff1a;這個函數以二進制形式對文件進行操作&#xff0c;不局限于文本文件返回值&#xff1a;返回實際寫入的數據塊數目&…

課程簡介及算法分析

先學課程 -概率論 運行時間&#xff08;running time&#xff09; - 輸入&#xff08;eg 已經排序&#xff09; - 輸入規模&#xff08;6和6*10^9&#xff09; 各種各樣的分析&#xff1a; - 最壞情況分析&#xff08;worst case&#xff09;usually T(n) max time when inp…

利用shell腳本添加環境變量

在shell腳本設置了環境變量&#xff0c;如export LIBRARY_PATH./lib/&#xff0c;執行了此腳本后, 在執行生成的可執行文件&#xff0c;提示錯誤 error while loading shared libraries: libww.so: cannot open shared object file: No such file or directory 但是如果把expor…

2017 ACM-ICPC西安網賽B-Coin

B-Coin Bob has a not even coin, every time he tosses the coin, the probability that the coins front face up is \frac{q}{p}(\frac{q}{p} \le \frac{1}{2})?p??q??(?p??q??≤?2??1??). The question is, when Bob tosses the coin kktimes, whats the pr…

Java第四次作業

Dog dognew Dog("哈士奇","黑白",2);System.out.println(dog);}}class Dog {private String name;private String color;private int age;public String getName(){return name;}public String getColor(){return color;}public int getAge(){return age;}…