

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>[ libresys ]</title>
	<atom:link href="http://www.libresys.fr/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.libresys.fr</link>
	<description>Logiciels libres et administration système et réseau</description>
	<lastBuildDate>Fri, 27 Jan 2012 16:19:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Mettre en oeuvre un cluster haute disponibilité pour exécuter des machines virtuelles OpenVZ et KVM</title>
		<link>http://www.libresys.fr/2010/05/10/mettre-en-oeuvre-un-cluster-haute-disponibilite-pour-executer-des-machines-virtuelles-openvz-et-kvm/</link>
		<comments>http://www.libresys.fr/2010/05/10/mettre-en-oeuvre-un-cluster-haute-disponibilite-pour-executer-des-machines-virtuelles-openvz-et-kvm/#comments</comments>
		<pubDate>Sun, 09 May 2010 23:00:17 +0000</pubDate>
		<dc:creator>NaNo</dc:creator>
				<category><![CDATA[Haute disponibilité]]></category>
		<category><![CDATA[Tutoriel]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[KVM]]></category>
		<category><![CDATA[OpenVZ]]></category>

		<guid isPermaLink="false">http://www.libresys.fr/?p=274</guid>
		<description><![CDATA[EDIT : Article et documentations associées actualisées pour prendre en compte Debian 6 sur les systèmes hôtes et la possibilité d&#8217;exécuter des machines virtuelles KVM. Dans ce tutoriel je vais présenter comment mettre en oeuvre une architecture cluster haute disponibilité, &#8230;<p class="read-more"><a href="http://www.libresys.fr/2010/05/10/mettre-en-oeuvre-un-cluster-haute-disponibilite-pour-executer-des-machines-virtuelles-openvz-et-kvm/">Lire la suite &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.libresys.fr/2010/05/10/mettre-en-oeuvre-un-cluster-haute-disponibilite-pour-executer-des-machines-virtuelles-openvz-et-kvm/cluster/" rel="attachment wp-att-275"><img class="alignleft  wp-image-275" title="cluster" src="http://www.libresys.fr/wp-content/uploads/2012/01/cluster.jpg" alt="" width="230" height="155" /></a><em>EDIT : Article et documentations associées actualisées pour prendre en compte Debian 6 sur les systèmes hôtes et la possibilité d&#8217;exécuter des machines virtuelles KVM.</em></p>
<p>Dans ce tutoriel je vais présenter comment mettre en oeuvre une architecture cluster haute disponibilité, à base de serveurs Debian dont le but est de constituer une plate-forme matérielle tolérante aux pannes pour héberger des machines virtuelles OpenVZ ou KVM.<span id="more-274"></span></p>
<p>&nbsp;</p>
<h1>Quel est le but recherché ?</h1>
<p>Il s&#8217;agit de créer un groupe de serveurs pouvant exécuter des machines virtuelles de type OpenVZ ou KVM, organisés au sein d&#8217;une architecture matérielle permettant à ces machines virtuelles d&#8217;être exécutées par n&#8217;importe lequel de ces serveurs (mais une machine virtuelle ne s&#8217;exécute que sur un seul à la fois) et d&#8217;être déplacées d&#8217;un serveur à un autre aussi rapidement que possible, de manière à ce qu&#8217;en cas de panne d&#8217;un serveur, les machines virtuelles qu&#8217;exécutait le serveur défaillant puissent être instantanément relancées sur les autres serveurs du cluster. La faculté du cluster à permettre de déplacer instantanément les machines virtuelles d&#8217;un serveur à un autre constitue par ailleurs un énorme avantage pour l&#8217;administrateur système qui a en charge la maintenance des serveurs physiques et virtuels.</p>
<p>Ce type d&#8217;architecture est qualifiée de &laquo;&nbsp;haute disponibilité&nbsp;&raquo; en raison de sa grande tolérance aux pannes. En effet, il n&#8217;existe pas de <a href="http://fr.wikipedia.org/wiki/Point_individuel_de_d%C3%A9faillance">point individuel de défaillance</a> dans cette architecture, car tous les équipements et composants sont redondants.</p>
<p>En complément de la faculté du cluster à permettre la récupération rapide des services d&#8217;un serveur défaillant, il est possible d&#8217;installer, sur les serveurs physiques, un logiciel de gestion de cluster dont la fonction est de superviser le bon fonctionnement de ces derniers, et d&#8217;automatiser les actions de relance des services lorsqu&#8217;un serveur est défaillant. Un tel logiciel permet de relancer encore plus rapidement les services tombés en même temps que le serveur défaillant, car il ne nécessite pas d&#8217;intervention humaine. Je n&#8217;aborderai cependant pas cet aspect dans cet article. En effet, après avoir qualifié architectures matérielles et logicielles différentes et administré plusieurs clusters différents au cours de ces 10 dernières années, il se trouve que la solution qui convient le mieux à mes besoins n&#8217;utilise pas un tel logiciel. En outre, les deux logiciels de ce type que j&#8217;ai été amené à utiliser, SGI Failsafe et Redhat Cluster m&#8217;ont davantage posé de problèmes (déclenchements intempestifs, prises de décisions inadaptées&#8230;) qu&#8217;apporté une assistance lors de pannes. C&#8217;est pourquoi j&#8217;ai préféré m&#8217;en passer, du moins pour ce cluster.</p>
<p>L&#8217;architecture obtenue est décrite dans le schéma ci-dessous :</p>
<div id="attachment_280" class="wp-caption aligncenter" style="width: 1133px"><a href="http://www.libresys.fr/2010/05/10/mettre-en-oeuvre-un-cluster-haute-disponibilite-pour-executer-des-machines-virtuelles-openvz-et-kvm/archi_serveurs_virtualisation/" rel="attachment wp-att-280"><img class=" wp-image-280 " title="archi_serveurs_virtualisation" src="http://www.libresys.fr/wp-content/uploads/2012/01/archi_serveurs_virtualisation.png" alt="Architecture haute disponibilité pour l'hébergement de machines virtuelles OpenVZ et KVM" width="1123" height="794" /></a><p class="wp-caption-text">Architecture haute disponibilité pour l&#39;hébergement de machines virtuelles OpenVZ et KVM</p></div>
<p>&nbsp;</p>
<p>Dans ce schéma, seuls deux liens Fiber Channel et deux liens ethernet sont représentés, mais évidemment, c&#8217;est chaque serveur qui doit disposer de deux liens FC et deux liens ethernet.</p>
<p>&nbsp;</p>
<h1>Quels matériels faut-il ?</h1>
<p>Pour mettre en oeuvre un tel cluster, il faut les matériels suivants :</p>
<ul>
<li>au moins deux serveurs physiques, comportant chacun deux ports Fiber Channel (sous la forme de 2 cartes x 1 port, ou 1 carte x 2 ports), deux cartes réseau (les serveurs récents ont tous au moins deux ports ethernet). Il est possible de batir la même architecture avec un SAN de type ISCSI au lieu de Fiber Channel, auquel cas les serveurs devront plutôt comporter 4 ports ethernet.</li>
<li>deux switches Fiber Channel (ou deux switches ethernet configurés pour Jumbo Frames si SAN de type ISCSI)</li>
<li>au moins une baie de disques Fiber Channel (ou ISCSI)</li>
</ul>
<p>Les contraintes de mise en oeuvre sont les suivantes :</p>
<ul>
<li>Les machines virtuelles doivent être intégralement stockées dans une baie de disques externe aux serveurs, de sorte qu&#8217;en panne d&#8217;un serveur, un autre puisse immédiatement relancer les services que rendait le premier.</li>
<li>Les serveurs peuvent être matériellement différents, mais aucun ne doit être particulier, afin qu&#8217;ils restent interchangeables. Ils doivent être configurés tous de la même façon, et ne doivent pas fournir un service qui ne soit pas virtualisé ou qui ne soit pas stocké dans une baie de disques.</li>
<li>Tout ce qui est dans la baie de disques doit être redondant (alimentations, contrôleurs, connectique) et les disques configurés en RAID. Selon vos besoins de sécurité et de performance vous pourrez opter pour <a title="RAID (Wikipedia)" href="http://fr.wikipedia.org/wiki/RAID_%28informatique%29">le niveau de RAID le plus adapté. </a>Après avoir fonctionné un moment en RAID 5, j&#8217;ai rencontré des problèmes de performances j&#8217;utilise depuis le RAID 10.</li>
<li>Je n&#8217;utilise pas de système de fichiers permettant des accès concurrents depuis plusieurs serveurs, tel que OCFS ou GFS. Après avoir qualifié ces deux systèmes de fichiers (certes, c&#8217;était en 2005 ou 2006), j&#8217;en étais arrivé à la conclusion que OCFS était performant mais incomplet (pas de support des ACL dont j&#8217;avais besoin) et que GFS était un monstre de lenteur. En outre, pour avoir déjà eu à faire des vérifications de système de fichiers (fsck) je suis un peu réticent à l&#8217;idée de mettre &laquo;&nbsp;tous mes oeufs dans le même panier&nbsp;&raquo;, c&#8217;est pourquoi je n&#8217;ai pas essayé de nouvelles versions depuis. Cela implique que chaque machine virtuelle est stockée dans un volume virtuel de la baie de disque qui lui est dédié, et qui est partitionné et formaté (en ext4).</li>
<li>L&#8217;accès au SAN par les serveurs peut se faire par deux chemins différents, redondants l&#8217;un de l&#8217;autre. Chaque chemin passe par un switch SAN différent et aboutit sur un contrpoleur différent de la baie de disques. Les volumes sont présentés par la baie de disques sur chaque contrôleur, ce qui implique que les serveurs voient les volumes deux fois, mais avec le même WWNN. La couche logicielle &laquo;&nbsp;multipath&nbsp;&raquo; permet au système d&#8217;exploitation de gérer cette redondance d&#8217;accès automatiquement. Suivant le mode de fonctionnement des contrôleurs des baies de disques, les deux ports Fiber Channel peuvent soit fonctionner en mode actif/passif ou actif/actif. Cependant, chaque volume aura un chemin actif et un chemin passif.</li>
<li>Les cartes réseau des serveurs sont agrégées (bonding) en mode actif/passif et reliées a deux switches ethernet différents, configurés avec le spanning tree activé. Cela autorise la défaillance &laquo;&nbsp;transparente&nbsp;&raquo; d&#8217;un switch ethernet. La configuration des switches n&#8217;est pas abordée dans ce tutoriel.</li>
</ul>
<h1>Installation</h1>
<p>La documentation d&#8217;installation de ce cluster est disponible dans les articles suivants (wiki) :</p>
<div>
<ul>
<li>
<div><a title="systeme:installation_d_un_serveur_debian_-_serveur_simple" href="/wiki/doku.php/systeme:installation_d_un_serveur_debian_-_serveur_simple">Installation d&#8217;un serveur Debian &#8211; serveur de base</a></div>
</li>
<li>
<div><a title="systeme:installation_d_un_serveur_debian_-_hote_openvz_kvm" href="/wiki/doku.php/systeme:installation_d_un_serveur_debian_-_hote_openvz_kvm">Installation d&#8217;un serveur Debian &#8211; hôte OpenVZ + KVM</a></div>
</li>
<li>
<div><a title="systeme:installation_d_un_noeud_debian_openvz_kvm" href="/wiki/doku.php/systeme:installation_d_un_noeud_debian_openvz_kvm">Installation d&#8217;un noeud du cluster pour machines virtuelles OpenVZ et KVM</a></div>
</li>
<li>
<div><a title="systeme:installation_d_un_noeud_debian_openvz_kvm" href="/wiki/doku.php/systeme:installation_d_un_noeud_debian_openvz_kvm">Outils d&#8217;administration du cluster</a></div>
</li>
<li>
<div><a title="systeme:installation_d_un_noeud_debian_openvz_kvm" href="/wiki/doku.php/systeme:installation_d_un_noeud_debian_openvz_kvm">Création d&#8217;une unité dans le SAN pour une machine virtuelle</a></div>
</li>
<li>
<div><a title="systeme:installation_d_un_noeud_debian_openvz_kvm" href="/wiki/doku.php/systeme:installation_d_un_noeud_debian_openvz_kvm">Création d&#8217;une machine virtuelle OpenVZ Debian</a></div>
</li>
<li>
<div><a title="systeme:installation_machine_virtuelle_kvm_cluster" href="/wiki/doku.php/systeme:installation_machine_virtuelle_kvm_cluster">Création d&#8217;une machine virtuelle KVM sur le cluster</a></div>
</li>
</ul>
</div>
<div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.libresys.fr/2010/05/10/mettre-en-oeuvre-un-cluster-haute-disponibilite-pour-executer-des-machines-virtuelles-openvz-et-kvm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mettre en oeuvre un VPN intranet pour l&#8217;interconnexion de sites, sécurisé, économique, et facile à maintenir</title>
		<link>http://www.libresys.fr/2009/10/27/mettre-en-oeuvre-un-vpn-intranet-pour-linterconnexion-de-sites-securise-economique-et-facile-a-maintenir/</link>
		<comments>http://www.libresys.fr/2009/10/27/mettre-en-oeuvre-un-vpn-intranet-pour-linterconnexion-de-sites-securise-economique-et-facile-a-maintenir/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 21:35:11 +0000</pubDate>
		<dc:creator>NaNo</dc:creator>
				<category><![CDATA[Réseau]]></category>
		<category><![CDATA[Tutoriel]]></category>
		<category><![CDATA[OpenVPN]]></category>
		<category><![CDATA[OpenWRT]]></category>
		<category><![CDATA[OSPF]]></category>
		<category><![CDATA[VPN]]></category>

		<guid isPermaLink="false">http://www.libresys.fr/?p=300</guid>
		<description><![CDATA[Voici un article dans lequel je décris le VPN que j&#8217;ai mis en oeuvre. Il s&#8217;agit de répondre à un contexte qui est le suivant : environ 70 sites distants, faiblement peuplés (5 à 50 utilisateurs) à interconnecter à des &#8230;<p class="read-more"><a href="http://www.libresys.fr/2009/10/27/mettre-en-oeuvre-un-vpn-intranet-pour-linterconnexion-de-sites-securise-economique-et-facile-a-maintenir/">Lire la suite &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p><a style="color: #4a630f; text-decoration: none;" href="http://www.libresys.fr/2009/10/27/mettre-en-oeuvre-un-vpn-intranet-pour-linterconnexion-de-sites-securise-economique-et-facile-a-maintenir/logo-openvpn/" rel="attachment wp-att-301"><img class="alignleft size-full wp-image-301" style="border-style: initial; border-color: initial; border-width: initial;" title="logo-openvpn" src="http://www.libresys.fr/wp-content/uploads/2012/01/logo-openvpn.png" alt="" width="208" height="54" /></a></p>
<p>Voici un article dans lequel je décris le VPN que j&#8217;ai mis en oeuvre.</p>
<p>Il s&#8217;agit de répondre à un contexte qui est le suivant :</p>
<ul>
<li>environ 70 sites distants, faiblement peuplés (5 à 50 utilisateurs) à interconnecter à des sites centraux dans lesquels se trouvent la majorité des ressources informatiques</li>
<li>le VPN doit fournir une disponibilité importante, et doit être tolérant à la panne d&#8217;un serveur ou d&#8217;une ligne sur les sites centraux, c&#8217;est à dire on peut accepter de &laquo;&nbsp;perdre&nbsp;&raquo; un site distant momentanément, mais pas tous à la fois =&gt; pas de point central unique d&#8217;interconnexion</li>
<li>il doit être possible de filtrer le trafic par un firewall</li>
<li>il doit être possible de prioriser le trafic</li>
<li>il doit être maintenable par des personnels &laquo;&nbsp;réseau&nbsp;&raquo; n&#8217;ayant pas de compétence en administration système</li>
<li>il ne doit pas être dépendant d&#8217;un unique fournisseur de réseau =&gt; passage par internet</li>
<li>évidemment, le trafic doit être chiffré pour en assurer la confidentialité</li>
<li>et comme toujours, aussi économique que possible <img src='http://www.libresys.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
<p><span id="more-300"></span>Après consultation de l&#8217;opérateur historique, ce dernier nous proposait une offre de VPN MPLS (Multi Protocol Label Switching) &laquo;&nbsp;tout compris&nbsp;&raquo;, lignes, routeurs, maintenance, configuration, etc, mais j&#8217;ai conseillé mon entrteprise de ne pas retenir cette solution qui ne m&#8217;a pas convaincu pour diverses raisons techniques que je n&#8217;exposerai pas ici, c&#8217;est hors de propos.</p>
<p>Je résumerai simplement en disant que le résultat que j&#8217;ai obtenu en configurant un VPN par moi même, tel que décrit dans ce tutoriel, est supérieur à la solution qui nous avait été proposé en bien des points :</p>
<ul>
<li>possibilité d&#8217;exploiter des lignes ADSL de tout type, et de profiter des meilleurs prix</li>
<li>possibilité de mixer les fournisseurs de réseau</li>
<li>davantage de fonctionnalités sur les routeurs (qos et firewall partout) et possibilité de prendre la main sur les routeurs, ce qui est très appréciable pour faire certains diagnostics à distance</li>
<li>et 70 % moins cher chaque année, ce qui se traduit par une économie d&#8217;environ 100 000 € par an dans notre cas</li>
</ul>
<p>En quelques mots, le VPN ainsi conçu s&#8217;appuie :</p>
<ul>
<li>des serveurs centraux, qui font office de routeur, sous Debian, avec OpenVPN pour la partie VPN et Quagga pour gérer OSPF, nécessaire au routage</li>
<li>des routeurs distants Linksys WRT54GL équipés d&#8217;un firmware OpenWRT spécifiquement conçu pour mes besoins, incluant notamment OpenVPN, des outils de QOS, des fonctions de firewall avec iptables, la possibilité d&#8217;analyser le trafic avec tcpdump&#8230;</li>
<li>un Builder OpenWRT compilé spécifiquement pour permettre de produire à la demande des firmwares spécifiques des sites distants à équiper</li>
<li>des lignes xDSL, mais on peut tout aussi bien utiliser n&#8217;importe quel type de lien IP</li>
</ul>
<p>Je suis conscient que le tutoriel est un peu &laquo;&nbsp;brut de décoffrage&nbsp;&raquo;. Initialement, je voulais le commenter davantage, expliquer beaucoup plus les diverses portions de configuration, de telle façon que celui qui souhaiterait s&#8217;en inspirer sache le pourquoi de tel ou tel choix. Mais cela fait longtemps que je ne trouve pas le temps de le faire, alors je préfère le sortir à peu près tel quel. Il se trouvera peut-être un courageux pour l&#8217;utiliser, et pourquoi pas l&#8217;améliorer. Du coup, les versions de logiciels cités dans le guide sont un peu anciennes, mais cela ne change pas le principe de fonctionnement.</p>
<p><strong>La suite du tutoriel est dans le wiki : <a href="http://www.libresys.fr/wiki/doku.php/reseau">http://www.libresys.fr/wiki/doku.php/reseau</a> à la section VPN Intranet.</strong></p>
<p>Bonne lecture, et n&#8217;hésitez pas à me faire part de vos éventuels commentaires ou remarques.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.libresys.fr/2009/10/27/mettre-en-oeuvre-un-vpn-intranet-pour-linterconnexion-de-sites-securise-economique-et-facile-a-maintenir/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quoi virtualiser ?</title>
		<link>http://www.libresys.fr/2009/02/19/quoi-virtualiser/</link>
		<comments>http://www.libresys.fr/2009/02/19/quoi-virtualiser/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 13:07:11 +0000</pubDate>
		<dc:creator>NaNo</dc:creator>
				<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[OpenVZ]]></category>

		<guid isPermaLink="false">http://www.libresys.fr/?p=231</guid>
		<description><![CDATA[Après avoir vu comment virtualiser des serveurs, il est temps de se poser la question de la répartition des applications et des services réseau sur un ensemble de serveurs, qu&#8217;ils soient physiques ou virtuels. Dans cet article, je vais tenter &#8230;<p class="read-more"><a href="http://www.libresys.fr/2009/02/19/quoi-virtualiser/">Lire la suite &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p>Après avoir vu comment virtualiser des serveurs, il est temps de se poser la question de la répartition des applications et des services réseau sur un ensemble de serveurs, qu&#8217;ils soient physiques ou virtuels. Dans cet article, je vais tenter de décrire la façon dont j&#8217;organise la répartion et le regroupement des applications et des services réseau parmi un ensemble de serveurs virtuels.<span id="more-231"></span></p>
<p>Il ne s&#8217;agit pas un ensemble de règles absolues de bonnes pratiques qu&#8217;il est possible de transposer dans tous les cas.</p>
<p>D&#8217;abord, parce que dans les principes suivants je privilégie la fiabilité et la stabilité du système d&#8217;information et la simplicité d&#8217;administration des serveurs, parfois au détriment de l&#8217;optimisation des performances et de la consommation des ressources physiques, que je relègue au second plan. Mes priorités ne seront probablement pas les mêmes que les votres.</p>
<p>Ensuite, parce qu&#8217;il y a une part de subjectivité dans les choix que je peux faire lorsqu&#8217;il s&#8217;agit de réunir au sein d&#8217;un même serveur virtuel les différents composants nécessaires au bon fonctionnement d&#8217;un service, ou au contraire de les répartir sur plusieurs serveurs virtuels.</p>
<p>Ceci étant dit, je vais essayer de décrire en quelques &laquo;&nbsp;règles&nbsp;&raquo; la façon dont je m&#8217;y prends pour organiser la répartition des services en serveurs virtuels.</p>
<ol>
<li><strong>Si je peux installer un service dans un serveur virtuel, je le fais.</strong> Il s&#8217;agit d&#8217;éviter autant que possible d&#8217;installer des logiciels directement sur un serveur physique. En effet, le temps passé, parfois sur plusieurs années, à peaufiner le bon fonctionnement d&#8217;un service est trop précieux pour risquer de devoir le passer à nouveau lorsque vient le moment de remplacer un serveur en fin de vie et qu&#8217;il faut réinstaller le système puis les logiciels, etc&#8230;</li>
<li><strong>1 service = 1 serveur virtuel</strong>. Lorsque deux services sont indépendants je les installe dans deux serveurs virtuels différents car il est important de préserver cette indépendance entres les services. Je veux notamment pouvoir arrêter ou faire évoluer un serveur sans impacter plus que nécessaire. Différemment, si deux services A et B à priori indépendants se trouvaient dans le même serveur virtuel, une intervention ultérieure sur le serveur nécessaire pour un service pourrait avoir des incidences pour l&#8217;autre service.</li>
<li><strong>Lorsque plusieurs composants sont nécessaires au bon fonctionnement d&#8217;un service je les installe sur le même serveur virtuel.</strong> Par exemple, j&#8217;installe une application et son serveur de base de données sur le même serveur virtuel.</li>
</ol>
<p>Dans certains cas les règles 2 et 3 pourront sembler en opposition. Je prends l&#8217;exemple simple d&#8217;une application Java/Tomcat qui, pour fonctionner, a besoin d&#8217;un serveur LDAP pour authentifier les utilisateurs et d&#8217;un serveur MySQL pour stocker ses données.</p>
<p>Considérons le serveur LDAP. Par sa nature, il est vraisemblablement utilisé (ou sera utilisé) par plusieurs autres applications. Aussi, il est préférable de l&#8217;installer sur un serveur virtuel dédié, afin de ne pas rendre les autres applications dépendantes du serveur de l&#8217;application A. Si en revanche, il est certain qu&#8217;il n&#8217;est utile qu&#8217;à cette application et ne doit jamais être utilisé par un autre service réseau, alors je l&#8217;installe sur le même serveur virtuel que l&#8217;application.</p>
<p>Considérons le serveur MySQL. S&#8217;agissant des données de l&#8217;application, j&#8217;installe le serveur MySQL dans le même serveur virtuel que l&#8217;application. Il serait évidemment possible d&#8217;utiliser un serveur MySQL distant pour y installer les bases de plusieurs applications, mais dans ce cas on rendrait les serveurs virtuels hébergeant les applications dépendants du serveur virtuel hébergeant MySQL. Aussi je préfère multiplier les serveurs de bases de données, quitte à ce que ces derniers n&#8217;hébergent qu&#8217;une seule base.</p>
<p>Sur la base de ce cet exemple, j&#8217;utiliserais deux serveurs virtuels : un pour LDAP, un pour l&#8217;application Java/Tomcat + MySQL.</p>
<p>Ces quelques &laquo;&nbsp;règles&nbsp;&raquo; présentent l&#8217;avantage d&#8217;isoler correctement les services réseau et les applications et de simplifier la maintenance globale des serveurs.</p>
<p>Il est malgré tout parfois nécessaire d&#8217;y faire des entorses. Par exemple, j&#8217;utilise aussi un serveur Oracle comme serveur de base de données. Dans ce cas, les restrictions imposées par la licence d&#8217;utilisation m&#8217;empêchent d&#8217;installer autant de serveurs que je voudrais et à mettre plusieurs bases sur le même serveur&#8230; même si quelle que soit la répartition le nombre de bases de données et l&#8217;utilisation qui en est faite sont les mêmes.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.libresys.fr/2009/02/19/quoi-virtualiser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Checkpointing, (live) migration, et sauvegarde/restauration de serveurs virtuels OpenVZ</title>
		<link>http://www.libresys.fr/2008/12/28/checkpointing-live-migration-et-sauvegarderestauration-de-serveurs-virtuels-openvz/</link>
		<comments>http://www.libresys.fr/2008/12/28/checkpointing-live-migration-et-sauvegarderestauration-de-serveurs-virtuels-openvz/#comments</comments>
		<pubDate>Sun, 28 Dec 2008 22:16:27 +0000</pubDate>
		<dc:creator>NaNo</dc:creator>
				<category><![CDATA[Tutoriel]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[OpenVZ]]></category>

		<guid isPermaLink="false">http://www.libresys.fr/?p=204</guid>
		<description><![CDATA[A présent que la base de la création et de la gestion de serveurs virtuels OpenVZ est posée, nous allons nous pencher sur une possibilité très intéressante offerte par OpenVZ : le checkpointing. Nous verrons également comment cette fonctionnalité peut &#8230;<p class="read-more"><a href="http://www.libresys.fr/2008/12/28/checkpointing-live-migration-et-sauvegarderestauration-de-serveurs-virtuels-openvz/">Lire la suite &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p><img class="size-medium wp-image-30 alignleft" title="openvz-wiki-logo" src="http://www.libresys.fr/wp-content/uploads/2008/09/openvz-wiki-logo.png" alt="" width="135" height="135" /></p>
<p>A présent que la base de la création et de la gestion de serveurs virtuels OpenVZ est posée, nous allons nous pencher sur une possibilité très intéressante offerte par OpenVZ : le checkpointing. Nous verrons également comment cette fonctionnalité peut aider l&#8217;administrateur système à gérer des aspects qu&#8217;il ne doit pas négliger, à savoir, la sauvegarde et la restauration des serveurs, et le déplacement des services logiciels d&#8217;un serveur physique à un autre, par exemple lors du remplacement d&#8217;un matériel vieillissant.</p>
<p><span id="more-204"></span></p>
<p><strong>Checkpointing de serveur virtuel<br />
</strong></p>
<p>Dans la terminologie OpenVZ, le checkpointing consiste à demander, depuis le serveur physique, à figer l&#8217;état d&#8217;un serveur virtuel et à stocker cet état dans un fichier. Ce fichier contient ainsi les processus qu&#8217;exécutait le serveur virtuel et l&#8217;état de leur mémoire au moment du checkpoint. En revanche, il ne contient pas les fichiers de l&#8217;arborescence du serveur virtuel, ce qui rend le checkpoint rapide à réaliser (à peine quelques secondes).</p>
<p>Lorsque qu&#8217;un serveur a subi un checkpoint, il est retiré de la liste des serveurs en cours d&#8217;exécution : la commande vzlist ne le montre plus.</p>
<p>Ce fichier de checkpoint peut par la suite être utilisé pour restaurer le serveur exactement dans l&#8217;état dans lequel il avait été figé. Du point de vue du serveur virtuel restauré, c&#8217;est comme s&#8217;il ne s&#8217;était rien passé hormis un bond en avant dans le temps puisque les processus n&#8217;auront pas &laquo;&nbsp;vu passer&nbsp;&raquo; les secondes pendant lesquelles le serveur était figé. Si des clients étaient connectés par le réseau au serveur, et que le temps pendant lequel le serveur est figé est inférieur aux durées de timeout des connexion tcp, alors les clients ne s&#8217;apercevront de rien, ou guère plus que si le cordon réseau avait été débranché pendant quelques secondes.</p>
<p>Pour réaliser un checkpoint du serveur virtuel n° 123 (supposé démarré), il suffit de taper la commande suivante (en précisant le chemin vers le fichier qui devra contenir le dump) :</p>
<pre>vzctl chkpnt 123  --dumpfile /chemin/vers/123.dump</pre>
<p>Vous pouvez contrôler avec vzlist qu&#8217;une fois le checkpoint réalisé le serveur n&#8217;est plus en fonctionnement.</p>
<p>Pour restaurer le serveur dans l&#8217;état dans lequel il était au moment du checkpoint, il suffit ensuite de taper la commande suivante :</p>
<pre>vzctl restore 123  --dumpfile /chemin/vers/123.dump</pre>
<p>Vous pouvez contrôler avec vzlist qu&#8217;une fois le checkpoint restauré le serveur est à nouveau en fonctionnement.</p>
<p>Vous pouvez faire le test en ayant pris soin au préalable de vous connecter par le réseau au serveur virtuel au moyen d&#8217;un client quelconque (par exemple un client ssh), et vous pourrez constater que votre connexion perdure jusqu&#8217;après la restauration du serveur virtuel.</p>
<p><strong>(Live) Migration de serveur virtuel</strong></p>
<p>Là où le checkpointing devient carrément magique, c&#8217;est qu&#8217;on peut faire un checkpoint d&#8217;un serveur virtuel sur un serveur physique et restaurer l&#8217;état de ce serveur sur <strong>un autre</strong> serveur physique !</p>
<p>Alors évidemment il faut prendre soin au préalable de s&#8217;assurer que l&#8217;autre serveur physique dispose des fichiers qui constituent l&#8217;arborescence du serveur virtuel, ainsi que du fichier de configuration openvz pour le serveur virtuel (dans /etc/vz/conf) avant de le relancer. En effet, comme je disais plus haut, le dump ne contient que l&#8217;état de la mémoire, et le simple transfert du dump d&#8217;un serveur à un autre n&#8217;est pas suffisant. Cependant, OpenVZ vient avec un outil intéressant qui permet d&#8217;automatiser la &laquo;&nbsp;migration&nbsp;&raquo; d&#8217;un serveur virtuel d&#8217;un serveur physique à un autre. Cet outil s&#8217;appelle vzmigrate.</p>
<p>vzmigrate permet de déplacer des serveurs virtuels d&#8217;un serveur physique à un autre. Il prend en charge la recopie vers le serveur cible de tout ce qui est nécessaire au serveur virtuel (arborescence et fichier de configuration) et peut déplacer les serveurs virtuels soit arrêtés, soit sans interruption de service, en utilisant le mécanisme de checkpointing décrit ci-dessus. Dans ce second cas vzmigrate déplace aussi le fichier de checkpointing réalisé sur le serveur d&#8217;origine.</p>
<p>vzmigrate s&#8217;appuie sur ssh et rsync pour transférer les données d&#8217;un serveur vers l&#8217;autre, et il faut au préalable avoir configuré le serveur cible pour qu&#8217;il accepte une connexion depuis le serveur source sans mot de passe.</p>
<p>Admettons que vous disposiez de deux serveurs physiques, nommés host1 et host2 capables d&#8217;exécuter des serveurs virtuels, installés, par exemple, <a href="http://www.libresys.fr/2008/09/22/installer-un-serveur-hote-openvz/">comme décrit dans un précédent article</a>, et que sur le serveur host1 s&#8217;exécute le serveur virtuel 123. Pour déplacer le serveur virtuel 123 du serveur host1 vers le serveur host2, il faut faire ceci :</p>
<ul>
<li>une bonne fois pour toutes, on créé une paire de clés sur le serveur host1 et on informe le serveur host2 qu&#8217;il doit accepter les connexions avec cette clé sans mot de passe  (c&#8217;est à faire sur host1 en tant que root)</li>
</ul>
<pre><code>ssh-keygen</code></pre>
<pre><code>ssh-copy-id -i ~/.ssh/id_rsa.pub root@host2</code></pre>
<ul>
<li>ensuite, pour réaliser la migration du serveur virtuel 123 de host1 vers host2, il suffit de taper ceci pour faire la migration avec une interruption de service (arrêt sur host1 et marche sur host2)</li>
</ul>
<pre>vzmigrate host2 123</pre>
<ul>
<li>ou ceci pour faire une migration &laquo;&nbsp;live&nbsp;&raquo;, avec checkpointing sur host1 et reprise sur host2</li>
</ul>
<pre>vzmigrate --online host2 123</pre>
<p>A noter qu&#8217;il est possible de passer d&#8217;autres options à vzmigrate, comme &#8211;remove-area=yes|no qui indique s&#8217;il faut supprimer les fichiers du serveur virtuel sur le serveur source en cas de succès, ou &#8211;keep-dst qui indique qu&#8217;il ne faut pas supprimer les fichiers du serveur cible en cas de problème pendant la migration. Cette dernière option permet de gagner du temps au moment d&#8217;une nouvelle tentative puisque certains fichiers auront déjà été transmis lors de la première.</p>
<p><strong>Sauvegarde et restauration de serveur virtuel</strong></p>
<p>Il est essentiel de savoir sauvegarder et restaurer un serveur et les des données qu&#8217;il contient, autant pour pouvoir répondre aux utilisateurs qui demandent régulièrement de récupérer le travail qu&#8217;ils ont perdu (oui je sais, c&#8217;est pas eux qui ont perdu les fichiers, ce sont les fichiers qui ont disparus tout seuls) que pour pouvoir récupérer un service perdu suite une panne ou un sinistre. Je vous propose plusieurs méthodes.</p>
<p><em>Méthode n°1 : avec un agent de sauvegarde<br />
</em></p>
<p>Bien entendu vous avez la possibilité de sauvegarder un serveur virtuel de la même manière que vous sauvegarderiez un serveur physique, par exemple, en y installant l&#8217;agent de sauvegarde de votre logiciel préféré. A titre d&#8217;exemple, j&#8217;utilise souvent le couple ssh et rsync pour exécuter des travaux sur les serveurs à sauvegarder et pour répliquer les données sur un serveur de sauvegarde. J&#8217;utilise aussi le logiciel bacula, qui fera l&#8217;objet d&#8217;un autre article.</p>
<p>Je ne détaillerai pas cette méthode car d&#8217;une part elle dépend du logiciel de sauvegarde et d&#8217;autre part c&#8217;est un peu hors sujet cela ne diffère pas de ce que l&#8217;on pourrait faire sans OpenVZ, pour sauvegarder un serveur physique. Sachez toutefois que vous devez exclure les répertoires /proc et /sys de votre sauvegarde puisqu&#8217;ils correspondent à des points de montage dans lesquels le noyau présente des informations relatives au système et aux processus en cours de fonctionnement.</p>
<p>Pour l&#8217;anecdote, les utilisateurs du logiciel de sauvegarde Time Navigator risquent d&#8217;être déçus car il refuse de fonctionner dans un serveur virtuel OpenVZ (au moins la version que j&#8217;avais). La faute en revient à la conception capricieuse du logiciel qui résulte, à mon avis, de la volonté de l&#8217;éditeur d&#8217;implanter dans son code des dispositifs de contrôle de licence. Le fait est que j&#8217;avais déjà eu toutes les peines du monde à faire fonctionner des agents de sauvegarde Time Navigator sur les serveurs physiques d&#8217;un cluster Red Hat malgré le support technique de l&#8217;éditeur, alors après quelques essais infructueux pour le faire tourner dans OpenVZ, j&#8217;ai préféré abandonner Time Navigator pour une autre solution : Bacula. Plus simple, moins pachydermique, et de mon point de vue, plus sûr en cas de pépin. Et, en prime ça fonctionne ! Mais j&#8217;y reviendrai dans un autre article.</p>
<p>Pour restaurer un serveur virtuel complet, à moins que votre logiciel de sauvegarde ne vous propose une autre solution, vous devrez recréer une nouvelle instance d&#8217;un serveur virtuel minimal, avec la même distribution qu&#8217;avant, installer l&#8217;agent de sauvegarde, et restaurer votre serveur virtuel par dessus via l&#8217;agent de sauvegarde.</p>
<p>Selon moi, cette méthode présente un avantage et un inconvénient majeurs :</p>
<ul>
<li>avantage : la sauvegarde peut souvent se faire sans interruption de service ; rien de spécial à faire pour sauvegarder un serveur de fichiers, on assure le coup pour un serveur de base de données en faisant un export des bases, et voila</li>
<li>inconvénient : cette méthode ne suffit pas à garantir que la sauvegarde contient bien un serveur dans un état cohérent, et du coup la restauration d&#8217;un serveur physique peut avoir des effets inattendus. Par exemple, imaginons une application qui indexe des documents en s&#8217;appuyant sur une base de données, dans laquelle on trouve des enregistrements qui contiennent les noms des fichiers indexés. Imaginons que, pendant la durée de la sauvegarde, l&#8217;application reçoive un nouveau document à indéxer. Il est tout à fait possible que, dans ce cas, la base de données soit sauvegardée avant l&#8217;arrivée du nouveau document, et les fichiers après l&#8217;arrivée du nouveau document et que par conséquent, les fichiers de la sauvegarde contiennent un document de plus que ce qui est référencé dans la base. En cas de restauration de cette sauvegarde, le fait que le contenu de la base ne soit pas cohérent avec les fichiers peut poser un problème à l&#8217;application.</li>
</ul>
<p>Lorsqu&#8217;on travaille sur un serveur physique, éviter ce type de problème suppose habituellement d&#8217;arrêter les applications/les services pendant la durée des sauvegardes. Cependant, cela provoque une interruption de service avec laquelle il est parfois difficile de composer.</p>
<p>Notez que ce problème est lié au fait que la sauvegarde est assurée par un agent de sauvegarde intégré au serveur sauvegardé, et qu&#8217;il se pose aussi bien pour un serveur physique qu&#8217;un serveur virtuel. Les autres méthodes de sauvegarde que je présente ci-après s&#8217;appuient sur OpenVZ et exploitent  les moyens de contrôle que le serveur physique peut exercer sur les serveurs virtuels qu&#8217;il héberge pour faciliter leur sauvegarde et leur restauration et éviter le problème d&#8217;incohérence de la sauvegarde.</p>
<p><em>Méthode n°2 : sauvegarde à froid<br />
</em></p>
<p>Je ne m&#8217;attarderai pas sur cette méthode. Il s&#8217;agit de procéder ainsi :</p>
<ul>
<li>arrêter le serveur virtuel,</li>
</ul>
<ul>
<li>sauvegarder le serveur virtuel arrêté,</li>
</ul>
<ul>
<li>redémarrer le serveur virtuel,</li>
</ul>
<p>par exemple :</p>
<pre>vzctl stop 123
tar cf backup_123.tar /var/lib/vz/private/123
vzctl start 123</pre>
<p>Evidemment, on peut faire la sauvegarde par n&#8217;importe quel autre moyen qu&#8217;un tar, mais le principe serait le même. Cette méthode présente quelques avantages par rapport à la méthode n° 1 :</p>
<ul>
<li>méthode uniforme : le serveur physique peut appliquer cette méthode pour tous les serveurs virtuels qu&#8217;il héberge, et il n&#8217;est pas nécessaire d&#8217;installer un agent de sauvegarde dans ces derniers</li>
<li>garantie de cohérence : puisqu&#8217;il est arrêté, il ne peut rien se passer dans le serveur virtuel, durant la sauvegarde, qui rendrait cette dernière incohérente</li>
</ul>
<p>cependant, il n&#8217;est pas toujours possible ou souhaitable d&#8217;arrêter les services que le serveur virtuel héberge, et même dans le cas ou cet arrêt est acceptable, la durée d&#8217;indisponibilité du service peut se révéler assez importante, puisqu&#8217;elle cumule la durée de l&#8217;arrêt, de la sauvegarde, et de la relance.</p>
<p>La restauration des fichiers se fait par un simple tar,</p>
<p><em>Méthode n°3 : sauvegarde à chaud avec durée d&#8217;indisponibilité réduite</em></p>
<p>Il s&#8217;agit d&#8217;une variante de la méthode n° 2, qui utilise le checkpointing afin de gagner du temps sur les opérations d&#8217;arrêt et de relance. Cela consiste à :</p>
<ul>
<li>faire un &laquo;&nbsp;checkpoint&nbsp;&raquo; du serveur virtuel,</li>
</ul>
<ul>
<li>sauvegarder le serveur virtuel arrêté ainsi que le fichier de checkpoint,</li>
</ul>
<ul>
<li>faire un &laquo;&nbsp;resume&nbsp;&raquo; du serveur virtuel,</li>
</ul>
<p>par exemple :</p>
<pre>vzctl chkpnt 123  --dumpfile /chemin/vers/123.dump
tar cf backup_123.tar /var/lib/vz/private/123 /chemin/vers/123.dump
vzctl restore 123  --dumpfile /chemin/vers/123.dump</pre>
<p>Cette méthode présente l&#8217;avantage, par rapport à la méthode n° 2, d&#8217;éviter le temps nécessaire à l&#8217;arrêt et à la relance des processus du serveur virtuel, mais ne dispense pas de la durée de la sauvegarde. En outre, si le temps de sauvegarde est long, il est probable que les clients qui seraient toujours connectés pendant la sauvegarde se fasse déconnecter en raison des timeouts, puisque dans cet état figé, le serveur ne répond plus jusqu&#8217;à la fin de la sauvegarde.</p>
<p>Pour restaurer une telle sauvegarde, il faut donc extraire le contenu du tar, c&#8217;est à dire :</p>
<ul>
<li>les fichiers du serveur virtuel à remettre dans /var/lib/vz/private/123</li>
<li>le fichier du checkpoint 123.dump</li>
</ul>
<p>Et relancer le serveur virtuel dans le même état qu&#8217;au moment de la sauvegarde, avec la commande vzctl restore ci-dessus.</p>
<p><em>Méthode n°4 : sauvegarde à chaud instantanée</em></p>
<p>Il s&#8217;agit d&#8217;une variante de la méthode n° 3 qui permet :</p>
<ul>
<li>d&#8217;utiliser le checkpointing pour faire un instantané de l&#8217;état de la mémoire du serveur virtuel</li>
<li>d&#8217;utiliser un  snapshot  de volume LVM pour faire une instantané de l&#8217;état des fichiers du serveur virtuel</li>
<li>et de sauvegarder tout ça, en garantissant la cohérence, et sans arrêter le serveur.</li>
</ul>
<p>En effet, nous avons vu que la méthode n° 3 nécessite un temps de sauvegarde qui peut se révéler relativement long et induire une interruption de service et/ou la déconnexion des clients. Avec cette méthode, il est possible de faire une sauvegarde &laquo;&nbsp;instantanée&nbsp;&raquo;.</p>
<p>En revanche, contrairement aux autres méthodes, cela suppose que le serveur virtuel soit installé dans un volume LVM. Je ne détaillerai pas dans cet article la façon de créer une partition LVM, vous trouverez des <a href="http://traduc.org/Guides_pratiques/Suivi/LVM-HOWTO/Document" target="_blank">infos sur LVM à cette adresse</a>.</p>
<p>Voici comment réaliser une telle sauvegarde. D&#8217;abord, on fige l&#8217;état du serveur virtuel par un checkpoint. Je vous recommande de placer le fichier du checkpoint dans le même volume lvm que celui ou se trouve le serveur virtuel.</p>
<pre>vzctl chkpnt 123  --dumpfile /chemin/vers/123.dump</pre>
<p>Ensuite, on fait un snapshot du système de fichiers :</p>
<pre>sync ; sleep 1 ; sync
echo 3 &gt; /proc/sys/vm/drop_caches
lvcreate -L 1G -s -n backup_snap /dev/xxx_vg/xxx_lv</pre>
<p>La commande qui créé le snapshot est la ligne lvcreate. Cependant, j&#8217;ai souvent eu des difficultés à créer le snapshot si je n&#8217;exécutais pas les autres commandes juste avant. Vous devrez remplacer les paramètres de la commande lvcreate par des valeurs qui vous conviennent, en particulier la taille maximale du snapshot (-L), qui est fonction de la quantité de modifications susceptibles d&#8217;être apportées au système de fichiers pendant tout le temps ou vous conserverez le snapshot (c&#8217;est à dire, dans le cas présent, pour la durée de la sauvegarde), le nom du snapshot (-n) , et le chemin du volume logique lvm qui contient le serveur virtuel. Note : il faut qu&#8217;il reste assez de place dans le volume group pour créer un volume pour le snapshot.</p>
<p>La création du snapshot est quasiment instantanée, et une fois qu&#8217;il est fait, vous pouvez tout de suite relancer le serveur virtuel :</p>
<pre>vzctl restore 123  --dumpfile /chemin/vers/123.dump</pre>
<p>Nous disposons à présent d&#8217;un checkpoint du serveur virtuel et d&#8217;un snapshot du système de fichiers, qui à eux deux contiennent une &laquo;&nbsp;photo&nbsp;&raquo; du serveur virtuel. Pour faire cette &laquo;&nbsp;photo&nbsp;&raquo;, cela n&#8217;aura pris que quelques secondes, même si le serveur virtuel contient des centaines de Go de données.  Ces quelques secondes, sont presque imperceptibles du point de vue des clients. Il ne reste plus qu&#8217;à faire la sauvegarde proprement dite. Pour cela, il faut d&#8217;abord monter le snapshot (là encore, adaptez le chemin vers le volume lvm du snapshot), afin de lire son contenu (contenu qui ne changera pas, quelles que soient l&#8217;activité du serveur virtuel relancé et la durée de la sauvegarde), puis faire la sauvegarde :</p>
<pre>mkdir /mnt/backup_snap
mount -o ro /dev/xxx_vg/backup_snap /mnt/backup_snap
tar cf backup_123.tar /mnt/backup_snap/var/lib/vz/private/123 /mnt/backup_snap/chemin/vers/123.dump
umount /mnt/backup_snap</pre>
<p>Et quand la sauvegarde est finie, il faut supprimer le snapshot (adaptez le chemin vers le volume du snapshot) :</p>
<pre>lvremove -f /dev/xxx_vg/backup_snap</pre>
<p>La restauration d&#8217;une sauvegarde se passera ici comme dans la méthode n° 3.</p>
<p><strong>Conclusion</strong></p>
<p>Nous avons vu dans cet article comment réaliser des checkpoints de serveurs virtuels, ainsi que des applicatiosn intéressantes de ces checkpoints pour déplacer des serveurs virtuels ou les sauvegarder.</p>
<p>En matière de sauvegarde, je vous recommande surtout de choisir une méthode qui soit adaptée à vos besoins. Inutile, par exemple, de monter une solution un peu compliquée avec snapshot du système de fichiers si vous n&#8217;avez pas besoin de garantir la cohérence du serveur.  Et surtout, entrainez vous à restaurer vos sauvegardes, car ce n&#8217;est généralement pas le moment ou on en a besoin qu&#8217;on souhaite découvrir qu&#8217;on est pas très au point pour restaurer ses données.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.libresys.fr/2008/12/28/checkpointing-live-migration-et-sauvegarderestauration-de-serveurs-virtuels-openvz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Les différentes formes de configuration du réseau avec OpenVZ</title>
		<link>http://www.libresys.fr/2008/10/14/les-differentes-formes-de-configuration-du-reseau-avec-openvz/</link>
		<comments>http://www.libresys.fr/2008/10/14/les-differentes-formes-de-configuration-du-reseau-avec-openvz/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 19:56:40 +0000</pubDate>
		<dc:creator>NaNo</dc:creator>
				<category><![CDATA[Tutoriel]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[OpenVZ]]></category>

		<guid isPermaLink="false">http://www.libresys.fr/?p=180</guid>
		<description><![CDATA[Il existe deux façons de configurer le réseau des serveurs virtuels OpenVZ : venet (Virtual Network) et veth (Virtual Ethernet). Jusqu&#8217;ici j&#8217;ai parlé uniquement de la première, plus simple à utiliser et qui convient dans la majorité des cas. Mais &#8230;<p class="read-more"><a href="http://www.libresys.fr/2008/10/14/les-differentes-formes-de-configuration-du-reseau-avec-openvz/">Lire la suite &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.libresys.fr/wp-content/uploads/2008/09/openvz-wiki-logo.png"><img class="alignleft size-medium wp-image-30" title="openvz-wiki-logo" src="http://www.libresys.fr/wp-content/uploads/2008/09/openvz-wiki-logo.png" alt="" width="135" height="135" /></a>Il existe deux façons de configurer le réseau des serveurs virtuels OpenVZ : venet (Virtual Network) et veth (Virtual Ethernet). Jusqu&#8217;ici j&#8217;ai parlé uniquement de la première, plus simple à utiliser et qui convient dans la majorité des cas. Mais si votre serveur virtuel héberge un service ou une application qui nécessite, par exemple, de recevoir du broadcast, alors venet n&#8217;est pas suffisant, et il faut utiliser une interface réseau veth.</p>
<p><span id="more-180"></span></p>
<h2>Différences entre venet et veth</h2>
<p><em>(note : cette section est une traduction de la page <a href="http://wiki.openvz.org/Differences_between_venet_and_veth" target="_blank">http://wiki.openvz.org/Differences_between_venet_and_veth</a>, que j&#8217;ai trouvée claire et concise)</em></p>
<ul>
<li><em>veth</em> transmet le broadcast aux machines virtuelles, de sorte que vous pouvez y installer des applications comme un serveur DHCP ou un serveur samba <em>(NDT: sans serveur WINS)</em></li>
<li><em>veth</em> a des conséquences sur la sécurité, et il n&#8217;est pas recommandé dans des environnements non sûrs, comme pour la fourniture de services d&#8217;hébergement. Ceci est lié au broadcast, à la capture de paquets, au risque de collision d&#8217;adresses IP, etc. Un utilisateur de machine virtuelle avec <em>veth</em> peut vraiment mettre à mal votre réseau avec un tel accès direct à la couche ethernet.</li>
<li>Avec une interface virtuelle <em>venet</em>, seul l&#8217;administrateur du serveur physique OpenVZ peut attribuer une adresse IP à une machine virtuelle. Avec une interface virtuelle <em>veth</em>, les paramètres réseau peuvent être intégralement définis dans la machine virtuelle, depuis l&#8217;administrateur de cette dernière. La machine virtuelle doit paramétrer correctement une adresse IP, le masque de sous réseau, la passerelle par défaut&#8230; et l&#8217;administrateur du serveur physique peut seulement choisir vers où router le trafic de la machine virtuelle.<em></em></li>
<li>Les interfaces virtuelles <em>veth</em> peuvent être bridgées ensemble et/ou avec d&#8217;autres interfaces. Par exemple, l&#8217;administrateur du système hôte peut bridger les veth de deux machines virtuelles avec une interface VLAN eth0.X. Dans ce cas, ces deux machines virtuelles seront connectées à ce VLAN.</li>
<li> Une interface <em>venet</em> est légèrement plus rapide et plus efficiente.</li>
<li>Pour une interface <em>veth</em>, l&#8217;adresse IPv6 est auto-générée depuis l&#8217;adresse MAC.</li>
</ul>
<p>Tableau récapitulatif :</p>
<table class="wikitable" style="text-align: center;" border="0">
<caption> <strong>Differences entre veth et venet</strong> </caption>
<tbody>
<tr>
<th> Caractéristique</th>
<th> <a title="Veth" href="http://wiki.openvz.org/Veth">veth</a></th>
<th> <a title="Venet" href="http://wiki.openvz.org/Venet">venet</a></th>
</tr>
<tr>
<th>Adresse MAC</th>
<td style="background: #ddffdd none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; text-align: center;">Oui</td>
<td style="background: #ffdddd none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; text-align: center;">Non</td>
</tr>
<tr>
<th> Machine virtuelle reçoit le broadcast</th>
<td style="background: #ddffdd none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; text-align: center;">Oui</td>
<td style="background: #ffdddd none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; text-align: center;">Non</td>
</tr>
<tr>
<th> Possibilité de renifler les paquets</th>
<td style="background: #ddffdd none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; text-align: center;">Oui</td>
<td style="background: #ffdddd none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; text-align: center;">Non</td>
</tr>
<tr>
<th> Sécurité du  réseau</th>
<td style="background: #ffdddd none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">Faible <sup id="_ref-0" class="reference"><a href="http://wiki.openvz.org/Differences_between_venet_and_veth#_note-0">[1]</a></sup></td>
<td style="background: #ddffdd none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">Elevée</td>
</tr>
<tr>
<th> Capacité à être bridgé</th>
<td style="background: #ddffdd none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; text-align: center;">Oui</td>
<td style="background: #ffdddd none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; text-align: center;">Non</td>
</tr>
<tr>
<th> Performance</th>
<td style="background: #ffdddd none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">Rapide</td>
<td style="background: #ddffdd none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">Plus rapide</td>
</tr>
</tbody>
</table>
<ol class="references">
<li id="_note-0">En raison du broadcast, de la possibilité de renifler le réseau ou d&#8217;obtenir des collisions d&#8217;adresses IP collisions, etc.</li>
</ol>
<h2>En résumé</h2>
<p>Le gros intérêt de l&#8217;interface venet, c&#8217;est que ça permet à l&#8217;administrateur du serveur physique de décider de la configuration réseau de la machine virtuelle. C&#8217;est particulièrement appréciable pour un hébergeur qui souhaite vendre un service d&#8217;hébergement de machines virtuelles, car il peut librement laisser ses clients administrer leur serveur virtuel OpenVZ tout en étant certain qu&#8217;ils ne pourront pas perturber le réseau, s&#8217;attribuer davantage d&#8217;adresses IP que prévu, bidouiller les tables de routage, etc. Si vous utilisez OpenVZ pour fournir des services d&#8217;hébergement à vos clients, l&#8217;interface veth n&#8217;est pas faite pour vous. Je ne suis pas dans ce cas de figure, donc les potentiels problèmes de sécurité que peuvent poser l&#8217;interface veth pour un hébergeur ne me concernent pas.</p>
<p>J&#8217;utilise à la fois venet et veth sur les serveurs que j&#8217;administre : veth lorsque j&#8217;ai besoin d&#8217;avoir un accès aux couches ethernet depuis les serveurs virtuels, et venet dans tous les autres cas. Mais, contrairement à la simplicité offerte par les interfaces venet, pour pouvoir utiliser une interface veth dans un serveur virtuel, il faut faire quelques opérations de configuration complémentaires pour préparer le serveur physique à recevoir des serveurs virtuels utilisant veth. C&#8217;est ce que je vais décrire dans les sections suivantes.</p>
<h2>Préparation du serveur physique</h2>
<p>Ceci est valable pour un serveur physique Debian Etch et Ubuntu 8.04, et avec les paquets conçus pour ces distributions, qui fournissent OpenVZ dans une version 3.0.22. Au delà de la version 3.0.22 d&#8217;OpenVZ, cela devrait être un peu plus simple.</p>
<p>Pour que les serveurs virtuels aient une interface ethernet, via veth, il faut bridger les interfaces veth avec une interface physique du serveur. Nous allons commencer par créer le bridge sur le serveur, puis nous verrons comment faire pour que les interfaces virtuelles s&#8217;ajoutent ou se retirent du bridge en fonction du démarrage ou de l&#8217;arrêt des serveurs virtuels.</p>
<h3>Configuration du bridge sur le serveur physique</h3>
<p>Votre serveur physique est certainement déjà paramétré pour votre réseau. Son fichier de configuration du réseau, /etc/network/interfaces, doit ressembler à ceci :</p>
<pre>root@vz_host:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 192.168.1.1
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.254</pre>
<p>Pour que vos serveurs virtuels aient une interface veth qui soit &laquo;&nbsp;branchée&nbsp;&raquo; sur l&#8217;interface physique eth0 du serveur, il faut qu&#8217;au moment du boot, le serveur créée un bridge qui, au début, ne contient que l&#8217;interface eth0. Pour cela, il est  nécessaire que le paquet bridge-utils soit installé, si ce n&#8217;est pas déjà fait :</p>
<pre>root@vz_host:~# apt-get install bridge-utils</pre>
<p>Ensuite, il suffit de modifier le fichier /etc/network/interfaces comme ceci (il faut également que le serveur ait chargé le module vzethdev, ce qui devrait être le cas si vous avez suivi le tuto jusqu&#8217;ici) :</p>
<pre>root@vz_host:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto vzbr0
iface vzbr0 inet static
    bridge_ports eth0
    address 192.168.1.216
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.254</pre>
<p>et rebooter.</p>
<p>Après redémarrage, l&#8217;exécution des commandes suivantes sur le serveur doit retourner ceci :</p>
<pre>root@vz_host:~$ ifconfig
eth0      Link encap:Ethernet  HWaddr 00:15:f2:97:ad:e1 
          adr inet6: fe80::215:f2ff:fe97:ade1/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Packets reçus:925 erreurs:0 :0 overruns:0 frame:0
          TX packets:714 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000
          Octets reçus:893972 (873.0 KB) Octets transmis:86440 (84.4 KB)
          Interruption:16 Adresse de base:0x2000 

lo        Link encap:Boucle locale 
          inet adr:127.0.0.1  Masque:255.0.0.0
          adr inet6: ::1/128 Scope:Hôte
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          Packets reçus:8 erreurs:0 :0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          Octets reçus:560 (560.0 B) Octets transmis:560 (560.0 B)

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          Packets reçus:0 erreurs:0 :0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          Octets reçus:0 (0.0 B) Octets transmis:0 (0.0 B)

vzbr0     Link encap:Ethernet  HWaddr 00:15:f2:97:ad:e1 
          inet adr:192.168.1.216  Bcast:192.168.1.255  Masque:255.255.255.0
          adr inet6: fe80::215:f2ff:fe97:ade1/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Packets reçus:904 erreurs:0 :0 overruns:0 frame:0
          TX packets:708 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0
          Octets reçus:880056 (859.4 KB) Octets transmis:82416 (80.4 KB)

root@vz_host:~# brctl show
bridge name	bridge id		STP enabled	interfaces
vzbr0		8000.0015f297ade1	no		eth0</pre>
<p>ce qui montre que l&#8217;interface du bridge détient bien l&#8217;adresse IP définie dans /etc/network/interfaces et que le bridge est bien constitué, pour le moment, de la seule interface eth0.</p>
<h3>Paramétrage OpenVZ sur le serveur hôte</h3>
<p>Afin qu&#8217;au lancement d&#8217;un serveur virtuel OpenVZ ajoute ou retire dynamiquement une interface veth au bridge, il faut créer quelques fichiers sur le serveur physique. Cette opération est à faire une bonne fois pour toutes sur le serveur physique, indépendamment du nombre de serveurs virtuels qui seront créés par la suite. Il est également possible de la faire sur un serveur qui, au final, n&#8217;héberge que des serveurs virtuels utilisant des interfaces venet, cela ne perturbe en rien ces derniers.</p>
<p>D&#8217;abord, il faut créer le fichier /etc/vz/vznet.conf, avec le contenu suivant :</p>
<pre>#!/bin/bash
EXTERNAL_SCRIPT="/usr/local/sbin/vznetaddbr"</pre>
<p>puis le fichier /usr/local/sbin/vznetaddbr, avec le contenu suivant :</p>
<pre>#!/bin/bash
# /usr/local/sbin/vznetaddbr
# a script to add virtual network interfaces (veth's) in a VE to a bridge on VE0
CONFIGFILE=/etc/vz/conf/$VEID.conf
. $CONFIGFILE
VZHOSTIF=`echo $NETIF |sed 's/^.*host_ifname=\(.*\),.*$/\1/g'`
if [ ! -n "$VZHOSTIF" ]; then
   echo "According to $CONFIGFILE VE$VEID has no veth interface configured."
   exit 1
fi
if [ ! -n "$VZHOSTBR" ]; then
   echo "According to $CONFIGFILE VE$VEID has no bridge interface configured."
   exit 1
fi
echo "Adding interface $VZHOSTIF to bridge $VZHOSTBR on VE0 for VE$VEID"
/sbin/ifconfig $VZHOSTIF 0
echo 1 &gt; /proc/sys/net/ipv4/conf/$VZHOSTIF/proxy_arp
echo 1 &gt; /proc/sys/net/ipv4/conf/$VZHOSTIF/forwarding
/usr/sbin/brctl addif $VZHOSTBR $VZHOSTIF
exit 0</pre>
<p>Il faut également associer le droit d&#8217;exécution à ce fichier en tapant la commande :</p>
<pre>chmod +x /usr/local/sbin/vznetaddbr</pre>
<p>Voila. Ce n&#8217;était pas grand chose, et à présent le serveur peut héberger des serveurs virtuels dont les interfaces veth seront bridgées avec la ou les siennes. Pour cela, il faut adapter le paramétrage réseau des serveurs virtuels, ce qui fait l&#8217;objet de la section suivante.</p>
<h3>Paramétrage d&#8217;un serveur virtuel pour utiliser une interface veth</h3>
<p>En tant qu&#8217;administrateur du serveur hôte, vous pouvez ajouter une interface réseau veth à un serveur virtuel avec la commmande</p>
<pre>root@vz_host:~# vzctl set $VEID --netif_add eth0 --save</pre>
<p>où $VEID est à remplacer par le numéro du serveur virtuel concerné, et eth0 par le nom que vous souhaitez donner à l&#8217;interface ethernet à l&#8217;interieur du serveur virtuel. Pour le serveur physique, cette interface sera nommée veth$VEID.0, soit, pour le serveur virtuel désigné par le VEID n° 1, veth1.0.</p>
<p>Une fois cette commande appliquée, vous pourrez constater que, dans le fichier de configuration du serveur virtuel; situé dans /etc/vz/conf/$VEID.conf, une ligne telle que celle-ci a été ajoutée.</p>
<pre>NETIF="ifname=eth0,mac=00:18:51:2A:AB:99,host_ifname=veth1.0,host_mac=00:18:51:87:7C:50"</pre>
<p>Cette commande a généré automatiquement deux adresses MAC qui seront utilisées pour l&#8217;interface veth. Une d&#8217;entre elles est associée à l&#8217;interface eth0, côté serveur virtuel, et l&#8217;autre à l&#8217;interface veth1.0, côté serveur physique. Il est possible de spécifier les adresses MAC souhaitées sur la ligne de commande vzctl, mais vous devrez alors prendre soin de ne pas avoir de collision d&#8217;adresses MAC sur votre réseau.</p>
<p>Nous n&#8217;avons pas encore eu l&#8217;occasion de spécifier à OpenVZ avec quelle interface physique du serveur il faut bridger cette interface virtuelle. C&#8217;est normal, ce paramètre n&#8217;est pas pris en charge par OpenVZ dans les versions jusqu&#8217;à 3.0.22. C&#8217;est pour ça qu&#8217;il faut ajouter à la main un script pour la gestion du bridge et qu&#8217;il faut ajouter à la main, dans le fichier de configuration du serveur virtuel (dans /etc/vz/conf/$VEID.conf) la ligne suivante :</p>
<pre>VZHOSTBR=vzbr0</pre>
<p>afin de spécifier à quel bridge du serveur physique l&#8217;interface veth doit être ajoutée.</p>
<p>Si vous avez suivi ce tutoriel pour créer le serveur virtuel, vous lui avez peut-être associé une interface réseau venet qui n&#8217;est plus nécessaire. Le cas échéant, pour la supprimer, faites :</p>
<pre>root@vz_host:~# vzctl set 1 --ipdel 192.168.1.1 --save</pre>
<p>Il est temps de (re)lancer le serveur virtuel. Ce n&#8217;est qu&#8217;à son redémarrage que le script vnetaddbr sera invoqué et que l&#8217;interface ethernet virtuelle sera bridgée avec celle du serveur physique. Une fois le serveur virtuel démarré, vous devriez pouvoir constater que le bridge contient bien l&#8217;interface veth du serveur virtuel, avec la commande :</p>
<pre>root@vz_host:~# brctl show vrzb0
bridge name    bridge id            STP enabled    interfaces
vzbr0          8000.0015f297ade1    no             eth0
                                                   veth1.0</pre>
<p>C&#8217;est terminé pour la configuration à faire côté serveur hôte. Il vous reste à entrer dans le serveur virtuel pour définir les paramètres réseau. Configuré avec une interface veth, le paramétrage du réseau se fait comme sur un serveur physique : dans l&#8217;exemple ci-dessus, le serveur virtuel dispose d&#8217;une interface eth0 qui peut être configuré comme d&#8217;habitude sur la distribution que vous avez utilisée pour le serveur virtuel (par exemple, sur Debian et Ubuntu, dans le fichier /etc/network/interfaces du serveur virtuel).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.libresys.fr/2008/10/14/les-differentes-formes-de-configuration-du-reseau-avec-openvz/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Gérer les ressources allouées aux serveurs virtuels OpenVZ</title>
		<link>http://www.libresys.fr/2008/10/02/gerer-les-ressources-allouees-aux-serveurs-virtuels-openvz/</link>
		<comments>http://www.libresys.fr/2008/10/02/gerer-les-ressources-allouees-aux-serveurs-virtuels-openvz/#comments</comments>
		<pubDate>Thu, 02 Oct 2008 12:13:05 +0000</pubDate>
		<dc:creator>NaNo</dc:creator>
				<category><![CDATA[Tutoriel]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[OpenVZ]]></category>

		<guid isPermaLink="false">http://www.libresys.fr/?p=149</guid>
		<description><![CDATA[Suite du tutoriel sur OpenVZ&#8230; Maintenant que nous avons vu comment créer des serveurs virtuels je vais aborder dans cet article la gestion des ressources allouées aux serveurs virtuels. Ce n&#8217;est clairement pas la partie la plus simple de l&#8217;utilisation &#8230;<p class="read-more"><a href="http://www.libresys.fr/2008/10/02/gerer-les-ressources-allouees-aux-serveurs-virtuels-openvz/">Lire la suite &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.libresys.fr/wp-content/uploads/2008/09/openvz-wiki-logo.png"><img class="alignleft size-medium wp-image-30" title="openvz-wiki-logo" src="http://www.libresys.fr/wp-content/uploads/2008/09/openvz-wiki-logo.png" alt="" width="135" height="135" /></a>Suite du <a href="http://www.libresys.fr/2008/09/20/virtualisez-vos-serveurs-linux-avec-openvz/">tutoriel sur OpenVZ</a>&#8230; Maintenant que nous avons vu comment <a href="http://www.libresys.fr/2008/09/26/creer-son-premier-serveur-virtuel-sous-openvz/">créer des serveurs virtuels</a> je vais aborder dans cet article la gestion des ressources allouées aux serveurs virtuels. Ce n&#8217;est clairement pas la partie la plus simple de l&#8217;utilisation d&#8217;OpenVZ, et il m&#8217;a fallu quelques temps de pratique pour en comprendre les subtilités.  <span id="more-149"></span></p>
<p>Je ne prétends pas faire de cet article un substitut de la <a href="http://wiki.openvz.org/Resource_management" target="_blank">documentation de référence sur la gestion des ressources</a> par OpenVZ, loin de là, mais j&#8217;espère au moins faire une présentation succincte des bases qui devrait vous simplifier la lecture de la documentation, ou vous en dispenser dans un premier temps.</p>
<p>OpenVZ offre une multitude de paramètres permettant de gérer finement la quantité de ressources allouées aux serveurs virtuels hébergés. Ces paramètres peuvent être classés en plusieurs catégories :</p>
<ul>
<li>ceux touchant aux quotas d&#8217;espace disque</li>
<li>ceux agissant sur le temps d&#8217;utilisation du CPU</li>
<li>ceux touchant aux limitations des diverses sources de consommation directe ou indirecte de mémoire, les paramètres UBC</li>
</ul>
<h2>Paramètres de quota d&#8217;espace disque</h2>
<p>Définir le quota d&#8217;espace disque d&#8217;un serveur virtuel est plutôt simple. Pour ceux qui ont déjà mis en place des quotas d&#8217;espace disque sous linux, ça fonctionne de la même manière, et pour cause : les fichiers des serveurs virtuels sont dans le système de fichiers du serveur hôte (dans /var/lib/vz/private/VEID, où VEID est le n° ID du serveur virtuel)</p>
<p>Le paramètre diskspace permet de contrôler l&#8217;espace occupé par les fichiers du serveur virtuel dans le système de fichiers (la somme de la taille de tous les fichiers), et le paramètre diskinodes contrôle le nombre d&#8217;inodes (le nombre de fichiers et de répertoires). Chaque paramètre est associé à une limite soft et une limite hard. La limite hard ne peut pas être dépassée, et la soft peut être dépassée temporairement. Pour définir les quotas, utilisez les commandes suivantes :</p>
<pre>vzctl set VEID --diskspace $SoftLimit$:$HardLimit$ --save
vzctl set VEID --diskinodes $SoftLimit$:$HardLimit$ --save</pre>
<p>Et pour contrôler le taux d&#8217;occupation du quota d&#8217;espace disque par le serveur virtuel, il suffit d&#8217;exécuter la commande df dans le serveur virtuel, par exemple :</p>
<pre># vzctl exec VEID df -h
Filesystem            Size  Used Avail Use% Mounted on
simfs                 7.2G  637M  6.6G   9% /
none                  1.9G     0  1.9G   0% /lib/init/rw
none                  1.9G     0  1.9G   0% /dev/shm</pre>
<p>et pour contrôler les inodes :</p>
<pre># vzctl exec VEID df -i
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
simfs                 200000   22803  177197   12% /
none                  219779       2  219777    1% /lib/init/rw
none                  219779       1  219778    1% /dev/shm</pre>
<p>A savoir : OpenVZ maintient, pour chaque serveur virtuel, un fichier de quota, placé par défaut dans /var/lib/vzquota. Ce fichier contient des informations sur la consommation d&#8217;espace du serveur virtuel. Cependant, si ce fichier venait à être corrompu ou incohérent avec la consommation réelle d&#8217;espace disque,, vous devrez le regénérer. Dans ce cas, le plus simple consiste à arrêter le serveur virtuel, supprimer le fichier de quota et redémarrer le serveur virtuel. Le fichier de quota est alors recalculé au lancement du serveur virtuel (ce qui peut prendre un peu de temps s&#8217;il contient beaucoup de fichiers).</p>
<h2>Paramètres de temps d&#8217;utilisation du CPU</h2>
<p>Il y a deux manières  de réguler l&#8217;utilisation du CPU par les serveurs virtuels OpenVZ.</p>
<p>La première consiste à utiliser le paramètre cpuunits. En utilisant ce paramètre, sur tous les serveurs virtuels, on peut demander à OpenVZ d&#8217;accorder à un serveur virtuel plus de temps CPU qu&#8217;à un autre en proportion de leurs valeurs de cpuunits respectives. Ici, la valeur donnée importe peu, c&#8217;est la proportionnalité entre les valeurs des différents serveurs virtuels qui compte.</p>
<p>Par exemple, si on créé 3 serveurs virtuels, et que leurs valeurs respectives de cpuunits sont 1000, 2000 et 3000, et que ces trois serveurs ont tous besoin de beaucoup de temps CPU, alors OpenVZ accordera au deuxième serveur deux fois plus de temps CPU qu&#8217;au premier, et au troisième trois fois plus qu&#8217;au premier. Le paramètre cpuunits n&#8217;empêche pas un serveur virtuel d&#8217;utiliser du temps CPU : si un serveur virtuel a besoin de temps CPU et qu&#8217;aucun autre n&#8217;en a besoin simultanément, OpenVZ accordera 100% du temps CPU au serveur qui en a besoin.</p>
<p>La seconde consiste à utiliser le paramètre cpulimit. Cette fois il s&#8217;agit d&#8217;empêcher un serveur virtuel d&#8217;utiliser plus qu&#8217;un certain pourcentage du temps CPU. Avec une valeur de cpulimit de 50, un serveur virtuel ne pourra pas consommer plus de 50% du temps CPU, même si le CPU ne fait rien le reste du temps. J&#8217;avoue que je ne vois pas bien dans quel cas ce paramètre pourrait servir, à moins de vouloir reproduire les performances d&#8217;un matériel moins performant.</p>
<p>Pour définir la valeur de cpuunits d&#8217;un serveur virtuel, il faut utiliser la commande :</p>
<pre>vzctl set VEID --cpuunits &lt;valeur&gt; --save</pre>
<p>et pour définir la valeur de cpulimit :</p>
<pre>vzctl set VEID --cpulimit &lt;valeur&gt; --save</pre>
<h2>Paramètres UBC (User Bean Counters)</h2>
<p>Je gardais le meilleur pour la fin, car c&#8217;est là que ça se corse. Je ne répéterai pas le contenu de la documentation de référence sur les paramètres UBC. Je préfère introduire quelques notions sur ce qu&#8217;elles représentent afin d&#8217;une part de vous faciliter la lecture de la documentation OpenVZ, et d&#8217;autre part de vous proposer un petit outil que j&#8217;ai conçu pour me faciliter la vie après avoir galéré quelques temps à essayer de régler ces paramètres sur les serveurs virtuels que j&#8217;administre.</p>
<h3>Le principe de garantie</h3>
<p>Une chose à savoir sur les paramètres UBC, c&#8217;est que l&#8217;allocation de ressources aux serveurs virtuels fonctionne sur le principe de garantie. Les ressources utilisées par un serveur virtuel sont, schématiquement, comprises entre 0 et une limite supérieure paramétrable. Cependant chaque serveur virtuel a une garantie de disposer d&#8217;au moins un minimum, paramétrable également. Pour chaque serveur virtuel, l&#8217;administrateur peut donc paramétrer un minimum garanti et une limite à ne pas dépasser pour un grand nombre de paramètres comme, le nombre de processus, le nombre de pages de mémoire ou le nombre de sockets réseau. Ce principe de garantie permet, par rapport à une réservation des ressources, d&#8217;augmenter la densité des serveurs virtuels.</p>
<h3>Comptabilisation, limitation&#8230; ou les deux</h3>
<p>Comme décrit dans <a href="http://wiki.openvz.org/UBC_parameters" target="_blank">http://wiki.openvz.org/UBC_parameters</a> les paramètres UBC sont tantôt des paramètres de comptabilisation de la quantité de ressources consommées, tantôt des paramètres de limitation de la consommation de ressources, tantôt les deux. Par exemple, le paramètre <em>physpages</em> ne fait que comptabiliser le nombre de pages mémoires utilisées par un serveur virtuel, le paramètre <em>vmguarpages</em> permet d&#8217;offrir une garantie sur la quantité de mémoire disponible pour un serveur virtuel, mais n&#8217;en comptabilise pas la consommation, et le paramètre <em>numproc</em> joue à la fois un rôle de comptabilisation et de limite du nombre de processus d&#8217;un serveur virtuel.</p>
<h3>Limite (limit) et seuil (barrier)&#8230; ou pas</h3>
<p>Les paramètres UBC qui jouent un rôle de limitation des ressources consommées peuvent prendre deux valeurs : un premier seuil, appelé <em>barrier</em> et une limite haute, appelée <em>limit</em>. Suivant le paramètre, il faudra régler ces deux valeurs ou une seule seulement, et parfois il faudra faire en sorte qu&#8217;il y ait un écart entre les deux, et parfois donner la même valeur aux deux.</p>
<p>Le mode de fonctionnement de chaque paramètre est décrit dans <a href="http://wiki.openvz.org/UBC_parameters" target="_blank">http://wiki.openvz.org/UBC_parameters</a>. et je vous invite à y lire la signification de ces valeurs si vous êtes curieux.</p>
<h3>Des paramètres étroitement liés</h3>
<p>Si vous avez tenu jusque là, sachez enfin que certains paramètres sont étroitement liés. Par exemple, le paramètre <em>kmemsize</em> règle la quantité de mémoire d&#8217;un serveur virtuel allouée par le noyau et qui ne sera jamais swappée. Sachant que pour chaque processus le noyau consomme quelques dizaines de Ko de mémoire, on comprend que le paramètre <em>numproc</em> qui limite le nombre processus et le paramètre <em>kmemsize</em> sont liés. Inutile d&#8217;autoriser l&#8217;exécution de milliers de processus si on n&#8217;autorise pas le noyau à consommer de la mémoire pour la gestion des processus !</p>
<p>OpenVZ n&#8217;empêche pas de définir des valeurs incohérentes pour les paramètres UBC, mais fournit un outil de vérification de la cohérence des paramètres. C&#8217;est donc bien à l&#8217;administrateur de veiller à définir correctement les différent paramètres. Par exemple si son serveur virtuel est bloqué par le nombre de processus, l&#8217;administrateur doit savoir qu&#8217;il doit augmenter les valeurs du paramètre <em>nbproc</em>, que pour ce paramètre il faut mettre la même valeur pour <em>barrier</em> et <em>limit</em> et qu&#8217;il vaut mieux également augmenter les valeurs de <em>kmemsize</em>, afin que le serveur virtuel ne soit pas bloqué à nouveau quelques heures plus tard parce que les processus à présent autorisés consomment davantage de mémoire. Et si ces mêmes processus sont susceptibles d&#8217;ouvrir des sockets TCP, même chose, il faut autoriser davantage de sockets (paramètre <em>numtcpsock</em>) et dimensionner les buffers mémoire pour la gestion des sockets en conséquence (paramètres <em>tcpsndbuf</em> et <em>tcprcvbuf</em>).</p>
<p>Bref, tout ça pour vous faire comprendre que définir les paramètres UCB à l&#8217;arrache en ayant vaguement lu la doc en diagonale n&#8217;est pas une bonne idée, car ce que vous risquez d&#8217;obtenir, c&#8217;est un serveur virtuel qui &laquo;&nbsp;craque&nbsp;&raquo; parce qu&#8217;il a atteint une limite, que vous augmenterez, mais qui craquera parce qu&#8217;il en atteindra une autre, etc.</p>
<h3>Un outil pour calculer les valeurs des paramètres UBC</h3>
<p>Le problème, c&#8217;est que même en ayant lu la doc, ça reste fastidieux d&#8217;essayer de dimensionner les ressources d&#8217;un serveur virtuel par rapport à ce que l&#8217;on sait qu&#8217;on attend de lui. C&#8217;est pourquoi j&#8217;ai réalisé une feuille de calcul OpenOffice afin de m&#8217;aider à calculer des valeurs cohérentes et adaptées aux besoins des serveurs virtuels que j&#8217;administre. Vous pouvez <a href="http://www.libresys.fr/wp-content/uploads/2008/10/calcul_openvz.ods">la télécharger ici.</a></p>
<p>Cette feuille se présente ainsi :</p>
<div class="captionfull"><a href="http://www.libresys.fr/wp-content/uploads/2008/10/capture-calcul_openvz-openofficeorg-calc.png"><img title="capture-calcul_openvz-openofficeorg-calc" src="http://www.libresys.fr/wp-content/uploads/2008/10/capture-calcul_openvz-openofficeorg-calc-300x175.png" alt="" width="300" height="175" /></a>Aperçu de l&#8217;outil de calcul de paramètres UBC</div>
<p>Les cases en rouge sont celles dans lesquelles vous devrez saisir obligatoirement des valeurs. Il s&#8217;agit :</p>
<ul>
<li>de la quantité de mémoire maximale allouée au serveur vituel, c&#8217;est à dire de combien de RAM, swap inclus vous auriez besoin dans un serveur physique qui rendrait le même service,</li>
<li>d&#8217;une estimation du nombre de processus qui fonctionneront sur le serveur en temps normal (la feuille estimera un maximum)</li>
<li>de la quantité maximale d&#8217;espace disque allouée au serveur</li>
</ul>
<p>Une fois que vous aurez renseigné ces trois valeurs, la feuille les utilise et s&#8217;appuie sur un certain nombre de règles empiriques pour déterminer un ensemble de paramètres cohérent. Elle génère également des lignes de commande (en vert) à copier/coller et exécuter sur votre serveur hôte, dans un terminal, pour affecter les ressources à un serveur virtuel. Et c&#8217;est tout. Facile comme ça, non ?</p>
<p>Bon&#8230; ca ne fait pas de miracle non plus et si vous voulez ajuster plus finement les ressources allouées au serveur virtuel, vous devrez agir sur les cases vertes. Par exemple, vous trouverez dans une case verte un coefficient permettant d&#8217;indiquer combien de sockets TCP seront ouverts par processus en moyenne, ce qui permet d&#8217;ajuster empiriquement la valeur de numtcpsock en fonction de numproc. Et ce qui convient à un serveur de fichiers samba (beaucoup de processus et beaucoup de connexions réseau) n&#8217;est pas forcément justifié pour un serveur J2EE (peu de processus mais beaucoup de connexions).</p>
<p>Je vous suggère d&#8217;utiliser cette feuille sans toucher aux coefficients par défaut, dans un premier temps, et de ne saisir que les valeurs sur fond rouge. Puis quand vous aurez fait plus ample connaissance avec OpenVZ, vous pourrez affiner les coefficients sur fond vert et cette feuille vous aidera à ne rien oublier.</p>
<p>Par exemple, si vous souhaitez virtualiser un serveur samba, pour servir des fichiers à un parc de 200 machines et en accordant un espace disque de 300 Go aux utilisateurs. Vous savez que samba n&#8217;est pas très consommateur de mémoire, vous pourrez tenter de commencer en accordant disons 300 Mo de mémoire au serveur virtuel. Voici comment procéder :</p>
<ul>
<li>ouvrez la <a href="http://www.libresys.fr/wp-content/uploads/2008/10/calcul_openvz.ods">feuille de calcul</a> et dans les cases à fond rouge, saisissez 300 Mo de mémoire, 300 Go d&#8217;espace disque, et 200 processus (samba créé un fork pour chaque client, donc il faut 1 processus par poste client connecté)</li>
<li>(optionnel) si vous souhaitez obtenir une indication de la proportion de ressources physiques que ce serveur virtuel va utiliser, renseignez les cases à fond bleu</li>
<li>copiez / collez les deux lignes de commandes OpenVZ générées et exécutez les dans le serveur physique. Vous devrez remplacer la chaîne &laquo;&nbsp;changer_no_VE&nbsp;&raquo; par le VEID du serveur virtuel, et ajouter manuellement l&#8217;option &#8211;save à la fin de la ligne de commande si vous souhaitez que les nouvelles valeurs soient sauvegardées dans le fichier de configuration ; pour cet exemple, et pour un serveur virtuel ayant 1 pour VEID, les lignes de commande seraient (en ajoutant l&#8217;option &#8211;save)</li>
</ul>
<p>Je vous invite tout de même à utiliser l&#8217;outil de vérification de la cohérence des paramètres UBC fourni par OpenVZ. Cet outil vérifie le fichier de configuration, ce qui suppose que vos nouveaux paramètres UBC soient enregistrés avec l&#8217;option &#8211;save. Vous pouvez alors taper la commande :</p>
<pre>vzcfgvalidate /etc/vz/conf/VEID.conf</pre>
<p>en remplaçant VEID par le numéro VEID de votre serveur virtuel.</p>
<h3>Contrôler la consommation de ressources d&#8217;un serveur virtuel</h3>
<p>OpenVZ fournit un moyen simple de vérifier combien de ressources vos serveurs virtuels consomment réellement. Il suffit de taper, dans le serveur virtuel, la commande :</p>
<pre>cat /proc/user_beancounters</pre>
<p>et vous obtiendrez quelque chose comme ceci :</p>
<pre>Version: 2.5
       uid  resource           held    maxheld    barrier      limit    failcnt
      123:  kmemsize        2037156    3051143   14745600   16220160          0
            lockedpages           0          0        128        128          0
            privvmpages       41123      48516     196608     216269          0
            shmpages             16        672      65536      65536          0
            dummy                 0          0          0          0          0
            numproc              26         44        300        300          0
            physpages         12380      13650          0 2147483647          0
            vmguarpages           0          0      65536 2147483647          0
            oomguarpages      12380      13650      65536 2147483647          0
            numtcpsock            4          6        300        300          0
            numflock              4          5        300        330          0
            numpty                0          0         16         16          0
            numsiginfo            0          2        256        256          0
            tcpsndbuf         35712     100440    1228800    1996800          0
            tcprcvbuf         65536      65536    1228800    1996800          0
            othersockbuf       6696     145024     460800    1228800          0
            dgramrcvbuf           0       2416      36000      36000          0
            numothersock          5         13        300        300          0
            dcachesize       154550     211874    4423680    4866048          0
            numfile             689        973       7500       7500          0
            dummy                 0          0          0          0          0
            dummy                 0          0          0          0          0
            dummy                 0          0          0          0          0
            numiptent            10         10        128        128          0</pre>
<p>On retrouve ici l&#8217;ensemble des paramètres UBC avec, pour chaque paramètre, 5 colonnes qui sont :</p>
<ul>
<li>la quantité de ressources détenue à cet instant</li>
<li>la quantité maximale de ressources atteinte sur ce serveur virtuel</li>
<li>la valeur &laquo;&nbsp;barrier&nbsp;&raquo;</li>
<li>la valeur &laquo;&nbsp;limit&nbsp;&raquo;</li>
<li>le nombre de fois ou la limite a été atteinte</li>
</ul>
<p>Si vous aviez exécuté cette commande dans le serveur hôte, vous auriez obtenu autant de fois ce tableau que de serveurs virtuels, ainsi qu&#8217;un tableau supplémentaire, ayant un VEID à 0, qui correspond aux ressources du serveur physique.</p>
<p>Cette commande vous permet de constater si la valeur de la colonne maxheld s&#8217;approche des valeurs barrier ou limit, ce qui signifie qu&#8217;il faudra peut-être faire quelque chose pour votre serveur virtuel. Enfin, si la valeur failcount est supérieure à 0, cela signifie que votre serveur virtuel a déjà atteint les limites qui lui sont imposées et qu&#8217;il est probable que les applications qu&#8217;il héberge aient rencontré des erreurs.</p>
<p>C’est tout pour cette fois. J&#8217;espère que cette présentation des paramètres de gestion des ressources d&#8217;OpenVZ et que l&#8217;outil pour se simplifier la vie que je vous propose vous servira. Si vous vous en servez ou si vous pensez qu&#8217;il faut y corriger quelque chose, j&#8217;apprécierais que vous me teniez informé. Merci.</p>
<p>Dans un prochain article je poursuivrai ce tutoriel sur OpenVZ par une présentation des différentes formes de configuration du réseau dans les serveurs virtuels.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.libresys.fr/2008/10/02/gerer-les-ressources-allouees-aux-serveurs-virtuels-openvz/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Installer eeebuntu 8.04 sur Asus EeePC 1000 ou EeePC 901</title>
		<link>http://www.libresys.fr/2008/09/29/installer-eeebuntu-804-sur-asus-eeepc-1000/</link>
		<comments>http://www.libresys.fr/2008/09/29/installer-eeebuntu-804-sur-asus-eeepc-1000/#comments</comments>
		<pubDate>Sun, 28 Sep 2008 22:23:00 +0000</pubDate>
		<dc:creator>NaNo</dc:creator>
				<category><![CDATA[Matériel]]></category>
		<category><![CDATA[Tutoriel]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.libresys.fr/?p=117</guid>
		<description><![CDATA[Je suis depuis quelques semaines l&#8217;heureux possesseur d&#8217;un netbook Asus EeePC 1000H. Après avoir eu l&#8217;occasion de tester le modèle 701, j&#8217;ai décidé de faire l&#8217;acquisition du modèle 10&#8242; et d&#8217;y installer la distribution eeebuntu. Mais eeebuntu est une distribution &#8230;<p class="read-more"><a href="http://www.libresys.fr/2008/09/29/installer-eeebuntu-804-sur-asus-eeepc-1000/">Lire la suite &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.libresys.fr/wp-content/uploads/2008/09/eeebuntu.png"><img class="size-medium wp-image-119 alignleft" style="margin-left: 10px; margin-right: 10px;" title="eeebuntu" src="http://www.libresys.fr/wp-content/uploads/2008/09/eeebuntu.png" alt="" width="249" height="48" /></a></p>
<p>Je suis depuis quelques semaines l&#8217;heureux possesseur d&#8217;un netbook <a href="http://www.blogeee.net/2008/06/03/les-eeepc-1000-et-1000h-devoiles/" target="_blank">Asus EeePC 1000H</a>. Après avoir eu l&#8217;occasion de tester le modèle 701, j&#8217;ai décidé de faire l&#8217;acquisition du modèle 10&#8242; et d&#8217;y installer la distribution eeebuntu.</p>
<p>Mais eeebuntu est une distribution conçue principalement pour l&#8217;<a href="http://www.blogeee.net/2007/09/19/asus-eee-701-le-test-partie-i/" target="_blank">EeePC 701</a>, et les composants de l&#8217;EeePC 1000 étant sensiblement différents, je m&#8217;attendais à quelques difficultés. Finalement, ce fut moins difficile que ce que je craignais et abordable pour un utilisateur néophyte en suivant ce tutoriel. Compte rendu de l&#8217;opération&#8230;<span id="more-117"></span></p>
<div class="captionright"><a href="http://www.libresys.fr/wp-content/uploads/2008/09/eeepc1000.jpg"><img class="alignright size-full wp-image-118" title="eeepc1000" src="http://www.libresys.fr/wp-content/uploads/2008/09/eeepc1000.jpg" alt="" width="300" height="352" /></a></p>
<p align="center">Mon Asus EeePC 1000H après installation<br />
d&#8217;eeebuntu selon ce tutoriel</p>
</div>
<p>L&#8217;<a href="http://www.blogeee.net/2008/06/03/les-eeepc-1000-et-1000h-devoiles/" target="_blank">EeePC 1000H</a> est un des tout derniers modèles de netbooks de chez Asus, doté d&#8217;un écran 10&#8242; et du récent processeur Intel Atom N270. Mon choix s&#8217;est porté sur ce modèle pour son clavier confortable, son écran de 10&#8242;, sa bonne autonomie (4 heures de travail effectif sur batterie avec le wifi activé) et sa conception cohérente : le chargeur ne fait pas la moitié de ta taille du PC, contrairement à de nombreux modèles concurrents comme le MSI Wind ou ses clones !</p>
<p>La distribution <a href="http://www.eeebuntu.org" target="_blank">eeebuntu</a> est optimisée pour les netbooks EeePC : moins de logiciels installés par défaut, temps de démarrage optimisé, noyau spécifiquement adapté à l&#8217;EeePC 701. Seulement, du fait qu&#8217;elle est principalement conçue pour l&#8217;EeePC 701, son installation sur le 1000 demande quelques opérations supplémentaires. Je n&#8217;ai pas vérifié, mais je pense que ce que je décris ci-après est valable également pour le modèle <a href="http://www.blogeee.net/2008/08/28/test-eeepc-901-premiere-partie/" target="_blank">EeePC 901</a> dont l&#8217;électronique est sensiblement la même. Si ça n&#8217;est pas le cas, faites le moi savoir. Voici comment procéder (je vous invite à lire tout cet article avant de vous lancer).</p>
<p>Tout d&#8217;abord, téléchargez  la distribution sur <a href="http://www.eeebuntu.org" target="_blank">http://www.eeebuntu.org</a>. La disrtibution est déclinée en deux versions : Standard ou Netbook Remix (NBR). Netbook Remix propose, en plus de la version standard, un menu simplifié ressemblant à ce qui se fait sur les EeePC équipés de Xandros.</p>
<div class="captionleft"><a href="http://www.libresys.fr/wp-content/uploads/2008/12/ubuntu-nbr.jpg"><img class="size-medium wp-image-201 alignnone" title="ubuntu-nbr" src="http://www.libresys.fr/wp-content/uploads/2008/12/ubuntu-nbr-300x214.jpg" alt="" width="300" height="214" /></a></p>
<p class="captionleft">Menu des applications en fond d&#8217;écran pour la version Netbook Remix</p>
</div>
<p>Choisissez la version qui vous paraît adaptée à vos besoins, sachant que si vous prenez la standard, vous pourrez toujours ajouter Netbook Remix plus tard, sans réinstaller.</p>
<p>L&#8217;EeePC étant dépourvu de lecteur de CDROM, vous devrez installer l&#8217;iso sur un support d&#8217;amorçage sur mémoire tel qu&#8217;une carte SD ou une clé USB. Vous pouvez pour cela vous servir du logiciel UNetbootin dont j&#8217;ai parlé <a href="http://www.libresys.fr/2008/09/26/qui-grave-encore-ses-iso-linux/">dans un précédent article</a>.</p>
<p>Une fois votre support d&#8217;amorçage prêt, insérez le et allumez l&#8217;EeePC. Lorsqu&#8217;il affiche l&#8217;écran gris &laquo;&nbsp;Asus EeePC&nbsp;&raquo;, pressez la touche &laquo;&nbsp;Echap&nbsp;&raquo; pour obtenir le menu de sélection du périphérique d&#8217;amorçage. Choisissez celui qui convient, vous devriez rapidement voir booter eeebuntu depuis votre live-pasCD.</p>
<p>L&#8217;installation d&#8217;eeebuntu se passe sans problème, je ne m&#8217;attarderai pas sur cette partie qui ne diffère en rien de l&#8217;installation d&#8217;Ubuntu sur un quelconque PC. Les possesseurs d&#8217;EeePC avec un disque SSD devront néanmoins peser le pour et le contre d&#8217;une partition de swap. En effet, l&#8217;EeePC 1000 version SSD dispose de 2 disques SSD : un de 8 Go, limité mais assez performant, et un autre de 32 Go, très lent en écriture. Ne comptez pas mettre du swap dans le second, c&#8217;est trop lent, et mettre une partition de swap dans le premier consommerait de l&#8217;espace alors qu&#8217;il est assez limité, donc ne créez cette partition que si vous pensez vraiment en avoir besoin. En ce qui me concerne, j&#8217;ai la version avec un gros disque dur, à l&#8217;ancienne, donc pas de <a href="http://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Questions_existentielles" target="_blank">questions existentielles</a>, en avant !</p>
<p>Après l&#8217;installation d&#8217;eeebuntu, vous constaterez que certaines choses fonctionnent tout de suite, et d&#8217;autres pas. Au chapitre de ce qui fonctionne : le son, la webcam, le lecteur de cartes SD, l&#8217;USB, la résolution écran, le touchpad en multitouch (un appui avec deux doigts correspond au bouton du milieu et à la molette d&#8217;une souris classique), les touches spéciales (volume, luminosité&#8230;) et l&#8217;OSD. C&#8217;est déjà pas mal. Et au chapitre de ce qui ne fonctionne pas : le bluetooth et le réseau, que ce soit ethernet ou wifi. Avouez que c&#8217;est gênant pour un netbook&#8230; On va régler ces problèmes un par un.</p>
<p>Commençons par le réseau, c&#8217;est le plus gênant. Pour corriger ça, il faut télécharger un noyau linux spécialement adapté à l&#8217;EeePC sur le site <a href="http://array.org/ubuntu/" target="_blank">http://array.org/ubuntu/</a>. Vous devrez télécharger deux fichiers, depuis un autre PC bien entendu. Prenez ceux-ci :</p>
<p><a href="http://array.org/ubuntu/dists/hardy/eeepc/binary-i386/linux-image-2.6.24-21-eeepc_2.6.24-21.39eeepc1_i386.deb" target="_blank">linux-image-2.6.24-21-eeepc_2.6.24-21.39eeepc1_i386.deb</a></p>
<p><a href="http://array.org/ubuntu/dists/hardy/eeepc/binary-i386/linux-ubuntu-modules-2.6.24-21-eeepc_2.6.24-21.30eeepc5_i386.deb">linux-ubuntu-modules-2.6.24-21-eeepc_2.6.24-21.30eeepc5_i386.deb</a></p>
<p>et copiez les sur votre clé USB ou votre carte SD.</p>
<p>Avant d&#8217;insérer votre carte mémoire, lancez un terminal et tapez :</p>
<pre>sudo gedit /etc/fstab</pre>
<p>Si le fichier fstab contient une ligne ressemblant à celle-ci (si elle contient /media/cdrom0)</p>
<pre>/dev/sdc1  /media/cdrom0  udf,iso9660 user,noauto,exec  0   0</pre>
<p>supprimez la et sauvez le fichier. Conservez le terminal, et tapez :</p>
<pre>cd /media
ls</pre>
<p>Repérez le résultat de la commande. Vous pouvez à présent insérer votre clé ou carte mémoire. Un nouveau répertoire devrait apparaître dans /media. Tapez à nouveau</p>
<pre>ls</pre>
<p>et comparez le résultat pour le trouver. Admettons qu&#8217;il s&#8217;agisse du répertoire <em>disk</em>. Tapez :</p>
<pre>cd disk
ls</pre>
<p>Vous devriez voir les fichiers suffixés .deb que vous avez téléchargés sur le site array.org. Pour les installer, tapez :</p>
<pre>sudo dpkg -i linux-image-2.6.24-21-eeepc_2.6.24-21.39eeepc1_i386.deb linux-ubuntu-modules-2.6.24-21-eeepc_2.6.24-21.30eeepc5_i386.deb</pre>
<p>A présent vous pouvez rebooter, ce noyau devrait être celui par défaut, et le réseau ethernet et wifi devraient fonctionner.</p>
<p>Il reste encore quelque chose à faire pour bénéficier de futures mises à jour du noyau disponibles sur array.org. Lancez un terminal et tapez les commandes suivantes :</p>
<pre>wget http://www.array.org/ubuntu/array.list
sudo mv -v array.list /etc/apt/sources.list.d/
wget http://www.array.org/ubuntu/array-apt-key.asc
sudo apt-key add array-apt-key.asc
sudo apt-get update
sudo apt-get install linux-eeepc linux-headers-eeepc</pre>
<p>Voila. Fini pour le noyau.</p>
<p>Mais maintenant que l&#8217;on a le réseau qui fonctionne, l&#8217;activation/désactivation du wifi par la touche Fn + F2 fait figer le système d&#8217;exploitation. Pas de panique, la solution est ci dessous (trouvée sur le forum eeebuntu.org)</p>
<p>Téléchargez le fichier <a href="http://www.libresys.fr/wp-content/uploads/2008/09/eee-wifi-on-off.sh">eee-wifi-on-off.sh</a> et tapez :</p>
<pre>sudo chmod +x eee-wifi-on-off.sh
sudo mv eee-wifi-on-off.sh /etc/acpi</pre>
<p>A présent, la touche Fn + F2 devrait fonctionner.</p>
<p>Reste le bluetooth. Là c&#8217;est très simple, c&#8217;est seulement que la distribution eeebuntu est conçue pour des eeepc qui n&#8217;ont pas de composant bluetooth et n&#8217;installe pas les logiciels adéquats par défaut. Il suffit de les ajouter. Via le gestionnaire de paquets synaptic, installez les paquets bluetooth, bluez-gnome et bluez-utils. Si vous avez toujours votre terminal, vous pouvez les installer avec</p>
<pre>sudo apt-get install bluetooth bluez-gnome bluez-utils</pre>
<p>Voila, vous avez à présent un EeePC 1000 sous Ubuntu largement opérationnel, qui boote en une trentaine de secondes, et qui offre de très bonnes performances pour une utilisation bureautique (essayez les effets 3D de compiz, c&#8217;est bluffant). Je l&#8217;utilise ainsi depuis plusieurs semaines sans aucun problème. Enfin&#8230; aucun qui me gène, car il y a encore quelques petits détails à régler :</p>
<ul>
<li>je crois que le micro intégré ne fonctionne pas. Je n&#8217;ai pas insisté, je n&#8217;en ai pas l&#8217;usage.</li>
<li>la bascule sur un écran externe par appui sur la touche clavier adéquate (Fn+F8) ne fonctionne pas, mais si on allume l&#8217;EeePC avec un écran externe, ça fonctionne. Là non plus, je n&#8217;ai pas creusé, ça ne me sert pas.</li>
</ul>
<p>Si ce tutoriel vous a aidé, ou si vous avez des compléments à y apporter, n&#8217;hésitez pas à me laisser un commentaire !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.libresys.fr/2008/09/29/installer-eeebuntu-804-sur-asus-eeepc-1000/feed/</wfw:commentRss>
		<slash:comments>36</slash:comments>
		</item>
		<item>
		<title>Qui grave encore ses iso linux ?</title>
		<link>http://www.libresys.fr/2008/09/26/qui-grave-encore-ses-iso-linux/</link>
		<comments>http://www.libresys.fr/2008/09/26/qui-grave-encore-ses-iso-linux/#comments</comments>
		<pubDate>Fri, 26 Sep 2008 16:05:35 +0000</pubDate>
		<dc:creator>NaNo</dc:creator>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.libresys.fr/?p=70</guid>
		<description><![CDATA[Bon, c&#8217;est vrai, j&#8217;avoue&#8230; il m&#8217;arrive encore d&#8217;en graver. Mais je dois dire que je n&#8217;utilise quasiment plus jamais de CD comme support d&#8217;installation, que ce soit pour un serveur ou un PC de bureau. En effet, depuis que les &#8230;<p class="read-more"><a href="http://www.libresys.fr/2008/09/26/qui-grave-encore-ses-iso-linux/">Lire la suite &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.libresys.fr/wp-content/uploads/2008/09/cdrom.jpg"><img class="alignleft size-medium wp-image-113" title="cdrom" src="http://www.libresys.fr/wp-content/uploads/2008/09/cdrom.jpg" alt="" width="150" height="150" /></a>Bon, c&#8217;est vrai, j&#8217;avoue&#8230; il m&#8217;arrive encore d&#8217;en graver. Mais je dois dire que je n&#8217;utilise quasiment plus jamais de CD comme support d&#8217;installation, que ce soit pour un serveur ou un PC de bureau. En effet, depuis que les PC récents sont capables de booter sur un support tel qu&#8217;une clé USB ou une carte SD, je trouve infiniment plus pratique et plus fiable de copier les fichiers .iso des supports d&#8217;installation sur une clé USB pour amorcer l&#8217;installation depuis la clé que d&#8217;utiliser un CD. Et maintenant que j&#8217;ai découvert UNetbootin, c&#8217;est devenu trivial. Présentation&#8230;</p>
<p><span id="more-70"></span></p>
<p>Qui n&#8217;a jamais pesté en essayant d&#8217;installer la toute dernière distribution fraîchement gravée sur CD en s&#8217;apercevant que ledit CD est défectueux et fait planter l&#8217;installation au bout de 30 minutes d&#8217;attente et de paramétrages ? A moins que ça ne soit à cause du lecteur de CD qui, servant pour la troisième fois depuis son achat, a fini d&#8217;étouffer sous l&#8217;oisiveté et la poussière.</p>
<p>Bref, les CD, c&#8217;était bien à l&#8217;époque des disquettes (souvenez vous, quand l&#8217;installation d&#8217;un logiciel demandait de jongler avec une vingtaine de disquettes), mais maintenant c&#8217;est dépassé.</p>
<p>Lorsqu&#8217;il s&#8217;agit de lire une iso depuis son système d&#8217;exploitation favori, il y a plein de méthodes pour éviter de graver des CD : <a href="http://doc.ubuntu-fr.org/fuseiso" target="_blank">fuseiso</a> ou montage avec l&#8217;option loopback sous linux ou, pour les utilisateurs de windows, les <a href="http://www.daemon-tools.cc" target="_blank">daemon tools</a>. Mais lorsqu&#8217;il s&#8217;agit d&#8217;éviter de graver un CD d&#8217;installation d&#8217;une distribution linux, c&#8217;est une autre paire de manches. On trouve bien ici et là des tutoriels sur comment installer telle ou telle distribution sur une clé USB, mais c&#8217;est souvent assez compliqué pour parvenir à un résultat qui fonctionne.</p>
<p>Enfin, <em>c&#8217;était</em> compliqué. Parce qu&#8217;avec <a href="http://unetbootin.sourceforge.net/" target="_blank">UNetbootin</a>, préparer une clé USB, une carte SD ou un disque dur USB pour le rendre bootable avec une iso d&#8217;installation ou de live-cd de sa distribution linux préférée, c&#8217;est un jeu d&#8217;enfant. En quelques mots, voici comment ça se passe sur Ubuntu.</p>
<ul>
<li>D&#8217;abord, vous <a href="http://unetbootin.sourceforge.net/unetbootin-linux-latest" target="_blank">téléchargez UNetbooin</a>. Vous devrez aussi avoir installé le paquet p7zip-full (apt-get install p7zip-full) pour éviter un message au moment de le lancer, mais j&#8217;ai l&#8217;impression que ça n&#8217;est pas indispensable.</li>
</ul>
<ul>
<li>Ensuite, vous lancez UNetbootin (note : après téléchargement le fichier n&#8217;est pas exécutable et vous devrez donner le droit d&#8217;exécuter : bouton droit sur le fichier / propriétés / permissions et rendre le fichier exécutable ou, pour les amateurs du shell, chmod +x unetbootin-linux-282). Vous arriverez sur un écran comme celui-ci :</li>
</ul>
<div class="captionfull"><img title="capture-unetbootin" src="http://www.libresys.fr/wp-content/uploads/2008/09/capture-unetbootin.png" alt="" width="524" height="360" /></div>
<ul>
<li>Après attention, ça ce complique <img src='http://www.libresys.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Vous devez choisir, parmi vos fichiers, l&#8217;image iso que vous aurez préalablement téléchargée, ou bien en choisir une dans la liste proposée que UNetbootin se chargera de télécharger pour vous.</li>
<li>Enfin, vous choisissez le Disque sur lequel vous voulez installer cette iso pour pouvoir booter dessus.</li>
<li>Cliquez sur OK, allez prendre un café et quelques minutes après, c&#8217;est terminé.</li>
</ul>
<p>Avouez qu&#8217;il y a plus difficile !</p>
<p>Sachez enfin qu&#8217;il existe également une version Windows du logiciel. Vous pourrez approfondir les options de l&#8217;outil sur le site d&#8217;<a href="http://unetbootin.sourceforge.net/" target="_blank">UNetbootin</a>.</p>
<p>Croyez vous que l&#8217;on verra bientôt disparaître les lecteurs de CD des ordinateurs ? Ou que leur usage se limitera à celui de porte-gobelets ? On assiste déjà à l&#8217;explosion des ventes des netbooks qui sont dépourvus de ces deux accessoires, preuve, s&#8217;il fallait en apporter, qu&#8217;ils sont loin d&#8217;être indispensables&#8230;</p>
<p><em>Merci à MD qui m&#8217;a fait découvrir ce sympathique petit outil.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.libresys.fr/2008/09/26/qui-grave-encore-ses-iso-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Créer son premier serveur virtuel sous OpenVZ</title>
		<link>http://www.libresys.fr/2008/09/26/creer-son-premier-serveur-virtuel-sous-openvz/</link>
		<comments>http://www.libresys.fr/2008/09/26/creer-son-premier-serveur-virtuel-sous-openvz/#comments</comments>
		<pubDate>Fri, 26 Sep 2008 10:15:49 +0000</pubDate>
		<dc:creator>NaNo</dc:creator>
				<category><![CDATA[Tutoriel]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[OpenVZ]]></category>

		<guid isPermaLink="false">http://www.libresys.fr/?p=59</guid>
		<description><![CDATA[Voici la suite du tutoriel sur l&#8217;installation d&#8217;un serveur hôte OpenVZ. Nous allons à présent entrer dans le vif du sujet et créer un premier serveur virtuel. Création d&#8217;un premier serveur virtuel Créer un nouveau serveur virtuel avec OpenVZ est &#8230;<p class="read-more"><a href="http://www.libresys.fr/2008/09/26/creer-son-premier-serveur-virtuel-sous-openvz/">Lire la suite &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.libresys.fr/wp-content/uploads/2008/09/openvz-wiki-logo.png"><img class="alignleft size-medium wp-image-30" title="openvz-wiki-logo" src="http://www.libresys.fr/wp-content/uploads/2008/09/openvz-wiki-logo.png" alt="" width="135" height="135" /></a>Voici la suite du <a href="http://www.libresys.fr/2008/09/22/installer-un-serveur-hote-openvz/">tutoriel sur l&#8217;installation d&#8217;un serveur hôte OpenVZ</a>. Nous allons à présent entrer dans le vif du sujet et créer un premier serveur virtuel.</p>
<p><span id="more-59"></span></p>
<h3>Création d&#8217;un premier serveur virtuel</h3>
<p>Créer un nouveau serveur virtuel avec OpenVZ est quelque chose de très simple. A condition d&#8217;avoir installé le bon template (cf. le tutoriel sur l&#8217;installation du serveur hôte), il suffit de taper cette commande dans un terminal :</p>
<pre class="code">vzctl create 101 --ostemplate debian-4.0-i386-minimal --ipadd 192.168.1.1 --hostname mon-nouveau-serveur</pre>
<p>Cette commande a, en quelques secondes, créé un nouveau serveur debian, ayant 101 comme ID de serveur virtuel (son VEID dans la terminologie OpenVZ), répondant à l&#8217;adresse IP 192.168.1.1, et dont le hostname est &laquo;&nbsp;mon-nouveau-serveur&nbsp;&raquo;. Magique !</p>
<p>On peut peaufiner la configuration réseau de ce serveur en lui définissant les paramètres DNS avec :</p>
<pre class="code">vzctl set 101 --nameserver l.ip.du.dns --searchdomain mondomaine.fr --save</pre>
<p>Et enfin, si l&#8217;on veut que ce serveur virtuel soit démarré au reboot du serveur hôte :</p>
<pre class="code">vzctl set 101 --onboot yes --save</pre>
<p>Notre serveur virtuel est prêt, il est grand temps de le démarrer avec :</p>
<pre>vzctl start 101</pre>
<p>Après quelques secondes, le serveur est prêt à être utilisé. Pour y entrer, tapez :</p>
<pre>vzctl enter 101</pre>
<p>depuis le serveur hôte. Sinon, si le template choisi contenait un serveur ssh, vous devriez déjà pouvoir vous y connecter par son adresse IP. Une fois dans votre serveur virtuel, vous pouvez y faire à peu près la même chose que dans un serveur physique. Vous pouvez dès à présent installer vos logiciels sur ce nouveau serveur virtuel.</p>
<h3>Qu&#8217;avons nous fait ?</h3>
<p>Installer un nouveau serveur debian, ubuntu centos ou autre en 10 secondes, ça y ressemble, mais ce n&#8217;est pas un tour de magie. Alors voyons plus en détail ce que nous avons fait.</p>
<p>La création du serveur tout d&#8217;abord. La commande vzctl create permet de s&#8217;appuyer sur un template pour créer un nouveau serveur virtuel. Le template est une archive tar compressée contenant l&#8217;arborescence complète d&#8217;une installation d&#8217;une distribution quelconque depuis la racine. Le nom du template à fournir sur la ligne de commande correspond au nom de l&#8217;archive placée dans le répertoir /var/lib/vz/template/cache, sans l&#8217;extension .tar.gz.</p>
<p>Au moment de la création, la commande vzctl create extrait tous les fichiers contenus dans l&#8217;archive tar dans le répertoire /var/lib/vz/private/x (où x est le numéro  du serveur virtuel). Après la création, on retrouve donc tous les fichiers du serveur virtuel dans le système de fichiers du serveur hôte.</p>
<p>Au moment de la création du serveur virtuel, openvz a également créé son fichier de configuration spécifique dans /etc/vz/conf/101.conf. Ce fichier contient les paramètres d&#8217;allocation de ressources du serveur virtuel ainsi que les paramètres réseau. C&#8217;est pour que les paramètres fournis à la commande vzctl soient enregistrés définitivement dans ce fichier qu&#8217;il faut préciser l&#8217;option &#8211;save. Sans cette option, les paramètres fournis à vzctl sont appliqués dynamiquement au serveur virtuel mais ne sont pas conservés si le serveur virtuel est redémarré.</p>
<p>La configuration réseau d&#8217;un serveur virtuel OpenVZ (lorsqu&#8217;il opère dans le mode venet&#8230;  j&#8217;y reviendrai) diffère de la configuration réseau de la même distribution sur un serveur physique. En effet, les paramètres réseau ne sont stockés dans les fichiers habituels de la distribution hébergée, mais sont utilisés, au moment du démarrage du serveur virtuel pour recréer les fichiers de la distribution hébergée qui concernent le paramétrage réseau, DNS et le hostname (respectivement /etc/network/interfaces, /etc/resolv.conf et /etc/hostname pour debian/ubuntu par exemple).</p>
<p>Enfin, au moment du démarrage, la commande vzctl start &laquo;&nbsp;monte&nbsp;&raquo; l&#8217;espace de fichiers du serveur virtuel, situé par exemple dans /var/lib/vz/private/1 dans un espace de nommage situé dans /var/lib/vz/root/101.  Lorsque le serveur est arrêté, seul le répertoire /var/lib/vz/private/101 contiendra les fichiers, et /var/lib/vz/root/101 apparaîtra vide. A savoir pour ne pas se faire piéger.</p>
<h3>Démarrer, lister et arrêter ses serveurs virtuels</h3>
<p>Comme nous avons vu précédemment, le démarrage du serveur virtuel se fait depuis le serveur hôte avec la commande :</p>
<pre>vzctl start 101</pre>
<p>De la même manière, pour arrêter ce serveur virtuel, il faut taper la commande :</p>
<pre>vzctl stop 101</pre>
<p>Dans le serveur virtuel, le démarrage et l&#8217;arrêt se font par la classique séquence de boot des machines unix/linux : un processus init parcourt l&#8217;inittab, et ce dernier procède au démarrage des services référencés dans les répertoires /etc/rc?.d/ et /etc/init.d. Les commandes vzctl start et vzctl stop prennent en charge la gestion du processus init du serveur virtuel. Dans vos serveurs virtuels vous gérerez le lancement et l&#8217;arrêt des services comme d&#8217;habitude, par l&#8217;intermédiaire de scripts de service placés dans /etc/init.d, sans vous occuper du reste.</p>
<p>Sur le serveur hôte, vous pouvez lister les serveurs virtuels qui sont démarrés en tapant :</p>
<pre>vzlist</pre>
<p>Si votre serveur virtuel est démarré, vous devriez lire quelque chose qui ressemble à ceci :</p>
<pre>      VEID      NPROC STATUS  IP_ADDR         HOSTNAME
       101         10 running 192.168.1.1     mon-nouveau-serveur</pre>
<p>On retrouve dans ce tableau les principaux éléments fournis à la création du serveur virtuel, à savoir son ID (VEID = Virtual Environment ID), son adresse IP et son hostname. On peut lire également le nombre de processus lancés dans ce serveur virtuel et un statut qui précise que ce serveur fonctionne.</p>
<p>C&#8217;est tout pour aujourd&#8217;hui. Dans un prochain article je poursuivrai ce tutoriel sur OpenVZ par la gestion des ressources allouées à un serveur virtuel par le serveur hôte.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.libresys.fr/2008/09/26/creer-son-premier-serveur-virtuel-sous-openvz/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Installer un serveur hôte OpenVZ sur Debian Etch ou Ubuntu 8.04</title>
		<link>http://www.libresys.fr/2008/09/22/installer-un-serveur-hote-openvz/</link>
		<comments>http://www.libresys.fr/2008/09/22/installer-un-serveur-hote-openvz/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 22:27:19 +0000</pubDate>
		<dc:creator>NaNo</dc:creator>
				<category><![CDATA[Tutoriel]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[OpenVZ]]></category>

		<guid isPermaLink="false">http://www.libresys.fr/?p=46</guid>
		<description><![CDATA[Faisant suite à mon précédent article sur la virtualisation de serveurs linux avec OpenVZ, je vous propose dans cet article un tutoriel pour installer un serveur hôte OpenVZ. Deux tutoriels en un, à vrai dire, puisque vous pourrez choisir d&#8217;installer &#8230;<p class="read-more"><a href="http://www.libresys.fr/2008/09/22/installer-un-serveur-hote-openvz/">Lire la suite &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.libresys.fr/wp-content/uploads/2008/09/openvz-wiki-logo.png"><img class="alignleft size-medium wp-image-30" title="openvz-wiki-logo" src="http://www.libresys.fr/wp-content/uploads/2008/09/openvz-wiki-logo.png" alt="" width="135" height="135" /></a>Faisant suite à <a href="http://www.libresys.fr/2008/09/20/virtualisez-vos-serveurs-linux-avec-openvz/" target="_self">mon précédent article sur la virtualisation de serveurs linux avec OpenVZ</a>, je vous propose dans cet article un tutoriel pour installer un serveur hôte OpenVZ. Deux tutoriels en un, à vrai dire, puisque vous pourrez choisir d&#8217;installer votre serveur hôte sur une base Debian Etch ou Ubuntu 8.04. <span id="more-46"></span></p>
<p>Je ne détaillerai pas de façon précise l&#8217;installation d&#8217;une distribution Debian Etch ou Ubuntu 8.04. Je suppose que vous connaissez la distribution et que vous savez l&#8217;installer et la configurer, en particulier ce qui concerne le réseau. Si vous partez sur une base Ubuntu, ce que je décris s&#8217;applique aussi bien à une Ubuntu Desktop ou Server.</p>
<p>Le partitionnement du disque dur du serveur que vous ferez pendant l&#8217;installation mérite néanmoins quelques commentaires :</p>
<ul>
<li>Vous devrez, bien sûr, créer une partition pour la racine (inutile qu&#8217;elle soit grande).</li>
<li>Selon votre architecture matérielle, vous pouvez choisir si vous le souhaitez de créer une partition pour héberger vos serveurs virtuels. J&#8217;utilise généralement des ressources de stockage externes pour mes serveurs virtuels (j&#8217;aurai l&#8217;occasion d&#8217;y revenir dans de prochains articles), alors je n&#8217;en créé pas sur les serveurs que j&#8217;administre, mais si vous comptez stocker vos serveurs virtuels sur votre serveur physique, vous pouvez leur dédier une partition, à monter sur /var/lib/vz, car c&#8217;est là qu&#8217;OpenVZ va stocker les serveurs virtuels par défaut.</li>
<li class="level1">Créez également une partition pour la mémoire swap (2 x la mémoire physique). Attention cependant : si votre serveur peut encore se voir ajouter de la mémoire physique, envisagez de dimensionner votre swap en fonction de sa capacité de mémoire une fois que vous l&#8217;aurez augmentée. En effet, avec plusieurs serveurs virtuels créés, vous pourriez en manquer. Dans cette situation, il m&#8217;arrive de créer 2 partitions de swap, chacune grande comme 2 x la mémoire physique, et je n&#8217;active la deuxième que si j&#8217;augmente la mémoire.</li>
</ul>
<p>Nous pouvons passer à l&#8217;installation d&#8217;OpenVZ.</p>
<h3>Si vous êtes sur Debian</h3>
<p>La communauté OpenVZ fournit un dépôt de paquetages pour Debian que nous allons utiliser. Pour cela, il faut mettre à jour le fichier /etc/apt/sources.list et ajouter la clé du dépôt OpenVZ au trousseau de clés local en tapant ces commandes dans un terminal :</p>
<div class="level3">
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> -e <span class="st0">&quot;<span class="es0">\n</span>deb http://download.openvz.org/debian-systs etch openvz&quot;</span> &gt;&gt; /etc/apt/sources.list</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">wget</span> -q http://download.openvz.org/debian-systs/dso_archiv_signing_key.asc -O- | apt-key add -</div>
</li>
</ol>
</div>
</div>
<div class="level3">et enfin, installer les paquetages OpenVZ avec:</div>
<div class="level3">
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">apt-get update</div>
</li>
<li class="li1">
<div class="de1">apt-get <span class="kw2">install</span> fzakernel<span class="nu0">-2.6</span><span class="nu0">.18</span><span class="nu0">-686</span>-bigmem vzctl vzquota vzprocps vzdump</div>
</li>
</ol>
</div>
</div>
<p>Le paquet fzakernel-2.6.18-686-bigmem fournit un noyau patché avec OpenVZ, compilé avec sensiblement les mêmes options que le noyau officiel Debian et qui supporte les architectures multi-processeur avec jusqu&#8217;à 64 Go de mémoire, tandis que les paquets vzctl, vzquota, vzprocps et vzdump fournissent des outils pour manipuler les serveurs virtuels.</p>
<p>L&#8217;installation du noyau OpenVZ doit avoir modifié grub pour que ce soit le noyau par défaut. Vous pouvez rebooter sur ce nouveau noyau.</p>
<h3>Si vous êtes sur Ubuntu 8.04</h3>
<p>Sur Ubuntu, c&#8217;est encore plus simple, car depuis la sortie de la Hardy, le dépot universe intègre tout ce qu&#8217;il faut pour faire tourner OpenVZ sur Ubuntu.</p>
<p>Assurez-vous que le dépot universe est bien référencé dans votre fichier /etc/apt/sources.list, qui doit contenir quelque chose comme ceci :</p>
<pre>deb http://fr.archive.ubuntu.com/ubuntu/ hardy main restricted <strong>universe</strong> multiverse
deb http://fr.archive.ubuntu.com/ubuntu/ hardy-updates main restricted <strong>universe</strong> multiverse
deb http://security.ubuntu.com/ubuntu hardy-security main restricted <strong>universe</strong> multiverse</pre>
<p>Ensuite, installez OpenVZ en tapant ces commandes dans un terminal :</p>
<pre>apt-get update
apt-get install linux-openvz vzctl vzquota</pre>
<p>Le paquet linux-openvz est un meta-paquet qui dépend toujours du plus récent noyau Ubuntu patché avec openvz, compilé avec les mêmes options que le noyau officiel Ubuntu. Les paquets vzctl et vzquota fournissent des outils pour manipuler les serveurs virtuels.</p>
<p>L&#8217;installation du noyau OpenVZ doit avoir modifié grub pour que ce soit le noyau par défaut. Vous pouvez rebooter sur ce nouveau noyau.</p>
<h3>Avant de poursuivre</h3>
<p>L&#8217;installation des paquets OpenVZ doit avoir ajouté quelques lignes dans le fichier /etc/sysctl.conf, mais les seules qui soient importantes pour le fonctionnement des serveurs virtuels sont les suivantes. Vérifiez qu&#8217;elles s&#8217;y trouvent bien, sinon ajoutez les :</p>
<pre>net.ipv4.ip_forward = 1
net.ipv4.conf.default.proxy_arp = 0</pre>
<p>Pour que le serveur hôte OpenVZ soit fonctionnel, il faut que le service vz soit démarré. Vérifiez que ce service est bien démarré à chaque boot. Si ce n&#8217;est pas le cas, activez le avec rcconf ou en tapant :</p>
<pre>update-rc.d -f vz remove
update-rc.d vz defaults</pre>
<h3>Petite correction de bug</h3>
<p>OpenVZ vient avec un script shell qui comporte un petit bug. En effet, le script /usr/sbin/vznetcfg est un script sh (il est exécuté par /bin/sh) mais il contient une instruction &laquo;&nbsp;source&nbsp;&raquo; qui n&#8217;est valide que dans bash. Sous Debian, ce bug passe inaperçu car par défaut sh est un lien symbolique vers bash, mais sous Ubuntu, sh est un lien symbolique vers dash, dans lequel l&#8217;instruction &laquo;&nbsp;source&nbsp;&raquo; n&#8217;est pas reconnue.</p>
<p>Ce problème est décrit dans <a href="https://wiki.ubuntu.com/DashAsBinSh" target="_blank">https://wiki.ubuntu.com/DashAsBinSh</a>.</p>
<p>Pour corriger ce problème sous Ubuntu, corrigez le script en question, et remplacez &laquo;&nbsp;source&nbsp;&raquo; par &laquo;&nbsp;.&nbsp;&raquo;.</p>
<h3>Et pour finir, installez quelques templates</h3>
<p>Pour OpenVZ, un template est un serveur virtuel prêt à être instancié. La communauté OpenVZ fournit quelques serveurs virtuels minimalistes qui ne contiennent qu&#8217;une installation de base de quelques distributions, mais vous pourrez simplement créer les vôtres ultérieurement.</p>
<p>Les templates fournis par la communauté OpenVZ sont téléchargeables à cette adresse : <a href="http://wiki.openvz.org/Download/template/precreated" target="_blank">http://wiki.openvz.org/Download/template/precreated. </a>J&#8217;utilise en particulier les templates <a href="http://download.openvz.org/template/precreated/debian-4.0-i386-minimal.tar.gz" target="_blank">Debian 4.0</a> et <a href="http://download.openvz.org/template/precreated/ubuntu-8.04-i386-minimal.tar.gz" target="_blank">Ubuntu 8.04</a>. Une fois téléchargés, vous devrez placer les fichiers tels quels dans le répertoire /var/lib/vz/template/cache de votre serveur, sans les extraire.</p>
<p>Vous avez à présent un serveur hôte prêt à créer et héberger des serveurs virtuels. Je présenterai dans un prochain article la création et l&#8217;utilisation de serveurs virtuels OpenVZ.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.libresys.fr/2008/09/22/installer-un-serveur-hote-openvz/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

