Ploop/Getting started
This article describes how to use container-in-a-file technology aka ploop
Contents
Requirements
The following is required for ploop to work:
- RHEL6-based OpenVZ kernel, i.e. 042stabXXX.
/vz
partition formatted asext4
and mounted in ordered mode, or residing on NFSv3. No other filesystem is supported.- ploop library and tools installed (run
yum install ploop
).
Making a CT on ploop
Global configuration
In global VZ configuration file /etc/vz/vz.conf, set
VE_LAYOUT=ploop
This means that all new containers you will create will have ploop layout by default.
You don't have to set this option if you don't want ploop to be default. Alternatively, you can:
- use
--layout
option ofvzctl create
command; - convert existing container to ploop.
Creating a new CT
To create a new container on ploop, use:
vzctl create CTID [--layout ploop] [--diskspace nnnG] [--diskinodes mmm]
- You can omit
--layout
option if you have setVE_LAYOUT=ploop
in vz.conf(5) - You can specify initial file system size using
--diskspace
option (example: 10G for 10 gigabytes) - If
--diskspace
is not specified, the size defaults to DISKSPACE limit value in sample CT config used - If
--diskinodes
is not specified, 1 inode per 16K of disk space will be created (see diskinodes for more info)
Converting an existing CT
1. Stop the container:
vzctl stop CTID
2. Set some sane diskspace value, and reset the diskinodes value. New value for diskspace will be used as a size of newly created ploop image. Here is the example to set diskspace to 10 gigabytes:
vzctl set CTID --diskspace 10G --diskinodes 0 --save
3. Convert:
vzctl convert CTID
4. Once your CT is well tested, you can free disk space by removing files that may have remained from the old container file system in /vz/root/CTID. VERY CAREFULLY (and after testing your converted container) you can stop, remove old files and start container again, e.g.:
vzctl stop CTID rm -rf /vz/root/CTID;mkdir /vz/root/CTID vzctl start CTID
Resizing a ploop image
Ploop image can be resized in both directions (i.e. either shrank or grown). Ploop also supports online/live resize so you don't have to stop a CT to do resize.
To resize a ploop CT image, use
vzctl set CTID --diskspace nnnG --save
Note that
- resize can safely be performed online (i.e. when container is running)
- there is no need to specify two values for diskspace (unlike simfs, there is no soft and hard quota).
- there is no way to limit or change the number of inodes available for an existing container (i.e. option
--diskinodes
is ignored); see diskinodes for more details
Showing disk space usage / limits
You can use vzlist(8) to see CT disk space usage and limits in a uniform way for any containers (simfs or ploop, started or stopped).
The field diskspace is showing the current disk space usage, and the fields diskspace.s and diskspace.h are showing the filesystem size (or disk space quotas, for simfs case).
The field diskinodes is showing the current inodes usage, and the fields diskinodes.s and diskinodes.h are showing the filesystem size (or disk inodes quotas, for simfs case).
Examples:
vzlist -o smart_name,diskspace.h,diskspace vzlist -o smart_name,diskinodes.h,diskinodes
On a lower level, same info can be obtained via ploop info command:
ploop info /vz/private/501/root.hdd/DiskDescriptor.xml
Using disk quotas inside container
If you want to use standard Linux per-user and per-group disk quota inside a container, you have to enable it using
vzctl set CTID --quotaugidlimit 1000 --save
Note that:
- unlike with simfs,
--quotaugidlimit
argument can be any non-zero value; - enabling or disabling in-container disk quotas requires a container restart, so you might find
--setmode
option helpful.
See vzctl(8) for more details.