10.7. Creating Virtual Environments with virt-install¶
While you typically create virtual machines and containers using prlctl
, you can also do the same with virt-install
. You will need to install it from the Virtuozzo official repository with yum install virt-install
.
You can manage VMs created with virt-install
using prlctl
. You will need, however, to manually delete the hard disk images after you delete such VMs with prlctl delete
.
To shorten the commands and make sure that the required parameters are always supplied, the common options for creating virtual environments are placed in presets. You can list the default presets and their contents as follows:
# virt-install --list-presets
vz_vm_windows - Virtuozzo VM Windows
vz_vm_linux - Virtuozzo VM Linux
vz_ct_windows - Virtuozzo CT Windows
# virt-install --show-preset vz_vm_linux
# virt-install --show-preset vz_vm_windows
You can also create your own presets and place them in /etc/virt-manager/presets
. If a preset starts with a commented-out line, it is used to describe the preset in the output of virt-install --list-presets
. Otherwise “No description” is shown.
Note
The vz_ct_windows
preset is meant for the Windows Containers Demo. For more details, see the Windows Containers Demo Walkthrough.
The following sample command creates a blank VM based on the vz_vm_linux
preset optimized for running CentOS 7:
# virt-install \
--import \
--name mylinuxvm \
--ram 2048 \
--vcpus 'sockets=1,cores=2' \
--disk 'path=/vz/mylinuxvm/harddisk.hdd,bus=scsi,startup_policy=optional,boot_order=1,size=64' \
--disk 'device=cdrom,path=myosdistrib.iso,bus=scsi,boot_order=2' \
--preset vz_vm_linux \
--graphics=vnc,password=mypasswd,listen=0.0.0.0,port=6533
The resulting VM has the following properties:
2048 MB RAM
1 CPU socket and 2 CPU cores
64 GB hard disk in the file
/vz/mylinuxvm/harddisk.hdd
, which is created along with the VM (the directory must exist)A CD-ROM drive where an existing file
myosdistrib.iso
, e.g., a Linux distribution image, is mounted to boot and install fromVNC enabled on port 6533 at host’s IP address
The next sample command creates a blank VM based on the vz_vm_windows
preset optimized for running Microsoft Windows Server 2019:
# virt-install \
--import \
--name mywindowsvm \
--ram 2048 \
--vcpus 'sockets=1,cores=2' \
--disk 'path=/vz/mywindowsvm/harddisk.hdd,bus=scsi,startup_policy=optional,boot_order=1,size=64' \
--disk 'device=cdrom,path=myosdistrib.iso,bus=scsi,boot_order=2' \
--preset vz_vm_windows \
--graphics=vnc,password=mypasswd,listen=0.0.0.0,port=6534
The resulting VM has the following properties:
2048 MB RAM
1 CPU socket and 2 CPU cores
64 GB hard disk in the file
/vz/mywindowsvm/harddisk.hdd
, which is created along with the VM (the directory must exist)A CD-ROM drive where an existing file
myosdistrib.iso
, e.g., a Microsoft Windows distribution image, is mounted to boot and install fromVNC enabled on port 6534 at host’s IP address
Finally, the sample commands to create a Linux container based on the CentOS 7 template are:
# vzpkg create image centos-7-x86_64 mylinuxct.hdd
# virt-install \
--connect vzct:///system \
--name mylinuxct \
--memory 2048 \
--disk 'path=/vz/mylinuxct/mylinuxct.hdd,boot_order=1'
The first command creates a hard disk image for the container. It is made from the same template that is used when creating containers using prlctl
. The second command creates the container with the specified hard disk.
You can resize the disk with virsh blockresize <CT_name> <device_name> <size><units>
. The container can be running or stopped. For example:
# virsh --connect vzct:///system blockresize mylinuxct vda 16G
# prlctl list -i mylinuxct | grep hdd
hdd0 (+) scsi:0 image='/root/mylinuxct.hdd' type='expanded' 16384Mb <...>