From a5d9655d45c44db5d8c6ed9e4f32b3054b112030 Mon Sep 17 00:00:00 2001
From: iliya <iliya.saroukhanian@etu.hesge.ch>
Date: Wed, 3 Apr 2024 17:03:57 +0200
Subject: [PATCH] feat: these labs ain't getting shorter ffs

---
 content/04_qemu_advanced.md | 265 ++++++++++++++++++++++++++++++++++++
 1 file changed, 265 insertions(+)

diff --git a/content/04_qemu_advanced.md b/content/04_qemu_advanced.md
index e6536e0..930cc79 100644
--- a/content/04_qemu_advanced.md
+++ b/content/04_qemu_advanced.md
@@ -98,3 +98,268 @@ root::0:0:root:/root:/bin/bash
 fabricebellard::1000:1000:Fabrice Bellard,,,:/home/fabricebellard:/bin/bash
 linustorvalds::1001:1001:Linus Torvalds,,,:/home/linustorvalds:/bin/bash
 ```
+
+## Snapshots
+
+### Démarrez deux VMs à partir d'une seule et même image disque. Que remarquez-vous ? Quel est la raison de ce comportement ?
+
+Il n'est pas possible d'exécuter deux ou plus VMs à partir d'une seule et même
+image disque, car le processus initial (la 1ère VM créée) doit avoir un accès 
+"atomique" au disque, raison pour laquelle le message d'erreur nous dit que le nouveau
+processus n'a pu obtenir le verrou afin d'obtenir un accès en écriture.
+
+```bash
+qemu-system-x86_64: disk_base.qcow: Failed to get "write" lock
+Is another process using the image [disk_base.qcow]?
+```
+
+### Schéma des snapshots
+
+#### Étape 1
+
+```bash
+qemu-img create -F qcow2 -b disk_base.qcow -f qcow2 snap1.qcow
+```
+
+#### Étape 2
+
+Création du fichier `fileA` avec le script `createfile`  en exécutant la VM à
+partir de `snap1`.
+
+```bash
+vm_run -d snap1
+```
+
+Dans la VM :
+
+```bash
+./createfile.sh fileA
+```
+
+#### Étape 3
+
+```bash
+qemu-img create -F qcow2 -b snap1.qcow -f qcow2 snap2.qcow
+```
+
+#### Étape 4
+
+```bash
+qemu-img create -F qcow2 -b snap2.qcow -f qcow2 snap3.qcow
+```
+
+#### Étape 5
+
+Création du fichier `fileB` avec le script `createfile`  en exécutant la VM à
+partir de `snap3`.
+
+```bash
+vm_run -d snap3
+```
+
+Dans la VM :
+
+```bash
+./createfile.sh fileB
+```
+
+#### Étape 6
+
+```bash
+qemu-img create -F qcow2 -b snap2.qcow -f qcow2 snap4.qcow
+```
+
+#### Étape 7
+
+Création du fichier `fileC` avec le script `createfile`  en exécutant la VM à
+partir de `snap4`.
+
+```bash
+vm_run -d snap4
+```
+
+Dans la VM :
+
+```bash
+./createfile.sh fileC
+```
+
+### Vous exécutez une VM sur l'image `snap3`. Quel(s) fichier(s) seront présent(s) ? 
+
+Sur cette image, les fichier `fileA` et `fileB` sont présents.
+
+### Vous exécutez une VM sur l'image `snap4`. Quel(s) fichier(s) seront présent(s) ?
+
+Sur cette image, les fichier `fileA` et `fileC` sont présents.
+
+### Chaîne d'images ayant mené à `snap3` 
+
+```bash
+qemu-img info --backing-chain snap3
+```
+
+```bash
+image: snap3.qcow
+file format: qcow2
+virtual size: 100 GiB (107374182400 bytes)
+disk size: 132 MiB
+cluster_size: 65536
+backing file: snap2.qcow
+backing file format: qcow2
+Format specific information:
+    compat: 1.1
+    compression type: zlib
+    lazy refcounts: false
+    refcount bits: 16
+    corrupt: false
+    extended l2: false
+Child node '/file':
+    filename: snap3.qcow
+    protocol type: file
+    file length: 132 MiB (138608640 bytes)
+    disk size: 132 MiB
+
+image: snap2.qcow
+file format: qcow2
+virtual size: 100 GiB (107374182400 bytes)
+disk size: 196 KiB
+cluster_size: 65536
+backing file: snap1.qcow
+backing file format: qcow2
+Format specific information:
+    compat: 1.1
+    compression type: zlib
+    lazy refcounts: false
+    refcount bits: 16
+    corrupt: false
+    extended l2: false
+Child node '/file':
+    filename: snap2.qcow
+    protocol type: file
+    file length: 194 KiB (198656 bytes)
+    disk size: 196 KiB
+
+image: snap1.qcow
+file format: qcow2
+virtual size: 100 GiB (107374182400 bytes)
+disk size: 123 MiB
+cluster_size: 65536
+backing file: disk_base.qcow
+backing file format: qcow2
+Format specific information:
+    compat: 1.1
+    compression type: zlib
+    lazy refcounts: false
+    refcount bits: 16
+    corrupt: false
+    extended l2: false
+Child node '/file':
+    filename: snap1.qcow
+    protocol type: file
+    file length: 123 MiB (128647168 bytes)
+    disk size: 123 MiB
+
+image: disk_base.qcow
+file format: qcow2
+virtual size: 100 GiB (107374182400 bytes)
+disk size: 12.4 GiB
+cluster_size: 65536
+Format specific information:
+    compat: 1.1
+    compression type: zlib
+    lazy refcounts: false
+    refcount bits: 16
+    corrupt: false
+    extended l2: false
+Child node '/file':
+    filename: disk_base.qcow
+    protocol type: file
+    file length: 12.4 GiB (13269532672 bytes)
+    disk size: 12.4 GiB
+```
+
+### Chaîne d'images ayant mené à `snap4` 
+
+```bash
+qemu-img info --backing-chain snap4
+```
+
+```bash
+image: snap4.qcow
+file format: qcow2
+virtual size: 100 GiB (107374182400 bytes)
+disk size: 123 MiB
+cluster_size: 65536
+backing file: snap2.qcow
+backing file format: qcow2
+Format specific information:
+    compat: 1.1
+    compression type: zlib
+    lazy refcounts: false
+    refcount bits: 16
+    corrupt: false
+    extended l2: false
+Child node '/file':
+    filename: snap4.qcow
+    protocol type: file
+    file length: 123 MiB (129368064 bytes)
+    disk size: 123 MiB
+
+image: snap2.qcow
+file format: qcow2
+virtual size: 100 GiB (107374182400 bytes)
+disk size: 196 KiB
+cluster_size: 65536
+backing file: snap1.qcow
+backing file format: qcow2
+Format specific information:
+    compat: 1.1
+    compression type: zlib
+    lazy refcounts: false
+    refcount bits: 16
+    corrupt: false
+    extended l2: false
+Child node '/file':
+    filename: snap2.qcow
+    protocol type: file
+    file length: 194 KiB (198656 bytes)
+    disk size: 196 KiB
+
+image: snap1.qcow
+file format: qcow2
+virtual size: 100 GiB (107374182400 bytes)
+disk size: 123 MiB
+cluster_size: 65536
+backing file: disk_base.qcow
+backing file format: qcow2
+Format specific information:
+    compat: 1.1
+    compression type: zlib
+    lazy refcounts: false
+    refcount bits: 16
+    corrupt: false
+    extended l2: false
+Child node '/file':
+    filename: snap1.qcow
+    protocol type: file
+    file length: 123 MiB (128647168 bytes)
+    disk size: 123 MiB
+
+image: disk_base.qcow
+file format: qcow2
+virtual size: 100 GiB (107374182400 bytes)
+disk size: 12.4 GiB
+cluster_size: 65536
+Format specific information:
+    compat: 1.1
+    compression type: zlib
+    lazy refcounts: false
+    refcount bits: 16
+    corrupt: false
+    extended l2: false
+Child node '/file':
+    filename: disk_base.qcow
+    protocol type: file
+    file length: 12.4 GiB (13269532672 bytes)
+    disk size: 12.4 GiB
+```
-- 
GitLab