El sistema de ficheros en Linux

Abstract

Este documento describe las características principales de los sistema de ficheros en linux y las operaciones necesarias básicas de mantenimiento.


Tabla de contenidos
Sistema de ficheros
Montaje y desmontaje de un sistema de ficheros
Espacio de intercambio
Organización del almacenamiento
Cuotas de disco
Seguridad en el sistema de ficheros

Sistema de ficheros

Tipos y dispositivos

Definición y tipos de sistemas de ficheros

En primer lugar vamos a definir un sistema de ficheros como la organización lógica de un dispositivo que nos permite almacenar y recuperar información en forma de fichero. Existen diversos tipos de sistemas de ficheros, es decir diferentes formas de organizar la información en un dispositivo, normalmente discos. Entre los más habituales tenemos:

  • ext2, ext3 Es el sistema de ficheros nativo de Linux. Se organiza en un superbloque, i-nodos y área de datos. Este tipo de sistema de ficheros admite características multiusuario para indicar los permisos y la propiedad de ficheros y directorios.

  • vfat 12, 16 y 32 Es el sistema de ficheros usados por la gama baja de las plataformas win32. No admite características multiusuario como propiedad de ficheros. Estos tipos de sistemas de ficheros se basan en un directorio y una tabla de localización que dependiendo del tamaño de cada elemento se denomina FAT 12, 16 o 32. Linux los admite sin ningún problema, aunque siempre es preferible usar ext2.

  • iso9660Es el sistema de ficheros propio de los CDROM.

  • msdos Análogo a los sistemas FAT, aunque sólo admite ficheros con nombre 8+3.


Particiones

Una partición es una división del disco que se gestiona de forma lógica independiente al resto de las particiones del disco. Cada partición puede contener su propio sistema de ficheros. Esta división se describe en la tabla de particiones que se encuentra en el sector cero del disco (MBR). Tenemos que tener en cuenta que Linux necesita al menos una partición para su sistema de ficheros raíz. Además también es necesario usar particiones de intercambio (swap) en la mayoría de los casos. 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.

Dispositivos

En particular los dipositivos de almacenamiento que nos interesan son los discos. 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.

Tenemos distintos tipos de dispositivos para discos:

Floppy:

/dev/fdX donde fd indica floppy disk X indica las características de la unidad. Lo más habitual es que X tenga el valor 0 (primera unidad de floppy) aunque también podemos indicar las características físicas de los disquetes con los distintos valores de X.



Por ejemplo:


0 brw-rw---- 1 pfabrega floppy 2, 0 Jan 11 2000 /dev/fd0
0 brw-rw---- 1 pfabrega floppy 2, 12 Jan 11 2000 /dev/fd0D360
0 brw-rw---- 1 pfabrega floppy 2, 16 Jan 11 2000 /dev/fd0D720
0 brw-rw---- 1 pfabrega floppy 2, 28 Jan 11 2000 /dev/fd0H1440
0 brw-rw---- 1 pfabrega floppy 2, 12 Jan 11 2000 /dev/fd0H360
0 brw-rw---- 1 pfabrega floppy 2, 16 Jan 11 2000 /dev/fd0H720
0 brw-rw---- 1 pfabrega floppy 2, 4 Jan 11 2000 /dev/fd0d360
0 brw-rw---- 1 pfabrega floppy 2, 8 Jan 11 2000 /dev/fd0h1200
0 brw-rw---- 1 pfabrega floppy 2, 20 Jan 11 2000 /dev/fd0h360
0 brw-rw---- 1 pfabrega floppy 2, 24 Jan 11 2000 /dev/fd0h720
0 brw-rw---- 1 pfabrega floppy 2, 1 Jan 11 2000 /dev/fd1
0 brw-rw---- 1 pfabrega floppy 2, 13 Jan 11 2000 /dev/fd1D360
0 brw-rw---- 1 pfabrega floppy 2, 17 Jan 11 2000 /dev/fd1D720
0 brw-rw---- 1 pfabrega floppy 2, 29 Jan 11 2000 /dev/fd1H1440
0 brw-rw---- 1 pfabrega floppy 2, 13 Jan 11 2000 /dev/fd1H360
0 brw-rw---- 1 pfabrega floppy 2, 17 Jan 11 2000 /dev/fd1H720
0 brw-rw---- 1 pfabrega floppy 2, 5 Jan 11 2000 /dev/fd1d360
0 brw-rw---- 1 pfabrega floppy 2, 9 Jan 11 2000 /dev/fd1h1200
0 brw-rw---- 1 pfabrega floppy 2, 21 Jan 11 2000 /dev/fd1h360
0 brw-rw---- 1 pfabrega floppy 2, 25 Jan 11 2000 /dev/fd1h720

