Vous êtes sur la page 1sur 10

kokou Agbedanou

Gestion des images

1. Introduction

Glance est le module permettant de stocker des images (des modèles) servant à fabriquer des machines
virtuelles. Il stocke donc des images de systèmes d’exploitation ou de modèles préalablement composés
et customisés. C’est un module indispensable.

Glance expose une API RESTful permettant à tout autre service OpenStack de s’y interfacer.

2. Concept

a. Workflow

C’est Nova Compute qui, dans le provisionning de VM, demande à Glance l’image de la VM ; il lui fournit
pour cela le numéro de l’image (image_id).

Nova Compute dialogue alors avec l’API de Glance, plus exactement via la brique glance-api.

Glance API retourne une réponse à Nova Compute si l’image existe.

b. Composants

Pour gérer le catalogue d’images, Glance utilise quatre composants :

ˇ
glance-api : c’est le démon qui gère les requêtes pour la gestion des images. Il permet
notamment d’afficher les images présentes dans le catalogue d’images (glance image-list), de
créer une nouvelle image (glance create) ou de récupérer une image.
ˇ
glance-registry : glance-api dialogue avec glance-registry en charge du stockage et de la
gestion des métadonnées des images (taille, type...).

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -1-
kokou Agbedanou

ˇ
Base de données : la base de données de Glance stocke les métadonnées.
ˇ
Répertoire de stockage : ce répertoire est le lieu de stockage physique des images, sous forme
de fichiers. Les supports de stockage sont nombreux parmi les back-ends suivants : Cinder,
Swift, Ceph, GlusterFS, HTTP ou S3.

Schéma des composants Glance

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -2-
kokou Agbedanou

c. Fonctionnalités de Glance

Glance dispose des fonctionnalités suivantes :

ˇ
Gestion des opérations de CRUD (Create/Read/Update/Delete) sur les images.
ˇ
Gestion des recherches dans les images via des filtres en précisant les informations sur les
éléments suivants :

ˇ
Nom ou format de container

ˇ
Format de disque

ˇ
Taille

ˇ
État

ˇ
Gestion de la mise en cache des images.
ˇ
Utilisation de SQLite ou FS qui supporte xattrs pour le cache.
ˇ
Mise en queue des images avant le prefetching (préchargement).
ˇ
Prefetching des images.
ˇ
Suppression des espaces inutiles des images.
ˇ
Suppression des en-têtes invalides.

d. Formats d’images

Les formats supportés par Glance sont les suivants :

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -3-
kokou Agbedanou

Format Description

RAW Format brut non structuré

VHD Compatible VMware, Xen, Microsoft, VirtualBox

VMDK Format VMware et VirtualBox

VDI VirtualBox, QEMU

ISO Format à l’origine pour disque optique

QCOW2 Format supporté par QEMU

AKI, ARI, AMI Formats Amazon

Le format le plus supporté est le format QCOW2, format natif de l’hyperviseur KVM.

3. Architecture

a. Modèle de données

Glance dispose de sa propre base de données ; la base s’appelle Glance et comporte 13 tables dont la
plus importante est la table "images".

Cette table comprend les informations suivantes par image stockée :

ˇ
id de l’image : numéro de l’image.
ˇ
name : nom de l’image (ex : cirros-0.3.3-x86_64).
ˇ
size : taille de l’image (en octets).

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -4-
kokou Agbedanou

ˇ
status (active/queued) : statut de l’image.
ˇ
disque_format (QCOW2, ...) : format de l’image.
ˇ
owner : propriétaire de l’image (un id).

b. Tables de la base de données Glance

Toutes les informations nécessaires à la gestion de Glance sont stockées en base de données.

La liste des tables de Glance est fournie à l’aide d’une connexion MySQL :

# mysql -u root p
> use glance;
show tables;
+----------------------------------+
| Tables_in_glance |
+----------------------------------+
| image_locations |
| image_members |
| image_properties |
| image_tags |
| images |
| metadef_namespace_resource_types |
| metadef_namespaces |
| metadef_objects |
| metadef_properties |
| metadef_resource_types |
| migrate_version |
| task_info |
| tasks |
+----------------------------------+

4. Services de back-end (store adapter)

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -5-
kokou Agbedanou

Les images sont stockées dans des back-ends de technologies différentes :

ˇ
S3 store (stockage type AWS)
ˇ
Swift store (stockage objet)
ˇ
Filesystem
ˇ
HTTP store
ˇ
Ceph Store

5. Commandes Glance

Commande Utilité Exemple

glance image- Création glance image-create


create d’image [--id <IMAGE_ID>] [--name <NAME>]
[--store <STORE>][--disk-format <DISK_FORMAT>]
[--container-format <CONTAINER_FORMAT>]
[--owner <TENANT_ID>] [--size <SIZE>]
[--min-disk <DISK_GB>] [--min-ram <DISK_RAM>]
[--location <IMAGE_URL>] [--file <FILE>]
[--checksum <CHECKSUM>] [--copy-from <IMAGE_URL>]
[--is-public {True,False}] [--human-readable]
[--is-protected {True,False}] [--progress]
[--property <key=value>]

glance image- Suppression glance image-delete <IMAGE> [< IMAGE> ...]


