\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{ven. janv. 16 22:34:37 CET 2015}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={qemu-img},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Permet de créer, convertir et modifier des images offline.},
CreationDate={D:20150116223437},
ModDate={D:20150116223437},
Keywords={Virtualisation;storages}
}}
\begin{document}
 
\begin{center}
{\Huge qemu-img }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Permet de créer, convertir et modifier des images offline.}
 
\vspace{10mm}
 
\vspace{1cm}{\huge OPTIONS }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} check \texttt{[}-q\texttt{]} \texttt{[}-f fmt\texttt{]} \texttt{[}--output=ofmt\texttt{]} \texttt{[}-r \texttt{[}leaks | all\texttt{]}\texttt{]} filename]{}
\item[\hspace{1mm} create \texttt{[}-q\texttt{]} \texttt{[}-f fmt\texttt{]} \texttt{[}-o options\texttt{]} filename \texttt{[}size\texttt{]}]{}
\item[\hspace{1mm} commit \texttt{[}-q\texttt{]} \texttt{[}-f fmt\texttt{]} \texttt{[}-t cache\texttt{]} filename]{}
\item[\hspace{1mm} compare \texttt{[}-f fmt\texttt{]} \texttt{[}-F fmt\texttt{]} \texttt{[}-p\texttt{]} \texttt{[}-q\texttt{]} \texttt{[}-s\texttt{]} filename1 filename2]{}
\item[\hspace{1mm} convert \texttt{[}-c\texttt{]} \texttt{[}-p\texttt{]} \texttt{[}-q\texttt{]} \texttt{[}-n\texttt{]} \texttt{[}-f fmt\texttt{]} \texttt{[}-t cache\texttt{]} \texttt{[}-O output\_fmt\texttt{]} \texttt{[}-o options\texttt{]} \texttt{[}-s snapshot\_id\_or\_name\texttt{]} \texttt{[}-l snapshot\_param\texttt{]} \texttt{[}-S sparse\_size\texttt{]} filename \texttt{[}filename2 \texttt{[}...\texttt{]}\texttt{]} output\_filename]{}
\item[\hspace{1mm} info \texttt{[}-f fmt\texttt{]} \texttt{[}--output=ofmt\texttt{]} \texttt{[}--backing-chain\texttt{]} filename]{}
\item[\hspace{1mm} map \texttt{[}-f fmt\texttt{]} \texttt{[}--output=ofmt\texttt{]} filename]{}
\item[\hspace{1mm} snapshot \texttt{[}-q\texttt{]} \texttt{[}-l | -a snapshot | -c snapshot | -d snapshot\texttt{]} filename]{}
\item[\hspace{1mm} rebase \texttt{[}-q\texttt{]} \texttt{[}-f fmt\texttt{]} \texttt{[}-t cache\texttt{]} \texttt{[}-p\texttt{]} \texttt{[}-u\texttt{]} -b backing\_file \texttt{[}-F backing\_fmt\texttt{]} filename]{}
\item[\hspace{1mm} resize \texttt{[}-q\texttt{]} filename \texttt{[}+ | -\texttt{]}size]{}
\item[\hspace{1mm} amend \texttt{[}-q\texttt{]} \texttt{[}-f fmt\texttt{]} -o options filename]{}
\end{description}
 