Observamos como en lugar del tamaño del fichero nos aparecen los numeros mayor (2) y menor del dispositivo. En el listado anterior /dev/fdH1440 haría referencia a la segunda unidad de disquete de alta densidad trabajando con una capacidad de 1440k.

Discos

duros IDE. /dev/hdxy donde x representa la unidad completa con los valores a,b,c y d para los cuatro posibles discos duros IDE. El valor y representa el número de partición dentro de cada uno de los discos. Por ejemplo /dev/hdc1 representa la primera partición del tercer disco duro. Si omitimos el número de partición estaremos haciendo referencia a la unidad de disco completa, sin tener en cuenta particiones. Un lector de cdrom IDE se representa como una unidad completa, por ejemplo /dev/hdb, si estuviera como esclavo de la IDE primaria. Linux admite hasta 8 discos IDE (a-h). Los discos IDE pueden tener hasta 63 particiones.

Discos

duros SCSI /dev/sdxy Muy parecido a los discos IDE salvo que no existe la limitación de 8 dispositivos. Los discos SCSI pueden tener hasta 15 particiones.

Lector

de cdrom SCSI /dev/scdx donde x toma los valores entre 0 y 7.


Creación de la partición

Para modificar las particiones de una uniad de disco disponemos de la orden fdisk.

Con la orden fdisk podemos ver la lista de particiones de una determinada unidad si le añadimos la opción -l. Por ejemplo:

fdisk -l /dev/hda


Disk /dev/hda: 14 heads, 49 sectors, 969 cylinders Units = cylinders of 686 * 512 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 166 56913+ 6 FAT16
/dev/hda2 167 943 266511 83 Linux
/dev/hda3 944 969 8918 82 Linux swap

Nos dice que tenemos un disco con tres particiones. La primera de tipo FAT16, la segunda de tipo Linux (ext2) y una tercera de intercambio (swap).

Si lo que queremos es modficar la lista de particiones entonces usamos la orden fdisk indicando sólo el dispositivo correspondiente a la unidad que queremos editar. Por ejemplo:

fdisk /dev/hda

y el sistems responde con:


Command (m for help):

Si pulsamos m, obtenemos el menú de opciones de fdisk:


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)

Como opciones más importantes tenemos:

d

para borrar una partición,

n

para añadir una nueva partición,

l

para ver los tipos de particiones disponibles y

t

para modificar el tipo de partición.



La opción

p

nos muestra los resultados iguales a la salida de la opción -l de la línea de órdenes. Con la opción

q

salimos sin realizar modificaciones. Con la opción

w

se graban los cambios.



Cada nueva partción que creamos se asigna el tipo Linux (ext2). Si queremos crearla de otro tipo tendremos que modificarla con las opciones l y t.

Si en el sistema tenemos una única partición de tipo FAT y no queremos perder la información almacenada, antes de instalar Linux, deberemos de desfragmentar el disco y usar fips u otro programa para crear una nueva partición.

En general, al modificar una partición se pierde todo su contenido.

Creación de un sistema de ficheros: mkfs

Una vez que tenemos creada un partición podemos dedicarla a dos usos; para contener ficheros o bien como partición de intercambio; este último caso lo veremos más adelante.

Pues bien, para contener ficheros necesitamos crear un sistema de ficheros en la partición. Para esto disponemos de la orden mkfs, a la cual le tendremos que indicar el tipo de sistema, con la opción -t y el dispositivo en el que quermos crearla. Por ejemplo, para crear un sistema de ficheros en la segunda partición del tercer disco duro ide, pondremos:

mkfs -t ext2 /dev/hdc2

A estas alturas el lector se debe imaginar que al crear un nuevo sistema de ficheros en una partición se borra el contenido previo de dicha partición.

Al crear un sistema de ficheros se crea automáticamente el directorio lost+found. Este directorio lo utiliza el sistema para guardar la información perdida cuando se deteriora el sistema de ficheros correspondiente.

Verificar un sistema de ficheros: fsck

En ciertas ocasiones es necesario verificar la integridad del sistema de ficheros y corregir los posibles errores que hubiese. Esta acción la realiza la orden fsck.

Para verificar un sistema de ficheros es aconsejable hacerlo mientras este está desmontado. Es una forma de evitar riesgos innecesarios.

Si tiene que verificar alguna partición que el sistema monta automáticamente durante el arranque reinicie su sistema poniendo init=/bin/bash en el indicador de lilo.

Ver la página del manual para más detalles.