Emmanuel-Joyce Ntsia, Gauvain BOICHÉ, Joris Stavroulakis, Léo Jarry, 

# Virtualisation, Containérisation d'OS, Stockage évolutif & résilient

Pour démarrer l'évaluation on est parti sur une VM avec ces spécifications : 

- Debian 13.1.0-amd64-netinst 
- 8 Coeurs Logiques
- 8 Go RAM 
- 20 Go d'espace disque (disque 1, le disque système)

À partir de là on a commencé par installer toutes les dépendances nécessaires

## 1.1 Installation des paquets pour libvirt / KVM / Qemu

On commence par installer et configurer tout ce qui sera nécessaire pour la virtualisation :

    sudo apt install bridge-utils cpu-checker libvirt-clients libvirt-daemon-system virtinst qemu-kvm virt-manager -y

    sudo usermod -aG kvm $USER
    sudo usermod -aG libvirt $USER

<media-tag src="https://files.cryptpad.fr/blob/9c/9cd72a4f06ae45f9c4064b24287379f1a889a5293c39461a" data-crypto-key="cryptpad:xmYOKRlSW+p/hjbv0OGLGWxFjPQtrrmtlnHODPk4XBU="></media-tag>

<media-tag src="https://files.cryptpad.fr/blob/93/93f9e103690570d6f3d02210cf83edfcb736339a4d4b9c8d" data-crypto-key="cryptpad:psh9MPwR6SQLSQ3Al329EqQKAFHne0aCloKUD93F1eY="></media-tag>

## 1.2 Installation des paquets pour la containérisation LXC

Ensuite on installe tout ce qui sera nécessaire pour la conteneurisation :

    sudo apt install lxc lxctl lxc-templates -y
    
<media-tag src="https://files.cryptpad.fr/blob/5d/5df3047ef1e1af7c2d1db5b63a13ef05bd7c64cc12c99643" data-crypto-key="cryptpad:ksu/YqjuaAa+VzX9v4b204UzvB8AE+YwdYt9B0mrZ4Q="></media-tag>

## 1.3 Installation du paquet mdadm pour le RAID

Enfin on installe **mdadm** pour créer et gérer le RAID

    sudo apt install mdadm -y

<media-tag src="https://files.cryptpad.fr/blob/14/14b0ac45bb59e5e3129b86c25aca2258f3c4a0c83a9d36e5" data-crypto-key="cryptpad:cBJFqiRkkTMpkGLHfnntFkWHM9oM9w0uskFurA9d6Ec="></media-tag>

## 2.1 Ajout des 4 disques pour le RAID5 (3 disques actifs + un hotspare)

On a choisi un RAID de type 5 pour la tolérance de panne **et** les performances, on est parti sur des disques de 4Go, ce qui s'avèrera (voir la suite) ne pas être assez, donc il faudra agrandir par la suite :

<media-tag src="https://files.cryptpad.fr/blob/2b/2b3f74a732f1f3ddcd8b05b3ada85b08f4c916d71ae8ddc9" data-crypto-key="cryptpad:C8bfHXiX9/Tunv2+olxN5HDBlXvqCmzprPxIHthhITs="></media-tag>

## 2.2 Mise en place du RAID5

D'abord on repère les disques qu'on va mettre dans le RAID :

    sudo lsblk

<media-tag src="https://files.cryptpad.fr/blob/5c/5c0a911256e37aa48cf61d833c051d450615863e03b97fca" data-crypto-key="cryptpad:d/EpZVHUm8sL/5bxPqFu+cuVqYaknQC+tqYk1fuZhPc="></media-tag>

Ensuite on créé ce dernier en précisant le type et le nom :
    
    sudo mdadm --create /dev/md1 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd
    
<media-tag src="https://files.cryptpad.fr/blob/63/630186676c496c657c4e0f9de90104a721dff9d91f87ad91" data-crypto-key="cryptpad:DxFDrJxMlMk4mmRIokEmtRtFdV1BqJMvv71fFt3DKsU="></media-tag>

