Gestión de sistemas de archivos y discos

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

¡Bienvenido a este laboratorio sobre Gestión de Sistemas de Archivos y Discos en Linux! Este laboratorio está diseñado para principiantes que están comenzando a explorar el mundo de la administración de sistemas Linux. Lo guiaremos a través de comandos y conceptos esenciales relacionados con la gestión del espacio en disco, la creación de discos virtuales y el mantenimiento de sistemas de archivos. Al final de este laboratorio, tendrá experiencia práctica con las herramientas fundamentales de gestión de discos en Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux/BasicFileOperationsGroup -.-> linux/head("File Beginning Display") linux/FileandDirectoryManagementGroup -.-> linux/mkdir("Directory Creating") linux/TextProcessingGroup -.-> linux/sort("Text Sorting") linux/SystemInformationandMonitoringGroup -.-> linux/df("Disk Space Reporting") linux/SystemInformationandMonitoringGroup -.-> linux/du("File Space Estimating") linux/SystemInformationandMonitoringGroup -.-> linux/mount("File System Mounting") linux/SystemInformationandMonitoringGroup -.-> linux/dd("File Converting/Copying") linux/UserandGroupManagementGroup -.-> linux/sudo("Privilege Granting") subgraph Lab Skills linux/head -.-> lab-17999{{"Gestión de sistemas de archivos y discos"}} linux/mkdir -.-> lab-17999{{"Gestión de sistemas de archivos y discos"}} linux/sort -.-> lab-17999{{"Gestión de sistemas de archivos y discos"}} linux/df -.-> lab-17999{{"Gestión de sistemas de archivos y discos"}} linux/du -.-> lab-17999{{"Gestión de sistemas de archivos y discos"}} linux/mount -.-> lab-17999{{"Gestión de sistemas de archivos y discos"}} linux/dd -.-> lab-17999{{"Gestión de sistemas de archivos y discos"}} linux/sudo -.-> lab-17999{{"Gestión de sistemas de archivos y discos"}} end

Visualización del uso del disco con df

El comando df (disk free, espacio libre en disco) es la herramienta ideal para comprobar el uso del espacio en disco en su sistema Linux. Exploremos cómo usarlo:

  1. Abra su terminal. Debería estar en el directorio /home/labex/project. Si no está seguro, siempre puede comprobar su directorio actual con el comando pwd.

  2. Ejecute el siguiente comando para ver el uso del disco:

    df

    Verá una salida similar a esta:

    Filesystem     1K-blocks      Used Available Use% Mounted on
    overlay         20971520    128744  20842776   1% /
    tmpfs              65536         0     65536   0% /dev
    tmpfs            3995004         0   3995004   0% /sys/fs/cgroup
    shm                65536         0     65536   0% /dev/shm
    /dev/vdb       104806400  57754052  47052348  56% /etc/hosts

    No se preocupe si esto parece confuso al principio. Analicémoslo:

    • Filesystem: Esta columna muestra el nombre del disco o partición.
    • 1K-blocks: Este es el tamaño total del sistema de archivos en bloques de 1 kilobyte.
    • Used: Esto muestra cuánto espacio está actualmente en uso.
    • Available: Esto muestra cuánto espacio libre queda.
    • Use%: Esto muestra el porcentaje del sistema de archivos que está en uso.
    • Mounted on: Esto muestra dónde en el árbol de directorios está montado el sistema de archivos.
  3. Ahora, hagamos que esta salida sea más legible para humanos. Ejecute:

    df -h

    La opción -h significa "human-readable" (legible para humanos). Verá una salida como esta:

    Filesystem      Size  Used Avail Use% Mounted on
    overlay          20G  126M   20G   1% /
    tmpfs            64M     0   64M   0% /dev
    tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
    shm              64M     0   64M   0% /dev/shm
    /dev/vdb        100G   56G   45G  56% /etc/hosts

    Mucho mejor, ¿verdad? Ahora los tamaños están en GB y MB, lo que es más fácil de entender.

  4. Si desea comprobar el espacio en un sistema de archivos específico, puede especificarlo:

    df -h /dev/vdb

    Esto mostrará información solo para el sistema de archivos /dev/vdb.

