KVM虛擬化 - cpu內存擴容、磁盤格式、網絡橋接、性能優化

目錄

1、CPU動態擴容

2、內存擴容

3、磁盤格式比較

4、網絡配置

6、性能優化


1、CPU動態擴容

1.1、靜態cpu擴容(需重啓)

# 直接修改vm虛擬機cpu參數

[root@linux-node1 qemu]# vim  /etc/libvirt/qemu/CentOS-7.1-x86_64.xml 
[root@linux-node1 qemu]# virsh edit CentOS-7.1-x86_64
<vcpu placement='static'>1</vcpu>  修改爲
<vcpu placement='auto' current='1'>4</vcpu>  # 當前cpu爲1,最大可配置爲4

# 重啓vm

[root@linux-node1 ~]# virsh destroy CentOS-7.1-x86_64 
[root@linux-node1 ~]# virsh start CentOS-7.1-x86_64
[root@linux-node1 ~]# virsh dominfo CentOS-7.1-x86_64           
CPU:          2

1.2、動態cpu擴容(熱擴容)

# 注意:
# 動態擴容不得超過配置文件cpu最大數量
# 動態擴容只針對centos7生效,6不行
# 只能動態增加,不支持減少       

# 直接修改vm虛擬機cpu參數

[root@linux-node1 qemu]# virsh edit CentOS-7.1-x86_64
<vcpu placement='static'>1</vcpu>  修改爲
<vcpu placement='auto' current='1'>4</vcpu>  # 當前cpu爲1,最大可配置爲4

# 直接使用setvcpus參數

[root@linux-node1 ~]# virsh setvcpus CentOS-7.1-x86_64 2 --live
[root@linux-node1 ~]# 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、內存擴容

# 通過修改配置文件方式設置最大內存

root@test-kvm ~]# virsh dumpxml centos7 | grep -i memo
  <memory unit='KiB'>2097152</memory>
  <currentMemory unit='KiB'>2097152</currentMemory>

# 命令方式

[root@linux-node1 ~]# 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網絡設備,這是虛擬啓動後生成的。

[root@linux-node1 ~]# 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獲取的地址來源於下面

[root@linux-node1 ~]# 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
[root@linux-node1 ~]# 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也橋接到這個網絡設備橋上

[root@linux-node1 ~]# brctl show
bridge name bridge id       STP enabled interfaces
virbr0      8000.5254002430ec   yes     virbr0-nic
                            vnet0
[root@linux-node1 ~]# brctl addbr br0
[root@linux-node1 ~]# brctl show
bridge name bridge id       STP enabled interfaces
br0     8000.000000000000   no     
virbr0      8000.5254002430ec   yes     virbr0-nic
                            vnet0

# 下面操作過程中會斷網。我們可以寫成腳本形式執行 

[root@linux-node1 ~]# cd /tools
[root@linux-node1 ~]# vim edit-net.sh
[root@linux-node1 ~]# 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
[root@linux-node1 ~]# sh edit-net.sh &

# 可以看到eth0上就沒有ip地址了,同時eth0橋接到了br0上了

[root@linux-node1 ~]# brctl show
bridge name bridge id       STP enabled interfaces
br0     8000.000c29a71724   no      eth0
virbr0      8000.5254002430ec   yes     virbr0-nic
                            vnet0
[root@linux-node1 ~]# 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這裏原先配置如下

[root@linux-node1 ~]# 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地址已經重新獲取到了

[root@linux-node1 ~]# 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


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章