Importer manuellement des disques virtuels

Pour importer des images de disque de démarrage dans Compute Engine depuis des centres de données physiques, depuis des machines virtuelles (VM) exécutées sur un poste de travail local ou depuis des machines virtuelles exécutées sur une autre plate-forme cloud, nous vous recommandons d'utiliser l'outil d'importation de disque virtuel, qui automatise toutes les étapes de ce guide.

Si vous préférez ne pas utiliser l'outil automatisé, suivez les instructions détaillées de ce guide.

Ce processus d'importation d'images ne permet d'importer qu'un seul disque à la fois. Ce guide explique comment importer des images de disque de démarrage.

Vous ne devez importer vos disques de démarrage existants que si vous ne parvenez pas à créer ou migrer vos applications pour qu'elles s'exécutent sur les images publiques Compute Engine. Les images publiques sont déjà configurées pour s'exécuter dans l'environnement Compute Engine. Vous pouvez donc exécuter des applications sur ces images sans vous soucier de la configuration du bootloader et du système d'exploitation. Toutefois, il sera peut-être nécessaire d'importer vos images de disque de démarrage dans les scénarios suivants :

  • Vos applications requièrent un système d'exploitation qui n'est pas fourni en tant qu'image publique.
  • Vous disposez déjà d'un ensemble d'images de base que vous utilisez pour créer des VM sur une autre plate-forme cloud.
  • La charge de travail nécessaire pour migrer le code de l'application vers l'une des images publiques est supérieure à celle requise pour procéder à l'importation de l'image du disque de démarrage.

Vous pouvez également obtenir de l'aide pour migrer vos VM en sollicitant les services partenaires. Pour en savoir plus, consultez la section Migrer des VM vers Compute Engine.

Présentation

Procédez comme suit pour importer une image de disque de démarrage dans Compute Engine :

  1. Planifiez le chemin d'importation. Vous devez déterminer où vous allez préparer l'image de disque de démarrage avant de la mettre en ligne et comment vous vous y connecterez après qu'elle a été démarrée dans l'environnement Compute Engine.
  2. Préparez votre disque de démarrage afin qu'il puisse démarrer dans l'environnement Compute Engine et qu'il soit accessible après le démarrage.
  3. Créez et compressez le fichier de l'image de disque de démarrage.
  4. Mettez le fichier image en ligne sur Cloud Storage et importez l'image dans Compute Engine en tant que nouvelle image personnalisée.
  5. Utilisez l'image importée pour créer une instance de VM et assurez-vous qu'elle démarre correctement.
  6. Si l'image importée ne démarre pas correctement, vous pouvez résoudre le problème en associant l'image de disque de démarrage à une autre instance et en la reconfigurant.
  7. Optimisez l'image et installez l'environnement invité afin que l'image importée de votre système d'exploitation puisse communiquer avec le serveur de métadonnées et utiliser des fonctionnalités supplémentaires de Compute Engine.

Exigences

Exigences concernant le disque de démarrage

Pour importer des disques de démarrage dans Compute Engine, ceux-ci doivent répondre aux exigences suivantes :

  • Si vous avez créé un noyau de système d'exploitation personnalisé, celui-ci doit répondre aux exigences de configuration matérielle et de noyau. Comme la plupart des distributions Linux existantes répondent déjà à ces exigences, ce point concerne uniquement les utilisateurs avancés qui créent des systèmes d'exploitation personnalisés destinés à s'exécuter sur Compute Engine.
  • La taille du disque de démarrage ne doit pas dépasser 2 048 Go (2 To).
  • Le disque de démarrage que vous importez doit être doté d'une table de partitionnement MBR fonctionnelle ou d'une configuration hybride alliant table de partitionnement GPT et bootloader MBR.
  • La partition primaire du disque de démarrage peut être d'un format quelconque, sous réserve qu'elle démarre correctement dans le bootloader MBR.
  • Le bootloader sur le disque de démarrage ne doit pas contenir les arguments de ligne de commande du noyau quiet, rhgb ni splashimage=. Compute Engine n'est pas compatible avec les écrans d'accueil au démarrage. Vous pouvez supprimer ces valeurs de la configuration GRUB à l'étape de configuration du bootloader.
  • Le système d'exploitation sur le disque de démarrage doit être compatible avec la norme ACPI.