delete d’image

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -6-
kokou Agbedanou

glance image- Affichage de glance image-list


list la liste des [--name <NAME>] [--status <STATUS>]
images du [--container-format <CONTAINER_FORMAT>]
catalogue [--disk-format <DISK_FORMAT>] [--size-min <SIZE>]
[--size-max <SIZE>] [--property-filter <KEY=VALUE>]
[--page-size <SIZE>] [--human-readable]
[--sort-key {name, status, container_format,
disk_format, size, id, created_at, updated_at}]
[--sort-dir {asc,desc}] [--is-public {True,False}]
[--owner <TENANT_ID>] [--all-tenants]

glance image- Téléchargement glance image-download


download d’une image [--file <FILE>] [--progress] <IMAGE>

glance image- Mise à jour glance image-update


update d’une image [--name < NAME> ] [--disk-format < DISK_FORMAT> ]
[--container-format < CONTAINER_FORMAT> ]
[--owner < TENANT_ID> ] [--size < SIZE> ]
[--min-disk < DISK_GB> ] [--min-ram < DISK_RAM> ]
[--location < IMAGE_URL> ] [--file < FILE> ]
[--checksum < CHECKSUM> ] [--copy-from < IMAGE_URL> ]
[--is-public {True,False}] [--is-protected
{True,False}] [--property < key=value> ]
[--purge-props] [--human-readable]
[--progress] < IMAGE>

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -7-
kokou Agbedanou

glance image- Affichage des glance image-show


show informations [--human-readable]
sur l’image [--max-column-width <integer>] <IMAGE>

glance Partage d’une glance member-create


member-create image avec [--can-share] < IMAGE> < TENANT_ID>
un tenant

glance Suppression glance member-delete <IMAGE> < TENANT_ID>


member-delete du partage
d’une image
avec un
tenant

glance Affichage des glance member-list


member-list permissions [--image-id <IMAGE_ID>] [--tenant-id <TENANT_ID>]
par image ou
tenant

6. Fabrication de modèles

La fabrication de modèles d’images est une étape très importante car cela conditionne le contenu du
catalogue de services.

a. Méthodologie

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -8-
kokou Agbedanou

La méthodologie est la suivante, quel que soit l’hyperviseur :

ˇ
Création d’une machine virtuelle à partir du système d’exploitation voulu.
ˇ
Customisation (ajout d’application, ajout de middleware...).
ˇ
Préparation de la VM pour qu’elle serve à fabriquer un modèle (seeling) ; c’est l’action de sceller
ou anonymiser la VM.
ˇ
Création du modèle à partir de la VM de base.

b. Images cloud

Il existe de nombreuses images disponibles sur Internet et qui sont préparées pour le cloud :

ˇ
Ubuntu cloud images : https://cloud-images.ubuntu.com/ ou http://uec-images.ubuntu.com
ˇ
Fedora cloud images : https://www.rdoproject.org/Image_resources

c. Fabriques d’images cloud

Des logiciels permettent également de créer des images cloud :

ˇ
Oz (https://github.com/clalancette/oz/wiki)

Oz est un outil en ligne de commande permettant de créer de façon très automatisée des
images avec des systèmes d’exploitation sous RHEL/CentOS, Fedora, Windows, OpenSUSE,
Debian, Ubuntu, Mandriva, FreeBSD.

La manipulation est décomposée en trois temps : installation minimale du système et


démarrage sous un invité KVM, customisation du système (par exemple, ajout de packages via
yum, apt-get, ...) et génération d’un manifest sous XML en post installation.

ˇ
BoxGrinder (http://www.boxgrinder.org)

BoxGrinder permet de créer des appliances Fedora, RHEL ou CentOS. Cependant, comme la
dernière version stable date du mois d’août 2012, il semble que le produit ne soit plus vraiment
vivant.

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou -9-
kokou Agbedanou

ˇ
Suse Studio (https://susestudio.com)

Suse Studio est une application web permettant de créer et tester des applications dans un
navigateur. Le produit supporte la création d’images compatibles OpenStack. Le système
d’exploitation est basé sur SUSE Linux Enterprise et OpenSUSE.

ˇ
Aeolus image factory (http://imgfac.org/)

Cette fabrique d’images utilise Oz pour créer, convertir et uploader des images chez les cloud
providers.

d. Exemple de création d’un modèle Linux pour RHEV-M

La méthodologie de création d’un modèle d’image pour l’environnement cible RHEV-M est décrite dans
l’annexe à la section Création de modèles d’images Linux pour RHEV-M.

7. Exemples d’upload d’image

Pour uploader l’image fedora-20.x86_64.qcow2 (disponible sur http://cloud.fedoraproject.org) et qui va


s’appeler Fedora 20 x86_64 dans la base Glance, il faut lancer la commande suivante sur le serveur
contrôleur :

# glance image-create --name 'Fedora 20 x86_64' --disk-format


qcow2 --container-format bare --is-public true --copy-from
http://cloud.fedoraproject.org/fedora-20.x86_64.qcow2

© Editions ENI - Tous droits réservés - Copie personnelle de kokou Agbedanou - 10 -

Vous aimerez peut-être aussi