miércoles, 16 de junio de 2010

How-To: Convertir un Filesystem Ext3 a Ext4


Ext4 ha demostrado ser un sistema de ficheros con mucho mejor desempeño que su predecesor, ext3. Si uno necesita hacer pruebas, es posible montar una partición ext3 como ext4, pero carecerá de muchas funciones propias de ext4. Si uno ha venido utilizando Fedora desde la versión 10 y actualizado desde entonces, como es mi caso, las particiones originales quedaron como ext3. Si se ha actualizado a Fedora 13, conviene convertir a ext4 dichas particiones, a fin de lograr un mejor desempeño del sistema. A continuación describo el procedimiento para convertir una partición ext3 a una ext4, con Fedora 13, sin morir en el intento.

Antes de comenzar, debo hacer la advertencia de que si se comete algún error, el sistema puede quedar imposibilitado para funcionar. De deslindo de cualquier responsabilidad si se hace mal uso de este documento.

Por favor, leer y estudiar todo este documento antes de poner en práctica los procedimientos. Este documento asume que se utilizan particiones normales, y que el sistema carece de volúmenes lógicos.

Determinar las particiones del disco duro.

Recomiendo utilizar el mandato df para verificar que dispositivos corresponden a los puntos de montaje del sistema. También puede utilizarse e mandato fdisk con la opción -l.

Preparar un disco vivo (LiveCD o LiveDVD).

Conviene realizar todos los procedimientos desde un disco vivo. De este modo, si algo sale mal, será posible realizar una recuperación de datos. Recomiendo utilizar un disco vivo de Fedora 13.

Respaldar información.

El título lo dice todo. Conviene hacer un respaldo de la información más importante antes de proceder. Un error al realizar los procedimientos puede tener repercusiones dramáticas.

Particularmente para los procedimientos, recomiendo respaldar los ficheros /etc/fstab y /boot/grub/grub.conf en una llave USB o cualquier otro dispositivo de almacenamiento a la mano.

Conocer la herramienta blkid.

El procedimiento de convertir una partición de Ext3 a Ext4 puede cambiar el UUID (Universally Unique Identifier, Identificador Universalmente Único) de la partición. La herramienta blkid sirve para determinar los UUID, y será utilizada posteriormente para determinar el nuevo UUID de la partición que se vaya a modificar. Ejemplo:
blkid /dev/sda1
Lo anterior debe devolver algo similar a lo siguiente:
/dev/sda1: UUID="493b7266-9111-446f-b236-5cd3bfef3467" TYPE="ext4"

Procedimientos.

Iniciar la computadora con el disco vivo de Fedora 13. Ingresar como el usuario predeterminado del disco vivo. Abrir una terminal e ingresar lo siguiente:
su -l root
Siendo que el usuario root en el disco vivo de Fedora 13 carece de clave de acceso, el cambio debe proceder sin solicitar clave de acceso.

Identifique la partición a modificar. para tal fin se pude utilizar el mandato fdisk con la opción -l:
fdisk -l
Vamos a asumir como ejemplo que se se va a cambiar la partición /dev/sda2, la cual hipotéticamente corresponde a la partición /.

Para convertir la partición de Ext3 a Ext4, solo se requiere ejecutar el mandato tune2fs con las opciones -O extents,uninit_bg,dir_index e indicando el dispositivo a modificar (dev/sda2):
tune2fs -O extents,uninit_bg,dir_index /dev/sda2
Una vez terminado lo anterior, se debe ejecutar el mandato fsck con las opciones -fDC0, a fin de corregir algunas de las estructuras modificadas por tune2fs.
fsck -fDC0 /dev/sda2
Si se omite lo anterior, el sistema estará imposibilitado para montar esta partición.

A continuación, se debe determinar el nuevo UUID de la partición /dev/sda2:
blkid /dev/sda2

Lo anterior debe devolver algo similar a lo siguiente.
/dev/sda2: LABEL="Fedora" UUID="3694bdf2-9055-4af8-acb9-45472634a7e1" TYPE="ext4"
Se debe tomar nota del nuevo número de UUID, en caso de que este haya cambiado, a fin de actualizar éste en los ficheros /etc/fstab y /boot/grub/grub.conf del sistema operativo en el disco duro

