In Linux, we have kernel virtual machine (KVM )tool which provide very nice features to create virtual machine for various test and production work, it also has many advanced features which make it quit reliable and durable in comparison of any other Virtual machine tool. In this post we will see how can we increase memory of any KVM virtual machine through its command-line tool virsh.

SetUP

For this setup, we are using Ubuntu 18.04 latest version as of Feb, 2019.

~ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.1 LTS
Release:	18.04
Codename:	bionic
~ kvm --version
QEMU emulator version 2.11.1(Debian 1:2.11+dfsg-1ubuntu7.9)
Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers
~ virsh --version
4.0.0

Increase of Virtual Machine memory

So let’s start to see what Virtual Machine we have how much memory allocate to it so that we could increase it and analyze how to make it.

~ virsh list
 Id    Name                           State
----------------------------------------------------
 7     CentOS6_1                      running

Although it’s quit easy to identify memory information in any Machine, but let’s see in Linux Virtual machine.

[root@CentOS6_1 ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           995         90        905          0          5         30

In Linux machine, we have free command to check memory, it’s easily available to any linux distribution and also help on internet, There is another way to find memory through KVM tools virsh.

~ virsh dominfo CentOS6_1| grep mem
Max memory:     1048576 KiB
Used memory:    1048576 KiB

Iphone11 Black 256GB
So with both above commands we know how much memory assigned to virtual machine.Currently 1GB of memory assigned to Virtual Machine named CentOS6_1.
Now let’s see how we could increase virtual machine memory. For increasing memory in Virtual machine, we should shutdown Virtual machine first.in case we try to increase memory on running machine, it will through error like below.

~ virsh setmaxmem CentOS6_1 --size 5253125 --live
error: Unable to change MaxMemorySize
error: Requested operation is not valid: cannot resize the maximum memory on an active domain

~ virsh setmaxmem CentOS6_1 --size 5253125 --current
error: Unable to change MaxMemorySize
error: Requested operation is not valid: cannot resize the maximum memory on an active domain

These two options are available in virsh help setmaxmem, but anyhow its not working.

I suggest to shutdown virtual machine through its on console and wait for proper shutdown. Once it get shutdown, we have to increase both maxmemory and memory.

~ virsh setmaxmem CentOS6_1 --size 4194304 --config

~ virsh setmem CentOS6_1 --size 2097152 --config 

In Above commands, we can see we changed memory assigned to Virtual machine.We can also manage these memory parameters through virsh edit domain-name command and edit configuration file directly, which could sometime risky process as manual error could cause issues while start domain again.

let’s how it effect on machine.

~ virsh dominfo CentOS6_1| grep mem
Max memory:     4194304 KiB
Used memory:    2097152 KiB

In Virtual machine, we can see 2GB of memory is allocated.

[root@CentOS6_1 ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          1913        113       1799          0          5         30

But once we already set Max memory more than memory assigned of virtual Machine like max memory assigned is 4G and memory assigned 2G, we can anytime increase it to any limit within Maximum memory assigned.

~ virsh setmem CentOS6_1 --size 3145728 --live

~ virsh dominfo CentOS6_1| grep mem           
Max memory:     4194304 KiB
Used memory:    3145728 KiB

Which also reflect on running Virtual Machine.

So i hope now we discuss enough to understand, how to increase memory in Kernel Virtual Machine (KVM) through virsh command-line tools.