Issue statement
ploop (Parallels loopback device) - a kernel block device, similar to the traditional loop device but with more features added, such as dynamic disk space allocation, stackable images, online resize, snapshotting, and live migration helper (write tracker).
Fixes and improvements are being released constantly, thus, as a first troubleshooting step, please, make sure all the available updates are installed.
Table of contents
- Ploop containers creation and requirements
- Ploop disk usage, resize and FS issues
- Snapshots and backups
- Migration
- Ploop containers creation and requirements
1. Structure
Ploop implementation in the kernel have a modular and layered design. The top layer is the main ploop module, which provides a virtual block device to be used for CT filesystem.
The middle layer is the format module, which does translation of block device block numbers into image file block numbers. A simple format module which is called "raw" is doing trivial 1:1 translation, same as existing loop device. More sophisticated format module is keeping the translation table and is able to dynamically grow and shrink the image file. That means, if you create a container with 2GB of disk space, the image file size will not be 2GB, but less -- the size of the actual data stored in the container.
It is also possible to support other image formats by writing other ploop format modules, such as the one for QCOW2 (used by QEMU and KVM).
The bottom layer is the I/O module. Currently modules for direct I/O on an ext4 device, and for NFS are available. There are plans to also have a generic VFS module, which will be able to store images on any decent file system, but that needs an efficient direct I/O implementation in the VFS layer which is still being worked on.
2. Converting existing containers to ploop (or "layout 5")
Ploop container layout:
~]# ls -la /vz/private/101/
total 16
drwx------ 1 root root 0 Feb 6 05:53 .
drwx------ 1 root root 0 Sep 16 2013 ..
drwx------ 1 root root 0 Feb 6 05:53 dump
drwx------ 1 root root 0 Feb 6 05:53 fs
-rwx------ 1 root root 16 Feb 6 05:54 .owner
drwx------ 1 root root 0 Feb 6 05:53 root.hdd
-rwx------ 1 root root 0 Mar 23 17:10 .running
drwx------ 1 root root 0 Feb 6 05:53 scripts
-rwx------ 1 root root 1288 Mar 23 18:30 Snapshots.xml
lrwxrwxrwx 1 root root 18 Feb 6 05:53 templates - root.hdd/templates
-rwx------ 1 root root 25 Mar 23 22:11 .uptime
-rwx------ 1 root root 827 Mar 23 18:30 ve.conf
lrwxrwxrwx 1 root root 1 Feb 6 05:53 .ve.layout - 5
drwx------ 1 root root 0 Feb 6 05:53 .vza
Known issues for creating/converting to ploop on Virtuozzo 6.
-
/vz partition should be in ext4 to run ploop:
Unable to create ploop-based container after upgrade to Virtuozzo 6
-
existing container should not have broken VZFS links
Broken VZFS links prevents container to be converted to ploop
-
conversion to ploop only possible from VZFS4 layout, containers with VZFS3 layout should be converted to VZFS4 layout first
3.Ploop vs. VZFS
-Understanding quotaugidlimit and jquota:
-Understanding diskinodes specific in ploop containers:
Ploop balloon occupies too much space after converting a vzfs container to ploop
How to change the default inodes limit for ploop containers?
Ploop disk usage, resize and FS issues
1. General operations and best practices
How to perform fsck on a ploop container
How to mount ploop image from read-only file system
How to deal with situations when the container hits the inodes limit
How to change the default inodes limit for ploop containers?
2.Issues troubleshooting
A ploop container cannot be resized: Unable to change image size to N1 sectors, minimal size is N2
A ploop container cannot be started: Device or resource busy [152]
Snapshots and backups
Ploop snapshots is a mechanism for creating and managing instant states of a running file system. Creating a snapshot leads to creating a new empty ploop image which is layered on top of an old one, then all writes are ending up in the top image, and reads are falling through to a lower level. There can be up to 126) stacked ploop images (or snapshots). Online snapshot merging is also supported.
If you are keeping multiple snapshots, mind the diskspace. Container with snapshots will occupy more real diskspace than it is showing from the inside of it.
1.Troubleshooting
How to delete orphan ploop snapshots not listed with prlctl snapshot-list?
Ploop snapshot cannot be deleted with "Single delta, nothing to merge" error message
Migration
1.Migration into ploop
P2C:
To avoid delays and problems when migrating a physical server to a Container, make sure that the following requirements are met:
The Linux distribution installed on the source physical computer is supported by Parallels Cloud Server. To find that out, check the /etc/vz/conf/dists directory on the destination Parallels server and look for a corresponding Linux_Distribution_Name-version.conf configuration file (e.g., redhat-5.conf). If there is none, you can do one of the following:
-
Create a new distribution configuration file and place it in the /etc/vz/conf/dists directory on the destination Parallels server. For more details, see Creating Configuration Files for New Linux Distribution.
-
Start migration without a configuration file. In this case unknown.conf from the /etc/vz/conf/dists directory will be used to configure the resulting Container. However, you will not be able to use standard Parallels Cloud Server utilities (e.g., prlctl) to perform main operations on the newly created Container (e.g., set its IP address or configure DNS parameters) and have to do that manually from inside the Container.
-
ssh is installed on both the source physical computer and the destination Parallels server to provide secure encrypted and authenticated communication between the two. You can check if the ssh package is already installed by executing the ssh -V command.
-
rsync is installed on the source physical computer to copy the source contents to the resulting Container. If rsync on the source physical computer is incompatible with that on the destination Parallels server, use the latter, which is located in the /usr/local/share/vzlinmigrate directory.
Hardware server migration to container in ploop format not supported in PVA
Container migration from PVC 4.0 or 4.6 to Virtuozzo 6 (Parallels Cloud Storage)
Migrated container from OpenVZ to Virtuozzo 6 fails to convert to ploop
2.Migration of ploop containers between nodes
Directories left after unsuccessful container migration cannot be deleted
Online migration fails : /usr/sbin/vzctl exited with code 152
Container migration fails with "ssh exited with code 2" error message