[Tuto] Système de machines virtuelles sur un serveur dédié



  • Tuto en cours de rédaction

    Bonjour à tous !

    En recherche d'hébergeur de serveurs dédiés, je suis récemment arrivé sur FirstHeberg, convaincu par plusieurs critiques sur le Net. Je profite de mon installation ici, et des différentes opérations que j'ai effectué, pour vous fournir un tuto que j'espère le plus complet possible sur le problème auquel je vais m'atteler :

    Comment mettre en place un système de machines virtuelles fiable et souple sur un serveur dédié.

    Introduction

    La configuration que je vais présenter se focalisera uniquement sur l'approche que j'ai choisie, car il est difficile de faire un tuto pouvant couvrir toutes les approches possibles en terme de virtualisation …

    Le tuto s'adresse à des gens disposant déjà d'une bonne connaissance de Linux. Soyons honnête : j'essaierai d'être le plus didactique possible, mais si vous faites les opérations suivantes sans savoir ce qu'elles impliquent réellement, vous avez toutes les chances de planter votre serveur.

    Objectif du tuto

    Nous allons donc installer sur notre serveur dédié un système de machines virtuelles. Le principe de la virtualisation est de proposer sur une seule machine physique, plusieurs machines virtuelles disposant de leur propre environnement (périphériques, stockage etc.) et de leur propre système d'exploitation. Elles sont indépendantes les unes des autres. L'intérêt de la virtualisation est double :

    Description du système

    Le système principal (appelé dom0) fonctionnera sous Debian Testing (Wheezy) et sera chargé de gérer les machines virtuelles (appelées domU). Pour créer les domUs, le dom0 utilisera le logiciel de paravirtualisation XEN. Les domUs pourront accéder au réseau Internet par le biais d'une IP Fail-Over que vous aurez acquis préalablement auprès de FirstHeberg. Un système de routage permettra aux domUs d'être accessible depuis Internet afin de délivrer les services qui sont installés sur dessus (SSH, FTP, Web, Mails, etc.). Enfin, les partitions du dom0, ainsi que celles des domUs, seront gérées de manière souple grâce au gestionnaire de volume logique LVM, et leur intégrité sera assurée via un RAID 1 sur les deux disques durs du serveur dédié.

    Plan du tuto

    Le tuto sera constitué de 6 parties, que seront relativement indépendantes les unes des autres. Ainsi, voici le plan du tuto ]C'est parti !



  • I - Préparation du serveur : partionnement, RAID et LVM

    1.1 - Introduction

    Vous avez reçu votre serveur dédié avec un système d'exploitation prêt-à-l'emploi (par exemple, Debian Stable aka Debian Squeeze). C'est bien. Mais ce qui est mieux, c'est de faire son propre système d'exploitation, qui contiendra uniquement ce dont vous avez besoin, et que vous aurez configuré vous-même. C'est cool, Linux permet de faire ça.

    Nous allons commencer par mettre en place un partitionnement efficace, pratique et redondant pour notre serveur. Ceci permettra de dispatcher facilement l'espace mémoire entre les différents domUs, tout en assurant l'intégrité des données en cas d'incident avec un disque.

    /! Attention /!

    Les opérations qui vont suivre vont supprimer toutes les données de votre serveur, y compris votre système d'exploitation ! Sauvegardez tout ce dont vous avez besoin avant !

    1.2 - Passage en mode rescue

    Le partitionnement et l'installation Debian ne peuvent se faire depuis le système d'exploitation actuel de votre serveur dédié. Nous allons passez en mode rescue : le principe est que votre serveur va redémarrer depuis le réseau pour charger une Debian en mémoire vive. De là, vous pourrez faire toutes les opérations nécessaires.

    -> Connectez-vous à votre compte client FirstHeberg
    -> Cliquez sur votre serveur dédié
    -> Cliquez sur le bouton "Rescue Mode"
    -> Confirmez en appuyant sur le bouton "Activer le mode Rescue"

    Le serveur va redémarrer. Vous allez recevoir un mail à l'adresse renseignée dans "Informations personnelles" de votre compte. Ce mail contient le mot de passe root du mode Rescue.

    -> Une fois le mail reçu, connectez-vous avec votre utilitaire SSH préféré sur votre serveur, en utilisant le compte root et le mot de passe fourni.

    Vous êtes maintenant en Rescue mode, sur une Debian Wheezy chargée dans la RAM de votre serveur. La suite de la partie I se fera depuis ce mode.

    1.3 - Partionnement des disques

    L'objectif ici est de partitionner les disques pour installer un RAID logiciel, puis créer les groupes de volumes logiques pour LVM, et enfin de créer les partitions pour le système Debian.

    On suppose ici que les deux disques présents sur la machine sont /dev/sda et /dev/sdb.

    Tout d'abord, on stoppe les RAIDS éventuellement actifs sur votre serveur.

    -> Listez les arrays RAIDs actifs

    root@debian:~# cat /proc/mdstat
    ```_-> Désactivez chaque array RAID trouvé (X le numéro du raid)_
    

    root@debian:~# mdadm --stop /dev/mdX

    Commençons le partionnement.
    
    _-> Installez l'utilitaire gdisk (GPT fdisk)_
    

    root@debian:~# aptitude update
    root@debian:~# aptitude install gdisk

    
    Votre serveur dédié peut encore être dans l'ancienne configuration. Le cas échéant, nous allons convertir la table MBR en table GPT. En plus d'être plus récent, GPT posera moins de problème à l'installation de GRUB.
    
    La machine continuera cependant à utiliser le BIOS (ça, on ne peut pas le changer).
    
    Les manipulations sont à faire sur les deux disques.
    
    _-> Lancez gdisk sur le premier disque_
    

    root@debian:~# gdisk /dev/sda

    GPT fdisk (gdisk) version 0.7.2

    Partition table scan:
    MBR: MBR only
    BSD: not present
    APM: not present
    GPT: not present


    Found invalid GPT and valid MBR; converting MBR to GPT format.
    THIS OPERATON IS POTENTIALLY DESTRUCTIVE! Exit by typing 'q' if
    you don't want to convert your MBR partitions to GPT format!


    Command (? for help):

    
    Réfléchissez une nouvelle fois. Une fois la table MBR convertie en GPT, il y a un risque de perte des données. Il sera encore possible de revenir en arrière, mais cela peut être difficile.
    
    _-> Tapez "w" dans l'interface de gdisk, et confirmez après l'avertissement la conversion en GPT._
    
    **2) Si votre disque utilise GPT, vous aurez ceci :**
    

    GPT fdisk (gdisk) version 0.8.5

    Partition table scan:
    MBR: protective
    BSD: not present
    APM: not present
    GPT: present

    Found valid GPT with protective MBR; using GPT.

    Command (? for help):

    Pas de conversion à faire dans ce cas.
    
    Dans tous les cas, lorsque le disque est en GPT, vous devez supprimer toutes les partitions du disque. gdisk se comporte comme fdisk. Pour chaque partition :
    _-> Tappez "p" (lister les partitions) pour avoir les partitions et leur numero
    -> Tappez "d" (supprimer une partition)
    -> Donnez le numéro de la partition à supprimer_
    

    Command (? for help): d
    Partition number (1-3): 1

    Nous allons créer trois partitions, dont le schéma sera identique sur les deux disques.
    
    _-> Lancez gdisk sur /dev/sda, et créez une partition de 2 MO portant le label "BIOS Boot Partition" (code EF02)._
    

    root@debian:~# gdisk /dev/sda
    GPT fdisk (gdisk) version 0.8.5

    Partition table scan:
    MBR: protective
    BSD: not present
    APM: not present
    GPT: present

    Found valid GPT with protective MBR; using GPT.

    Command (? for help): n
    Partition number (1-128, default 1):
    First sector (34-1953525134, default = 2048) or {+-}size{KMGTP}: +2M
    Last sector (6144-1953525134, default = 1953525134) or {+-}size{KMGTP}:
    Current type is 'Linux filesystem'
    Hex code or GUID (L to show codes, Enter = 8300): ef02
    Changed type of partition to 'BIOS boot partition'

    Command (? for help):

    
    _-> Créez une seconde partition de 12G et une troisième partition occupant le reste du disque dur. Ces 2 partitions porteront le label "Linux RAID" (code FD00)._
    

    Command (? for help): p
    Disk /dev/sda: 1953525168 sectors, 931.5 GiB
    Logical sector size: 512 bytes
    Disk identifier (GUID): BADC493A-69B0-4E76-91E2-B9F5D52EE378
    Partition table holds up to 128 entries
    First usable sector is 34, last usable sector is 1953525134
    Partitions will be aligned on 2048-sector boundaries
    Total free space is 1953521005 sectors (931.5 GiB)

    Number Start (sector) End (sector) Size Code Name
    1 2048 6143 2.0 MiB EF02 BIOS boot partition

    Command (? for help): n
    Partition number (2-128, default 2):
    First sector (34-1953525134, default = 6144) or {+-}size{KMGTP}:
    Last sector (6144-1953525134, default = 1953525134) or {+-}size{KMGTP}: +12G
    Current type is 'Linux filesystem'
    Hex code or GUID (L to show codes, Enter = 8300): fd00
    Changed type of partition to 'Linux RAID'

    Command (? for help): n
    Partition number (3-128, default 3):
    First sector (34-1953525134, default = 25171968) or {+-}size{KMGTP}:
    Last sector (25171968-1953525134, default = 1953525134) or {+-}size{KMGTP}:
    Current type is 'Linux filesystem'
    Hex code or GUID (L to show codes, Enter = 8300): fd00
    Changed type of partition to 'Linux RAID'

    Command (? for help): p
    Disk /dev/sda: 1953525168 sectors, 931.5 GiB
    Logical sector size: 512 bytes
    Disk identifier (GUID): BADC493A-69B0-4E76-91E2-B9F5D52EE378
    Partition table holds up to 128 entries
    First usable sector is 34, last usable sector is 1953525134
    Partitions will be aligned on 2048-sector boundaries
    Total free space is 2014 sectors (1007.0 KiB)

    Number Start (sector) End (sector) Size Code Name
    1 2048 6143 2.0 MiB EF02 BIOS boot partition
    2 6144 25171967 12.0 GiB FD00 Linux RAID
    3 25171968 1953525134 919.5 GiB FD00 Linux RAID

    Command (? for help):

    
    Dernier avertissement : une fois les partitions écrites sur le disque, les données précédentes seront perdues.
    
    _-> Validez les modifications à l'aide de la commande "w"_
    
    _-> Lancez gdisk sur /dev/sdb, et refaites toute la procédure à l'identique : conversion du disque en GPT, suppression des partitions, et création des 3 partitions sus-mentionnées._
    
    1.4 - Création du RAID logiciel
    
    Maintenant que les deux disques sont partitionnés, nous allons créer deux RAIDS 1 :
    - le premier, /dev/md0, avec /dev/sda2 et /dev/sdb2, qui accueillera le groupe de volume logique pour le dom0,
    - le second, /dev/md1, avec /dev/sda3 et /dev/sdb3, qui accueillera le groupe de volume logique pour les domUs.
    
    Les partitions /dev/sda1 et /dev/sdb1 ne sont pas en RAID, elles serviront à l'installation de GRUB2.
    
    _-> Synchronisez le partitionnement du disque dans le noyau Linux (afin de les rendre accessibles)_
    

    root@debian:~# partprobe

    root@debian:~# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2

    root@debian:~# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sda3 /dev/sdb3
    ```
    1.5 - Mise en place des groupes de volumes logiques, et création des partitions du dom0
    
    On va maintenant mettre en place les groupes de volumes logiques, les volumes logiques du dom0 et les formater.
    
    _-> Créez les volumes physiques_
    ```
    root@debian:~# pvcreate /dev/md0
    root@debian:~# pvcreate /dev/md1
    ```_-> Créez un groupe de volume sur chaque volume physique_
    ```
    root@debian:~# vgcreate vg0 /dev/md0
    root@debian:~# vgcreate vg1 /dev/md1
    ```_-> Mettez en place la partition boot du dom0 (taille 300Mo, formatée en ext2)_
    ```
    root@debian:~# lvcreate -L 300M -n dom0_boot vg0
    root@debian:~# mkfs.ext2 /dev/vg0/dom0_boot
    ```_-> Mettez en place la partition root du dom0 (taille 5G, formatée en btrfs)_
    ```
    root@debian:~# lvcreate -L 5G -n dom0_boot vg0
    root@debian:~# mkfs.ext4 /dev/vg0/dom0_root
    ```_-> Mettez en place la partition swap du dom0 (taille au moins égale à celle de la ram)_
    ```
    root@debian:~# lvcreate -L 4G -n dom0_swap vg0
    root@debian:~# mkswap /dev/vg0/dom0_swap
    ```
    Vos disques durs sont prêts pour l'installation du système.


  • II - Installation du système Debian depuis le rescue mode

    1.1 - Introduction

    Nous souhaitons installer une Debian qui deviendra (dans la partie III) le dom0, c'est-à-dire le système d'exploitation en charge de gérer les machines virtuelles. Sa sécurisation est essentielle : en effet, si le dom0 est compromis, tous les domUs le sont aussi. Il faut donc limiter les vecteurs d'attaque, autrement dit, limiter les fonctionnalités du serveur. Nous allons donc construire une Debian en installation minimale, avec pour seul service SSH.

    Pas de KVM-IP, pas de CD, l'installation de cette Debian se fera uniquement via le rescue mode.

    1.2 - Installation

    Vous devez être en rescue mode. L'installation se fera depuis le rescue mode, puis dans un chroot. A la fin de la configuration, vous pourrez désactiver le rescue mode, et redémarrer la machine, qui démarrera alors sur votre nouvelle Debian.

    Vous devez avoir au minimum une partition pour le système et une partition swap. Pour la suite de cette partie II, je vais supposer que vous avez suivi la partie I : vous avez donc 3 partitions sous forme de volumes logiques pour /, /boot et swap.

    -> Montez les partitions

    root@debian:~# mkswap on
    root@debian:~# mount /dev/vg0/dom0_root /mnt
    root@debian:~# mkdir /mnt/boot
    root@debian:~# mount /dev/vg0/dom0_boot /mnt/boot
    ```_-> Installez le système Debian de base à l'aide de debootstrap dans la partition racine de votre nouveau système_
    

    root@debian:~# debootstrap --arch amd64 wheezy /mnt

    1.3 - Configuration
    
    Le système de base est installé. Il faut maintenant le configurer, ce que l'on va faire via un chroot dans la partition racine du nouveau système.
    
    _-> Montez l'environnement de la machine pour le chroot_
    

    root@debian:~# mount -o bind /dev /mnt/dev
    root@debian:~# mount -o bind /proc /mnt/proc
    root@debian:~# mount -o bind /sys /mnt/sys

    root@debian:~# chroot /mnt

    Vous êtes maintenant dans votre système Debian. Il y a pas mal de configuration à faire avant que ce système soit en état de booter.
    
    _-> Première chose à faire, paramétrer le montage des partitions. Editez le fichier /etc/fstab comme suit :_
    

    /etc/fstab: static file system information.

    file system mount point type options dump pass

    /dev/vg0/dom0_root / ext4 defaults 0 1
    /dev/vg0/dom0_boot /boot ext2 defaults 0 2

    /dev/vg0/dom0_swap none swap sw 0 0
    proc /proc proc defaults 0 0

    mount -a

    root@debian:~# dpkg-reconfigure tzdata

    Nous allons maintenant configurer le réseau. Vous devez avoir l'adresse ip du serveur, sous la forme X.X.X.X.
    
    _-> Editez le fichier /etc/network/interfaces. Les X.X.X.X représentent les nombres constituant votre adresse ip._
    

    ######################################################################

    /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

    See the interfaces(5) manpage for information on what options are

    available.

    ######################################################################

    We always want the loopback interface.

    auto lo
    iface lo inet loopback

    The main network interface

    auto eth0
    iface eth0 inet static
    address X.X.X.X
    network X.X.X.0
    netmask 255.255.255.0
    broadcast X.X.X.255
    gateway X.X.X.1

    root@debian:~# echo LOCALHOST@LOCALDOMAIN > /etc/hostname

    27.0.0.1 localhost
    127.0.0.1 LOCALHOST@LOCALDOMAIN

    ::1 localhost ip6-localhost ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters

    domain firstheberg.com
    search firstheberg.com
    nameserver 8.8.8.8

    Il est temps d'installer quelques paquets essentiels. Configurons apt.
    
    _-> Renseignez les miroirs qui seront utilisés par apt-get dans le fichier /etc/apt/sources.list, et n'oubliez pas de mettre à jour la liste des paquets d'apt._
    

    deb http://ftp.fr.debian.org/debian wheezy main
    deb-src http://ftp.fr.debian.org/debian wheezy main

    deb http://security.debian.org/ wheezy/updates main
    deb-src http://security.debian.org/ wheezy/updates main

    root@debian:~# aptitude update
    ```_-> Installez les locales. Vous pouvez sélectionner fr_FR ISO-8859-1 et fr_FR.UTF-8, et sélectionnez comme locale par défaut fr_FR.UTF-8._
    ```
    root@debian:~# aptitude install locales
    root@debian:~# dpkg-reconfigure locales
    ```Enfin, nous installons le noyau et GRUB2\. Si vous avez respecté le partitionnement en partie I de ce tuto, grub devrait s'installer sans souci. Vous chargerez grub sur les deux disques physiques de la machine, à savoir /dev/sda et /dev/sdb
    ```
    aptitude install linux-image-amd64 grub-pc
    ```Assurez-vous que l'installation de grub s'est bien passée.
    _Mettez à jour la configuration de grub_
    ```
    root@debian:~# grub-install /dev/sda
    Installation finished. No error reported.
    root@debian:~# grub-install /dev/sdb
    Installation finished. No error reported.
    root@debian:~# update-grub
    Generating grub.cfg ...
    Found linux image: /boot/vmlinuz-3.2.0-3-amd64
    Found initrd image: /boot/initrd.img-3.2.0-3-amd64
    done
    ```Si vous avez ces messages rassurant, c'est bon, votre machine sera en état de booter sur Debian.
    
    Il reste plus qu'une chose, rendre le serveur accessible une fois qu'il aura redémarré …
    
    _-> Installez openSSH_
    ```
    root@debian:~# aptitude install ssh
    ```_-> Définissez le mot de passe root_
    ```
    root@debian:~# passwd
    ```
    Votre serveur est configuré. Vous pouvez désactiver le rescue mode dans votre compte client Firstheberg, et redémarrer la machine par la commande reboot. Dans quelques secondes, vous pourrez vous connecter dessus en SSH, et bénéficier d'une Debian Wheezy minimale toute neuve._


  • III



  • IV



  • V



  • VI



  • ()



  • Bonjour,

    Je souhaitais tout d'abord te rermercier car ton tuto m'a beaucoup aidé !

    Maintenant je me pose la question suivante : à quand la suite ? :)

    Sinon connaissez vous des tutos en ssh pour les points suivants :
    III - Installation de Xen et configuration du dom0
    IV - Création du réseau virtuel pour les domUs
    V - Création et configuration d'un domU
    VI - Mise en place de services

    ?

    Je vous remercie,
    Cordialement.

    MrRhubarb



  • La distribution proxmox est dispo depuis quelques jours en réinstallation automatique.
    Les partitions perso et LVM arrive….. :wink:



  • Aah merci de l'info Gilum je vais me tourner vers cette solution :)



  • Youhou ! Quelqu'un regarde mon tuto !

    J'ai mis la suite sur mon site perso. Le lien est dans ma signature.

    Pour les partitions perso et LVM, il faut tout de même faire gaffe au partitionnement par rapport à l'installation de Grub (cf la partie I), car même l'installateur Debian se plante. Alors pour ce qui est d'un installateur de cluster …

    Elle a l'air pas mal du tout cette distribution proxmox ! Merci Gilum, je vais la tester sur mon serveur.



  • personnellement je n'ai pas creusé ton tuto plus que cela car je n'ai pas l'utilité immédiate, mais je dois bien reconnaitre qu'il est impressionnant!

    super travail Fullm3tal :wink:



  • Est-ce que ce tuto est toujours d'actualité ?



  • merci bien que j'ai du prendre mes jumelles et les mettre à l'envers pour savoir lire…


Se connecter pour répondre
 

Il semble que votre connexion ait été perdue, veuillez patienter pendant que nous vous re-connectons.