Sistemas de
Archivos y Swap
Carmelo Quintana Hernández.
[email protected]
Miguel Ramírez Alemán.
[email protected]
INTRODUCCIÓN

El proceso abierto y distribuido en el cual el sistema
operativo Linux se ha desarrollado propicia un rápido
crecimiento.

Existe la necesidad de la estandarización de la
estructura del sistema de archivos de Linux.

La estandarización permite a usuarios, desarrolladores,
y distribuidores, el obtener componentes del sistema de
varias fuentes de manera sencilla.

Esto también facilita la administración del sistema.
LA NO ESTANDARIZACIÓN

No había una estructura única, bien aceptada
estructura de directorios Linux, en su lugar había
muchas estructuras cada una incompatible con las
demás.

Las jerarquías más ampliamente usadas no estaban
bien estructuradas y diferían bastante de las
estructuras de directorios modernas.

El sistema de archivos era poco familiar e incómodo
para los usuarios de UNIX con experiencia y los
administradores que habían tenido experiencia con
otros sistemas operativos similares.

La falta de regularidad también confundía a los
recién-iniciados en Linux, especialmente aquellos
que no tenían un conocimiento previo de UNIX.
PROBLEMAS (1)

Los directorios binarios principales /bin y /usr/bin no
tienen divisiones bien definidas entre ellos.

Al incluir ambos, los archivos binarios y los de
configuración en /etc hace más confuso este
directorio y más difícil de mantener para ambos.

Muchas implementaciones comunes de /usr no
pueden ser montadas sólo-lectura debido a que
contienen archivos variables y directorios a los
cuales se necesita escribir.
PROBLEMAS (2)

En una red se precisa servir software vía
NFS. Este sistema de archivos puede
precisar ser montado sólo-lectura.

Los accidentes o malicia deliberada desde un
estación de trabajo no puedan dañar los
archivos en el servidor.
 Esto
requiere la identificación y la separación de
los archivos a los que una máquina debe escribir
y los que son específicos de una máquina.

Los sistemas de archivos tradicionales no
eran adecuados para instalaciones en red.
LA ESTANDARIZACIÓN (1)

Este estándar representa el consenso entre
desarrolladores, programadores, usuarios y
administradores Linux.

El estándar busca atacar los problemas con
una estructura de archivos bien diseñada.

El sistema de archivos Linux está
caracterizado por:
 Una
estructura jerárquica.
 Un tratamiento consistente de la información de
los archivos.
 Protección de los archivos
LA ESTANDARIZACIÓN (2)

El sistema de archivos se podría
resumir en dos categorías diferentes de
archivos:
 Archivos
compartibles vs no compartibles.
 Archivos
variables vs estáticos.
Los archivos variables cambian en cualquier
momento sin intervención del gestor de
sistemas.
 Los archivos estáticos (binarios, librerías)
sólo cambian por acción del administrador

LA ESTANDARIZACIÓN (3)

El modo en el que el sistema operativo y
sus usuarios interactúan con un archivo
dado determina el directorio en el que ese
archivo está ubicado.

El nivel superior de la organización es
crucial para filtrar el acceso a los niveles
inferiores.
DIRECTÓRIOS (1)

/bin: Binarios de comandos esenciales de usuarios.




Contiene comandos que pueden ser utilizados por los
usuarios y por el administrador del sistema.
Los binarios de los comandos que no son suficientemente
esenciales para estar en /bin estarán localizados en /usr/bin.
Esenciales: cp, mxdir, mount, pwd, etc
/boot: Archivos estáticos del cargador de arranque.


Este directorio contiene todo para arrancar excepto los
archivos de configuración y el instalador de mapas.
Para cualquier cosa que se utiliza antes de que el kernel
ejecute /sbin/init.
DIRECTÓRIOS (2)

/dev: Archivos de dispositivos


/etc: Configuración del sistema local a la máquina


Éste es el directorio de los dispositivos. Contendría un
archivo por cada dispositivo que el kernel de Linux puede
soportar.
Está reservado para archivos que son locales a un
ordenador concreto.
/home: Directorios hogar de los usuarios (opcional)

home es un concepto algo estándar, pero es claramente
un sistema de /archivos específico de un site.
DIRECTÓRIOS (3)