On ajoute le disque ***sde*** en tant que hotspare pour notre RAID :

    sudo mdadm --add /dev/md1 /dev/sde
   
    
<media-tag src="https://files.cryptpad.fr/blob/9c/9c4835e947ef82ee5c21e28a94f9110f4190ab178320a7a5" data-crypto-key="cryptpad:au7wZjM/DC0U0MPy6t97+s+h4uTc9pE3MztTZZj4aLg="></media-tag>

On vérifie que tout est en place :

    sudo mdadm --detail /dev/md1
    
<media-tag src="https://files.cryptpad.fr/blob/c3/c36057cabdd3b5fbe899870d1d1756b40e5d21b13e68984d" data-crypto-key="cryptpad:qBgoCP//ADl6jEjDh1u4DGXfJhzxOwUWJ2nrK54r5UM="></media-tag>

On voit que le RAID5 avec *hotspare* est bien en place, on peut passer à la partie LVM

## 2.3 Mise en place du LVM

Ici on commence par déclarer le pv qu'on va utiliser, notre RAID :

    sudo pvcreate /dev/md1
    
<media-tag src="https://files.cryptpad.fr/blob/69/69e4a894c430e812a2dc36cfcef6a02c3c018f6703d9364a" data-crypto-key="cryptpad:uf18KubsvRYQMW/Hcnejf2mVew2wtXq4sOqcLMvH99I="></media-tag>

Ensuite on créé le volume group nommé ***eval*** et les deux logical volume ***vms*** et ***conteneurs*** :

    sudo vgcreate eval /dev/md1

    sudo lvcreate -l 50%FREE -n vms eval
    
    sudo lvcreate -l 100%FREE -n conteneurs eval
    
<media-tag src="https://files.cryptpad.fr/blob/0d/0d850ebbbfe9c351926e1f977d4dc7d0f15a5841b71fc709" data-crypto-key="cryptpad:SZn+5Ho1g2eLKOTIlUZkZ8reASiM1OhuYP0W4caPXfU="></media-tag>

Ensuite on formate les volumes pour mettre le système de fichiers *ext4* :

    sudo mkfs.ext4 /dev/mapper/eval-vms 
    
    sudo mkfs.ext4 /dev/mapper/eval-conteneurs

<media-tag src="https://files.cryptpad.fr/blob/39/3938c6e3c15112a89caa8804381cf3e7ab3177b671da302d" data-crypto-key="cryptpad:pY2ZgfH5v9Yz0mSzVsklX/kN04T4SqNyogZpGsHsmzM="></media-tag>

Puis on ajoute les labels :

    sudo tune2fs -L vmsfs /dev/mapper/eval-vms 
    
    sudo tune2fs -L conteneursfs /dev/mapper/eval-conteneurs   

<media-tag src="https://files.cryptpad.fr/blob/14/14ee8b862cf1fa9775fe8e1269709c0f55238ef4be39e758" data-crypto-key="cryptpad:n8PAhJ64GMaoIk1ypNf7fUvWrpTlQKnZfZ0hjqnCCvQ="></media-tag>

On vérifie qu'ils sont bien mis :

<media-tag src="https://files.cryptpad.fr/blob/f0/f02fc6dad2118f18802e4c95c9eea665f61d307e36469e40" data-crypto-key="cryptpad:C8stCyVXhksub85vBKoGvBXC1Re7GFbk9En2kvRKgjw="></media-tag>

## 2.4 Mise en place du montage au démarrage

On prépare les dossiers pour le montage de nos volumes : 

     sudo mkdir -p /mnt/vms /mnt/conteneurs
     
<media-tag src="https://files.cryptpad.fr/blob/b5/b51ea5967a9435301f7202d81c9f0d5aea45b09574c07ef2" data-crypto-key="cryptpad:59ETfguz+UHjN6sZfe0HTl3FlMZ1JEGnQ+iY+ZeLDSA="></media-tag>

On modifie le fstab pour que le montage se fasse au démarrage du système :
     
     sudo nano /etc/fstab
    
