Un disco duro puede dividirse en varias particiones. Cada partición funciona como si fuera un disco duro independiente. La idea es que si sólo se tiene un disco, y se quieren tener, digamos, dos sistemas operativos en él, se pueda dividir el disco en dos particiones. Cada sistema operativo utilizará su propia partición tal y como se desea, y no tocará la otra. De esta forma los dos sistemas operativos pueden coexistir pacíficamente en el mismo disco duro. Sin particiones se tendría que comprar un disco duro para cada sistema operativo.
Los disquetes generalmente no se particionan. No hay ninguna razón técnica para ello, pero dado que son tan pequeños, particionarlos sería útil sólo en extrañas ocasiones. Los CD-ROM tampoco se suelen particionar, ya que es más fácil utilizarlos como un disco grande, y raramente existe la necesidad de tener varios sistemas operativos en uno de ellos.
La información sobre cómo se particiona un disco se almacena en su primer sector (esto es, el primer sector de la primera pista sobre la primera superficie del disco). Este primer sector es el registro de arranque maestro (MBR) del disco; éste es el sector que la BIOS lee y arranca cuando se enciende la máquina. El registro de arranque maestro integra un pequeño programa que lee la tabla de particiones, comprueba qué partición está activa (es decir, marcada como arrancable), y lee el primer sector de esa partición, el sector de arranque de la partición (el MBR también es un sector de arranque, pero tiene una importancia especial y de ahí su nombre especial). Este sector de arranque contiene otro pequeño programa que lee la primera parte del sistema operativo almacenado en esa partición (asumiendo que es arrancable), y entonces la inicia.
El esquema de partición no está integrado en el hardware, ni siquiera en la BIOS. Tan sólo es una convención que muchos sistemas operativos siguen. No todos los sistemas operativos la siguen, pero son las excepciones. Algunos sistemas operativos soportan particiones, pero ocupan una partición en el disco duro, y utilizan su propio sistema de particionamiento dentro de esa partición. El último convive pacíficamente con otros sistemas operativos (incluido Linux), y no requiere de medidas adicionales, pero un sistema operativo que no soporte particiones no puede coexistir en el mismo disco con otro sistema operativo.
Como medida de precaución, es buena idea anotar la tabla de particiones en papel, de manera que si alguna vez se corrompe no tenga que perder todos sus archivos. (Una tabla de partición errónea puede corregirse con fdisk). La información relevante la proporciona el comando fdisk:
$
fdisk -l /dev/hda
Disk /dev/hda: 15 heads, 57 sectors, 790 cylinders
Units = cylinders of 855 * 512 bytes
Device Boot Begin Start End Blocks Id System
/dev/hda1 1 1 24 10231+ 82 Linux swap
/dev/hda2 25 25 48 10260 83 Linux native
/dev/hda3 49 49 408 153900 83 Linux native
/dev/hda4 409 409 790 163305 5 Extended
/dev/hda5 409 409 744 143611+ 83 Linux native
/dev/hda6 745 745 790 19636+ 83 Linux native
$
El esquema original de particionamiento para discos duros de PC permitía solamente cuatro particiones. Esto rápidamente se volvió demasiado escaso para la vida real, en parte porque algunas personas querían más de cuatro sistemas operativos (Linux, MS-DOS, OS/2, Minix, FreeBSD, NetBSD, o Windows/NT, por nombrar algunos), pero principalmente porque algunas veces es buena idea tener varias particiones para un sistema operativo. Por ejemplo, el espacio swap está generalmente mejor colocado para Linux en su propia partición en lugar de la partición principal por cuestiones de rapidez (vea más abajo).
Para superar este problema de diseño, se inventaron las particiones extendidas. Este truco permite particionar una partición primaria en sub-particiones. Esta partición primaria subdividida es la partición extendida; las sub-particiones son las particiones lógicas. Se comportan como particiones primarias, pero se crean de diferente manera. No existen diferencias de rendimiento entre ellas.
La estructura de particiones de un disco duro debe parecerse a la que aparece en la Figura 6.2, “A sample hard disk partitioning.”. El disco se divide en tres particiones primarias, la segunda de las cuales se divide en dos particiones lógicas. Una parte del disco no está particionada. El disco como un todo y cada partición primaria tienen un sector de arranque.
Las tablas de particiones (aquella en el MBR, y las de las particiones extendidas) tienen un byte por partición que identifica el tipo de esa partición. Ésta intenta identificar el sistema operativo que utiliza la partición, o el que suele hacerlo. El propósito es evitar que dos sistemas operativos accidentalmente utilicen la misma partición. De cualquier modo, en realidad, los sistemas operativos no tienen en cuenta el byte de tipo de partición; por ejemplo, Linux no lo toma en consideración en absoluto. Incluso peor, algunos lo utilizan incorrectamente; por ejemplo, al menos una versión de DR-DOS ignora el bit más significativo del byte, mientras que otras no lo hacen.
No existe un estándar para especificar lo que significa cada valor del byte, pero algunos comúnmente aceptados se incluyen en la Figura 6.3, “Tipos de partición (obtenida del programa de Linux fdisk).”. Una lista más exhaustiva está disponible en el programa de Linux fdisk
.Figura 6.3. Tipos de partición (obtenida del programa de Linux fdisk).
Hex code (type L to list codes): L 0 Empty 1e Hidden W95 FAT1 80 Old Minix 1 FAT12 24 NEC DOS 81 Minix / old Lin 2 XENIX root 39 Plan 9 82 Linux swap / So 3 XENIX usr 3c PartitionMagic 83 Linux 4 FAT16 -32M 40 Venix 80286 84 OS/2 hidden C: 5 Extended 41 PPC PReP Boot 85 Linux extended 6 FAT16 42 SFS 86 NTFS volume set 7 HPFS/NTFS 4d QNX4.x 87 NTFS volume set 8 AIX 4e QNX4.x 2nd part 88 Linux plaintext 9 AIX bootable 4f QNX4.x 3rd part 8e Linux LVM a OS/2 Boot Manag 50 OnTrack DM 93 Amoeba b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi f W95 Extd (LBA) 54 OnTrackDM6 a5 FreeBSD 10 OPUS 55 EZ-Drive a6 OpenBSD 11 Hidden FAT12 56 Golden Bow a7 NeXTSTEP 12 Compaq diagnost 5c Priam Edisk a8 Darwin UFS 14 Hidden FAT16 -3 61 SpeedStor a9 NetBSD 16 Hidden FAT16 63 GNU HURD or Sys ab Darwin boot 17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs 18 AST SmartSleep 65 Novell Netware b8 BSDI swap 1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid 1c Hidden W95 FAT3 75 PC/IX
Existen muchos programas para crear y eliminar particiones. La mayoría de sistemas operativos tienen el suyo propio, y es buena idea utilizar el propio con cada sistema operativo, por si se diera el caso que haga algo inusual que los otros no puedan hacer. Muchos de estos programas se llaman fdisk, incluido el de Linux, o variaciones de esa palabra. Los detalles de uso del fdisk de Linux se dan en su página de manual. El comando cfdisk es similar a fdisk, pero tiene una interfaz más agradable (a pantalla completa).
Cuando se utilizan discos EIDE, la partición de arranque (la partición con los archivos de imagen del núcleo arrancable) debe estar completamente definida en los primeros 1024 cilindros. Esto es así porque el disco se utiliza a través de la BIOS durante el arranque (antes de que el sistema entre en el modo protegido), y la BIOS no puede manejar más de 1024 cilindros. A veces es posible utilizar una partición de arranque que parcialmente se encuentre dentro de los primeros 1024 cilindros. Esto funciona siempre que todos los archivos que lee la BIOS se encuentran en los primeros 1024 cilindros. Como esto es difícil de conseguir, es mala idea intentarlo; nunca se sabe si una actualización del núcleo o una desfragmentación del disco originará un sistema no arrancable. Así que asegúrese que su partición de arranque está completamente colocada dentro de los primeros 1024 cilindros. [12] .
Algunas versiones modernas de BIOS y discos IDE pueden, de hecho, manejar discos de más de 1024 cilindros, Si tiene uno de esos sistemas, se puede olvidar del problema; si no está seguro, coloque la partición de arranque en los primeros 1024 cilindros.
Cada partición debe tener un número par de sectores, puesto que el sistema de archivos Linux utiliza un tamaño de bloque de 1 kilobyte , es decir, dos sectores. Un número impar de sectores provocará que el último no pueda utilizarse. Esto no es ningún problema, pero resulta feo, y algunas versiones de fdisk avisarán de ello.
Cambiar el tamaño de una partición requiere que primero se realice una copia de seguridad de todo lo que quiera salvar de esa partición (a ser posible de todo el disco, por si acaso), borrar la partición, crear una nueva, y entonces restaurarlo todo a la nueva partición. Si la partición crece, puede necesitar ajustar los tamaños (y guardar y restaurar) las particiones adjuntadas también.
Como cambiar una partición es doloroso, es preferible establecerlas correctamente al principio, o tener un rápido y fácil de utilizar sistema de copia de seguridad. Si está instalando desde un medio que no requiere demasiada intervención humana (digamos, desde un CD-ROM, en contraposición a los disquetes), es generalmente más fácil probar con diferentes configuraciones al principio. Como no tiene todavía datos que guardar, no es tan costoso el modificar particiones varias veces.
Existe un programa de MS-DOS, llamado fips, [13] que redimensiona una partición MS-DOS sin tener que guardar y restaurar, pero para otros sistemas de archivos es todavía necesario.
N.T.: Existe un programa muy útil para Linux llamado ntfs-resize que pertenece al proyecto Linux-ntfs. Puede redimensionar de manera segura y no destructiva particiones de tipo NTFS. Además soporta todas las versiones de NTFS y trabaja aún cuando el sistema de archivos se encuentre fragmentado. (11/05/2005)Cada partición y partición extendida posee su propio archivo de
dispositivo. El convenio de nombres para estos archivos es que se añade un
número de partición detrás del nombre del disco entero, con el convenio de que
las particiones primarias van del 1 al 4 (independientemente de cuantas
particiones primarias existan) y las particiones lógicas tienen números mayores
que 5 (independientemente de la partición primaria en la que residan). Por
ejemplo, /dev/hda1
es la primera partición primaria del
primer disco duro IDE, y /dev/sdb7
es la tercera partición
extendida en el segundo disco duro SCSI.
[12] Este detalle ya no es válido para las nuevas versiones de LILO, ya que actualmente soporta LBA (Logical Block Addressing). Consulte la documentación de su distribución para conocer si la versión de LILO provista tiene soporte LBA.
[13] El programa fips está incluído en la mayoría de las distribuciones Linux. El gestor de particiones comercial “Partition Magic” tambien tiene una característica similar, y además su interface es mas agradable. Por favor recuerde que modificar las particiones es peligroso, y asegúrese de contar con un backup reciente de cualquier información importante antes de intentar cambiar el tamaños de las particiones. El programa GNU parted puede modificar el tamaño de otros tipos de particiones, aunque algunas veces de manera mas limitada. Consulte la documentación de parted antes de utilizarlo, mejor estar seguro que estar preocupado.