/lib: Librerías compartidas y módulos de kernel
esenciales.


/mnt: Punto de montaje para sistemas de archivos
montados temporalmente


Debe contener sólo las librerías necesarias para ejecutar los
binarios en /bin y /sbin
Se refiere a sistemas de archivos montados temporalmente,
tales con CD-Roms y diquetes.
/sbin: Binarios del Sistema


Típicamente contiene binarios esenciales para arrancar el
sistema además de los binarios en /bin.
Si sólo será ejecutado por el administrador del sistema o por
root como scripts de administración, entonces debe ir en
/sbin.
DIRECTÓRIOS (4)

/opt: Almacenamiento de paquetes software.


Proporciona una área para almacenar habitualmente
paquetes de software de una aplicación estática y amplia.
/proc: Puente con el Kernel

Contiene archivos especiales que o bien
información del kernel o bien la envían a éste.
extraen

/user/local: Para uso del administrador del sistema
al instalar localmente el software.

/var: Archivos de datos variables.

Esto incluye datos de administración, de registro y archivos
temporales.
DIRECTÓRIOS (5)

/usr: Archivos compartidos.
 Para
almacenar archivos que pueden
compartidos a través de todo el sitio.
 Subdirectórios de /usr:
bin
dict
doc
etc
games
include
kerberos
lib
local
sbin
tmp
ser
Sistemas de Archivos (1)

El sistema de ficheros es la forma en que el sistema
operativo organiza, gestiona y mantiene la jerarquía de
ficheros y directorios en los dispositivos de
almacenamiento, normalmente discos duros.

Cada sistema operativo soporta diferentes sistemas de
ficheros.


Estos formatos determinan cómo se almacenará la información
como archivos y directorios.
Algunos tipos de sistemas de archivos almacenan copias
redundantes de datos, mientras que otros tipos de sistemas de
archivos hacen el acceso al disco duro más rápido.
Sistemas de Archivos (2)

Los sistemas de ficheros soportados por Linux se
clasifican en tres categorías:



Basados en disco: discos duros, disquetes, CD-ROM, etc. (Estos
sistemas son ext2, ext3, ReiserFS, XFS, JFS, ISO9660, etc.)
Sistemas remotos (de red): NFS, Coda, Samba, etc.
Sistemas especiales: procfs, ramfs y devfs.
Historia del extX (1)

Desde hace mucho tiempo, el sistema de ficheros
estándar en Linux es el ext2.

Éste fue diseñado por Wayne Davidson con la
colaboración de Stephen Tweedie y Theodore Ts'o.

Es una mejora al sistema anterior, ext, diseñado por
Rémy Card.

El ext2 está basado en i-nodos (asignación indexada).

Cada i-nodo mantiene la meta-información del fichero y los
punteros a los bloques con los datos "reales"'.
Historia del extX (2)

Para mejorar el rendimiento de las operaciones de E/S, los
datos del disco son temporalmente almacenados en la memoria
RAM, sin embargo si hay un corte de suministro eléctrico antes
que los datos modificados en la memoria sean grabados
nuevamente al disco se generaría una inconsistencia en el FS

El fsck fue la herramienta que resolvía dichas inconsistencias, el cual
tiene que analizar la partición completa y verificar las interdependencias
entre i-nodos, bloques de datos y contenidos de directorios.


Requiere mucho tiempo  Sistemas de ficheros con journaling.
Un sistema con journaling es un sistema de ficheros tolerante a
fallos en el cual la integridad de los datos está asegurada
porque las modificaciones de la meta-información de los
ficheros son primero grabadas en un registro cronológico antes
que los bloques originales sean modificados.
Graba previamente cualquier modificación de la meta-información en un
área especial del disco.
2. Después de un fallo, el módulo de recuperación analizará el registro y sólo
repetirá las operaciones incompletas en aquellos ficheros inconsistentes,
examinando sólo aquellas porciones de los meta-datos que han sido
cambiadas recientemente.
1.
Sistema de Archivos EXT3

El sistema ext3 es, básicamente, una versión con
journaling del antiguo sistema ext2.

Ext3 en realidad es ext2 con un fichero adicional de
registro, es decir, es una capa adicional sobre ext2 que
mantiene un fichero de registro log de transacciones.

