11 rha130 administración del sistema de archivos de linux

31
Administración del sistema de archivos de Linux 1 Capítulo 1 Partición y reconocimiento de disco Conceptos clave La utilidad fdisk se utiliza para visualizar y editar tablas de particiones. Los discos pueden tener hasta 4 particiones primarias. Una partición primaria se puede utilizar como una partición extendida. La partición extendida se utiliza como un contenedor para guardar particiones lógicas múltiples. Cada partición tiene una etiqueta asociada que identifica cómo está pensado el uso de la partición. Discusión El sistema operativo de Linux maneja discos como una gran matriz que se puede dividir y estructurar para servir a una gran variedad de necesidades. Este cuaderno enseña las destrezas que permiten a los administradores configurar y estructurar discos de acuerdo con sus necesidades. Particiones de disco Como la mayoría de los sistemas operativos, Linux permite la división de discos en múltiples particiones, donde cada partición se maneja como un disco independiente. El proceso de crear particiones se conoce como particionar un disco. Cómo se refiere Linux a las particiones El kernel de Linux se refiere a las particiones individuales a través de nodos de dispositivo, donde el nombre del nodo se deriva al añadir el número de la partición al nombre del disco. Por ejemplo, la primera partición en el dispositivo se conoce como /dev/hda mientras que la séptima partición en el dispositivo /dev/sdc se conocería como /dev/sdc7. Rarezas de las particiones DOS Los sistemas operativos han establecido diferentes convenciones para registrar la información de partición de un disco. Dado que Linux históricamente ha operado entre sistemas operativos DOS, el esquema de partición más común es la partición DOS. El formato de partición DOS se derivó cuando un disco duro de 200 megabytes se consideraba grande y el número de particiones necesarias en el disco era pequeño, esto pronto trajo sus implicaciones. Figure 1. Muestra de particionamiento del dispositivo /dev/hda

Upload: bastian-bugueno

Post on 30-Nov-2015

36 views

Category:

Documents


2 download

TRANSCRIPT

Administración del sistema de archivos de Linux

1

Capítulo 1 Partición y reconocimiento de disco

Conceptos clave

• La utilidad fdisk se utiliza para visualizar y editar tablas de particiones. • Los discos pueden tener hasta 4 particiones primarias. • Una partición primaria se puede utilizar como una partición extendida. • La partición extendida se utiliza como un contenedor para guardar particiones

lógicas múltiples. • Cada partición tiene una etiqueta asociada que identifica cómo está pensado el

uso de la partición.

Discusión

El sistema operativo de Linux maneja discos como una gran matriz que se puede dividir y estructurar para servir a una gran variedad de necesidades. Este cuaderno enseña las destrezas que permiten a los administradores configurar y estructurar discos de acuerdo con sus necesidades.

Particiones de disco

Como la mayoría de los sistemas operativos, Linux permite la división de discos en múltiples particiones, donde cada partición se maneja como un disco independiente. El proceso de crear particiones se conoce como particionar un disco.

Cómo se refiere Linux a las particiones

El kernel de Linux se refiere a las particiones individuales a través de nodos de dispositivo, donde el nombre del nodo se deriva al añadir el número de la partición al nombre del disco. Por ejemplo, la primera partición en el dispositivo se conoce como /dev/hda mientras que la séptima partición en el dispositivo /dev/sdc se conocería como /dev/sdc7 .

Rarezas de las particiones DOS

Los sistemas operativos han establecido diferentes convenciones para registrar la información de partición de un disco. Dado que Linux históricamente ha operado entre sistemas operativos DOS, el esquema de partición más común es la partición DOS. El formato de partición DOS se derivó cuando un disco duro de 200 megabytes se consideraba grande y el número de particiones necesarias en el disco era pequeño, esto pronto trajo sus implicaciones.

Figure 1. Muestra de particionamiento del dispositivo /dev/hda

Administración del sistema de archivos de Linux

2

La tabla anterior muestra un disco particionado mediante el particionamiento DOS, incluyendo las características esbozadas a continuación.

El registro de arranque maestro (MBR)

El primer bloque (512 bytes) de cada disco se reserva para el registro de arranque maestro o MBR, (el tamaño del MBR en la tabla anterior está bastante desproporcionado). El MBR contiene los siguientes elementos.

• Gestor de arranque: En los discos de arranque, un nivel ejecutable conocido como un gestor de arranque habita en el MBR. En el arranque, la BIOS pasa el control al gestor de arranque, el cual es luego el responsable de cargar y pasar el control al sistema operativo apropiado. El gestor de arranque se tratará en más detalle en un cuaderno posterior.

• Tabla de partición: En cada disco, 64 bytes del registro maestro de arranque se reservan para la tabla de partición del disco. Esta pequeña cantidad de espacio registra información de más de 4 particiones conocidas como particiones primarias. Para cada partición, se registra una ubicación de inicio, de terminación y un tipo de partición.

Particiones primarias

Cada disco se puede dividir hasta en cuatro particiones primarias, cuyas propiedades se registran en la tabla de partición localizada en el MBR. Linux siempre utiliza los números de partición de 1 a 4 para referirse a las particiones primarias. En el diagrama anterior, la primera partición primaria, /dev/hda1 , es un sistema de archivos FAT para el sistema operativo de Windows. La segunda partición primaria /dev/hda2 , es una partición de intercambio (swap) utilizada por Linux para implementar la memoria virtual. La tercera partición, /dev/hda3 es un sistema de archivos ext3 que contiene una partición de arranque /boot de Linux.

La partición extendida

Con las tres particiones mencionadas anteriormente, ya estamos a punto de utilizar todas las cuatro particiones primarias permitidas. Como una forma de solventar esta limitación, se crea la estructura llamada partición extendida. La partición DOS permite que cualquier partición primaria sea utilizada como partición extendida. La partición extendida se utiliza como un contenedor para almacenar más particiones, conocidas

Administración del sistema de archivos de Linux

3

como particiones lógicas. Una vez una partición primaria es utilizada como partición extendida, no se puede utilizar para otro propósito.

Una partición extendida es opcional. Si cuatro particiones cubren las necesidades de partición para un disco determinado, entonces no se requiere una partición extendida. En teoría, cualquiera de las cuatro particiones primarias se puede utilizar como partición extendida. En la práctica, las primeras tres particiones generalmente se crean cuando se necesitan y la restante del disco se asigna como una cuarta partición primaria utilizada como la partición extendida. Esta estrategia se implementó en la figura anterior, donde /dev/hda4 sirve como partición extendida.

Particiones lógicas

Dentro de la partición extendida se pueden crear múltiples particiones lógicas. La información sobre particiones lógicas se mantiene como una lista de enlaces, por lo tanto, en teoría, no hay límite en el número de particiones lógicas que se pueden crear. En la práctica, los controladores de dispositivo imponen límites. No hay más de 63 particiones IDE y no más de 15 particiones SCSI. Linux siempre comienza por contar la primera partición lógica como la partición número 5, incluso si no se utilizan todas las 4 particiones primarias.

En la tabla anterior, 4 particiones lógicas (/dev/hda5 , /dev/hda6 , /dev/hda7 y /dev/hda8 ) contienen sistemas de archivo ext3 para las particiones / , /home , /var , y pub , respectivamente.

Partición con fdisk

La herramienta más utilizada de Red Hat Enterprise para la partición de discos es fdisk. La utilidad de la línea de comando se mantiene intencionalmente sencilla y sin pretensión, para que se pueda utilizar en un entorno mínimo tal como una shell de rescate. Como los usuarios estándar no tienen permiso de lectura de discos (y tampoco de modificación) directamente a través de su nodo de dispositivo, la utilidad fdisk sólo puede utilizarse como el usuario root.

Uso de fdisk para listar particiones

