Linux
          Professional Institute Learning Logo.
Pasar al contenido principal
  • Inicio
    • Todos los recursos
    • LPI Learning Materials
    • Conviértete en colaborador
    • Publishing Partners
    • Conviértase en un Publishing Partner
    • Acerca de nosotros
    • FAQ
    • Colaboradores
    • Contáctenos
  • LPI.org
104.1 Lección 1

Tema 101: Arquitectura del Sistema
101.1 Determinar y configurar los ajustes de hardware
  • 101.1 Lección 1
101.2 Arranque del sistema
  • 101.2 Lección 1
101.3 Cambiar los niveles de ejecución / objetivos de arranque y apagar o reiniciar el sistema
  • 101.3 Lección 1
Tema 102: Instalación de Linux y gestión de paquetes
102.1 Diseño del esquema de particionado del disco duro duro
  • 102.1 Lección 1
102.2 Instalar un gestor de arranque
  • 102.2 Lección 1
102.3 Gestión de librerías compartidas
  • 102.3 Lección 1
102.4 Gestión de paquetes Debian
  • 102.4 Lección 1
102.5 Gestión de paquetes RPM y YUM
  • 102.5 Lección 1
102.6 Linux como sistema virtualizado
  • 102.6 Lección 1
Tema 103: Comandos GNU y Unix
103.1 Trabajar desde la línea de comandos
  • 103.1 Lección 1
  • 103.1 Lección 2
103.2 Procesar secuencias de texto usando filtros
  • 103.2 Lección 1
103.3 Administración básica de archivos
  • 103.3 Lección 1
  • 103.3 Lección 2
103.4 Uso de secuencias de texto, tuberías y redireccionamientos
  • 103.4 Lección 1
  • 103.4 Lección 2
103.5 Crear, supervisar y matar procesos
  • 103.5 Lección 1
  • 103.5 Lección 2
103.6 Modificar la prioridad de ejecución de los procesos
  • 103.6 Lección 1
103.7 Realizar búsquedas en archivos de texto usando expresiones regulares
  • 103.7 Lección 1
  • 103.7 Lección 2
103.8 Edición básica de archivos
  • 103.8 Lección 1
Tema 104: Dispositivos, sistemas de archivos Linux y el estándar de jerarquía de archivos
104.1 Creación de particiones y sistemas de archivos
  • 104.1 Lección 1
104.2 Mantener la integridad de los sistemas de archivos
  • 104.2 Lección 1
104.3 Controlar el montaje y desmontaje de los sistemas de archivos
  • 104.3 Lección 1
104.5 Administración de los permisos y los propietarios de los archivos
  • 104.5 Lección 1
104.6 Crear y cambiar enlaces duros y simbólicos
  • 104.6 Lección 1
104.7 Encontrar archivos de sistema y ubicar archivos en el lugar correspondiente
  • 104.7 Lección 1
  1. Tema 104: Dispositivos, sistemas de archivos Linux y el estándar de jerarquía de archivos
  2. 104.1 Creación de particiones y sistemas de archivos
  3. 104.1 Lección 1

104.1 Lección 1

Certificación:

LPIC-1

Versión:

5.0

Tema:

104 Dispositivos, sistemas de archivos Linux, estándar de jerarquía del sistema de archivos

Objetivo:

104.1 Crear particiones y sistemas de archivos

Lección:

1 de 1

Introducción

En cualquier sistema operativo, es necesario particionar un disco antes de poder usarlo. Una partición es un subconjunto lógico del disco físico y la información sobre las particiones se almacena en una tabla de particiones. Esta tabla incluye información sobre el primer y último sector de la partición y su tipo, y más detalles sobre cada partición.

Por lo general, un sistema operativo considera cada partición como un “disco” separado, incluso si todas residen en el mismo medio físico. En los sistemas Windows se les asignan letras como C: (históricamente el disco principal), D: y así sucesivamente. En Linux, cada partición se asigna a un archivo en /dev, como /dev/sda1 o /dev/sda2.

En este tema, aprenderá cómo crear, eliminar, restaurar y cambiar el tamaño de las particiones usando las tres utilidades más comunes (fdisk, gdisk y parted), cómo crear un sistema de archivos en ellas y cómo crear y configurar una partición de intercambio o archivo de intercambio para usar como memoria virtual.

Note

Por razones históricas, a lo largo de esta lección nos referiremos a los medios de almacenamiento como “discos”, aunque los sistemas de almacenamiento modernos, como los SSD y el almacenamiento Flash, no contienen ningún “disco” en absoluto.

Comprensión de MBR y GPT

Hay dos formas principales de almacenar información de partición en discos duros. El primero es MBR (Master Boot Record) y el segundo es GPT (GUID Partition Table).

MBR

Este es un remanente de la época de MS-DOS (más específicamente, PC-DOS 2.0 de 1983) y durante décadas fue el esquema de particionamiento estándar en los PC. La tabla de particiones se almacena en el primer sector del disco, llamado Boot Sector, junto con un cargador de arranque, que en los sistemas Linux suele ser GRUB. Pero MBR tiene una serie de limitaciones que dificultan su uso en sistemas modernos, como la imposibilidad de utilizar discos de más de 2 TB de tamaño y el límite de solo 4 particiones primarias por disco.

GUID

Un sistema de particiones que resuelve muchas de las limitaciones de MBR. No existe un límite explícito en el tamaño del disco, y el número máximo de particiones está limitado sólo por el propio sistema operativo. Se encuentra más comúnmente en máquinas más modernas que usan UEFI en lugar del antiguo BIOS de PC.

Durante las tareas de administración del sistema es muy posible que encuentre ambos esquemas en uso, por lo que es importante saber cómo usar las herramientas asociadas a cada uno para crear, eliminar o modificar particiones.

Gestión de particiones MBR con FDISK

La utilidad estándar para administrar particiones MBR en Linux es fdisk. Esta es una utilidad interactiva basada en menús. Para usarlo, teclee fdisk seguido del nombre del dispositivo correspondiente al disco que desea editar. Por ejemplo, el comando

# fdisk /dev/sda

editaría la tabla de particiones del primer dispositivo conectado a SATA (sda) en el sistema. Tenga en cuenta que debe especificar el dispositivo correspondiente al disco físico, no una de sus particiones (como /dev/sda1).

Note

Todas las operaciones relacionadas con el disco en esta lección deben realizarse como el usuario root (el administrador del sistema), o con privilegios de root usando sudo.

Cuando se invoca, fdisk mostrará un saludo, luego una advertencia y esperará sus comandos.

# fdisk /dev/sda
Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help):

La advertencia es importante. Puede crear, editar o eliminar particiones a voluntad, pero no se escribirá nada en el disco a menos que utilice el comando write (w). Por lo tanto, puede “practicar” sin riesgo de perder datos, siempre que se mantenga alejado de la tecla w. Para salir de fdisk sin guardar los cambios, use el comando q.

Note

Dicho esto, nunca debe practicar con un disco importante, ya que siempre existen riesgos. Utilice un disco externo de repuesto o una unidad flash USB.

Impresión de la tabla de particiones actual

El comando p se usa para imprimir la tabla de particiones actual. La salida sería algo como esto:

Command (m for help): p
Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 sectors
Disk model: CT120BX500SSD1
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x97f8fef5

Device     Boot     Start       End   Sectors   Size Id Type
/dev/sda1            4096 226048942 226044847 107.8G 83 Linux
/dev/sda2       226048944 234437550   8388607     4G 82 Linux swap / Solaris

Aquí está el significado de cada columna:

Device

El dispositivo asignado a la partición.

Boot

Muestra si la partición es “de arranque” o no.

Start

El sector donde comienza la partición.

End

El sector donde termina la partición.

Sectors

El número total de sectores en la partición. Multiplíquelo por el tamaño del sector para obtener el tamaño de la partición en bytes.

Size

El tamaño de la partición en formato “legible por humanos”. En el ejemplo anterior, los valores están en gigabytes.

Id

El valor numérico que representa el tipo de partición.

Type

La descripción del tipo de partición.

Particiones primarias vs extendidas