Exigences concernant le fichier image

Le fichier image que vous importez doit répondre aux exigences suivantes :

  • Le fichier image doit être une image compatible.
  • Le fichier image du disque doit s'appeler disk.raw.
  • La taille du fichier image RAW doit être incrémentée par paliers de 1 Go. Par exemple, le fichier peut faire 10 Go ou 11 Go, mais pas 10,5 Go.
  • Le fichier compressé doit être un fichier .tar.gz utilisant la compression gzip et l'option --format=oldgnu pour l'utilitaire tar (manuel).

Exigences concernant le projet

Lorsque vous créez une instance de VM à partir d'une image importée, cette instance doit pouvoir accéder au dépôt de packages externe du système d'exploitation configuré sur le disque de démarrage.

Vous pouvez accéder à ce dépôt directement auprès du fournisseur du système d'exploitation ou via une connexion réseau à votre infrastructure sur site qui héberge ces dépôts.

Pour configurer l'accès au dépôt externe, effectuez l'une des étapes suivantes dans votre projet :

Frais d'importation d'images

Avant de commencer, prenez en considération les frais liés au processus d'importation. L'entrée réseau pour le transfert de votre image de disque de démarrage sur Cloud Storage et l'importation de cette image en tant qu'image personnalisée Compute Engine sont des opérations gratuites. Cependant, certaines étapes du processus d'importation entraînent des frais :

  • Les frais associés au stockage temporaire de vos fichiers d'image compressés dans un bucket standard Cloud Storage. Vous devez utiliser un bucket Cloud Storage temporaire pour stocker vos fichiers avant de les importer en tant qu'images personnalisées Compute Engine. Une fois le processus d'importation terminé, vous pourrez supprimer le bucket.
  • Les frais associés au stockage des images personnalisées, après leur importation dans Compute Engine.
  • Les frais potentiels liés à la sortie de données (via le centre de données, le fournisseur réseau ou le service cloud que vous utilisez actuellement). Les fichiers image peuvent être très volumineux, même après avoir été compressés. Par conséquent, leur copie sur Compute Engine peut entraîner des frais de sortie significatifs sur certaines plates-formes.
  • Le coût des disques persistants et des instances de VM Compute Engine permettant de configurer une image après l'avoir importée dans Compute Engine.

Planifier et préparer votre chemin d'importation

