Cómo usar el comando mkfs en Linux

Debes crear un sistema de archivos antes de poder usar cualquier dispositivo de almacenamiento de datos conectado a una computadora Linux.

En este artículo aprenderás cómo usar mkfs y otras utilidades para hacer exactamente eso para todo tipo de sistemas de archivos.

mkfs – Makes File Systems

El comando mkfs crea sistemas de archivos. En otros sistemas operativos, la creación de un sistema de archivos se denomina formateo. Independientemente de su nombre, es el proceso que prepara una partición paras que pueda almacenar datos.

La partición necesita una forma de almacenar archivos, sí. Pero también necesita un mecanismo para almacenar los nombres y ubicaciones de esos archivos, junto con sus metadatos, como la marca de tiempo de creación del archivo, la marca de tiempo modificada del archivo, el tamaño del archivo, etc.

Una vez que mkfs haya creado el marco necesario para manejar y almacenar metadatos de archivos, puedes comenzar a agregar archivos a la partición.

La sintaxis es muy simple. Simplemente le dices a mkfs la partición del dispositivo en la que deseas que se cree el sistema de archivos y qué tipo de sistema de archivos deseas.

Eso es a simple vista. En realidad, es un poco diferente. Desde hace algún tiempo en la mayoría de las distribuciones de Linux, mkfs ha sido un contenedor para mke2fs.

El comando mkfs llama al comando mke2fs y le pasa las opciones que has especificado. Pobre, mke2fs hace todo el trabajo, pero no obtiene nada de la recompensa.

La sintaxis de mkfs se ha actualizado y el formato anterior ha quedado en desuso. Ambas formas funcionarán, pero usaremos el estilo moderno en este artículo.

La elección de los sistemas de archivos

La forma moderna de usar mkfs es escribir “mkfs” y luego el nombre del sistema de archivos que deseas crear.

Para ver los sistemas de archivos que mkfs puede crear, escribe “mkfs” y luego presiona la tecla Tab dos veces. No hay espacio después de “mkfs”, solo presiona Tab dos veces.

La lista de sistemas de archivos disponibles se muestra en la ventana de la terminal. La captura de pantalla es de Ubuntu 18.04 LTS. Otras distribuciones pueden ofrecer más o menos opciones. Repasaremos estos y describiremos cada uno brevemente.

El Journaling (registro diario) es un concepto importante en los sistemas de archivos. El sistema de archivos registra las escrituras pendientes de archivo en un Journaling.

A medida que se escribe en cada archivo, se actualiza este y se actualizan los registros de escritura pendientes. Esto permite que el sistema de archivos repare archivos dañados y parcialmente escritos que han ocurrido debido a un evento catastrófico como un corte de energía.

Algunos de los sistemas de archivos más antiguos no admiten este registro.

Tipos de sistemas de archivos

  • Ext2: El primer sistema de archivos para Linux fue el sistema de archivos MINIX. Más tarde fue reemplazado por el primer sistema de archivos escrito específicamente para Linux, que fue Ext. Ext2 fue el sucesor de Ext. Ext2 no es un sistema de archivos de registro diario.
  • Ext3: este es el sucesor de Ext2, y se puede considerar como Ext2 con registro diario, que protege tu sistema de archivos de la corrupción de datos causada por bloqueos y pérdida repentina de energía.
  • Ext4: Ext4 es el sistema de archivos estándar para muchas distribuciones de Linux. Es un sistema de archivos sólido, probado y confiable. Tiene características que reducen la fragmentación de archivos y se puedes usar con unidades, particiones y archivos más grandes que Ext3.
  • BFS: Este es la abreviatura de Boot File System, que está diseñado para un trabajo y solo uno: para manejar los archivos en la partición de arranque. Es raro que crees un sistema de archivos de arranque a mano. El proceso de instalación de Linux lo hará por ti.
  • FAT: El sistema de archivos File Allocation Table fue diseñado para disquetes por un consorcio de gran renombre den la industria informática. Fue introducido en 1977. La única razón por la que usarías este sistema de archivos sin registro diario, es para la compatibilidad con los sistemas operativos que no son Linux.
  • NTFS: El New Technology File System es un sistema de archivos de registro diario de Microsoft introducido con Windows NT. Fue el sucesor de FAT. La única razón por la que usarías este sistema de archivos es por compatibilidad con sistemas operativos que no sean Linux.
  • MINIX

Creado originalmente por Andrew S. Tanenbaum como una ayuda educativa, MINIX es un sistema operativo “mini-Unix”. Hoy en día, está destinado a proporcionar un sistema operativo de autocuración y tolerante a fallas.

El sistema de archivos MINIX fue diseñado como una versión simplificada del Sistema de archivos Unix. Quizás si estás desarrollando en una computadora Linux y apuntando a una plataforma MINIX, puedes usar este sistema de archivos.

O quizás necesites compatibilidad con una computadora MINIX por otras razones. Los casos de uso para este sistema de archivos en una computadora Linux son bastante escasos, pero está disponible.

  • VFAT: Virtual File Allocation Table, se introdujo con Windows 95 y eliminó el límite de ocho caracteres para los nombres de archivo. Se hicieron posibles nombres de archivo de hasta 255 caracteres. La única razón por la que usarías este sistema de archivos es por compatibilidad con sistemas operativos que no sean Linux.
  • CRAMFS: El Sistema de archivos Compressed ROM es un sistema de archivos de solo lectura diseñado para sistemas integrados y usos especializados de solo lectura, como en los procesos de arranque de las computadoras Linux.

