Article ID: 113129, created on Jul 1, 2014, last review on Oct 16, 2014

  • Applies to:
  • Plesk for Linux/Unix
  • Virtuozzo 6.0
  • Virtuozzo containers for Linux
  • Virtuozzo hypervisor

Information

In diesem Artikel werden Schritte beschrieben, die zur Vermeidung von Migrationsproblemen beitragen. Die meisten Migrationsprobleme können verhindert werden, indem die OS-Templates auf dem aktuellsten Stand gehalten werden und gültige Repositorys für alle Applikationen und OS-EZ-Templates verwendet werden.

Kennzeichen

Ein Container startet nach der Migration nicht mehr. Ein der folgenden Darstellung ähnlicher Fehler ist zu beobachten:

~# vzctl start 102
    Starting the Container ...
    Container is mounted
    Setting permissions 20002 dev 0x7d00
    Set up ioprio: 4
    Adding offline management to Container(1): 4643 8443 
    Adding IP addresses: 10.20.30.40
    Error: Unable to execute bash: No such file or directory
    Container is unmounted
    Failed to start the Container

Es gibt weitere Anzeichen für dieses Problem, z. B. dass die Eigenschaften einer Datei in einem Verzeichnis nicht angezeigt werden können:

CT-12264-bash-4.2# ls -al /usr/bin/ | grep '\?'
ls: cannot access /usr/bin/mailq: No such file or directory
    ls: cannot access /usr/bin/hoststat: No such file or directory
    ls: cannot access /usr/bin/praliases: No such file or directory
    ls: cannot access /usr/bin/purgestat: No such file or directory
    ls: cannot access /usr/bin/newaliases: No such file or directory
    ??????????  ? ?    ?              ?            ? hoststat
    ??????????  ? ?    ?              ?            ? mailq
    ??????????  ? ?    ?              ?            ? newaliases
    ??????????  ? ?    ?              ?            ? praliases
    ??????????  ? ?    ?              ?            ? purgestat
    CT-12264-bash-4.2# 

Oder der nachfolgende Befehl für den eingebundenen/gestarteten Container lässt eine Meldung ausgeben (wie z. B. find: ...: No such file or directory):

~# find /vz/root/$CTID -xdev -ls >/dev/null

(Ersetzen Sie "$CTID" mit der tatsächlichen Container-ID.)

Lösung