Debido a que está integrado en el ext2 puede que no
explote todas las posibilidades de los sistemas de
journaling puros, pero se está trabajando es este área
para mejorarlo.
EXT3 vs EXT2 (1)

Disponibilidad:

Tras un cierre no limpio del sistema, se debe comprobar
cada sistema de archivos ext2 montado en la máquina
para ver si es consistente.


Gracias a la característica journaling del sistema de archivos
ext3 ya no es necesario realizar este tipo de comprobación
dejando estas comprobaciones únicamente a casos
puntuales como fallos físicos en el disco duro o en el caso de
que el sistema de ficheros esté configurado para que se
chequee completamente de forma automática cada cierto
periodo de tiempo o cada cierto número de montajes para
prevenir posibles fallos.
Recuperar un sistema de archivos ext3 tras un cierre no
limpio del sistema no dependa del tamaño del sistema de
archivos ni del número de archivos, sino del tamaño del
journal (diario), utilizado para mantener la consistencia en
el sistema.
EXT3 vs EXT2 (2)
Integridad de los datos:


El sistema de archivos ext3 le permite seleccionar el tipo y el nivel de
protección de los datos.



El ext3 escribe tres tipos de bloques de datos en el registro:




Mantener la consistencia de los datos pero permitir daños en los datos dentro
del sistema de ficheros en el caso de un apagado incorrecto.
Asegurar que los datos son consistentes con el estado del sistema de ficheros,
por defecto, con lo cual nunca habrá datos basura de un fichero recientemente
escrito después de una caída del sistema.
Meta-información: Contiene el bloque de meta-información que está siendo
actualizado por la transacción y cada cambio en el sistema de ficheros es
escrito en el registro.
Bloques descriptores: Estos bloques describen a otros bloques del registro
para que luego puedan ser copiados al sistema principal. Los cambios en
estos bloques son siempre escritos antes que los de meta-información.
Bloques cabeceras: Describen la cabecera y cola del registro más un número
de secuencia para garantizar el orden de escritura durante la recuperación del
sistema de ficheros.
Con ext3 se mantiene la consistencia tanto en la meta-información (inodos o metadatos) como en los datos de los ficheros (datos
propiamente dichos).
EXT3 vs EXT2 (3)

Velocidad:

El sistema de archivos ext3, en la mayoría de los casos tiene un
rendimiento superior al que proporciona ext2 porque los journals
de ext3 optimizan el movimiento de los cabezales de los discos
duros. Se pueden seleccionar tres modos de journaling para
optimizar la velocidad, pero, como contrapartida, la integridad de
los datos se verá afectada.

Los diferentes modos son:



data=writeback: limita la garantía de integridad de los datos,
permitiendo a los antiguos datos aparecer en ficheros después de
una caída, para un posible pequeño incremento de la velocidad en
algunas circunstancias. Proporciona las garantías más limitadas de
integridad en los datos y evita el chequeo en el reinicio del sistema.
data=ordered (modo por defecto): garantiza que los datos son
consistentes con el sistema de ficheros. Los ficheros escritos
recientemente nunca aparecerán con contenidos basura después de
una caída.
data=journal: requiere un journal grande para una velocidad
razonable en la mayoría de los casos y por lo tanto tarda más
tiempo recuperar el sistema en el caso de un apagado incorrecto,
pero es algunas veces es más rápido para algunas operaciones ya
que funciona muy bien si se escriben muchos datos al mismo
tiempo.
EXT3 vs EXT2 (4)
Fácil transición:


Las particiones ext3 no tienen una estructura de ficheros diferentes a los de
ext2, por lo que existe total compatibilidad entre ext2 y ext3, se puede convertir
un sistema de ficheros ext2 a ext3 y viceversa.


El programa tune2fs puede añadir el journal a un sistema de ficheros ext2 ya
existente.



Es posible beneficiarse de las ventajas de un sistema de ficheros journaling robusto
sin necesidad de reformatear el disco.
Si el sistema de ficheros estaba ya montado cuando se migraba, el journal será visible
como un fichero journal en el directorio raíz del sistema de ficheros.
Si no estaba montado el journal estará oculto y no aparecerá en el sistema de ficheros
(así ocurre si se crea durante la instalación del sistema).
El sistema de ficheros ext3 se ha beneficiado de la prolongada historia de
mejoras y corrección de errores que tiene el ext2 y continuará siendo así.