La méthode d'importation de disque que vous choisirez dépend de la configuration actuelle du système que vous souhaitez déplacer vers Compute Engine. Vous aurez besoin d'un système sur lequel créer et compresser le fichier de l'image de disque de démarrage, ainsi que d'un système permettant de transférer le fichier image sur Cloud Storage. Vous devez prendre en compte les éléments suivants pour planifier votre chemin d'importation :

  • Le chemin d'importation d'image nécessite que le disque de démarrage soit configuré sur un environnement de système d'exploitation opérationnel. L'importation peut empêcher le disque de démarrage de démarrer en dehors d'un environnement Compute Engine. Vous êtes responsable en cas de perte de données sur vos disques ou d'interruption de vos applications d'entreprise fonctionnelles lors de l'importation de votre système dans Compute Engine.
  • Déterminez quelle est la configuration existante de vos accès système et planifiez comment vous voulez accéder au système après l'avoir importé dans Compute Engine.
    • Si votre système possède des connexions utilisateur ou des configurations SSH existantes, vous pouvez ne configurer que le bootloader dans un premier temps et configurer l'image ultérieurement pour qu'elle s'exécute de manière optimale sur Compute Engine. Vous pouvez accéder à l'instance via votre configuration SSH existante ou via une connexion utilisateur directe dans la console série interactive.
    • Si votre système ne possède ni connexion utilisateur existante, ni configuration SSH, vous devez configurer le disque de démarrage de manière à pouvoir y accéder après son démarrage dans Compute Engine.
  • Le processus d'importation peut prendre plusieurs heures, voire plusieurs jours, selon la taille de votre disque de démarrage et la vitesse de votre connexion réseau.
  • Le système sur lequel vous créez et compressez votre image de disque de démarrage doit présenter un espace de stockage suffisant pour créer les fichiers image sur un appareil de stockage autre que le disque de démarrage lui-même. De manière générale, vos fichiers image et tar.gz occupent deux à trois fois plus d'espace que le disque de démarrage lui-même
  • Vous devez connaître la structure du système de fichiers du système existant à importer :
    • Si votre système d'exploitation et vos fichiers d'application sont répartis sur plusieurs disques, importez le contenu de chaque disque individuellement et utilisez chaque image pour créer un disque persistant unique pour votre instance de VM Compute Engine.
    • Si vos systèmes disposent de volumes de démarrage dans une configuration RAID où plusieurs disques constituent un seul volume logique, créez une image unique englobant l'ensemble de la baie de disques plutôt que d'en créer une pour chaque disque de la baie. Les disques persistants Compute Engine évitent de devoir recourir à des configurations RAID.
  • Si votre système chiffre le contenu de votre disque de démarrage avec un module de plate-forme sécurisée ou via un chiffrement logiciel, déchiffrez votre disque de démarrage avant de créer le fichier de l'image de disque de démarrage. Google ne peut pas lire vos images si elles sont chiffrées. Google chiffre vos images après leur transfert, et vous permet de fournir vos propres clés de chiffrement pour vos disques persistants et buckets Cloud Storage.

Après avoir identifié ou créé le système sur lequel finaliser le processus d'importation, connectez-vous à ce système et configurez le bootloader.

Préparer l'image de disque de démarrage

Sur un système en cours d'exécution, préparez l'image de disque de démarrage afin qu'elle puisse fonctionner dans un environnement Compute Engine.

  • Configurez le bootloader sur le disque de démarrage afin que l'image puisse démarrer sur Compute Engine.
  • Configurez une connexion SSH ou une connexion utilisateur sur le disque de démarrage pour pouvoir y accéder après l'importation dans Compute Engine et le démarrer en tant qu'instance de VM.

Ce processus peut empêcher le système de démarrer en dehors de Compute Engine. Il est donc recommandé d'effectuer cette étape sur un système isolé à l'aide d'une copie du disque de démarrage à importer.

Configurer le bootloader

Configurez le bootloader sur le système pour qu'il puisse démarrer sur Compute Engine.

  1. Connectez-vous au terminal du système avec le disque de démarrage que vous prévoyez d'importer.

  2. Modifiez le fichier de configuration GRUB. Généralement, ce fichier se situe sous /etc/default/grub, mais dans certaines distributions plus anciennes, il peut se trouver dans un autre répertoire.

  3. Apportez les modifications suivantes au fichier de configuration GRUB :

    • Supprimez toutes les lignes contenant splashimage=. Compute Engine n'est pas compatible avec les écrans d'accueil au démarrage.
    • Supprimez les arguments de ligne de commande du noyau rhgb et quiet.
    • Ajoutez console=ttyS0,38400n8d aux arguments de ligne de commande du noyau, afin que l'instance puisse interagir avec la console série.
  4. Régénérez le fichier grub.cfg. Utilisez l'une des commandes suivantes en fonction de votre distribution.

    • Debian et Ubuntu : sudo update-grub
    • RHEL, CentOS : sudo grub-mkconfig -o /boot/grub/grub.cfg
    • SUSE, openSUSE : sudo grub2-mkconfig -o /boot/grub/grub.cfg
  5. Modifiez le fichier /etc/fstab et supprimez les références à tous disques et partitions autres que le disque de démarrage et ses partitions. Les entrées non valides dans /etc/fstab peuvent entraîner l'arrêt du processus de démarrage de votre système.