El uso más sencillo de fdisk es mostrar las particiones conocidas. Con la opción de línea de comando -l listará tablas de partición para todos los discos conocidos. En el siguiente ejemplo, fdisk -l genera una tabla de partición de los dos discos duros conectados en el sistema. La salida de este comando sencillo se ha divido en dos listados, con el fin de poder centrarnos en cada disco por separado.

[root@station root]# fdisk -l Disk /dev/hda: 120.0 GB, 120034123776 bytes 240 heads, 63 sectors/track, 15505 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes

Administración del sistema de archivos de Linux

4

Device Boot Start End Blocks Id S ystem /dev/hda1 1 540 4082368+ b W in95 FAT32 /dev/hda2 * 541 3249 20480040 7 H PFS/NTFS /dev/hda3 3250 3926 5118120 83 Linux

Ahora intentamos darle sentido a la estructura reportada del primer disco.

El primer disco tiene un tamaño de 120 gigabytes.

La línea muestra la geometría del dispositivo o la estructura interna del dispositivo. El parámetro importante es los cilindros, porque fdisk fuerza a las particiones a iniciar y terminar en los límites del cilindro. Un cilindro está compuesto por múltiples cabezas, que a su vez están compuestas por múltiples bloques de 512 bytes cada uno. Al hacer cuentas, en este disco cada cilindro contiene (512 bytes/cabeza) * (240 cabezas/sector) * (63 sectores/cilindro) = 7741440 bytes/cilindro, o cerca de 7.5 megabytes por cilindro.

En realidad no tuvimos que hacer todos estos cálculos, fdisk lo hizo por nosotros.

Aquí encontramos la tabla de partición real. Este disco solo tiene tres particiones, cada uno como una partición primaria, (¿cómo lo sabemos? Para los novatos, los números de partición son menores o iguales a 4). Cada línea da un nombre de dispositivo, el cilindro de inicio y terminación, el tamaño de la partición y el tipo de partición. Discutiremos más adelante la interpretación de estas líneas.

La última partición termina en el cilindro 3926, aunque sabemos por la línea que lista la geometría del disco (etiquetado "2" arriba) que el disco tiene 15505 cilindros. Podemos calcular que cada disco tiene cerca de (15505 - 3926 cilindros) * (7.5 megabytes/cilindro) = 87 gigabytes de espacio sin asignar.

Ahora nos enfocamos en el segundo disco, /dev/hdb .

Disk /dev/hdb: 80.0 GB, 80026361856 bytes 255 heads, 63 sectors/track, 9729 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id S ystem /dev/hdb1 * 1 9 72261 83 L inux

/dev/hdb2 10 270 2096482+ 82 L inux swap /dev/hdb3 271 1302 8289540 83 L inux /dev/hdb4 1303 9729 67689877+ f W in95 Ext'd (LBA) /dev/hdb5 1303 5127 30724281 83 L inux /dev/hdb6 5128 6171 8385898+ 83 L inux /dev/hdb7 6172 9729 28579603+ 83 Linux

Ahora realizamos un análisis similar en el segundo disco.

El segundo disco tiene un tamaño de 80 gigabytes.

Sabiendo que fdisk sí hace el trabajo por nosotros, nos enfocaremos en el número de cilindros, en este caso 9729...

Administración del sistema de archivos de Linux

5

...donde cada cilindro tiene un tamaño un poco mayor a 8 megabytes.

El disco ha asignado todos las cuatro particiones primarias.

La cuarta partición primaria se utiliza como la partición extendida, terminando en el último cilindro (9729) del disco.

Las particiones restantes son particiones lógicas. Observe que sus límites de cilindro caen dentro de los límites de la partición extendida (i.e. entre los números 1303 y 9729 inclusive).

La terminación de la última partición lógica (cilindro 9729) coincide con la terminación de la partición extendida, la cual coincide con el final del disco. No queda más espacio en el dispositivo.

Enfocándonos en una sola línea de la tabla de partición de fdisk

Con el fin de estudiar una línea en detalle, listaremos de nuevo la tabla de partición para el disco /dev/hda .

Disk /dev/hda: 120.0 GB, 120034123776 bytes 240 heads, 63 sectors/track, 15505 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot Start End Blocks Id S ystem /dev/hda1 1 540 4082368+ b W in95 FAT32 /dev/hda2 * 541 3249 20480040 7 H PFS/NTFS /dev/hda3 3250 3926 5118120 83 L inux

Cada línea de la partición contiene las siguientes siete columnas.

Table 1. Definiciones de columna para fdisk

Columna Función

Dispositivo El nodo de dispositivo que hace referencia a la partición, más utilizada como el "nombre" de la partición.

Arranque

Identifica la partición de "arranque". En cada disco se puede etiquetar una de las particiones primarias como de "arranque". Aunque Linux no la utiliza (si la utiliza el gestor de arranque MS/DOS), fdisk reporta y le permite al usuario establecer la partición de arranque.

Comienzo y fin

El cilindro de comienzo y fin de la partición.

Bloques

El tamaño de la partición en "bloques" de 1024 bytes (i.e. 1K). Por lo general, esta información es redundante (aunque conveniente) puesto que se puede calcular desde los límites del cilindro. Por ejemplo, para la partición /dev/hda2 , multiplicar el número de cilindros por el número de kilobytes por cilindro da como resultado 20480040.

Algunas veces, especialmente cuando alguna utilidad diferente a fdisk examina discos con particiones, los cilindros no se ajustan exactamente a

Administración del sistema de archivos de Linux

6

Columna Función

los límites de los cilindros. Por ejemplo, al hacer cálculos similares en la primera partición, (/dev/hda1 ), el número notificado está corto en 32 kilobytes. En tales situaciones, fdisk marca el número reportado de bloques y agrega un “+”.

Id El número digital hexadecimal 2 representa el Id del tipo de partición.

Sistema Un nombre de texto para el tipo de partición, tal como se define en el Id.

Etiquetas de particiones

Como vimos en el cuadro anterior, la tabla de partición incluye un identificador de byte utilizado para asignar el "Id" de partición (algunas veces conocido como el "tipo" de la partición o la "etiqueta " de la partición). ¿El Id utilizado para identificar la función de la partición debe servir de: espacio swap, sistema de archivos ext3, sistema de archivos FAT, parte de la Administración de Volumenes de Linux o partición extendida?

Muchos sistemas operativos siguen las mismas convenciones de nomenclatura del Id de partición. El siguiente cuadro lista los tipos de partición que normalmente se presentan en Linux, en el orden aproximado como se generan.

Table 1. Ids de partición importantes para Linux

Id Etiqueta Role

83 Linux Un sistema de archivos de Linux ext2 o ext3

82 Linux Swap Una partición swap de Linux (memoria virtual)

fd Linux raid auto Una partición RAID de software de Linux

8e Linux LVM Administración de volumenes lógicos de Linux

En Linux, los Ids de partición suelen ser cosméticos. Una partición etiquetada como Linux se puede inicializar y utilizar para espacio swap, mientras que una partición etiquetada como Linux Swap puede utilizarse como un sistema de archivos ext2. Sin embargo, algunos Ids, son importantes para el kernel de Linux (por ejemplo, Linux raid auto) y muchos son importantes para otros sistemas operativos que podrían estar compartiendo el mismo disco. La práctica sugiere que cada Id de partición debería reflejar la intención de su uso.

Uso de fdisk para editar una tabla de partición

Inicio de fdisk y uso del menú de comandos

Al utilizar fdisk para editar una tabla de partición, el comando fdisk debería llamarse con un solo argumento: el nodo de dispositivo del disco que se va a editar.

[root@station root]# fdisk /dev/hda

Administración del sistema de archivos de Linux

7

The number of cylinders for this disk is set to 155 05. There is nothing wrong with that, but this is large r than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versi ons of LILO) 2) booting and partitioning software from other OSe s (e.g., DOS FDISK, OS/2 FDISK) Command (m for help):