Esto significa que ext3 comparte la robustez del ext2, pero también las nuevas
características que se han añadido al ext2.
EXT3 vs EXT2 (5)

Proporciona y hace uso de una capa genérica de journaling (JBD) la cual puede ser usada
en otros contextos, como en otros dispositivos soportados por Linux (NVRAM, disk-on-chip,
USB flash memory drives, etc.)

Tiene una amplia compatibilidad con todas las plataformas, trabaja tanto en arquitecturas
de 32 como de 64 bits, y tanto en sistemas little-endian como big-endian.

No requiere profundos cambios en el corazón del núcleo y no requiere tampoco nuevas
llamadas al sistema.


Seguramente el ext3 será el sistema de ficheros estándar de Linux en un futuro próximo.
Los datos del registro de journal pueden estar en cualquier conjunto de bloques, y en
cualquier sistema de ficheros.

Inclusive se puede compartir el registro de journal entre sistemas distintos.

El programa de recuperación de sistemas de ficheros e2fsc tiene un muy reconocido éxito
en la recuperación de datos cuando el software o el hardware falla y corrompe un sistema
de ficheros y ext3 usa el mismo código que el e2fsck para salvar el sistema de ficheros
después de una posible corrupción.

Todas estas peculiaridades del ext3 son totalmente transparentes al usuario el cual
trabajará igual que lo hacía con ext2, incluido el montaje y utilización de otros sistemas de
ficheros (NFS, dispositivos de almacenamiento externos, etc.).
Creación de un ext3

Hay dos métodos para crear un sistema de
archivos ext3, o bien durante la instalación
como ya se ha visto en prácticas o, crear
uno nuevo después de la instalación.

Los pasos para crear un sistema de archivos
ext3 después de la instalación son los
siguientes:
1.
2.
3.
4.
5.
Cree la partición utilizando parted o fdisk.
Dé formato a la partición con el sistema de archivos
ext3 usando mkfs.
Etiquete la partición usando e2label.
Cree el punto de montaje.
Añada la partición a /etc/fstab (1).
Migrar a ext3

El programa tune2fs permite añadir un journal a un
sistema de archivos ext2 existente sin modificar los
datos en la partición.

Para convertir un sistema de archivos ext2 a ext3,
conéctese como root y escriba: /sbin/tune2fs -j
/dev/hdbX

Una vez realizado esto, asegúrese de cambiar el tipo
de partición de ext2 a ext3 en /etc/fstab (2).

Si está migrando el sistema de archivos raíz, tendrá
que usar una imagen initrd (o disco RAM) para
arrancar.
Volver a ext2

Puesto que ext3 es relativamente nuevo, algunas utilidades de disco todavía no
son compatibles con este sistema, como por ejemplo resize2fs (redimensionar
particiones), por lo que se deberá volver temporalmente al sistema de archivos
ext2.

Para revertir una partición, primero deberá desmontar la partición conectándose
como root y escribiendo: umount /dev/hdbX

A continuación, cambie el tipo del sistema de archivos a ext2. Para ello, escriba
el
comando
siguiente
como
root:
/sbin/tune2fs
-O
^has_journal /dev/hdbX

Compruebe si la partición tiene errores. Para ello, escriba el comando siguiente
como root: /sbin/e2fsck -y /dev/hdbX

A continuación, vuelva a montar la partición como sistema de archivos ext2.
Para ello, escriba: mount -t ext2 /dev/hdbX /mount/point

Luego, quite el archivo .journal del nivel root de la partición cambiando el
directorio donde está montado y escribiendo: rm -f .journal
¿Qué es el espacio Swat?

El espacio swap en Linux es usado cuando la cantidad de memoria
RAM está llena. Así, si el sistema necesita más recursos de memoria y
la memoria está llena, las páginas inactivas de la memoria se mueven
al espacio swap.


Es una técnica utilizada para hacer creer a los programas que existe más
memoria RAM de la que en realidad existe. Es el propio sistema operativo
el que se encarga de pasar datos a la swap cuando necesita más espacio
libre en la RAM y viceversa.
En Linux, la memoria total disponible es igual a la cantidad de memoria
RAM instalada más la swap disponible.

