Convertir de Ext3/Ext4 a BTRFS (sin formatear)


Re-Publicando porque un error en Blogger la Borró
Si quieres saber más sobre los beneficios de BTRFS lee ésta otra entrada

A ver, como se lo prometí a uno de los lectores hoy les escribiré acerca de cómo convertir sus particiones ext3/ext4 a BTRFS. Se supone que el cambio no debería conllevar ningún riesgo, falla o problema de ninguna índole, Quien quiera respaldar sus archivos importantes antes de hacerlo adelante, mejor tener un "Plan B" en caso de emergencia, Veamos:

Para empezar necesitamos preparar nuestro sistema a convertir para que reconozca y pueda utilizar/trabajar con particiones BTRFS (Esto porque si no, podría no arrancar tras convertirlo) Lo único que necesitamos es instalar las "utilidades btrfs" en dicho sistema, No estoy seguro pero me parece que en todas las distros el paquete se llama "btrfs-progs" para más seguridad busca con tu gestor de paquetes gráfico "btrfs" e instala los paquetes requeridos (te debería aparecer sólo uno y no más de 3) por ejemplo, para instalarlo en un sistema Fedora utilizaríamos:

su -c 'yum -y install btrfs-progs'

Ten en cuenta que si la versión de tu distro es de hace más de un año, posiblemente no tenga paquetes de soporte para BTRFS.

Necesitarás usar un LiveCD para hacer el cambio, puesto que necesitaremos trabajar con el sistema desmontado y algunos programas. Aquí les mostraré cómo lo haríamos con un LiveCD de Fedora LXDE el cual pueden conseguir desde aquí (Usaremos la versión de 32 Bits, no necesitamos nada especializado)

NOTA a partir de aquí, todo lo que hagamos en terminal deberá ser como root directamente

Tras descargar y crear el LiveCD, arrancamos la PC desde el mismo y una vez entrando al escritorio (estando conectados a una red cableada de preferencia porque forzosamente necesitaremos Internet) abrimos una consola y corremos:

1 su -
2 su -c 'yum -y install btrfs-progs gparted gedit'
3 gparted

El primer comando nos dará acceso de Root a la terminal luego instalaremos las utilidades btrfs en el sistema Live además de Gparted (también gedit) y al final abriremos gparted, donde tendremos que ubicar la ruta de nuestro disco duro en el lado superior derecho donde aparecen los dispositivos de almacenamiento. (Obviamente el más grande es el disco duro), lo seleccionamos y en la tabla de particiones buscamos la partición más grande en ext3/ext4 que será la del sistema operativo que usamos a diario, si tenemos como punto de montaje "/boot" en alguna partición más pequeña de ext3/ext4 a ésa NO LE HACEMOS NADA. Si tuviéramos "/home" ésta otra por ejemplo también podemos convertirla a btrfs sin problemas. Les dejo una imagen de mi Gparted para que se den una idea de cómo se ve todo:


En mi caso yo tengo la partición "ext4" encriptada y aparece con otro sistema de archivos. Si ésto no fuera así, aparecería en "Ext4" y ésa sería la que convertiría, como no tengo partición "/home" aparte pues no la convierto y la "/boot" la dejo en paz usando ext4. En mi caso, la partición convertible como podrán apreciar es la "/dev/sda5"; Tras identificar la que vamos a convertir le damos un click con el botón secundario en la lista y seleccionamos "Desmontar" en caso de que no esté desmontada ya. Para convertir la partición, nos regresamos a consola y presionamos "Ctrl+C" para cerrar Gparted y volver al acceso de root, corremos lo siguiente para iniciar la conversión:

btrfs-convert /dev/sdXx

Donde "/dev/sdXx" Corresponde a la letra y número asignados a la partición en su ruta como podremos ver dentro de la lista de Gparted. La conversión puede tardar 1 hora ó 2 más/menos dependiendo de la potencia del equipo y el tamaño de la partición convertida, sean pacientes y NO CIERREN la consola o cancelen la orden hasta que nos devuelva el prompt de root otra vez.

Una vez terminada la conversión, corremos el comando:

blkid

En terminal, nos soltará las "UUID" y los Tipos de las particiones que tenemos en el disco duro. Ubicamos la nueva partición convertida y después hacemos un:

sudo gedit

y con gedit abierto, navegamos hasta el archivo "/etc/fstab" (El que está dentro de nuestro disco duro y no el del LiveCD) Donde verificaremos que el UUID de "/boot" (si tenemos dicha partición) coincida y aparezca en la terminal, también, si los UUID de nuestras particiones convertidas son diferentes en la terminal a los del archivo (si es que están presentes en dicho archivo) los editamos en el archivo y después renombraremos el sistema de archivos de "/" , "/home" o bien, las que hayamos convertido (de ext3/ext4 a btrfs) en los campos adecuados reemplazando los valores anteriores. Un Ejemplo gráfico:

Como verán, la partición "/" (azul) dice "btrfs" (morado)

También tendremos que editar nuestra configuración del GRUB. para ésto, hacemos de nuevo un "sudo gedit" y desde gedit navegamos hasta el archivo "/boot/grub/grub.conf" (De nuevo, el de nuestro disco duro, no el del LiveCD) donde corroboraremos los datos de los UUID y los sistemas de archivos en nuestra lista de kernels con los del comando "blkid" Por ejemplo, si el UUID del archivo "grub.conf" es diferente al que aparece en la terminal con "blkid" tendremos que cambiar el del archivo por el de la terminal, de igual manera si como sistema de archivos tenemos "Ext3/Ext4" Lo cambiaremos por BTRFS, la "tira" que debemos checar es siempre la del último kernel instalado y nada más, ésta configuración la haremos sólo una vez en la vida, un ejemplo gráfico de la tira a revisar:


Si estamos convirtiendo a BTRFS un sistema FEDORA con Ext4 (o cualquier linux que use SELinux) Tenemos que hacer lo siguiente para evitar problemas con SELinux (activado o no, tenemos que hacerlo para "reinicializar su contexto") lo que haremos será:

1. su -
2. sudo gedit 

Y desde gedit ya abierto, crearemos un nuevo archivo vacío con el nombre ".autorelabel" (sin las comillas) El cual guardaremos en la carpeta RAÍZ de nuestro disco duro (De nuevo: NO en el LiveCD)

Lo siguiente será Reiniciar y entrar en nuestro sistema Linux YA CON BTRFS COMO SISTEMA DE ARCHIVOS!!

En el caso (rarísimo) que tuviéramos el disco duro compartido con otros sistemas y al entrar el el GRUB no nos aparezca nuestra instalación del sistema recién convertido en la lista, tendríamos que entrar desde el LiveCD de nuevo, instalar Gedit en el mismo e invocar de nuevo un "sudo gedit" como root, para navegar hasta "/boot/grub/menu.lst" para corroborar los datos (de las UUID y los Filesystems) con los del comando "blkid" (Como hicimos con "grub.conf")

P.D. Ésto de las conversiones puede ser divertido o bien útil en algunos casos, pero es mucha vuelta a mi gusto... Yo haré instalación Limpia de Fedora 15 para disfrutar de los beneficios de éste nuevo sistema de archivos más fácilmente.