En un disco MBR, puede tener 2 tipos principales de particiones, primarias y extendidas. Como dijimos antes, solo puede tener 4 particiones primarias en el disco, y si desea que el disco sea “de arranque”, la primera partición debe ser primaria.

Una forma de evitar esta limitación es crear una partición extendida que actúe como contenedor de particiones lógicas. Podría tener, por ejemplo, una partición primaria, una partición extendida que ocupa el resto del espacio en disco y cinco particiones lógicas dentro de ella.

Para un sistema operativo como Linux, las particiones primarias y extendidas se tratan exactamente de la misma manera, por lo que no hay “ventajas” de usar una sobre la otra.

Crear una partición

Para crear una partición, use el comando n. De forma predeterminada, las particiones se crearán al comienzo del espacio no asignado en el disco. Se le pedirá el tipo de partición (primaria o extendida), primer sector y último sector.

Para el primer sector, normalmente puede aceptar el valor predeterminado sugerido por fdisk, a menos que necesite una partición para comenzar en un sector específico. En lugar de especificar el último sector, puede especificar un tamaño seguido de las letras K, M, G, T o P (Kilo, Mega, Giga, Tera o Peta). Por lo tanto, si desea crear una partición de 1 GB, puede especificar +1G como el Último sector y fdisk dimensionará la partición en consecuencia. Vea este ejemplo para la creación de una partición primaria:

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-3903577, default 2048): 2048
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-3903577, default 3903577): +1G
Comprobación de espacio no asignado

Si no sabe cuánto espacio libre hay en el disco, puede usar el comando F para mostrar el espacio no asignado, así:

Command (m for help): F
Unpartitioned space /dev/sdd: 881 MiB, 923841536 bytes, 1804378 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

  Start     End Sectors  Size
2099200 3903577 1804378  881M
Eliminar particiones

Para eliminar una partición, use el comando d. fdisk le pedirá el número de la partición que desea eliminar, a menos que haya sólo una partición en el disco. En este caso, esta partición será seleccionada y eliminada inmediatamente.

Tenga en cuenta que si elimina una partición extendida, también se eliminarán todas las particiones lógicas que contiene.

¡Cuidado con la brecha!

Tenga en cuenta que al crear una nueva partición con fdisk, el tamaño máximo se limitará a la cantidad máxima de espacio contiguo no asignado en el disco. Digamos, por ejemplo, que tiene el siguiente mapa de particiones:

Device     Boot   Start     End Sectors  Size Id Type
/dev/sdd1          2048 1050623 1048576  512M 83 Linux
/dev/sdd2       1050624 2099199 1048576  512M 83 Linux
/dev/sdd3       2099200 3147775 1048576  512M 83 Linux

Luego borra la partición 2 y comprueba si hay espacio libre:

Command (m for help): F
Unpartitioned space /dev/sdd: 881 MiB, 923841536 bytes, 1804378 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

  Start     End Sectors  Size
1050624 2099199 1048576  512M
3147776 3903577  755802  369M

Sumando el tamaño del espacio no asignado, en teoría tenemos 881 MB disponibles. Pero visualice lo que sucede cuando intentamos crear una partición de 700 MB:

Command (m for help): n
Partition type
   p   primary (2 primary, 0 extended, 2 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2,4, default 2): 2
First sector (1050624-3903577, default 1050624):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1050624-2099199, default 2099199): +700M
Value out of range.

Eso sucede porque el espacio contiguo no asignado más grande en el disco es el bloque de 512 MB que pertenecía a la partición 2. Su nueva partición no puede “pasar” la partición 3 para usar parte del espacio no asignado después de ella.

Cambiar el tipo de partición

En ocasiones, es posible que deba cambiar el tipo de partición, especialmente cuando se trata de discos que se utilizarán en otros sistemas operativos y plataformas. Esto se hace con el comando t, seguido del número de la partición que desea cambiar.

El tipo de partición debe ser especificado por su código hexadecimal correspondiente, y puede ver una lista de todos los códigos válidos usando el comando l.

No confunda el tipo de partición con el sistema de archivos que se utiliza en ella. Aunque al principio existía una relación entre ellos, no se puede asumir que esto sea cierto. Una partición de Linux, por ejemplo, puede contener cualquier sistema de archivos nativo de Linux, como ext4 o ReiserFS.

Tip

Las particiones de Linux son del tipo 83 (Linux). Las particiones de intercambio son del tipo 82 (Linux Swap).

Administrar particiones GUID con GDISK

La utilidad gdisk es el equivalente a fdisk cuando se trata de discos particionados GPT. De hecho, la interfaz está modelada a partir de fdisk, con un indicador interactivo y los mismos (o muy similares) comandos.

Impresión de la tabla de particiones actual

El comando p se usa para imprimir la tabla de particiones actual. La salida sería algo como esto:

