Particiones

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.

El MBR, sectores de arranque y la tabla de particiones

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
$

Particiones extendidas y lógicas

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.

Figura 6.2. A sample hard disk partitioning.

A sample hard disk partitioning.

Tipos de particiones

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          

Particionando el disco duro

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)

Archivos de dispositivo y particiones

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.