According to the official Virtuozzo 7 information, the proper and reliable way to use OpenVZ 7 virtualization is to deploy the server using Virtuozzo 7 ISO image from https://download.openvz.org/virtuozzo/releases/7.0/x86_64/iso/
If due to whatever reason there is no way to deploy the server using ISO, there is also a way to convert CentOS 7 to VZ7. Such scenario is not fully supported by SolusVM and should be performed on the server's owner risk
Preparing partitioning on CentOS 7 node for conversion
Before proceeding with installing vzkernel, it is required to prepare the server to match the requirements of Virtuozzo 7. The main part here is to have a dedicated EXT4 partition mounted on /vz.
Mount a specifically created partition or a logical volume (it's a preferable way, it will be easier to extend it if required). The file system on the partition/volume must be ext4. Do not forget to add the corresponding mount point to /etc/fstab.
Here are the sample steps on how to achieve that in case there is a second drive /dev/sdb. Note that steps are just an example.
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 64G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 21G 0 part ├─centos-root 253:0 0 20G 0 lvm / └─centos-swap 253:1 0 1G 0 lvm [SWAP] sdb 8:16 0 64G 0 disk # vgcreate vz /dev/sdb Physical volume "/dev/sdb" successfully created. Volume group "vz" successfully created # lvcreate -n vz -l 100%FREE /dev/vz Logical volume "vz" created. # mkfs.ext4 /dev/vz/vz # mkdir /vz # mount /dev/vz/vz /vz # echo "/dev/vz/vz /vz ext4 defaults 1 1" >> /etc/fstab
Overall The result should be similar to the following one:
# df -hT /vz Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/vz-vz ext4 50G 827M 46G 2% /vz
Type must be ext4 and it must be me mounted on /vz.
Doing the conversion
Once /vz partition is prepared, we can go ahead with the conversion.
Update the system and reboot the server:
# yum update # reboot
Install python sub-processes, the latest OpenVZ 7 release, Epel repository, prctl utility, OpenVZ kernel and ploop packages:
# yum localinstall https://download.openvz.org/virtuozzo/releases/openvz-7.0.11-235/x86_64/os/Packages/p/python-subprocess32-3.2.7-1.vz7.5.x86_64.rpm # yum localinstall https://download.openvz.org/virtuozzo/releases/openvz-7.0.11-235/x86_64/os/Packages/o/openvz-release-7.0.11-3.vz7.x86_64.rpm # yum install epel-release -y
Install vzlinux release:
# yum install python3 # rpm -Uvh http://repo.virtuozzo.com/vzlinux/7/x86_64/os/Packages/r/readykernel-scan-0.11-1.vl7.noarch.rpm # rpm -Uvh http://repo.virtuozzo.com/vzlinux/7/x86_64/os/Packages/z/zstd-1.4.4-1.vl7.x86_64.rpm # rpm -Uvh http://repo.virtuozzo.com/vzlinux/7/x86_64/os/Packages/v/vzlinux-release-7-1.vl7.91.x86_64.rpm
Move CentOS repositories to another location to avoid package conflicts in future:
# mv /etc/yum.repos.d/CentOS-* /root/
Re-install json-c and jansson packages from virtuozzo repositories
# rpm -e --nodeps --justdb json-c # yum erase jansson # yum localinstall http://repo.virtuozzo.com/vzlinux/7.7/x86_64/os/Packages/j/jansson-2.10-1.vl7.1.x86_64.rpm # yum localinstall http://repo.virtuozzo.com/vzlinux/7.7/x86_64/os/Packages/j/json-c-0.11-13.vl7.1.x86_64.rpm
Re-install nss packages
# rpm -e --nodeps --justdb nspr # rpm -e --nodeps --justdb nss # rpm -e --nodeps --justdb nss-pem # rpm -e --nodeps --justdb nss-softokn # rpm -e --nodeps --justdb nss-softokn-freebl # rpm -e --nodeps --justdb nss-sysinit # rpm -e --nodeps --justdb nss-tools # rpm -e --nodeps --justdb nss-util # yum localinstall http://repo.virtuozzo.com/vzlinux/7/x86_64/os/Packages/n/nss-3.44.0-7.vl7.x86_64.rpm # yum localinstall http://repo.virtuozzo.com/vzlinux/7/x86_64/os/Packages/n/nss-softokn-freebl-3.44.0-8.vl7.i686.rpm # yum localinstall http://repo.virtuozzo.com/vzlinux/7/x86_64/os/Packages/n/nss-tools-3.44.0-7.vl7.x86_64.rpm
Re-install glibc packages:
yum downgrade glibc*
Install the necessary packages:
# yum install prlctl prl-disp-service vzkernel *ploop*
Update the system once again:
# yum update
Reboot the node:
# reboot
Now, enable ploop kernel modules:
# modprobe ploop # modprobe pfmt_ploop1 # modprobe pfmt_raw # modprobe pio_direct
The conversion is done. Feel free to try installing SolusVM on it:
# curl -o install.sh https://files.soluslabs.com/install.sh && sh install.sh
In case you did everything right, you will see the following screen on CentOS 7:
The last step after that - install EZ packages:
# yum install *ez.noarch