Command (? for help): p
Disk /dev/sdb: 3903578 sectors, 1.9 GiB
Model: DataTraveler 2.0
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): AB41B5AA-A217-4D1E-8200-E062C54285BE
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 3903544
Partitions will be aligned on 2048-sector boundaries
Total free space is 1282071 sectors (626.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         2099199   1024.0 MiB  8300  Linux filesystem
   2         2623488         3147775   256.0 MiB   8300  Linux filesystem

Desde el principio, notamos algunas cosas diferentes:

  • Cada disco tiene un identificador de disco (GUID) único. Este es un número hexadecimal de 128 bits, asignado al azar cuando se crea la tabla de particiones. Dado que hay 3.4 × 1038 valores posibles para este número, las posibilidades de que 2 discos aleatorios tengan el mismo GUID son bastante escasas. El GUID se puede usar para identificar qué sistemas de archivos montar en el momento del arranque (y dónde), eliminando la necesidad de usar la ruta del dispositivo para hacerlo (como /dev/sdb).

  • ¿Ve la frase Partition table holds up to 128 entries? Así es, puede tener hasta 128 particiones en un disco GPT. Debido a esto, no hay necesidad de particiones primarias y extendidas.

  • El espacio libre aparece en la última línea, por lo que no es necesario un equivalente del comando F de fdisk.

Crear una partición

El comando para crear una partición es n, al igual que en fdisk. La principal diferencia es que además del número de partición y el primer y último sector (o tamaño), también puede especificar el tipo de partición durante la creación. Las particiones GPT admiten muchos más tipos que MBR. Puede consultar una lista de todos los tipos admitidos mediante el comando l.

Eliminar particiones

Para eliminar una partición, escriba d y el número de partición. A diferencia de fdisk, la primera partición no se seleccionará automáticamente si es la única en el disco.

En los discos GPT, las particiones se pueden reordenar u “ordenar” fácilmente para evitar huecos en la secuencia de numeración. Para hacer esto, simplemente use el comando s. Por ejemplo, imagine un disco con la siguiente tabla de particiones:

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         2099199   1024.0 MiB  8300  Linux filesystem
   2         2099200         2361343   128.0 MiB   8300  Linux filesystem
   3         2361344         2623487   128.0 MiB   8300  Linux filesystem

Si elimina la segunda partición, la tabla se convertiría en:

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         2099199   1024.0 MiB  8300  Linux filesystem
   3         2361344         2623487   128.0 MiB   8300  Linux filesystem

Si usa el comando s, se convertiría en:

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         2099199   1024.0 MiB  8300  Linux filesystem
   2         2361344         2623487   128.0 MiB   8300  Linux filesystem

Observe que la tercera partición se convirtió en la segunda.

¿Brecha? ¿Qué brecha?

A diferencia de los discos MBR, al crear una partición en discos GPT, el tamaño no está limitado por la cantidad máxima de espacio contiguo no asignado. Puede utilizar hasta el último bit de un sector libre, sin importar dónde se encuentre en el disco.

Opciones de recuperación

Los discos GPT almacenan copias de seguridad del encabezado GPT y la tabla de particiones, lo que facilita la recuperación de discos en caso de que estos datos se hayan dañado. gdisk proporciona funciones para ayudar en esas tareas de recuperación, a las que se accede con el comando r.

Puede reconstruir un encabezado GPT principal corrupto o una tabla de particiones con b y c, respectivamente, o usar el encabezado principal y la tabla para reconstruir una copia de seguridad con d y e. También puede convertir un MBR a GPT con f y hacer lo contrario con g, entre otras operaciones. Escriba ? En el menú de recuperación para obtener una lista de todos los comandos de recuperación disponibles y descripciones sobre lo que hacen.

Creación de sistemas de archivos

Particionar el disco es solo el primer paso para poder usar un disco. Después de eso, deberá formatear la partición con un sistema de archivos antes de usarla para almacenar datos.

Un sistema de archivos controla cómo se almacenan los datos y cómo se accede a ellos en el disco. Linux admite muchos sistemas de archivos, algunos nativos, como la familia ext (Extended Filesystem), mientras que otros provienen de otros sistemas operativos como FAT de MS-DOS, NTFS de Windows NT, HFS y HFS+ de Mac OS, etc.

La herramienta estándar utilizada para crear un sistema de archivos en Linux es mkfs, que viene en muchos “sabores” según el sistema de archivos con el que necesita trabajar.

Creación de un sistema de archivos ext2/ext3/ext4

El Sistema de archivos extendido (ext) fue el primer sistema de archivos para Linux, y a través de los años fue reemplazado por nuevas versiones llamadas ext2, ext3 y ext4, que actualmente es el sistema de archivos predeterminado para muchas distribuciones de Linux.

Las utilidades mkfs.ext2, mkfs.ext3 y mkfs.ext4 se utilizan para crear sistemas de archivos ext2, ext3 y ext4 respectivamente. De hecho, todas estas “utilidades” existen sólo como enlaces simbólicos a otra utilidad llamada mke2fs. mke2fs modifica sus valores predeterminados de acuerdo con el nombre por el que se le llama. Como tal, todos tienen el mismo comportamiento y parámetros de línea de comando.

La forma de uso más sencilla es:

# mkfs.ext2 TARGET

Donde TARGET es el nombre de la partición donde se debe crear el sistema de archivos. Por ejemplo, para crear un sistema de archivos ext3 en /dev/sdb1 el comando sería:

# mkfs.ext3 /dev/sdb1

En lugar de usar el comando correspondiente al sistema de archivos que desea crear, puede pasar el parámetro -t a mke2fs seguido del nombre del sistema de archivos. Por ejemplo, los siguientes comandos son equivalentes y crearán un sistema de archivos ext4 en /dev/sdb1.

# mkfs.ext4 /dev/sdb1
# 	
Parámetros de línea de comandos

mke2fs admite una amplia gama de opciones y parámetros de línea de comandos. Éstos son algunos de los más importantes. Todos ellos también se aplican a mkfs.ext2, mkfs.ext3 y mkfs.ext4:

-b SIZE

Establece el tamaño de los bloques de datos en el dispositivo en SIZE, que puede ser de 1024, 2048 o 4096 bytes por bloque.

-c

Comprueba el dispositivo de destino en busca de bloques defectuosos antes de crear el sistema de archivos. Puede ejecutar una comprobación completa, pero mucho más lenta, pasando este parámetro dos veces, como en mkfs.ext4 -c -c TARGET.

-d DIRECTORY

Copia el contenido del directorio especificado en la raíz del nuevo sistema de archivos. Útil si necesita “rellenar previamente” el disco con un conjunto predefinido de archivos.

-F

¡Peligro, Will Robinson! Esta opción forzará mke2fs a crear un sistema de archivos, incluso si las otras opciones pasadas a él o al objetivo son peligrosas o no tienen ningún sentido. Si se especifica dos veces (como en -F -F), incluso se puede usar para crear un sistema de archivos en un dispositivo que está montado o en uso, lo cual es muy, muy malo.

-L VOLUME_LABEL

Establecerá la etiqueta de volumen en la especificada en VOLUME_LABEL. Esta etiqueta debe tener un máximo de 16 caracteres.

-n

Esta es una opción realmente útil que simula la creación del sistema de archivos y muestra lo que se haría si se ejecutara sin la opción n. Piense en ello como un modo de “prueba”. Es bueno comprobar las cosas antes de realizar cambios en el disco.

-q

Modo silencioso. mke2fs se ejecutará normalmente, pero no producirá ninguna salida en la terminal. Útil cuando se ejecuta mke2fs desde un script.

-U ID

Esto establecerá el UUID (Universally Unique Identifier) del sistema de ficheros en el valor especificado como ID. Los UUID son números de 128 bits en notación hexadecimal que sirven para identificar de forma única un objeto dentro del sistema operativo (Un sistema de ficheros, una partición, un disco, etc..). Este número se especifica como una cadena de 32 dígitos en el formato 8-4-4-4-12, es decir, 8 dígitos, guión, 4 dígitos, guión, 4 dígitos, guión, 4 dígitos, guión, 12 dígitos, como D249E380-7719-45A1-813C-35186883987E. En lugar de un ID, también puede especificar parámetros como clear para borrar el UUID del sistema de archivos, random, para usar un UUID generado aleatoriamente o time para crear un UUID basado en el tiempo.

-V

Modo detallado, imprime mucha más información durante el funcionamiento de lo habitual. Útil para fines de depuración.

Creación de un sistema de archivos XFS

XFS es un sistema de archivos de alto rendimiento desarrollado originalmente por Silicon Graphics en 1993 para su sistema operativo IRIX. Debido a sus características de rendimiento y confiabilidad, se usa comúnmente para servidores y otros entornos que requieren un ancho de banda alto (o garantizado) del sistema de archivos.

Las herramientas para administrar sistemas de archivos XFS son parte del paquete xfsprogs. Es posible que este paquete deba instalarse manualmente, ya que no se incluye de forma predeterminada en algunas distribuciones de Linux. Otros, como Red Hat Enterprise Linux 7, usan XFS como sistema de archivos predeterminado.

Los sistemas de archivos XFS se dividen en al menos 2 partes, una sección de registro donde se mantiene un registro de todas las operaciones del sistema de archivos (comúnmente llamado Journal) y la sección de datos. La sección de registro puede estar ubicada dentro de la sección de datos (el comportamiento predeterminado), o incluso en un disco separado por completo, para un mejor rendimiento y confiabilidad.

El comando más básico para crear un sistema de archivos XFS es mkfs.xfs TARGET, donde TARGET es la partición en la que desea que se cree el sistema de archivos. Por ejemplo: mkfs.xfs /dev/sda1.

Como en mke2fs, mkfs.xfs admite una serie de opciones de línea de comandos. Éstos son algunas de las más comunes.

-b size=VALUE

Establece el tamaño de bloque en el sistema de archivos, en bytes, al especificado en VALUE. El valor predeterminado es 4096 bytes (4 KiB), el mínimo es 512 y el máximo es 65536 (64 KiB).

-m crc=VALUE

Los parámetros que comienzan con -m son opciones de metadatos. Éste habilita (si VALUE es 1) o deshabilita (si VALUE es 0) el uso de comprobaciones CRC32c para verificar la integridad de todos los metadatos en el disco. Esto permite una mejor detección de errores y recuperación de fallas relacionadas con problemas de hardware, por lo que está habilitado de forma predeterminada. El impacto en el rendimiento de esta comprobación debería ser mínimo, por lo que normalmente no hay razón para desactivarlo.

-m uuid=VALUE

Establece el UUID del sistema de ficheros al especificado como VALUE. Recuerde que los UUID son números de 32 caracteres (128 bits) en base hexadecimal, especificados en grupos de 8, 4, 4, 4 y 12 dígitos separados por guiones, como 1E83E3A3-3AE9-4AAC-BF7E-29DFFECD36C0.

-f

Forzar la creación de un sistema de archivos en el dispositivo de destino incluso si se detecta un sistema de archivos en él.

-l logdev=DEVICE

Esto colocará la sección de registro del sistema de archivos en el dispositivo especificado, en lugar de dentro de la sección de datos.

-l size=VALUE

Esto establecerá el tamaño de la sección de registro en el especificado en VALUE. El tamaño se puede especificar en bytes y se pueden utilizar sufijos como m o g. -l size=10m, por ejemplo, limitará la sección de registro a 10 Megabytes.

-q

Modo silencioso. En este modo, mkfs.xfs no imprimirá los parámetros del sistema de archivos que se está creando.

-L LABEL

Establece la etiqueta del sistema de archivos, que puede tener un máximo de 12 caracteres.

-N

Similar al parámetro -n de mke2fs, hará que mkfs.xfs imprima todos los parámetros para la creación del sistema de archivos, sin crearlo realmente.

Creación de un sistema de archivos FAT o VFAT

El sistema de archivos FAT se originó a partir de MS-DOS y, a lo largo de los años, ha recibido muchas revisiones que culminaron con el formato FAT32 lanzado en 1996 con Windows 95 OSR2.

VFAT es una extensión del formato FAT16 que admite nombres de archivo largos (hasta 255 caracteres). Ambos sistemas de archivos son manejados por la misma utilidad, mkfs.fat. mkfs.vfat es un alias.

El sistema de archivos FAT tiene importantes inconvenientes que restringen su uso en discos grandes. FAT16, por ejemplo, admite volúmenes de 4 GB como máximo y un tamaño de archivo máximo de 2 GB. FAT32 aumenta el tamaño del volumen hasta 2 PB y el tamaño máximo del archivo hasta 4 GB. Debido a esto, los sistemas de archivos FAT se utilizan hoy con más frecuencia en unidades flash pequeñas o tarjetas de memoria (de hasta 2 GB de tamaño), o en dispositivos y sistemas operativos heredados que no admiten sistemas de archivos más avanzados.

El comando más básico para la creación de un sistema de archivos FAT es mkfs.fat TARGET, donde TARGET es la partición en la que desea que se cree el sistema de archivos. Por ejemplo: mkfs.fat /dev/sdc1.

Como otras utilidades, mkfs.fat soporta una serie de opciones de línea de comandos. A continuación se muestran los más importantes. Se puede leer una lista completa y una descripción de cada opción en el manual de la utilidad, con el comando man mkfs.fat.

-c

Comprueba el dispositivo de destino en busca de bloques defectuosos antes de crear el sistema de archivos.

-C FILENAME BLOCK_COUNT

Creará el archivo especificado en FILENAME y luego creará un sistema de archivos FAT dentro de él, creando efectivamente una “imagen de disco” vacía, que luego puede escribirse en un dispositivo usando una utilidad como dd o montarse como un loopback dispositivo. Al usar esta opción, el número de bloques en el sistema de archivos (BLOCK_COUNT) debe especificarse después del nombre del dispositivo.

-F SIZE

Selecciona el tamaño de la FAT (File Allocation Table), entre 12, 16 o 32, es decir, entre FAT12, FAT16 o FAT32. Si no se especifica, mkfs.fat seleccionará la opción apropiada según el tamaño del sistema de archivos.

-n NAME

Establece la etiqueta de volumen, o el nombre, para el sistema de archivos. Puede tener hasta 11 caracteres y el valor predeterminado es sin nombre.

-v

Modo detallado. Imprime mucha más información de la habitual, útil para depurar.

Note

mkfs.fat no puede crear un sistema de archivos “de arranque”. Según la página del manual, “esto no es tan fácil como podría pensar” y no se implementará.

Creación de un sistema de archivos exFAT

exFAT es un sistema de archivos creado por Microsoft en 2006 que aborda una de las limitaciones más importantes de FAT32: el tamaño del archivo y del disco. En exFAT, el tamaño máximo de archivo es de 16 exabytes (desde 4 GB en FAT32) y el tamaño máximo del disco es de 128 petabytes.

Como es compatible con los tres principales sistemas operativos (Windows, Linux y mac OS), es una buena opción donde se necesita interoperabilidad, como en unidades flash de gran capacidad, tarjetas de memoria y discos externos. De hecho, es el sistema de archivos predeterminado, según lo define la SD Association, para tarjetas de memoria SDXC de más de 32 GB.

La utilidad predeterminada para crear sistemas de archivos exFAT es mkfs.exfat, que es un enlace a mkexfatfs. El comando más básico es mkfs.exfat TARGET, donde TARGET es la partición en la que desea que se cree el sistema de archivos. Por ejemplo: mkfs.exfat /dev/sdb2.

Al contrario de las otras utilidades discutidas en este tema, mkfs.exfat tiene muy pocas opciones de línea de comandos. Son:

-i VOL_ID

Establece el ID de volumen en el valor especificado en VOL_ID. Este es un número hexadecimal de 32 bits. Si no está definido, se establece una ID basada en la hora actual.

-n NAME

Establece la etiqueta de volumen o el nombre. Puede tener hasta 15 caracteres y el valor predeterminado es sin nombre.

-p SECTOR

Especifica el primer sector de la primera partición del disco. Este es un valor opcional y el predeterminado es cero.

-s SECTORS

Define el número de sectores físicos por grupo de asignación. Debe ser una potencia de dos, como 1, 2, 4, 8, etc.

Familiarización con el sistema de archivos Btrfs

Btrfs (oficialmente el B-Tree Filesystem, pronunciado como “Butter FS”, “Better FS” o incluso “Butterfuss”) es un sistema de archivos que ha estado en desarrollo desde 2007 específicamente para Linux por Oracle Corporation y otras empresas como Fujitsu, Red Hat, Intel y SUSE, entre otras.

Hay muchas características que hacen que Btrfs sea atractivo en sistemas modernos donde son comunes grandes cantidades de almacenamiento. Entre estos se encuentran el soporte para múltiples dispositivos (incluyendo la creación de bandas, la duplicación y la creación de bandas+duplicación, como en una configuración RAID), compresión transparente, optimizaciones de SSD, copias de seguridad incrementales, instantáneas, desfragmentación en línea, comprobaciones fuera de línea, compatibilidad con subvolúmenes (con cuotas), deduplicación y mucho más.

Como es un sistema de archivos copy-on-write, es muy resistente a los bloqueos. Y además de eso, Btrfs es fácil de usar y está bien soportado por muchas distribuciones de Linux. Y algunos de ellos, como SUSE, lo utilizan como sistema de archivos predeterminado.

Note

En un sistema de archivos tradicional, cuando desea sobrescribir parte de un archivo, los datos nuevos se colocan directamente sobre los datos antiguos que están reemplazando. En un sistema de archivos copy-on-write, los nuevos datos se escriben en el espacio libre en el disco, luego los metadatos originales del archivo se actualizan para hacer referencia a los nuevos datos y solo entonces se liberan los datos antiguos, porque ya no son necesarios. Esto reduce las posibilidades de pérdida de datos en caso de una falla, ya que los datos antiguos solo se descartan después de que el sistema de archivos esté absolutamente seguro de que ya no se necesitan y los nuevos datos están en su lugar.

Creación de un sistema de archivos Btrfs

La utilidad mkfs.btrfs se utiliza para crear un sistema de archivos Btrfs. Usar el comando sin ninguna opción crea un sistema de archivos Btrfs en un dispositivo dado, así:

# mkfs.btrfs /dev/sdb1
Tip

Si no tiene la utilidad mkfs.btrfs en su sistema, busque btrfs-progs en el administrador de paquetes de su distribución.

Puede usar la -L para establecer una etiqueta (o nombre) para su sistema de archivos. Las etiquetas Btrfs pueden tener hasta 256 caracteres, excepto para las nuevas líneas:

# mkfs.btrfs /dev/sdb1 -L "New Disk"
Tip

Incluya la etiqueta entre comillas (como arriba) si contiene espacios.

Tenga en cuenta este aspecto peculiar de Btrfs: puede pasar múltiples dispositivos al comando mkfs.btrfs. Pasar más de un dispositivo implica que el sistema de archivos abarcará todos los dispositivos, lo que es similar a una configuración RAID o LVM. Para especificar cómo se distribuirán los metadatos en la matriz de discos, use el parámetro -m. Los parámetros válidos son raid0, raid1, raid5, raid6, raid10, single y dup.

Por ejemplo, para crear un sistema de archivos que abarque /dev/sdb1 y /dev/sdc1, concatenando las dos particiones en una gran partición, use:

# mkfs.btrfs -d single -m single /dev/sdb /dev/sdc
Warning

Los sistemas de archivos que abarcan varias particiones, como el anterior, pueden parecer ventajosos al principio, pero no son una buena idea desde el punto de vista de la seguridad de los datos, ya que una falla en un solo disco de la matriz significa cierta pérdida de datos. El riesgo aumenta a medida que utiliza más discos, ya que también tiene más puntos posibles de falla.

Gestión de subvolúmenes

Los subvolúmenes son como sistemas de archivos dentro de sistemas de archivos. Piense en ellos como un directorio que se puede montar y tratar como un sistema de archivos separado. Los subvolúmenes facilitan la organización y la administración del sistema, ya que cada uno de ellos puede tener cuotas o reglas instantáneas independientes.

Note

Los subvolúmenes no son particiones. Una partición asigna un espacio fijo en una unidad. Esto puede generar problemas más adelante, como que una partición se quede sin espacio cuando a otra le queda mucho espacio. No es así con los subvolúmenes, ya que “comparten” el espacio libre de su sistema de archivos raíz y crecen según sea necesario.

Suponga que tiene un sistema de archivos Btrfs montado en /mnt/disk, y desea crear un subvolumen dentro de él para almacenar sus copias de seguridad. Llamémoslo BKP:

# btrfs subvolume create /mnt/disk/BKP

A continuación, enumeramos el contenido del sistema de archivos /mnt/disk. Verá que tenemos un nuevo directorio, llamado así por nuestro subvolumen.

$ ls -lh /mnt/disk/
total 0
drwxr-xr-x 1 root   root     0 jul 13 17:35 BKP
drwxrwxr-x 1 carol carol 988 jul 13 17:30 Images
Note

Sí, también se puede acceder a los subvolúmenes como a cualquier otro directorio.

Podemos comprobar que el subvolumen está activo, con el comando:

# btrfs subvolume show /mnt/disk/BKP/
	Name: 			BKP
	UUID: 			e90a1afe-69fa-da4f-9764-3384f66fa32e
	Parent UUID: 		-
	Received UUID: 		-
	Creation time: 		2019-07-13 17:35:40 -0300
	Subvolume ID: 		260
	Generation: 		23
	Gen at creation: 	22
	Parent ID: 		5
	Top level ID: 		5
	Flags: 			-
	Snapshot(s):

Puede montar el subvolumen en /mnt/BKP pasando el parámetro -t btrfs -o subvol=NAME al comando mount:

# mount -t btrfs -o subvol=BKP /dev/sdb1 /mnt/bkp
Note

El parámetro -t especifica el tipo de sistema de archivos que se va a montar.

Trabajar con instantáneas

Las instantáneas son como subvolúmenes, pero rellenadas previamente con el contenido del volumen desde el que se tomó la instantánea.

Cuando se crea, una instantánea y el volumen original tienen exactamente el mismo contenido. Pero a partir de ese momento, divergirán. Los cambios realizados en el volumen original (como archivos agregados, renombrados o eliminados) no se reflejarán en la instantánea y viceversa.

Tenga en cuenta que una instantánea no duplica los archivos e inicialmente casi no ocupa espacio en el disco. Simplemente duplica el árbol del sistema de archivos apuntando a los datos originales que están en el volumen sobre el que se ha aplicado la instantánea.

El comando para crear una instantánea es el mismo que se usa para crear un subvolumen, simplemente agregue el parámetro snapshot después de btrfs subvolume. El siguiente comando creará una instantánea del sistema de archivos Btrfs montado en /mnt/disk en /mnt/disk/snap:

# btrfs subvolume snapshot /mnt/disk /mnt/disk/snap

Ahora, imagine que tiene el siguiente contenido en /mnt/disk:

$ ls -lh
total 2,8M
-rw-rw-r-- 1 carol carol 109K jul 10 16:22 Galaxy_Note_10.png
-rw-rw-r-- 1 carol carol 484K jul  5 15:01 geminoid2.jpg
-rw-rw-r-- 1 carol carol 429K jul  5 14:52 geminoid.jpg
-rw-rw-r-- 1 carol carol 467K jul  2 11:48 LG-G8S-ThinQ-Mirror-White.jpg
-rw-rw-r-- 1 carol carol 654K jul  2 11:39 LG-G8S-ThinQ-Range.jpg
-rw-rw-r-- 1 carol carol  94K jul  2 15:43 Mimoji_Comparativo.jpg
-rw-rw-r-- 1 carol carol 112K jul 10 16:20 Note10Plus.jpg
drwx------ 1 carol carol  366 jul 13 17:56 snap
-rw-rw-r-- 1 carol carol 118K jul 11 16:36 Twitter_Down_20190711.jpg
-rw-rw-r-- 1 carol carol 324K jul  2 15:22 Xiaomi_Mimoji.png

Observe el directorio de instantáneas, que contiene la instantánea. Ahora eliminemos algunos archivos y verifiquemos el contenido del directorio:

$ rm LG-G8S-ThinQ-*
$ ls -lh
total 1,7M
-rw-rw-r-- 1 carol carol 109K jul 10 16:22 Galaxy_Note_10.png
-rw-rw-r-- 1 carol carol 484K jul  5 15:01 geminoid2.jpg
-rw-rw-r-- 1 carol carol 429K jul  5 14:52 geminoid.jpg
-rw-rw-r-- 1 carol carol  94K jul  2 15:43 Mimoji_Comparativo.jpg
-rw-rw-r-- 1 carol carol 112K jul 10 16:20 Note10Plus.jpg
drwx------ 1 carol carol  366 jul 13 17:56 snap
-rw-rw-r-- 1 carol carol 118K jul 11 16:36 Twitter_Down_20190711.jpg
-rw-rw-r-- 1 carol carol 324K jul  2 15:22 Xiaomi_Mimoji.png

Sin embargo, si revisa dentro del directorio snap, los archivos que eliminó todavía están allí y se pueden restaurar si es necesario.

$ ls -lh snap/
total 2,8M
-rw-rw-r-- 1 carol carol 109K jul 10 16:22 Galaxy_Note_10.png
-rw-rw-r-- 1 carol carol 484K jul  5 15:01 geminoid2.jpg
-rw-rw-r-- 1 carol carol 429K jul  5 14:52 geminoid.jpg
-rw-rw-r-- 1 carol carol 467K jul  2 11:48 LG-G8S-ThinQ-Mirror-White.jpg
-rw-rw-r-- 1 carol carol 654K jul  2 11:39 LG-G8S-ThinQ-Range.jpg
-rw-rw-r-- 1 carol carol  94K jul  2 15:43 Mimoji_Comparativo.jpg
-rw-rw-r-- 1 carol carol 112K jul 10 16:20 Note10Plus.jpg
-rw-rw-r-- 1 carol carol 118K jul 11 16:36 Twitter_Down_20190711.jpg
-rw-rw-r-- 1 carol carol 324K jul  2 15:22 Xiaomi_Mimoji.png

También es posible crear instantáneas de solo lectura. Funcionan exactamente como instantáneas en las que se puede escribir, con la diferencia de que el contenido de la instantánea no se puede cambiar, se “congelan” en el tiempo. Simplemente agregue el parámetro -r al crear la instantánea:

# btrfs subvolume snapshot -r /mnt/disk /mnt/disk/snap
Algunas palabras sobre compresión

Btrfs admite la compresión de archivos transparente, con tres algoritmos diferentes disponibles para el usuario. Esto se hace automáticamente por archivo, siempre que el sistema de archivos esté montado con la opción -o compress. Los algoritmos son lo suficientemente inteligentes como para detectar archivos que no se pueden comprimir y no intentarán comprimirlos, ahorrando recursos del sistema. Entonces, en un solo directorio puede tener archivos comprimidos y descomprimidos juntos. El algoritmo de compresión predeterminado es ZLIB, pero están disponibles LZO (más rápido, peor relación de compresión) o ZSTD (más rápido que ZLIB, compresión comparable), con múltiples niveles de compresión (consulte el objetivo correspondiente en las opciones de montaje).

Administrar particiones con GNU Parted

GNU Parted es un editor de particiones muy poderoso que se puede usar para crear, eliminar, mover, redimensionar, rescatar y copiar particiones. Puede funcionar con discos GPT y MBR y cubrir casi todas sus necesidades de administración de discos.

Hay muchas interfaces gráficas que facilitan mucho el trabajo con parted, como GParted para entornos de escritorio basados en GNOME y el KDE Partition Manager para escritorios KDE. Sin embargo, debe aprender a usar parted en la línea de comandos, ya que en una configuración de servidor nunca puede contar con un entorno de escritorio gráfico disponible.

Warning

A diferencia de fdisk y gdisk, parted realiza cambios en el disco inmediatamente después de que se emite el comando, sin esperar a que otro comando escriba los cambios en el disco. Al practicar, es aconsejable hacerlo en un disco o unidad flash vacíos o de repuesto, para que no exista riesgo de pérdida de datos en caso de que cometa un error.

La forma más sencilla de comenzar a usar parted es escribiendo parted DEVICE, donde DEVICE es el dispositivo que desea administrar (parted /dev/sdb). El programa inicia una interfaz de línea de comandos interactiva como fdisk y gdisk con un mensaje (parted) para que ingrese los comandos.

# parted /dev/sdb
GNU Parted 3.2
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted)
Warning

