Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Tecnología del PC

[Home]  [Inicio]  [Índice]


 Prev. | Sig.

8.1.2c3  El particionador (II)

§3  Particionador en Linux

En realidad, Linux dispone de varias utilidades relacionadas con el manejo de particiones en las unidades de disco; similares entre sí, aunque con características específicas. Entre ellas están las siguientes:

  • cfdisk, utilidad que permite crear una partición en un espacio vacío, así como manipular la tabla de particiones de una unidad; establecer si la unidad será arrancable ("bootable") o no; borrar la partición actual; cambiar la geometría (cilindros, cabezas y sectores por pista); establecer el tipo de partición [1] de la unidad, y escribir la tabla de particiones en el disco.
  • mkfs. Utilidad que permite crear un sistema de ficheros en un dispositivo (generalmente en una partición).  En realidad esta utilidad es una interfaz para las rutinas específicas que permiten crear los distintos sistemas de ficheros soportados por Linux ( 8.1.2a).
  • parted. Se trata de un particionador y redimensionador de particiones de disco, que permite crear; destruir; redimensionar; mover y copiar particiones tipo normal y swap de Linux. Además, en caso necesario puede crear un sistema de ficheros para la partición, que pueden ser ext2;  ext3; linux-swap; reiserfs; FAT16 y FAT32.  Es adecuado para reorganizar la utilización de los discos, así como para copiar los datos a otras unidades, incluso replicar instalaciones (más detalles en la página siguiente). 
  • fdisk.  Una utilidad conducida por menú  ("menu driven") que tiene el mismo nombre que su análoga en DOS y es muy similar en cuanto a su funcionamiento .

fdisk es un programa peligroso!! Sea precavido.  No lo utilice en una unidad (ni aún en un equipo) con información sensible, a menos que sepa realmente qué está haciendo.  Por lo menos no diga que no le he advertido!!.

§3.1  Sinopsis

Antes de entrar en detalles sobre las formas de realizar particiones, debemos recordar que en Linux, los dispositivos, aparecen como entradas en el directorio /dev (de "devices"), y reciben nombres estandarizados según su tipo [2]. Por ejemplo:

/dev/hda, /dev/hdb, /dev/hdc. Para dispositivos IDE.

/dev/hda  dispositivo maestro en el controlador primario

/dev/hdb  dispositivo esclavo en el controlador primario

/dev/hdc  dispositivo maestro en el controlador secundario

/dev/hdd  dispositivo esclavo en el controlador secundario

/dev/sda, /dev/sdb, /dev/hdc, etc. Para dispositivos SCSI.

/dev/sda. Primper dispositivo SCSI

/dev/sdb. Segundo dispositivo SCSI

dev/hdc. Tercer dispositivo SCSI.

etc.

/dev/eda, /dev/edb, /dev/edc, etc. Para dispositivos ESDI.

etc.

Dentro de cada unidad pueden existir hasta 4 particiones, y dentro de ellas distintos volúmenes lógicos (en la terminología Linux se denominan respectivamente particiones primarias y particiones lógicas). Cualquiera que sea su tipo, las particiones dentro de cada unidad se distinguen mediante números.  Por ejemplo:

sda    1er dispositivo (drive) SCSI
sda1  1ª partición primaria en el 1er dispositivo
sda2  2ª partición     "
sda3  3ª     "            "
sda4  4ª     "            "
sdb    2º dispositivo SCSI
sdc    3er dispositivo SCSI
... etc.

El resultado es que un sistema puede montar distintos tipos de disco con varias particiones/volúmenes en cada uno de ellos.  Por ejemplo, un sistema puede tener:

hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 hda9 hda10 hda11 >
hdc: hdc1 < hdc5 hdc6 hdc7 hdc8 >

En este caso, el primer dispositivo del primer controlador IDE tiene 4 particiones primarias y 7 secundarias (volúmenes lógicos en la terminología DOS). A su vez, el primer disco del segundo controlador contiene una partición primaria con cuatro secundarias en su interior.

