目錄
1、CPU動态擴容
2、記憶體擴容
3、磁盤格式比較
4、網絡配置
6、性能優化
1、CPU動态擴容
1.1、靜态cpu擴容(需重新開機)
# 直接修改vm虛拟機cpu參數
[[email protected] qemu]# vim /etc/libvirt/qemu/CentOS-7.1-x86_64.xml
[[email protected] qemu]# virsh edit CentOS-7.1-x86_64
<vcpu placement='static'>1</vcpu> 修改為
<vcpu placement='auto' current='1'>4</vcpu> # 目前cpu為1,最大可配置為4
# 重新開機vm
[[email protected] ~]# virsh destroy CentOS-7.1-x86_64
[[email protected] ~]# virsh start CentOS-7.1-x86_64
[[email protected] ~]# virsh dominfo CentOS-7.1-x86_64
CPU: 2
1.2、動态cpu擴容(熱擴容)
# 注意:
# 動态擴容不得超過配置檔案cpu最大數量
# 動态擴容隻針對centos7生效,6不行
# 隻能動态增加,不支援減少
# 直接修改vm虛拟機cpu參數
[[email protected] qemu]# virsh edit CentOS-7.1-x86_64
<vcpu placement='static'>1</vcpu> 修改為
<vcpu placement='auto' current='1'>4</vcpu> # 目前cpu為1,最大可配置為4
# 直接使用setvcpus參數
[[email protected] ~]# virsh setvcpus CentOS-7.1-x86_64 2 --live
[[email protected] ~]# virsh dominfo CentOS-7.1-x86_64
Id: 4
名稱: CentOS-7.1-x86_64
UUID: 2e66d4f3-96b4-43ad-9da1-b5007f110c23
OS 類型: hvm
狀态: running
CPU: 2
CPU 時間: 70.0s
最大記憶體: 1048576 KiB
使用的記憶體: 1048576 KiB
持久: 是
自動啟動: 啟用
管理的儲存: 否
安全性模式: none
安全性 DOI: 0
2、記憶體擴容
# 通過修改配置檔案方式設定最大記憶體
[email protected] ~]# virsh dumpxml centos7 | grep -i memo
<memory unit='KiB'>2097152</memory>
<currentMemory unit='KiB'>2097152</currentMemory>
# 指令方式
[[email protected] ~]# virsh setmem CentOS-7.1-x86_64 1748288
3、磁盤格式比較
1. raw
raw格式是最簡單,什麼都沒有,是以叫raw格式。連頭檔案都沒有,就是一個直接給虛拟機進行讀寫的檔案。raw不支援動态增長空間,必須一開始就指定空間大小。是以相當的耗費磁盤空間。但是對于支援稀疏檔案的檔案系統(如ext4)而言,這方面并不突出。ext4下預設建立的檔案就是稀疏檔案,是以不要做什麼額外的工作。用
du -sh 檔案名
可以檢視檔案的實際大小。也就是說,不管磁盤空間有多大,運作下面的指令沒有任何問題:
qemu-img create -f raw test.img 10000G
raw鏡像格式是虛拟機種I/O性能最好的一種格式,大家在使用時都會和raw進行參照,性能越接近raw的越好。但是raw沒有任何其他功能。對于稀疏檔案的出現,像qcow這一類的運作時配置設定空間的鏡像就沒有任何優勢了。
2. cow
cow格式和raw一樣簡單,也是建立時配置設定所有空間,但cow有一個bitmap表記錄目前哪些扇區被使用,是以cow可以使用增量鏡像,也就是說可以對其做外部快照。但cow也沒有其他功能,其特點就是簡單。
3. qcow
qcow在cow的基礎上增加了動态增加檔案大小的功能,并且支援加密,壓縮。qcow通過2級索引表來管理整個鏡像的空間配置設定,其中第二級的索引用了記憶體cache技術,需要查找動作,這方面導緻性能的損失。qcow現在基本不用,一方面其優化和功能沒有qcow2好,另一方面,讀寫性能又沒有cow和raw好。
4. qcow2
qcow2是集各種技術為一體的超級鏡像格式,支援内部快照,加密,壓縮等一系列功能,通路性能也在不斷提高。但qcow2的問題就是過于臃腫,把什麼功能都集于一身。鏡像小的原因是鏡像檔案隻儲存改變的部分,原來的檔案被鎖住了。
qcow2格式,類似虛拟機的瘦模式,雖然劃分10GB,但是不是立即占完的,用多少占多少
4、網絡配置
# 啟動kvm虛拟機,會多出一個vnet0網絡裝置,這是虛拟啟動後生成的。
[[email protected] ~]# ifconfig
vnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::fc54:ff:fe83:f7a0 prefixlen 64 scopeid 0x20<link>
ether fe:54:00:83:f7:a0 txqueuelen 500 (Ethernet)
RX packets 464 bytes 49210 (48.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1356 bytes 104195 (101.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# 預設kvm虛拟機流量橋接到virbr0上,然後經過主控端的iptables的nat,再經過eth0出去,這就有網絡瓶頸了,而且依靠iptables,如果你把iptables關閉無法上網了。同時ip位址是位址池中配置設定的内網位址。
# kvm擷取的位址來源于下面
[[email protected] ~]# ps aux | grep dns
nobody 1343 0.0 0.0 15544 964 ? S Feb06 0:00 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
root 1344 0.0 0.0 15516 300 ? S Feb06 0:00 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
root 7701 0.0 0.0 112648 968 pts/0 S+ 00:36 0:00 grep --colour=auto dns
[[email protected] ~]# cat /var/lib/libvirt/dnsmasq/default.conf
##WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
##OVERWRITTEN AND LOST. Changes to this configuration should be made using:
## virsh net-edit default
## or other application using the libvirt API.
##
## dnsmasq conf file created by libvirt
strict-order
pid-file=/var/run/libvirt/network/default.pid
except-interface=lo
bind-dynamic
interface=virbr0
dhcp-range=192.168.122.2,192.168.122.254
dhcp-no-override
dhcp-lease-max=253
dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts
# 生産中,網絡這塊改動如下:
一般是添加一個網絡裝置橋
把主控端的網卡橋接到這上面
删除原先主控端的IP位址
把主控端的位址配置到這個網絡裝置橋上
最後修改kvm配置檔案,讓kvm也橋接到這個網絡裝置橋上
[[email protected] ~]# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.5254002430ec yes virbr0-nic
vnet0
[[email protected] ~]# brctl addbr br0
[[email protected] ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000000000000 no
virbr0 8000.5254002430ec yes virbr0-nic
vnet0
# 下面操作過程中會斷網。我們可以寫成腳本形式執行
[[email protected] ~]# cd /tools
[[email protected] ~]# vim edit-net.sh
[[email protected] ~]# cat edit-net.sh
brctl addif br0 eth0
ip addr del dev eth0 192.168.145.133/24
ifconfig br0 192.168.145.133/24 up
route add default gw 192.168.145.2
[[email protected] ~]# sh edit-net.sh &
# 可以看到eth0上就沒有ip位址了,同時eth0橋接到了br0上了
[[email protected] ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c29a71724 no eth0
virbr0 8000.5254002430ec yes virbr0-nic
vnet0
[[email protected] ~]# ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.145.133 netmask 255.255.255.0 broadcast 192.168.145.255
inet6 fe80::20c:29ff:fea7:1724 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:a7:17:24 txqueuelen 0 (Ethernet)
RX packets 38 bytes 2676 (2.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 35 bytes 3654 (3.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::20c:29ff:fea7:1724 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:a7:17:24 txqueuelen 1000 (Ethernet)
RX packets 293183 bytes 327693627 (312.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 89134 bytes 18395706 (17.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:24:30:ec txqueuelen 0 (Ethernet)
RX packets 46059 bytes 4057533 (3.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 84485 bytes 315875854 (301.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::fc54:ff:fe83:f7a0 prefixlen 64 scopeid 0x20<link>
ether fe:54:00:83:f7:a0 txqueuelen 500 (Ethernet)
RX packets 12 bytes 1162 (1.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 737 bytes 38921 (38.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# 把kvm也橋接到br0上
# interface這裡原先配置如下
[[email protected] ~]# virsh edit CentOS-7.1-x86_64
<interface type='network'>
<mac address='52:54:00:83:f7:a0'/>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
改成如下配置
<interface type='bridge'>
<mac address='52:54:00:83:f7:a0'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
# 重新開機kvm,使用vnc登入,看到ip位址已經重新擷取到了
[[email protected] ~]# ip ad
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:83:f7:a0 brd ff:ff:ff:ff:ff:ff
inet 192.168.145.134/24 brd 192.168.145.255 scope global dynamic eth0
valid_lft 1643sec preferred_lft 1643sec
inet6 fe80::5054:ff:fe83:f7a0/64 scope link
valid_lft forever preferred_lft forever
6、性能優化
https://blog.51cto.com/13871362/2350104