Cuando el fdisk inicia, advierte que el disco excede los 1024 cilindros. Algunos de las BIOS más antiguas están limitadas a sólo acceder los primeros 1024 cilindros, un tema que se cubrirá en un próximo cuaderno. Por lo general, esta advertencia se puede ignorar. Luego, fdisk espera con paciencia para que le digan lo que tiene que hacer.

Note Uno de los errores más comunes de los nuevos usuarios es invocar fdisk con el nombre de una partición en lugar de un disco. Por ejemplo, fdisk /dev/hda3 haría que fdisk saliera con un error. Las particiones no tienen tablas de partición para corregir, los discos sí.

En modo interactivo (de edición), fdisk espera ser conducido con comandos de una sola letra. El comando “m” muestra una lista de los posibles comandos.

Command (m for help): m 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)

Afortunadamente, la mayoría de los usuarios pueden sobrevivir utilizando un pequeño subconjunto de estos comandos.

Table 1. Los comandos fdisk más utilizados

Comando Función

m lista el (m)enú de comandos

Administración del sistema de archivos de Linux

8

Comando Función

p im(p)rime la tabla de partición

n crea una (n)ueva partición

d borra la partición

t cambia el (t)ipo de la partición (Id)

q sale sin grabar cambios

w escribe cambios y sale

La primera acción del usuario es orientarse con el comando “p” para imprimir la tabla de partición actual.

Command (m for help): p Disk /dev/hda: 120.0 GB, 120034123776 bytes 240 heads, 63 sectors/track, 15505 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot Start End Blocks Id S ystem /dev/hda1 1 540 4082368+ b W in95 FAT32 /dev/hda2 * 541 3249 20480040 7 H PFS/NTFS /dev/hda3 3250 3926 5118120 83 L inux

Vemos otra vez la tabla de partición para el disco /dev/hda , con las tres particiones primarias y más de 80 gigabytes de espacio libre.

Adición de una partición

En nuestra discusión asumimos que el administrador quiere crear dos nuevas particiones. La primera se utilizará como un espacio swap de 512 megabytes y la segunda se utilizará como un sistema de archivos ext3 de 1024 megabytes. El comando “n” es utilizado para crear una nueva partición.

Command (m for help): n Command action e extended p primary partition (1-4)

La siguiente pregunta depende del estado del dispositivo. Si no existen particiones extendidas (nuestro caso), fdisk pregunta si la nueva partición debe ser la partición extendida o una partición primaria (normal). Si una partición extendida existe, fdisk pregunta si la nueva partición debe ser lógica o primaria. Si se utilizan todas las particiones primarias entonces fdisk simplemente no pregunta.

Debido a que las tres particiones primarias ya existen y nuestro administrador quiere crear dos particiones nuevas, debe crear primero una partición extendida para guardarlas. Contesta “e”. Luego fdisk le pide el número del cilindro de inicio para la

Administración del sistema de archivos de Linux

9

partición. Nuestro administrador debe presionar ENTER aceptando por defecto 3927 (el primer cilindro disponible).

Selected partition 4 First cylinder (3927-15505, default 3927): ENTER

Luego, fdisk pide el número de terminación del cilindro.

Using default value 3927 Last cylinder or +size or +sizeM or +sizeK (3927-15 505, default 15505):

Se pueden utilizar cuatro formatos diferentes al especificar el cilindro de terminación.

Formato Interpretación n Uso del cilindro de terminación n.

+n Uso del cilindro de inicio incrementado por n cilindros.

+nM Uso del cilindro de inicio incrementado por n megabytes, (una K final implica kilobytes).

ENTER Use el valor predeterminado, el cual se escoge para hacer la partición resultante tan grande como sea posible.

Puesto que la partición extendida es una partición primaria, será la cuarta partición primaria (y por ende la última) en el disco. Dado que cualquier espacio de disco no incluído en la partición extendida se volverá inaccesible, no hay razón para no utilizar el cilindro sugerido (el cual es el último cilindro en el disco).

Nuestro administrador hace eso y luego imprime la nueva tabla de partición.

Using default value 15505 Command (m for help): p Disk /dev/hda: 120.0 GB, 120034123776 bytes 240 heads, 63 sectors/track, 15505 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot Start End Blocks Id S ystem /dev/hda1 1 540 4082368+ b W in95 FAT32 /dev/hda2 * 541 3249 20480040 7 H PFS/NTFS /dev/hda3 3250 3926 5118120 83 L inux /dev/hda4 3927 15505 87537240 5 E xtended Command (m for help):

La partición extendida recién agregada, la cual abarca el resto del dispositivo.

Administración del sistema de archivos de Linux

10

Contento con el resultado, procede a agregar una nueva partición de 512 megabytes. Puesto que todas las particiones primarias están en uso, fdisk no solicita el tipo de partición. Una partición lógica es el único tipo disponible.

Command (m for help): n First cylinder (3927-15505, default 3927): ENTER Using default value 3927 Last cylinder or +size or +sizeM or +sizeK (3927-15 505, default 15505): +512M Command (m for help): p Disk /dev/hda: 120.0 GB, 120034123776 bytes 240 heads, 63 sectors/track, 15505 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot Start End Blocks Id S ystem /dev/hda1 1 540 4082368+ b W in95 FAT32 /dev/hda2 * 541 3249 20480040 7 H PFS/NTFS /dev/hda3 3250 3926 5118120 83 L inux /dev/hda4 3927 15505 87537240 5 E xtended /dev/hda5 3927 3993 506488+ 83 L inux Command (m for help):

Al presionar ENTER, se acepta el cilindro de inicio por defecto.

La sintaxis +512M especifica que la partición debería ser de 512 megabytes (o lo más cercano posible).

La nueva partición lógica agregada.

Aunque solicitó una partición de 512 megabytes, la partición resultante es cercana a 506 megabytes. Dado que las particiones deben caer en límites del cilindro y (para este dispositivo) un cilindro tiene un tamaño de 7.5 megabytes, fdisk hizo lo mejor que pudo.

Cambio de la etiqueta de una partición

Cuando fdisk agrega una partición, el Id de la partición se establece para "Linux" (apropiado para una partición que contendrá un sistema de archivos ext2 o ext3). Puesto que el administrador planea el uso de la partición para espacio swap, puede establecer el Id de partición correctamente. Utiliza el comando “t ” para establecer el tipo de partición y especifica la partición apropiada. Aprovechando la habilidad para listar todas las etiquetas conocidas, localiza la etiqueta apropiada de "Linux swap" y el código hex, “82”.

Command (m for help): t Partition number (1-5): 5 Hex code (type L to list codes): L 0 Empty 1c Hidden Win95 FA 70 DiskSec ure Mult bb Boot Wizard hid

Administración del sistema de archivos de Linux

11