Para realizar el cambio, se debe crear un punto de montaje temporal para la partición /dev/sda2, como por ejemplo /mnt/fedora:
mkdir /mnt/fedora
Luego se procede a montar /dev/sda2 en /mnt/fedora:
mount /dev/sda2 /mnt/fedora
Es importante montar también /dev/sda1, partición que por lo general corresponde a /boot.
mount /dev/sda1 /mnt/fedora/boot
utilizar gedit y modificar los ficheros /mnt/fedora/etc/fstab y /mnt/fedora/boot/grub/grub.conf.

En el fichero /mnt/fedora/etc/fstab se debe actualizar el UUID de la partición correspondiente a /, y el formato de la misma como ext4.
#
# /etc/fstab
# Created by anaconda on Tue Dec 15 13:42:13 2009
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=3694bdf2-9055-4af8-acb9-45472634a7e1 / ext4 defaults 1 1
UUID=493b7266-9111-446f-b236-5cd3bfef3467 /boot ext3 defaults 1 2
UUID=2e7efa7f-ebaf-4202-944d-8b115f373c07 /home ext3 defaults 1 2
UUID=7a0811e4-5bd2-4309-83ef-53d0ec9011ed swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
Ejemplo del fichero /mnt/fedora/boot/grub/grub.conf.

# grub.conf generated by anaconda


#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
#        all kernel and initrd paths are relative to /boot/, eg.
#        root (hd0,0)
#        kernel /vmlinuz-version ro root=/dev/sda2
#        initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=0
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
password --md5 $1$M1qJ4oR.$EFT/LInF5r.At1hKPFgQd1
title Fedora (2.6.33.5-112.fc13.i686)
        root (hd0,0)
        kernel /vmlinuz-2.6.33.5-112.fc13.i686 ro root=UUID=3694bdf2-9055-4af8-acb9-45472634a7e1 LANG=es_MX.UTF-8 KEYBOARDTYPE=pc KEYTABLE=es rhgb quiet
        initrd /initramfs-2.6.33.5-112.fc13.i686.img
Luego de haber terminado lo anterior, se debe reiniciar el sistema para verificar que todo funcione correctamente.

Si todo funcionó correctamente, se pude repetir el procedimiento para cambiar de ext3 a ext4 otras particiones.

Advertencia respecto de convertir a ext4 la partición correspondiente a /boot.

Si alguien realiza este procedimiento con Fedora 11, éste requiere que /boot esté en una partición con formato ext3, por lo cual dicha partición debe dejarse como está, en ext3.

En el caso de Fedora 12 y Fedora 13, éstos pueden utilizar ext4 en la partición /boot, sin problemas.

Sí se convierte a ext4 la partición /boot, va a requerirse reinstalar grub. Para este fin, recomiendo iniciar con el disco vivo y realizar el siguiente procedimiento, asumiendo, para este ejemplo, que/boot corresponde a /dev/sda1 y / corresponde a /dev/sda2:
su -l
tune2fs -O extents,uninit_bg,dir_index /dev/sda1
fsck -fDC0 /dev/sda1
mkdir /mnt/fedora
mount /dev/sda2 /mnt/fedora
mount -o bind /dev /mnt/fedora/dev
mount -o bind /sys /mnt/fedora/sys
mount -o bind /proc /mnt/fedora/proc
chroot /mnt/fedora
mount /dev/sda1 /boot
grub-install /dev/sda
exit
Nota: El montado de /boot debe hacerse después de hacer chroot /mnt/fedora/, ya que de de otro modo fallará la reinstalación de grub.

Antes de reiniciar, es importante verificar que el UUID de /boot sea el mismo especificado en los ficheros /mnt/fedora/boot/grub/grub.conf y /mnt/fedora/etc/fstab. Utilizar el mandado blkidcomo se especifica arriba.

Comentarios finales.

Un sistema con todas sus particiones en formato ext4 mejora el tiempo de arranque de el mismo sistema con ext3. En el caso de dos Acer Aspire One A150, la mejoría fue de 17 segundos menos en el arranque del sistema, lográndose hasta 28 MB/s contra 10 MB/s del mismo sistema con ext3.

Más información: Ext4 Wiki

1 comentario:

  1. Es muy útil para los usuarios contar con este tipo de información para saber a qué atenerse antes de proceder a la recuperación de datos, aunque hay que tener mucho cuidado y estar muy seguro de lo que se hace antes de llevar a cabo estos procesos, ya que pueden derivar en una pérdida de datos irreversible.

    ResponderEliminar