<?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; xen</title>
	<atom:link href="http://blog.zerial.org/tag/xen/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>Tue, 03 Jan 2012 00:13:53 +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>Manipular volúmenes lógicos (LVM) en discos virtuales</title>
		<link>http://blog.zerial.org/linux/manipular-volumenes-logicos-lvm-en-discos-virtuales/</link>
		<comments>http://blog.zerial.org/linux/manipular-volumenes-logicos-lvm-en-discos-virtuales/#comments</comments>
		<pubDate>Wed, 14 Sep 2011 07:48:50 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[kpartx]]></category>
		<category><![CDATA[losetup]]></category>
		<category><![CDATA[lvm]]></category>
		<category><![CDATA[virtual machine]]></category>
		<category><![CDATA[virtualizacion]]></category>
		<category><![CDATA[vm]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2673</guid>
		<description><![CDATA[Me refiero a discos virtuales a los que creamos usando dd. Cuando creamos un disco utilizando por ejemplo dd if=/dev/zero of=imagen.img y lo usamos para crear una máquina virtual, en este caso con Xen, luego le instalamos un sistema operativo que maneje ya sea CentOS, RHEL, Debian o cualquier otro que maneje LVM en la [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.zerial.org/wp-content/uploads/2011/09/quantum-bigfoot.jpg"><img class="alignleft size-full wp-image-2680" style="margin: 4px;" title="quantum-bigfoot" src="http://blog.zerial.org/wp-content/uploads/2011/09/quantum-bigfoot.jpg" alt="" width="181" height="154" /></a>Me refiero a <strong>discos virtuales</strong> a los que creamos usando <strong>dd</strong>. Cuando creamos un disco utilizando por ejemplo <em>dd if=/dev/zero of=imagen.img</em> y lo usamos para crear una máquina virtual, en este caso con Xen, luego le instalamos un sistema operativo que maneje ya sea CentOS, RHEL, Debian o cualquier otro que maneje LVM en la instalación, hay veces que necesitamos manipularlo ya sea para clonarlo, hacerle mantención o simplemente montarlo para ver los archivos. En mi caso, tuve que clonar la máquina virtual en caliente y quedó el FS corrupto, por lo que tuve que corregirlo, tambien sirve para hacer tareas de mantención como aumentar o disminuir el tamaño del disco o volúmenes lógicos.</p>
<p>Tengo mi disco original llamado &#8220;<em>vm1.img</em>&#8221; y la clono simplemente con un <strong>cp</strong> o bien con &#8220;<strong>dd if=vm1.img vm1_clon.img</strong>&#8220;, paso a paso, lo que tenemos que hacer es:</p>
<ol>
<li>Crear un dispositivo &#8220;loop&#8221; en base a nuestro disco virtual</li>
<li>Mapear el dispositivo loop creado</li>
<li>Revisar los dispositivos creados en /dev/mapper/</li>
<li>Activar el volúmen y realizar las tareas necesarias</li>
</ol>
<p>Las herramientas que usé son <a href="http://linux.die.net/man/8/losetup">losetup</a>, <a href="http://linux.die.net/man/8/kpartx">kpartx</a> y <a href="http://linux.die.net/man/8/vgchange">vgchange</a>.</p>
<p><span id="more-2673"></span></p>
<p>Primero, ya tenemos nuestro disco creado, en este caso lo llamaré &#8220;testing&#8221; y tiene un tamaño de 80GB.<br />
<code># fdisk -l testing</p>
<p>Disk testing: 85.9 GB, 85899345920 bytes<br />
255 heads, 63 sectors/track, 10443 cylinders, total 167772160 sectors<br />
Units = sectors of 1 * 512 = 512 bytes<br />
Sector size (logical/physical): 512 bytes / 512 bytes<br />
I/O size (minimum/optimal): 512 bytes / 512 bytes<br />
Disk identifier: 0x0007759f</p>
<p>  Device Boot      Start         End      Blocks   Id  System<br />
testing1   *          63      208844      104391   83  Linux<br />
testing2          208845   167766794    83778975   8e  Linux LVM</code></p>
<p>Para comenzar vamos a usar el comando <strong>losetup</strong> para crear un dispositivo &#8220;loop&#8221; en base a nuestra imagen de disco, para esto ejecutamos:</p>
<p><code># losetup -f testing</code></p>
<p>Y verificamos con el mismo comando losetup que se haya creado</p>
<p><code># losetup -a<br />
/dev/loop0: [fe01]:24577 (/mnt/vardata/testing)</code></p>
<p>Ya tenemos nuestro dispositivo &#8220;loop&#8221; en /dev/loop0 mapeado a la imagen de disco virtual ubicada en /mnt/vardata/testing. </p>
<p>Ahora debemos usar la herramienta <strong>kpartx</strong> para <em>mapear</em> ese dispositivo que hemos mapeado a nuestro disco virtual hacia nuestro administrador de volúmenes lógicos</p>
<p><code># kpartx -a -v /dev/loop0<br />
add map loop0p1 (254:2): 0 208782 linear /dev/loop0 63<br />
add map loop0p2 (254:3): 0 167557950 linear /dev/loop0 208845</code></p>
<p>Ahora tenemos otros dispositivos creados en /dev/mapper, corresponden a &#8220;loop0p1&#8243; y &#8220;loop0p2&#8243; correspondientes a las particiones de nuestro disco virtual. Así debería ser presentarse:</p>
<p><code># ls -lia /dev/mapper/<br />
total 0<br />
   1072 drwxr-xr-x  2 root root     140 sep 13 15:19 .<br />
      3 drwxr-xr-x 15 root root    3260 sep 13 15:19 ..<br />
   1073 crw-------  1 root root 10, 236 ago 11 12:12 control<br />
2672529 lrwxrwxrwx  1 root root       7 sep 13 15:19 loop0p1 -&gt; ../dm-2<br />
2671232 lrwxrwxrwx  1 root root       7 sep 13 15:19 loop0p2 -&gt; ../dm-3<br />
   3655 lrwxrwxrwx  1 root root       7 ago 11 12:12 VolGroup_ID_15211-backup -&gt; ../dm-0<br />
   3672 lrwxrwxrwx  1 root root       7 ago 11 12:12 VolGroup_ID_15211-vardata -&gt; ../dm-1</code></p>
<p>Y el comando <strong>vgdisplay</strong> debería mostrar la información del grupo</p>
<p><code># vgdisplay<br />
  --- Volume group ---<br />
  VG Name               VolGroup00<br />
  System ID<br />
  Format                lvm2<br />
  Metadata Areas        1<br />
  Metadata Sequence No  3<br />
  VG Access             read/write<br />
  VG Status             resizable<br />
  MAX LV                0<br />
  Cur LV                2<br />
  Open LV               0<br />
  Max PV                0<br />
  Cur PV                1<br />
  Act PV                1<br />
  VG Size               79,88 GiB<br />
  PE Size               32,00 MiB<br />
  Total PE              2556<br />
  Alloc PE / Size       2556 / 79,88 GiB<br />
  Free  PE / Size       0 / 0<br />
  VG UUID               yAIBPd-1PD6-IN1U-aoK7-bLSW-rz08-ERktCp</code></p>
<p>Y con <strong>lvdisplay</strong> revisamos la información de los volúmenes dentro del grupo VolGroup00</p>
<p><code># lvdisplay VolGroup00<br />
  --- Logical volume ---<br />
  LV Name                /dev/VolGroup00/LogVol00<br />
  VG Name                VolGroup00<br />
  LV UUID                Du8Hwj-BUff-RhS3-lNTZ-KsxS-jvEp-S71om4<br />
  LV Write Access        read/write<br />
  LV Status              NOT available<br />
  LV Size                77,84 GiB<br />
  Current LE             2491<br />
  Segments               1<br />
  Allocation             inherit<br />
  Read ahead sectors     auto</p>
<p>  --- Logical volume ---<br />
  LV Name                /dev/VolGroup00/LogVol01<br />
  VG Name                VolGroup00<br />
  LV UUID                Sg3KQG-F3Ad-kgIx-yJi0-OSxm-fBUg-bKUR3O<br />
  LV Write Access        read/write<br />
  LV Status              NOT available<br />
  LV Size                2,03 GiB<br />
  Current LE             65<br />
  Segments               1<br />
  Allocation             inherit<br />
  Read ahead sectors     auto</code></p>
<p>Si te fijan en un detalle, en ambos volúmenes, el estado es &#8220;<strong>NOT available</strong>&#8220;, pues debemos activarlo</p>
<p><code># vgchange VolGroup00 -a y<br />
  2 logical volume(s) in volume group "VolGroup00" now active</code></p>
<p>Y volvemos a revisar</p>
<p><code># lvdisplay VolGroup00<br />
  --- Logical volume ---<br />
  LV Name                /dev/VolGroup00/LogVol00<br />
  VG Name                VolGroup00<br />
  LV UUID                Du8Hwj-BUff-RhS3-lNTZ-KsxS-jvEp-S71om4<br />
  LV Write Access        read/write<br />
<strong>  LV Status              available</strong><br />
  # open                 0<br />
  LV Size                77,84 GiB<br />
  Current LE             2491<br />
  Segments               1<br />
  Allocation             inherit<br />
  Read ahead sectors     auto<br />
  - currently set to     256<br />
  Block device           254:4</p>
<p>  --- Logical volume ---<br />
  LV Name                /dev/VolGroup00/LogVol01<br />
  VG Name                VolGroup00<br />
  LV UUID                Sg3KQG-F3Ad-kgIx-yJi0-OSxm-fBUg-bKUR3O<br />
  LV Write Access        read/write<br />
<strong>  LV Status              available</strong><br />
  # open                 0<br />
  LV Size                2,03 GiB<br />
  Current LE             65<br />
  Segments               1<br />
  Allocation             inherit<br />
  Read ahead sectors     auto<br />
  - currently set to     256<br />
  Block device           254:5</code></p>
<p>Ya los tenemos disponibles y ahora podemos trabajar con ese volúmen como si fuese un &#8220;lvm&#8221; normal, realizar tareas de mantención, montar el volumen, disminuir o aumentar su tamaño, etc.</p>
<p>Cuando ya terminemos de hacer todo lo que queramos con el disco virtual, hay que volver todo a la normalidad, haciendo los pasos inversos:</p>
<p><strong>Desactivar el volumen</strong><br />
<code># vgchange VolGroup00 -a n<br />
  0 logical volume(s) in volume group "VolGroup00" now active</code></p>
<p><strong>Remover el mapeo de los dispositivos loop0p1 y loop0p2</strong> creados desde loop0<br />
<code># kpartx -d /dev/loop0</code></p>
<p><strong>Remover el mapeo de /dev/loop0</strong> creado desde nuestro disco virtual &#8220;testing&#8221;<br />
<code># losetup -v -d /dev/loop0</code></p>
<p>Ya dejamos todo como estaba y podemos volver a utilizar nuestro disco virtual.</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%2Fmanipular-volumenes-logicos-lvm-en-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/manipular-volumenes-logicos-lvm-en-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/manipular-volumenes-logicos-lvm-en-discos-virtuales/"  data-text="Manipular volúmenes lógicos (LVM) en discos virtuales" 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/manipular-volumenes-logicos-lvm-en-discos-virtuales/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<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>Tip: Migración de servidores a Xen</title>
		<link>http://blog.zerial.org/linux/tip-migracion-de-servidores-a-xen/</link>
		<comments>http://blog.zerial.org/linux/tip-migracion-de-servidores-a-xen/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 01:24:03 +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[migracion]]></category>
		<category><![CDATA[virtualizacion]]></category>
		<category><![CDATA[vmware]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=756</guid>
		<description><![CDATA[Este es el segundo post del día relacionado con Xen ya que he estado jugando con Xen, hace tiempo que no probaba cosas. Este post se trata de un tip para poder mgirar cualquier servidor hacia Xen, no importa si está virtualizado con VMWare, si es una máquina fisica, Xen, etc etc, es una forma [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-758" style="margin: 2px;" title="xen_tips" src="http://blog.zerial.org/wp-content/uploads/2009/08/xen_tips.gif" alt="xen_tips" width="149" height="67" />Este es el segundo post del día relacionado con Xen ya que he estado jugando con Xen, hace tiempo que no probaba cosas. Este post se trata de un <em>tip</em> para poder mgirar cualquier servidor hacia Xen, no importa si está virtualizado con VMWare, si es una máquina fisica, Xen, etc etc, es una forma bastante sencilla que no tiene ninguna ciencia.</p>
<p><strong>La teoría</strong><br />
Copiar todos los archivos (por red) de una máquina a otra manteniendo los permisos e integridad de cada fichero.</p>
<p><strong>La práctica</strong><br />
Lo haremos en 4 sencillos pasos y haciendo uso de la herramienta <em>rsync</em></p>
<p><span id="more-756"></span></p>
<ol>
<li>Preparar nueva máquina</li>
<p>Creamos el disco usando <strong>dd</strong> y le damos formato:<br />
<code>dd if=/dev/zero of=disco.img bs=1M count=10000<br />
mkfs.ext3 disco.img</code><br />
En este caso 10 mil megas y usamos ext3.<br />
La montamos y pasamos al siguiente paso:<br />
<code>mkdir temporal &amp;amp;&amp;amp; mount -text3 -oloop disco.img temporal/</code></p>
<li>Preparar máquina remota</li>
<p>lo único que haremos será bajar los servicios para que tenga la menor carga posible (httpd, base de datos, etc etc)</p>
<li>Traslado de ficheros</li>
<p>Lo haremos con el comando <em>rsync</em>:<br />
<code>/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded --rsh=/usr/bin/ssh root@maquina.remota:/ temporal/</code></p>
<li>Iniciar máquina nueva</li>
<p>Editamos los ficheros <em>/etc/fstab</em> para que coincidan con nuestra configuración de la máquina virtual y luego para que no tengamos conflictos con la máquina antigua, editamos tambien <em>/etc/network/interfaces</em> (o como se llame el fichero de la configuración de la red de la distribución)</p>
<p>Finalmente, desmontamos temporal/ (umount temporal/) e iniciamos la máquina y wala!!! Inicio sin problemas.</ol>
<p>Probado en Debian Lenny.</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%2Ftip-migracion-de-servidores-a-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/tip-migracion-de-servidores-a-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/tip-migracion-de-servidores-a-xen/"  data-text="Tip: Migración de servidores a 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/tip-migracion-de-servidores-a-xen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalar CentOS con Xen en Debian</title>
		<link>http://blog.zerial.org/linux/instalar-centos-sobre-xen-con-debian-en-5-pasos/</link>
		<comments>http://blog.zerial.org/linux/instalar-centos-sobre-xen-con-debian-en-5-pasos/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 20:25:51 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=749</guid>
		<description><![CDATA[Luego de intentar varias maneras de instalar CentOS sobre Xen y luego de varios intentos fallidos, puedo resumir todo en 5 sensillos pasos para no morir en el intento. Descargar las imágenes Descargar las siguientes imágenes (checkear si existen más nuevas): * http://mirror.centos.org/centos/5.3/os/i386/images/xen/vmlinuz * http://mirror.centos.org/centos/5.3/os/i386/images/xen/initrd.img Por ejemplo, dejemoslo en /tmp/ wget http://mirror.centos.org/centos/5.3/os/i386/images/xen/vmlinuz -O /tmp/ wget [...]]]></description>
			<content:encoded><![CDATA[<p>Luego de intentar varias maneras de instalar CentOS sobre Xen y luego de varios intentos fallidos, puedo resumir todo en 5 sensillos pasos para no morir en el intento.</p>
<ol>
<li><strong>Descargar las imágenes</strong></li>
<p>Descargar las siguientes imágenes (<em>checkear si existen más nuevas</em>):<br />
* http://mirror.centos.org/centos/5.3/os/i386/images/xen/vmlinuz<br />
* http://mirror.centos.org/centos/5.3/os/i386/images/xen/initrd.img</p>
<p>Por ejemplo, dejemoslo en /tmp/</p>
<p><code>wget http://mirror.centos.org/centos/5.3/os/i386/images/xen/vmlinuz -O /tmp/</code><br />
<code>wget http://mirror.centos.org/centos/5.3/os/i386/images/xen/initrd.img -O /tmp/</code></p>
<li><strong>Configuración de la máquina virtual</strong></li>
<p>El fichero de configuración de la máquina debe ser algo como: (//modificar según requerimientos//)</p>
<blockquote><p>kernel=&#8217;/tmp/vmlinuz&#8217;<br />
ramdisk=&#8217;/tmp/initrd.img&#8217;<br />
extra=&#8217;text&#8217;<br />
maxmem=&#8217;3072&#8242;<br />
memory=&#8217;2048&#8242;<br />
vcpus=2</p>
<p>disk=[<br />
'file:/vm/cpanel/root.img,hda,w',<br />
'file:/vm/cpanel/home.img,hdb,w',<br />
'file:/vm/cpanel/tmp_swap.img,hdc,w',<br />
]</p>
<p>name=&#8217;cpanel&#8217;<br />
vif=[ 'ip=200.55.200.126,mac=00:1B:CC:C3:B3:33,bridge=xenbr1' ]</p>
<p>on_poweroff = &#8216;destroy&#8217;<br />
on_reboot   = &#8216;restart&#8217;<br />
on_crash    = &#8216;restart&#8217;</p></blockquote>
<li><strong>Preparación de discos</strong></li>
<p><em>root</em> será nuestra partición que montaremos en /<br />
en <em>home</em> vamos a montar nuestro /home y<br />
<em>tmp_swap</em> la usaremos para montar /tmp y la swap del sistema.</p>
<p>Creamos los discos:<br />
<code>dd if=/dev/zero of=root.img bs=1M count=10240 #10Gb</code><br />
<code>dd if=/dev/zero of=home.img bs=1M count=40960 #40Gb</code><br />
<code>dd if=/dev/zero of=tmp_swap.img bs=1M count=2048 #2Gb</code></p>
<li><strong>Instalación</strong></li>
<p>Iniciamos la máquina virtual:<br />
<code>xm create -c configuration.cfg</code></p>
<p>Seguimos paso a paso la instalación y finalizamos.</p>
<li><strong>Booteo</strong></li>
<p>Para bootear debemos hacer una modificacion en el fichero de configuración de la máquina, la dejamos así:</p>
<blockquote><p>bootloader = &#8216;/usr/lib/xen-3.2-1/bin/pygrub&#8217; #El path depende de la version<br />
extra=&#8217;text&#8217;<br />
maxmem=&#8217;3072&#8242;<br />
memory=&#8217;2048&#8242;<br />
vcpus=2</p>
<p>disk=[<br />
'file:/vm/cpanel/root.img,hda,w',<br />
'file:/vm/cpanel/home.img,hdb,w',<br />
'file:/vm/cpanel/tmp_swap.img,hdc,w',<br />
]</p>
<p>name=&#8217;cpanel&#8217;<br />
vif=[ 'ip=200.55.200.126,mac=00:1B:CC:C3:B3:33,bridge=xenbr1' ]</p>
<p>on_poweroff = &#8216;destroy&#8217;<br />
on_reboot   = &#8216;restart&#8217;<br />
on_crash    = &#8216;restart&#8217;</p></blockquote>
<p>Luego iniciamos la maquina:<br />
<code>xm create configuration.cfg -c</code></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%2Finstalar-centos-sobre-xen-con-debian-en-5-pasos%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/instalar-centos-sobre-xen-con-debian-en-5-pasos/"></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/instalar-centos-sobre-xen-con-debian-en-5-pasos/"  data-text="Instalar CentOS con Xen en Debian" 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/instalar-centos-sobre-xen-con-debian-en-5-pasos/feed/</wfw:commentRss>
		<slash:comments>0</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>
		<item>
		<title>Virtualizacion usando Xen</title>
		<link>http://blog.zerial.org/linux/documentacion/virtualizacion-usando-xen/</link>
		<comments>http://blog.zerial.org/linux/documentacion/virtualizacion-usando-xen/#comments</comments>
		<pubDate>Sun, 20 Jan 2008 01:05:02 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[virtualizacion]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/2008/01/19/virtualizacion-usando-xen/</guid>
		<description><![CDATA[Hasta hace unos dias solo habia probado la Virtualizacion usando vmware pero hace unos dias me puse a trabajar e investigar sobre Xen y hay varias cosas que me llamaron la atencion, su modo de trabajar, los conceptos que emplea, la facilidad y versatilidad, etc. Bueno, en resumen Xen es una herramienta de virtualizacion que [...]]]></description>
			<content:encoded><![CDATA[<p>Hasta hace unos dias solo habia probado la <a href="http://es.wikipedia.org/wiki/Virtualizacion">Virtualizacion</a> usando <a href="http://www.vmware.com">vmware</a> pero hace unos dias me puse a trabajar e investigar sobre <a href="http://es.wikipedia.org/wiki/Xen">Xen</a> y hay varias cosas que me llamaron la atencion, su modo de trabajar, los conceptos que emplea, la facilidad y versatilidad, etc.</p>
<p><span id="more-44"></span></p>
<p>Bueno, en resumen Xen es una herramienta de virtualizacion que usa el mecanismo de <a href="http://en.wikipedia.org/wiki/Paravirtualization">paravirtualizacion</a> y nos permite cambiar de un sistema operativo a otro en caliente (sin necesidad de apagar o reiniciar la maquina), ademas de cambiarle varias configuraciones (por ejemeplo la ram) en caliente tambien. A nivel de procesador, el sistema operativo se ejecuta en una capa o nivel superior a la de los programas, bueno, Xen despacha de ese nivel al sistema operativo quedando el en ese nivel. Se dice que el sistema operativo es el supervisor de los programas que se ejecutan, pues Xen es nuestro Hipervisor (que esta por sobre el supervisor), es quien &#8216;supervisa&#8217; al supervisor, es decir, un rango mas alto &#8230; Se podria decir que el sistema operativo se ejecuta sobre Xen.</p>
<p>Por ejemlpo, cuando uno esta en un sistema operativo puede abrir y cerrar aplicaciones, iamgen eso pero abriendo y cerrando segun el antojo de cada uno los sistemas operativos.<br />
Esta caracteristica se logra modificando el codigo fuente de nuestro sistema operativo, por lo que solo en sistemas de codigo abierto se puede instalar, como el Kernel de Linux. Intel y AMD han colaborado con todo este desarrollo de la<br />
virtualizacion y como es en el caso de Windows, que es un sistema de codigo cerrado, no se podria virtualizar. Pues Intel y AMD desarrollaron procesadores con capacidad de correr el sistema operativo en otro nivel, sin necesidad de modificar el codigo, dando la posibilidad de virtualizar cualquier sistema operattivo.</p>
<p>Una de las preguntas que me hicieron fue</p>
<blockquote><p> O sea, Xen en Linux funciona en cualquier pc, Xen con Windows requiere<br />
procesadores con soporte para virtualización&#8230; Eso es?</p></blockquote>
<p>En teoria, segun lo dicho anteriormente deberia ser asi, ya que Microsoft no da acceso al codigo fuente de Windows, pero si <a href="http://www.kriptopolis.org/microsoft-abraza-a-xen-para-virtualizar-linux-en-windows">Microsoft colaboro con este proyecto </a>para que si se pudiera (a ellos tambien les ayudaria).</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%2Fdocumentacion%2Fvirtualizacion-usando-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/documentacion/virtualizacion-usando-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/documentacion/virtualizacion-usando-xen/"  data-text="Virtualizacion usando 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/documentacion/virtualizacion-usando-xen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

