Virtuozzo / OpenVZ Containers Fail to Start After Reboot – VCMMD Service Error Fix

Category : Advanced

Problem

After rebooting a Virtuozzo 7 host node, all containers failed to start with the following error:

vzctl start 2030

Starting Container ...
Mount image: /vz/private/2030/root.hdd
Container is mounted
Setting permissions for image=/vz/private/2030/root.hdd
vcmmd: failed to register Container: Failed to connect to VCMMD service
vcmmd: failed to unregister Container: Failed to connect to VCMMD service
Unmount image: /vz/private/2030/root.hdd (190)
Container is unmounted
Failed to start the Container

Additionally, the VCMMD service was not running:

systemctl status vcmmd

Output:

vcmmd.service: main process exited, code=exited, status=1/FAILURE

The service would immediately fail every time it was started.


Initial Investigation

The following checks confirmed that the issue was not related to container corruption:

  • Ploop images mounted successfully.
  • Virtuozzo kernel was loaded correctly.
  • /proc/user_beancounters existed.
  • Virtuozzo kernel modules were present.
  • Container configuration files were intact.

This ruled out:

  • Container filesystem corruption
  • Ploop corruption
  • Incorrect kernel boot
  • Missing Virtuozzo modules

The failure was isolated to the VCMMD service itself.


Root Cause

After further investigation, it was discovered that the following cgroup directory was missing after the host reboot:

/sys/fs/cgroup/memory/user.slice

Because the directory did not exist, the Virtuozzo Memory Management Daemon (VCMMD) could not initialize and exited immediately.

As a result:

  • VCMMD failed to start
  • Containers could not register with VCMMD
  • Every container startup attempt failed

Resolution

Create the missing directory:

mkdir /sys/fs/cgroup/memory/user.slice

Then start the VCMMD service:

service vcmmd start

Or on systemd-based installations:

systemctl start vcmmd

Verify:

systemctl status vcmmd

The service should now be running normally.

Once VCMMD is active, containers can be started successfully:

vzctl start <CTID>

Example:

vzctl start 2030

Permanent Fix

If the issue reoccurs after every reboot, investigate why the memory cgroup hierarchy is not being created automatically during boot.

As a temporary workaround, you may add the following command to the boot process:

mkdir -p /sys/fs/cgroup/memory/user.slice

before VCMMD starts.


Conclusion

If Virtuozzo/OpenVZ containers fail to start after a reboot with:

vcmmd: failed to register Container: Failed to connect to VCMMD service

and the vcmmd service continuously exits with status 1/FAILURE, check whether the following directory exists:

/sys/fs/cgroup/memory/user.slice

Creating the directory and restarting VCMMD immediately restores normal container operations.