¡Tenga cuidado! Si no especifica un dispositivo, parted seleccionará automáticamente el disco principal (normalmente /dev/sda) para trabajar.

Seleccionar discos

Para cambiar a un disco diferente al especificado en la línea de comando, puede usar el comando select, seguido del nombre del dispositivo:

(parted) select /dev/sdb
Using /dev/sdb

Obtener información

El comando print se puede utilizar para obtener más información sobre una partición específica o incluso todos los dispositivos de bloque (discos) conectados a su sistema.

Para obtener información sobre la partición seleccionada actualmente, simplemente teclee print:

(parted) print
Model: ATA CT120BX500SSD1 (scsi)
Disk /dev/sda: 120GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End    Size    Type     File system     Flags
 1      2097kB  116GB  116GB   primary  ext4
 2      116GB   120GB  4295MB  primary  linux-swap(v1)

Puede obtener una lista de todos los dispositivos de bloque conectados a su sistema usando print devices:

(parted) print devices
/dev/sdb (1999MB)
/dev/sda (120GB)
/dev/sdc (320GB)
/dev/mapper/cryptswap (4294MB)

Para obtener información sobre todos los dispositivos conectados a la vez, puede usar print all. Si desea saber cuánto espacio libre hay en cada uno de ellos, puede usar print free:

