HowTo:gentoo:InstallEXT4

De Luispa

Migración ReiserFS a EXT4


En este artículo se documenta como migré Root (/), /home y /data desde ReiserFS a EXT4.



A los pocos días de terminar la instalación del sistema operativo y tras observar la gran cantidad de tiempo que tardaba en montar los FS's (>80seg) con ReiserFS (3.6), con particiones de 1.5TB, sin que éstas tuviesen todavía datos, decidí que tenía que cambiar, el futuro sólo podía ser ir a peor.

Tras investigar descubrí que estos tiempos están documentados como algo que es normal en reiserFS y que no tiene solución (versión 3.6). La única opción que me quedaba era optar por Reiser4, XFS, JFS o EXT4. He decidido ir por EXT4.


¿Por qué EXT4?

EXT4 es el "cuarto sistema de archivos extendido", un sistema de archivos con soporte de Journaling que lleva desarrollandose desde Octubre de 2006 y que el pasado 25 de diciembre de 2008 se liberó sin la etiqueta de "experimental" en el kernel de Linux 2.6.28.

Sus principales mejoras son:

   * Soporte de volúmenes de hasta 1024 PiB.
   * Soporte de extensiones añadidas
   * Menor uso de la CPU.
   * Mejoras en la velocidad de lectura y escritura.


¿Un poco arriesgado?, pues quizá sí... se acaba de marcar estable en el kernel, la versión 2.6.28 en gentoo-sources sigue marcada como ~amd64 e incluso voy a actualizar las "tools" e2fsprogs a la última versión también ~amd64...


Objetivo:

====================== ANTES ====================================    == DESPUES ==
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3             458G  7.1G  428G   2% /            reiserfs    ==>   ext4
udev                   10M  128K  9.9M   2% /dev         
/dev/sdb1             1.4T  930M  1.3T   1% /home        reiserfs    ==>   ext4
/dev/sdc1             1.4T  4.2G  1.3T   1% /data        reiserfs    ==>   ext4
tmpfs                 3.0G     0  3.0G   0% /dev/shm


Los pasos a realizar son:

  • Hacer que el kernel actual sea EXT4 Compatible
  • Convertir /data
    • Backup de /data en /home/backup-fs-data.tgz
    • Reformatear /data como EXT4 y recuperar el backup
  • Convertir /home
    • Backup de /home en /data/backup-fs-home.tgz
    • Reformatear /home como EXT4 y recuperar el backup
  • Convertir /
    • Boot con LiveCD
    • Backup de / en /data/backup-fs-root.tgz
    • Reformatear / como EXT4 y recuperar el backup

Nuevo e2fsprogs

  • Selecciono la última versión de e2fsprogs
bolica linux # echo "=sys-libs/e2fsprogs-libs-1.41.4 ~amd64" >> /etc/portage/package.keywords
bolica linux # echo "=sys-fs/e2fsprogs-1.41.4 ~amd64" >> /etc/portage/package.keywords
bolica linux # emerge -v e2fsprogs


Nuevo Kernel

Primero voy a hacer a mi Kernel del Root (/) ya instalado que sea "EXT4 compatible", así que me bajo el kernel disponible a fecha de hoy (6/2/09) que soporta por primera vez de forma estable EXT4, se trata de la versión 2.6.28.


  • Descargo el nuevo kernel 2.6.28
bolica linux # echo "=sys-kernel/gentoo-sources-2.6.28-r1 ~amd64" >> /etc/portage/package.keywords
bolica linux # emerge -v gentoo-sources

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  NS   ] sys-kernel/gentoo-sources-2.6.28-r1 [2.6.27-r8] USE="-build -symlink" 51,532 kB

Total: 1 package (1 in new slot), Size of downloads: 51,532 kB
:
:


  • Migro al nuevo kernel 2.6.28
bolica ~ # cd /usr/src
bolica src # rm linux
bolica src # cp linux-2.6.27-gentoo-r8/.config linux-2.6.28-gentoo-r1/
bolica src # ln -s linux-2.6.28-gentoo-r1/ linux
bolica src # cd linux
bolica linux # make oldconfig

NOTA: Este proceso repasa todas las opciones NUEVAS del kernel y te pregunta qué quieres hacer con ellas. 
      Fui pulsando ENTER a todas dejando su respuesta por defecto (en la mayoría es N)


  • Entro en la configuración del kernel para activar EXT4
Configuración del kernel de Linux: Opciones para EXT4
 Enable the block layer --->
  -*- Enable the block layer
  [*]   Support for tracing block io actions
 
 FileSystems --->
  <*> The Extended 4 (ext4) filesystem 
  [ ]   Enable ext4dev compatibility
  [*]   Ext4 extended attributes
  [*]     Ext4 POSIX Access Control Lists
  [*]     Ext4 Security Labels 


  • Compilo el nuevo kernel