Une fois le bootloader configuré, créez et compressez le fichier image du disque.

Configurer l'accès SSH ou la connexion utilisateur à l'image

Une fois que votre image est exécutée dans Compute Engine en tant qu'instance de VM, vous devez pouvoir y accéder. Vous pouvez vous connecter à l'instance à l'aide d'une configuration SSH existante ou à l'aide d'un nom d'utilisateur et d'un mot de passe, en vous connectant à la console série.

Finalisez la configuration SSH ou la configuration de la connexion utilisateur avant de créer et compresser le fichier image du disque.

Créer et compresser le fichier image du disque

Créez et compressez le fichier de l'image de disque de démarrage pour le système que vous souhaitez importer dans Compute Engine. Le processus de création et de compression du fichier image varie en fonction de la plate-forme d'exécution de vos systèmes.

Processus générique

Vous pouvez utiliser ce processus sur presque tous les systèmes afin de créer un fichier image RAW à importer dans Compute Engine. Vous pouvez terminer ce processus sur le système en cours d'exécution que vous importez, ou bien associer votre disque de démarrage en tant que disque secondaire sur un autre système et créer l'image de disque de démarrage à partir du disque arrêté. Assurez-vous d'avoir suffisamment d'espace de stockage disponible pour stocker temporairement les fichiers image de disque. Dans l'exemple qui suit, l'image est issue d'un système en cours d'exécution.

  1. Connectez-vous au terminal sur le système contenant le disque de démarrage que vous souhaitez importer.

  2. Utilisez la commande lsblk pour identifier le disque de démarrage source à partir duquel vous souhaitez créer une image, ainsi que l'emplacement offrant suffisamment d'espace pour héberger les fichiers image. Pour cet exemple, /dev/sda est le disque de démarrage source et /dev/sdb est un disque volumineux secondaire installé dans le répertoire /tmp. Même lorsque /dev/sda est en cours d'exécution, il est possible d'en faire une image. Il est préférable d'effectuer cette opération sur un système silencieux qui ne traite pas activement les données et qui n'exécute pas vos applications.

    lsblk
    
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0  100G  0 disk
    ├─sda1   8:1    0   96G  0 part /
    ├─sda2   8:2    0    1K  0 part
    └─sda3   8:5    0    4G  0 part [SWAP]
    sdb      8:16   0  500G  0 disk /tmp
    sr0     11:0    1 1024M  0 rom
    
  3. Créez le fichier image à partir de votre disque de démarrage.

    sudo dd if=/dev/sda of=/tmp/disk.raw bs=4M conv=sparse
    
  4. Accédez au répertoire dans lequel vous avez généré le fichier disk.raw.

    cd /tmp
    
  5. Compressez le disque RAW au format tar.gz. Cette étape compresse le fichier image afin que vous puissiez l'importer plus rapidement dans Cloud Storage. Sous OSX, installez gtar et utilisez-le pour cette étape en lieu et place de tar.

    tar --format=oldgnu -Sczf /tmp/compressed-image.tar.gz disk.raw
    

AWS EC2

Si vous importez une instance Amazon EC2, regroupez le volume Amazon EBS à l'aide des outils AMI :

  1. Recherchez et notez votre numéro de compte Amazon sur la console des paramètres du compte.

  2. Sur votre instance Amazon EC2, téléchargez et installez les outils dédiés à l'AMI EC2.

  3. Exécutez l'outil ec2-bundle-vol en tant que racine.

    ec2-bundle-vol -c /tmp/build/cert-[hash].pem \
        -k /tmp/build/pk-[hash].pem -u aws-account-id \
        -r x86_64 --no-filter --exclude /tmp/build \
        --grub-config /tmp/build/menu.lst \
        --fstab /tmp/build/fstab
    

    Remplacez les éléments suivants :

    • cert-[hash].pem : le fichier de certificat.
    • pk-[hash].pem : la clé privée.
    • aws-account-id : votre ID de compte Amazon. Cette commande crée le fichier image.
  4. Compressez le disque RAW au format tar.gz. Cette étape compresse le fichier image afin que vous puissiez l'importer plus rapidement dans Cloud Storage. Sous OSX, installez gtar et utilisez-le pour cette étape en lieu et place de tar.

    sudo tar --format=oldgnu -Sczf /tmp/compressed-image.tar.gz disk.raw
    