Nota: un dispositivo (drive) IDE puede tener hasta 4 particiones primarias y un número ilimitado de particiones lógicas en cada una de ellas. Observe que el número de la primera partición lógica es siempre 5.


En Linux
, el esquema de particiones y distribución de discos puede obtenerse con el comando fdisk -l. La salida informa de las características lógicas de cada unidad física conectada en el sistema [6]: tamaño total; número de cabezas, sectores y cilindros. A continuación, un detalle de la distribución interior de la unidad, caso de que haya sido particionada. Por ejemplo, aplicando este comando al equipo cuya distribución de particiones y volúmenes se vio en la página anterior bajo DOS (arrancado ahora bajo Linux), se obtienen los siguientes resultados:

Disk /dev/hda: 15.1 GB, 15103033344 bytes
255 heads, 63 sectors/track, 1836 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot  Start      End    Blocks   Id  System
/dev/hda1   *       1      255   2048256    b  Win95 FAT32
/dev/hda2         256     1027   6201090    f  Win95 Ext'd (LBA)
/dev/hda3        1028     1052    200812+  82  Linux swap
/dev/hda4        1053     1836   6297480   83  Linux
/dev/hda5         256      510   2048256    b  Win95 FAT32
/dev/hda6         511      765   2048256    b  Win95 FAT32
/dev/hda7         766     1020   2048256    b  Win95 FAT32
/dev/hda8        1021     1027     56196    6  FAT16

Puede comprobarse que existe una sola unidad física conectada (IDE), y que el resultado es mucho más detallado que el proporcionado por su contrapartida DOS. La columna id señala el tipo de partición. 82 y 83 corresponden respectivamente a una partición swap y normal (ext2) de Linux [4]; b es FAT32 DOS/Windows; 6 es FAT16, y f es la partición extendida DOS (que contiene las unidades lógicas). Ver a continuación la lista completa de tipos .

Las tres primeras líneas deben interpretarse como sigue: la unidad tiene 63 sectores en cada pista (track), o lo que es lo mismo, sectores/cabeza ("Head"); abreviadamente 63 S/H. Como hay 255 cabezas/cilindro (255 H/Cyl), el número de sectores por cilindro es  63 S/H x 255 H/Cyl = 16065 S/Cyl. Como el tamaño estándar de un sector es de 512 byte ( 8.1.2), la capacidad de un cilindro es 16065 S/Cyl x 512 Bytes/S = 8225280 Bytes/Cyl.  Finalmente, puesto que la unidad tiene 1836 cilindros, su capacidad total es 8225280 Bytes/Cyl x 1836 Cyl = 15.101.614.080 Bytes.

Nota: los 1.419.264 Bytes de diferencia entre el valor teórico y la capacidad "real" del dispositivo señalada en la primera línea (15.103.033.244 Bytes), son desaprovechados. Esta diferencia hay que buscarla en el ajuste entre las características reales del dispositivo y el artificio cabezas, sectores, pistas (HST) utilizado para su manejo. Por supuesto, la unidad no tiene 255 cabezas.  En este caso concreto tiene solo dos. De hecho, el ajuste entre la realidad y el artificio HST puede variar incluso para una misma unidad [3].

El número total de cilindros (1836 en este caso) es importante, porque las particiones Linux se definen mediante los números de cilindro inicial y final.  El valor mínimo es 1, el máximo es el último cilindro del dispositivo.

Nota:  el truco para saber quién contiene qué, y si existen espacios libres/desaprovechados, consiste en controlar los valores Start y End de los cilindros utilizados por la partición. Por ejemplo, en este caso, la partición extendida DOS /dev/hda2 (segunda partición primaria de la unidad), que empieza en el cilindro 256 y termina en la 1027, contiene las particiones lógicas /dev/hada5, /dev/hada6, /dev/hda7 y /dev/hda8. A continuación sigue la partición swap de Linux (primaria) y la normal Linux, también primaria, que se extiende hasta el final del disco (último cilindro).

Utilizando la nomenclatura estándar de Linux, la distribución del dispositvo IDE sería:

hda: hda1 hda2 < hda5 hda6 hda7 hda8 > hda3 hda4