bolica ~ # cd /usr/src/linux
bolica linux # make && make modules_install
:
bolica linux # cd /usr/src


  • Compilo soporte para Realtek RTL8111D driver del fabricante. (Recordemos que esto hay que hacerlo siempre que se compile el kernel)
bolica src # cd /usr/src/Realtek/r8168-8.010.00
bolica src # make clean modules
bolica src # make install
bolica src # depmod -a


  • Compilo de nuevo los drivers de nvidia (Recordemos que esto hay que hacerlo siempre que se compile el kernel)
bolica src # cd /usr/src
bolica src # emerge -v nvidia-drivers
bolica src # eselect opengl set nvidia


Activación kernel 2.6.28

  • Instalo el nuevo kernel
bolica src # cd /usr/src/linux
bolica linux # mount /boot
bolica linux # cp arch/x86_64/boot/bzImage /boot/bzImage-2.6.28-gentoo-r1
bolica linux # cp System.map /boot/System.map-2.6.28-gentoo-r1
  • Modifico /boot/grub/grub.conf
bolica linux # nano /boot/grub/grub.conf 
 
default 0
timeout 10

title=Gentoo Linux 2.6.28-gentoo-r1     
root   (hd0,0)
kernel (hd0,0)/bzImage-2.6.28-gentoo-r1 root=/dev/sda3

title=Gentoo Linux 2.6.27-gentoo-r8
root   (hd0,0)
kernel (hd0,0)/bzImage-2.6.27-gentoo-r8 root=/dev/sda3


  • Rearranco el sistema y selecciono la versión 2.6.28

Conversión de /data y /home

  • Parar Window Manager, X, NFS, etc...
  • 1) Salir de Gnome o KDE
Pulsar CTRL-ALT-F1
# /etc/init.d/xdm stop
# /etc/init.d/xfs stop
  • 2) Parar NFS
# /etc/init.d/nfs stop
  • 3) Dejar preparado /etc/fstab
# nano /etc/fstab
# Disco 1 de 1500GB (/home)
/dev/sdb1		/home		ext4	noatime		0 2

# Disco 2 de 1500GB (/data)
/dev/sdc1		/data		ext4	noatime		0 2


Backup /data y recrearlo como EXT4

  • Backup de /data
# cd /
# tar cvpzf /home/backup-fs-data.tgz data/
# umount /data
  • Recrear /data como EXT4 y montarlo
# mkfs.ext4 /dev/sdc1 
# mount /data   (<== se montará como EXT4 porque ya modificamos antes el fstab)


  • Recuperar el backup
# cd /
# tar xvpzf /home/backup-fs-data.tgz
# VERIFICO QUE SE HA RECUPERADO CORRECTAMENTE Y BOORO EL BACKUP (rm /home/backup-fs-data.tgz)

Backup /home y recrearlo como EXT4

  • Backup de /home
# cd /
# tar cvpzf /data/backup-fs-home.tgz home/
# umount /home
  • Recrear /home como EXT4 y montarlo
# mkfs.ext4 /dev/sdb1 
# mount /home   (<== se montará como EXT4 porque ya modificamos antes el fstab)


  • Recuperar el backup
# cd /
# tar xvpzf /data/backup-fs-home.tgz
# VERIFICO QUE SE HA RECUPERADO CORRECTAMENTE Y BOORO EL BACKUP (rm /data/backup-fs-home.tgz)

Conversión de Root (/)

  • Rearranco el equipo con el System Rescue CD
  • Monto Root en /mnt/gentoo
# mount /dev/sda3 /mnt/gentoo
  • Monto Data en /mnt/data
# mkdir /mnt/data
# mount /dev/sdc1 /mnt/data
  • Modifico /mnt/gentoo/etc/fstab
# nano /mnt/gentoo/etc/fstab
/dev/sda3		/		ext4	noatime		0 1


  • Backup de Root (/)
# cd /mnt/gentoo
# tar cvplzf /mnt/data/backup-fs-root.tgz . 
  • Recreo Root (/) como EXT4
# umount /mnt/gentoo
# mkfs.ext4 /dev/sda3
# mount /dev/sda3 /mnt/gentoo

  • Recupero el backup
# cd /mnt/gentoo
# tar xvzfp /mnt/data/backup-fs-root.tgz


  • Rearranco
# cd
# umount /mnt/data
# umount /mnt/gentoo
# reboot



Enlaces y Créditos

[1] http://wiki.luispa.com/ Página principal de LuisPa.
[2] http://en.gentoo-wiki.com/wiki/Ext4 La guía de Gentoo para EXT4
[3] http://ext4.wiki.kernel.org/index.php/Ext4_Howto Una guía similar pero no específica para gentoo
[4] http://www.kev009.com/wp/2008/12/how-to-upgrade-to-ext4-in-place/ Cómo hacer un upgrade probado con gentoo y fedora


Volver a la página anterior

--Luis 21:54 6 feb 2009 (CET)