El comando df es increíblemente útil para comprobar rápidamente cuánto espacio en disco le queda. Si alguna vez tiene problemas en los que su sistema dice que se está quedando sin espacio, df suele ser el primer comando que usará para investigar.

Examinando los tamaños de directorios con du

Si bien df nos da una visión general del uso del disco, a veces necesitamos profundizar más. Ahí es donde entra du (disk usage, uso de disco). Nos ayuda a entender qué directorios y archivos están ocupando más espacio.

  1. Comencemos usando du en su forma más simple. Ejecute:

    du ~

    Verá una larga lista de números y nombres de directorios. Cada número representa el tamaño del directorio en kilobytes. Esto puede resultar abrumador, así que hagámoslo más manejable.

  2. Para una salida más legible, use la opción -h:

    du -h ~

    La opción -h, al igual que con df, hace que la salida sea legible para humanos. Verá tamaños en KB, MB o GB según corresponda.

  3. A menudo, solo queremos saber el tamaño total de un directorio. Para esto, use:

    du -sh ~

    Aquí, -s significa "resumir" y ~ representa su directorio personal. Este comando le mostrará el tamaño total de todo en su directorio personal.

  4. Para ver los tamaños de los subdirectorios inmediatos en su directorio personal, use:

    du -h --max-depth=1 ~

    Esto muestra el tamaño de cada subdirectorio a un nivel de profundidad. La opción --max-depth=1 limita hasta qué punto du recorrerá los subdirectorios.

  5. Comprobemos el tamaño de los elementos en su directorio personal:

    du -sh ~/*

    Esto mostrará el tamaño de cada elemento directamente bajo su directorio personal.

  6. Aquí hay un comando poderoso para encontrar los elementos más grandes en su directorio personal:

    du -h ~ | sort -rh | head -n 10

    Analicemos esto:

    • du -h ~ enumera todos los archivos y directorios en su directorio personal con sus tamaños
    • sort -rh ordena esta lista en orden inverso (los más grandes primero) y en formato legible para humanos
    • head -n 10 muestra solo las primeras 10 líneas de la salida
    • | es una tubería (pipe), que pasa la salida de un comando como entrada al siguiente

    Este comando es un gran ejemplo de cómo podemos combinar comandos simples de Linux para realizar operaciones más complejas.

El comando du es invaluable cuando se intenta liberar espacio en disco. Te ayuda a identificar qué directorios o archivos están ocupando más espacio, para que sepas dónde centrar tus esfuerzos de limpieza.

Creación y gestión de un disco virtual

Ahora vamos a crear un archivo de disco virtual, formatearlo con un sistema de archivos y montarlo. Este proceso es similar a configurar un nuevo disco duro, pero lo haremos todo dentro de un archivo.

  1. Primero, creemos un disco virtual de 256MB utilizando el comando dd:

    dd if=/dev/zero of=virtual.img bs=1M count=256

    Esto es lo que hace este comando:

    • if=/dev/zero: El archivo de entrada es /dev/zero, un archivo especial que proporciona tantos bytes nulos como se lean de él.
    • of=virtual.img: El archivo de salida es virtual.img.
    • bs=1M: Establece tanto el tamaño de bloque de entrada como el de salida en 1 megabyte.
    • count=256: Copia solo 256 bloques de entrada.

    Esto crea efectivamente un archivo de 256MB lleno de ceros.

  2. Verifiquemos el tamaño del archivo:

    ls -lh virtual.img

    Debería ver que virtual.img tiene exactamente 256MB.

  3. Ahora, formateemos este disco virtual con un sistema de archivos ext4:

    sudo mkfs.ext4 virtual.img

    Este comando crea un sistema de archivos ext4 en nuestro archivo de disco virtual. Verá alguna salida sobre el proceso de creación del sistema de archivos.

  4. A continuación, necesitamos crear un punto de montaje. Este es el directorio donde aparecerán los contenidos de nuestro disco virtual:

    sudo mkdir /mnt/virtualdisk
  5. Ahora podemos montar el disco virtual:

    sudo mount -o loop virtual.img /mnt/virtualdisk

    La opción -o loop es necesaria porque estamos montando un archivo como si fuera un dispositivo de bloque.

  6. Verifiquemos que el disco esté montado:

    mount | grep virtualdisk

    Debería ver una línea que indique que virtual.img está montado en /mnt/virtualdisk.

  7. Ahora que está montado, podemos usarlo como cualquier otro directorio. Creemos un archivo:

    sudo touch /mnt/virtualdisk/testfile
    ls /mnt/virtualdisk

    Debería ver testfile en la lista.

  8. Cuando haya terminado de usar el disco virtual, debe desmontarlo:

    sudo umount /mnt/virtualdisk

Este proceso de creación, formato y montaje de un disco virtual es muy similar a lo que sucede cuando conecta un nuevo disco duro o un pendrive USB. La principal diferencia es que estamos haciendo todo con un archivo en lugar de un dispositivo físico.

Montar un sistema de archivos significa adjuntarlo a un directorio especificado para que el sistema operativo pueda acceder a los datos dentro del sistema de archivos. En este laboratorio, el archivo de imagen de disco virtual se trata como si fuera un disco físico, y el montaje hace que sus contenidos estén disponibles en un directorio particular (por ejemplo, /mnt/virtualdisk).

Desmontar elimina el sistema de archivos de ese directorio, asegurando que el sistema operativo termine todas las operaciones de lectura y escritura pendientes antes de desadjuntarlo. No desmontar correctamente puede provocar la corrupción de datos. Aunque la sintaxis del comando se centra en desmontar el directorio, en realidad, el sistema operativo sabe que este directorio corresponde a la imagen de disco montada.

Gestión de particiones de disco con fdisk

En un sistema real, antes de poder crear un sistema de archivos, a menudo es necesario crear particiones. Aunque no podemos modificar las particiones reales del disco en este entorno virtual, podemos explorar cómo usar fdisk para ver información de las particiones.

  1. Primero, veamos información sobre todas las particiones de disco:

    sudo fdisk -l

    Esto mostrará información sobre todos los dispositivos de disco y sus particiones. Verá detalles sobre el tamaño del disco, el número de sectores y la tabla de particiones.

  2. Ahora, veamos la información de particiones de nuestro disco virtual:

    sudo fdisk -l virtual.img

    Esto le mostrará la tabla de particiones del disco virtual. Dado que creamos el sistema de archivos directamente en la imagen del disco sin particionar, es posible que vea un mensaje que indique que no contiene una tabla de particiones válida.

En un sistema real, utilizaría fdisk de forma interactiva para crear, eliminar o modificar particiones. Aquí está una breve descripción de cómo funcionaría eso:

  • Iniciaría fdisk con sudo fdisk /dev/sdX (reemplace X con la letra adecuada para el disco que desea particionar)
  • Usaría el comando 'n' para crear una nueva partición
  • 'd' eliminaría una partición
  • 't' cambiaría el ID del sistema de una partición (que indica el uso previsto de la partición)
  • 'w' escribiría los cambios y saldría

Recuerde, modificar las particiones puede provocar pérdida de datos, así que siempre tenga cuidado y haga una copia de seguridad de los datos importantes antes de realizar cambios en las particiones del disco.

Fdisk no se limita a mostrar información de particiones. También puede crear, eliminar y modificar particiones de disco de forma interactiva. Si bien es una herramienta esencial para la partición de discos, tenga precaución al usar fdisk para alterar particiones en un sistema que contiene datos críticos; cambios incorrectos pueden provocar pérdida de datos.

Resumen

¡Felicidades! En este laboratorio, has aprendido cómo:

  1. Ver el uso del disco con df
  2. Examinar los tamaños de directorios con du
  3. Crear, formatear, montar y desmontar un disco virtual
  4. Ver información de particiones con fdisk

Estas habilidades forman la base para tareas más avanzadas de administración de sistemas Linux. Son cruciales para gestionar el almacenamiento, solucionar problemas de espacio en disco y mantener la salud del sistema de archivos en sistemas Linux.

Como un reto adicional, intenta escribir un script de shell que encuentre los 10 archivos o directorios más grandes en tu directorio personal y muestre sus tamaños en un formato legible para humanos. Esto combinará varios de los comandos que has aprendido en este laboratorio.

Recuerda, la práctica es la clave para dominar estos conceptos. No dudes en experimentar con estos comandos (en un entorno seguro) para profundizar tu comprensión. ¡Buena suerte en tu viaje de aprendizaje continuo en la administración de sistemas Linux!