VirtualBox

Si vous avez préparé votre système dans un environnement VirtualBox, vous pouvez utiliser l'outil VBoxManage pour convertir une image disque .vdi ou .qcow2 au format disk.raw.

  1. Arrêtez la machine invitée VirtualBox que vous souhaitez importer, en remplaçant guest-name par le nom de votre machine invitée. Vous pouvez arrêter la machine invitée avec l'interface VirtualBox ou à l'aide de l'utilitaire VBoxManage.

    VBoxManage controlvm guest-name acpipowerbutton
  2. Convertissez l'image invitée au format RAW à l'aide de l'utilitaireVBoxManage en remplaçant guest-image par le chemin d'accès à votre image invitée. Cette image invitée peut être fournie sous la forme d'un fichier vdi ou qcow2 :

    VBoxManage clonemedium guest-image ~/disk.raw --format RAW
  3. Compressez le disque RAW au format tar.gz. Cette étape compresse le fichier image afin que vous puissiez l'importer plus rapidement dans Cloud Storage. Sous OSX, installez gtar et utilisez-le pour cette étape à la place de tar.

    sudo tar --format=oldgnu -Sczf /tmp/compressed-image.tar.gz disk.raw
    

Le fichier image est compressé et prêt à être importé dans Cloud Storage.

Importer l'image dans votre liste d'images personnalisées

Transférez le fichier sur Google Cloud Storage et importez l'image dans votre liste d'images personnalisées. Vous pouvez éventuellement chiffrer l'image au cours de son importation.

Importez l'image à l'aide de la console ou des outils du SDK Cloud :

Console

Copiez le fichier compressed-image.tar.gz sur votre poste de travail local et utilisez Cloud Console pour créer un bucket et importer le fichier.

  1. Dans Cloud Console, accédez à la page du navigateur Cloud Storage.

    Accéder à la page du navigateur

  2. En haut de la page, cliquez sur Créer un bucket.
  3. Indiquez un nom de bucket unique, la classe de stockage standard et un emplacement de stockage pour vos fichiers image.
  4. Cliquez sur Créer pour créer le bucket. La page du navigateur vous conduit au bucket créé.
  5. En haut de la page, cliquez sur Importer des fichiers.
  6. Dans la fenêtre de sélection de fichier, cliquez sur le fichier compressed-image.tar.gz que vous avez téléchargé depuis votre système. Le fichier est transféré depuis votre poste de travail local. Cette étape peut prendre plusieurs heures en fonction de la taille de votre fichier image compressé et de la vitesse de votre connexion réseau.

Une fois l'image transférée sur Cloud Storage, importez le fichier image dans votre liste d'images personnalisées.

  1. Dans Cloud Console, accédez à la page Images.

    Accéder à la page Images

  2. En haut de la page, cliquez sur Créer une image.
  3. Dans le champ Nom, spécifiez un nom unique pour l'image.
  4. Vous pouvez également attribuer une famille d'images à votre nouvelle image ou configurer des paramètres de chiffrement spécifiques.
  5. Cliquez sur le menu Source et sélectionnez Fichier Cloud Storage.
  6. Entrez le chemin d'accès au fichier compressed-image.tar.gz que vous avez transféré dans Cloud Storage.

    bucket-name/compressed-image.tar.gz
  7. Cliquez sur le bouton Créer pour importer l'image. Le processus peut prendre plusieurs minutes en fonction de la taille de l'image de disque de démarrage.

La page Images contient désormais l'image. Toutefois, vous devez configurer le bootloader avant de pouvoir utiliser l'image pour créer une instance de VM fonctionnelle.