Las unidades "montadas" (que no es lo mismo que unidades conectadas) pueden verse en el fichero /etc/mtab, y el espacio libre en las distintas unidades del sistema puede verse con el comando df.

§3.2  fdisk

La forma más simple de utilizar esta utilidad es mediante el comando

fdisk dispositivo

donde dispositivo es una unidad física o lógica. Por ejemplo, en el equipo anterior puede ser /dev/hda/dev/hda8, etc.  En el primer caso, las operaciones se refierirían a la totalidad de la unidad, y en el segundo a la partición de 56196 bloques.

Una vez tecleado el comando, el sistema responde:

Command (m for help):

A continuación pueden introducirse las acciones deseadas. Si elegimos m, aparece el menú con las opciones disponibles:

Command action
   a  toggle a bootable flag
   b  edit bsd disklabel
   c  toggle the dos compatibility flag
   d  delete a partition
   l  list known partition types
   m  print this menu
   n  add a new partition
   o  create a new empty DOS partition table
   p  print the partition table
   q  quit without saving changes
   s  create a new empty Sun disklabel
   t  change a partition's system id
   u  change display/entry units
   v  verify the partition table
   w  write table to disk and exit
   x  extra functionality (experts only)


Al decidir el tipo de partición deseada, recuerde que Windows no puede "ver" las particiones Linux, mientras que a la inversa sí. Al final es conveniente utilizar la opción v (verificar la tabla), que proporciona el espacio desaprovechado ("unallocated sectors"). Si las particiones definidas no ocupan la totalidad de la unidad, se muestra el espacio disponible para nuevas particiones o volúmenes lógicos.  Si se ha agotado la unidad, es normal que existan algunos sectores desaprovechados (si son pocos no se preocupe).  Por ejemplo, en el sistema anterior , el resultado es:

310 unallocated sectors

Al finalizar nuestras operaciones es imprescindible escribir los cambios en el disco y salir con w. Salir sin cambios con q. Observará que el sistema va proporcionando nombre a las particiones (de acuerdo con las reglas antes mencionadas ) a medida que usted las crea.

  La opción x conduce a un submenú que, entre otras posibilidades, permite modificar la geometría lógica del dispositivo (número de cilindros y cabezas  6.2).  El programa avisa que estamos en modo "experto":

 Expert command (m for help):

Seleccionando m, se muestran las nuevas opciones:

Command action
   b  move beginning of data in a partition
   c  change number of cylinders
   d  print the raw data in the partition table
   e  list extended partitions
   f  fix partition order
   g  create an IRIX (SGI) partition table
   h  change number of heads
   m  print this menu
   p  print the partition table
   q  quit without changes
   r  return to main menu
   s  change the number of sectors/track
   v  verify the partition table
   w  write table to disk and exit


  La opción p muestra la tabla de particiones de la unidad. Es exactamente la misma información que se obtiene con el comando fdisk -l  , aunque en este caso, solo la correspondiente a la unidad seleccionada al iniciar fdisk.  Puede ser buena idea utilizar esta opción después de cada operación para ver el resultado.  En una unidad cuya definición es

sda: sda1 sda2 < sda5 sda6 sda7 sda8 >

la invocación de fdisk seria:

fdisk /dev/sda

y la opción p proporciona el siguiente resultado (consideraremos esta misma unidad en el resto de ejemplos):

