FDISK(8)

NOMBRE
fdisk - Manipulador de tablas de particiones para Linux

SINOPSIS
fdisk [-b] [-u] [dispositivo]

fdisk -l [-b] [-u] [dispositivo ...]

fdisk -s partición ...

fdisk -v

DESCRIPCIÓN
Los discos duros pueden dividirse en uno o más discos lógicos llamados las particiones. Esta división se describe en la tabla de particiones y se encuentra en el sector número 0 del disco.

En el mundo BSD uno habla de `rodajas de disco' y de una `etiqueta de disco'.

Linux necesita por lo menos una partición, a saber, para su sistema de ficheros raíz. Puede usar ficheros o particiones para el trasiego (swap), pero las particiones son más eficientes. Así que, usualmente, uno querrá una segunda partición dedicada al trasiego. En equipos compatibles con Intel, la BIOS que arranca el sistema puede a menudo acceder solamente a los primeros 1024 cilindros del disco. Por esta razón la gente con discos grandes a menudo crean una tercera partición, de sólo unos cuantos MB de grande, montada típicamente en /boot, para almacenar allí la imagen del núcleo y unos pocos ficheros auxiliares que se necesitan en el momento del arranque, de forma que uno se asegure de que estas cosas están accesibles para la BIOS. Por razones de seguridad, facilidad de administración, copias de seguridad o pruebas, uno puede querer hacer más particiones de las mínimas recomendadas anteriormente.

fdisk (en la primera forma de llamarse) es un programa guiado por menús para la creación y manipulación de tablas de partición.

Entiende las tablas de partición tipo DOS y las etiquetas de disco de tipo BSD o Sun.

El dispositivo es usualmente uno de los siguientes:
    /dev/hda
    /dev/hdb
    /dev/sda
    /dev/sdb
(/dev/hd[a-h] para discos IDE, /dev/sd[a-p] para discos SCSI, /dev/ed[a-d] para discos ESDI, /dev/xd[ab] para discos XT). Un nombre de dispositivo se refiere al disco entero.

La partición es un nombre de dispositivo seguido por un número de partición. Por ejemplo, /dev/hda1 es la primera partición del primer disco duro IDE en el sistema. Los discos IDE pueden tener hasta 63 particiones, los SCSI hasta 15. Vea también /usr/src/linux/Documentation/devices.txt.

Una etiqueta de disco BSD/Sun puede describir 8 particiones, la tercera de las cuales debería ser una partición del `disco entero'. No haga comenzar una partición que realmente use su primer sector (como una partición de trasiego) en el cilindro 0, pues eso destruiría la etiqueta de disco.

Una tabla de partición tipo DOS puede describir un número ilimitado de particiones. En el sector 0 hay sitio para la descripción de 4 particiones (llamadas `primarias'). Una de éstas puede ser una partición extendida; ésta es como una caja que aloja particiones lógicas, con descriptores que se encuentran en una lista enlazada de sectores, cada uno de los cuales precede a las particiones lógicas correspondientes. Las cuatro particiones primarias, presentes o no, cogen los números del 1 al 4. Las particiones lógicas empiezan con el número 5.

En una tabla de particiones de tipo DOS el sitio de comienzo y el tamaño de cada partición se guarda de dos formas: como un número absoluto de sectores (dados en 32 bits) y como una tripleta Cilindros/Cabezas/Sectores (C/H/S) (dados en 10+8+6 bits). La primera forma está bien: con sectores de 512 bytes, esto funcionará hasta 2 TB. La última forma tiene dos problemas diferentes. Lo primero, estos campos C/H/S pueden llenarse sólo cuando el número de cabezas y el de sectores por pista se conocen. En segundo lugar, incluso si conocemos cuáles deberían ser estos números, los 24 bits disponibles no bastan. DOS emplea solamente la forma C/H/S, Windows usa ambas, Linux nunca utiliza C/H/S.

Si es posible, fdisk obtendrá la geometría del disco automáticamente. Ésta no es necesariamente la geometría física del disco (de hecho, los discos modernos no tienen realmente nada como una geometría física, ciertamente no algo que pueda describirse de forma tan simplista como la forma Cilindros/Cabezas/Sectores), pero es la geometría del disco que MS-DOS emplea para la tabla de particiones.

Usualmente todo marcha bien sin hacer nada más, y no hay problemas si Linux es el único sistema en el disco. Sin embargo, si el disco tiene que compartirse con otros sistemas operativos, a menudo es una buena idea dejar que un fdisk de otro sistema operativo haga al menos una partición. Cuando Linux arranca mira la tabla de particiones, e intenta deducir qué (falsa) geometría se requiere para la buena cooperación con otros sistemas.

