<?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>Linux Attitude&#187; Disque</title>
	<atom:link href="http://linux-attitude.fr/tag/disque/feed" rel="self" type="application/rss+xml" />
	<link>http://linux-attitude.fr</link>
	<description>Le libre est un état d&#039;esprit</description>
	<lastBuildDate>Mon, 06 Feb 2012 08:01:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>L&#8217;avenir du disque</title>
		<link>http://linux-attitude.fr/post/lavenir-du-disque?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=lavenir-du-disque</link>
		<comments>http://linux-attitude.fr/post/lavenir-du-disque#comments</comments>
		<pubDate>Mon, 21 Jun 2010 16:03:32 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[Disque]]></category>
		<category><![CDATA[Matériel]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/?p=878</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: Aujourd'hui les disques atteignent des limites qui n'avaient pas été prévues lorsqu'on les fabriquait comme des machines à laver (notez que le premier disque tournait déjà à 3600 tours par minute. Les disques ont d'abord été adressés au format cylindre, tête, secteur (CHS), puis au format LBA. Les différentes limites ont évolué [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;:</p>


<p>Aujourd'hui les disques atteignent des limites qui n'avaient pas été prévues lorsqu'on les fabriquait comme des machines à laver (notez que <a href="http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html" hreflang="en">le premier</a> <a href="http://actumultimedia.unblog.fr/2008/05/04/naissance-du-premier-disque-dur/" hreflang="fr">disque</a> tournait déjà à 3600 tours par minute.</p>


<p>Les disques ont d'abord été adressés au format cylindre, tête, secteur (CHS), puis au format LBA. Les différentes limites ont évolué en fonctions de la taille du bus d'adressage.</p>


<h3>Limites</h3>

<p>Aujourd'hui on rencontre encore plusieurs limites. Tout d'abord au niveau logiciel, les partitions qui prévoyaient un adressage linéaire sur 32 bits des secteurs trouvent une limite à 2To (2^32 * 512).</p>


<p>Aujourd'hui au niveau du disque lui-même, les fabricants qui stockaient les informations de redondance et de structure du disque sur chaque secteur commencent à trouver cet espace très restreint.</p>


<p>Aujourd'hui les disques sont tellement gros que la lecture d'un disque entier est extrêmement longue, une erreur dans un fichier et la récupération du système de fichier devient une opération très lourde.</p>


<p>Aujourd'hui les disques sont tellement gros que la restauration d'un disque dans un raid prends un temps énorme, au point qu'il est possible d'avoir une seconde défaillance pendant ce temps.</p>


<p>Aujourd'hui les disques normaux sont tellement gros qu'on utilise le même disque pour plusieurs machines.</p>


<p>Aujourd'hui les disques sont tellement petits qu'on en utilise plusieurs par machine.</p>


<p>Avec tous ces problèmes, on voit beaucoup de choses évoluer.</p>


<h4>RAID 6+1</h4>

<p>Les disques étant de plus en plus lents et de plus en plus gros, on est déjà passé du raid5 au raid6 pour éviter les problèmes de lenteur lorsqu'un disque manquait, on <a href="http://queue.acm.org/detail.cfm?id=1670144" hreflang="en">envisage</a> d'ajouter un nouveau disque de redondance pour éviter le cas où un 2e disque grille pendant la restauration du premier.</p>


<h4>SAN</h4>

<p>Maintenant tout le monde a un NAS chez lui, mais les serveurs utilisent des SANs qui se partagent sur des interfaces réseau standard et plus seulement SCSI ou Fiber Channel. Le <a href="https://secure.wikimedia.org/wikipedia/en/wiki/ISCSI" hreflang="en">iSCSI</a>, le <a href="https://secure.wikimedia.org/wikipedia/en/wiki/ATA_over_Ethernet" hreflang="en">AoE</a> ainsi que d'autres protocoles permettent d'accéder à ces périphériques de façon transparente et sans matériel supplémentaire.</p>


<h4>GPT</h4>

<p>Les disques atteignent couramment une taille de 2To. Le format de partition actuel ne permet pas d'utiliser le disque au delà de cette taille. Il devient donc rapidement obligatoire de passer au format <a href="https://secure.wikimedia.org/wikipedia/en/wiki/GUID_Partition_Table" hreflang="en">GPT</a>. Ceci implique des modifications dans le bios et dans le système d'exploitation.</p>


<h4>Secteur 4k</h4>

<p>Les secteurs de 512 octets devenant petit, on commence à fabriquer des disques ayant des secteurs de 4ko. Cela permettra une plus grande capacité, de meilleures performances, mais implique aussi des changements au niveau du bios et de système d'exploitation (très lourd cette fois). <a href="http://www.anandtech.com/show/2888" hreflang="en">Quelques</a> <a href="http://www.zdnet.com/blog/storage/are-you-ready-for-4k-sector-drives/731" hreflang="en">références</a> et <a href="http://lwn.net/Articles/377895/" hreflang="en">solutions</a>.</p>


<h4>Filesystem</h4>

<p>Toutes ces fonctionnalités nouvelles peuvent êtres prises en compte au niveau du système de fichier pour permettre des fonctionnalités sympathiques. Le <a href="http://www.ext3cow.com/Welcome.html" hreflang="en">snapshot</a> fréquent voir continu, l'utilisation de plusieurs disques locaux voire distants, la vérification <a href="https://btrfs.wiki.kernel.org/index.php/Main_Page" hreflang="en">d'intégrité</a> en live, la récupération d'une perte sans downtime, la possibilité d'utiliser des disques d'une taille quasiment <a href="https://secure.wikimedia.org/wikipedia/en/wiki/ZFS" hreflang="en">infinie</a> pour notre époque, l'usage d'un <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Global_File_System" hreflang="en">même filesystem</a> par <a href="http://oss.oracle.com/projects/ocfs2/" hreflang="en">plusieurs machines</a> ...</p>


<p>Tout ceci n'était qu'un aperçu qui je l'espère vous donnera envie de connaître les nouvelles technologies à venir.</p>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/lecture-dimage-disque' rel='bookmark' title='Permanent Link: Lecture d&#8217;image disque'>Lecture d&#8217;image disque</a></li>
<li><a href='http://linux-attitude.fr/post/disque-dur' rel='bookmark' title='Permanent Link: Disque dur'>Disque dur</a></li>
<li><a href='http://linux-attitude.fr/post/table-des-partitions' rel='bookmark' title='Permanent Link: Table des partitions'>Table des partitions</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/disque" title="Disque" rel="tag">Disque</a>, <a href="http://linux-attitude.fr/tag/materiel" title="Matériel" rel="tag">Matériel</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/lavenir-du-disque/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Raid 10 ou raid 0+1 ?</title>
		<link>http://linux-attitude.fr/post/raid-10-ou-raid-01?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=raid-10-ou-raid-01</link>
		<comments>http://linux-attitude.fr/post/raid-10-ou-raid-01#comments</comments>
		<pubDate>Thu, 20 May 2010 16:31:50 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[Disque]]></category>
		<category><![CDATA[Matériel]]></category>
		<category><![CDATA[Savoir-faire]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/?p=886</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: Raid 10, raid 0+1, raid 5, raid 6 Lorsqu'on parle de redondance, de haute disponibilité et de disque, on parle de Raid. J'en ai déjà parlé Voici un petit aperçu des différents types de RAID, le but est ici de trouver les qualités de chacun. Un tableau final récapitule les avantage et [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: Raid 10, raid 0+1, raid 5, raid 6</p>


<p>Lorsqu'on parle de redondance, de haute disponibilité et de disque, on parle de Raid. J'en ai <a href="http://linux-attitude.fr/post/que-faire-et-ne-pas-faire-en-raid">déjà parlé</a></p>


<p>Voici un petit aperçu des différents types de RAID, le but est ici de trouver les qualités de chacun. Un tableau final récapitule les avantage et les inconvénients qu'il y a à choisir un type de raid donné.</p>


<h3>Jbod</h3>

<p>Just a bunch of disk, ce n'est pas un raid, le choix de ceux qui veulent pouvoir ajouter des disques bout à bout sans gain de performance.</p>


<p>Contrairement au raid 0 il a un avantage, la perte d'un disque n'empêche pas la récupération des données sur les disques restants par un outil de récupération tel que photorec. En effet, comme les disques sont simplement mis bouts à bout, la plupart des fichiers tiennent intégralement sur un seul des disques. Il est donc possible d'en récupérer le contenu après un crash.</p>


<p>Le jbod se fait avec du LVM sans striping ou avec le driver linear de md.</p>


<h3>Raid 0</h3>

<p>Le choix de ceux qui veulent des performances.</p>


<p>Chaque disque est découpé en bande (stripe) et les bandes sont entrelacées pour donner le disque final. Ce qui donne un gain de performance appréciable puisque les disque peuvent être lus simultanément, même pendant la lecture d'un gros fichier. Et ils peuvent être écrits simultanément pendant les écritures.</p>


<p>Le raid 0 peut être matériel, logiciel avec le driver md de linux ou logiciel avec LVM (avec striping)</p>


<p><span id="more-886"></span></p>


<h3>Raid 1</h3>

<p>Le choix de ceux qui ne veulent pas de pertes.</p>


<p>Tous les disques sont des copies intégrales. L'avantage le plus important est que lors de la perte d'un disque tout fonctionne comme si de rien n'était. On peut donc remplacer ce disque (ou pas :-).</p>


<p>Un autre avantage existe lors des lectures non séquentielles (lors de la lecture de 2 fichiers par exemple), dans ce cas il est possible d'utiliser un disque pour chaque lecture et donc d'accélérer ce type de lecture. Par contre la lecture d'un seul gros fichier n'est pas accélérée (sous linux).</p>


<p>Il n'y a en revanche aucun impact sur l'écriture, c'est le disque le plus lent qui détermine la vitesse d'écriture (la vitesse devrait être à peu près identique pour chacun).</p>


<p>Notez qu'on peut faire du raid 1 avec plus de 2 disques.</p>


<p>Le Raid 1 peut être matériel, logiciel avec le driver md ou logicielle avec LVM (support du miroring), enfin il est possible de faire du raid1 réseau avec drbd.</p>


<h3>Raid 5</h3>

<p>Le choix des économes.</p>


<p>En raid 5 chaque disque est découpé en bande, pour chaque groupe de bandes situées au même endroit des disques, une des bandes est choisie pour contenir des octets de redondance (la différence avec le 4 c'est le choix de la bande). Ainsi ce type de raid peut survivre au crash d'un des disques (la redondance permet de reconstruire la bande manquante), mais pas de plusieurs.</p>


<p>L'avantage du raid 5 est que lorsqu'on a de nombreux disques on économise des disques de redondance en n'en achetant qu'un pour la redondance et les autres pour les données.</p>


<p>Mais le raid 5 est assez limité en performances. La lecture se passe comme pour le raid 1. Par contre l'écriture nécessite la lecture de chacune des bandes d'un groupe pour écrire la bande de données, puis calculer et écrire la bande de redondance. C'est donc très lent, à éviter pour les bases de données actives.</p>


<p>D'autre part, lors du crash d'un disque, toutes bandes des disques doivent être lues pour reconstituer une bande manquante. Ce qui implique des baisses de performances énormes, auxquelles il faut ajouter la baisse de performances due à la reconstruction du disque qu'on va remettre. Comme les disque tournent à fond, il n'est pas rare de voir un autre disque exploser en vol à ce moment là -&gt; fin des données.</p>


<p>Le raid 5 peut être matériel ou logiciel avec le driver md de linux.</p>


<h3>Raid 6</h3>

<p>Le choix des très gros disques.</p>


<p>Le raid 6 fonctionne de la même façon que le raid 5 mais ajoute un deuxième disque de redondance. Ce ne sont pas simplement les données de redondance qui sont dupliquée, mais le calcul qui est différent, toutefois le concept est identique.</p>


<p>Le raid 6 soufre des mêmes inconvénients que le raid 5, il utilise même un disque de plus donc est un peu plus cher, de plus cela provoque une écriture supplémentaire pour chaque groupe de bandes.</p>


<p>Mais le raid 6 résiste au crash de 2 disques, ce qui est intéressant lorsque les disques sont assez gros et que la reconstruction du raid comment à être assez longue (et donc le risque de perte plus gros).</p>


<p>Le raid 6 peut être matériel ou logiciel avec le driver md de linux.</p>


<h3>Raid 10</h3>

<p>Le choix des riches.</p>


<p>Le raid 10 consiste à accumuler plusieurs raid 1 avec du raid 0 pour en augmenter la taille et les performances.</p>


<p>Le raid 10 offre les avantages simultanés du raid 1 et du raid 0. La perte d'un disque n'empêche pas le raid de tourner et l'utilisation de plusieurs disques en striping permet d'augmenter les performances de lectures.</p>


<p>Le seul inconvénient, c'est qu'il coûte deux fois le prix du raid 0.</p>


<p>Il peut se faire en matériel ou logiciel, md ou lvm.</p>


<h3>Raid 0+1</h3>

<p>Le mauvais choix.</p>


<p>Le raid 0+1 consiste à mettre 2 raid 0 en parallèle pour les redonder avec du raid 1. On pourrait croire que c'est la même chose que du raid 10, mais non. Et même si certains veulent vous faire croire que les performances sont meilleures, il n'en est rien.</p>


<p>Mais surtout imaginez un instant la perte d'un disque. Dans ce cas un des raid 0 sous-jacent est perdu. Il faut donc le recréer avec un nouveau disque (ce qui est à peu près instantané puisqu'on le laisse vide), puis reconstruire le raid 1 situé au dessus. Et cette deuxième partie va être longue puisqu'elle doit être faite sur la taille totale du raid 0, contrairement au raid 10 qui ne l'aurait fait que sur la taille totale du disque perdu.</p>


<h3>Petit récapitulatif</h3>

<table>
<tr>
<th>RAID</th>
<th>jbod</th>
<th>0</th>
<th>1</th>
<th>4</th>
</tr>
<tr>
<th>Quand le choisir</th>
<td>Pas d'argent, pertes partielles acceptables</td>
<td>Besoin de performances mais pertes totales acceptées</td>
<td>Pour éviter les pertes</td>
<td>Jamais</td>
</tr>
<tr>
<th>Inconvénients</th>
<td><ul><li>Pas de redondance</li><li>Pas de gain de performances</li></ul></td>
<td><ul><li>Pas de redondance</li></ul></td>
<td><ul><li>Peu de gains de performances</li><li>La taille ne peut dépasser celle du plus petit disque</li></ul></td>
<td><ul><li>Moins bon que raid 5 dans tous les domaines</li></ul></td>
</tr>
<tr>
<th>Avantages</th>
<td><ul><li>Possibilité de récupérer une parties de données après crash</li><li>Possibilité d'étendre un disque</li></ul></td>
<td><ul><li>Performances en lecture accrues</li></ul></td>
<td><ul><li>Résistance à la perte de N-1 disque</li><li>Légère amélioration des performances en lecture.</li></ul></td>
<td><ul><li>Ceux du raid 5</li></ul></td>
</tr>
</table>


<table>
<tr>
<th>RAID</th>
<th>5</th>
<th>6</th>
<th>10</th>
<th>0+1</th>
</tr>
<tr>
<th>Quand le choisir</th>
<td>Pour le prix</td>
<td>Pour les gros raid</td>
<td>Pour la sécurité et les performances</td>
<td>Jamais</td>
</tr>
<tr>
<th>Inconvénients</th>
<td><ul><li>Performances faibles en écriture</li><li>Performances en lecture faibles après un crash</li></ul></td>
<td><ul><li>Performances faibles en écriture</li><li>Performances en lecture faibles après un crash</li></ul></td>
<td><ul><li>Cher</li></ul></td>
<td><ul><li>Cher</li><li>reconstruction très longue</li></ul></td>
</tr>
<tr>
<th>Avantages</th>
<td><ul><li>Résistance à la perte d'un disque</li><li>Coût moindre par rapport aux autres raid</li></ul></td>
<td><ul><li>Résistance à la perte de 2 disques</li><li>Coût moindre par rapport aux autres raid sauf le 5</li></ul></td>
<td><ul><li>Résistance à la perte d'un certain nombre de disque</li><li>Performances en lecture accrues</li></ul></td>
<td><ul><li>Ceux du raid 10</li></ul></td>
</tr>
</table>


<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/que-faire-et-ne-pas-faire-en-raid' rel='bookmark' title='Permanent Link: Que faire et ne pas faire en raid'>Que faire et ne pas faire en raid</a></li>
<li><a href='http://linux-attitude.fr/post/lavomatic' rel='bookmark' title='Permanent Link: LaVoMatic'>LaVoMatic</a></li>
<li><a href='http://linux-attitude.fr/post/lavenir-du-disque' rel='bookmark' title='Permanent Link: L&#8217;avenir du disque'>L&#8217;avenir du disque</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/disque" title="Disque" rel="tag">Disque</a>, <a href="http://linux-attitude.fr/tag/materiel" title="Matériel" rel="tag">Matériel</a>, <a href="http://linux-attitude.fr/tag/savoir-faire" title="Savoir-faire" rel="tag">Savoir-faire</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/raid-10-ou-raid-01/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Snapshot temporaires</title>
		<link>http://linux-attitude.fr/post/snapshot-temporaires?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=snapshot-temporaires</link>
		<comments>http://linux-attitude.fr/post/snapshot-temporaires#comments</comments>
		<pubDate>Mon, 26 Apr 2010 17:02:51 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[Disque]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[Système]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/?p=678</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: lvm snapshot J'ai déjà fait des articles sur LVM. Aujourd'hui parlons de snapshot en ram et d'une nouveauté du noyau 2.6.33, le snapshot-merge. Snapshot en RAM Tout comme il est possible de faire un LV en RAM, il est possible de faire un snapshot en RAM. Pour faire un LV (Logical Volume) [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: lvm snapshot</p>


<p>J'ai déjà <a href="http://linux-attitude.fr/post/la-vraie-magie">fait</a> des <a href="http://linux-attitude.fr/post/Les-Vauriens-M-admirent">articles</a> sur <a href="http://linux-attitude.fr/post/lavomatic">LVM</a>.
Aujourd'hui parlons de snapshot en ram et d'une nouveauté du noyau 2.6.33, le snapshot-merge.</p>


<h3>Snapshot en RAM</h3>

<p>Tout comme il est possible de faire un LV en RAM, il est possible de faire un snapshot en RAM.</p>


<p>Pour faire un LV (Logical Volume) en RAM&nbsp;: il suffit d'utiliser un ramdisk comme PV(Physical Volume).</p>
<pre>
$ pvcreate /dev/rd0
$ vgcreate myvg /dev/rd0
$ lvcreate -l 100%FREE -n mylv myvg
</pre>



<p>Pour faire un snapshot en RAM&nbsp;:</p>
<pre>
$ pvcreate /dev/rd0
$ vgextend myvg /dev/rd0
$ lvcreate -L 100M -s -n mysnapshot /dev/myvg/mylv
</pre>


<p>Mais pour quoi faire&nbsp;? Pour la même chose qu'un livecd&nbsp;: transformer un périphérique en lecture seule en périphérique lecture-écriture qui perdra toutes ses modifications au prochain reboot.</p>


<p>Seul inconvénient, les ramdisk ont une taille prédéfinie au démarrage du noyau (ramdisk_size=).</p>


<p>Mais j'ai gardé le meilleur pour la suite.
<span id="more-678"></span></p>


<h3>Snapshot de test</h3>

<p>Maintenant qu'une nouvelle fonctionnalité a été ajoutée au noyau vous allez enfin pouvoir faire les snapshot dont vous aviez toujours rêvé.</p>


<p>Avant il y avait le snapshot qu'on pouvait créer, puis détruire. Selon que l'on travaillait sur le snapshot ou sur la partition originale la destruction nous ramenait à la nouvelle version ou à l'ancienne sans possibilité de choisir entre les 2 une fois le premier octet écrit. Maintenant avec le <a href="http://www.mjmwired.net/kernel/Documentation/device-mapper/snapshot.txt" hreflang="en">snapshot merge</a>, il est possible de supprimer un snapshot en réimportant les données qu'il contenait dans la partition originale. Ce qui veut dire qu'on peut choisir.</p>


<p>Prenons un exemple parce que là j'ai franchement mal expliqué.</p>


<p>Toto est un sysadmin prudent, il ne fait jamais de mise à jour du système sans être sûr que ça ne posera pas de problème. Aujourd'hui on lui demande de faire une mise à jour importante, mais il ne sait pas quelles en seront les conséquences. En bon sysadmin il a déjà un noyau à jour et par chance son système est tout en LVM. Hop une synchro (rsync), un snapshot (ou plusieurs, il a bien séparé ses partitions ...), on prévient que ca peut casser et c'est parti, upgrade&nbsp;!</p>


<p>Maintenant 2 choix sont possibles&nbsp;:</p>
<ul>
<li>Ça marche&nbsp;! Alors il suffit de supprimer le snapshot et on n'entendra plus parler de l'ancienne version.</li>
<li>Ça merde&nbsp;! Hop un petit snapshot-merge et on revient à l'ancienne version comme si de rien n'était. (lvconvert --merge)</li>
</ul>

<p>Et voilà&nbsp;! Maintenant vous pouvez faire vos mises à jour en toute sérénité&nbsp;! En fin presque&nbsp;: on parle de la racine et donc de nombreux fichiers en cours d'utilisation sur la partition en question, ce qui veut dire reboot pour pouvoir terminer le merge.
Mais le merge peut quand même se faire en live (vous pouvez déjà utiliser la partition pendant que le merge se termine en arrière plan). Il est donc possible de lancer la commande de merge, modifier son fstab si besoin et de rebooter.</p>


<p>Enfin n'oubliez pas une chose, les snapshot lvm ne fonctionnent qu'au niveau block device, c'est-à-dire en dessous du système de fichiers. C'est comme si vous enleviez le disque sans éteindre la machine, il se peut que le système de fichier ne soit pas au mieux de sa forme au moment ou vous le lancez, ayez au moins un système journalisé pour éviter les surprises et jouez du <a href="http://linux.die.net/man/8/sync" hreflang="en">sync</a> pour un peu plus de garanties.</p>


<p>Rien ne vaudra jamais les snapshot au niveau du système de fichier comme chez <a href="http://en.wikipedia.org/wiki/ZFS" hreflang="en">ZFS</a> ou le futur <a href="https://btrfs.wiki.kernel.org/index.php/Main_Page" hreflang="en">BTRFS</a>.</p>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/snapshot-de-snapshot' rel='bookmark' title='Permanent Link: Snapshot de snapshot'>Snapshot de snapshot</a></li>
<li><a href='http://linux-attitude.fr/post/les-vauriens-m-admirent' rel='bookmark' title='Permanent Link: Les Vauriens M&#8217;admirent'>Les Vauriens M&#8217;admirent</a></li>
<li><a href='http://linux-attitude.fr/post/la-carte-du-peripherique' rel='bookmark' title='Permanent Link: La carte du périphérique'>La carte du périphérique</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/disque" title="Disque" rel="tag">Disque</a>, <a href="http://linux-attitude.fr/tag/planet-libre" title="planet-libre" rel="tag">planet-libre</a>, <a href="http://linux-attitude.fr/tag/systeme" title="Système" rel="tag">Système</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/snapshot-temporaires/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Table des partitions</title>
		<link>http://linux-attitude.fr/post/table-des-partitions?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=table-des-partitions</link>
		<comments>http://linux-attitude.fr/post/table-des-partitions#comments</comments>
		<pubDate>Mon, 17 Nov 2008 18:11:00 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[Disque]]></category>
		<category><![CDATA[planet-libre]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/post/table-des-partitions</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: table des partitions Un disque dur est en général divisé en partitions. Je dis en général, car ce n'est pas obligatoire, une disquette ne l'est quasiment jamais. Sur un PC, la table est en général au format DOS (nommé aussi MBR), je dis en général car ce n'est pas le seul format [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: table des partitions</p>



<p>Un disque dur est en général divisé en partitions. Je dis en général, car ce n'est pas obligatoire, une disquette ne l'est quasiment jamais.</p>


<p>Sur un PC, la table est en général au format DOS (nommé aussi MBR), je dis en général car ce n'est pas le seul format possible, même si c'est le plus courant.</p>


<p>Nous allons donc se restreindre au cas d'un disque dur partitionné au format DOS.</p>


<h3>Premier secteur</h3>

<p>Les informations de partitionnement se situent sur le premier secteur (512 octets) d'un disque. Mais il n'y a pas que ça. On y trouve des nombres magiques, et du code pour démarre la machine. La table des partitions n'est constituée que de 64 octets (de 446 à 510). On appelle ce secteur le master boot record (<a href="http://fr.wikipedia.org/wiki/Master_boot_record" hreflang="fr">MBR</a>).</p>


<p><img src="http://linux-attitude.fr/public/Schemas/mbr.png" alt="mbr.png" style="display:block; margin:0 auto;" title="mbr.png, nov 2008" /></p>


<p>Pour lire les données de votre MBR&nbsp;:</p>
<pre>
$ dd if=/dev/hda of=/tmp/mbr bs=512 count=1
$ xxd /tmp/mbr
</pre>



<p>La table contient 4 entrées de 16 octets, qui forment les fameuses 4 partitions primaires, limite originelle du nombre de partitions.</p>


<p><img src="http://linux-attitude.fr/public/Schemas/mbrtable.png" alt="mbrtable.png" style="display:block; margin:0 auto;" title="mbrtable.png, nov 2008" /></p>


<p><span id="more-275"></span></p>


<p>Chaque entrée décrit le début, la longueur et quelques attributs d'une partition. Historiquement, on utilisait la notion de cylindre, tête et secteur mais cette notation est obsolète, inefficace en terme de place et ne correspond plus à la réalité. On utilise donc un comptage sur 4 octets du nombre de secteurs (512 octets) sur le disque, qu'on appelle LBA. Comptez, cela fait 2To maximum, vous aurez peut-être un problème de partitionnement avec votre prochain disque, il faudra passer à un format un peu plus moderne ... patientez pour un prochain article.</p>


<p>Maintenant, je suis sûr que vous voulez savoir à quoi ressemble votre table&nbsp;:</p>
<pre>
# Contenu quasiment brut
$ sfdisk -d /dev/hda
# le même un peu traduit
$ sfdisk -l -uS /dev/hda
</pre>


<p>Et là vous vous dites&nbsp;: mais il y a plus que 4 partitions&nbsp;!</p>


<h3>Les partitions logiques et étendues</h3>

<p>Hé oui, des gens ont voulu pouvoir avoir bien plus que 4 partitions, c'est comme ça qu'on a inventé les partitions logiques. Question vocabulaire, une partition étendue est une partition primaire qui va contenir d'autres partitions qu'on appelle les partitions logiques.</p>


<p>Donc si vous lisez bien votre table, il est probable qu'elle contienne un hda2 (étendue, non visible sous linux) englobant la totalité du disque à l'exception de la première partition. Les partitions hda5 et hda6 (logiques) sont alors dans cette dernière.</p>


<p>Le format de partition étendue est un peu consommateur (512 octets) puisqu'on réécrit un nouveau secteur pour chaque partition au même format que le MBR. On n'y met cette fois que la partition logique et la description de la prochaine partition (ce qui forme une liste chaînée). Cela veut dire qu'on peut avoir autant de partitions étendues qu'on veut (par défaut linux n'en peut gérer que 64).</p>



<h3>Espace perdu</h3>


<p>Comme dit un peu plus haut, historiquement on utilisait la notation C/H/S (cylinder, head, sector) pour décrire les positions des partitions. Cette notation impliquait qu'on mette la première partition dans la 2e piste puisque le MBR se trouvait dans la première. On a gardé cette convention même si elle n'a rien d'obligatoire. Ce qui laisse de l'espace libre dans la première piste.</p>


<p><a href="http://www.commentcamarche.net/pc/disque.php3" hreflang="fr">Une piste</a> est constituée des secteurs d'un cylindre sur une tête de lecture. Ce qui nous donne&nbsp;:</p>
<ul>
<li>Taille Secteur = 512 (défaut sur quasiment tous les disques)</li>
<li>Taille Piste = 512 * nombre de secteurs par piste (S)</li>
<li>Taille Cylindre = 512 * nombre de secteurs par piste (S) * nombre de têtes (H)</li>
<li>Taille du disque = 512 * nombre de secteurs par piste (S) * nombre de têtes (H) * nombre de cylindre (C)</li>
</ul>

<p>Elle a en général une taille de 512*63 soit 32256 octets inutilisés sur un disque (et autant pour chaque partition logique si vous avez bien suivi). C'est ici que certains outils anti-piratage mettaient leurs données à l'époque où windows existait encore. Maintenant un bootloader comme grub va profiter de cet espace pour s'y loger et éviter d'être dérangé par les systèmes.</p>


<p>Grub premier du nom va y mettre son stage1.5 et grub2 est capable d'y rentrer en entier.</p>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/lecture-dimage-disque' rel='bookmark' title='Permanent Link: Lecture d&#8217;image disque'>Lecture d&#8217;image disque</a></li>
<li><a href='http://linux-attitude.fr/post/forcer-la-relecture-des-partitions' rel='bookmark' title='Permanent Link: Forcer la relecture des partitions'>Forcer la relecture des partitions</a></li>
<li><a href='http://linux-attitude.fr/post/lavenir-du-disque' rel='bookmark' title='Permanent Link: L&#8217;avenir du disque'>L&#8217;avenir du disque</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/disque" title="Disque" rel="tag">Disque</a>, <a href="http://linux-attitude.fr/tag/planet-libre" title="planet-libre" rel="tag">planet-libre</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/table-des-partitions/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Chargeeeez !</title>
		<link>http://linux-attitude.fr/post/chargeeeez?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=chargeeeez</link>
		<comments>http://linux-attitude.fr/post/chargeeeez#comments</comments>
		<pubDate>Wed, 29 Oct 2008 19:14:00 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[Disque]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[Savoir-faire]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/post/chargeeeez</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: lilo&#160;; grub Même si la plupart des distributions sont passées à grub, on s'est longtemps posé la question d'utiliser lilo ou grub. Il servent tous les deux à charger linux (le noyau), voyons comment ça marche. Bios Avant de nous intéresser au bootloader, étudions le processus de démarrage d'une machine (x86 type [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: lilo&nbsp;; grub</p>


<p>Même si la plupart des distributions sont passées à grub, on s'est longtemps posé la question d'utiliser lilo ou grub. Il servent tous les deux à charger linux (le noyau), voyons comment ça marche.</p>


<h3>Bios</h3>


<p>Avant de nous intéresser au bootloader, étudions le processus de démarrage d'une machine (x86 type intel).</p>
<ol>
<li>Appui sur le bouton</li>
<li>Allumage de l'alimentation, électricité dans la carte mère</li>
<li>Allumage du processeur dans un état connu</li>
<li>Passage du contrôle au bios</li>
<li>Lecture d'un disque, chargement du secteur de boot nommé MBR (généralement un bootloader)</li>
<li>Chargement du noyau et d'éventuels modules, passage du contrôle au noyau</li>
<li>Montage d'un système de fichier et passage du contrôle au processus d'init (sur les unix)</li>
</ol>

<p>Bon, le début, vous connaissez.</p>


<p>L'état connu du processeur c'est&nbsp;: mode réel, 16bits, exécution pointant sur les derniers octets du premier Mo (FFFF:0000). Ici se trouve mappé statiquement le bios qui va se lancer et initialiser le matériel qu'il connaît. Il laisse disponible quelques fonctions via des interruptions, par exemple pour accéder à la carte vidéo ou au disque dur. Et il termine en chargeant le premier secteur (512 octets) du premier périphérique (disque, dur, clé usb ...) bootable qu'il trouve et lui passe la main (à l'adresse 0000:7C00).</p>


<p>C'est ici qu'on trouve lilo, grub, syslinux et même parfois linux lui-même sur de vieilles versions. Comme vous le constatez, 512 octets c'est très petit pour coder un bootloader (surtout que les octets ne sont pas tous disponibles à cause de la table des partitions). C'est pourquoi les bootloaders ont tous une architecture un peu bizarre avec plusieurs étapes.</p>




<h3>Lilo</h3>


<p>Lilo est un bootloader spécifique à linux (<strong>LI</strong>nux <strong>LO</strong>ader). Il fonctionne en 2 temps, un secteur de boot qui va charger un fichier un peu plus gros dont il connaît les secteurs sur le disque. Ce dernier peut éventuellement proposer un menu puis charge le bon noyau et lui passe la main.</p>


<p><span id="more-271"></span></p>


<p>Lilo utilise un fichier de configuration /etc/lilo.conf. À chaque modification de ce fichier, il faut lancer la commande lilo. Cette commande va lire le fichier et réécrire le secteur de boot à la racine du disque. Il va aussi écrire un fichier map qui contient la liste des secteurs sur le disque où trouver les étapes suivantes de chargement ainsi qu'une version compilée du fichier de configuration. En pratique cette deuxième étape se trouve à l'intérieur du binaire lilo lui-même (depuis la version 22.x x&lt;4).</p>


<p><img src="http://linux-attitude.fr/public/Schemas/lilo.png" alt="lilo.png" style="display:block; margin:0 auto;" title="lilo.png, oct 2008" /></p>



<h3>Grub</h3>


<p>Grub est un bootloader qui se veut générique (la version 2 commence à être utilisable  sur d'autres architectures).
Il est capable de booter de nombreux formats de noyaux.</p>


<p>Son secteur de boot (stage1) est statique et est installé une fois pour toutes (ou presque). Celui-ci se contente de charger un autre fichier (stage2) qui sait lire les systèmes de fichiers et donc peut lire sa propre configuration directement. Cela lui permet de ne pas nécessiter de manipulation après chaque modification de sa configuration. Il est aussi beaucoup plus flexible puisque cette deuxième étape contient un shell qui permet de choisir soi-même ce qui se passe pendant le boot (pratique pour les récupérations d'urgence).</p>


<p>La limitation de cette technique est qu'il faut encore réinstaller grub dans le secteur de boot lorsque le shell (stage2) a été modifié. Mais on peut faire mieux, il existe la possibilité d'ajouter une étape, le stage1.5, qui sait lire un système de fichier. Ce code est suffisamment petit pour qu'on puisse l'installer dans un espace vide du disque juste derrière la table des partitions. Il est donc dans un endroit qui ne bougera jamais et il saura lire le shell où qu'il soit et aucune réinstallation ne sera plus nécessaire.</p>

<pre></pre>

<p>Il reste tout de même un cas où il faut le réinstaller&nbsp;: quand on change le type de système de fichier ou la partition qui contient le shell grub.</p>


<p><img src="http://linux-attitude.fr/public/Schemas/grub.png" alt="grub.png" style="display:block; margin:0 auto;" title="grub.png, oct 2008" /></p>


<h3>Travaux pratiques</h3>


<p>Nous allons nous exercer sur un loopback (un disque virtuel) pour éviter les larmes en cas d'erreur (ayez toujours un liveCD sur vous, on ne sait jamais). Installez aussi qemu, ça vous permettra de tester ce que vous faites (c'est pratique même sur des vrais disque pour ne pas rebooter).</p>


<p>Préparation du disque virtuel pour nos tests&nbsp;:</p>
<pre>
# 50Mo c'est déjà beaucoup pour un disque :-)
$ dd if=/dev/zero of=/tmp/test bs=1M count=50
# Le disque entier
$ losetup /dev/loop0 /tmp/test
# On le partitionne (une partition, tout l'espace)
$ cfdisk /dev/loop0
# On repère le premier secteur de la partition
$ fdisk -l -u /dev/loop0 # -&gt; start, en général 63
# On transforme cette partition en device 
$ losetup -o $((63*512)) /dev/loop1 /tmp/test
# On crée un système de fichier sur cette partition
$ mke2fs /dev/loop1
# On le monte 
$ mount /dev/loop1 /mnt
# On y place un noyau pour faire joli
$ cp /boot/vmlinuz-* /mnt
# on fait un test avec qemu pour vérifier que ça ne marche pas
$ sync # pour ne pas avoir à démonter la partition
$ qemu /tmp/test
</pre>


<p>Vous aurez aussi besoin de grub et lilo, mais votre système ne vous permettra pas d'installer les deux en même temps. Alors vous pouvez soit les recompiler, soit lire les <a href="http://linux-attitude.fr/post/Les-paquets-debian">récupérer</a> sous forme binaire, soit sauter la partie correspondante :-). Pour les debianistes&nbsp;:</p>
<pre>
$ aptitude download lilo
$ dpkg -x lilo*.deb ~/tmp/
</pre>


<h4>Lilo</h4>


<p>Créons nous un fichier de configuration pour notre noyau (/mnt/etc/lilo.conf)&nbsp;:</p>
<pre>
# définition de la correspondance bios &lt;-&gt; linux
disk=/dev/loop0
        bios=0x80
        sectors=63
        cylinders=12
        heads=255
        partition=/dev/loop1
                start=63

# où mettre le secteur de boot
boot=/dev/loop0
# disque dur moderne
lba32
# on demande a l'utilisateur son avis
prompt
# avec un menu c'est plus joli
install=menu
# on stocke la liste des secteurs quelque part sur la partition
map=/mnt/lilo/map
# on ne seuvegarde pas le secteur de boot
backup=/dev/null

# une seule entrée dans notre menu
image=/mnt/vmlinuz-2.6.25
        label=Mon beau noyau, roi des os ...
</pre>


<p>Vous aurez remarqué le premier paragraphe. Il n'est nécessaire que parce que nous travaillons sur des loopbacks. Il s'agit d'expliquer à lilo que lors du boot, le bios (et donc lilo) verra ce qui est actuellement /dev/loop0 comme le premier disque (0x80). On lui indique aussi comment il est partitionné puisqu'il ne peut pas deviner tout seul que /dev/loop1 est sur le disque /dev/loop0. Et enfin on lui indique la géométrie du disque telle que nous l'a donnée la commande fdisk un peu plus haut car un loopback n'a pas de géométrie.</p>


<p>Le reste du fichier est le minimum pour avoir quelque chose de correct qui ne casse pas votre machine et qui propose une entrée de menu. Pour plus de fioritures, vous pouvez regarder <a href="http://manpages.ubuntu.com/manpages/feisty/fr/man5/lilo.conf.html" hreflang="fr">la documentation</a> vraiment bien détaillée. Vous pouvez vous amuser à mettre des images, ou même un <a href="http://www.gamers.org/~quinet/lilo/" hreflang="fr">boot animé</a>, il y a même un boot casse briques.</p>



<p>Et maintenant installons lilo&nbsp;:</p>
<pre>
# on a défini ce répertoire dans lilo.conf (d'habitude on met /boot)
$ mkdir /mnt/lilo
# on met à jour le bootloader
$ lilo -c /mnt/etc/lilo.conf
# et on teste pour faire joli
$ sync &amp;&amp; qemu /tmp/test
</pre>



<p>Wahoo, c'est beau&nbsp;! Maintenant, faisons de même avec ...</p>



<h4>Grub</h4>


<p>Nous pourrions jouer la facilité et lancer grub-install. Mais non, ce n'est pas notre genre. Il faut comprendre comment ça marche avant de tout casser. Tout comme il faut savoir calculer avant de se servir d'une calculatrice.</p>


<p>Commençons par l'indispensable, un fichier de configuration&nbsp;:</p>
<pre>
# une entrée, c'est déjà bien assez
title Mon Bô noyau, que j'aime ta verdure 
kernel (hd0,0)/vmlinuz-2.6.25
</pre>

<p>Vous remarquerez deux choses. Tout d'abord grub utilise sa propre notation pour les disques et partitions (hé oui linux ne sera plus là quand il bootera). (hd0) est le premier disque vu par le bios, (hd1) le 2e, etc. De même pour les partitions, (hd0,0) est la première partition du premier disque, (hd0,1) la 2e etc. Ensuite, le chemin est relatif à la partition telle qu'elle sera lue au boot et non pas à l'arborescence actuelle (on ne met pas /mnt/vmlinuz-2.6.25).</p>



<p>Le stage2 (le shell) doit être disponible sur le nouveau disque pour que le boot fonctionne.</p>
<pre>
$ mkdir /mnt/grub
$ cp /boot/grub/stage2 /mnt/grub/
</pre>


<p>Créons un fichier device.map pour faire correspondre les loopback aux disques qui seront vus par le bios (même problème que pour lilo)&nbsp;:</p>
<pre>
(hd0) /dev/loop0
(hd1) /dev/hda
</pre>

<p>Le hd1 est bien utilecar on va lire des fichiers qui ne sont pas stockés sur le loopback (on pourrait aussi les y copier :-).</p>


<p>Ensuite lançons un shell grub pour faire l'installation&nbsp;:</p>
<pre>
$ grub --device-map=/tmp/device.map
# on met un stage1.5 pour être complet
# il se trouve sur /dev/hda1 dans /boot/grub et on le met sur /dev/loop0 
$ embed (hd1,0)/boot/grub/e2fs_stage1_5 (hd0)
&gt; 15 sectors are embedded.
# on va installer le stage1 et paramétrer tout ça :
#   --stage2=... parce que la partition est montée, il faut écrire dessus en utilisant le noyau
#   (hd1,0)/boot/grub/stage1 : on va chercher le stage1 où il est stocké actuellement
#   (hd0) : on installe sur le mbr de /dev/loop0
#   (hd0)1+15 : on lui dit d'utiliser le stage1.5 installé précédemment (mbr+1, 15 secteurs) pour lire le stage2
#   p (hd0,0)/grub/stage2 : on dit au stage1.5 où trouver le stage2
#   /grub/menu.lst : on dit à stage2 où aller chercher sa configuration
$ install --stage2=/mnt/grub/stage2 (hd1,0)/boot/grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/grub/stage2 /grub/menu.lst
$ quit
</pre>


<p>Remarquez le embed, il met le stage 1.5 dans l'espace disponible derrière la table des partitions comme nous l'avons déjà vu.</p>


<p>Si vous vouliez sauter le stage1.5 cela aurait donné&nbsp;:</p>
<pre>
$ grub --device-map=/tmp/device.map
$ install --stage2=/mnt/grub/stage2 (hd1,0)/boot/grub/stage1 (hd0) (hd0,0)/grub/stage2 /grub/menu.lst
$ quit
</pre>


<p>Et comme je suis gentil, je vous montre comment le faire sans s'embêter (et sans hd1)&nbsp;:</p>
<pre>
$ cp -r /boot/grub /mnt
$ grub --device-map=/mnt/grub/device.map
$ setup --stage2=/mnt/grub/stage2 (hd0) (hd0,0)
$ quit
</pre>


<p>Et si vous voulez installer grub pour le système en cours d'exécution il y a encore plus simple&nbsp;:</p>
<pre>
$ grub-install /dev/hda
</pre>


<p>Test&nbsp;:</p>
<pre>
$ sync &amp;&amp; qemu /tmp/test
</pre>


<p>Ça y est&nbsp;! La gloire est à nos portes&nbsp;!</p>


<h3>Choix</h3>


<p>Et maintenant, lequel choisir&nbsp;? Cela dépend de votre situation et de vos besoins. Faisons un petit résumé des avantages de chacun.</p>


<p><strong>Grub</strong>:</p>
<ul>
<li>peut lancer plus de systèmes</li>
<li>dispose d'un shell au boot pour les réparations ou les changements de paramètres</li>
<li>résiste aux modifications du système de fichier</li>
</ul>

<p><strong>Lilo</strong>&nbsp;:</p>
<ul>
<li>plus léger</li>
<li>sait contourner les bugs d'un grand nombre de vieux bios</li>
</ul>

<p>C'est ce qui fait que grub est de plus en plus souvent choisi comme bootloader face à lilo.</p>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/processus-de-boot' rel='bookmark' title='Permanent Link: Processus de boot'>Processus de boot</a></li>
<li><a href='http://linux-attitude.fr/post/table-des-partitions' rel='bookmark' title='Permanent Link: Table des partitions'>Table des partitions</a></li>
<li><a href='http://linux-attitude.fr/post/reinstallation-distante' rel='bookmark' title='Permanent Link: Réinstallation distante'>Réinstallation distante</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/disque" title="Disque" rel="tag">Disque</a>, <a href="http://linux-attitude.fr/tag/planet-libre" title="planet-libre" rel="tag">planet-libre</a>, <a href="http://linux-attitude.fr/tag/savoir-faire" title="Savoir-faire" rel="tag">Savoir-faire</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/chargeeeez/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Snapshot de snapshot</title>
		<link>http://linux-attitude.fr/post/snapshot-de-snapshot?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=snapshot-de-snapshot</link>
		<comments>http://linux-attitude.fr/post/snapshot-de-snapshot#comments</comments>
		<pubDate>Wed, 08 Oct 2008 22:47:00 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[Disque]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/post/snapshot-de-snapshot</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: mysnapshot Maintenant que vous savez comment fonctionne device-mapper, il est possible de compenser un certain manque de lvm à la main. Nous allons faire des snapshot de snapshot (merci à glandium pour la suggestion). Voici 2 scripts permettant de faire cela. Ils s'utilisent de la manière suivante&#160;: # En supposant que vous [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: mysnapshot</p>


<p>Maintenant que vous savez comment fonctionne <a href="http://linux-attitude.fr/post/La-carte-du-peripherique">device-mapper</a>, il est possible de compenser un certain manque de lvm à la main. Nous allons faire des snapshot de snapshot (merci à glandium pour la suggestion).</p>


<p>Voici 2 scripts permettant de faire cela. Ils s'utilisent de la manière suivante&nbsp;:</p>
<pre>
# En supposant que vous ayez déjà fait un premier snapshot avec lvm
# snapshot2 sera un snapshot de snapshot1
$ mysnapshot '-L 1G' vg0 snapshot1 snapshot2

# Pour supprimer le snapshot précédemment créé
$ mysnapshotrm vg0 snapshot2
</pre>


<p>Prenez ces scripts avec quelques pincettes puisque bien que testés sur mes machines, ils n'est pas garanti qu'ils fassent tout ce que vous vouliez. Par exemple, il permet d'enchaîner les snapshot, mais tel quel il va vous poser quelques problèmes pour faire des arbres de snapshot (plusieurs fois un snapshot d'un même snapshot), dans ce cas ... à vous de bosser.</p>


<p><strong>Attention</strong>&nbsp;: contrairement à lvm, ces snapshots ne sont pas automatiquement mis en place au boot.</p>


<p>Un petit schéma du principe de fonctionnement des snapshots, peut-être un peu plus clair que <a href="http://linux-attitude.fr/post/Les-Vauriens-M-admirent">le précédent</a> pour ceux qui connaissent <a href="http://linux-attitude.fr/post/La-carte-du-peripherique">device-mapper</a> (attention, les noms ne correspondent pas totalement à ceux du script).</p>


<p><img src="http://linux-attitude.fr/public/Schemas/lvm_snapshot2.png" alt="lvm_snapshot2.png" style="display:block; margin:0 auto;" title="lvm_snapshot2.png, oct 2008" /></p>


<p>Ce schéma permet aussi d'expliquer quelque chose que j'ai oublié de dire lors de l'article précédent&nbsp;: bien qu'il n'y ait pas de différence fondamentale entre l'orginal et le snapshot, le snapshot est le périphérique qui aura les meilleures performances en écriture.</p>


<p><span id="more-265"></span></p>


<p><strong>mysnapshot</strong>&nbsp;:</p>
<pre>
#!/bin/sh 

# gestion des paramètres
if [ -z &quot;$4&quot; ]
then
        echo &quot;usage $0 'lvmParameters' volumeGroup origin snapshot&quot;
        exit 1
fi

lvmparams=$1
vg=$2
origin=$3
snapshot=$4

min=0
# lecture du snapshot existant pour déterminer la taille du dev final
idh=$(stat -c &quot;%T&quot; /dev/mapper/$vg-$origin)
id=$((0x$idh))
max=$(cat /sys/devices/virtual/block/dm-$id/size)

# on crée avec lvm l'espace pour stocker le snapshot
lvcreate -n $snapshot-cow $lvmparams  $vg

# on suspend le snapshot pour que l'activité en cours dessus ne le casse pas
dmsetup suspend $vg-$origin

# on recopie le snapshot d'origine dans un un nouveau dev (pour y accéder directement et pour le retour en arrière)
dmsetup table $vg-$origin | dmsetup create $vg-$origin-real

# on remplace le snapshot d'origine par un device qui va générer des évènements de modif (pour le 2e snapshot)
echo $min $max snapshot-origin /dev/mapper/$vg-$origin-real | dmsetup reload $vg-$origin

# on crée le nouveau snapshot qui pointe vers l'espace de stockage et vers le snapshot d'origine
echo $min $max snapshot /dev/mapper/$vg-$origin-real /dev/mapper/$vg-$snapshot--cow P 8 | dmsetup create $vg-$snapshot

# on réactive le snapshot d'origine qui est maintenant snapshotté
dmsetup resume $vg-$origin
</pre>


<p><strong>mysnapshotrm</strong>&nbsp;:</p>
<pre>
#!/bin/sh

# gestion des paramètres
if [ -z &quot;$2&quot; ]
then
        echo &quot;usage $0 volumeGroup snapshot&quot;
        exit 1
fi

vg=$1
snapshot=$2

# lecture du dev du snapshot pour découvrir qui était l'original
originmm=$(dmsetup table $vg-$snapshot | cut -d &quot; &quot; -f 4 | sed 's/:/,[[:space:]]+/')
originvg=$(ls -l /dev/mapper | egrep &quot;$originmm&quot; | sed 's/.* \([^ ]*\)$/\1/')
origin=$(echo $originvg | sed &quot;s/$vg-\(.*\)-real/\1/&quot;)

# on suspend le snapshot d'origine pour éviter de le casser
dmsetup suspend $vg-$origin

# on le restaure avec la version d'origine
dmsetup table $vg-$origin-real | dmsetup reload $vg-$origin

# et on peut le réactiver
dmsetup resume $vg-$origin

# on vire le snapshot créé
dmsetup remove $vg-$snapshot

# on vire la copie du snapshot d'origine
dmsetup remove $vg-$origin-real

# et on supprime l'espace de stockage de notre snapshot
lvremove -f /dev/$vg/$snapshot-cow
</pre>


<p>Et si vous êtes développeur lvm, si vous pouviez y intégrer l'équivalent, ça serait sympa.</p>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/snapshot-temporaires' rel='bookmark' title='Permanent Link: Snapshot temporaires'>Snapshot temporaires</a></li>
<li><a href='http://linux-attitude.fr/post/la-carte-du-peripherique' rel='bookmark' title='Permanent Link: La carte du périphérique'>La carte du périphérique</a></li>
<li><a href='http://linux-attitude.fr/post/faire-du-chiffre' rel='bookmark' title='Permanent Link: Faire du chiffre'>Faire du chiffre</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/disque" title="Disque" rel="tag">Disque</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/snapshot-de-snapshot/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Faire du chiffre</title>
		<link>http://linux-attitude.fr/post/faire-du-chiffre?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=faire-du-chiffre</link>
		<comments>http://linux-attitude.fr/post/faire-du-chiffre#comments</comments>
		<pubDate>Fri, 26 Sep 2008 19:50:00 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Sysadmin]]></category>
		<category><![CDATA[Disque]]></category>
		<category><![CDATA[Sécurité]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/post/faire-du-chiffre</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: dm-crypt&#160;; cryptsetup Maintenant que vous savez tout sur device mapper, il y a une dernière fonctionnalité fournie en standard que vous allez vouloir utiliser: le chiffrement des partitions. Comme vous l'avez compris, il est possible de tout faire avec dmsetup, mais il y a mieux et c'est moins cher. Chiffrement avec LUKS [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: dm-crypt&nbsp;; cryptsetup</p>


<p>Maintenant que vous savez tout sur device mapper, il y a une dernière fonctionnalité fournie en standard que vous allez vouloir utiliser: le chiffrement des partitions. Comme vous l'avez compris, il est possible de tout faire avec dmsetup, mais il y a mieux et c'est moins cher.</p>


<h3>Chiffrement avec LUKS</h3>


<p>Attention, ce que nous faisons ici écrit sur la partition, si vous ne voulez pas perdre vos données, regardez le dernier paragraphe.</p>


<p>La commande cryptsetup s'occupe de tout pour vous. Pour chiffrer une partition&nbsp;:</p>
<pre>
# pour préserver la résistance de votre partition à la cryptanalyse (des données apparemment chiffrées déjà sur le disque)
# on efface la partition avec des données aléatoires
$ dd if=/dev/urandom of=/dev/sda1
# il vous demandera simplement une passphrase
$ cryptsetup luksFormat /dev/sda1
</pre>


<p>Et maintenant pour l'utiliser&nbsp;:</p>
<pre>
# il vous demandera simplement une passphrase
$ cryptsetup luksOpen /dev/sda1 partoche
</pre>


<p>Et voila, votre partition est disponible dans /dev/mapper/partoche. Vous pouvez en faire ce que vous voulez, mettre une système de fichier dessus ou le redécouper avec lvm ou écrire directement dessus ...</p>


<p>Et si vous ne voulez plus utiliser la partition, fermez-là (la partition) pour ne pas qu'un autre tente d'en lire le contenu, on ne sait jamais&nbsp;:</p>
<pre>
$ cryptsetup luksClose partoche
</pre>



<h3>Un peu plus loin</h3>


<p>Cryptsetup permet d'autres formats de disque que LUKS, mais il n'est pas intéressant de les utiliser car luks est disponible un peu partout (même sous windows) et bien pensé</p>


<p>Luks permet entre autre quelques fantaisies comme la possibilité d'utiliser plusieurs clés, ce qui veut dire que vous pouvez partager un disque dur chiffré entre plusieurs personnes et que chacun ait sa clé pour lire et écrire dessus.</p>
<pre>
# ajoute une nouvelle clé (nouvel utilisateur ?)
$ cryptsetup luksAddKey /dev/sda1
</pre>


<p>Et donc vous pouvez révoquer une clé pour interdire à un des participants d'y revenir&nbsp;:</p>
<pre>
# liste les clés
$ cryptsetup luksDump /dev/sda1
# on en révoque une 
$ cryptsetup luksDelKey /dev/sda1 1
</pre>


<p>Attention si un des utilisateurs a eu accès aux méta-données de la partition, il a très bien pu les enregistrer, et comme il a du garder sa propre clé, il est dans ce cas toujours capable d'utiliser le disque.</p>


<p>Un autre usage des clés multiples est d'avoir une clé d'usage et une clé de secours imprimée et stockée dans un coffre pour usage en cas de perte de la première.</p>


<p><span id="more-267"></span></p>


<h3>Types de chiffrement</h3>


<p>Vous pouvez choisir le type de chiffrement utilisé au moment de la création de la partition. Par exemple si vous ne faites pas confiance au <a href="http://www.nist.gov/" hreflang="en">NIST</a>, vous pourriez préférer la méthode twofish.</p>
<pre>
# connaître la liste des chiffrements disponibles (attention, tous ne sont pas des chiffrement)
$ cat /proc/crypto
# charger un type manquant
$ modprobe twofish
# utiliser le bon type
$ cryptsetup luksFormat --cipher twofish /dev/sda1
</pre>



<h3>Encore plus loin</h3>


<p>Il est même possible de chiffrer une partition sur elle même sans casser ce qui se trouve dessus. Seul problème, il faut qu'elle dispose d'un peu de place pour les en-têtes luks. Cette taille est variable, en fonction de la taille choisie pour la clé. Mais elle est de l'ordre de 500 ko avec les essiv, si besoin faites un test préalable.</p>


<p>Supposons qu'il y a un système de fichier (fort probable :)</p>
<pre>
# on démonte
$ umount /dev/sda1
# on réduit de 1Mo (ça devrait suffire dans la plupart des cas)
$ resize2fs /dev/sda1 9999M
</pre>


<p>On stocke dans un coin l'endroit ou sera notre en-tête</p>
<pre>
# 1Mo aussi 
$ dd if=/dev/sda1 of=/tmp/first bs=1M count=1
</pre>


<p>On fait notre partition chiffrée</p>
<pre>
# on prépare la partition
$ cryptsetup luksFormat /dev/sda1
# on la met en place
$ cryptsetup luksOpen /dev/sda1 crypto1
</pre>


<p>Et là, il y a plusieurs subtilités, on va recopier /dev/sda1 dans /dev/mapper/tmp. Ça fonctionne parce que ce qu'on va lire va être lu avant qu'on écrive au même endroit. Cet argument n'est pas tout à fait valable puisqu'on va recopier un peu plus loin qu'on ne va lire (header oblige). Donc la deuxième subtilité sera de recopier en commençant par la fin pour ne pas écraser les données qu'on va lire à la prochaine itération.</p>
<pre>
# on récupère le décalage a effectuer (unité le bloc (512o)
$ cryptsetup luksDump /dev/sda1 | grep Payload
&gt; Payload offset: 1032
$ offset=$((1032*512))
# on récupère la taille de la partition : 
$ blockdev --getsize64 /dev/sa1
&gt; 67108864
$ max=67108864

# et on fait la copie morceaux par morceaux en partant de la fin
$ i=$(($max/$offset))
$ while [ $i -gt 0 ]
 do
     dd if=/dev/sda1 of=/dev/mapper/crypto1 bs=$offset count=1 seek=$i skip=$i
     i=$(($i-1))
 done
# et on n'oublie pas notre premier morceau
$ dd if=/tmp/first of=/dev/mapper/crypto1
</pre>


<p>Ça y est, notre partition chiffrée /dev/mapper/crypto1 est prête à être utilisée comme avant</p>
<pre>
$ mount /dev/mapper/crypto1 /srv
</pre>


<p>Encore une victoire de canard&nbsp;!</p>



<p>Et pour plus de détails, le site sur <a href="http://www.saout.de/tikiwiki/tiki-index.php" hreflang="en">dm-crypt</a> et sur <a href="http://www.saout.de/tikiwiki/tiki-index.php?page=LUKS" hreflang="en">luks</a> vous expliquera tout.</p>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/la-carte-du-peripherique' rel='bookmark' title='Permanent Link: La carte du périphérique'>La carte du périphérique</a></li>
<li><a href='http://linux-attitude.fr/post/en-vrac-13' rel='bookmark' title='Permanent Link: En vrac (13)'>En vrac (13)</a></li>
<li><a href='http://linux-attitude.fr/post/cle-privee' rel='bookmark' title='Permanent Link: Clé privée'>Clé privée</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/disque" title="Disque" rel="tag">Disque</a>, <a href="http://linux-attitude.fr/tag/securite" title="Sécurité" rel="tag">Sécurité</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/faire-du-chiffre/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced (User agent is rejected)
Database Caching 22/88 queries in 0.119 seconds using apc
Object Caching 1780/1846 objects using apc
Content Delivery Network via N/A

Served from: linux-attitude.fr @ 2012-02-09 00:07:07 -->
