<?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>El rincón de Zerial &#187; paravirtualizacion</title>
	<atom:link href="http://blog.zerial.org/tag/paravirtualizacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.zerial.org</link>
	<description>Informática, GNU/Linux, Seguridad, Hacking, Programación, Ocio</description>
	<lastBuildDate>Wed, 08 Feb 2012 20:48:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Clonación de máquinas virtuales en serie</title>
		<link>http://blog.zerial.org/linux/clonacion-de-maquinas-virtuales-en-serie/</link>
		<comments>http://blog.zerial.org/linux/clonacion-de-maquinas-virtuales-en-serie/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 00:55:34 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[paravirtualizacion]]></category>
		<category><![CDATA[virtualizacion]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1066</guid>
		<description><![CDATA[En el lugar donde trabajo, he estado montando y monitoreando muchas máquinas virtuales (gnu/linux sobre gnu/linux). En un principio, las máquinas estaban virtualizadas con VMWare, eran sólo 3 máquinas. Luego estas máquinas fueron aumentando a 5, 10 y actualmente ya son 20 máqiunas. La empresa donde trabajo ofrece el servicio de email marketing en base  [...]]]></description>
			<content:encoded><![CDATA[<p>En el <a href="http://www.fidelizador.com" target="_blank">lugar donde trabajo</a>, he estado montando y monitoreando muchas máquinas virtuales (<em>gnu/linux</em> sobre <em>gnu/linux</em>). En un principio, las máquinas estaban virtualizadas con VMWare, eran sólo 3 máquinas. Luego estas máquinas fueron aumentando a 5, 10 y actualmente ya son 20 máqiunas. La empresa donde trabajo ofrece el servicio de <a href="http://es.wikipedia.org/wiki/E-mail_marketing" target="_blank">email marketing</a> en base  a newsletter y &#8220;<em>fidelización de clientes</em>&#8220;, y soy yo quien debe administrar los servidores de envios de correos. Se envían más de 500 mil emails semanales por lo que el <em>uptime</em> y la disponibilidad del servicio debe ser la más alta.</p>
<p style="text-align: center;"><a href="http://blog.zerial.org/wp-content/uploads/2009/10/fide.png"><img class="aligncenter size-full wp-image-1069" title="fide" src="http://blog.zerial.org/wp-content/uploads/2009/10/fide.png" alt="fide" width="478" height="249" /></a></p>
<p>Para ésto, decidí migrar todas las máquinas a Xen y comenzar a para-virtualizar todos los servidores de envios (nosotros les llamamos &#8220;<em>smtp</em>&#8220;). Si pensamos que su única función es enviar correos (ya que, de la lógica del servicio se encarga otro servidor), las caracteristicas de cada <em>smtp</em> son muy básicas:</p>
<ul>
<li>128MB ram</li>
<li>2Gb disco</li>
<li>Servicios: postfix, ssh</li>
</ul>
<p>Para lograr el objetivo, me dediqué a crear un script que me automatiza la creación y configuración de máquinas virtuales.</p>
<p><span id="more-1066"></span></p>
<p>El script esta hecho en bash y lo único que necesitamos es tener una imágen del sistema (por ej. debian) base, con postfix instalado y la configuración que necesitemos, para luego clonarla en serie. El único trabajo que tenemos que hacer es montar una sola maquina, con todo lo que necesitemos, que sea funcional y luego de hacer pruebas y que todo ande bien, entonces usamos el script para clonarla:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re3">#/bin/bash</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">VM_LIST=</span>machines <span class="re3"># <span class="kw2">file</span> <span class="kw2">which</span> contains list of ip and hostnames</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="kw1">for</span> line <span class="kw1">in</span> $<span class="br0">&#40;</span><span class="kw2">grep</span> -v ^<span class="re3"># <span class="re1">$VM_LIST</span><span class="br0">&#41;</span>;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">do</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">IP_ADDR=</span>$<span class="br0">&#40;</span><span class="kw3">echo</span> <span class="re1">$line</span> |awk -F <span class="st0">&#8216;|&#8217;</span> <span class="st0">&#8216;{print $1}&#8217;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">HOST_NAME=</span>$<span class="br0">&#40;</span><span class="kw3">echo</span> <span class="re1">$line</span> |awk -F <span class="st0">&#8216;|&#8217;</span> <span class="st0">&#8216;{print $2}&#8217;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">MAC=</span>$<span class="br0">&#40;</span><span class="kw3">echo</span> <span class="re1">$line</span> |awk -F <span class="st0">&#8216;|&#8217;</span> <span class="st0">&#8216;{print $3}&#8217;</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">NAME=</span>$<span class="br0">&#40;</span><span class="kw3">echo</span> <span class="re1">$HOST_NAME</span> |awk -F . <span class="st0">&#8216;{print $1}&#8217;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">CFG=</span><span class="re1">$NAME</span>.cfg</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">IMG=</span><span class="re1">$NAME</span>.img</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">FULLPATH_CFG=</span><span class="re1">$DIR</span>\/<span class="re1">$HOST_NAME</span>\/<span class="re1">$CFG</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">FULLPATH_IMG=</span><span class="re1">$DIR</span><span class="st0">&quot;<span class="es0">\/</span>&quot;</span><span class="re1">$HOST_NAME</span><span class="st0">&quot;<span class="es0">\/</span>&quot;</span><span class="re1">$IMG</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re2">FULLPATH_SWAP=</span><span class="re1">$DIR</span>/<span class="re1">$HOST_NAME</span>/<span class="st0">&quot;swap.img&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">mkdir</span> <span class="re1">$HOST_NAME</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;Created $HOST_NAME directory.&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;&gt;&gt; Copying files &#8230;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">cp</span> draft/swap.img draft/draft.img draft/draft.cfg <span class="re1">$HOST_NAME</span>/</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">mv</span> <span class="re1">$HOST_NAME</span>/draft.img <span class="re1">$HOST_NAME</span>/<span class="re1">$IMG</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">mv</span> <span class="re1">$HOST_NAME</span>/draft.cfg <span class="re1">$HOST_NAME</span>/<span class="re1">$CFG</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> -n <span class="st0">&quot;&gt;&gt; Parsing $CFG &#8230;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">sed</span> -i <span class="st0">&#8216;s/DIR_TO_DISK/<span class="es0">\/</span>vm<span class="es0">\/</span>mailers<span class="es0">\/</span>&#8216;</span><span class="re1">$HOST_NAME</span><span class="st0">&#8216;<span class="es0">\/</span>&#8216;</span><span class="re1">$IMG</span><span class="st0">&#8216;/g&#8217;</span> <span class="re1">$HOST_NAME</span>/<span class="re1">$CFG</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">sed</span> -i <span class="st0">&#8216;s/DIR_TO_SWAP/<span class="es0">\/</span>vm<span class="es0">\/</span>mailers<span class="es0">\/</span>&#8216;</span><span class="re1">$HOST_NAME</span><span class="st0">&#8216;<span class="es0">\/</span>swap.img/g&#8217;</span> <span class="re1">$HOST_NAME</span>/<span class="re1">$CFG</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">sed</span> -i <span class="st0">&#8216;s/HOSTNAME/&#8217;</span><span class="re1">$NAME</span><span class="st0">&#8216;/g&#8217;</span> <span class="re1">$HOST_NAME</span>/<span class="re1">$CFG</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">sed</span> -i <span class="st0">&#8216;s/IP_ADDR/&#8217;</span><span class="re1">$IP_ADDR</span><span class="st0">&#8216;/g&#8217;</span> <span class="re1">$HOST_NAME</span>/<span class="re1">$CFG</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">sed</span> -i <span class="st0">&#8216;s/MAC/&#8217;</span><span class="re1">$MAC</span><span class="st0">&#8216;/g&#8217;</span> <span class="re1">$HOST_NAME</span>/<span class="re1">$CFG</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot; &nbsp;Done.&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">mount</span> -oloop -tauto <span class="re1">$HOST_NAME</span>/<span class="re1">$IMG</span> temp/</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;&gt;&gt; Setting up hostname &#8230;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re1">$HOST_NAME</span> &gt; temp/etc/<span class="kw2">hostname</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;&gt;&gt; Setting up postfix (main.cf) &#8230;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">sed</span> -i <span class="st0">&#8216;s/mail[0-9]./&#8217;</span><span class="re1">$NAME</span><span class="st0">&#8216;/g&#8217;</span> temp/etc/postfix/main.cf</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;&gt;&gt; Setting up ethernet &#8230;&quot;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">sed</span> -i <span class="st0">&#8216;s/aaa.bbb.ccc.ddd/&#8217;</span><span class="re1">$IP_ADDR</span><span class="st0">&#8216;/&#8217;</span> temp/etc/network/interfaces</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;&gt;&gt; Adding RSA Public Key &#8230;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">cat</span> /home/admin/.<span class="kw2">ssh</span>/id_rsa.pub &gt;&gt; temp/root/.<span class="kw2">ssh</span>/authorized_keys</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">umount</span> temp</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;Done.&quot;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="kw1">done</span></div>
</li>
</ol>
</div>
<p>Lo que hace el script, en sencillos pasos es:</p>
<p>- Crear el directorio donde guardaremos nustro fichero de configuración y cosas necesarias.<br />
- Copiar los ficheros necesarios (configuracion de la máquina, imagen del sistema operativo, etc)<br />
- Toma el fichero de configuración y lo <em>parsea</em> para adaptarlo según la configuración que necesitemos.<br />
- Monta la imagen (usando <em>loop</em>)de nuestra nueva máquina.<br />
- Edita y configura los ficheros necesarios dentro de esa máquina virtual.<br />
- Desmontamos y pasamos a la siguiente máquina.</p>
<p>El script se basa en un fichero de &#8220;configuración&#8221;, el cual nos debe proveer de la dirección IP, la mac y el hostname, en el siguiente formato:</p>
<blockquote><p>aaa.bbb.ccc.ddd:hostname.tld:ma:c:a:dd:re:ss</p></blockquote>
<p>Con este post no busco enseñar como migrar o clonar máquinas, simplemente demostrar que se puede automatizar la tarea de clonación de máquinas en serie. Claramente este script no funcionará para los requerimientos de todos nosotros, pero se puede adaptar.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fclonacion-de-maquinas-virtuales-en-serie%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/clonacion-de-maquinas-virtuales-en-serie/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/clonacion-de-maquinas-virtuales-en-serie/"  data-text="Clonación de máquinas virtuales en serie" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/clonacion-de-maquinas-virtuales-en-serie/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Cómo redimenzionar el tamaño de un disco virtual en Xen</title>
		<link>http://blog.zerial.org/linux/como-redimenzionar-el-tamano-de-un-disco-virtual-en-xen/</link>
		<comments>http://blog.zerial.org/linux/como-redimenzionar-el-tamano-de-un-disco-virtual-en-xen/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 02:18:11 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[paravirtualizacion]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[virtualizacion]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=669</guid>
		<description><![CDATA[El otro día, jugando un rato con Xen me encontré con el problema de querer redimenzionar el tamaño de disco virtual de las máquinas virtuales y, cabezeandome un rato, lo logré. En teoría, aumentar el tamaño de un disco es fácil, creamos un fichero del tamaño que queramos usando dd y luego concatenamos con el [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-676" title="hdd-1" src="http://blog.zerial.org/wp-content/uploads/2009/07/hdd-1.jpg" alt="hdd-1" width="380" height="253" /></p>
<p>El otro día, jugando un rato con Xen me encontré con el problema de querer redimenzionar el tamaño de disco virtual de las máquinas virtuales y, cabezeandome un rato, lo logré.<br />
En teoría, aumentar el tamaño de un disco es fácil, creamos un fichero del tamaño que queramos usando <strong>dd</strong> y luego concatenamos con el que ya tenemos, creamos el sistema de ficheros y listo. Pero el disminuirlo me pareció más complejo, pero no fue así.</p>
<p><span id="more-669"></span></p>
<p><strong>Paso a paso</strong></p>
<ul>
<li><strong>Aumentar el tamaño del disco</strong></li>
<p>Vamos a usar tres herramientas: <strong>dd</strong>, <strong>cat</strong> y <strong>mkfs</strong>.<br />
Primero, crear un fichero del tamaño que necesitemos, por ejemplo 5GB:</p>
<p><code>dd if=/dev/zero of=file.img bs=1MB count=5000</code></p>
<p>Luego de esto unimos nuestro disco actual con el nuevo <em>file.img</em>:<br />
<code>cat file.img &gt;&gt; disk.img</code></p>
<p>Como último paso, volvemos a crear el sistema de ficheros usando <em>mkfs</em>:<br />
<code>mkfs.<em>xfs</em> disk.img</code><br />
(deben cambiar xfs por el sistema de ficheros a utilizar como ext3, reiserfs, etc)</p>
<li><strong>Disminuir el tamaño del disco</strong><br />
Similar al anterior, usaremos las herramientas <strong>dd</strong> y <strong>mkfs</strong> (tambien usaremos los comando <em>cp</em> y <em>mouont</em>)<br />
Creamos un fichero con el nuevo tamaño del disco, por ejemplo 5GB:</p>
<p><code>dd if=/dev/zero of=newdisk.img bs=1MB count=5000</code></p>
<p>Le damos formato al fichero:</p>
<p><code>mkfs.<em>xfs</em> newdisk.img</code></p>
<p>Montamos la imágen del disco antigua y la nueva en dos directorios distintos (usaremos temp1 y temp2, respectivamente):</p>
<p><code>mkdir temp1 temp2<br />
mount -tauto -oloop disk.img temp1<br />
mount -tauto -oloop newdisk.img temp2</code></p>
<p>Simplemente copiamos los ficheros desde temp1 hasta temp2, obviamente, conservando los permisos:</p>
<p><code>cp -rfvp temp1/* temp2/</code></p>
<p>Desmontamos las dos imágenes:</p>
<p><code>umount temp1 &amp;amp;&amp;amp; umount temp2</code></p>
<p>Listo, ahora en newdisk.img de 5gb tenemos todo lo que estaba antes en disk.img.</li>
</ul>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fcomo-redimenzionar-el-tamano-de-un-disco-virtual-en-xen%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/como-redimenzionar-el-tamano-de-un-disco-virtual-en-xen/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/como-redimenzionar-el-tamano-de-un-disco-virtual-en-xen/"  data-text="Cómo redimenzionar el tamaño de un disco virtual en Xen" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/como-redimenzionar-el-tamano-de-un-disco-virtual-en-xen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Xen: Migración de discos fisicos a discos virtuales (pt3)</title>
		<link>http://blog.zerial.org/linux/xen-migracion-de-discos-fisicos-a-discos-virtuales/</link>
		<comments>http://blog.zerial.org/linux/xen-migracion-de-discos-fisicos-a-discos-virtuales/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 14:24:37 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[maquina virtal]]></category>
		<category><![CDATA[migracion]]></category>
		<category><![CDATA[paravirtualizacion]]></category>
		<category><![CDATA[virtualizacion]]></category>
		<category><![CDATA[vm]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=375</guid>
		<description><![CDATA[La migración de discos físicos a discos virtuales para poder montar una VM en Xen es, en teoría, fácil. Es simplemente hacer una copia con dd de las particiones que deseas. Hay que tener mucho cuidado, no debemos hacer una imágen del disco completo, sólo las particiones que deseamos, sin el sector 0 (mbr), ni [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-569" title="quantum-bigfoot" src="http://blog.zerial.org/wp-content/uploads/2009/07/quantum-bigfoot.jpg" alt="quantum-bigfoot" width="190" height="162" /> La migración de discos físicos a discos virtuales para poder montar una VM en Xen es, en teoría, fácil. Es simplemente hacer una copia con <em>dd</em> de las particiones que deseas. Hay que tener mucho cuidado, no debemos hacer una imágen del disco completo, sólo las particiones que deseamos, sin el sector 0 (mbr), ni tabla de particiones, etc. Tampoco recomiendo migrar la <em>swap</em>, es mejor crearla (en teoría demoraría menos).</p>
<p>Cuando se trata de máquinas de producción o servidores, lo que debemos hacer para no tener conflictos con las direcciones ip, hostnames, fstab o cualquier configuración <em>especial</em> que tenga esa máquina que de una u otra forma pueda generar conflictos, es montarla con <em>loop</em> y modificar las configuraciones directamente desde la imágen que creamos.<br />
Los pasos a seguir (recomendados por mi) son:</p>
<ol>
<li>Determinar qué particiones son las que debemos migrar.</li>
<li>Hace las imágenes correspondientes de cada partición.</li>
<li>Configuración de la máquina virtual (crear el .cfg).</li>
<li>Montar las particiones que podrían generar algún tipo de conflicto y modificar los archivos necesarios.</li>
<li>Creación de la swap.</li>
<li>Levantar la máquina.</li>
</ol>
<p><span id="more-375"></span></p>
<ol>
<li><strong>Determinar qué particiones son las que debemos migrar.</strong></li>
<p>Es necesario respaldar sólo las particiones que contienen información, como dije anteriormente, la swap no es necesaria, tambien da lo mismo el orden y el nombre que les pongamos, pero hay que ser ordenados.</p>
<p>Imaginemos la siguiente tabla de particiones:</p>
<blockquote><p>/dev/sda1 / xfs defaults 0 1<br />
/dev/sda2 /home xfs defaults 0 1<br />
/dev/sda3 swap swap defaults 0 0</p></blockquote>
<p>Lo único que debemos respaldar es <strong>sda1</strong> y <strong>sda2</strong></p>
<li><strong>Hace las imágenes correspondientes de cada partición.</strong></li>
<p>Para crear las imágenes de cada particion, vamos a usar <strong>dd</strong>.<br />
<code># mkdir -p /vm/vm1 &amp;&amp; cd /vm/vm1<br />
# dd if=/dev/sda1 of=sda1.img<br />
# dd if=/dev/sda2 of=sda2.img</code><br />
Con esto ya tenemos sda1.img, sda2.img correspondiente a /dev/sda1 y /dev/sda2 respectivamente.</p>
<li><strong>Configuración de la máquina virtual (crear el .cfg).</strong></li>
<p><code>#  Kernel + memoria<br />
kernel      = '/boot/vmlinuz-2.6.26-2-xen-686'<br />
ramdisk     = '/boot/initrd.img-2.6.26-2-xen-686'<br />
maxmem  =       '2048'<br />
memory      = '1024'<br />
vcpus=4<br />
#  Discos.<br />
<strong>root        = '/dev/hda1 ro'<br />
disk        = [<br />
                  'file:/vm/vm1/sda1.img,hda1,w',<br />
		  'file:/vm/vm1/sda2.img,hda2,w',<br />
                  'file:/vm/vm1/swap.img,hda3,w',<br />
              ]</strong><br />
#  Hostname<br />
name        = 'labs'<br />
# red<br />
vif         = [ 'ip=10.0.0.134,mac=00:1B:CC:C3:BB:3B,bridge=xenbr1' ]<br />
 # comportamiento<br />
on_poweroff = 'destroy'<br />
on_reboot   = 'restart'<br />
on_crash    = 'restart'</code><br />
De esta forma le decimos a la máquina virtual que su hda1 estará <em>mapeado</em> a la imágen del disco sda1 que creamos y hda2 a sda2.</p>
<li><strong>Montar las particiones que podrían generar algún tipo de conflicto y modificar los archivos necesarios.</strong></li>
<p>En este caso, sda1 nos podria generar conflictos con el fichero fstab, ya que tiene otra distribución para los puntos de montaje. Entonces, montamos la imágen:<br />
<code># mkdir temp<br />
# mount -o loop -t <em>auto</em> sda1.img temp/</code><br />
Entramos a <em>temp/etc/</em> y editamos el fichero <strong>fstab</strong> y <em>mapeamos</em> correctamente las particiones, teniendo en cuenta que nuestras nuevas particiones se llaman hda1 y hda2. (no olvidar la swap).<br />
Desmontamos la imágen:<br />
<code># umoount temp/</code></p>
<li><strong>Creación de la swap.</strong></li>
<p>Para crear la swap tambien vamos a usar <strong>dd</strong>.<br />
<code> # dd if=/dev/zero of=swap.img bs=1M count=1500</code><br />
(esto generara una imágen llamada swap.img de 1*1500 MB)<br />
Hacemos que sea de tipo swap:<br />
<code># mkswap swap.img</code><br />
Listo.<br />
<code></code></p>
<li><strong>Levantar la máquina.</strong></li>
<p>Para levantar la máquina simplemente ejecutamos el comando:ç<br />
<code># xm create vm1.cfg -c</code><br />
(vm1.cfg es el nombre que le pusimos al archivo de configuración de la máquina)</ol>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fxen-migracion-de-discos-fisicos-a-discos-virtuales%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/xen-migracion-de-discos-fisicos-a-discos-virtuales/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/xen-migracion-de-discos-fisicos-a-discos-virtuales/"  data-text="Xen: Migración de discos fisicos a discos virtuales (pt3)" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/xen-migracion-de-discos-fisicos-a-discos-virtuales/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Xen: Creación y configuración de una máquina virtual (pt2)</title>
		<link>http://blog.zerial.org/linux/xen-creacion-y-configuracion-de-una-maquina-virtual-pt2/</link>
		<comments>http://blog.zerial.org/linux/xen-creacion-y-configuracion-de-una-maquina-virtual-pt2/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 17:18:29 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[configuracion]]></category>
		<category><![CDATA[creacion]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[maquina virtual]]></category>
		<category><![CDATA[paravirtualizacion]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[virtual machine]]></category>
		<category><![CDATA[virtualizacio]]></category>
		<category><![CDATA[vm]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=371</guid>
		<description><![CDATA[Si la instalación y configuración de Xen resultó ser fácil, lo que mostraré a continuación es mucho más sencillo. Para instalar una máquina nueva (con Debian) debemos ejecutar el siguiente comando: xen-create-image --hostname=xen1 --size=5Gb --swap=256Mb --ide \ --ip=192.168.0.101 --netmask=255.255.255.0 --gateway=192.168.0.1 --force \ --dir=/vm --memory=128Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.26-2-xen-686 \ --debootstrap --dist=lenny --mirror=http://ftp.cl.debian.org/debian/ --passwd Si destripamos los parámetros [...]]]></description>
			<content:encoded><![CDATA[<p>Si la instalación y configuración de Xen resultó ser fácil, lo que mostraré a continuación es mucho más sencillo. Para instalar una máquina nueva (con Debian) debemos ejecutar el siguiente comando:</p>
<p><code>xen-create-image --hostname=xen1 --size=5Gb --swap=256Mb --ide \<br />
  --ip=192.168.0.101 --netmask=255.255.255.0 --gateway=192.168.0.1 --force \<br />
  --dir=/vm --memory=128Mb --arch=i386 --kernel=/boot/vmlinuz-2.6.26-2-xen-686 \<br />
  --debootstrap --dist=lenny --mirror=http://ftp.cl.debian.org/debian/ --passwd</code></p>
<p>Si <em>destripamos</em> los parámetros nos damos cuenta que le estamos asignando (en orden) el hostname, tamaño de disco duro, cantidad de swap, tipo de disco, dirección ip, netmask, gateway, el directorio donde instalarla, ram, arquitectura, kernel para usar, metodo de instalación, distribución, mirror para descargar y por último, que nos pregunte la pass de root cuando termine de instalar. Estos parametros se pueden cambiar según los requerimientos.</p>
<p>El archivo de configuración de las máquinas virtuales es algo como:</p>
<p><code>kernel      = '/boot/vmlinuz-2.6.26-2-xen-686'<br />
ramdisk     = '/boot/initrd.img-2.6.26-2-xen-686'<br />
maxmem	=	'256'<br />
memory      = '64'<br />
root        = '/dev/hda2 ro'<br />
disk        = [<br />
                  'file:/vm/domains/xen01/swap.img,hda1,w',<br />
                  'file:/vm/domains/xen01/disk.img,hda2,w',<br />
              ]<br />
name        = 'xen01'<br />
# Red<br />
vif         = [ 'ip=192.168.20.202,mac=00:16:3E:6F:E3:3B' ]<br />
#  Comportamiento<br />
on_poweroff = 'destroy'<br />
on_reboot   = 'restart'<br />
on_crash    = 'restart'</code></p>
<p>Podemos modificar arbitrariamente las opciones segun lo que nosotros necesitemos, tambien existen más opciones que le podemos agregar, como la asignacion de X cpus, decirles que cpu usen, por ejemplo si tenemos 4 núcleos, asignarle el 1 y el 4.</p>
<p><code>vcpus = 2;<br />
cpus = '0,3'</code></p>
<p>De esta forma le estamos asignando 2 núcleos virtuales  y le estamos diciendo que use los nucleos <em>0</em> y <em>3</em>.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fxen-creacion-y-configuracion-de-una-maquina-virtual-pt2%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/xen-creacion-y-configuracion-de-una-maquina-virtual-pt2/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/xen-creacion-y-configuracion-de-una-maquina-virtual-pt2/"  data-text="Xen: Creación y configuración de una máquina virtual (pt2)" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/xen-creacion-y-configuracion-de-una-maquina-virtual-pt2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Xen: Instalación y configuración (pt1)</title>
		<link>http://blog.zerial.org/linux/xen-instalacion-configuracion-pt1/</link>
		<comments>http://blog.zerial.org/linux/xen-instalacion-configuracion-pt1/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 00:13:39 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[paravirtualizacion]]></category>
		<category><![CDATA[virtualizacion]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=368</guid>
		<description><![CDATA[Esta es la primera parte de una serie de artículos que escribiré sobre cómo configurar y usar Xen, crear y administrar máquinas virtuales, clonación y migración, asignación de procesadores, memoria y configuración de la red entre otras cosas. Aunque soy usuario de Archlinux, los servidores que administro están bajo Debian, por lo que estos tutoriales [...]]]></description>
			<content:encoded><![CDATA[<p>Esta es la primera parte de una serie de artículos que escribiré sobre cómo configurar y usar <a href="http://es.wikipedia.org/wiki/Xen" target="aa">Xen</a>, crear y administrar máquinas virtuales, clonación y migración, asignación de procesadores, memoria y configuración de la red entre otras cosas.<br />
Aunque soy usuario de <a href="http://www.archlinux.org" target="aa">Archlinux</a>, los servidores que administro están bajo <a href="http://www.debian.org" target="asa">Debian</a>, por lo que estos tutoriales los haré en base a esa distribución.</p>
<p>A continuación, una serie de instrucciones de cómo instalar y dejar corriendo Xen en la máquina servidor en sencillos pasos:</p>
<p>Debemos instalar el kernel correspondiente y las utilidades de xen. Lo hacemos todo con el siguiente comando:</p>
<blockquote><p>apt-get install xm-utils-common xen-linux-system-2.6.26-2-xen-686 linux-image-2.6.26-2-xen-686</p></blockquote>
<p>Se van a instalar automáticamente las dependencias y otras utilidades que se necesiten.<br />
Reiniciamos y booteamos con el kernel correspondiente: <strong>Xen 3.2-1-i386 / Debian GNU/Linux, kernel 2.6.26-2-xen-686</strong></p>
<p>Hay que fijarse que se instalaron dos: <em>linux-image</em> y <em>xen-linux-system</em>. El primero se usará para que las máquinas <em>guest</em> booteen y el segundo para el domU.</p>
<p>Cuando ya hayamos iniciado con <em>xen-linux-system</em>, debemos editar el fichero <em>/etc/xen/xend-config.sxp</em>. Vamos a la linea donde configuramos la red, debe aparecer algo como &#8220;<em>(network-script network-dummy)</em>&#8221; y debemos cambiarlo por &#8220;<em>(network-script network-bridge)</em>&#8220;. Cuando intentemos crear nuestra primera máquina virtual, xen nos enviará un mensaje advirtiendo que debemos configurar esa linea en el fichero de configuración.</p>
<p>Eso es todo.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fxen-instalacion-configuracion-pt1%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/xen-instalacion-configuracion-pt1/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/xen-instalacion-configuracion-pt1/"  data-text="Xen: Instalación y configuración (pt1)" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/xen-instalacion-configuracion-pt1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

