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.