[Devel] [TRD] NFS migration - update 1

Stanislav Kinsburskiy skinsbursky at virtuozzo.com
Mon Oct 31 05:51:11 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.36.1.vz7.19.1
     criu-2.1.0.31-1.vz7
     spfs-0.08.0-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 NFS version 3 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)

5. Known issues

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

1) Remote locks are not supported. Local locks are supported for NFSv3 
_only_ (NFS versions 4 and later don't support local locks at all).
2) Overmounted NFS mount is not supported.

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