256°

28.12 磁盘扩容(raw) 28.13 磁盘扩容(qcow2) 28.14 调整cpu内存和网卡 28.15 迁移虚拟机

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-01 ~]# cd /kvm_data/

[root@axinlinux-01 kvm_data]# ls

aminglinux01_2.img  aminglinux01.img  aminglinux02_3.raw  aminglinux02.img  lost+found

[root@axinlinux-01 kvm_data]# qemu-img resize /kvm_data/aminglinux02_3.raw +2G #给这块磁盘加2G

Image resized.

[root@axinlinux-01 kvm_data]# qemu-img info /kvm_data/aminglinux02_3.raw #查看一下这块磁盘


[root@axinlinux-01 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: 2.6G

[root@axinlinux-01 kvm_data]# virsh start aminglinux02 #开启

域 aminglinux02 已开始

[root@axinlinux-01 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-01 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-01 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-01 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-01 kvm_data]# virsh destroy aminglinux02 #关闭02.也可以shutdown

域 aminglinux02 被删除

 

[root@axinlinux-01 kvm_data]# virsh start aminglinux02 #重新开启02

域 aminglinux02 已开始

 

[root@axinlinux-01 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-01 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-01 kvm_data]# virsh snapshot-list aminglinux01 #查一下01的快照

名称               生成时间              状态
------------------------------------------------------------
 1561629728           2019-06-27 18:02:08 +0800 shutoff
 1561630057           2019-06-27 18:07:37 +0800 shutoff

[root@axinlinux-01 kvm_data]# virsh snapshot-delete aminglinux01  1561629728 #删除01的快照

已删除域快照 1561629728

[root@axinlinux-01 kvm_data]# virsh snapshot-delete aminglinux01  1561630057 #删除01的快照

已删除域快照 1561630057

[root@axinlinux-01 kvm_data]# qemu-img resize /kvm_data/aminglinux01.img +2G #给01扩容2G

Image resized.

接下来跟raw扩容分区一样了。

[root@axinlinux-01 kvm_data]# virsh start aminglinux01 #开启01

域 aminglinux01 已开始

 

[root@axinlinux-01 kvm_data]# virsh list

 Id    名称                         状态
----------------------------------------------------
 9     aminglinux02                   running
 10    aminglinux01                   running

 

[root@axinlinux-01 kvm_data]# virsh console aminglinux01 #进入01

[root@localhost ~]# fdisk -l #查看一下分区

Disk /dev/vda: 12.9 GB, 12884901888 bytes, 25165824 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00073e2d

Device 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 #开始分区

命令(输入 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-01 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-01 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>

 

 

<domain type='kvm'>
  <name>aminglinux01</name>
  <uuid>ea3fd5d6-52fd-4764-8a2e-ab8b8ba38399</uuid>
  <memory unit='KiB'>1048576</memory>
  <currentMemory unit='KiB'>624288</currentMemory>
  <vcpu placement='static'>2</vcpu>按照上面的改完,保存完会变回原来的文件。
 

[root@axinlinux-02 kvm_data]# virsh setmem aminglinux01 800m #动态的调整内存

 

[root@axinlinux-01 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-01 kvm_data]# virsh setvcpus aminglinux01 2 #动态的增加或等同于原先的数量是可以的

 

[root@axinlinux-01 kvm_data]# virsh setmem aminglinux01 500m #减少内存是可以的(减到500)

 

[root@axinlinux-01 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-01 kvm_data]# virsh dumpxml aminglinux02 > /etc/libvirt/qemu/aminglinux01.xml #此处需要注意的是,我们在动态的调整完配置以后,要重定向一下,就是保存到配置文件里。因为目前还是在内存里

[root@axinlinux-01 kvm_data]# vim /etc/libvirt/qemu/aminglinux01.xml #完成之后,我们在检查一下配置文件。此时配置文件是已经修改了。

[root@axinlinux-01 kvm_data]# virsh edit aminglinux01 #但是我们以这种方式查看配置文件,他还是之前的数据,并没有修改。因为他是在内存里调用的,所以是之前的数据。我们shuntdowm再start之后就会使调整总之后的了

[root@axinlinux-01 kvm_data]# virsh attach-interface aminglinux01 --type bridge --source virbr0 #增加一块网卡,source为桥接到那一块网卡上

[root@axinlinux-01 kvm_data]# virsh domiflist aminglinux01 #再来查看,就多了一块。桥接到了virbr0上去了
 

接口     类型     源        型号      MAC
-------------------------------------------------------
vnet1      bridge     br0        virtio      52:54:00:b1:0e:fb
vnet2      bridge     virbr0     rtl8139     52:54:00:dd:91:b8

[root@axinlinux-01 kvm_data]# virsh attach-interface aminglinux01 --type bridge --source br0 #也可以指定桥接到br0上

成功附加接口

 

[root@axinlinux-01 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-01 kvm_data]# virsh console aminglinux01 #我们进去查看一下网卡

连接到域 aminglinux01

换码符为 ^]

[root@localhost ~]# ifconfig #他已经动态的获取了IP。而且已经不是br什么什么了,而是ens什么什么

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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 group default qlen 1000
    link/ether 52:54:00:b1:0e:fb brd ff:ff:ff:ff:ff:ff
3: ens8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:dd:91:b8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.166/24 brd 192.168.122.255 scope global noprefixroute dynamic ens8
       valid_lft 3443sec preferred_lft 3443sec
    inet6 fe80::1ce2:7a13:403:b333/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
4: ens9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:7c:41:91 brd ff:ff:ff:ff:ff:ff
    inet 192.168.193.163/24 brd 192.168.193.255 scope global noprefixroute dynamic ens9
       valid_lft 1712sec preferred_lft 1712sec
    inet6 fe80::36fe:4ee2:3d5:2cc0/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

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-01 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子机

本文由【oschina130111】发布于开源中国,原文链接:https://my.oschina.net/u/3866192/blog/3067303

全部评论: 0

    我有话说: