<?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>Hypervisor.fr &#187; crontab</title>
	<atom:link href="http://www.hypervisor.fr/?feed=rss2&#038;tag=crontab" rel="self" type="application/rss+xml" />
	<link>http://www.hypervisor.fr</link>
	<description>French Bare-Metal weblog</description>
	<lastBuildDate>Wed, 26 Jun 2024 22:42:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ZFS snapshot auto-destroy onliner</title>
		<link>http://www.hypervisor.fr/?p=4484</link>
		<comments>http://www.hypervisor.fr/?p=4484#comments</comments>
		<pubDate>Thu, 13 Dec 2012 07:12:17 +0000</pubDate>
		<dc:creator>NiTRo</dc:creator>
				<category><![CDATA[ZFS]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[crontab]]></category>
		<category><![CDATA[nexenta]]></category>
		<category><![CDATA[oneliner]]></category>

		<guid isPermaLink="false">http://www.hypervisor.fr/?p=4484</guid>
		<description><![CDATA[MAJ 23.05.2013 : Et voici un cas d&#8217;usage réel en production.
Tous ceux qui ont eu à affronter un manque d&#8217;espace critique sur un zpool se sont au moins une fois posé la question suivante : Pourquoi ZFS n&#8217;est il pas capable de supprimer automatiquement les plus anciens snapshot pour libérer de l&#8217;espace en cas de [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><em><span style="color: #ff0000;">MAJ 23.05.2013</span><em> : <a href="https://twitter.com/hypervisor_fr/status/337986858892017665/photo/1" target="_blank">Et voici un cas d&#8217;usage réel en production</a>.</em></em></p>
<p style="text-align: justify;">Tous ceux qui ont eu à affronter un manque d&#8217;espace critique sur un zpool se sont au moins une fois posé la question suivante : <strong><strong>Pourquoi ZFS n&#8217;est il pas capable de supprimer automatiquement les plus anciens snapshot pour libérer de l&#8217;espace en cas de besoin ?</strong></strong></p>
<p style="text-align: justify;">La réponse est évidement parce que ce n&#8217;est pas (encore) intégré à ZFS mais peut être que le futur principe de &#8220;<a href="http://blog.delphix.com/csiden/files/2012/01/ZFS_Feature_Flags.pdf">feature flags</a>&#8221; (qui remplacera la fameuse &#8220;version&#8221; de ZFS) facilitera la naissance de cette fonctionnalité tant espérée. En attendant, il y a toujours la bonne vielle crontab toujours très pratique et si on pimente à la sauce oneliner, ça donne quelque chose d&#8217;un peu trash mais fonctionnel :</p>
<pre class="brush: bash; title: ; notranslate">for zpool in `zpool list -H -o name,capacity | sed &quot;s/%//g&quot; | awk '{ if ( $2 &gt; 80 ) { print $1; } }'`; do zfs list -H -o name -t snapshot | grep -E &quot;^$zpool&quot; | head -n $[$(zfs list -H -o name -t snapshot | grep -E &quot;^$zpool&quot;|wc -l) / 5 + 1]  | xargs -n1 zfs destroy -R ; done</pre>
<p style="text-align: justify;"><strong>Ce oneliner détruira récursivement 25% des plus vieux snapshots</strong> (+1 pour éviter les cas ou 25% feraient moins d&#8217;1 snapshot) <strong>d&#8217;un zpool si le remplissage dépasse les 80%</strong>.</p>
<p style="text-align: justify;">Voici une démo de ce script sur un zpool soumis à remplissage perpétuel (dd en boucle + snapshot toutes les minutes) :</p>
<p style="text-align: center;"><a href="http://files.hypervisor.fr/img/zfs_snapshot_autoremove.png" target="_blank"><img class="aligncenter" src="http://files.hypervisor.fr/img/zfs_snapshot_autoremove.png" alt="" width="482" height="231" /></a></p>
<p style="text-align: justify;">Observations du graphique : jusqu&#8217;à 10h nous avons programmé le script toutes les minutes, puis toutes les 5min jusqu&#8217;à 15h30, puis nous l&#8217;avons désactivé et le zpool sature presque immédiatement après.</p>
<p style="text-align: left;">Voici l&#8217;extrait de la crontab de notre nexenta de test :</p>
<pre class="brush: bash; title: ; notranslate">* * * * * for zpool in `zpool list -H -o name,capacity | sed &quot;s/\%//g&quot; | awk '{ if ( \$2 &gt; 80 ) { print \$1; } }'`; do zfs list -H -o name -t snapshot | grep -E &quot;^$zpool&quot; | head -n $[$(zfs list -H -o name -t snapshot | grep -E &quot;^$zpool&quot;|wc -l) / 5 + 1]  | xargs -n1 zfs destroy -R ; done</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.hypervisor.fr/?feed=rss2&amp;p=4484</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