Cada vez que una tabla de particiones se muestra en la salida, se realiza una comprobación de consistencia en las entradas de la tabla de particiones. Esta comprobación verifica que los puntos de inicio y final físicos y lógicos son idénticos, y que la partición empieza y acaba en un límite de cilindro (excepto para la primera partición).

Algunas versiones de MS-DOS crean una primera partición que no empieza en un límite de cilindro, sino en el sector 2 del primer cilindro. Las particiones que comienzan en el cilindro 1 no pueden comenzar en un límite de cilindro, pero esto es muy poco probable que cause la menor dificultad a menos que tenga OS72 en su máquina.

Se realizan un sync() y una llamada ioctl() BLKRRPART (releer la tabla de particiones del disco) antes de salir del programa cuando la tabla de particiones ha sido actualizada. Hace tiempo solía ser necesario rearrancar tras el empleo de fdisk. No creo que éste sea más el caso; de hecho, rearrancar demasiado rápidamente puede provocar una pérdida de datos aún no escritos. Observe que tanto el núcleo como el hardware del disco pueden mantener datos en memoria tampón.

AVISO EN DOS 6.x

La orden FORMAT de DOS 6.x busca cierta información en el primer sector del área de datos de la partición, y trata esta información como más fiable que la de la tabla de particiones. El FORMAT de DOS espera que su FDISK borre los primeros 512 bytes del área de datos de una partición cada vez que tenga lugar un cambio de tamaño. El FORMAT de DOS mirará esta información extra incluso si se da la opción /U; nosotros consideramos esto como un fallo del FORMAT y del FDISK de DOS.

La moraleja de esto es que si Ud. emplea cfdisk o fdisk para cambiar el tamaño de una entrada de la tabla de particiones de DOS, entonces también debería utilizar dd para poner a cero los primeros 512 bytes de esa partición antes de emplear el FORMAT de DOS para formatear la partición. Por ejemplo, si Ud. ha estado usando cfdisk para crear una entrada en la tabla de particiones de DOS para /dev/hda1, entonces (tras salir de cfdisk o fdisk y rearrancar Linux para que la información de la tabla de particiones sea válida) Ud. debería emplear la orden "dd if=/dev/zero of=/dev/hda1 bs=512 count=1" para poner a cero los primeros 512 bytes de la partición.

SEA EXTREMADAMENTE CUIDADOSO si usa el programa dd, puesto que un pequeño error tecleando puede arruinar todos los datos de su disco.

Para los mejores resultados, Ud. siempre debería emplear un programa de tabla de particiones específico del S.O. Por ejemplo, debería crear particiones DOS con el programa FDISK de DOS y particiones de Linux con uno de los programas de Linux fdisk o cfdisk.

OPCIONES

-v  Muestra el número de versión del programa fdisk y acaba.

-l  Lista las tablas de particiones para /dev/hd[a-d], /dev/sd[a-h], /dev/ed[a-d], y luego acaba.

-b  Cuando se listen tablas de particiones, también muestra una columna `Begin' (Comienzo), como hacían versiones anteriores de fdisk de forma predeterminada. (Nota: los valores de esta columna, cuando se dan en unidades de número de cilindros, no pueden ser mayores de 1023. No hay nada malo en que Begin y Start difieran, al menos no en lo que respecta a Linux.)

-u  Cuando se listen tablas de particiones, da los tamaños en número de sectores en vez de cilindros.

-s partición
    Se muestra en la salida estándar el tamaño de la partición (en bloques). Este valor se usa normalmente como un argumento para el programa mkfs(8) para especificar el tamaño de la partición que será formateada. (Versiones más antiguas de fdisk harían esto solamente si el id. de la partición fuera mayor que 10, en un intento de rehusar particiones DOS; esta comprobación se ha quitado del programa.) Observe que sfdisk -s da respuestas diferentes (esto es, correctas). Las razones para la diferencia son que el núcleo y fdisk no necesitan tener la misma idea sobre la numeración de las particiones (p.ej., en el caso de que Ud. tenga rodajas BSD), y tienen ideas diferentes sobre el tamaño de una partición extendida.

FALLOS
Hay algunos programas *disk por ahí. Cada uno tiene sus problemas y sus cosas buenas. Pruébelos en el orden cfdisk, fdisk, sfdisk.

AUTORES
A. V. Le Blanc (LeBlanc@mcc.ac.uk), Bernhard Fastenrath (fasten@informatik.uni-bonn.de), Jakub Jelinek (jj@sunsite.mff.cuni.cz), y muchos otros.