<media-tag src="https://files.cryptpad.fr/blob/dc/dcbdf8ad45ee0ea4758b08bd2c429123b893a26d8dd740fa" data-crypto-key="cryptpad:FJPrymuTZ1TCMYl+TD2+3898XsErQpFCZ4LfaE37EnM="></media-tag>

### 2.5 Montage des volumes

Ici on le monte directement (plutôt que de devoir redémarrer), pour ça on oublie pas de relancer le service :
    
    sudo systemctl daemon-reload
    
<media-tag src="https://files.cryptpad.fr/blob/ef/efc9365824f907bd8e6f8b19ee289a90d8ef7359d50babd6" data-crypto-key="cryptpad:9/v3TUck5tVTV4vMVTudJfcZ2DfSnG5N4YegOljWMmo="></media-tag>

On monte les volumes sur les dossiers précédemment créés :

    sudo mount -t ext4 /dev/mapper/eval-vms /mnt/vms
    sudo mount -t ext4 /dev/mapper/eval-conteneurs /mnt/conteneurs
    
<media-tag src="https://files.cryptpad.fr/blob/38/3851f0cfe90736849fb40b373e241c21420ee73ecba8f6ea" data-crypto-key="cryptpad:4KfVWIMmBobeulibZiozjFaz7+oNOq93e5u0w3bEM9o="></media-tag>

## 3.1 Installation des conteneurs LXC

Maintenant que tout est préparé on peut commencer à faire les conteneurs et les vms, on a décidé de commencer par les conteneurs

### 3.1.1 Le conteneur Debian

On installe le conteneur Debian :

    sudo lxc-create -n debianLXC -t download -- -d debian -r bullseye

<media-tag src="https://files.cryptpad.fr/blob/40/40d8ecb2850732611e0ef0f472b6ff6340cc4f479f428362" data-crypto-key="cryptpad:uq8h3EP/n0BHebZbxfA16ZsqGqRluCHuNeQcZ5FtzIE="></media-tag>

On crée le dossier qui servira de volume rattaché à ce conteneur :

    sudo mkdir /mnt/conteneurs/debianlxc
    
<media-tag src="https://files.cryptpad.fr/blob/ef/efc44707ee7eabbdbfe23563e57707399f7d5341e339c44c" data-crypto-key="cryptpad:yo1dE2qOV4J+sSacIYPqexRRDLgCSTMPGds5vuxdjQw="></media-tag>

On va modifier le fichier de config pour le rattacher justement :

    sudo nano /var/lib/lxc/debianLXC/config
    
<media-tag src="https://files.cryptpad.fr/blob/b5/b5b52a75f1658a40b32e6027d97fff36419f53ce1f6a82db" data-crypto-key="cryptpad:P/ciZg6I12Bi7P4c0W8MLsK2zqJnuhz4DdDoUeXjHOs="></media-tag>

<media-tag src="https://files.cryptpad.fr/blob/4d/4d535bd8e670fd9ee89d1a1c5d2f34cb091cb16a475ccda0" data-crypto-key="cryptpad:7t7MXfJyVn7bTWFxCr797j5yyg57ESbQnWZyjLJyWE8="></media-tag>

### 3.1.2 Le conteneur Ubuntu

On installe le conteneur Ubuntu :

    sudo lxc-create -n ubuntuLXC -t download -- -d ubuntu -r noble

<media-tag src="https://files.cryptpad.fr/blob/fe/febd60a7eac6310802935ad72199d62113fe1b02e822f619" data-crypto-key="cryptpad:neiBuwyda8neNhYWeHDIftJDnKcr2QMgYhT34wyPMjM="></media-tag>

On créé le dossier qui servira de volume rattaché à ce conteneur :

    sudo mkdir /mnt/conteneurs/ubuntulxc

<media-tag src="https://files.cryptpad.fr/blob/be/bec36cbc8e80e4e7fa72f74f74bf4782a2db9b7d01746d09" data-crypto-key="cryptpad:dH4/fylYvmuUVr90ev2kwq8QWI11/PAwFPK2zTNGTPA="></media-tag>

