[Devel] [TRD] NFS migration

Stanislav Kinsburskiy skinsbursky at virtuozzo.com
Fri May 27 03:09:01 PDT 2016


1. Feature

NFS mount point migration via CRIU
https://jira.sw.ru/browse/PSBM-26967

2. Description

CRIU now supports NFS file system migration (all versions).
CRIU itself does mount of SPFS file system (fuse based) instead of NFS 
and starts SPFS manager program.
SPFS-manager does NFS remount and replaces SPFS by NFS on a running 
container.

3. Products

Virtuozzo 7

Packages versions (or later):
     vzkernel-3.10.0-327.18.2.vz7.14.5
     criu-2.1.0.31-1.vz7
     spfs-0.03.2-1.vz7
     libvzctl-7.0.217

4. Testing

4.1 Basics
     ** Install criu, libvzctl and spfs packages
     ** Create a container
     ** Enable NFS support in container (see man vzctl)
     ** Install NFS package inside the container (nfs-utils in case of 
rpm-based distribution)
     ** Mount NFS share within container
     ** Suspend and resume container.
     ** Wait till all SPFS-related processes exited ("spfs" and 
"spfs-manager").
     ** Check, that NFS mount point is restored.

4.2 Process, using NFS
    ** Mount NFS share
    ** Start some program, using NFS files (criu has zdtm test suite for 
such purpose)
    ** Suspend and restore container
    ** Wait till all SPFS-related processes exited ("spfs" and 
"spfs-manager").
    ** Check, that processes, using NFS, are running correctly (in case 
of zdtm test suite, stop the test and check result)

4.3. Multiple suspend/resume
    ** Mount NFS share
    ** Start some program, using NFS files (criu has zdtm test suite for 
such purpose)
    ** Do suspend and restore of a container multiple times
    ** Wait till all SPFS-related processes exited ("spfs" and 
"spfs-manager").
    ** Check, that processes, using NFS, are running correctly (in case 
of zdtm test suite, stop the test and check result)

4.4. Multiple different NFS shares
    ** Mount NFS share A
    ** Mount NFS share B
    ** Start some program, using NFS A files (criu has zdtm test suite 
for such purpose)
    ** Start some program, using NFS B files (criu has zdtm test suite 
for such purpose)
    ** Do suspend and restore of a container
    ** Wait till all SPFS-related processes exited ("spfs" and 
"spfs-manager").
    ** Check, that processes, using NFS, are running correctly (in case 
of zdtm test suite, stop the test and check result)

4.5. Multiple equal NFS shares
    ** Mount NFS share A
    ** Bind-mount NFS A to some other directory (NFS B) inside the container
    ** Start some program, using NFS A files (criu has zdtm test suite 
for such purpose)
    ** Start some program, using NFS B files (criu has zdtm test suite 
for such purpose)
    ** Do suspend and restore of a container
    ** Wait till all SPFS-related processes exited ("spfs" and 
"spfs-manager").
    ** Check, that processes, using NFS, are running correctly (in case 
of zdtm test suite, stop the test and check result)
    ** Check, that NFS A and NFS B have equal super block (device id)

4.6. Processes, using NFS
    ** Mount NFS share
    ** Start all the programs supported by SPFS (see below), using NFS 
files (criu has zdtm test suite for such purpose)
    ** Suspend and restore container
    ** Wait till all SPFS-related processes exited ("spfs" and 
"spfs-manager").
    ** Check, that processes, using NFS, are running correctly (in case 
of zdtm test suite, stop the test and check result)

4.7. MIgrate different NFS versions of NFS (v3, v4, v4.1) without locks 
support
    ** Mount NFS share
    ** Start all the programs supported by SPFS (see below), using NFS 
files (criu has zdtm test suite for such purpose)
    ** Suspend and restore container
    ** Wait till all SPFS-related processes exited ("spfs" and 
"spfs-manager").
    ** Check, that processes, using NFS, are running correctly (in case 
of zdtm test suite, stop the test and check result)
    ** Repeat with different version

4.8. Migrate different NFS versions of NFS (v3, v4, v4.1) with locks support
    ** Mount NFS share
    ** Start all the programs supported by SPFS (see below), using NFS 
files (criu has zdtm test suite for such purpose)
    ** Suspend and restore container
    ** Wait till all SPFS-related processes exited ("spfs" and 
"spfs-manager").
    ** Check, that processes, using NFS, are running correctly (in case 
of zdtm test suite, stop the test and check result)
    ** Repeat with different version

5. Known issues

Most of NFS restore is done by SPFS (and not by CRIU).
Currently, SPFS doesn't support:

1) Fifo migration (will be restored without content)
2) Unix socket migration (will be restored without content)
3) Unlinked files (will be restored, but files won't be unlinked)

6. What was checked by developer

 From 4.1 to 4.5.

7. Feature owners

skinsbursky at virtuozzo.com



More information about the Devel mailing list