\vspace{1cm}{\huge Paramètres }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} filename]{Nom du fichier}
\item[\hspace{1mm} fmt]{Format de l'image}
\item[\hspace{1mm} --backing-chain]{énumère les informations sur les fichiers dans une chaine d'image disque.}
\item[\hspace{1mm} size]{Taille du fichier en octets. Supporte les suffixes "k" or "K" (kilobyte, 1024) "M" (megabyte, 1024k), "G" (gigabyte, 1024M) et T (terabyte, 1024G). "b" est ignoré}
\item[\hspace{1mm} output\_filename]{Nom de destination du disque}
\item[\hspace{1mm} output\_fmt]{Format de destination}
\item[\hspace{1mm} options]{Liste séparé par des ',' d'options sous la forme nom=valeur. Utiliser "-o ?" pour les options supportées par le format utilisé.}
\item[\hspace{1mm} snapshot\_param]{Est le paramètre utilisé pour le snapshot intern, le format est 'snapshot.id=[ID],snapshot.name=[NAME]' ou '[ID\_OR\_NAME]'}
\item[\hspace{1mm} -c]{L'image doit être compressée(qcow only)}
\item[\hspace{1mm} -h]{Affiche les formats supportés}
\item[\hspace{1mm} -p]{Affiche une barre de progression}
\item[\hspace{1mm} -q]{Mode silencieux. N'affiche que les erreurs.}
\item[\hspace{1mm} -S size]{Indique le nombre consécutif d'octets qui doivent contenir seulement des 0 pour créer une image sparse durant la conversion.}
\item[\hspace{1mm} -t cache]{Spécifie le mode du cache à utiliser avec le fichier de destination.}
\end{description}
 
\vspace{1cm}{\huge Paramètres pour la commande snapshot }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} snapshot]{est le nom du snapshot à créer, appliquer ou supprimer}
\item[\hspace{1mm} -a]{Applique un snapshot (revient à l'état sauvegardé )}
\item[\hspace{1mm} -c]{Crée un snapshot}
\item[\hspace{1mm} -d]{Supprime un snapshot}
\item[\hspace{1mm} -l]{Liste tous les snapshot dans l'image donné}
\end{description}
 
\vspace{1cm}{\huge Paramètres pour pour la commande compare }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -f]{Premier format d'image}
\item[\hspace{1mm} -F]{Second format d'image}
\item[\hspace{1mm} -s]{Mode strict - échoue sur une taille d'image différente ou une allocation de secteur différent}
\end{description}
 
\vspace{1cm}{\huge Paramètres pour pour la commande convert }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm}  -n]{Saute la création du volume cible}
\end{description}
 
\vspace{1cm}{\huge Description de commande }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} check \texttt{[}-f fmt\texttt{]} \texttt{[}--output=ofmt\texttt{]} \texttt{[}-r \texttt{[}leaks | all\texttt{]}\texttt{]} filename]{Effectue une vérification de consistante sur l'image disque filename. La commande peut sortir dans le format ofmt qui est soit "human" soit "json". Si "-r" est spécifié, qemu-img tente de réparer les inconsistances. "-r leaks" répare seulement les clusters perdus, "-r all" fixe toutes les erreurs. Seul les formats qcow2, qed, et vdi supportent la vérification de consistance. Dans le cas où l'image a des inconsistances, la vérification quitte avec 0. D'autres codes se sortie indique le type d'inconsistance:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} 0]{Vérification complète, l'image est consistante}
\item[\hspace{6mm} 1]{Vérification non complète à cause d'erreurs interne}
\item[\hspace{6mm} 2]{Vérification complète, l'image est corrompue}
\item[\hspace{6mm} 3]{Vérification complète, l'image a des clusters perdus, mais n'est pas corrompue}
\item[\hspace{6mm} 63]{La vérification n'est pas supportée par le format de l'image.}
\end{description}
 
\hspace{1mm}  Si "-r" est spécifié, les codes de sortie représentant l'état de l'image réfère à l'état après sa réparation.
\vspace{5mm} \\
 
 
\hspace{1mm}  \textbf{create [-f fmt] [-o options] filename [size]}
\vspace{5mm} \\
\hspace{1mm}  Crée la nouvelle image disque à la taille et au format spécifié. En fonction du format, des options sont disponibles.
\vspace{5mm} \\
 
 
\hspace{1mm}  Si l'option backing\_file est spécifié, l'image enregistrera seulement les différence depuis le backing\_file. Aucune taille n'est nécessaire dans ce cas. backing\_file ne sera jamais modifié sauf si vous utilisez qemu-img commit ou la commande monitor commit.
\vspace{5mm} \\
 
 
\hspace{1mm}  La taille peut également être spécifiée en utilisant l'option taille avec -o, qui n'a pas besoin d'être spécifiée séparemment dans ce cas.
\vspace{5mm} \\
 
 
\hspace{1mm}  \textbf{commit [-f fmt] [-t cache] filename}
\vspace{5mm} \\
\hspace{1mm}  Envoie les changements enregistrés dans le fichier spécifié dans son image de base. Si le fichier de base est plus petite que le snapshot, alors le backing file sera redimmensionné à la même taille que le snapshot. Si le snapshot est plus petit que le backing file, ce dernier ne sera pas tronqué. Si vous voulez que le backing file matche la taille du plus petit snapshot, pour pouvez le tronquer vous-même une fois le commit effectué.
\vspace{5mm} \\
 
 
\hspace{1mm}  \textbf{compare [-f fmt] [-F fmt] [-p] [-s] [-q] filename1 filename2}
\vspace{5mm} \\
\hspace{1mm}  Vérifie si les 2 images ont le même contenu. Vous pouvez comparer les images avec différents formats ou paramètres. Le format est sondé sauf si -f et/ou -F sont utilisés.
\vspace{5mm} \\
 
 
\hspace{1mm}  Par défaut, les images avec une taille différente sont considérés identique si la plus grande image ne contient seulement des secteurs non-alloués ou remplis de 0 à la fin de l'image. En plus, si un secteur n'est pas alloué dans une image et contient seulement des 0 dans l'autre, il est évalué identique. Vous pouvez utiliser le mode strict en spécifiant l'option -s, ce qui fait échouer dans le cas où le taille des images diffèrent ou si un secteur est alloué dans une image et pas dans l'autre.
\vspace{5mm} \\
 
 
\hspace{1mm}  compare quitte avec le code de sortie 0 si les images sont identiques, et 1 sinon. D'autres codes de sortie signifient que des erreurs ont été rencontrés:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} 0]{Les images sont identiques}
\item[\hspace{1mm} 1]{Les images diffèrent}
\item[\hspace{1mm} 2]{Erreur en ouvrant une image}
\item[\hspace{1mm} 3]{Erreur en vérifiant une allocation de secteur}
\item[\hspace{1mm} 4]{Erreur en lisant les données}
\end{description}
 
\hspace{1mm}  \textbf{convert [-c] [-p] [-n] [-f fmt] [-t cache] [-O output\_fmt] [-o options] [-s snapshot\_id\_or\_name] [-l snapshot\_param] [-S sparse\_size] filename [filename2 [...]] output\_filename}
\vspace{5mm} \\
\hspace{1mm}  convertis l'image disque filename ou un snapshot snapshot\_param en image disque output\_filename en utilisant le format output\_fmt. Peut optionnellement être compressé (-c) ou chiffré, en fonction du format.
\vspace{5mm} \\
 
 
\hspace{1mm}  Seul les formats qcow et qcow2 supportent la compression. La compression est lecture seul. Cela signifie que si un secteur compressé est réécrit, la réécriture sera une donnée non compressée. La conversion d'image est également utile pour obtenir des images plus petites en utilisant un format scalaire tel que qcow ou cow: les secteurs vides sont détectés et supprimés de l'image de destination. backing\_file permet de forcer l'image de sortie à être créée en copie de l'image de base. le backing\_file devrait avoir le même contenu que l'image de base de l'entrée, cependant le chemin, le format, etc. peuvent différer. Si -n est spécifié, la création du volume cible sera ignoré. C'est utile pour des formats tels que rbd si le volume cible a déjà été créé avec les options spécifique du site qui ne peuvent pas être fournis par qemu-img.
\vspace{5mm} \\
 
 
\hspace{1mm}  \textbf{info [-f fmt] [--output=ofmt] [--backing-chain] filename}
\vspace{5mm} \\
\hspace{1mm}  Donne des informations sur l'image disque. À utiliser en particulier pour connaître a taille réservée dans le disque qui peut être différent de la taille affichée. Si les snapshot sont stoqués dans l'image disque, elle peuvent être affichées également. La commande peut afficher dans le format ofmt qui est soit "human" soit "json".
\vspace{5mm} \\
 
 
\hspace{1mm}  Si une image diques a une chaîne backing file, les informations sur chaque image disque dans la chaîne peuvent être récursivement énumérés en utilisant l'option --backing-chain.
\vspace{5mm} \\
 
 
\hspace{1mm} Si vous avez un chaîne d'image: \\
\hspace{1mm} \textbf{base.qcow2 <- snap1.qcow2 <- snap2.qcow2} \\
\hspace{1mm} Pour énumérer les informations sur chaque image disque: \\
\hspace{1mm} \textbf{qemu-img info --backing-chain snap2.qcow2} \\
 
\hspace{1mm}  \textbf{map [-f fmt] [--output=ofmt] filename}
\vspace{5mm} \\
\hspace{1mm}  Dump les méta-données de l'image et sa chaîne de backing\_file. En particulier, cette commande dump l'état d'allocation de tous les secteurs de filename, ensemble avec le fichier le plus haut dans la chaîne. 2 formats d'options sont possibles. Le format par défaut ('human') dumps seulement les aires non-zero du fichier. Ces parties du fichier sont omis, de même pour les parties qui ne sont pas allouées le long de la chaîne. La sortie de qemu-img va identifier un fichier d'où le donnée peuvent être lues, et l'adresse dans le fichier. Chaque linge va inclure 4 champs, les 3 premiers sont un héxa.
\vspace{5mm} \\
 
 
\hspace{1mm} Par exemple: \\
\hspace{1mm} \textbf{Offset Length Mapped to File} \\
\hspace{1mm} \textbf{0 0x20000 0x50000 /tmp/overlay.qcow2} \\
\hspace{1mm} \textbf{0x100000 0x10000 0x95380000 /tmp/backing.qcow2} \\
 
\hspace{1mm}  signifie que les octets 0x20000 (131072) commençant à l'offset 0 dans l'image sont disponibles dans /tmp/overlay.qcow2 (ouvert en format raw) commençant à l'offset 0x50000 (327680). Les données qui sont compressées, chiffrée ou autre ne sont pas disponible dans le format brute et vont générer des erreur pour le format "human". Notez que les noms de fichiers peuvent inclure des sauts de ligne, ce qui n'est pas sûr pour analyser ce format de sortie dans les scripts.
\vspace{5mm} \\
 
 
\hspace{1mm}  Le format alternatif json retourne un tableau de dictionnaires au format json. Il va inclure des information similaires dans les champs start, length et offset; il inclus également d'autres informations plus spécifiques:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} -]{Si les secteurs contient une donnée ou non (data); si false, les secteurs sont soit non alloués, ou remplis de 0.}
\item[\hspace{1mm} -]{Si La données est 0 (zero)}
\item[\hspace{1mm} -]{Pour raccourcir la sortie, le fichier cible est exprimmé en depth, par exemple, une profondeur de 2 réfère au backing file du backing file de filename.}
\end{description}
 
\hspace{1mm}  \textbf{snapshot [-l | -a snapshot | -c snapshot | -d snapshot ] filename}
\vspace{5mm} \\
\hspace{1mm}  Liste, applique, créer, ou supprime un snapshot de l'image filename.
\vspace{5mm} \\
 
 
\hspace{1mm}  \textbf{rebase [-f fmt] [-t cache] [-p] [-u] -b backing\_file [-F backing\_fmt] filename}
\vspace{5mm} \\
\hspace{1mm}  Change le backing file au backing\_file et (si le format de l'image de filename le supporte) le format du backing file est changé en backing\_fmt. Si backing\_file est spécifié "", l'image est rebasé dans aucun backing file ( ex: elle va exister indépendamment de tout backing file).
\vspace{5mm} \\
\hspace{1mm}  Il y a 2 modes différents dans lequel "rebase" peut opérer:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} safe mode]{C'est le mode par défaut et effectue une opération de rebase réel. Le nouveau backing file peut différer de l'ancien et qemu-img rebase va s'occuper de conserver inchangé le contenu visible à l'invité de filename. Pour cela, tous les clusters qui diffèrent entre backing\_file et l'ancien backing file de filename sont fusionné dans filename avant de changer de backing file. Noter que le safe mode est plus coûteux, comparable à convertir une image. Ne fonctionne que si l'ancien backing file existe.}
\item[\hspace{1mm} unsafe mode]{qemu-img utilise le mode unsafe si -u est spécifié. Dans ce mode, seul en nom du backing file et le format de filename sont changés sans vérification du contenu du fichier. L'utilisateur doit spécifier le nouveau backing\_file correcte, ou le contenu visible de l'invité de l'image sera corrompue. Ce mode est utile pour renommer ou déplacer le backing file ailleurs. Il peut être utilisé sans ancien backing file, par ex, on peut l'utiliser pour fixer un image dont le backing file a déjà été déplacé/renommé.}
\end{description}
 
\hspace{1mm}  rebase peut être utilisé pour effectuer une opération diff dans 2 images disque. Cela peut être utile quand un invité est copié ou cloné
\vspace{5mm} \\
 
 
\hspace{1mm} Disons que base.img a été clonée en modified.img en la copiant, et cet invité modified.img a été lancé donc il y a quelques changements comparés à base.img. Pour construire une petite image appelée diff.cqow2 qui contient seulement la différence: \\
\hspace{1mm} \textbf{qemu-img create -f qcow2 -b modified.img diff.qcow2} \\
\hspace{1mm} \textbf{qemu-img rebase -b base.img diff.qcow2} \\
\hspace{1mm} modified.img peut être supprimé, vu que base.img + diff.qcow2 contient la même information. \\
 
\hspace{1mm}  \textbf{resize filename [+ | -]size}
\vspace{5mm} \\
\hspace{1mm}  Change l'image disque comme si elle avait été créée avec la taille donnée. Avant d'utiliser cette commande pour réduire une image disque, vous devez utiliser les outils de système de fichier et de partitionnement dans la VM pour réduires les tailles alloués aux systèmes de fichiers et partitions, sinon des données seront perdues. Après avoir utilisé cette commande pour agrandir une image disque, vous devez utiliser les outils de partitionnement et de systèmes de fichiers dans la v pour utiliser le nouvel espace disque.
\vspace{5mm} \\
 
 
\hspace{1mm}  \textbf{amend [-f fmt] -o options filename}
\vspace{5mm} \\
\hspace{1mm}  Modifie les options spécifiques au format de l'image. Tous les formats ne supportent pas cette opération.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Notes }
 
\
 
\hspace{1mm}  Les formats d'image suivant sont supportés:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} raw]{Format d'image brute, il a l'avantage d'être simple et facilement exportable à d'autres émulateurs.}
\item[\hspace{1mm} qcow2]{Format d'image qemu, le format le plus verstatile. Il a les images les plus petites, supporte le chiffrement, la compression et les snapshots multiples.}
\end{description}
 
\vspace{1cm}{\huge Options du format qcow2 }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} compat]{Détermine la version qcow2 à utiliser. compat=0.10 utilise le format traditionnel qui peut être lu par tous les qemu. compat=1.1 active les extensions du format.}
\item[\hspace{1mm} backing\_file]{Nom d'une image de base}
\item[\hspace{1mm} backing\_fmt]{Formate de l'image de base}
\item[\hspace{1mm} encryption]{Active le chiffrement 128-bits AES-CBC}
\item[\hspace{1mm} cluster\_size]{Change la taille de cluster ( doit être entre 512 et 2M). Les petites taille améliorent la taille de l'image, et les plus grandes taille améliorent les performance.}
\item[\hspace{1mm} preallocation]{(off, full, falloc, metadata). Alloue tout l'espace disque. Améliore les performances.}
\item[\hspace{1mm} lazy\_refcounts]{à on, Les updates de comptage de référence sont reportés pour éviter les E/S de méta-données et améliorer les performances. Intéressant avec cache = writethrough. Le compromis est qu'après un crash d'hôte, les tables de comptage de référence doivent être reconstruites, qemu-img check -r all est requis et peut prendre du temps.}
\item[\hspace{1mm} nocow]{A on, désactive le COW du fichier. Seulement valide sur brtfs.}
\end{description}
\end{flushleft}
\end{document}