On va modifier le fichier de config pour le rattacher justement :

    sudo nano /var/lib/lxc/ubuntuLXC/config
    
<media-tag src="https://files.cryptpad.fr/blob/d1/d15272f1b623442f67af27a41e2418373fc551c4f9fe7e18" data-crypto-key="cryptpad:LW9VN4rJDGUyC1NDO7eTamVTJTh/cKLjgE3y1J3agDc="></media-tag>
    
<media-tag src="https://files.cryptpad.fr/blob/62/6281a6155012d3ea8d3efaaf03d801bdaeb8968c6656b703" data-crypto-key="cryptpad:Nzo01YrudSAFpGqlj6Q/CqFEzd4yGbQuv7oadGHXkVc="></media-tag>    

### 3.1.3 Le conteneur Fedora

On installe le conteneur Fedora :
  
    sudo lxc-create -n fedoraLXC -t download -- d fedora -r 42

<media-tag src="https://files.cryptpad.fr/blob/de/dec127fcb5f2fef990c9dae7e648a23341d9dcfeebc51dd3" data-crypto-key="cryptpad:Gz4m25ZGx2Ut0l7jy73MX8l4+vsaRVknk3ykfP4nPZE="></media-tag>

On crée le dossier qui servira de volume rattaché à ce conteneur :

    sudo mkdir /mnt/conteneurs/fedoralxc

<media-tag src="https://files.cryptpad.fr/blob/8e/8ed4e36f2d2567341392aaf844eb7d68125a7214585a539b" data-crypto-key="cryptpad:3oa/1rk1MwadnBkCTD0FsDEtgosOEZAi9iOtVQW07+s="></media-tag>

On va modifier le fichier de config pour le rattacher justement :

    sudo nano /var/lib/lxc/fedoraLXC/config

<media-tag src="https://files.cryptpad.fr/blob/4a/4a7fda7e748fcfe8065a00545421ef44ad51fd08a571778f" data-crypto-key="cryptpad:xWNDUAad/ZnYdWo5KnJN6Bw7FoG6w0Tz2CUDhMhwJRk="></media-tag>

<media-tag src="https://files.cryptpad.fr/blob/5f/5fe86ceb86dc605d6e4534ab71be0f9df6be2a4db77a7a9d" data-crypto-key="cryptpad:hiAh5/oNuJRDlHVAq3w/63iKY1BqYAH+dSvdB1sr1k0="></media-tag>

## 3.2 Installation des VMS

Maintenant que les conteneurs sont installés et configurés on passe aux VMs

### 3.2.1 La VM Debian

On commence à créer un dossier dans lequel on rangera le disque de la VM (ainsi que son iso au passage) :

    sudo mkdir debian      
    
<media-tag src="https://files.cryptpad.fr/blob/31/31f9dc7e9c0297eed0228692138981218e5c47e4b5bd37ed" data-crypto-key="cryptpad:vTERowwrpitSK7f2DXN5gX/XewVlDrKeZ9hp91Indnw="></media-tag>

On télécharge le fichier iso :

    sudo wget https://cdimage.debian.org/mirror/cdimage/archive/11.11.0/amd64/iso-cd/debian-11.11.0-amd64-netinst.iso
    
<media-tag src="https://files.cryptpad.fr/blob/73/7301bcd725e717fa22fe7ed8eac1a1e642d1a6e5b6218e61" data-crypto-key="cryptpad:R2i36nJXlx5IGNyIwZpWG/QKQucsUBATu7BuJIU+F2I="></media-tag>

