Convertir Ext3/Ext4 en Btrfs

Cada vez más -escucharéis hablar- sobre este sistema de archivo (Btrfs) , no voy a explicar sus ventajas y desventajas , eso quedará para otra ocasión , solo recordad que , no todo es velocidad y que cada vez más la seguridad y las herramientas ante una posible corrupción de datos son primordiales en un mundo como el actual. Además vemos como las principales distros apuestan por el  –incluso el gigante Google– , así que haremos un pequeño tutorial de como cambiar el sistema de archivos de Ext3/Ext4 a Btrfs , sin formatear el pc.

Lo aplicaré a mi distro de cabecera , Archlinux , pero será casi igual para otras distros.

En principio hacer la recomendación primordial , ¡ salva tus datos antes de acometer una tarea tan importante ! el riesgo cero no existe , y si quieres , puedes practicar antes en una máquina virtual y/o entorno controlado que no te cause ningún problema.

Necesitaremos un cd/usb con la imagen de Archlinux , una vez ahí arrancamos desde el cd/usb , una aclaración de las muchas que habrá , se deberá hacer esto desde una imagen que sea de los mismos bits que el sistema de archivos. Si tenemos un sistema de archivos instalado en 64 bits , no deberemos usar una imagen de 32 bits…

Ya en la terminal deberemos de asegurarnos que partición vamos a transformar

# fdisk -l

Y la terminal nos devolverá nuestro sistema de discos , deberemos de asegurarnos que partición vamos a transformar , supongamos un caso donde /root está en sda1 y /home está en sda2 , que cada uno mire por los suyos esto es solo un ejemplo.

Transformar una partición /home es muy sencillo:

#  btrfs-convert   /dev/sda2

Una vez que que btrfs nos dice que todo se hizo sin errores , solo nos queda borrar el subvolumen que btrfs ha creado para hacer la transformación:

# btrfs subvolume  delete  /ext2_saved

Después es recomendable hacer un balance de carga :

# btrfs balance start /dev/sda2

Comprobamos:

# btrfs balance status /dev/sda2

Y con esto ya tendríamos un sistema de archivos Ext3/4 transformado en Btrfs.

Transformar una partición /root :

En el caso de /root  debemos seguir el ejemplo anterior:

# btrfs-convert  /dev/sda1

Y en si , la transformación estaría hecha, pero  nuestro sistema no arrancaría , entonces tendremos que montarlo y hacer tres cosas.

¿Cómo montamos? Pues podemos usar/hacer chroot como se ha hecho hasta ahora , sin embargo ya que utilizamos systemd , tenemos una herramienta que nos facilitará la tarea , su nombre es systemd-nspawn , así no tendremos la necesidad de montar  proc , sys , dev , dev/pts …systemd-nspawn creará un proceso init nuevo , como si iniciáramos un sistema dentro de otro sistema.

# mkdir  /mnt/arch

# mount /dev/sda1  /mnt/arch

Si tenemos  /boot en una partición separada , ya sea por tema UEFI o simplemente por costumbre también la montaremos:

#mount /dev/sda3  /mnt/arch/boot

Nos pondremos sobre ella:

# cd  /mnt/arch

Y correremos la jaula:

# systemd-nspawn

Verificaremos las UUID de los discos:

# blkid

Hemos dicho que vamos a hacer tres cosas:

1.- Verificaremos el etc/fstab , yo lo pondré con nano , pero que cada uno use el editor de su preferencia

# nano /etc/fstab

Cambiaremos el tipo del archivo , donde pone ext4 pondremos btrfs .

Si usamos una unidad SSD la línea puede quedar así , después de la UUID (Que habremos verificado con la salida de blkid por si la ha cambiado) o la dirección física  y punto de montaje:

btrfs  rw,noatime,discard,ssd,autodefrag,compress=lzo,space_cache 0   0

Si usamos un HDD puede quedar así :

btrfs  rw,noatime,autodefrag,compress-force=lzo,space_cache  0  0

2.- Regeneraremos el initramfs :

# mkinitcpio -p  linux

3.-Actualizaremos Grub:

#grub-mkconfig  -o /boot/grub/grub.cfg

Y por último eliminamos el subvolumen de apoyo y balanceamos la partición /root:

# btrfs subvolume delete /ext2_saved

# btrfs balance start /

# btrfs balance status /

Para desmontar…

Tan fácil como hacer

# poweroff

Reiniciamos y , si todo ha ido correctamente tendremos nuestro sistema de archivos en Btrfs , sin reinstalar.

Aclarar y recomendar que si se usa una partición /boot para UEFI en formato fat32 , está no deberá ser transformada en Btrfs ya que el sistema UEFI no la detectaría.

Y por último decir que si bien esta es una operación delicada , un usuario intermedio puede llevarla a cabo.

Sobre si merece la pena  o no… pues tocará leer y valorar si el cambio merece la pena .

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s