Skip to content

How to unlock a container in OpenVZ

Last updated on March 13, 2019

Action Scripts

There might be some situations when you need to perform additional actions when a container is started/stopped. You need OpenVZ action scripts to perform these additional operations to manage particular container. Action scripts are located in the /vz/private/CTID/scripts/ and /etc/vz/conf directories. There are both global and user defined scripts for containers. The global action scripts can be executed for all containers and user defined action scripts can be only run for a specific container identified by the container id(CTID). The vzctl has an ability to execute user-defined scripts when a specific vzctl command is run for a container. The vzctl command can execute action scripts like start, stop, restart, mount, and unmount.

syntax

vzctl [flags] CTID –parameter value[…]

Example

1) To start a container

vzctl start CTID [–wait] [–force]

2) To stop a container

vzctl stop CTID [–FAST]

3) To restart a container

vzctl restart CTID [–fast] [–skip-unmount]

4) To know the current status of a container

vzctl status CTID

where, start, stop, restart, status are the action scripts and the CTID is the Container ID.

Locked Container

The OpenVZ container fails to start and becomes unresponsive sometimes, if the action scripts does not work properly. Sometimes the container will get stuck or unresponsive when running time consuming processes like automated or manual virtuozo backups. At this stage the container will be unresponsive and is referred to be in a locked stage. While starting the OpenVZ container you will get an error like this

[root@server ~]# vzctl stop CTID

Container already locked

You won’t be able to start, stop, restart or run any action scripts on the container at the this stage.

Solution

Kill the process

If multiple failed attempts are made to start or restart the container, then every such event will have a separate process id(PID). You must remove all those pid and also the lock file. The pid can be found out by running the below command.

ps aux | grep /usr/sbin/vzctl start CTID
ps aux | grep /usr/sbin/vzctl restart CTID

You can kill the process by killing all those pid found from the above command. Run this command to kill the every founded pid.

kill -9 pid

Delete the lock file

The lock file contains no data and exists as an empty marker file. It contains properties and settings for the lock. The lock file signals the applications that a resource should not be used until the lock is released. The default location of the lock file is

/vz/lock/CTID.lck

To release the resources and free the container from lock, this file must be deleted. Each container has its own specific lock file. To delete the lock file use the command given below.

[root@server ~]# rm /vz/lock/CTID.lck

rm :  remove regular file ‘/vz/lock/CTID.lck’? y

Kill the checkpoint

Finally kill the checkpoint of the container to unlock and free the resources. The parameter –kill is used to kill the container checkpoint.

[root@server ~]# vzctl chkpnt CTID –kill

Killing…

Container is not running

Start the container

Once you have run all of them, you can re-run your container using vzctl start/restart/stop command.

Published inLinuxShell