On crée le disque (qui s'avèrera trop petit, voir la suite) :

    sudo qemu-img create -f qcow2 debian.qcow2 2G
    
<media-tag src="https://files.cryptpad.fr/blob/d9/d9baa18e4dc17d4d1a12be63b7c00787fca9640e7be2f52a" data-crypto-key="cryptpad:JsxrbrbfwH0bfenUenvk3KZDswQjcqk5vvPIpmJRUqU="></media-tag>

On lance l'installation avec ***virt-install*** :

    sudo virt-install \
    --name debianVM \
    --os-variant=debian11 \
    --ram 2048 \
    --vcpus 2 \
    --location /mnt/vms/debian/debian-11.11.0-amd64-netinst.iso \
    --disk debian.qcow2 \
    --graphics none \
    --console pty,target_type=serial \
    --extra-args='console=ttyS0,115200n8 serial'
    
<media-tag src="https://files.cryptpad.fr/blob/41/4186b87fe73e5996c19a4e44630631c4eefd1d791cc429ef" data-crypto-key="cryptpad:n85CcKoSA02D2icTzUrCeavaAMJ1RXPbigI09mD16U0="></media-tag>
    
On a manqué de place pour l'installation, donc on rajoute deux disques de 4Go au raid et au LVM pour recommencer :

<media-tag src="https://files.cryptpad.fr/blob/ba/ba799c916d57a0c60d87413e3d40f4bb045c7395b0c85e5d" data-crypto-key="cryptpad:dIgiQfo8mDCeDWiG0+kl+jFliFqqD3Mg2u2rdAaer2w="></media-tag>


On ajoute nos deux disques au RAID (Après le reboot le md1 a été renommé par le système en md127) :

    sudo mdadm --add /dev/md127 /dev/sdf /dev/sdg
    
<media-tag src="https://files.cryptpad.fr/blob/78/781ba4595e2eaf843e67e9b011044fed1e56f66e13960f98" data-crypto-key="cryptpad:FnScioCuM2cPk34phyf8kg17xi/LDtZMhR4PZJCdaOM="></media-tag>
    
On oublie pas cette commande, sinon nos disques seront juste en spare : 

    sudo mdadm --grow /dev/md127 --raid-devices=5
    
<media-tag src="https://files.cryptpad.fr/blob/d9/d9349cdaaed4b7f69a709fbf2f37419c9c35159d8855b383" data-crypto-key="cryptpad:9VNUEYRjDnIpv0aqsl6e++BsNDMpGI/QVYxeKvdcV1s="></media-tag>

*Et ensuite il faut bien sûr étendre le LVM (**après avoir attendu que le reshape du RAID ait fini**)*

On commence par resize le pv :

    sudo pvresize /dev/md127

<media-tag src="https://files.cryptpad.fr/blob/de/de6710544f95f3ed6863d47d7a22c586a6f6f154f919aaee" data-crypto-key="cryptpad:2YOBmZhXlD1DFv1PGsV1MNbbLAxv5jmJPkquMLP0SMA="></media-tag>

On étend ensuite notre volume dédié au VM pour lui accorde 100% du nouvel espace libre :
    
    sudo lvextend -l +100%FREE --resizefs /dev/mapper/eval-vms

<media-tag src="https://files.cryptpad.fr/blob/af/af1454927752414639c8583694ccabfff5e151de5ec044e1" data-crypto-key="cryptpad:gyVGn4TWL5w7Tzs0503zfbejDT+sbS1/XhBHBsfBw5E="></media-tag>

Ensuite on undefine le debianVM créé précédemment pour refaire l'installation à zéro : 

*(Cette étape est nécessaire pour pouvoir utiliser le disque avec le même nom qu'avant, sinon virt croit que le disque est déjà utilisé par une autre VM)*

    sudo virsh undefine debianVM
    
 Puis on supprime le disque :
 
    sudo rm debian.qcow2
    
 Et on le recrée avec une plus grande taille : 
    
    sudo qemu-img create -f qcow2 debian.qcow2 5G
    
 Et on refait l'installation avec la commande virt-install utilisée au-dessus, voici le résultat :

<media-tag src="https://files.cryptpad.fr/blob/1e/1e4b5cf1dedc44937084cb725f9f7add1b2a6b7551a9b590" data-crypto-key="cryptpad:imkCtErKM8sLwX2TS/GrD2vILyp9ugnvvYEuzjxHpk8="></media-tag>

<media-tag src="https://files.cryptpad.fr/blob/fc/fca279a55474fe6d4e68b2eb683cad42b412db3784617b5d" data-crypto-key="cryptpad:RhvA2BEHKPxsCjYv/qfqIs5B4YkPGf1f/HnUzzvGqkI="></media-tag>
    
### 3.2.2 La VM Ubuntu

On commence à créer un dossier dans lequel on rangera le disque de la VM (ainsi que son iso au passage) :

    sudo mkdir /mnt/vms/ubuntu
    
<media-tag src="https://files.cryptpad.fr/blob/e4/e4d92d09be3a521db140229e5beb0cfea8abf2a0c0c4d412" data-crypto-key="cryptpad:rTGMAPCavmig2pKE/p3n5hyquc1BdwMXifZj75RlXdc="></media-tag>

On télécharge le fichier iso :

    sudo wget https://cdimage.ubuntu.com/ubuntu-legacy-server/releases/20.04/release/ubuntu-20.04.1-legacy-server-amd64.iso
    
 <media-tag src="https://files.cryptpad.fr/blob/f4/f450926458dac5270e72c6fa79bb6d22803215ffe506cdeb" data-crypto-key="cryptpad:qFDOYX7aL/CAf65jW1bXpD92WIoVbB38KGJ07k9C/Zs="></media-tag>
 
On créé notre disque de 6Go :

    sudo qemu-img create -f qcow2 ubuntu.qcow2 6G
    
 <media-tag src="https://files.cryptpad.fr/blob/20/203f8565203dcc2d49323c885d4fcc015b9e514eaa291ca4" data-crypto-key="cryptpad:CsydruhHoV3VKjfGjEjGc88HgJBV5JZHBf3V277dsWU="></media-tag>
 
On lance l'installation :
    
    sudo virt-install \
    --name ubuntuVM \
    --os-variant=ubuntu20.04 \
    --ram 4096 \
    --vcpus 4 \
    --location /mnt/vms/ubuntu/ubuntu-20.04.1-legacy-server-amd64.iso \
    --disk ubuntu.qcow2 \
    --graphics none \
    --console pty,target_type=serial \
    --extra-args='console=ttyS0,115200n8 serial'

<media-tag src="https://files.cryptpad.fr/blob/f0/f0148c74a643715c2b3290ba19a2dfab50226c0296532792" data-crypto-key="cryptpad:b6iZnvO4SW/bT5OcVw4u04BMMBHB/M26VSHtciZMOVw="></media-tag>

<media-tag src="https://files.cryptpad.fr/blob/d9/d9ea5dd8171e6e315f39892595286a4154acffbd45255480" data-crypto-key="cryptpad:ryP22LbOuAtRfQakA+miZI0MGeEHowhC6LoRFcoAaeM="></media-tag>

L'installation du ubuntu va jusqu'au bout, mais après on a un écran "noir" comme mentionné par le formateur, donc impossible d'aller plus loin :

<media-tag src="https://files.cryptpad.fr/blob/b0/b055a09b6a3fa8a7d0eda8d8d9e526579e4538a4828ece0b" data-crypto-key="cryptpad:C27BL+GZSyKOWENfzuW+entS+91eLKtTHhHFMMoLM1I="></media-tag>

<media-tag src="https://files.cryptpad.fr/blob/5c/5ccaa2ae0762544b9b5be2d107f942f8673eafd940860dc2" data-crypto-key="cryptpad:z/Gt2mqiT505XOJ5iOl2KdDHhtCQT+a0SKBA9hRjOFY="></media-tag>

Mais on a réussi à y accéder grâce à SSH et au final tout fonctionne :

    sudo nmap 192.168.122.0/24 -sP # pour trouver l'ip de la VM ubuntu

<media-tag src="https://files.cryptpad.fr/blob/85/8562e2daf46bc7a62282c0a3c48820d76b72846b06a19328" data-crypto-key="cryptpad:K1z83sJcK3K1MyDf6dSw3EahvlVOzSoNwqTknFH9uak="></media-tag>

