Cómo convertir sistemas de ficheros en Linux
Vemos cómo convertir sistemas de ficheros en sistemas GNU/Linux. Aunque los pasos que veremos más adelante se deben realizar con precaución y sobre sistemas de ficheros de los cuales tengamos copia de seguridad previa.
Para ello vamos a ver primero en que consisten los sistemas de ficheros clásicos de GNU/Linux, como son ext2, ext3 y ext4.
Convertir sistemas de ficheros en GNU/Linux
¿Qué son los sistemas ext2, ext3 y ext4?
Se tratan de sistemas de archivos para el núcleo de Linux. Existen diferencias entre ellos, que básicamente son las siguientes:
- Sistema ext2: Es el sistema de ficheros más antiguo de los tres y tiende a estar en desuso. Su principal desventaja es que no implementa el registro de diario o Journaling, que sí poseen las versiones posteriores ext3 y ext4. Utiliza una tabla donde se almacenan los i-nodos. Un i-nodo almacena información del archivo, tanto la ruta, el tamaño y la ubicación. En cuanto a la ubicación, es una referencia a un sector del disco donde están todas y cada una de las referencias a los bloques del archivo fragmentado. Estos bloques son de tamaño especificable cuando se crea el sistema de archivos, desde los 512 bytes hasta los 4 Kib. Este sistema tiene un máximo de 2 TB por archivo, y de 4 para la partición. Para más información: Ext2 en Wikipedia
- Sistema ext3: Se trata de un sistema de archivos con registro de diario o Journaling. Hasta hace no mucho era el sistema de ficheros más utilizado en GNU/Linux, hasta la llegada de su reemplazo más moderno ext4. Aunque su velocidad y escalabilidad es menor que otros sistemas de ficheros competidores como JFS, Reiserfer FS o XFS, tiene la ventaja de actualizar de ext2 a ext3, sin perder los datos almacenados, ni tener que formatear el disco. Tiene un menor consumo de CPU y está considerado más seguro que otros sistemas de ficheros, dado su relativa sencillez y su mayor tiempo de uso. Como principales diferencias con su antecesor encontramos: el registro de diario, índices de árbol para directorios que ocupan múltiples bloques y crecimiento lineal. Puede albergar ficheros hasta 2 TB de tamaño, y 32 para la partición. Para más información: Ext3 en Wikipedia
- Sistema ext4: Se trata de la versión más moderna de los tres. Se anunció en octubre del 2006, como una mejora para ext3. Entre sus principales ventajas encontramos, que soporta volúmenes de hasta 1024 PiB, soporte añadido para extent, utiliza menos CPU y mejora la velocidad de lectura y escritura. Puede llegar a trabajar con ficheros de hasta 16 TB. Ext4 en Wikipedia
Ejemplos de conversión de sistemas de ficheros
Vamos a partir de la base que tenemos tres sistemas de ficheros de prueba, cada uno de ellos utiliza un sistema diferente:
root@servtest:~# egrep fstest /etc/fstab /dev/fstest/fs_1 /mnt/fs1 ext2 defaults 0 2 /dev/fstest/fs_2 /mnt/fs2 ext3 defaults 0 2 /dev/fstest/fs_4 /mnt/fs3 ext4 defaults 0 2 root@servtest:~# df -h | grep -i fstest /dev/mapper/fstest-fs_1 4,0G 24K 3,8G 1% /mnt/fs1 /dev/mapper/fstest-fs_2 3,9G 92K 3,7G 1% /mnt/fs2 /dev/mapper/fstest-fs_4 3,9G 24K 3,7G 1% /mnt/fs3
Una vez tenemos esto claro empezamos a trabajar.
Convertir sistemas de ficheros ext2 a ext3
En todos los casos lo primero que hay que hacer es desmontar el sistema de ficheros que queremos convertir.
umount /mnt/fs1
El siguiente paso es utilizar la herramienta tune2fs
, con el parámetro -j
, ya que así habilitamos el Journaling, del que hemos hablado antes.
tune2fs -j /dev/mapper/fstest-fs_1
Con el resultado:
tune2fs 1.46.2 (28-Feb-2021) Creating journal inode: done
Modificamos la información del fichero /etc/fstab
:
sed -i '16,$ s/ext2/ext3/' /etc/fstab'
Esto es en mi caso, también podemos modificar el fichero a mano utilizando nuestro editor favorito.
Con el resultado:
root@servtest:~# egrep fstest /etc/fstab /dev/fstest/fs_1 /mnt/fs1 ext3 defaults 0 2 /dev/fstest/fs_2 /mnt/fs2 ext3 defaults 0 2 /dev/fstest/fs_4 /mnt/fs3 ext4 defaults 0 2
Una vez hecho esto volvemos a montar el sistema de ficheros:
mount -a
De esta forma ya lo tendríamos listo.
Convertir sistemas de ficheros ext3 a ext2
Al igual que hemos hecho en el ejemplo anterior, vamos a desmontar el FS.
umount /mnt/fs2
Para convertir de ext3 a ext2, utilizaremos otra vez tune2fs, pero esta vez con el parámetro -O ^has_journal
, para así deshabilitar el Journaling, como sigue:
tune2fs -O ^has_journal /dev/mapper/fstest-fs_2
Y nos mostrará:
root@servtest:/# tune2fs -O ^has_journal /dev/mapper/fstest-fs_2 tune2fs 1.46.2 (28-Feb-2021)
Y lo mismo de antes, debemos modificar la información de ext3 a ext2 en el fichero /etc/fstab
como he indicado. y volver a montar:
mount -a #Y listamos root@servtest:/# egrep fstest /etc/fstab /dev/fstest/fs_1 /mnt/fs1 ext3 defaults 0 2 /dev/fstest/fs_2 /mnt/fs2 ext2 defaults 0 2 /dev/fstest/fs_4 /mnt/fs3 ext4 defaults 0 2
Convertir ext2 y ext3 a ext4
Para convertir a ext4 desmontar el punto de montaje que nos interese:
umount /mnt/fs1
En este caso, para convertir ext3 a ext4, utilizamos otra vez tune2fs
pero con la opción -O extents,uninit_bg,dir_index
, tal y como se ve en el ejemplo:
root@servtest:/# tune2fs -O extents,uninit_bg,dir_index /dev/fstest/fs_1 tune2fs 1.46.2 (28-Feb-2021)
En el caso de ext2 a ext4 debemos añadir también el parámetro has_journal
Modificamos el fichero /etc/fstab
y volvemos a montar:
mount -a
También podemos ver la información de los sistemas de ficheros utilizando df -Th
root@servtest:/# df -Th | grep -i fstest /dev/mapper/fstest-fs_4 ext4 3,9G 24K 3,7G 1% /mnt/fs3 /dev/mapper/fstest-fs_2 ext4 3,9G 92K 3,7G 1% /mnt/fs2 /dev/mapper/fstest-fs_1 ext4 4,0G 65M 3,7G 2% /mnt/fs1
De esta manera ya lo tendríamos listo.
Espero que esta entrada os sea de utilidad en algún momento, nos vamos leyendo.