Bevor Sie eine Migration durchführen, sollten Sie den Quell- und den Ziel-Hardware-Node vorbereiten, genauso wie den Container, der migriert werden soll:

  1. Stellen Sie SCAN_PRIVATE auf "yes" ein, um sicherzustellen, dass die Datei vzpackages alle Pakete (und deren Versionen) auflistet, die von Virtuozzo Paket-Management-Tools im Container installiert sind (basierend auf den bestehenden Verknüpfungen aus dem privaten Bereich des Containers). Bearbeiten Sie /etc/vztt/vztt.conf auf beiden Nodes:

    ~# grep SCAN_PRIVATE /etc/vztt/vztt.conf 
    #SCAN_PRIVATE="yes"
    ~# sed -i 's/#SCAN_PRIVATE/SCAN_PRIVATE/' /etc/vztt/vztt.conf 
    ~# grep SCAN_PRIVATE /etc/vztt/vztt.conf 
    SCAN_PRIVATE="yes"
    

    HINWEIS: Diese Option erhöht die Zeit, die für die Migration erforderlich ist. Es ist zu empfehlen, sie vor dem Migrationsversuch wieder zu kommentieren.

  2. Synchronisieren Sie die Pakete für den Container, der migriert werden soll:

    ~# vzpkg sync_vzpackages $CTID
    

    (Ersetzen Sie "$CTID" mit der tatsächlichen Container-ID.)

  3. Falls die Migration vor diesem Schritt fehlgeschlagen ist, ist es ebenfalls hilfreich, vzpkg repair für den migrierten Container auszuführen. Für gewöhnlich wird dieser Befehl automatisch während der Migration ausgeführt:

    ~# vzpkg repair /vz/private/$CT_ID /etc/sysconfig/vz-scripts/$CTID.conf
    

    Schritt 3 kann zu folgendem Fehler führen:

    Error: The next package(s) are not available
    

    Falls dies der Fall ist, fehlen die aufgelisteten Pakete im Template-Bereich und die Pakete sind auf den konfigurierten Repositorys nicht verfügbar – zum Beispiel weil die Pakete von einer veralteten OS-Version stammen.

    Nehmen wir beispielsweise an, dass unser Container auf dem Template centos-5-x86_64 basiert:

    ~# vzpkg list 113
        centos-5-x86_64      2012-04-16 15:13:10
    

    Der Fehler sieht wie folgt aus:

    Error: The next package(s) are not available:
        samba-swat.x86_64                        0:3.0.33-3.29.el5_5
        samba-common.x86_64                      0:3.0.33-3.29.el5_5
        glibc-common.x86_64                      2.5-49.el5_5.4
        openldap.x86_64                          2.3.43-12.el5_5.2
        krb5-libs.i386                           1.6.1-36.el5_5.5
        krb5-libs.x86_64                         1.6.1-36.el5_5.5
        nss.x86_64                               3.12.6-2.el5.centos
        glibc.i686                               2.5-49.el5_5.4
        nscd.x86_64                              2.5-49.el5_5.4
        samba.x86_64                             0:3.0.33-3.29.el5_5
        dhclient.x86_64                          12:3.0.5-23.el5_5.1
        device-mapper-multipath.x86_64           0.4.7-34.el5_5.4
    

    Alle fehlenden Pakete von oben stammen von Centos 5.5 (zu sehen an el5_5 in der Paketversion).

    Fügen Sie Centos 5.5 Repositorys hinzu (andere Repositorys für CentOS können auf gleiche Weise hinzugefügt werden, indem "5.5" mit der entsprechenden Versions-ID ersetzt wird):

    ~# echo http://vault.centos.org/5.5/os/x86_64 >> /vz/template/centos/5/x86_64/config/os/default/repositories
        ~# echo http://vault.centos.org/5.5/updates/x86_64 >> /vz/template/centos/5/x86_64/config/os/default/repositories
    

    HINWEIS: Wenn sich viele Repositorys in der Liste befinden, dauert es lange, bis die Metadatenaktualisierung abgeschlossen ist (dieser Vorgang wird jedes Mal nach Erreichen des Ablauftimeout in 24 Stunden durchgeführt). Es wird empfohlen, zusätzliche Repositorys zu entfernen, wenn die Migration durchgeführt wird.

    Aktualisieren Sie nach dem Hinzufügen/Entfernen von Repositorys die Metadaten auf dem Server für das EZ-OS-Template:

    ~# vzpkg update metadata centos-5-x86_64 -r
    

    Danach sollte vzpkg repair in der Lage sein, die nötigen Pakete zu lokalisieren.

    Einige Pakete enthalten die Versions-ID nicht. Für diese Pakete müssen alle verfügbaren Repositorys manuell überprüft werden. Beispiele für solche Pakete sind httpd und mod_ssl.

    Digitale Suffixe wie .2 in der Version .el5_5.2 bedeuten, das diese Versionen in Updates zum gegebenen Release herausgegeben werden.

HINWEIS: Die obige Anleitung funktioniert für Parallels Cloud Server, Parallels Server Bare Metal 5.0 und Parallels Virtuozzo Containers für Linux 4.6, 4.7 mit Containern, die auf EZ-OS-Templates basieren.
Im Hinblick auf vorherige Versionen funktioniert die Anleitung nur für PSBM 4.0 (jüngste Version) und PVCfL 4.0 ab Version 4.0.0-520.
Der Befehl vzpkg repair kann nur verwendet werden, wenn es möglich ist, neue Container basierend auf dem gegebenen OS-Template zu erstellen.

a914db3fdc7a53ddcfd1b2db8f5a1b9c 56797cefb1efc9130f7c48a7d1db0f0c 29d1e90fd304f01e6420fbe60f66f838 a26b38f94253cdfbf1028d72cf3a498b 2897d76d56d2010f4e3a28f864d69223 e8e50b42231236b82df27684e7ec0beb d02f9caf3e11b191a38179103495106f 0dd5b9380c7d4884d77587f3eb0fa8ef c62e8726973f80975db0531f1ed5c6a2

Email subscription for changes to this article
Save as PDF