Article ID: 118310, created on Oct 30, 2013, last review on Apr 27, 2014

  • Applies to:
  • Virtuozzo containers for Linux


Online migration of a container can last two times longer under certain conditions:

  1. the container's private area is in VZFS format;
  2. the container was migrated in the past from the second node with --remove-area no and the private area was left on this server;
  3. either none or too many files are created and deleted in the container during the first migration phase of copying files.


On the first stage of the online migration in Parallels Virtuozzo Containers, the tool vzmigrate starts vzfstrack which enables tracking of changes in the private area of the migrated container. While the container is still running on the source node and the files from the private area are being copied by rsync, the kernel collects names of updated files and the tracking process expands the list of files to copy in the second phase.

Once container's data is transferred - online migration moves on the the second stage - the stage when changed data is transferred. Files from the collected list will be transferred again during the second stage.

For example, this is how the tracked files' list may look like: `

# cat /vz/tmp/track_file.xwl5mY

Under rare conditions, when activity inside of a container is very small, we can get either empty list, or in case of some activity in "/" folder the list might include "./root" record (path is relative to /vz/private/[CTID]/fs/). In both cases it would result in re-syncing entire file system of a container once again.

This issue is recognized as a product defect registered as PCLIN-32156.


The fix is planned to be available in the next product updates. Meanwhile you may use the following workaround - replace the original "vzlinmigration's rsync" with the wrapper that would additionally alter track_file in a way that would help you to avoid double-transfer:

  1. Rename vzlinmigrate's rsync to rsync.orig:

    # mv /usr/local/share/vzlinmigrate/rsync{,.orig}
  2. Create a wrapper script in place of /usr/local/share/vzlinmigrate/rsync with the following content:

    for i in `echo "$*"`; do echo $i; done | grep track_file | while read file;
        sed -i '/^.\/root$/d;/^.\/root\/$/d;' $file;
        echo ./root/etc/passwd >> $file;
    /usr/local/share/vzlinmigrate/rsync.orig $*`
  3. Give it execution permissions:

    # chmod +x /usr/local/share/vzlinmigrate/rsync

Search Words

private area










e8e50b42231236b82df27684e7ec0beb 2897d76d56d2010f4e3a28f864d69223 d02f9caf3e11b191a38179103495106f

Email subscription for changes to this article
Save as PDF