1 FAT12 1e Hidden Win95 FA 75 PC/IX be Solaris boot 2 XENIX root 24 NEC DOS 80 Old Min ix 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 s wap c6 DRDOS/sec (FAT- 5 Extended 40 Venix 80286 83 Linux c7 Syrinx 6 FAT16 41 PPC PReP Boot 84 OS/2 hi dden C: da Non-FS data 7 HPFS/NTFS 42 SFS 85 Linux e xtended db CP/M / CTOS / . 8 AIX 4d QNX4.x 86 NTFS vo lume set de Dell Utility 9 AIX bootable 4e QNX4.x 2nd part 87 NTFS vo lume set df BootIt a OS/2 Boot Manag 4f QNX4.x 3rd part 8e Linux L VM 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 Thi nkpad 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 NeXTSTE P 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 sw ap ff BBT Hex code (type L to list codes): 82 Changed system type of partition 5 to 82 (Linux swa p) Command (m for help): p Disk /dev/hda: 120.0 GB, 120034123776 bytes 240 heads, 63 sectors/track, 15505 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot Start End Blocks Id S ystem /dev/hda1 1 540 4082368+ b W in95 FAT32 /dev/hda2 * 541 3249 20480040 7 H PFS/NTFS /dev/hda3 3250 3926 5118120 83 L inux /dev/hda4 3927 15505 87537240 5 E xtended /dev/hda5 3927 3993 506488+ 82 L inux swap Command (m for help):

Administración del sistema de archivos de Linux

12

La etiqueta de partición que antes era "Linux" ha cambiado a "Linux swap".

Agregar una segunda partición

El administrador procede a añadir una segunda partición.

Command (m for help): n First cylinder (3994-15505, default 3994): ENTER Using default value 3994 Last cylinder or +size or +sizeM or +sizeK (3994-15 505, default 15505): +1024M Command (m for help): p Disk /dev/hda: 120.0 GB, 120034123776 bytes 240 heads, 63 sectors/track, 15505 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot Start End Blocks Id S ystem /dev/hda1 1 540 4082368+ b W in95 FAT32 /dev/hda2 * 541 3249 20480040 7 H PFS/NTFS /dev/hda3 3250 3926 5118120 83 L inux /dev/hda4 3927 15505 87537240 5 E xtended /dev/hda5 3927 3993 506488+ 82 L inux swap /dev/hda6 3994 4126 1005448+ 83 L inux Command (m for help):

La partición recién añadida.

Deleting a Partition

Si el administrador comete un error o necesita suprimir una partición para crear espacio, la eliminación de una partición se hace directamente y se vería de la siguiente manera.

Command (m for help): d Partition number (1-6): 4

Hay un par de detalles que se deben observar.

1. Si se elimina una partición extendida, todas las particiones lógicas que contiene también se borrarán.

2. Puesto que la información sobre el particionamiento para particiones lógicas se mantiene como una lista enlazada, las particiones se deben enumerar de forma consecutiva. Si la partición número 5 de 7 es borrada, las particiones 6 y 7 se convertirán en particiones 5 y 6 (esto no sucede con las particiones primarias).

Salida de fdisk

Al finalizar, hay dos maneras de salir de fdisk. Primero, el comando “q” se puede utilizar para "abandonar"fdisk, abandonando todos los cambios. La utilidad fdisk no

Administración del sistema de archivos de Linux

13

escribe ningún cambio hasta que se le pide que lo haga, por lo tanto los usuarios pueden salir con seguridad en cualquier momento.

Con el comando “w”, fdisk"escribirá" cambios y saldrá. Esta es la forma normal de salir de fdisk llevando a cabo cualquier corrección específicada.

Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot. Syncing disks.

Al salir, fdisk advierte que los cambios no surtirán efecto hasta el siguiente reinicio. Esto es una mentirilla. El reinicio hará que el cambio surta efecto pero también se puede hacer sin reiniciar con el comando partprobe.

El administrador ejecuta partprobe para que el kernel relea la tabla de particiones y lleve a cabo los cambios.

[root@station root]# partprobe

Ver particiones en /proc/partitions

Como una alternativa a fdisk -l (que sólo root tiene permisos para ejecutar), el sistema de archivos proc /proc/partitions lista todas las particiones conocidas, al igual que todos los tamaños (en bloques de 1024 bytes) y estadísticas de actividad.

[root@station root]# cat /proc/partitions major minor #blocks name 3 0 117220824 hda 3 1 4082368 hda1 3 2 20480040 hda2 3 3 5118120 hda3 3 64 78150744 hdb 3 65 72261 hdb1 3 66 2096482 hdb2 3 67 8289540 hdb3 3 69 30724281 hdb5 3 70 8385898 hdb6 3 71 28579603 hdb7

Observe la importancia del número mayor y menor de cada partición (y disco) en la salida. El kernel de Linux internamente identifica una partición por el número mayor y menor asociado con su controlador de dispositivo, no por el nombre del nodo de dispositivo, un hecho que suele observarse en los mensajes de error a nivel del kernel.

Administración del sistema de archivos de Linux

14

Ejemplos

Particionamiento de un nuevo dispositivo

En este ejemplo, vemos que prince acaba de conectar un nuevo disco a su máquina. Quiere dividir su nuevo disco en las siguientes particiones.

Número Tamaño Propósito

1 128 megas espacio swap

2 512 megas sistema de archivos ext2

3 512 megas sistema de archivos vfat

4 1024 megas sistema de archivos ext3

Tras el primer arranque de la máquina, después de conectar el nuevo dispositivo, prince da una lectura rápida a los mensajes de arranque del kernel para buscar pruebas del dispositivo recién detectado. Infortunadamente, el kernel es demasiado rápido para su monitor, el cual no se enciende con toda la intensidad hasta que los mensajes hayan pasado.

Una vez el sistema arranca, prince da una lectura rápida al archivo /var/log/dmesg , donde encuentra las siguientes líneas.

... hda: Maxtor 51536H2, ATA DISK drive hdb: ST310212A, ATA DISK drive blk: queue c03cdfe0, I/O limit 4095Mb (mask 0xfffff fff) blk: queue c03ce124, I/O limit 4095Mb (mask 0xfffff fff) hdc: LTN485, ATAPI CD/DVD-ROM drive ide0 at 0x1f0-0x1f7,0x3f6 on irq 14 ide1 at 0x170-0x177,0x376 on irq 15 hda: attached ide-disk driver. hda: host protected area => 1 hda: 29336832 sectors (15020 MB) w/2048KiB Cache, C HS=1940/240/63, UDMA(66) hdb: attached ide-disk driver. hdb: host protected area => 1 hdb: 20005650 sectors (10243 MB) w/512KiB Cache, CH S=1323/240/63, UDMA(66) ide-floppy driver 0.99.newide ...

Convencido de que su nuevo dispositivo se ha detectado correctamente, comienza a hacer la partición del dispositivo con el comando fdisk. Primero imprime la tabla de partición con el comando “p”.

[root@station root]$ fdisk /dev/hdb The number of cylinders for this disk is set to 132 3. There is nothing wrong with that, but this is large r than 1024,

Administración del sistema de archivos de Linux

15

and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versi ons of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): p Disk /dev/hdb: 10.2 GB, 10242892800 bytes 240 heads, 63 sectors/track, 1323 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot Start End Blocks Id S ystem Command (m for help):

Como era de esperar, la tabla de partición está vacía. Al seguir añade su primera partición, la única interacción realmente interesante es cuando él especifica el tamaño de partición con +128M.

Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-1323, default 1): ENTER Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-1323, default 1323): +128M Command (m for help): p Disk /dev/hdb: 10.2 GB, 10242892800 bytes 240 heads, 63 sectors/track, 1323 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot Start End Blocks Id S ystem /dev/hdb1 1 18 136048+ 83 L inux

Puesto que la partición se va a utilizar como espacio de intercambio, prince cambia la etiqueta de partición al código apropiado para Linux Swap.

Command (m for help): t Selected partition 1 Hex code (type L to list codes): 82 Changed system type of partition 1 to 82 (Linux swa p)

Las siguientes dos particiones se añaden directamente.

Command (m for help): n Command action e extended p primary partition (1-4) p

Administración del sistema de archivos de Linux

16

Partition number (1-4): 2 First cylinder (19-1323, default 19): ENTER Using default value 19 Last cylinder or +size or +sizeM or +sizeK (19-1323 , default 1323): +512M Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 3 First cylinder (86-1323, default 86): ENTER Using default value 86 Last cylinder or +size or +sizeM or +sizeK (86-1323 , default 1323): +512M Command (m for help): p Disk /dev/hdb: 10.2 GB, 10242892800 bytes 240 heads, 63 sectors/track, 1323 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot Start End Blocks Id S ystem /dev/hdb1 1 18 136048+ 82 L inux swap /dev/hdb2 19 85 506520 83 L inux /dev/hdb3 86 152 506520 83 L inux