(parted) print free
Model: ATA CT120BX500SSD1 (scsi)
Disk /dev/sda: 120GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system     Flags
        32.3kB  2097kB  2065kB           Free Space
 1      2097kB  116GB   116GB   primary  ext4
        116GB   116GB   512B             Free Space
 2      116GB   120GB   4295MB  primary  linux-swap(v1)
        120GB   120GB   2098kB           Free Space

Crear una tabla de particiones en un disco vacío

Para crear una tabla de particiones en un disco vacío, use el comando mklabel, seguido del tipo de tabla de particiones que desea usar.

Hay muchos tipos de tablas de particiones admitidas, pero los tipos principales que debe conocer son msdos que se usa aquí para referirse a una tabla de particiones MBR, y gpt para referirse a una tabla de particiones GPT. Para crear una tabla de particiones MBR, teclee:

(parted) mklabel msdos

Y para crear una tabla de particiones GPT, el comando es:

(parted) mklabel gpt

Crear una partición

Para crear una partición se usa el comando mkpart, usando la sintaxis mkpart PARTTYPE FSTYPE START END, donde:

PARTTYPE

Es el tipo de partición, que puede ser primaria, lógica o extendida en caso de que se utilice una tabla de particiones MBR.

FSTYPE

Especifica qué sistema de archivos se utilizará en esta partición. Tenga en cuenta que parted no creará el sistema de archivos. Simplemente establece una marca en la partición que le dice al sistema operativo qué tipo de datos esperar de ella.