Es común tener un sistema de archivos pequeño y transitorio cargado primero para que los procesos de arranque se puedan iniciar, para preparar el sistema de arranque “real” que se montará.

  • MSDOS: Este sistema de archivos es la abreviatura de Microsoft Disk Operating System. Fue lanzado en 1981, es un sistema de archivos elemental que es tan básico como parece.

La primera versión ni siquiera tenía directorios. Ocupa un lugar destacado en la historia de la informática, pero, más allá de la compatibilidad con los sistemas heredados, hay pocas razones para usarlo hoy.

Una forma segura de experimentar con sistemas de archivos

Crear un sistema de archivos en una partición es destructivo para cualquier dato que ya pueda residir en esa partición. Usar un disco duro de repuesto, o incluso una computadora de repuesto, es la manera perfecta de experimentar con la creación y el uso de diferentes sistemas de archivos. Pero, por supuesto, muchas personas no tienen hardware de repuesto por ahí, esperando para experimentar.

Sin embargo, podemos crear un archivo de imagen (ISO) y crear sistemas de archivos dentro de este.

Una vez que lo montamos, podemos usarlo como si fuera una partición normal. Podemos explorar y experimentar con sistemas de archivos sin necesidad de hardware adicional. Usaremos el comando dd para crear nuestro archivo de imagen.

El archivo de imagen se crea tomando datos de origen y poniéndolos en una imagen. Necesitamos decir de dónde dd obtener sus datos de origen.

Usaremos la opción if (archivo de entrada) para indicarle ddque use /dev/zero como fuente de datos de entrada.

La opción of (archivo de salida) nos permite proporcionar un nombre para el archivo de imagen. Lo llamaremos “howtogeek.img”.

El tamaño del archivo de imagen está determinado por el tamaño y el número de bloques que le agregamos. Estamos utilizando la opción bs (tamaño de bloque) para solicitar un tamaño de bloque de 1 MB y la opción count de solicitar 250 bloques.

Esto nos dará un sistema de archivos de 250 MB. Cuando emitas este comando, ajusta la cantidad de bloques para satisfacer tus necesidades y la capacidad libre que tienes en tu computadora Linux.

El archivo se creó para nosotros y dd informa que hubo 250 bloques creados para nosotros, según lo solicitado.

Podemos mirar nuestro archivo de imagen con ls:

Son 250 MB como se esperábamos, lo cual es alentador.

Crear el sistema de archivos

Elige un sistema de archivos para usar. Regresaremos en el tiempo y usaremos Ext2, que es la primera versión de Ext que mkfs puede crear esta implementación.

Este es un sistema de archivos sin registro diario, así que no almacenes nada valioso sin tener copias de seguridad en otro lugar.

Usamos la variante mkfs.ext2 del comando mkfs, y le decimos que use nuestro archivo de imagen como objetivo.

Se crea el sistema de archivos y se muestran algunos detalles del sistema de archivos.

Como puedes ver en el texto resaltado, aparece mke2fs.

Ahora tenemos un contenedor para el sistema de archivos, el archivo de imagen, que sustituye a un disco duro en este escenario.

Dentro de ese contenedor, hemos creado un sistema de archivos. Ahora necesitamos montar el sistema de archivos para poder usarlo.

Esta es una configuración temporal, por lo que crearemos un punto de montaje dentro de /mnt llamado “geek“. Lo eliminaremos cuando hayamos terminado.

Ahora podemos montar nuestro archivo de imagen.

Necesitamos cambiar la propiedad del archivo del punto de montaje para que tengamos acceso de lectura y escritura.

Y ahora deberíamos poder usar nuestro nuevo sistema de archivos. Cambiemos al sistema de archivos y copiemos algunos archivos.

Esto copiará todos los archivos con una extensión de una sola letra del directorio ~/Documents/Code a nuestro nuevo sistema de archivos. Vamos a ver si fueron copiados.

Los archivos se han copiado, por lo que nuestro sistema de archivos se ha creado, montado y utilizado. O eso creemos. Revisemos dos veces.

Desde nuestro directorio de inicio, desmontaremos el sistema de archivos. Ten en cuenta que solo hay una “n” en umount.

Ahora, si volvemos a /mnt/geek y buscamos archivos, no deberíamos encontrar ninguno porque están dentro de nuestro archivo de imagen, y este se ha desmontado.

Exploración adicional

Ahora que tenemos el proceso resuelto, probar otro sistema de archivos debería ser fácil. Utilizaremos el sistema de archivos MINIX esta vez. En nuestro directorio de inicio, podemos crear un nuevo sistema de archivos dentro de nuestro archivo de imagen existente.

¡Ten cuidado!  Si hay archivos importantes en el sistema de archivos dentro del archivo de imagen, monta el archivo de imagen y recupéralos antes de crear un nuevo sistema de archivos.

Sin ningún indicio de preguntarte “si estás seguro”, el nuevo sistema de archivos se crea sobre el anterior. Podemos montar nuestro archivo de imagen con exactamente el mismo comando que antes:

Cambiemos al nuevo sistema de archivos en /mnt/geek y veamos si podemos crear un archivo.

Y, tan simple y tan rápido como eso, hemos creado un nuevo sistema de archivos, lo hemos montado y podemos usarlo.

Retirar el punto de montaje

Cuando hayas terminado, podemos eliminar el punto de montaje “geek“. Para hacer eso usaremos rmdir.

Malabares con fuego

Con Linux, como con la mayoría de las cosas, aprendes haciendo. El problema con algunos comandos es que son potencialmente destructivos.

El dilema es cómo practicar su uso sin poner en riesgo tu sistema o tus datos.

Ahora tienes un método simple para crear y probar sistemas de archivos con mkfs. Este deja tu computadora intacta.