Aunque prince sólo desea agregar una partición más ahora, dejará espacio sin asignar en el dispositivo. Si fuera a utilizar su última partición primaria para el sistema de archivos ya no podría hacer una partición extendida y el espacio restante se desaprovecharía. En cambio, prince crea una partición extendida para abarcar el resto del dispositivo y luego agrega su nueva partición como una partición lógica dentro de ésta.

Command (m for help): n Command action e extended p primary partition (1-4) e Selected partition 4 First cylinder (153-1323, default 153): ENTER Using default value 153 Last cylinder or +size or +sizeM or +sizeK (153-132 3, default 1323): ENTER Using default value 1323 Command (m for help): n First cylinder (153-1323, default 153): ENTER Using default value 153 Last cylinder or +size or +sizeM or +sizeK (153-132 3, default 1323): +1024M Command (m for help): p Disk /dev/hdb: 10.2 GB, 10242892800 bytes 240 heads, 63 sectors/track, 1323 cylinders

Administración del sistema de archivos de Linux

17

Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot Start End Blocks Id S ystem /dev/hdb1 1 18 136048+ 82 L inux swap /dev/hdb2 19 85 506520 83 L inux /dev/hdb3 86 152 506520 83 L inux /dev/hdb4 153 1323 8852760 5 E xtended /dev/hdb5 153 285 1005448+ 83 L inux Command (m for help):

Satisfecho con su trabajo, escribe y sale.

Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.

Ejercicios en línea

Lab Exercise Objetivo: Utilizar fdisk para añadir nuevas particiones.

Tiempo estimado: 10 minutos.

Specification

En este laboratorio, usted añadira dos particiones pequeñas a un disco en su computador.

1. Utilice el comando fdisk -l para confirmar que su máquina tiene al menos 256 megabytes asignados. Si su máquina tiene múltiples discos duros, el espacio debe existir en un solo dispositivo. Cree el archivo ~/lab3.1/disk que contenga el nombre del disco que utilizará para este laboratorio como una referencia absoluta. Por ejemplo, si el disco que utilizará es /dev/hda , el archivo deberá contener la palabra /dev/hda.

2. Utilice el comando fdisk para editar la tabla de partición del dispositivo. Observe que tendrá que utilizar su cuenta de root. Añada dos nuevas particiones, cada 128 megabytes de tamaño (o casi). Establezca el Id de partición de la primera partición recién añadida a Linux Swap. El Id de partición de la segunda partición recién agregada debe parmanecer como Linux. Las dos particiones nuevas deben ser las dos últimas particiones en el dispositivo. Salga de fdisk, almacenando los cambios.

3. Si es necesario, reinicie su máquina para que las nuevas particiones sean reconocidas por el kernel antes de calificar su ejercicio.

Resultados

Administración del sistema de archivos de Linux

18

Question 1

1. El archivo ~/lab3.1/disk que contenga el nombre del dispositivo que usted

utilizó para este laboratorio como una referencia absoluta. El nombre de dispositivo debería ser la única palabra en el archivo.

2. Lo siguiente en la última partición en la unidad especificada debería ser (casi) de 128 megabytes y tener un Id de partición de Linux Swap.

3. La última partición en el dispositivo especificado debería ser (casi) de 128 megabytes y tener un Id de partición de Linux.

Capítulo 2 Creación y administración de sistemas de archivos

Conceptos clave

• El comando mkfs y sus amigos específicos del sistema de archivos se utilizan para crear sistemas de archivos.

• El sistema de archivos más común en Linux es el sistema de archivos ext2 y su primo cercano, el sistema de archivos ext3.

• El sistema de archivos ext3 es exactamente igual al ext2, con la propiedad agregada de registro de diario.

• El comando dumpe2fs se puede utilizar para examinar los sistemas de archivo ext2 y ext3.

Discusión

Sistemas de archivos

En el nivel inferior, los nodos de dispositivo de bloque permiten el acceso a los discos y a las particiones de disco como si fueran simplemente una gama de bytes (recuerde el mantra de Unix, "todo es un archivo"). No obstante, cuando los usuarios de Linux almacenan información en discos, prefieren utilizar las conceptos conocidos de archivos y directorios. De alguna manera, esta gama de bytes que es una partición de disco debe estar hecha para actuar como el directorio /home/elvis y los archivos que éste contiene.

El kernel de Linux implementa una capa de sistema de archivos virtual, la cual dicta que todo lo que existe en un árbol de directorios, como por ejemplo, los archivos normales, directorios, nodos de dispositivo y enlaces simbólicos, debe tener una estructura uniforme que conste de los siguientes elementos:

inodos

Los inodos almacenan todos los metadatos asociados con un archivo. Los metadatos de un archivo es toda la información asociada con un archivo, excepto su nombre y contenido. Por ejemplo, las propiedades, permisos y tiempo de

Administración del sistema de archivos de Linux

19

modificación se almacenan en el inodo. El inodo mayormente proporciona la identidad del archivo.

dentries

Las dentries cuyo nombre se deriva del término en inglés "Directory Entries" (entradas de directorio), contienen un nombre de archivo y una ubicación dentro de la estructura del directorio y asocian esta identidad con el inodo del archivo.

data

Por último, cada archivo tiene una gama de bytes que constituyen su contenido y se conocen como el inodo del archivo.

La estructura intermedia que se presenta en un disco o en una partición de disco que define un fragmento de bytes que contiene dentries y otro fragmento de bytes que contiene los inodos cuyas dentries hacen referencia y otro fragmento de bytes conteniendo datos cuyos inodos hacen referencia, se conoce como sistema de archivos. En otros sistemas operativos la acción de inicialización del sistema de archivos en una partición particular se conoce como formatear la partición. En Linux (y Unix) dicha acción se conoce simplemente como crear un sistema de archivos.

Sistemas de archivos de Linux

El diseño del sistema de archivos es un problema general en la ingeniería informática y se requiere mucho tiempo y dedicación para diseñar sistemas de archivos que equilibren la eficiencia, solidez, capacidad y simplicidad apropiadas para cada situación. Puesto que un sistema de archivos debe estar estrechamente coordinado con el sistema operativo que lo respalda, la mayoría de los sistemas operativos sólo admiten uno de dos sistemas de archivo considerados "nativos" en ese sistema operativo.

En contraste, Linux respalda un gran número de sistemas de archivos, algunos de los cuales son nativos de Linux, muchos de los cuales se comparten con otros sistemas operativos. El siguiente cuadro contiene una lista parcial de sistemas de archivos compatibles con Linux.

Table 1. Sistemas de archivos soportados por Linux

Sistema de

archivos Comentarios

ext2

El sistema de archivos ext2 ("extendido 2") ha sido el sistema de archivos original de Linux el cual aumentó su popularidad desde mediados de los noventa. El sistema de archivos ext2 es el modelo alrededor del cual la capa del sistema de archivos virtual está diseñada y originariamente implementa casi todas las características esperadas de un sistema de archivos en Linux.

Administración del sistema de archivos de Linux

20

Sistema de

archivos Comentarios

ext3

El sistema de archivos ext3 ("extendido 3"), introducido alrededor del año 2000, es una extensión del sistema de archivos que admite registros por diarios. En cada forma, el sistema de archivos ext3 es idéntico al sistema de archivos ext2 y lo que se dice acerca del uno se puede aplicar al otro. El sistema de archivos ext3 es el sistema de archivos por defecto en Red Hat Enterprise Linux.

msdos

El sistema de archivos msdos es un sistema de archivos FAT utilizado por DOS y WINDOWS. No es compatible con muchas características avanzadas como las propiedades de archivo y permisos y los nombres de archivo constan de 8 caracteres como mínimo con una extensión de 3 caracteres.

vfat El sistema de archivos es una extensión del sistema de archivos de msdos, el cual permite nombres de archivos largos.

nfs

El nfs "sistema de archivos de red" se utiliza para compartir directorios entre máquinas Linux (y Unix). Una máquina exporta parte de su estructura de directorio a través de la red, que otra máquina puede importar a su estructura de directorio local en el nivel del sistema de archivos.

