logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
doc:systeme:openvz [24/11/2009 18:52]
smolski
doc:systeme:openvz [12/10/2015 19:39] (Version actuelle)
smolski [Proxmox]
Ligne 1: Ligne 1:
 +====== OpenVZ ======
 +
 +  * Objet : OpenVZ
 +  * Niveau requis :​{{tag>​avisé}}
 +  * Commentaires : //​Technologie de paravirtualisation//​
 +  * Suivi : {{tag>​à-tester}}
 +    * Création par [[user>​smolski]] le 23/11/2009
 +    * Testé par .... le ....
 +  * Commentaires sur le forum : [[https://​debian-facile.org/​viewtopic.php?​id=2056 |C'est ici]]((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) 
 +
 +===== Introduction =====
 +
 +Wikipédia :
 +
 +**OpenVZ** est une technologie de paravirtualisation de niveau système d'​exploitation basée sur le noyau Linux.\\ ​
 +**OpenVZ** permet à un serveur physique d'​exécuter de multiples instances de systèmes d'​exploitation isolés, connus sous le nom de serveurs privés virtuels (VPS) ou environnements virtuels (VE).
 +
 +En comparaison aux machines virtuelles telles que VMware et aux technologies de paravirtualisation telles que Xen, OpenVZ offre moins de flexibilité dans le choix du système d'​exploitation : le système d'​exploitation invité et hôte doivent être de type Linux (bien que les distributions de Linux peuvent être différentes dans des VEs différents).
 +
 +Cependant, la virtualisation au niveau OS d'​OpenVZ offre :
 +
 +  * une meilleure performance,​
 +  * une meilleure scalabilité (i.e. évolution),​
 +  *  une meilleure densité,
 +  * une meilleure gestion de ressource dynamique,
 +  *  et une meilleure facilité d'​administration que ses alternatives.
 +
 +Selon le site Web d'​OpenVZ,​ cette méthode de virtualisation introduirait une très faible pénalité sur les performances : 1 à 3% de pertes seulement par rapport à un ordinateur physique.
 +
 +OpenVZ est la base de Virtuozzo, un produit propriétaire fourni par SWsoft, Inc. OpenVZ est distribué sous la Licence publique générale GNU version 2.
 +
 +OpenVZ comprend le noyau Linux et un jeu de commandes utilisateurs.
 +
 +====== Ajout du dépôt ======
 +
 +En théorie, cette étape est inutile.\\ ​
 +Je la mets sans l'​avoir validée et juste à titre de mémo.
 +
 +Dans le fichier **sources.list** on ajoute le dépôt :
 +
 +   ​http://​download.openvz.org/​debian-systs lenny openvz
 +
 +On télécharge la clef et on fait la mise à jour :
 +
 +<code root>​wget -q http://​download.openvz.org/​debian-systs/​dso_archiv_signing_key.asc -O- | apt-key add - && apt-get update</​code>​
 +
 +===== Installation du bon kernel et des softs de contrôle des machines virtuelles (VE) =====
 +
 +==== Kernel OpenVZ ====
 +
 +Un kernel OpenVZ, ce n'est ni plus ni moins qu'un kernel classique qui a été patché afin d'​améliorer le principe de chroot.
 +
 +Utilité de vzctl et vzquota
 +
 +==== vzctl ====
 +
 +  Un utilitaire pour contrôler les VE (création, destruction,​ démarrage, arrêt, etc.) 
 +
 +==== vzquota ====
 +
 +   Un programme pour gérer les quota des VE.
 +   Très souvent utilisé indirectement et implicitement (grâce à vzctl). ​
 +
 +===== Installation des paquets utiles =====
 +
 +<code root>​apt-get install iproute libatm1 linux-image-2.6.26-2-openvz-686 linux-image-openvz-686 rsync vzctl vzquota</​code>​
 +
 +Si le paquet linux-image-openvz-686 ou linux-image-2.6.26-2-openvz-686 n'​existe pas, alors un simple :
 +
 +<code root>​apt-cache search openvz | grep 686 | grep image</​code>​
 +
 +suffira pour déterminer le bon kernel à installer.
 +
 +Avant de rebooter, vérifiez votre grub.\\ ​
 +Dans grub :
 +<code root >/​boot/​grub/​menu.lst</​code>​
 +Dans grub2 :
 +
 +   En attente...
 +
 +ce dernier doit pointer sur le kernel OpenVZ. Après vérification,​ on reboot.
 +
 +===== Principe de OpenVZ =====
 +
 +Très simplement, OpenVZ c'est du chroot très fortement optimisé et amélioré.
 +
 +
 +===== Après le reboot =====
 +
 +  * On vérifie que l'on est sur le bon kernel :
 +
 +<code user>​uname -a</​code>​
 +
 +Une réponse de ce type doit alors apparaître :
 +
 +<file config retour de la commande>​2.6.26-2-openvz-686</​file>​
 +
 +  * On vérifie également que le daemon OpenVZ est actif :
 +
 +<code root>ps ax | grep vz</​code>​
 +
 +On doit obtenir quelque chose de ce genre :
 +
 +<file config retour de la commande>​2349 ?        S      0:00 [vzmond]</​file>​
 +
 +  * On configure correctement le sysctl (pour que les VE puissent accéder au NET entre autre) :
 +
 +<code root>​nano /​etc/​sysctl.conf</​code>​
 +
 +  * Et on ajoute ces lignes à la fin :
 +
 +<code bash>​net.ipv4.conf.default.forwarding=1
 +net.ipv4.conf.default.proxy_arp = 0
 +
 +## Ligne à rajouter (oubliée dans les tutoriels que l'on trouve sur le net).
 +
 +net.ipv4.ip_forward = 1 </​code> ​  
 +
 +  * On recharge ensuite les options :
 +
 +<code root>​sysctl -p</​code>​
 +
 +===== Activer NAT =====
 +
 +On va maintenant créer un script qui va activer la NAT dans iptables pour que les VE puissent accéder a internet (Exemple avec la carte Eth0 sur le serveur) :
 +
 +<code root>​nano $HOME/​nat_VE.sh</​code>​
 +
 +  * Que l'on rend exécutable (seul le root à besoin d'un accès) :
 +
 +<code root>​chmod 700 $HOME/​nat_VE.sh</​code> ​
 +
 +  * Et que l'on remplit comme ci-dessous :
 +
 +<code bash>#​!/​bin/​bash
 +# Active les Nattage au reboot
 + 
 +# Toutes les VE accède au NET
 +/​sbin/​iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to IP_DU_SERVEUR</​code>​
 +
 +  * On automatise ce script en l'​ajoutant à la crontab :
 +
 +
 +<code root>​crontab -e</​code>​
 +
 +  * Et on ajoute cette ligne :
 +
 +   ​@reboot /​root/​nat_VE.sh
 +
 +Egalement, pour des raisons de simplification sur d'​éventuels tutoriels trouvés sur Internet :
 +
 +<code root>ln -s /var/lib/vz /​vz</​code>​
 +
 +Création des machines virtuelles (VE)
 +
 +On attaque enfin la partie intéressante :-P\\ 
 +
 +====== Template ======
 +
 +Bon, tout d'​abord la notion de template.
 +
 +===== Notion de template =====
 +
 +Très simplement, un template est une archive tar.gz (généralement) qui va contenir la base du système d'​exploitaition de votre machine virtuelle. Elles se trouvent dans :
 +
 +   /​vz/​template/​cache
 +
 +Vous pouvez en obtenir ici :\\ 
 +http://​download.openvz.org/​contrib/​template/​precreated/​
 +
 +J'en ai testée pas mal, et à part celle de ubuntu, debian, et gentoo, le reste c'est un peu galère…\\ ​
 +Je mettrai plus tard à disposition des VE toutes prêtes qui intègrent des services comme un :
 +   ​VE-serveur-ftp,​
 +   une VE-serveur-nagios,​
 +   ​etc…
 +
 +//Bon, j'ai téléchargé mes templates, qu'​est-ce que je fais maintenant ?//
 +
 +====== Création de la machine virtuelle ======
 +
 +//Assez papoté// :-P
 +
 +===== On créé notre machine virtuelle : =====
 +
 +   vzctl create $numero_de_la_machine --ostemplate $votre_template_sans_extensions
 +
 +→ $numero_de_la_machine sera la numéro de votre machine virtuelle. La valeure minimale est 100\\ 
 +→ $votre_template_sans_extension sera le nom de l'​archive que vous avez placée dans /​vz/​template/​cache mais sans l'​extension (ne marche pas avec tar.bz2 je crois).
 +
 +===== Scripts de création de VE =====
 +
 +==== Un script perso de création de machines virtuelles. ====
 +
 +Des questions vont vous être posées comme l'​allocation de RAM, d'​espace disque ou de CPU.
 +
 +<note importante>​Je n'​offre aucune garantie sur le fonctionnement de ce script.</​note>​
 +
 +<code root>​nano $HOME/​creation_VE.sh</​code>​
 +
 +  * On le rend exécutable :
 +
 +<code root>​chmod 700 $HOME/​creation_VE.sh</​code>​
 +
 +  * On le remplit :
 +
 +<file script creation_VE.sh>#​!/​bin/​bash
 + 
 +clear
 + 
 +##################################​
 +#### Affichage des VE actives ####
 +##################################​
 + 
 +echo " ​   --------Les differents VE en cours d'​utilisation-------"​
 +vzlist
 + 
 +################################​
 +#### Selection du templates ####
 +################################​
 + 
 +PS3="​Selection -> "
 +echo "​Selectionner l'OS de votre template"​
 +select template in "​Ubuntu-8.04-x86"​ "​Debian-5.0-x86";​ do
 + 
 +#########################​
 +#### En cas d'​erreur ####
 +#########################​
 + 
 +if [ -z "​$template"​ ]
 +then
 +    echo "​Erreur:​ entrez un des chiffres proposes."​ 1>&2
 + 
 +##############################​
 +#### Cas du premier choix ####
 +##############################​
 + 
 +elif [ "​$REPLY"​ -eq 1 ]
 +then
 +    template=ubuntu-8.04-x86-minimal
 +    break
 + 
 +#############################​
 +#### Cas du second choix ####
 +#############################​
 + 
 +elif [ "​$REPLY"​ -eq 2 ]
 +then
 +    template=debian-5.0-x86-minimal
 +    break
 +fi
 +done
 + 
 +########################################​
 +#### Numero de la machine virtuelle ####
 +########################################​
 +echo -n "​Entrez le numero du VPS (min=100) : "
 +read numero
 + 
 +##################################​
 +#### Nom d'​hôte de la machine ####
 +##################################​
 +echo -n "​Entrez son hostname : "
 +read hostname
 + 
 +######################################################################################################​
 +#### Ip de la machine, je vous conseille de choisir un sous-réseau (on verra le nattage plus tard ####
 +######################################################################################################​
 +echo -n "​Entrez l'​adresse IP du VPS : "
 +read adresseip
 + 
 +##############################​
 +#### Serveur DNS de la VE ####
 +##############################​
 +echo -n "​Entrez le serveur de nom : "
 +read serveurdns
 + 
 +##############################################################​
 +#### Nettoyage de l'​affichage et affichage des partitions ####
 +##############################################################​
 +clear
 +df -h
 + 
 +########################################​
 +#### Taille à allouer à la VE en Mo ####
 +########################################​
 + 
 +echo -n "​Entrez le seuil d'​alerte d'​utilisation du disque dur en Mo : "
 +read diskutil
 + 
 +echo -n "​Entrer la limite d'​utilisation du disque dur en Mo : "
 +read diskmax
 + 
 +clear
 + 
 +#############################​
 +#### Limitation du CPU ? ####
 +#############################​
 +echo -n "​Entrer l'​utilisation CPU maximum en % /!\1cpu= /100% 2cpu= /​200%...(0=unlimited):​ "
 +read cpulimit
 + 
 +##############################​
 +#### Des stats sur les VE ####
 +##############################​
 +vzcpucheck -v
 + 
 +###########################​
 +#### Ressources des VE ####
 +###########################​
 +echo -n "​Entrer la capacite max d'​utilisation CPU en unites de temp : "
 +read cpuunits
 + 
 +###########################​
 +#### Création de la VE ####
 +###########################​
 +vzctl create "​$numero"​ --ostemplate "​$template"​
 + 
 +######################################​
 +#### Etablissement des paramètres ####
 +######################################​
 + 
 +vzctl set "​$numero"​ --nameserver "​$serveurdns"​ --hostname "​$hostname"​ --ipadd "​$adresseip"​ --onboot yes --diskspace "​$diskutil"​M:"​$diskmax"​M --kmemsize unlimited --oomguarpages unlimited ​ --privvmpages unlimited --vmguarpages unlimited --numproc unlimited --numtcpsock unlimited --numothersock unlimited --lockedpages unlimited --numpty unlimited --numiptent unlimited --shmpages unlimited --numsiginfo unlimited --numflock unlimited --numfile unlimited --cpuunits ​ "​$cpuunits"​ --cpulimit "​$cpulimit"​ --tcpsndbuf unlimited --tcprcvbuf unlimited --othersockbuf unlimited --dgramrcvbuf unlimited --dcachesize unlimited --diskinode unlimited --physpages unlimited --save
 + 
 +############################​
 +#### Demarrage de la VE ####
 +############################​
 +vzctl start "​$numero"</​file>​
 +
 +===== Configuration de la machine virtuelle =====
 +
 +Si vous n'avez pas envie de passer par mon script, voici un fichier de configuration tout prêt (explications ci-dessous) :
 +
 +   cat /​etc/​vz/​conf/​100.conf
 +
 +Résultat :
 +
 +<code bash>
 +ONBOOT="​yes"​
 + 
 +# UBC parameters (in form of barrier:​limit)
 +KMEMSIZE="​2147483647:​2147483647"​
 +LOCKEDPAGES="​2147483647:​2147483647"​
 +PRIVVMPAGES="​2147483647:​2147483647"​
 +SHMPAGES="​2147483647:​2147483647"​
 +NUMPROC="​2147483647:​2147483647"​
 +PHYSPAGES="​2147483647:​2147483647"​
 +VMGUARPAGES="​2147483647:​2147483647"​
 +OOMGUARPAGES="​2147483647:​2147483647"​
 +NUMTCPSOCK="​2147483647:​2147483647"​
 +NUMFLOCK="​2147483647:​2147483647"​
 +NUMPTY="​2147483647:​2147483647"​
 +NUMSIGINFO="​2147483647:​2147483647"​
 +TCPSNDBUF="​2147483647:​2147483647"​
 +TCPRCVBUF="​2147483647:​2147483647"​
 +OTHERSOCKBUF="​2147483647:​2147483647"​
 +DGRAMRCVBUF="​2147483647:​2147483647"​
 +NUMOTHERSOCK="​2147483647:​2147483647"​
 +DCACHESIZE="​2147483647:​2147483647"​
 +NUMFILE="​2147483647:​2147483647"​
 +AVNUMPROC="​180:​180"​
 +NUMIPTENT="​2147483647:​2147483647"​
 + 
 +# Disk quota parameters (in form of softlimit:​hardlimit)
 +DISKSPACE="​25360000:​25872000"​
 +DISKINODES="​2147483647:​2147483647"​
 +QUOTATIME="​0"​
 + 
 +# CPU fair sheduler parameter
 +CPUUNITS="​100000"​
 + 
 + 
 +VE_ROOT="/​var/​lib/​vz/​root/​$VEID"​
 +VE_PRIVATE="/​var/​lib/​vz/​private/​$VEID"​
 +OSTEMPLATE="​debian-5.0-x86"​
 +ORIGIN_SAMPLE="​vps.basic"​
 +IP_ADDRESS="​192.168.0.1"​
 +HOSTNAME="​iroffer"​
 +NAMESERVER="​208.67.222.222"​
 +CPULIMIT="​0"</​code>​
 +
 +==== Explications des valeurs importantes de ce fichier : ====
 +
 +<​code>​
 +→ CPULIMIT : pas de limitation CPU dans la VE
 +→ NAMESERVER : le serveur DNS
 +→ HOSTNAME : le nom d'​hôte de la VE
 +→ IP_ADDRESS : adresse IP de la VE
 +→ OSTEMPLATE : template sur lequel à été créé la VE
 +
 +VE_ROOT=”/​var/​lib/​vz/​root/​$VEID”
 +VE_PRIVATE=”/​var/​lib/​vz/​private/​$VEID” ← chemin du contenu de la VE
 +DISKSPACE=“25360000:​25872000” : espace disque alloué (ici 25 Go)
 +KMEMSIZE=“2147483647:​2147483647” : RAM allouée (ici 2 Go)
 +
 +ONBOOT=“yes” : démarrage automatique de la VE au reboot du serveur Physique.
 +Routage des ports extérieurs sur les VE</​code>​
 +
 +===== Rediriger les ports =====
 +
 +Ensuite il faut rediriger des ports pour que les VE soit accessible de l'​extérieur.
 +
 +Le script suivant évitera de passer par les fastidieuses commandes iptables.\\ ​
 +Il inscrira les “routes” additionnelles dans le script ”/​root/​natVE.sh” créé lors de l'​installation.
 +
 +  * On crée le script :
 +
 +<code root>​nano /​root/​natVE.sh</​code>​
 +
 +  * On rend le script exécutable :
 +
 +<code root>​chmod 700 /​root/​natVE.sh</​code>​
 +
 +  * Et on utilise le script suivant :
 +
 +    * Script pour activer la Nat :
 +
 +<code bash>#​!/​bin/​bash
 + 
 +#################################​
 +#### Afficher la conf reseau ####
 +#################################​
 + 
 +echo " ​   ---------Configuration réseau------------"​
 +cat /​etc/​network/​interfaces
 + 
 +#################################​
 +#### Afficher les VE activés ####
 +#################################​
 + 
 +echo " ​   ----------Les différents VE en cours d'​utilisation-------------"​
 +vzlist
 + 
 +##########################################​
 +#### Selection du protocole : TCD/UDP ####
 +##########################################​
 + 
 +PS3="​Selection -> "
 +echo "​Sélectionner le type de port"
 +select porttype in "​udp"​ "​tcp";​ do
 + 
 +#########################​
 +#### En cas d'​erreur ####
 +#########################​
 + 
 +if [ -z "​$porttype"​ ]
 +then
 +   echo "​Erreur:​ entrez un des chiffres proposés."​ 1>&2
 + 
 +##############################​
 +#### Cas du premier choix ####
 +##############################​
 + 
 +elif [ "​$REPLY"​ -eq 1 ]
 +then
 +    porttype=udp
 +    break
 + 
 +#############################​
 +#### Cas du second choix ####
 +#############################​
 + 
 +elif [ "​$REPLY"​ -eq 2 ]
 +then
 +   ​porttype=tcp
 +   break
 +fi
 +done
 + 
 +##################################​
 +#### Selection de l'​Interface ####
 +##################################​
 + 
 +PS3="​Selection -> "
 +echo "​Sélectionner l'​interface réseau du serveur accessible depuis internet"​
 +select ethtype in "​eth0"​ "​eth1"​ "​wlan0";​ do
 + 
 +#########################​
 +#### En cas d'​erreur ####
 +#########################​
 +if [ -z "​$ethtype"​ ]
 +then
 +   echo "​Erreur:​ entrez un des chiffres proposés."​ 1>&2
 + 
 +##############################​
 +#### Cas du premier choix ####
 +##############################​
 + 
 +elif [ "​$REPLY"​ -eq 1 ]
 +then
 +   ​ethtype=eth0
 +   break
 + 
 +#############################​
 +#### Cas du second choix ####
 +#############################​
 + 
 +elif [ "​$REPLY"​ -eq 2 ]
 +then
 +   ​ethtype=eth1
 +   break
 + 
 +################################​
 +#### Cas du troisieme choix ####
 +################################​
 +elif [ "​$REPLY"​ -eq 3 ]
 +then
 +   ​ethtype=wlan0
 +   break
 +fi
 +done
 + 
 +########################################​
 +#### Infos diverses pour le nattage ####
 +########################################​
 + 
 +echo -n "​Entrez le numéro de la VE : "
 +read numero
 + 
 +echo -n "​Entrer l'​adresse IP du VE : "
 +read adresseipve
 + 
 +echo -n "​Entrer l'​adresse IP de la carte réseau lan du serveur : "
 +read adresseipserv
 + 
 +##########################​
 +#### Saisie des ports ####
 +##########################​
 + 
 +echo -n "Etrez le port de destination sur le VE : "
 +read portve
 + 
 +echo -n "Etrez le port source (coté serveur) : "
 +read portserv
 + 
 +########################################​
 +#### Création de la règles iptables ####
 +########################################​
 + 
 +iptables -t nat -A PREROUTING -p "​$porttype"​ -d "​$adresseipserv"​ --dport "​$portserv" ​  -i "​$ethtype"​ -j DNAT --to-destination "​$adresseipve":"​$portve"​
 + 
 +######################################​
 +#### Copie de la règle de nattage ####
 +######################################​
 + 
 +echo "#### Nat sur VE "​$numero"​ port "​$adresseipserv":"​$portserv"​ -> "​$adresseipve":"​$portve""​ >> /​root/​nat_VE_Reboot.sh
 +echo "/​sbin/​iptables -t nat -A PREROUTING -p "​$porttype"​ -d "​$adresseipserv"​ --dport "​$portserv"​ -i "​$ethtype"​ -j DNAT --to-destination "​$adresseipve":"​$portve""​ >> /​root/​natVE.sh</​code>​
 +
 +  * On peut également inscrire le script comme une commande pour root :
 +
 +   echo "alias natVE='/​root/​scripts/​natVE.sh'"​ >> /​root/​.bashrc
 +
 +  * A la prochaine connection de root, il suffira de taper :
 +
 +   natVE
 +
 +Pour faire les choses proprement, vous devrez ajouter ces lignes en début de votre script :
 +
 +<code bash>#​!/​bin/​bash
 + 
 +# Vider les tables actuelles
 +/​sbin/​iptables -t filter -F
 + 
 +# Vider les regles personnelles
 +/​sbin/​iptables -t filter -X
 + 
 +# Vider les regle de nattage
 +/​sbin/​iptables -t nat -X
 +/​sbin/​iptables -t nat -F
 +/​sbin/​iptables -t mangle -X
 +/​sbin/​iptables -t mangle -F
 + 
 +# Ne pas casser les connexions etablies
 +/​sbin/​iptables -A INPUT -m state --state RELATED,​ESTABLISHED -j ACCEPT
 + 
 +# Interdire toute connexion entrante et sortante
 +/​sbin/​iptables -t filter -P INPUT DROP
 +/​sbin/​iptables -t filter -P FORWARD ACCEPT
 +/​sbin/​iptables -t filter -P OUTPUT ACCEPT
 + 
 +# Autoriser loopback
 +/​sbin/​iptables -t filter -A INPUT -i lo -j ACCEPT
 +/​sbin/​iptables -t filter -A OUTPUT -o lo -j ACCEPT
 + 
 +#Autoriser le net au VE
 +/​sbin/​iptables -t filter -A INPUT -i venet0 -j ACCEPT
 +/​sbin/​iptables -t filter -A OUTPUT -o venet0 -j ACCEPT
 + 
 +#Autoriser tout en sortie
 +/​sbin/​iptables -t filter -A OUTPUT -o eth0 -j ACCEPT
 + 
 +# ICMP (Ping)
 +/​sbin/​iptables -t filter -A INPUT -p icmp -j ACCEPT
 +/​sbin/​iptables -t filter -A OUTPUT -p icmp -j ACCEPT
 + 
 +### Quand les VE accedent au net c'est l'@ip publique qui est vue
 +/​sbin/​iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to IP_SERVEUR</​code>​
 +
 +===== Clonage d'une VE =====
 +
 +Soit 222 l'id de l'​ancienne ve et 333 l'id de la nouvelle ve à créer:
 +
 +  * On créé un script contenant :
 +<code bash>
 +
 +OLDVE=222 ​
 +NEWVE=333 ​
 +vzctl stop $OLDVE
 +mkdir /​vz/​root/​$NEWVE
 +cp /​etc/​vz/​conf/​$OLDVE.conf /​etc/​vz/​conf/​$NEWVE.conf
 +mkdir /​vz/​private/​$NEWVE
 +pushd /​vz/​private/​$OLDVE;​ tar c --numeric-owner * | tar x --numeric-owner -C /​vz/​private/​$NEWVE;​ popd
 +vi /​etc/​vz/​conf/​$NEWVE.conf # Change the IP_ADDRESS
 +vzctl start $NEWVE; vzctl start $OLDVE</​code>​
 +
 +===== Commandes utiles =====
 +
 +<​code>​
 +→ vzlist : liste les VE actives
 +→ vzlist -a : liste toutes les VE existantes
 +→ vzctl start $numero : demarre la VE possedant ce $numero
 +→ vzctl stop $numero : stop la VE possedant ce $numero
 +→ vzctl restart $numero : redemarre la VE possedant ce $numero
 +→ vzctl destroy $numero : detruit la VE possedant ce $numero. La VE doit être au préalable éteinte.
 +→ vzctl exec $numero ma_commande : exécute ma_commande dans la VE n° $numéro
 +→ vzctl create $numero –ostemplate $template_name : créé une VE à partir du $template_name se trouvant dans /​vz/​template/​cache
 +→ vzctl chkpnt $numero [–dumpfile <​name>​] : prend un snapshot de la VE
 +→ vzctl restore $numero [–dumpfile <​name>​] : restaure à partir d'un snapshot</​code>​
 +
 +====== Création d'une template ======
 +
 +Cet exemple est pour une Ubuntu Hardy 8.04
 +
 +Pre-requis, debootstrap :
 +
 +<code root>​apt-get install debootstrap</​code>​
 +
 +  * On va créér le répertoire de travail :
 +
 +<code root>cd /​vz/​private</​code>​
 +<code root>​mkdir hardy-chroot</​code>​
 +
 +  * On lance le debootstrap pour Ubuntu Hardy et on remplace ARCH par notre architecture :
 +
 +<code root>​debootstrap [--arch ''​ARCH''​] hardy hardy-chroot</​code>​
 +
 +  * Après le debootstrap,​ on va déplacer notre répertoire de travail vers un autre portant un numéro valide :
 +
 +<code root>mv /​vz/​private/​hardy-chroot /​vz/​private/​777</​code>​
 +
 +  * Tous les fichiers doivent appartenir à root :
 +
 +<code root>​chown -Rv root /​vz/​private/​777</​code>​
 +
 +  * On configure les paramètres de base de notre container :
 +
 +<code root>​vzctl set 777 --applyconfig vps.basic --save</​code>​
 +
 +  * Détermination de la template du container :
 +
 +<code root>​echo "​OSTEMPLATE=ubuntu-8.04"​ | sudo tee -a /​etc/​vz/​conf/​777.conf >/​dev/​null</​code>​
 +
 +  * On affecte une IP à la VE :
 +
 +<code root>​vzctl set 777 --ipadd x.x.x.x --save</​code>​
 +
 +  * On lui affecte maintenant un serveur DNS pour la résolution de nom :
 +
 +<code root>​vzctl set 777 --nameserver x.x.x.x --save</​code>​
 +
 +  * On supprime les fichiers qui vont poser problème :
 +
 +<code root>rm /​vz/​private/​777/​etc/​rcS.d/​S10udev /​vz/​private/​777/​etc/​rc2.d/​S11klogd</​code>​
 +
 +  * On démarre le container :
 +
 +<code root>​vzctl start 777</​code>​
 +
 +  * On entre dans le container :
 +
 +<code root>​vzctl enter 777</​code>​
 +
 +<note importante>​Attention !! Vérifiez bien que vous êtes dans la VE. Je ne serais pas tenu responsable des éventuels dégats que vous causerez sur votre machine autrement.
 +
 +  * On supprime les paquets inutiles :
 +
 +<code root>​apt-get remove --purge busybox-initramfs console-setup dmidecode eject \
 +ethtool initramfs-tools klibc-utils laptop-detect libiw29 libklibc \
 +libvolume-id0 mii-diag module-init-tools ntpdate pciutils pcmciautils ubuntu-minimal \
 +udev usbutils wireless-tools wpasupplicant xkb-data tasksel tasksel-data</​code>​
 +
 +<code root>​apt-get remove --purge --auto-remove dhcp3-client dhcp3-common</​code>​
 +
 +  * Nettoyage de udev :
 +
 +<code root>rm -fr /​lib/​udev</​code>​
 +
 +  * On stoppe les tty et on les suprimme:
 +
 +<code root>
 +initctl stop tty1</​code>​
 +<code root>​initctl stop tty2</​code>​
 +<code root>​initctl stop tty3</​code>​
 +<code root>​initctl stop tty4</​code>​
 +<code root>​initctl stop tty5</​code>​
 +<code root>​initctl stop tty6</​code>​
 +<code root>rm /​etc/​event.d/​tty*</​code>​
 +<code root>rm /​etc/​init/​tty*</​code>​
 +
 +  * On met les bons droits sur le /root :
 +
 +<code root>​chmod 700 /​root</​code>​
 +
 +  * On désactive le login root :
 +
 +<code root>​usermod -p ‘!’ root</​code>​
 +
 +  * On simule le modprobe :
 +
 +<code root>ln -s /bin/true /​sbin/​modprobe</​code>​
 +
 +  * On créé un dépôt minimaliste : COUNTRY=<​YOURCOUNTRY>​.
 +
 +<code root>cat >/​etc/​apt/​sources.list <<​EOF</​code>​
 +
 +<​code>#​ Binary
 +deb http://​${COUNTRY}archive.ubuntu.com/​ubuntu/​ hardy main restricted universe multiverse
 +deb http://​${COUNTRY}archive.ubuntu.com/​ubuntu/​ hardy-updates main restricted universe multiverse
 +deb http://​security.ubuntu.com/​ubuntu hardy-security main restricted universe multiverse
 + 
 +# Binary Canonical
 +# deb http://​archive.canonical.com/​ubuntu hardy partner
 + 
 +# Binary backport
 +# deb http://​${COUNTRY}archive.ubuntu.com/​ubuntu/​ hardy-backports main restricted universe multiverse
 + 
 +# Source
 +# deb-src http://​${COUNTRY}archive.ubuntu.com/​ubuntu/​ hardy main restricted universe multiverse
 +# deb-src http://​${COUNTRY}archive.ubuntu.com/​ubuntu/​ hardy-updates main restricted universe multiverse
 +# deb-src http://​security.ubuntu.com/​ubuntu hardy-security main restricted universe multiverse
 + 
 +# Source backport
 +# deb-src http://​${COUNTRY}archive.ubuntu.com/​ubuntu/​ hardy-backports main restricted universe multiverse
 + 
 +# Source Canonical
 +# deb-src http://​archive.canonical.com/​ubuntu hardy partner</​code>​
 +
 +  * On met à jour :
 +<code root>
 +apt-get update && apt-get upgrade</​code>​
 +
 +On installe des paquets utiles :
 +
 +<code root>​apt-get install ssh quota</​code>​
 +
 +  * On fixe un bug sur les clefs ssh :
 +
 +<code root>rm -f /​etc/​ssh/​ssh_host_*</​code>​
 +<code root>cat << EOF > /​etc/​rc2.d/​S15ssh_gen_host_keys</​code>​
 +
 +<code bash>#​!/​bin/​sh
 +ssh-keygen -f /​etc/​ssh/​ssh_host_rsa_key -t rsa -N ''​
 +ssh-keygen -f /​etc/​ssh/​ssh_host_dsa_key -t dsa -N ''​
 +rm -f \$0</​code>​
 +
 +<code root>​chmod a+x /​etc/​rc2.d/​S15ssh_gen_host_keys</​code>​
 +
 +  * On simule le mtab :
 +
 +<code root>rm -f /​etc/​mtab</​code>​
 +<code root>ln -s /​proc/​mounts /​etc/​mtab</​code>​
 +
 +  * On supprime le mtab au boot :
 +
 +<code root>​update-rc.d -f mtab.sh remove</​code>​
 +
 +  * On supprime les services inutiles au boot :
 +
 +<code root>​update-rc.d -f klogd remove</​code>​
 +
 +  * On définit le hostname par défaut :
 +
 +<code root>​echo "​localhost"​ > /​etc/​hostname</​code>​
 +
 +  * On définit le /etc/hosts :
 +
 +<code root>​echo "​127.0.0.1 localhost.localdomain localhost"​ > /​etc/​hosts</​code>​
 +
 +  * On ajoute les ptys à /dev :
 +
 +<code root>cd /dev && /​sbin/​MAKEDEV ptyp</​code>​
 +
 +  * On supprime les serveurs DNS :
 +
 +<code root>​echo ""​ > /​etc/​resolv.conf</​code>​
 +
 +  * On nettoie le cache de apt (éviter de faire une VE lourde) :
 +
 +<code root>​apt-get clean</​code>​
 +
 +  * On nettoie aussi les logs :
 +
 +<code root>​echo ""​ > /​var/​log/​messages;​ > /​var/​log/​auth.log;​ > /​var/​log/​kern.log;​ > /​var/​log/​bootstrap.log;​ \
 +> /​var/​log/​dpkg.log;​ > /​var/​log/​syslog;​ > /​var/​log/​daemon.log;​ > /​var/​log/​apt/​term.log;​ rm -f /​var/​log/​*.0 ​
 +/​var/​log/​*.1</​code>​
 +
 +  * Et voilà, on quitte la VE :
 +
 +<code root>​exit</​code>​
 +
 +===== Préparation de la compression du template. =====
 +
 +On supprime l'ip temporaire qu'on lui a affecté.
 +
 +<code root>​vzctl set 777 --ipdel all --save</​code>​
 +
 +  * On stoppe la VE :
 +
 +<code root>​vzctl stop 777</​code>​
 +
 +  * On se met à l'​intérieur de la VE :
 +
 +<code root>cd /​vz/​private/​777</​code>​
 +
 +  * Maintenant, on compresse notre template :
 +
 +<code root>tar czfv /​vz/​template/​cache/​ubuntu-8.04-<​arch>​-minimal.tar.gz</​code>​ .
 +
 +  * On procède au nettoyage :
 +
 +<code root>​vzctl destroy 777</​code>​
 +<code root>rm -f /​etc/​vz/​conf/​777.conf.destroyed</​code>​
 +
 +===== Proxmox =====
 +
 +==== Introduction ====
 +
 +Proxmox Virtual Environment est un logiciel libre de virtualisation,​ plus précisément un hyperviseur de machine virtuelle. Il est développé et maintenu par Proxmox Server Solutions GmbH avec un support financier de l'​Internet Foundation Austria (IPA).
 +
 +Proxmox VE installe les outils complets du système d'​exploitation et de gestion en 3 à 5 minutes (dépend du matériel utilisé).
 +
 +Ce logiciel est un « système à nu ». Le terme de « système à nu » signifie que vous commencez à partir d'un serveur vide et qu'il n'y a donc nul besoin d'​installer un système d'​exploitation auparavant.
 +
 +Le logiciel inclut :
 +
 +    * Système d'​exploitation complet (Debian Lenny 64 bits)
 +    * Partitionnement de disque dur avec LVM2
 +    * Noyau Proxmox VE avec support de OpenVZ et KVM
 +    * Outils de sauvegarde et de restauration
 +    * Interface d'​administration par le web
 +
 +source : Wikipédia on Proxmox :-P
 +
 +Bon, plus simplement, ça va vous permettre de faire tout ce que vous faisiez avec OpenVZ (voir même plus vu que ça gère du KVM et du Qemu).
 +Screenshots
 +
 +Ca vaut toujours mieux qu'un long discours :-P :
 +
 +Informations générales : \\ 
 +{{/​openvz/​proxmox2.jpg?​700}}\\ ​
 +{{/​openvz/​proxmo_1.png?​700}}\\ ​
 +{{/​openvz/​proxmox_ajout_template.png?​700}}\\ ​
 +{{/​openvz/​proxmox_win2k3vm.png?​700}}\\ ​
 +{{/​openvz/​proxmox_windowsubuntu.png?​700}}
  

Pied de page des forums

Propulsé par FluxBB