1. 程式人生 > >115.兩種格式磁碟擴容、調整記憶體和cpu、遷移虛擬機器

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子機