smbfs

El sistema de archivos smbfs se utiliza para compartir directorios entre máquinas Linux (y Unix) y Windows. Mediante smbfs, una máquina de Linux puede incorporar un recurso compartido de Windows exportado a su estructura de directorio local.

iso9660 El sistema de archivos iso9660 es un sistema de archivos de sólo lectura muy utilizado en los discos compactos.

proc El sistema de archivos proc es un sistema de archivos virtual que reside en el kernel (i.e. no hay disco duro asociado con el sistema de archivos).

reiserfs El reiserfs es un sistema de archivos de diario alterno original de Linux y soportado por Red Hat Enterprise Linux.

jfs

El jfs (del inglés "journaling filesystem") es un sistema de archivos de registro por diario con muchas características empresariales originarias de máquinas IBM. El sistema de archivos jfs se ha introducido recientemente a código fuente y migrado a Linux y está respaldado por Red Hat Enterprise Linux.

Se podría agregar más al cuadro, pero se espera que se haya planteado el punto que de las características de Linux sirven para una variedad de sistemas de archivos. Si desea mayor información puede comenzar con la página del manual fs(5). Examinaremos el sistema de archivos ext2/ext3 y también nos familiarizaremos con otros del cuadro.

Creación de sistemas de archivos

Administración del sistema de archivos de Linux

21

Antes de que un dispositivo de bloque se puede utilizar para almacenar archivos, se debe inicializar con un sistema de archivos. En Red Hat Linux, se utiliza alguna variante del comando mkfs para crear sistemas de archivos. Estos comandos tienden a residir en el directorio /sbin .

[root@station root]# ls /sbin/mkfs.* mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.msdos mkfs.vfat

El comando mkfs es un comando frontal que espera ser llamado con la opción -t, cuyo argumento es el tipo de sistema de archivos para crear. Los otros comandos listados, que comienzan por mkfs. son variantes de sistemas de archivos específicos para sistemas de archivos particulares. Por ejemplo, mkfs -t ext2 y mkfs.ext2 son comandos equivalentes.

La inicialización de una partición puede ser tan fácil como lo siguiente.

[root@station root]# mkfs.ext2 /dev/hda6

Todas las versiones de los comandos mkfs esperan algunas opciones y un primer argumento requerido que es el archivo (partición) para estructurar. También se puede utilizar un argumento opcional, a veces utilizado como segundo argumento, el cual especifica el tamaño del sistema de archivos en bloques. El segundo argumento rara vez se utiliza porque, por defecto, el sistema de archivos llenará toda la partición especificada o el disco. Aunque cualquiera tiene permisos para ejecutar los comandos mkfs en la práctica, sólo root tiene permisos para escribir los nodos de dispositivo de bloque que se inicializan.

Creación de sistemas de archivos ext 2: mke2fs

El sistema de archivos más común de Linux es el sistema de archivos ext2 o su primo cercano el sistema de archivo ext3. Nuestra explicación se centrará en el sistema de archivos ext2. Cerca de la conclusión, hallaremos que todo lo que se dice acerca del sistema de archivos ext2 también se aplica directamente al sistema de archivos ext3.

Ya que normalmente se utiliza el sistema de archivos ext2, existe otro comando sinónimo de mkfs.ext2 conocido como mke2fs. Los comandosmke2fs, mkfs.ext y mkfs -t ext2 entregan resultados idénticos.

Opciones

El siguiente cuadro especifica algunas de las opciones más utilizadas del comando mke2fs.

Table 1. Opciones para el comando mke2fs

Opción Efecto

-b tamaño de Especifica el tamaño en bloques del sistema de archivos en bytes,

Administración del sistema de archivos de Linux

22

Opción Efecto bloque donde tamaño de bloque puede ser 1024, 2048 o 4096.

-c Busca bloques malos mientras crea el sistema de archivos.

-i densidad Especifica la densidad de un inodo de densidad bytes por inodo.

-L label Establece la etiqueta del volumen del sistema de archivos como label .

-m n Establece el porcentaje de bloque reservado a n.

-N número Especifica directamente el número de inodos.

-j Crea un diario de sistema de archivos

Las opciones introducen algunos conceptos de sistemas de archivos, los cuales se abordan a continuación.

Etiquetas del sistema de archivos (-L)

Al igual que la mayoría de sistemas de archivos, un sistema de archivos ext2 se puede etiquetar con un identificador de cadena de texto, el cual tiene máximo 16 caracteres. Otros sistemas operativos suelen referirse a esta etiqueta como un nombre de volumen(cuando se refieren a una partición formateada con un sistema de archivos como un volumen ). Veremos que Red Hat Enterprise Linux hace uso funcional de las etiquetas de sistemas de archivos.

Tamaño de bloque (-b)

Anteriormente mencionamos de una forma ambigua la organización de sistema de archivos en "fragmentos de bytes" como en "este fragmento de bytes almacena inodos, mientras que este fragmento de bytes almacena dentries". Los fragmentos a los que nos referimos se llaman de una manera más apropiada bloques y cuando se crea un sistema de archivos se debe seleccionar un tamaño de bloque. El sistema de archivos ext2 admite tamaños de bloque de 1024, 2048 y 4096 bytes ("1k", "2k" y "4k", respectivamente).

El sistema de bloque establece la granularidad del sistema de archivos. Cuando hay un espacio en el sistema de archivos para almacenar el contenido de un archivo en particular, el espacio se otorga en bloques de tamaño fijo del tamaño de bloque especificado. Por ejemplo, si el tamaño de bloque fuera de 1024, entonces el almacenamiento de un archivo de 5000 bytes de datos requeriría 5 bloques. El mismo archivo almacenado en un sistema de archivos con tamaño de bloque de 4096 requiere 2 bloques. Una vez se ha asignado un bloque a un propósito particular, no puede utilizarse para nada más.

A primera vista, el tamaño de un bloque parece resultar en espacio menos desperdiciado. En el ejemplo anterior, el sistema de archivos con el tamaño de bloque de 1k utiliza aproximadamente 1020 bytes (los restantes del quinto bloque), mientras

Administración del sistema de archivos de Linux

23

que el sistema de archivos con un tamaño de bloque de 4k utiliza 4092 bytes (el resto del segundo bloque). Sin embargo, un tamaño de bloque más pequeño requiere más gasto de parte del sistema de archivos. Por ejemplo, el sistema de archivos necesita mantener un cuadro interno de qué bloques se han utilizado y para qué propósito. De nuevo, con relación al ejemplo anterior, el sistema de archivos con un tamaño de bloque de 1k tiene que mantener el rastro de 5 bloques, mientras que el sistema de archivos con un tamaño de bloques de 4k sólo mantiene el rastro de 2.

Como regla general, entre más grande el sistema de archivos, más grande el tamaño de bloque. Por defecto, mke2fs elige un tamaño de bloque de 1k o 4k, dependiendo del tamaño del sistema de archivos que se está creando.

Inodos (-N o -i)

Cada archivo está directamente asociado con una estructura denominada inodo. Un inodo debe existir para cada archivo en el sistema de archivos. Es necesario que el número de inodos que contiene un sistema de archivos se especifique cuando se cree el sistema de archivos. Como el número de inodos no se puede cambiar más adelante, se debe tener cuidado al estimar el número de inodos requeridos.

Por lo general, el comando mke2fs elige la configuración predeterminada apropiada. Sin embargo, en algunos casos el número de inodos se puede especificar directamente.

• Cuando se espera que un sistema de archivos contenga una gran cantidad de archivos pequeños, puede que se necesite aumentar el número de inodos o el sistema de archivos puede agotarse.

• Cuando se espera que el sistema de archivos contenga pocos archivos grandes, el exceso de espacio asignado a los inodos sin utilizar quita espacio que se pudo utilizar para almacenar datos. Como resultado, puede que se desee disminuir el número de inodos.