START

Especifica el punto exacto en el dispositivo donde comienza la partición. Puede utilizar diferentes unidades para especificar este punto. 2s se puede usar para referirse al segundo sector del disco, mientras que 1m se refiere al comienzo del primer megabyte del disco. Otras unidades comunes son B (bytes) y % (porcentaje del disco).

END

Especifica el final de la partición. Tenga en cuenta que este no es el tamaño de la partición, es el punto del disco donde termina. Por ejemplo, si especifica 100 m, la partición finalizará 100 MB después del inicio del disco. Puede utilizar las mismas unidades que en el parámetro START.

Entonces, el comando:

(parted) mkpart primary ext4 1m 100m

Crea una partición primaria de tipo ext4, comenzando en el primer megabyte del disco y terminando después del megabyte 100.

Eliminar una partición

Para eliminar una partición, use el comando rm seguido del número de partición, que puede mostrar usando el comando print. Entonces, rm 2 eliminaría la segunda partición en el disco seleccionado actualmente.

Recuperando particiones

parted puede recuperar una partición eliminada. Considere que tiene la siguiente estructura de partición:

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  99.6MB  98.6MB  ext4         primary
 2      99.6MB  200MB   100MB   ext4         primary
 3      200MB   300MB   99.6MB  ext4         primary

Por accidente, eliminó la partición 2 usando rm 2. Para recuperarlo, puede utilizar el comando rescue, con la sintaxis rescue START END, donde START es la ubicación aproximada donde comenzó la partición y END la ubicación aproximada donde terminó.

parted escaneará el disco en busca de particiones y ofrecerá restaurar las que se encuentren. En el ejemplo anterior, la partición 2 comenzó en 99,6 MB y terminó en 200 MB. Entonces puede usar el siguiente comando para recuperar la partición:

(parted) rescue 90m 210m
Information: A ext4 primary partition was found at 99.6MB -> 200MB.
Do you want to add it to the partition table?

Yes/No/Cancel? y

Esto recuperará la partición y su contenido. Tenga en cuenta que rescue solo puede recuperar particiones que tengan un sistema de archivos instalado. No se detectan particiones vacías.

Cambiar el tamaño de las particiones ext2/3/4

parted se puede usar para cambiar el tamaño de las particiones y hacerlas más grandes o más pequeñas. Sin embargo, hay algunas advertencias:

  • Durante el cambio de tamaño, la partición debe estar sin usar y sin montar.

  • Necesita suficiente espacio libre después de la partición para hacerla crecer al tamaño que desee.

El comando es resizepart, seguido del número de partición y dónde debería terminar. Por ejemplo, si tiene la siguiente tabla de particiones:

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  99.6MB  98.6MB  ext4         primary
 2      99.6MB  200MB   100MB   ext4
 3      200MB   300MB   99.6MB  ext4         primary

Intentar hacer crecer la partición 1 usando resizepart generaría un mensaje de error, porque con el nuevo tamaño, la partición 1 se superpondría con la partición 2. Sin embargo, la partición 3 se puede cambiar de tamaño ya que hay espacio libre después de ella, lo que se puede verificar con el comando print free:

(parted) print free
Model: Kingston DataTraveler 2.0 (scsi)
Disk /dev/sdb: 1999MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

 Number  Start   End     Size    File system  Name     Flags
        17.4kB  1049kB  1031kB  Free Space
 1      1049kB  99.6MB  98.6MB  ext4         primary
 2      99.6MB  200MB   100MB   ext4
 3      200MB   300MB   99.6MB  ext4         primary
        300MB   1999MB  1699MB  Free Space

Entonces puede usar el siguiente comando para cambiar el tamaño de la partición 3 a 350 MB:

(parted) resizepart 3 350m

(parted) print
Model: Kingston DataTraveler 2.0 (scsi)
Disk /dev/sdb: 1999MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  99.6MB  98.6MB  ext4         primary
 2      99.6MB  200MB   100MB   ext4
 3      200MB   350MB   150MB   ext4         primary

Recuerde que el nuevo punto final se especifica contando desde el inicio del disco. Entonces, debido a que la partición 3 terminó en 300 MB, ahora debe terminar en 350 MB.

