115.兩種格式磁碟擴容、調整記憶體和cpu、遷移虛擬機器
28.12 磁碟擴容(raw)
28.13 磁碟擴容(qcow2)
28.14 調整cpu記憶體和網絡卡
28.15 遷移虛擬機器
28.12 磁碟擴容(raw)
針對一塊已經存在的盤進行增加容量
1.qemu-img resize /kvm_data/aminglinux02_3.raw +2G
2.qemu-img info /kvm_data/aminglinux02_3.raw
3.virsh destroy aminglinux02
4.virsh start aminglinux02
5.virsh console aminglinux02
6.fdisk -l 檢視磁碟情況,並分新的分割槽
#如何利用上增加的2G空間,給他放到/dev/vda1裡面去。可以重新分割槽,就是增加一個分割槽(原先的分割槽不要破壞,直接加上這2G空間)fisk /dev/sda然後按n,增加一個
7.除了對已有磁碟擴容外,還可以額外增加磁碟 #針對於標準分割槽的
qemu-img create -f raw /kvm_data/aminglinux02_2.raw 5G
virsh edit aminglinux02 //增加<disk>…</disk>,注意更改source、target、slot
virsh destroy aminglinux02
virsh start aminglinux02
例項:
[root@axinlinux-02 ~]# cd /kvm_data/
[root@axinlinux-02 kvm_data]# ls
aminglinux01_2.img aminglinux01_2.qcow2 aminglinux01.img aminglinux02_3.raw aminglinux02.img lost+found
[root@axinlinux-02 kvm_data]# qemu-img resize /kvm_data/aminglinux02_3.raw +2G #給這塊磁碟加2G
Image resized.
[root@axinlinux-02 kvm_data]# qemu-img info /kvm_data/aminglinux02_3.raw #檢視一下這塊磁碟
image: /kvm_data/aminglinux02_3.raw
file format: raw
virtual size: 12G (12884901888 bytes)
disk size: 1.2G
[root@axinlinux-02 kvm_data]# virsh start aminglinux02 #開啟
域 aminglinux02 已開始
[root@axinlinux-02 kvm_data]# virsh console aminglinux02 #進入
[root@localhost ~]# fdisk -l #進入檢視一下分割槽磁碟大小。因為阿鑫是重啟後加的2G(虛擬機器處於關機狀態),所以這裡直接顯示了加2G空間之後的。正常加完空間,需要重啟一下,先shutdown在start
磁碟 /dev/vda:12.9 GB, 12884901888 位元組,25165824 個扇區 #此時變成了12G
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標籤型別:dos
磁碟識別符號:0x000f3221
裝置 Boot Start End Blocks Id System
/dev/vda1 * 2048 2099199 1048576 83 Linux
/dev/vda2 2099200 4196351 1048576 82 Linux swap / Solaris
/dev/vda3 4196352 20971519 8387584 83 Linux
[root@localhost ~]# fdisk /dev/vda #分割槽,將這2G的空間分割槽分進去
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在記憶體中,直到您決定將更改寫入磁碟。
使用寫入命令前請三思。
命令(輸入 m 獲取幫助):n #按 n ,增加一個分割槽
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): p #增加一個主分割槽
已選擇分割槽 4
起始 扇區 (20971520-25165823,預設為 20971520): #預設就是從開頭開始的
將使用預設值 20971520
Last 扇區, +扇區 or +size{K,M,G} (20971520-25165823,預設為 25165823): #在結尾結束的
將使用預設值 25165823
分割槽 4 已設定為 Linux 型別,大小設為 2 GiB #預設就分了這2G
命令(輸入 m 獲取幫助):p #最後再檢視一些分割槽
磁碟 /dev/vda:12.9 GB, 12884901888 位元組,25165824 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標籤型別:dos
磁碟識別符號:0x000f3221
裝置 Boot Start End Blocks Id System
/dev/vda1 * 2048 2099199 1048576 83 Linux
/dev/vda2 2099200 4196351 1048576 82 Linux swap / Solaris
/dev/vda3 4196352 20971519 8387584 83 Linux
/dev/vda4 20971520 25165823 2097152 83 Linux #我們剛剛分進去的
最後可按 w ,儲存
以上增加分割槽,如果是lvm格式的。我麼是可以增加邏輯捲來實現擴容。那標準分割槽的話,沒法擴容,只能重新分割槽
[root@axinlinux-02 kvm_data]# qemu-img create -f raw /kvm_data/aminglinux02_2.raw 5G #回到宿主機,增加一塊新的磁碟
Formatting '/kvm_data/aminglinux02_2.raw', fmt=raw size=5368709120
[root@axinlinux-02 kvm_data]# qemu-img info aminglinux02_2.raw #檢視
image: aminglinux02_2.raw
file format: raw
virtual size: 5.0G (5368709120 bytes)
disk size: 0
[root@axinlinux-02 kvm_data]# virsh edit aminglinux02 #編輯02的配置檔案
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/kvm_data/aminglinux02_3.raw'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
<disk type='file' device='disk'> #複製上面的內容,再重新修改一下
<driver name='qemu' type='raw'/>
<source file='/kvm_data/aminglinux02_2.raw'/> #這裡改為上面新加磁碟的名字
<target dev='vdb' bus='virtio'/> #這裡改為vdb
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> #這裡的數字要跟上面的數字區分開
</disk>
[root@axinlinux-02 kvm_data]# virsh destroy aminglinux02 #關閉02.也可以shutdown
域 aminglinux02 被刪除
[root@axinlinux-02 kvm_data]# virsh start aminglinux02 #重新開啟02
域 aminglinux02 已開始
[root@axinlinux-02 kvm_data]# virsh console aminglinux02 #進入02
連線到域 aminglinux02
換碼符為 ^] #此處按空格
CentOS Linux 7 (Core)
Kernel 3.10.0-693.el7.x86_64 on an x86_64
localhost login: root
密碼:
Last login: Tue Jan 8 23:44:40 on ttyS0
[root@localhost ~]# fdisk -l #檢視分割槽
磁碟 /dev/vda:12.9 GB, 12884901888 位元組,25165824 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標籤型別:dos
磁碟識別符號:0x000f3221
裝置 Boot Start End Blocks Id System
/dev/vda1 * 2048 2099199 1048576 83 Linux
/dev/vda2 2099200 4196351 1048576 82 Linux swap / Solaris
/dev/vda3 4196352 20971519 8387584 83 Linux
磁碟 /dev/vdb:5368 MB, 5368709120 位元組,10485760 個扇區 #看這是不是多了一塊磁碟。可以針對這塊磁碟分割槽、掛載
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
以上是,標準分割槽下,如果利用加進去的磁碟
但是在生產環境中,很多公司用的是雲主機。當我們磁碟不夠的時候,都是再買一塊雲盤。類似於你增加了一塊盤,我們可以分割槽、掛載就可以了
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28.13 磁碟擴容(qcow2)
1.qemu-img resize /kvm_data/aminglinux01.img +2G
若提示qemu-img: Can't resize an image which has snapshots,需要刪除快照
2.qemu-img info /kvm_data/aminglinux01.img
3.virsh destroy aminglinux01
4.virsh start aminglinux01
5.virsh console aminglinux01
6.fdisk -l 檢視磁碟情況,並分新的分割槽
除了對已有磁碟擴容外(以上),還可以額外增加磁碟(以下)
1.qemu-img create -f qcow2 /kvm_data/aminglinux01_2.img 5G
2.virsh edit aminglinux01 //增加<disk>…</disk>,注意更改source、target、slot
3.virsh destroy aminglinux01
4.virsh start aminglinux01
例項:
[root@axinlinux-02 kvm_data]# qemu-img resize /kvm_data/aminglinux01.img +2G #會報錯要刪除快照
qemu-img: Can't resize an image which has snapshots
qemu-img: This image does not support resize
[root@axinlinux-02 kvm_data]# virsh snapshot-list aminglinux01 #查一下01的快照
名稱 生成時間 狀態
------------------------------------------------------------
1546788751 2019-01-06 23:32:31 +0800 shutoff
1546789865 2019-01-06 23:51:05 +0800 shutoff
[root@axinlinux-02 kvm_data]# virsh snapshot-delete aminglinux01 1546788751 #刪除01的快照
已刪除域快照 1546788751
[root@axinlinux-02 kvm_data]# virsh snapshot-delete aminglinux01 1546789865 #刪除01的快照
已刪除域快照 1546789865
[root@axinlinux-02 kvm_data]# qemu-img resize /kvm_data/aminglinux01.img +2G #給01擴容2G
Image resized.
接下來跟raw擴容分割槽一樣了。
[root@axinlinux-02 kvm_data]# virsh start aminglinux01 #開啟01
域 aminglinux01 已開始
[root@axinlinux-02 kvm_data]# virsh list
Id 名稱 狀態
----------------------------------------------------
1 aminglinux01 running
[root@axinlinux-02 kvm_data]# virsh console aminglinux01 #進入01
[root@localhost ~]# fdisk -l #檢視一下分割槽
[root@localhost ~]# fdisk /dev/vda #開始分割槽
命令(輸入 m 獲取幫助):n #按 n 增加一個分割槽
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): p #按 p 增加一個主分割槽
以上磁碟擴容方式完成
除了擴容,還可以直接增加一塊新的磁碟,方式跟raw的一樣
以後如果有這樣的需求,建議位元組增加一塊新的磁碟的方式
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28.14 調整cpu記憶體和網絡卡
壹.修改配置檔案的方式去調整記憶體和CPU:
1.virsh dominfo aminglinux01 //檢視配置
2.virsh edit aminglinux01//更改如下部分內容
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>524288</currentMemory>
<vcpu placement='static' current='1'>2</vcpu>
3.virsh shutdown aminglinux01
4.virsh start aminglinux01
#此時再去檢視就是更改之後的配置了
貳.線上調整,不需要重啟(動態的):
1.virsh setmem aminglinux01 800m//動態調整記憶體 #也可以減小記憶體
2.virsh dumpxml aminglinux01 > /etc/libvirt/qemu/aminglinux01.xml//需要把配置寫入到配置檔案裡
3.virsh setvcpus aminglinux01 2 //動態調整cpu數量 #不可以減小CPU數量
叄.增加網絡卡:
1.virsh domiflist aminglinux01//檢視網絡卡
3.virsh attach-interface aminglinux01 --type bridge --source virbr0//增加一塊新的網絡卡,並設定為nat網路模式(virbr0類似vmware的vmnet8),這裡如果寫--source br0,則網路模式為橋接
4.virsh dumpxml aminglinux01 > /etc/libvirt/qemu/aminglinux01.xml//需要把配置寫入到配置檔案裡
注意:以上動態的調整CPU、記憶體、網絡卡,都需要重定向到配置檔案,不然不會生效。 所以,我們可以用第一種方式,直接去編輯配置檔案
例項:
[root@axinlinux-02 kvm_data]# virsh dominfo aminglinux01 #如果想看詳細的,可以看他的配置檔案。如下條命令
Id: 1
名稱: aminglinux01
UUID: 79005f12-8ccd-4fe4-bb64-b98b2be80cd2
OS 型別: hvm
狀態: running
CPU: 1
CPU 時間: 38.4s
最大記憶體: 1048576 KiB
使用的記憶體: 524288 KiB
持久: 是
自動啟動: 禁用
管理的儲存: 否
安全性模式: none
安全性 DOI: 0
[root@axinlinux-02 kvm_data]# virsh edit aminglinux01 #在這也可以看他的詳細的配置檔案
<domain type='kvm'>
<name>aminglinux01</name>
<uuid>79005f12-8ccd-4fe4-bb64-b98b2be80cd2</uuid>
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>624288</currentMemory> #比如我們把記憶體512m改成612m
<vcpu placement='static' current='2'>2</vcpu> #比如我們把cpu使用核數改成2核
<os>
[root@axinlinux-02 kvm_data]# virsh setmem aminglinux01 800m #動態的調整記憶體
[root@axinlinux-02 kvm_data]# virsh console aminglinux01 #進去01
連線到域 aminglinux01
換碼符為 ^]
[root@localhost ~]# free -h #檢查調整後的記憶體
total used free shared buff/cache available
Mem: 768M 85M 572M 6.5M 110M 543M
Swap: 1.0G 0B 1.0G
[root@axinlinux-02 kvm_data]# virsh setvcpus aminglinux01 1 #動態的減少CPU是不支援的
錯誤:不支援的配置:failed to find appropriate hotpluggable vcpus to reach the desired target vcpu count
[root@axinlinux-02 kvm_data]# virsh setvcpus aminglinux01 2 #動態的增加或等同於原先的數量是可以的
[root@axinlinux-02 kvm_data]# virsh setmem aminglinux01 500m #減少記憶體是可以的
[root@axinlinux-02 kvm_data]# virsh dominfo aminglinux01 #檢視一下
Id: 2
名稱: aminglinux01
UUID: 79005f12-8ccd-4fe4-bb64-b98b2be80cd2
OS 型別: hvm
狀態: running
CPU: 2
CPU 時間: 42.8s
最大記憶體: 1048576 KiB
使用的記憶體: 512000 KiB
持久: 是
自動啟動: 禁用
管理的儲存: 否
安全性模式: none
安全性 DOI: 0
生產環境中很少減少他的配置,大部分是增加配置
[root@axinlinux-02 kvm_data]# virsh dumpxml aminglinux02 > /etc/libvirt/qemu/aminglinux01.xml #此處需要注意的是,我們在動態的調整完配置以後,要重定向一下,就是儲存到配置檔案裡。因為目前還是在記憶體裡
[root@axinlinux-02 kvm_data]# vim /etc/libvirt/qemu/aminglinux01.xml #完成之後,我們在檢查一下配置檔案。此時配置檔案是已經修改了。
[root@axinlinux-02 kvm_data]# virsh edit aminglinux01 #但是我們以這種方式檢視配置檔案,他還是之前的資料,並沒有修改。因為他是在記憶體裡呼叫的,所以是之前的資料。我們shuntdowm再start之後就會使調整總之後的了
[root@axinlinux-02 kvm_data]# virsh attach-interface aminglinux01 --type bridge --source virbr0 #增加一塊網絡卡,source為橋接到那一塊網絡卡上
[root@axinlinux-02 kvm_data]# virsh domiflist aminglinux01 #再來檢視,就多了一塊。橋接到了virbr0上去了
介面 型別 源 型號 MAC
-------------------------------------------------------
vnet0 bridge br0 virtio 52:54:00:05:d6:07
vnet1 bridge virbr0 rtl8139 52:54:00:dd:d0:2b
[root@axinlinux-02 kvm_data]# virsh attach-interface aminglinux01 --type bridge --source br0 #也可以指定橋接到br0上
成功附加介面
[root@axinlinux-02 kvm_data]# virsh domiflist aminglinux01
介面 型別 源 型號 MAC
-------------------------------------------------------
vnet0 bridge br0 virtio 52:54:00:05:d6:07 #這兩個br0相當於是vmware裡面的橋接模式
vnet1 bridge virbr0 rtl8139 52:54:00:dd:d0:2b #這個virbr0相當於是vmware裡面的NAT模式
vnet2 bridge br0 rtl8139 52:54:00:fe:07:85
[root@axinlinux-02 kvm_data]# virsh console aminglinux01 #我們進去檢視一下網絡卡
連線到域 aminglinux01
換碼符為 ^]
[root@localhost ~]# ifconfig #他已經動態的獲取了IP。而且已經不是br什麼什麼了,而是ens什麼什麼
ens8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.122.7 netmask 255.255.255.0 broadcast 192.168.122.255 #這個就是NAT
inet6 fe80::4b05:cf1c:da77:73c2 prefixlen 64 scopeid 0x20<link>
ether 52:54:00:dd:d0:2b txqueuelen 1000 (Ethernet)
RX packets 70 bytes 5813 (5.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 77 bytes 7000 (6.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens9: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.208.138 netmask 255.255.255.0 broadcast 192.168.208.255 #這個就是橋接
inet6 fe80::fea8:51ce:f27:cdd6 prefixlen 64 scopeid 0x20<link>
ether 52:54:00:fe:07:85 txqueuelen 1000 (Ethernet)
RX packets 377 bytes 18737 (18.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 13 bytes 1454 (1.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 52:54:00:05:d6:07 txqueuelen 1000 (Ethernet)
RX packets 7893 bytes 414062 (404.3 KiB)
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
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 452 bytes 39320 (38.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 452 bytes 39320 (38.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@axinlinux-02 kvm_data]# virsh dumpxml aminglinux01 > /etc/libvirt/qemu/aminglinux01.xml #此時配置依然在記憶體裡,想要生效,也是要重定向到配置檔案裡去
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28.15 遷移虛擬機器
遷移就是從這一臺到另一臺,本機叫克隆
其實就是把.img檔案或.raw拷貝到遠端機器上去。還要把配置檔案.xml檔案拷貝到遠端上去,然後再定義一下(define,就是能夠virsh list出來)
該方式要確保虛擬機器是關機狀態
1.virsh shutdown aminglinux01
2.virsh dumpxml aminglinux01 > /etc/libvirt/qemu/aminglinux03.xml // 如果是遠端機器,需要把該配置檔案拷貝到遠端機器上
3.virsh domblklist aminglinux01 //檢視虛擬機器磁碟所在目錄
4.rsync -av /kvm_data/aminglinux01.img /kvm_data/aminglinux03.img //如果是遷移到遠端,則需要把該磁碟檔案拷貝到遠端機器上
5.vi /etc/libvirt/qemu/aminglinux03.xml //因為是遷移到本機,配置檔案用的是aminglinux01子機的配置,不改會有衝突,所以需要修改該檔案,如果是遠端機器不用修改
修改domname: <name>aminglinux03</name>
修改uuid(隨便改一下數字,位數不要變)
修改磁碟路徑
6.virsh define /etc/libvirt/qemu/aminglinux03.xml //定義新虛擬機器
7.virsh list --all //會發現新遷移的aminglinux03子機