Actividad: Particiones
Una partición es un área contigua de un dispositivo de almacenamiento como un disco duro. Su función es dividir a nivel lógico el dispositivo de almacenamiento para poder tratarlo como diferentes dispositivos. Si el dispositivo de almacenamiento no va a contener un gestor de arranque o diferentes áreas, sino que se va a utilizar toda su capacidad entonces no es necesario crear particiones.
Por ejemplo una instalación típica de GNU/Linux puede utilizar dos particiones:
- Una partición raíz
- Una partición swap
En la actualidad son dos los esquemas de particionado más extendidos:
Particiones MBR
El esquema tradicional de particionado en los PC está basado en el Master Boot Record. El MBR es el primer sector del dispositivo (típicamente ocupa 512 bytes) y cumple dos funciones:
- Guardar la tabla de particiones
- Guardar el gestor de arranque
Lo que evidentemente impone restricciones en cuanto a la información que se puede almacenar. Así este esquema de particionado permite definir hasta 4 particiones primarias, o bien hasta 3 particiones primarias y 1 partición extendida. A su vez, la partición extendida puede contener particiones lógicas.
Además estas particiones sólo pueden referenciar los dos primeros terabytes del dispositivo.
GUID Partition Table (GPT)
Dadas las limitaciones de número y tamaño de las tradicionales particiones MBR, se ha creado un nuevo esquema de particionado asociado a UEFI: el esquema de particionado GPT. En este esquema se utilizan GUIDs para identificar a las particiones y el tamaño máximo de la partición ha pasado a 9.4 ZB o 8 ZiB en discos con sectores de 512 Bytes.
Además se ha incrementado notablemente el número de particiones. Se puede dedicar más o menos espacio a la tabla de particiones, pero con el tamaño mínimo se permiten hasta 128 particiones.
Y en este nuevo esquema aún hay que tener en cuenta otras novedades:
- La tabla de particiones GPT se encuentra duplicada al principio y al final del disco.
- Para mantener una cierta compatibilidad con las herramientas que únicamente saben tratar con particiones MBR, típicamente se utiliza la función Protective MBR. En este caso, aún utilizando particiones GPT el espacio en el que tradicionalmente se definen particiones MBR está dedicado a una tabla de particiones que especifica que el disco tiene una partición (del tamaño máximo, típicamente 2TB) de tipo GPT. Para evitar que herramientas antiguas crean que el disco está sin particionar.
- En lugar de utilizar un byte para expresar el tipo de partición, ahora se utiliza un GUID de 16 bytes.
- En cada partición se puede guardar una cadena con su nombre. Por ejemplo: /, /usr, etc...
Si el disco de arranque utiliza particiones GPT hay que tener en cuenta un par de detalles según se utilice un ordenador con BIOS o UEFI:
- En el caso de utilizar BIOS: Debe crearse una BIOS Boot Partition, que servirá para almacenar el stage 2 de GRUB. La partición estará marcada como bios_grub (es decir, utilizará el tipo EF02) y tendrá un tamaño mínimo de 32KiB aunque normalmente será de 1MiB.
- En el caso de utilizar UEFI: Debe crearse una EFI System Partition (ESP) que contendrá un sistema de archivos FAT32 con un tamaño típico entre 100MiB y 500MiB. Dependiendo del boot loader utilizado puede que el núcleo deba estar en esta partición. Así que en este caso deberá tener suficiente capacidad.
Herramientas de particionado:
Hay muchas herramientas de particionado, algunas de ellas con interfaz gráfica como GParted. Pero en el momento de utilizar la línea de comandos conviene conocer:
- La familia fdisk (fdisk, cfdisk y sfdisk): Sirven para manejar particiones MBR.
- GNU Parted: Puede manejar particiones MBR, GPT y algún otro tipo.
- La familia GPT fdisk (gdisk, cgdisk y sgdisk): Sirven para manejar particiones GPT.
Más información:
Actividad: Particiones MBR
- Utilice los comandos lsblk, dmesg -T | grep sda, ll /dev/disk/by-id en la máquina física. ¿Qué información aportan?
- Utilice los comandos mount, df -h en la máquina física. ¿Qué información aportan?
- Lance una máquina virtual con Ubuntu 16.04 server.
- Utilice el comando fdisk para inspeccionar la tabla de particiones del equipo. ¿Cuántas hay? ¿de qué tipo? ¿tamaño? ¿ubicación?
- Añada un disco duro dinámico de 10GB. ¿Qué tamaño máximo de disco permite definir la herramienta de virtualización?
- Utilice el comando dd para copiar la tabla de particiones del primer disco al segundo. Reinicie la máquina. ¿El segundo disco tiene particiones? ¿Y las particiones tienen datos?
- Utilice el comando dd para borrar el MBR del segundo disco. ¿Qué ha ocurrido con las particiones?
- Utilice el comando fdisk para definir 4 particiones primarias en el segundo disco. Haga que tres de ellas estén formateadas con un sistema de archivos diferente y la cuarta sea una partición de intercambio.
- Añada un nuevo disco duro de 10GB a la máquina virtual. Construya en este último disco 1 partición primaria de 1GB y 1 partición extendida con el resto del espacio. Defina 4 particiones lógicas de 2GB. ¿Qué nombre de dispositivo reciben estas particiones?
- Añada un nuevo disco duro 10GB a la máquina virtual. Utilice el comando dd para copiar por completo el tercer disco duro en el cuarto. Compruebe que se ha copiado: tabla de particiones, sistemas de ficheros, contenido, etc...
Actividad: GPT
- Utilice una nueva máquina virtual con Ubuntu Server. Añada a esta máquina un segundo disco duro de 10GiB.
- Compruebe que el segundo disco duro no tiene ninguna partición.
- Utilice el comando gdisk para crear 10 particiones de 1GiB. ¿Qué nombre reciben estas particiones?
- Compruebe que puede crear un sistema de ficheros en las tres primeras particiones del segundo disco duro.
- Utilice el comando fdisk para inspeccionar la tabla de particiones del segundo disco duro. ¿Qué aparenta?
- Añada un tercer disco duro. Utilice dd para copiar la tabla de particiones GPT del segundo al tercer disco. Utilice gdisk para inspeccionar el disco. ¿Qué sucede?
- ¿Cómo se podría copiar la tabla de particiones GPT que está al final del disco? Borre el primer mega del tercer disco e intente copiar la tabla de particiones GPT secundaria del segundo al tercer disco. Utilice gdisk para inspeccionar el disco. ¿Qué sucede?
- Suponga que en el segundo disco duro se va a instalar un SO que deberá arrancar utilizando GPT. Por ello prepare el disco de manera que incluya: una partición EFI System Partition de 100MiB, una partición de intercambio de 1GiB y una partición para el sistema con el resto de espacio.