Pero cambiar el tamaño de la partición es solo una parte de la tarea. También necesita cambiar el tamaño del sistema de archivos que reside en ella. Para sistemas de archivos ext2/3/4 esto se hace con el comando resize2fs. En el caso del ejemplo anterior, la partición 3 todavía muestra el tamaño “antiguo” cuando se monta:

$ df -h /dev/sdb3
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb3        88M  1.6M   80M   2% /media/carol/part3

Para ajustar el tamaño, se puede usar el comando resize2fs DEVICE SIZE, donde DEVICE corresponde a la partición que desea cambiar de tamaño y SIZE es el nuevo tamaño. Si omite el parámetro de tamaño, utilizará todo el espacio disponible de la partición. Antes de cambiar el tamaño, se recomienda desmontar la partición.

En el ejemplo anterior:

$ sudo resize2fs /dev/sdb3
resize2fs 1.44.6 (5-Mar-2019)
Resizing the filesystem on /dev/sdb3 to 146212 (1k) blocks.
The filesystem on /dev/sdb3 is now 146212 (1k) blocks long.

$ df -h /dev/sdb3
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb3       135M  1.6M  123M   2% /media/carol/part3

Para encoger una partición, el proceso debe realizarse en orden inverso. Primero cambie el tamaño del sistema de archivos al nuevo tamaño más pequeño, luego cambie el tamaño de la partición usando parted.

Warning

Preste atención al encoger particiones. Si ordena mal las cosas, ¡perderá datos!

En nuestro ejemplo:

# resize2fs /dev/sdb3 88m
resize2fs 1.44.6 (5-Mar-2019)
Resizing the filesystem on /dev/sdb3 to 90112 (1k) blocks.
The filesystem on /dev/sdb3 is now 90112 (1k) blocks long.

# parted /dev/sdb3
(parted) resizepart 3 300m
Warning: Shrinking a partition can cause data loss, are you sure
you want to continue?

Yes/No? y

(parted) print
Model: Kingston DataTraveler 2.0 (scsi)
Disk /dev/sdb: 1999MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  99.6MB  98.6MB  ext4         primary
 2      99.6MB  200MB   100MB   ext4
 3      200MB   300MB   99.7MB  ext4         primary
Tip

En lugar de especificar un nuevo tamaño, puede usar el parámetro -M de resize2fs para ajustar el tamaño del sistema de archivos de modo que sea lo suficientemente grande para los archivos que contiene.

Creación de particiones de intercambio

En Linux, el sistema puede intercambiar páginas de memoria de RAM a disco según sea necesario, almacenándolas en un espacio separado generalmente implementado como una partición separada en un disco, llamada partición de intercambio o simplemente intercambio. Esta partición debe ser de un tipo específico y configurarse con una utilidad adecuada (mkswap) antes de que pueda usarse.

Para crear la partición de intercambio usando fdisk o gdisk, simplemente proceda como si estuviera creando una partición normal, como se explicó antes. La única diferencia es que necesitará cambiar el tipo de partición a Linux swap.

  • En fdisk use el comando t. Seleccione la partición que desea utilizar y cambie su tipo a 82. Escriba los cambios en el disco y salga con w.

  • En gdisk el comando para cambiar el tipo de partición también es t, pero el código es 8200. Escriba los cambios en el disco y salga con w.

Si está usando parted, la partición debe identificarse como una partición de intercambio durante la creación, simplemente use linux-swap como tipo de sistema de archivos. Por ejemplo, el comando para crear una partición de intercambio de 500 MB a partir de 300 MB en el disco es:

(parted) mkpart primary linux-swap 301m 800m

Una vez que la partición está creada e identificada correctamente, simplemente use mkswap seguido del dispositivo que representa la partición que desea usar, como:

# mkswap /dev/sda2

Para habilitar el intercambio en esta partición, use swapon seguido del nombre del dispositivo:

# swapon /dev/sda2

Del mismo modo, swapoff, seguido del nombre del dispositivo, desactivará el intercambio en ese dispositivo.

Linux también admite el uso de swap files en lugar de particiones. Simplemente cree un archivo vacío del tamaño que desee usando dd y luego use mkswap y swapon con este archivo como destino.

Los siguientes comandos crearán un archivo de 1 GB llamado myswap en el directorio actual, lleno de ceros, y luego lo configurarán y habilitarán como un archivo de intercambio.

Cree el archivo de intercambio:

$ dd if=/dev/zero of=myswap bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 7.49254 s, 143 MB/s

if= es el archivo de entrada, el origen de los datos que se escribirán en el archivo. En este caso es el dispositivo /dev/zero, que proporciona tantos caracteres NULL como se soliciten. of= es el archivo de salida, el archivo que se creará. bs= es el tamaño de los bloques de datos, aquí especificado en Megabytes, y count= es la cantidad de bloques que se escribirán en la salida. 1024 bloques de 1 MB cada uno equivale a 1 GB.

# mkswap myswap
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=49c53bc4-c4b1-4a8b-a613-8f42cb275b2b

# swapon myswap

Usando los comandos anteriores, este archivo de intercambio se usará solo durante la sesión actual del sistema. Si se reinicia la máquina, el archivo seguirá estando disponible, pero no se cargará automáticamente. Puede automatizar eso agregando el nuevo archivo de intercambio a /etc/fstab, que discutiremos en una lección posterior.

Tip

Tanto mkswap como swapon se quejarán si su archivo de intercambio tiene permisos inseguros. El indicador de permiso de archivo recomendado es 0600. El propietario y el grupo deben ser root.

Ejercicios Guiados

  1. ¿Qué esquema de partición debería utilizarse para particionar un disco duro de 3 TB en tres particiones de 1 GB? ¿Por qué?


  2. En gdisk, ¿cómo podemos saber cuánto espacio hay disponible en el disco?


  3. ¿Cuál sería el comando para crear un sistema de archivos ext3, verificando antes los bloques defectuosos, con la etiqueta MyDisk y un UUID aleatorio, en el dispositivo /dev/sdc1?


  4. Usando parted, ¿cuál es el comando para crear una partición ext4 de 300 MB, comenzando con 500 MB en el disco?


  5. Imagine que tiene 2 particiones, una en /dev/sda1 y la otra en /dev/sda2, ambas de 20 GB de tamaño. ¿Cómo puede usarlas en un solo sistema de archivos Btrfs, de tal manera que el contenido de una partición se refleje automáticamente en la otra, como en una configuración RAID1? ¿Qué tamaño tendrá el sistema de archivos?


Ejercicios Exploratorios

  1. Considere un disco de 2 GB con una tabla de particiones MBR y el siguiente diseño:

    Disk /dev/sdb: 1.9 GiB, 1998631936 bytes, 3903578 sectors
    Disk model: DataTraveler 2.0
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x31a83a48
    
    Device     Boot   Start     End Sectors  Size Id Type
    /dev/sdb1          2048 1050623 1048576  512M 83 Linux
    /dev/sdb3       2099200 3147775 1048576  512M 83 Linux

    ¿Puede crear una partición de 600 MB en él? ¿Por qué?


  2. En un disco en /dev/sdc, tenemos una primera partición de 1 GB, que contiene aproximadamente 256 MB de archivos. Usando parted, ¿cómo puede reducirlo para que tenga suficiente espacio para los archivos?


  3. Imagine que tiene un disco en /dev/sdb y desea crear una partición de intercambio de 1 GB al principio. Entonces, usando parted, cree la partición con mkpart primary linux-swap 0 1024M. Luego, habilita el intercambio en esta partición con swapon /dev/sdb1, pero aparece el siguiente mensaje de error:

    swapon: /dev/sdb1: read swap header failed

    ¿Qué salió mal?


  4. Durante el curso de esta lección, estuvo probando algunos comandos en parted pero, por error, eliminó la tercera partición en su disco duro. Usted sabe que vino después de una partición UEFI de 250 MB y una partición de intercambio de 4 GB, y tenía un tamaño de 10 GB. ¿Qué comando puede usar para recuperarlo?


  5. Imagine que tiene una partición de 4 GB sin usar en /dev/sda3. Usando fdisk, ¿cuál sería la secuencia de operaciones para convertirlo en una partición de intercambio activa?


Resumen