Disk /dev/sda: 10.0 GB, 10056130560 bytes
240 heads, 63 sectors/track, 1299 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sda1   *         1       271   2048728+   b  Win95 FAT32
/dev/sda2           272      1299   7771680    f  Win95 Ext'd (LBA)
/dev/sda5           272       536   2003368+   b  Win95 FAT32
/dev/sda6           537       801   2003368+   b  Win95 FAT32
/dev/sda7           802      1066   2003368+   b  Win95 FAT32
/dev/sda8          1067      1299   1761448+   b  Win95 FAT32


  La opción l muestra los tipos de particiones posibles en Linux (columna Id). Son los siguientes:

 0 Empty           1c  Hidden Win95 FA 70  DiskSecure Mult bb  Boot Wizard hid

 1 FAT12           1e  Hidden Win95 FA 75  PC/IX           be  Solaris boot

 2 XENIX root      24  NEC DOS         80  Old Minix       c1  DRDOS/sec (FAT-

 3 XENIX usr       39  Plan 9          81  Minix / old Lin c4  DRDOS/sec (FAT-

 4 FAT16 <32M      3c  PartitionMagic  82  Linux swap      c6  DRDOS/sec (FAT-

 5 Extended        40  Venix 80286     83  Linux           c7  Syrinx

 6 FAT16           41  PPC PReP Boot   84  OS/2 hidden C:  da  Non-FS data

 7 HPFS/NTFS       42  SFS             85  Linux extended  db  CP/M / CTOS / .

 8 AIX             4d  QNX4.x          86  NTFS volume set de  Dell Utility

 9 AIX bootable    4e  QNX4.x 2nd part 87  NTFS volume set df  BootIt

 a OS/2 Boot Manag 4f  QNX4.x 3rd part 8e  Linux LVM       e1  DOS access

 b Win95 FAT32     50  OnTrack DM      93  Amoeba          e3  DOS R/O

 c Win95 FAT32 (LB 51  OnTrack DM6 Aux 94  Amoeba BBT      e4  SpeedStor

 e Win95 FAT16 (LB 52  CP/M            9f  BSD/OS          eb  BeOS fs

 f Win95 Ext'd (LB 53  OnTrack DM6 Aux a0  IBM Thinkpad hi ee  EFI GPT

10 OPUS            54  OnTrackDM6      a5  FreeBSD         ef  EFI (FAT-12/16/

11 Hidden FAT12    55  EZ-Drive        a6  OpenBSD         f0  Linux/PA-RISC b

12 Compaq diagnost 56  Golden Bow      a7  NeXTSTEP        f1  SpeedStor

14 Hidden FAT16 <3 5c  Priam Edisk     a8  Darwin UFS      f4  SpeedStor

16 Hidden FAT16    61  SpeedStor       a9  NetBSD          f2  DOS secondary

17 Hidden HPFS/NTF 63  GNU HURD or Sys ab  Darwin boot     fd  Linux raid auto

18 AST SmartSleep  64  Novell Netware  b7  BSDI fs         fe  LANstep

1b Hidden Win95 FA 65  Novell Netware  b8  BSDI swap       ff  BBT


  La opción o es quizás la más peligrosa!!. Si invoca fdisk sobre una unidad física.  Por ejemplo, en nuestro caso, con el comando

fdisk /dev/sda

y a continuación selecciona o y w, habrá eliminado todas las particiones existentes y en su lugar habrá una única partición primaria DOS.!! 


  La opción u permite cambiar el tipo de unidad que se utilizará en el resto de opciones (por defecto se utilizan sectores). La selección conmuta entre mostrar/usar unidades en sectores o cilindros. En cada ocasión se muestra alguno de los siguientes mensajes:

Changing display/entry units to cylinders

Changing display/entry units to sectors


  La opción d permite borrar una partición. La operatoria depende de que la unidad física a la que estamos aplicando fdisk tenga una o más particiones o volúmenes.  Por ejemplo, si solo tiene un volumen, el borrado es inmediato [5]; la respuesta es:

Command (m for help): d

Selected partition 1 

Si por el contrario la distribución interna de la unidad es la del ejemplo anterior , al seleccionar d, se solicita el número de la partición a borrar:

Command (m for help): d

Partition number (1-8):

Aquí tiene que introducir un número. Si selecciona una partición inexistente. Por ejemplo 3 en el caso anterior, se obtiene un mensaje:

Warning: partition 3 has empty type

Si selecciona un número no válido.  Por ejemplo, 0 o 9, la respuesta es:

Value out of range

Nota: en los ejemplos que siguen supondremos que hemos introducido 8, con lo que hemos borrado la partición sda8, y que a continuación hemos seleccionado w para grabar los cambios.  El programa termina, y ahora la definición de la unidad es:

sda: sda1 sda2 < sda5 sda6 sda7 >

Volvemos a invocar fdisk con el comando

#  fdisk /dev/sda

La opción v produce la siguiente salida:

3523208 unallocated sectors

que correspondían al volumen sda8 borrado en el paso anterior 

  La opción n permite crear una nueva partición. Se obtiene la siguiente respuesta:

Command (m for help): n

Command action
   l   logical (5 or over)
   p   primary partition (1-4)

Seleccionando p, y a continuación 1 en la unidad del ejemplo:

Partition number (1-4): 1

Partition 1 is already defined. Delete it berfore re-adding it.

Command (m for help):

 Seleccionando de nuevo n y l (crear una partición lógica) se obtiene:

First cylinder (1067-1299, default 1067):

Observe que, por defecto, fisk intenta situar el principio de la nueva partición inmediatamente después del último cilindro ocupado. Pulsando Intro (valor por defecto) se obtiene:

Using default value 1067
Last cylinder or +size or +sizeM or +sizeK (1067-1299, default 1299):

Aquí puede introducirse el cilindro final o directamente el espacio deseado en Bytes, MBytes o KBytes. Aceptando el valor por defecto volvemos a crear la partición que borramos en el ejemplo anterior. La diferencia es que la nueva partición es tipo Linux.  En efecto, el comando p proporciona el siguiente resultado:

Disk /dev/sda: 10.0 GB, 10056130560 bytes
240 heads, 63 sectors/track, 1299 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sda1   *         1       271   2048728+   b  Win95 FAT32
/dev/sda2           272      1299   7771680    f  Win95 Ext'd (LBA)
/dev/sda5           272       536   2003368+   b  Win95 FAT32
/dev/sda6           537       801   2003368+   b  Win95 FAT32
/dev/sda7           802      1066   2003368+   b  Win95 FAT32
/dev/sda8          1067      1299   1761448+  83  Linux

En la página siguiente se muestra la forma que recomiendo para realizar particiones (especialmente si son tipo DOS/Windows para instalar en ellas sistemas de ficheros FAT).

  Inicio.


[1]  Por defecto Linux crea las nuevas particiones como particiones Linux, pero cfdisk puede crear particiones para otros sistemas operativos.

[2]  Seguramente su sistema Linux incluye un listado con las denominaciones "oficiales". En cualquier caso puede consultar la página adjunta, mantenida por Torben Mathiasen   Linux allocated devices

[3]  A continuación se muestra un caso real de un disco formateado y particionado con el fdisk del DOS. Inspeccionado con el fdisk de Linux muestra la siguiente información:

Disk /dev/sda: 10.0 GB, 10056130560 bytes
240 heads, 63 sectors/track, 1299 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Como puede verse, las "cuentas" cuadran (no hay espacio desaprovechado) y el tamaño teórico coincide con el indicado. Sorprendentemente, después de borradas las particiones existentes (con el fdisk de Linux) y totalmente desprovisto de ninguna estructura interna. Una vez reiniciado el equipo, el fdisk de Linux muestra la siguiente información sobre la unidad:

Disk /dev/sda: 10.0 GB, 10056130560 bytes
64 heads, 32 sectors/track, 9590 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

Como puede comprobarse, la reducción de cabezas se ha compensado con el aumento de cilindros. Pero el resultado teórico 10.055.843.840 Bytes no "cuadra" con el tamaño total. La diferencia de 286.720 Bytes serán desaprovechados en este nuevo ajuste.

[4]  Las particiones swap no se crean con fdisk, ni se montan con mount, ya que disponen de utilidades específicas. Son respectivamente mkswap y swapon (consulte el manual al respecto).

[5]  Recuerde que todavía debe escribir los cambios con w.  Mientras tanto, si sale con q, el borrado no tendrá ningún efecto.

[6]  Nos referimos a conectadas eléctricamente e identificadas por el Sistema.  Por ejemplo, si son unidades extraíbles, con conexión USB o PCMCIA (PC-Card) que hayan sido detectadas.  Sin embargo, sus particiones no tiene necesariamente que haber sido "montadas" en el sistema de ficheros Linux.

 

 Prev. | Sig.