Hay dos formas de especificar el número de inodos. La opción -N se puede utilizar para especificar un número absoluto de inodos. Para situaciones en que se puede hacer una frase tal como "Este sistema de archivos nunca contendrá más de 18.112 archivos", la opción es correcta. En contraste la opción -i se utiliza para especificar una densidad de inodo en bytes por inodo. En la construcción de un sistema de archivos, el comando mke2fs dividirá el tamaño total del sistema de archivos por la densidad (o más exactamente la densidad-inversa) para determinar el número de inodos. Para situaciones donde se pueden hacer frases tales como "Espero que el tamaño promedio de mi archivo sea de 180 kilobytes", ésta es la opción correcta.

Bloques reservados

Por defecto, el sistema de archivos ext2 reserva el 5% de su espacio para el usuario root. Esta característica intenta dar al administrador un poco de flexibilidad en el caso de que un usuario en el sistema accidentalmente (o intencionalmente) ocupe todo el sistema de

Administración del sistema de archivos de Linux

24

archivos. La opción -m permite especificar el porcentaje de bloques que se van a reservar.

Examen de los sistemas de archivos con dumpe2fs

El comando dumpe2fs descarga en la salida estándar información de bajo nivel acerca de un sistema de archivos ext2. En el siguiente ejemplo, el comando mke2fs se utiliza para crear un sistema de archivos en la partición sda1 con opciones predeterminadas.

[root@station root]# mke2fs /dev/sda1 mke2fs 1.32 (09-Nov-2002) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 31744 inodes, 126960 blocks 6348 blocks (5.00%) reserved for the super user First data block=1 16 block groups 8192 blocks per group, 8192 fragments per group 1984 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729 Writing inode tables: done Writing superblocks and filesystem accounting infor mation: done This filesystem will be automatically checked every 39 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.

Cuando se crea el sistema de archivos, el comando mke2fs presenta detalles acerca del nuevo sistema de archivos, incluyendo lo siguiente.

La etiqueta del sistema de archivos especificado (en este caso, ninguno).

El tamaño de bloque (escogido por mke2fs, si no se especifica en la línea de comando). En este caso 1024 bytes.

El número de inodos y bloques en el sistema de archivos.

Después de que el sistema de archivos ha sido creado, el comando dumpe2fs se utiliza para examinar sus detalles. El comando dumpe2fs espera ser llamado con un sólo argumento, el nombre de un archivo (disco o partición) que contiene un sistema de archivos ext2.

[root@station root]# dumpe2fs /dev/sda1 dumpe2fs 1.32 (09-Nov-2002) Filesystem volume name: <none> Last mounted on: <not available> Filesystem UUID: dcf63b6b-157f-4493-a257-5 221a44c37b9 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: filetype sparse_super

Administración del sistema de archivos de Linux

25

Default mount options: (none) Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 31744 Block count: 126960 Reserved block count: 6348 Free blocks: 122934 Free inodes: 31733 First block: 1 Block size: 1024 Fragment size: 1024 Blocks per group: 8192 Fragments per group: 8192 Inodes per group: 1984 Inode blocks per group: 248 Filesystem created: Fri Sep 26 17:17:53 2003 Last mount time: n/a Last write time: Fri Sep 26 17:17:54 2003 Mount count: 0 Maximum mount count: 39 Last checked: Fri Sep 26 17:17:53 2003 Check interval: 15552000 (6 months) Next check after: Wed Mar 28 18:17:53 2004 Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 128 Group 0: (Blocks 1-8192) Primary superblock at 1, Group descriptors at 2-2 Block bitmap at 3 (+2), Inode bitmap at 4 (+3) Inode table at 5-252 (+4) 7927 free blocks, 1973 free inodes, 2 directories Free blocks: 266-8192 Free inodes: 12-1984 Group 1: (Blocks 8193-16384) Backup superblock at 8193, Group descriptors at 8 194-8194 ...

La etiqueta del sistema de archivos de texto. La etiqueta está en blanco porque no se especifica ninguna etiqueta en la línea de comando mke2fs (con la opción -L ).

El sistema de archivos ext2 puede tener varias características habilitadas, las cuales se listarían aquí.

El número de inodos en el sistema de archivo.

El número de bloques en el sistema de archivos. Al dividir este valor por el número de inodos (hallados en la línea anterior), encontramos que por defecto, el comando mke2fs incluyó un inodo para cada cuatro bloques.

El tamaño de bloque, en este caso 1024 bytes ("1k"). Puesto que la partición era relativamente pequeña (126960 bloques en "1k" cada uno = cerca de 127 MB), el comando mke2fs eligió el tamaño de bloque más pequeño.

Por último, el comando mke2fs genera un registro de bloques libres y otra información para cada uno de los grupos de bloque. La función de los grupos de

Administración del sistema de archivos de Linux

26

bloque en el sistema de archivos ext2 va más allá del alcance de esta discusión.

Información más detallada acerca del diseño del sistema de archivos ext2 se puede encontrar en http://e2fsprogs.sourceforge.net.

Características del sistema de archivos

Ahora utilizamos el comando dumpe2fs para examinar una partición /dev/hda3 montada actualmente.

[root@station root]# dumpe2fs /dev/hda3 dumpe2fs 1.32 (09-Nov-2002) Filesystem volume name: / Last mounted on: <not available> Filesystem UUID: c6c6c0ec-6430-470d-b371-7 54503e49ff6 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal filetype need s_recovery sparse_super Default mount options: (none) Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 652800 Block count: 1303273 Reserved block count: 65163 Free blocks: 148316 Free inodes: 418518 First block: 0 Block size: 4096 Fragment size: 4096 ...

En este caso, al sistema de archivos se le ha dado una etiqueta de “/ ”.

Características del sistema de archivos. Veremos esto con más detalles a continuación.

El tamaño de bloque de un sistema de archivos es 4.096 bytes.

En la salida anterior, un par de características del sistema de archivos merece atención.

needs_recovery

Recuerde que en el cuaderno anterior, el kernel guarda en buffer toda la actividad de E/S asociada con los dispositivos de bloque. Aunque esto ofrece un mejor rendimiento, si el kernel fuera a apagarse por alguna razón antes de confirmar algunas escrituras pendientes de su memoria caché, la información interna del sistema de archivos (i.e. qué bloques se utilizan y para qué propósito) podría quedar en un estado inconsistente.

Cuando se monta un sistema de archivos (i.e. utilizado. Ampliaremos esto en una próxima lección). se pone una bandera needs_recovery. Si el sistema de archivos se desmonta a través de técnicas normales, como cuando el sistema se apaga desde la línea

Administración del sistema de archivos de Linux

27

de comandos, el kernel tiene una oportunidad de descartar sus escrituras pendientes en el disco y se suprime la bandera needs_recovery. Sin embargo, si el sistema de archivos no se desmonta correctamente, como cuando el sistema pierde poder o se apaga sin cerrarse, la banderaneeds_recovery nunca desaparece. Cuando se utiliza (tras el reinicio, por ejemplo), se encontrará la bandera needs_recovery y se hará mantenimiento en el sistema de archivos.

has_journal

El comando mke2fs sutilmente menciona que este sistema de archivos ext2 tiene un registro de diario asociado. Anteriormente, dijimos que el sistema de archivos ext3 es solo un sistema de archivos ext2 con un diario de registro. ¿Qué nos queda por concluir? Estamos utilizando el comando dumpe2fs para examinar lo que es ¡realmente un sistema de archivo ext3! De nuevo, el sistema de archivos ext3 es apenas un sistema de archivos ext2 con una "característica" agregada de un diario de registro.

El sistema de archivos de diario ext3

Sistemas de archivos de diario

¿Cuál es la importancia del sistema de archivos de registro de diario? Un sistema de archivos de registro de diario mantiene un registro de todas las transacciones a través de un proceso más conocido como "guardado de cambios en dos fases". Cuando se escribe información en un disco, un sistema de archivos de registro de diario utiliza un método similar al siguiente:

1. El sistema de archivos escribe al registro de diario los detalles sobre la transacción que se va a realizar.

2. El sistema de archivos realiza la transacción. 3. Tras completarla con éxito, el sistema de archivos borra los detalles sobre la

transacción del registro del diario.

¿Qué se obtiene de este trabajo adicional? Al igual que el registro del diario del capitán se utiliza para contarle a los rescatadores lo que estaba sucediendo en el barco cuando el barco chocó, el registro de diario del sistema de archivos cuenta a las utilidades de reparación del sistema de archivos lo que el sistema de archivos iba a hacer cuando se presentó una falla en el sistema de archivos.

Al reparar el sistema de archivos ext2, el cual no mantiene un registro de diario, la utilidad de reparación del sistema de archivos debe examinar todo el sistema de archivos, buscando cualquier información de estructuración interna, la cual está en un estado inconsistente. Para cada sistema de archivo moderadamente grande (40 gigabytes, por ejemplo) este proceso puede durar varios minutos.

En contraste, al reparar un sistema de archivos ext3, la utilidad de reparación sólo tiene que centrarse en el registro de diario de transacciones pendientes. La utilidad de reparación puede entonces restablecer las estructuras internas de un sistema de archivos

Administración del sistema de archivos de Linux

28

asociadas con estas transacciones a un estado consistente y asumir que el resto del sistema de archivos está correcto. La presencia de un registro de diario para guiar la utilidad de reparación reduce dramáticamente la cantidad de tiempo necesario para comenzar a reutilizar un sistema de archivos dañado.

Creación de sistemas de archivos ext3

¿Cómo se crea un sistema de archivos ext3? Observe el cuadro anterior de las opciones más utilizadas para el comando mke2fs, la opción -j se incluyó sin explicación. La opción especifica que la utilidad mke2fs debe incluir un registro de diario con un sistema de archivos ext2 recién creado. En otras palabras, hacer un sistema de archivos ext3.

Como ventaja, también se proporciona el comando mkfs.ext3. El comando es un sinónimo para mke2fs -j (o mkfs.ext2 -j o mkfs -t ext2 -j). Comparte todas las opciones con mke2fs.

Ejemplos

Creación de un sistema de archivos ext2

Al seguir configurando su nuevo disco, el usuario prince procede a crear su primer sistema de archivos, el cual quiso que fuera un sistema de archivos ext2. Luego toma las siguientes decisiones acerca de las especificaciones.

• El sabe que va a utilizar el sistema de archivos para almacenar imágenes, por lo tanto decide dar al sistema de archivos la siguiente etiqueta pics.

• Como él es el único usuario que por rutina utilizará la partición, decide no desperdiciar espacio reservando los bloques para el usuario root y establece el porcentaje del bloque reservado como 0.

• Puesto que espera almacenar relativamente unos pocos archivos grandes, decide forzar el tamaño del bloque a 4.096 bytes.

• Para estar seguro, hace que el comando mke2fs compruebe que no hay bloques defectuosos antes de la creación de un sistema de archivos.

Escribe las opciones apropiadas y ejecuta el comando mke2fs en la partición.

[root@station root]# mke2fs -L pics -m 0 -b 4096 -c /dev/hdb2 mke2fs 1.32 (09-Nov-2002) Filesystem label=pics OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 126720 inodes, 126622 blocks 0 blocks (0.00%) reserved for the super user First data block=0 4 block groups 32768 blocks per group, 32768 fragments per group 31680 inodes per group Superblock backups stored on blocks:

Administración del sistema de archivos de Linux

29

32768, 98304 Checking for bad blocks (read-only test): done Writing inode tables: done Writing superblocks and filesystem accounting infor mation: done This filesystem will be automatically checked every 20 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.

Para confirmar si el sistema de archivos se ha creado "de acuerdo con las especificaciones", ejecuta el comando dumpe2fs cuya salida se presenta a continuación.

[root@station root]# dumpe2fs /dev/hdb2 dumpe2fs 1.32 (09-Nov-2002) Filesystem volume name: pics Last mounted on: <not available> Filesystem UUID: dbc2276d-3393-4f75-9e1b-e 6d114e87e53 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: filetype sparse_super ... Inode count: 126720 Block count: 126622 Reserved block count: 0 ... Block size: 4096 ...

Todo parece estar correcto.

Creación de un sistema de archivos vfat

La máquina del usuario prince es una máquina de inicio dual con Red Hat Enterprise Linux y Windows XP. Su partición Windows está usando el sistema de archivos NTFS, el cual no es respaldado por Red Hat Enterprise Linux. Puesto que quisiera poder compartir archivos entre los dos sistemas operativos, prince hace una partición FAT que se puede ver desde los dos mundos.

Aunque sabe que el comando mkfs.vfat tiene varias opciones que se pueden utilizar para especificar detalles de sistemas de archivos FAT, asume que la configuración predeterminada es apropiada y rápidamente crea la partición.

[root@station root]# mkfs.vfat /dev/hdb3 mkfs.vfat 2.8 (28 Feb 2001)

Al ver que no hay información que retorna del comando y sin conocer ninguno análogo al comando dumpe2fs para el sistema de archivos vfat, prince asume que todo salió bien y avanza.

Creación de un sistema de archivos ext3

Administración del sistema de archivos de Linux

30

Por último, prince va a crear un sistema de archivos ext3 para guardar toda su música que ha sido quemada del CD en el formato ogg vorbis. Decide etiquetar el sistema de archivos ogg de modo apropiado. Sabe que pudo haber utilizado el comando mkfs.ext3, pero debido a que sus dedos tienen la costumbre de teclear mke2fs. Agrega la opción -j para que el archivo resultante sea ext3.

[root@station root]# mke2fs -j -c -L ogg /dev/hdb5 mke2fs 1.32 (09-Nov-2002) Filesystem label=ogg OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 125696 inodes, 251362 blocks 12568 blocks (5.00%) reserved for the super user First data block=0 8 block groups 32768 blocks per group, 32768 fragments per group 15712 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376 Checking for bad blocks (read-only test): done Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting infor mation: done This filesystem will be automatically checked every 27 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.

De nuevo, confirma el resultado con el comando dumpe2fs .

[root@station root]# dumpe2fs /dev/hdb5 dumpe2fs 1.32 (09-Nov-2002) Filesystem volume name: ogg Last mounted on: <not available> Filesystem UUID: 7c82a031-a594-4579-a63f-f b28972bcfc8 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal filetype spar se_super ... Inode count: 125696 Block count: 251362 Reserved block count: 12568 ... Block size: 4096 ... Journal UUID: <none> Journal inode: 8 Journal device: 0x0000 ...

Viendo algunos signos que el registro de diario fue creado, prince está satisfecho que el sistema de archivos sea un sistema de archivos ext3.

Ejercicios en línea

Administración del sistema de archivos de Linux

31

Lab Exercise Objetivo: Crear una nueva partición ext2.

Tiempo estimado: 10 minutos.

Specification

Este ejercicio de laboratorio continuará usando la partición creada en el ejercicio de laboratorio anterior. Asegúrese que el archivo ~/lab3.1/disk aún exista y que aún se refiera al dispositivo correcto.

Crear un sistema de archivos ext2 en la última partición creada en el ejercicio anterior. El sistema de archivos debería cumplir con los siguientes criterios:

1. El sistema de archivos debería tener la etiqueta lab3.2. 2. El sistema de archivos debe tener un tamaño de bloque de 2.048 bytes. 3. El sistema de archivos debería tener exactamente 24.000 inodos (o tan cerca de

24.000 como sea posible).

Resultados

Question 1

1. La última partición en el dispositivo especificada en el archivo ~/lab3.1/disk debe ser formateada con un sistema de archivos ext2, cuya etiqueta es tiene un tamaño de bloque de 2.048 y tiene (cerca de) 24.000 inodos.