<?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>asnix.net</title>
	<atom:link href="http://www.asnix.net/feed" rel="self" type="application/rss+xml" />
	<link>http://www.asnix.net</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Wed, 30 Jun 2010 20:36:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Test</title>
		<link>http://www.asnix.net/uncategorized/test</link>
		<comments>http://www.asnix.net/uncategorized/test#comments</comments>
		<pubDate>Wed, 30 Jun 2010 20:34:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.asnix.net/?p=15</guid>
		<description><![CDATA[Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse a nisl augue. Etiam et auctor eros. Curabitur vehicula blandit imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis eget orci vel massa adipiscing accumsan a quis turpis. Aliquam ac massa a nibh vehicula condimentum. Cras ac justo ac mauris pellentesque accumsan eu nec purus. [...]]]></description>
			<content:encoded><![CDATA[<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse a nisl augue. Etiam et auctor eros. Curabitur vehicula blandit imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis eget orci vel massa adipiscing accumsan a quis turpis. Aliquam ac massa a nibh vehicula condimentum. Cras ac justo ac mauris pellentesque accumsan eu nec purus. Praesent varius, ante et porta dignissim, dui purus egestas elit, a malesuada urna leo nec orci. Phasellus volutpat imperdiet pretium. Curabitur a diam eu nisi aliquet tempus.</p>
<p>Donec vitae velit id est dignissim lobortis sit amet sodales felis. Aliquam tristique ultrices dui a sagittis. Etiam vehicula nibh ut elit ultrices sed dapibus ipsum sagittis. Integer volutpat metus sed elit fermentum quis faucibus dui tincidunt. Proin pharetra pulvinar ultricies. Ut rhoncus massa id risus ornare eu porttitor velit lacinia. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed scelerisque nunc id sem interdum convallis. Vestibulum sollicitudin feugiat luctus. Mauris tristique nisl sit amet enim aliquam suscipit. Duis tortor tellus, elementum in placerat id, rutrum sed est. Sed non metus a sem convallis sodales. Nunc interdum, nibh vel lobortis ultrices, nisl augue aliquet massa, eu rutrum justo metus vel erat. </p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/0Ml0QJVX4T8&#038;hl=es_ES&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/0Ml0QJVX4T8&#038;hl=es_ES&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.asnix.net/uncategorized/test/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL: Increment an exisitng value</title>
		<link>http://www.asnix.net/uncategorized/mysql-increment-an-exisitng-value</link>
		<comments>http://www.asnix.net/uncategorized/mysql-increment-an-exisitng-value#comments</comments>
		<pubDate>Sun, 31 Jan 2010 21:00:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.asnix.net/uncategorized/mysql-increment-an-exisitng-value</guid>
		<description><![CDATA[This slick MySQL syntax allows you to increment or decrement an existing number in a table without first having to read the value. This is a nice way to increment an access counter. 

To increment the value &#8216;counter&#8217; by one for the row in table &#8216;images&#8217; where &#8216;image_id&#8217; is &#8216;15&#8242;, use:
UPDATE images SET counter=counter+1 WHERE [...]]]></description>
			<content:encoded><![CDATA[<h4>This slick MySQL syntax allows you to increment or decrement an existing number in a table without first having to read the value. This is a nice way to increment an access counter. </h4>
<p><span id="more-2139"></span><br />
To increment the value &#8216;counter&#8217; by one for the row in table &#8216;images&#8217; where &#8216;image_id&#8217; is &#8216;15&#8242;, use:</p>
<p><code>UPDATE images SET counter=counter+1 WHERE image_id=15<br />
</code></p>
<p>To decrement the value, use &#8216;counter=counter-1&#8242; instead.  Incrementing or decrementing by other values (or using whatever valid arithmetic arm flexing you need) will work, too.  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.asnix.net/uncategorized/mysql-increment-an-exisitng-value/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Recuperar datos de un disco con I/O errors con dd</title>
		<link>http://www.asnix.net/uncategorized/recuperar-datos-de-un-disco-con-io-errors-con-dd</link>
		<comments>http://www.asnix.net/uncategorized/recuperar-datos-de-un-disco-con-io-errors-con-dd#comments</comments>
		<pubDate>Sun, 31 Jan 2010 20:47:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.asnix.net/?p=3</guid>
		<description><![CDATA[Recuperar datos de un disco con I/O errors con dd
Recientemente un amigo se encontró con un disco en fallo en un servidor sin RAID. Vamos a ver como realizar una copia de los datos que se puedan aún leer llenando de ceros los bloques con I/O errors.

Los errores que veríamos serian similares a estos:

end_request: I/O [...]]]></description>
			<content:encoded><![CDATA[<h1>Recuperar datos de un disco con I/O errors con dd</h1>
<p>Recientemente un amigo se encontró con un disco en fallo en un servidor sin <strong>RAID</strong>. Vamos a ver como <strong>realizar una copia</strong> de los datos que se puedan aún leer llenando de ceros los bloques con <strong>I/O errors</strong>.</p>
<p><!-- more --></p>
<p>Los errores que veríamos serian similares a estos:</p>
<pre>
end_request: I/O error, dev sda, sector 9672
Buffer I/O error on device sda, logical block 959
end_request: I/O error, dev sda, sector 9672
Buffer I/O error on device sda, logical block 959
end_request: I/O error, dev sda, sector 9672
Buffer I/O error on device sda, logical block 959
</pre>
<p>Primero de todo deberemos apagar el sistema y probar sacando y volviendo a meter el disco, a veces es tan simple como esto. Si no da resultado deberemos proceder a recuperar el sistema usando un <strong>LiveCD</strong>.</p>
<p>Cuando lo tengamos arrancado y con un disco destino preparado podremos empezar a copiar los datos con <strong>dd</strong>. Mediante <strong>if</strong> indicamos el dispositivo origen (en este caso, <strong>sda</strong>) y con <strong>of</strong> el dispositivo destino (<strong>sdb</strong>).</p>
<p>Por otro lado, para evitar que se pare al encontrar un error de lectura deberemos añadir las siguientes opciones al parámetro <strong>conv</strong> (indicamos opciones de como se realiza la copia de datos):</p>
<ul>
<li><strong>noerror</strong>: Continuar en caso de error</li>
<li><strong>sync</strong>: Llenar con ceros el bloque leído hasta el tamaño de bloque destino</li>
</ul>
<p>Finalmente deberemos escoger un tamaño de bloque adecuado. Aquí es donde debemos ajustar según interese. Los bloques corruptos de disco como mínimo serán de <strong>512 bytes</strong>, pero <strong>de 512 en 512</strong> vamos a tardar mucho. Por el contrario, si usamos un tamaño grande y nos encontramos un error de lectura al principio, llenaremos de ceros todos los demás hasta llegar al tamaño del bloque (<strong>bs</strong>). Es un <strong>compromiso entre velocidad y datos a recuperar</strong>. Podemos usar por ejemplo el <strong>512k</strong>:</p>
<pre>
dd if=/dev/sda of=/dev/sdb conv=sync,noerror bs=512k
</pre>
<p>Por ejemplo, usando un <strong>HP proLiant DL360</strong> con un solo disco, conectando otro a la controladora tardó <strong>8 horas</strong> para <strong>250G</strong> con bloques de <strong>512</strong> bytes (tamaño físico de los bloques de disco). Con un bloque (<strong>bs</strong>) más grande (512k por decir algo) hubiera ido <strong>más rápido</strong> pero se hubiera <strong>perdido más información</strong>.</p>
<p>Para no desesperar en el tiempo que tarda a copiar los datos, mediante <strong>SIGUSR1</strong> podremos ir viendo el <a href="/2008/12/estadisiticas-de-progreso-con-dd">progreso del dd</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.asnix.net/uncategorized/recuperar-datos-de-un-disco-con-io-errors-con-dd/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello world!</title>
		<link>http://www.asnix.net/uncategorized/hello-world</link>
		<comments>http://www.asnix.net/uncategorized/hello-world#comments</comments>
		<pubDate>Thu, 28 Jan 2010 21:47:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.asnix.net/?p=1</guid>
		<description><![CDATA[Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!
]]></description>
			<content:encoded><![CDATA[<p>Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.asnix.net/uncategorized/hello-world/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