Un uso muy intensivo y continuado de la swap es un indicativo de que
necesitamos más memoria en nuestro sistema para que funcione
desahogado con el uso que le estamos dando.

El espacio swap puede ser una partición swap dedicada (altamente
recomendable), un archivo swap o una combinación de particiones y
archivos swap.

El tamaño de su espacio swap debería ser igual o dos veces mayor
que la memoria RAM de su ordenador pero nunca mayor de 2 GB.
Añadir el espacio Swap (1)

A veces es necesario añadir más espacio swap después de la
instalación, para lo cual se dispone de dos opciones: añadir una
partición swap (recomendable) o un archivo swap. Se
recomienda que añada una partición swap.

El principal inconveniente de utilizar un fichero de intercambio
de esta forma es que todos los accesos al fichero de
intercambio se realizan a través del sistema de ficheros.


Esto significa que los bloques que forman el fichero de intercambio
pueden no ser contiguos  El rendimiento no puede ser tan alto
como cuando se utiliza una partición de intercambio, en la que los
bloques estan siempre contiguos.
La utilización de un fichero de intercambio puede ser muy útil si
se tiene una necesidad temporal de más espacio de
intercambio.

Por ejemplo, si se esta compilando un gran programa.
Añadir el espacio Swap (2)

Para añadir una partición swap se
deben realizar los siguientes pasos:
1.
2.
3.
4.
El disco duro no puede estar en uso para lo
cual debemos iniciar su sistema de nuevo en
modo de rescate (1) .
Cree la partición swap usando parted o fdisk.
Para
activar
la
partición
swap
inmediatamente,
escriba
el
comando
siguiente: swapon /dev/hdbX
Para activarlo cuando se arranca, edite
/etc/fstab (3) para incluir: /dev/hdbX swap
swap defaults 0 0
Añadir el espacio Swap (3)

En vez de reservar una partición individual para
espacio de intercambio, se puede usar un fichero,
para lo cual hay que instalar todo Linux y hacer todas
las tareas de configuración antes.

Para ello hay que hacer los siguientes pasos:
1.
2.
3.
4.
5.
Determine el tamaño del nuevo archivo swap y multiplique por
1024 para determinar el tamaño de bloque.
En un indicador de comandos shell como root, escriba el
siguiente comando con count lo que equivale al tamaño de
bloque deseado: dd if=/dev/zero of=/swapfile
bs=1024 count=65536
Configure el archivo swap con el comando: mkswap
/swapfile
Para activar el archivo swap inmediatamente pero no
automáticamente cuando se arranca: swapon /swapfile
Para activarlo cuando se arranca, edite /etc/fstab (4) para
incluir: /swapfile swap swap defaults 0 0
Eliminar el espacio Swap

Para eliminar una partición swap:

El disco duro no puede estar en uso para lo cual
debemos iniciar su sistema de nuevo en modo de
rescate (2).
1.
2.
3.

En un indicador de comandos shell como root, ejecute el
comando siguiente para asegurarse de que la partición
swap está desactivada: swapoff /dev/hdbX
Elimine su entrada desde /etc/fstab (5).
Elimine la partición usando parted o fdisk.
Para eliminar un archivo swap:
1.
2.
3.
En un indicador de comandos shell como usuario root,
ejecute el comando siguiente para desactivar el archivo
swap: swapoff /swapfile
Elimine su entrada de /etc/fstab (6).
Elimine el archivo actual: rm /swapfile
Fichero /etc/fstab
Arrancar en modo de rescate

El modo de rescate proporciona la habilidad
de arrancar una pequeña parte de Linux
desde un disquete, CD-ROM, o algún otro
método de arranque en vez del disco duro.

Para arrancar el sistema en modo rescate se
puede utilizar un disquete de instalación
hecho a partir de una imagen bootdisk.img y
seguir los siguientes pasos:
1.
2.
3.
Una vez que haya arrancado, introducir el comando
siguiente en el intérprete de comandos: linux rescue
A continuación se pedirá montar el sistema de archivos,
pero si selecciona Skip, su sistema de archivos no será
montado.
Una vez que tenga su sistema en modo de rescate,
aparece un intérprete de comandos en VC1 ([Ctrl]-[Alt][F1]) y VC2 ([Ctrl]-[Alt]-[F2]): -/bin/sh-2.05b#