En esta lección aprendimos:

  • Cómo crear una tabla de particiones MBR en un disco con fdisk, y cómo usarlo para crear y eliminar particiones

  • Cómo crear una tabla de particiones MBR en un disco con gdisk, y cómo usarlo para crear y eliminar particiones

  • Cómo crear particiones ext2, ext3, ext4, XFS, VFAT y exFAT

  • Cómo utilizar parted para crear, eliminar y recuperar particiones en discos MBR y GPT

  • Cómo usar las particiones resize ext2, ext3, ext4 y Brts

  • Cómo crear, configurar y activar particiones de intercambio y archivos de intercambio

Los siguientes comandos se discutieron en esta lección:

  • fdisk

  • gdisk

  • mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.xfs, mkfs.vfat y mkfs.exfat

  • parted

  • btrfs

  • mkswap

  • swapon y swapoff

Respuestas a los ejercicios guiados

  1. ¿Qué esquema de partición debería utilizarse para particionar un disco duro de 3 TB en tres particiones de 1 GB? ¿Por qué?

    GPT, ya que MBR admite como máximo discos duros de 2 TB.

  2. En gdisk, ¿cómo podemos saber cuánto espacio hay disponible en el disco?

    Utilice p (print). El espacio libre total se mostrará como la última línea de información antes de la tabla de particiones.

  3. ¿Cuál sería el comando para crear un sistema de archivos ext3, verificando antes los bloques defectuosos, con la etiqueta MyDisk y un UUID aleatorio, en el dispositivo /dev/sdc1?

    El comando sería mkfs.ext3 -c -L MyDisk -U random /dev/sdc1. Alternativamente, mk2efs -t ext3 también se puede usar en lugar de mkfs.ext3

  4. Usando parted, ¿cuál es el comando para crear una partición ext4 de 300 MB, comenzando con 500 MB en el disco?

    Utilice mkpart primary ext4 500m 800m. Recuerde que tendrá que crear el sistema de archivos usando mkfs.ext4, ya que parted no hace esto.

  5. Imagine que tiene 2 particiones, una en /dev/sda1 y la otra en /dev/sda2, ambas de 20 GB de tamaño. ¿Cómo puede usarlas en un solo sistema de archivos Btrfs, de tal manera que el contenido de una partición se refleje automáticamente en la otra, como en una configuración RAID1? ¿Qué tamaño tendrá el sistema de archivos?

    Utilice mkfs.btrfs /dev/sda1 /dev/sdb1 -m raid1. El sistema de archivos resultante tendrá un tamaño de 20 GB, ya que una partición actúa simplemente como un espejo de la otra.

Respuestas a ejercicios exploratorios

  1. Considere un disco de 2 GB con una tabla de particiones MBR y el siguiente diseño:

    Disk /dev/sdb: 1.9 GiB, 1998631936 bytes, 3903578 sectors
    Disk model: DataTraveler 2.0
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x31a83a48
    
    Device     Boot   Start     End Sectors  Size Id Type
    /dev/sdb1          2048 1050623 1048576  512M 83 Linux
    /dev/sdb3       2099200 3147775 1048576  512M 83 Linux

    ¿Puede crear una partición de 600 MB en él? ¿Por qué?

    No puede, porque no hay suficiente espacio contiguo. La primera pista de que algo está “no coincide” es la lista de dispositivos: tiene /dev/sdb1 y /dev/sdb3, pero no /dev/sdb2. Entonces, falta algo.

    Luego, debe mirar dónde termina una partición y comienza la otra. La partición uno termina en el sector 1050623 y la partición 2 comienza en 2099200. Esa es una “brecha” de 1048577 sectores. A 512 bytes por sector, eso es 536.871.424 bytes. Si lo divide por 1024 obtiene 524.288 Kilobytes. Divida por 1024 de nuevo y obtendrá …​ 512 MB. Este es el tamaño de la “brecha”.

    Si el disco tiene 2 GB, entonces moveríamos como máximo otros 512 MB después de la partición 3. Incluso si tenemos en total alrededor de 1 GB sin asignar, el bloque contiguo más grande es de 512 MB. Entonces, no hay espacio para una partición de 600 MB.

  2. En un disco en /dev/sdc, tenemos una primera partición de 1 GB, que contiene aproximadamente 256 MB de archivos. Usando parted, ¿cómo puede reducirlo para que tenga suficiente espacio para los archivos?

    Esta es una operación de varias partes. Primero tiene que encoger el sistema de archivos usando resize2fs. En lugar de especificar el nuevo tamaño directamente, puede utilizar el parámetro -M para que sea “suficientemente grande”. Entonces: resize2fs -M /dev/sdc1.

    Luego, cambie el tamaño de la partición con parted usando resizepart. Dado que es la primera partición, podemos asumir que comienza en cero y termina en 241 MB. Entonces, el comando es resizepart 1 241M.

  3. Imagine que tiene un disco en /dev/sdb y desea crear una partición de intercambio de 1 GB al principio. Entonces, usando parted, crea la partición con mkpart primary linux-swap 0 1024M. Luego, habilita el intercambio en esta partición con swapon /dev/sdb1, pero aparece el siguiente mensaje de error:

    swapon: /dev/sdb1: read swap header failed

    ¿Qué salió mal?

    Creó una partición del tipo correcto (linux-swap), pero recuerde que mkpart no crea un sistema de archivos. Olvidó configurar la partición como un espacio de intercambio primero con mkswap antes de usarla.

  4. Durante el curso de este tema, estuvo probando algunos comandos en parted pero, por error, eliminó la tercera partición en su disco duro. Usted sabe que vino después de una partición UEFI de 250 MB y una partición de intercambio de 4 GB, y tenía un tamaño de 10 GB. ¿Qué comando puede usar para recuperarlo?

    Tranquilo, tiene toda la información que necesita para recuperar la partición, solo use rescue y haga los cálculos. Tenía 250 MB + 4.096 MB (4*1024) antes, por lo que el punto de inicio debería ser alrededor de 4346 MB. Más 10.240 MB (10*1024) de tamaño, debería terminar en 14.586 MB. Entonces, rescue 4346m 14586m debería ser el truco. Es posible que deba dar un poco de “espacio adicional” para rescatar, comenzando un poco antes y terminando un poco tarde, dependiendo de la geometría de su disco.

  5. Imagine que tiene una partición de 4 GB sin usar en /dev/sda3. Usando fdisk, ¿cuál sería la secuencia de operaciones para convertirlo en una partición de intercambio activa?

    Primero, cambie el tipo de partición a “Linux Swap”(82), escriba sus cambios en el disco y salga. Luego, use mkswap para configurar la partición como un área de intercambio. Luego, use swapon para habilitarlo.

© 2020 Linux Professional Insitute Inc. Todos los derechos reservados. Visite el sitio web de Learning Materials: https://asir.sudo.es/docnux/learning.lpi.org
Este trabajo está registrado bajo la Licencia Internacional Creative Commons Attribution-NonCommercial-NoDerivatives 4.0

Siguiente lección

104.2 Mantener la integridad de los sistemas de archivos (104.2 Lección 1)

Leer la próxima lección

© 2020 Linux Professional Insitute Inc. Todos los derechos reservados. Visite el sitio web de Learning Materials: https://asir.sudo.es/docnux/learning.lpi.org
Este trabajo está registrado bajo la Licencia Internacional Creative Commons Attribution-NonCommercial-NoDerivatives 4.0

LPI es una organización sin fines de lucro.

Linux Professional Institute (LPI) es la organización global de certificación y apoyo académico para profesionales de código abierto. Con más de 200,000 titulares de certificación, es el primer y más grande organismo de certificación no comercial del mundo para Linux y Open Source. LPI cuenta con profesionales certificados en más de 180 países, realiza exámenes en varios idiomas y tiene cientos de socios de capacitación.

Nuestro propósito es hacer que las oportunidades económicas y creativas estén disponibles para todos, haciendo que el conocimiento de código abierto y la certificación sea universalmente accesible.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Contáctenos
  • Política de privacidad y cookies

¿Detecta un error o desea ayudar a mejorar esta página? Por favor háznoslo saber.

© Copyright 1999-2020 The Linux Professional Institute Inc. Todos los derechos reservados.