gcloud and gsutil

Utilisez les outils gsutil et gcloud pour transférer le fichier compressé de l'image de disque de démarrage. Vous pouvez terminer ce processus sur le système où l'image de disque de démarrage a été créée, ou copier ce fichier sur un autre système pour y finaliser l'importation.

  1. Installez et initialisez le SDK Cloud sur le système à partir duquel vous prévoyez d'importer le fichier compressed-image.tar.gz.

  2. Servez-vous de l'outil gsutil pour créer un bucket Cloud Storage.

    gsutil mb gs://bucket-name
  3. Importez le fichier compressed-image.tar.gz dans le nouveau bucket.

    gsutil cp compressed-image.tar.gz gs://bucket-name
  4. Importez le fichier image en tant que nouvelle image personnalisée.

    gcloud compute images create image-name --source-uri gs://bucket-name/compressed-image.tar.gz
    

    Remplacez les éléments suivants :

    • image-name : nom de l'image que vous avez importée.
    • bucket-name : nom du bucket dans lequel l'image importée est stockée.

L'image fait maintenant partie de la liste des images personnalisées mais vous devez configurer le bootloader avant de pouvoir l'utiliser pour créer une instance de VM fonctionnelle.

gcloud compute images list --no-standard-images
NAME                                            PROJECT                  FAMILY                    DEPRECATED  STATUS
[IMAGE_NAME]                                    [PROJECT_ID]                                                   READY

Tester l'image importée pour vous assurer qu'elle fonctionne

Vérifiez que l'image importée fonctionne comme prévu. Créez une instance avec un disque de démarrage utilisant cette image importée.

Console

  1. Dans Cloud Console, accédez à la page Instances de VM.

    Accéder à la page Instances

  2. Cliquez sur le bouton Créer une instance.
  3. Sous Disque de démarrage, cliquez sur Modifier pour commencer à configurer le disque de démarrage.
  4. Dans l'onglet Images personnalisées, sélectionnez l'image que vous avez importée.
  5. Cliquez sur Enregistrer pour confirmer vos options de disque de démarrage.
  6. Cliquez sur le bouton Créer pour créer l'instance.

gcloud

gcloud compute instances create instance-name --zone zone --image image-name

Remplacez les éléments suivants :

  • instance-name : nom unique de l'instance.
  • zone : zone dans laquelle vous avez créé le disque autonome.
  • image-name : nom de l'image que vous avez importée.

Une fois l'instance créée, vérifiez qu'elle a démarré correctement. Vérifiez la sortie du port série :

Console

  1. Dans Cloud Console, accédez à la page Instances de VM.

    Accéder à la page "Instances"

  2. Dans la liste des instances, cliquez sur le nom de l'instance que vous avez créée à partir de l'image importée. La page des détails de l'instance s'affiche.
  3. Dans la section Journaux, cliquez sur le port série approprié pour développer et afficher les données en sortie du port série pour cette instance.

Si l'instance s'est arrêtée sur Booting from Hard Disk 0..., vous devez résoudre les problèmes depuis l'environnement Compute Engine ou reconfigurer le disque de démarrage sur votre système d'origine et répéter le processus d'importation.

gcloud

gcloud compute instances get-serial-port-output instance-name

Si l'instance s'est arrêtée sur Booting from Hard Disk 0..., vous devez résoudre les problèmes depuis l'environnement Compute Engine ou reconfigurer le disque de démarrage sur votre système d'origine et répéter le processus d'importation.

Vous pouvez également tester l'instance en vous y connectant. Connectez-vous à l'instance via l'une de ces deux méthodes :

  • SSH : si l'instance possédait une configuration SSH opérationnelle, vous pouvez vous y connecter en SSH à l'aide de votre clé privée. L'adresse IP de l'instance est accessible sur la page Instances de VM.
  • Console série : si vous devez vous connecter à l'instance directement sans SSH, vous pouvez activer la console série et vous connecter avec un nom d'utilisateur et un mot de passe.

Étape suivante