Применимо к редакции: МСВСфера 9 (ФСТЭК)

14.8. Управление конфигурацией виртуальной машины

14.8.1. Изменение объёма оперативной памяти

За объём оперативной памяти, доступной виртуальной машине, отвечают два основных параметра в её конфигурационном файле:

  • maxMemory — задаёт максимальный объём оперативной памяти, доступный к использованию виртуальной машиной. Изменить это значение можно только для выключенной виртуальной машины.

  • memory — задаёт фактический объём оперативной памяти, выделяемый виртуальной машине. Это значение может быть меньше значения maxMemory, но не должно превышать его. Допускается изменение «на лету» для работающей виртуальной машины.

Соответственно, для изменения объёма выделяемой виртуальной машине оперативной памяти необходимо модифицировать эти значения. Далее рассмотрим несколько способов решения этой задачи.

14.8.1.1. Изменение объёма оперативной памяти с помощью командной строки

Посмотреть текущую конфигурацию виртуальной машины можно с помощью команды virsh dominfo. Ниже приведён пример подключения к системной сессии (см. «14.3.3. Системный режим») гипервизора и получение информации о виртуальной машине с именем msvsphere-9-arm:

$ virsh --connect qemu:///system dominfo msvsphere-9-arm
Id:             8
Name:           msvsphere-9-arm
UUID:           edb3edb0-a096-4f06-b153-8f77c6bdd38f
OS Type:        hvm
State:          running
CPU(s):         2
CPU time:       149.1s
Max memory:     2097152 KiB
Used memory:    2097152 KiB
Persistent:     yes
Autostart:      enable
Managed save:   no
Security model: selinux
Security DOI:   0
Security label: system_u:system_r:svirt_t:s0:c36,c784 (enforcing)

В данном случае нас интересуют только значения Max memory и Used memory. В текущей конфигурации фактический объём выделенной памяти уже равен максимальному объёму (2 гибибайта или 1024³ байт), соответственно, увеличение «на лету» уже невозможно.

Выключим виртуальную машину:

$ virsh --connect qemu:///system shutdown msvsphere-9-arm
Domain 'msvsphere-9-arm' is being shutdown

Для увеличения максимального объёма оперативной памяти служит команда virsh setmaxmem — увеличим его до 8 гибибайт:

$ virsh --connect qemu:///system setmaxmem msvsphere-9-arm 8G --config

Аргумент --config указывает на то, что необходимо внести изменения в конфигурационный файл, они будут применены во время следующего запуска виртуальной машины.

Удостоверимся что конфигурация была успешно изменена:

$ virsh --connect qemu:///system dominfo msvsphere-9-arm | grep memory
Max memory:     8388608 KiB
Used memory:    2097152 KiB

Теперь мы можем увеличить объём фактически выделяемой оперативной памяти как «на лету» для запущенной виртуальной машины, так и для выключенной. За изменение этого параметра отвечает команда virsh setmem, увеличим его до 3 гибибайт и запустим виртуальную машину:

$ virsh --connect qemu:///system setmem msvsphere-9-arm 3G --config

$ virsh --connect qemu:///system dominfo msvsphere-9-arm | grep memory
Max memory:     8388608 KiB
Used memory:    3145728 KiB

$ virsh --connect qemu:///system start msvsphere-9-arm
Domain 'msvsphere-9-arm' started

Как и ранее для команды virsh setmaxmem, опция --config указывает на то, что необходимо внести изменения в конфигурацию виртуальной машины.

Для изменения фактического объёма оперативной памяти на лету нужно использовать команду virsh setmem с аргументом --live:

$ virsh --connect qemu:///system setmem msvsphere-9-arm 4G --live

$ virsh --connect qemu:///system dominfo msvsphere-9-arm | grep memory
Max memory:     8388608 KiB
Used memory:    4194304 KiB

Однако такое изменение будет действовать только до выключения виртуальной машины:

$ virsh --connect qemu:///system shutdown msvsphere-9-arm
Domain 'msvsphere-9-arm' is being shutdown

$ virsh --connect qemu:///system dominfo msvsphere-9-arm | grep memory
Max memory:     8388608 KiB
Used memory:    3145728 KiB

Чтобы внести изменения и в конфигурационный файл, и в параметры работающей виртуальной машины используйте комбинацию аргументов --live --config:

$ virsh --connect qemu:///system setmem msvsphere-9-arm 4G --live --config

Сделанное таким образом изменение конфигурации сохранится и после выключения виртуальной машины.

14.8.1.2. Изменение количества виртуальных процессоров

Количество виртуальных процессоров, выделенных для виртуальной машины, можно посмотреть с помощью команды virsh vcpucount:

$ virsh --connect qemu:///system vcpucount msvsphere-9-arm
maximum      config         2
maximum      live           2
current      config         2
current      live           2

Как и в случае с оперативной памятью, используются два параметра — максимальное количество процессоров и фактическое, при этом фактическое не может превышать максимальное.

Для увеличения максимального количества процессоров используется следующая команда:

$ virsh --connect qemu:///system setvcpus msvsphere-9-arm 4 --maximum --config

Где аргумент --maximum указывает на то, что необходимо изменить именно максимальное количество процессоров, а --config — на то, что необходимо внести изменения в конфигурацию виртуальной машины. Изменение максимального количества процессоров «на лету» без остановки не поддерживается.

После выполнения предыдущей команды конфигурация виртуальной машины изменится следующим образом:

$ virsh --connect qemu:///system vcpucount msvsphere-9-arm
maximum      config         4
maximum      live           2
current      config         2
current      live           2

Остановим и снова запустим виртуальную машину:

$ virsh --connect qemu:///system shutdown msvsphere-9-arm
Domain 'msvsphere-9-arm' is being shutdown

$ virsh --connect qemu:///system start msvsphere-9-arm
Domain 'msvsphere-9-arm' started

И посмотрим как изменился вывод virsh vcpucount:

$ virsh --connect qemu:///system vcpucount msvsphere-9-arm
maximum      config         4
maximum      live           4
current      config         2
current      live           2

Значения опций maximum config и maximum live совпадают — теперь можно увеличивать фактическое количество выделяемых виртуальных процессоров.

Для изменения конфигурации «на лету» до следующего перезапуска виртуальной машины используется команда virsh setvcpus с аргументом --live:

$ virsh --connect qemu:///system setvcpus msvsphere-9-arm 3 --live

$ virsh --connect qemu:///system vcpucount msvsphere-9-arm
maximum      config         4
maximum      live           4
current      config         2
current      live           3

Для изменения постоянной конфигурации виртуальной машины выполните команду virsh setvcpus с аргументом --config:

$ virsh --connect qemu:///system setvcpus msvsphere-9-arm 3 --config

$ virsh --connect qemu:///system vcpucount msvsphere-9-arm
maximum      config         4
maximum      live           4
current      config         3
current      live           3

Допускается одновременное использование аргументов --live и --config, чтобы изменить настройки уже запущенной виртуальной машины и её постоянную конфигурацию:

$ virsh --connect qemu:///system setvcpus msvsphere-9-arm 2 --config --live

$ virsh --connect qemu:///system vcpucount msvsphere-9-arm
maximum      config         4
maximum      live           4
current      config         2
current      live           2