sábado, 26 de mayo de 2012

GNU/Linux: DIRECTORIOS de SISTEMA y sus SISTEMAS de FICHEROS


Al ejecutar $ ls / listamos el contenido del nodo raíz del sistema de ficheros. Aparecen directorios como:
/dev, /etc, /proc, /sys, /var, /tmp y otros.


En este artículo vamos a investigar los directorios que tienen asociados sistemas de ficheros especiales.


Para obtener una idea general de la jerarquía del sistema de ficheros, podemos visitar la página: Filesystem Hierarchy Standard.

El estandar FHS es un conjunto de recomendaciones acerca de cómo estructurar los ficheros y directorios en un sistema operativo basado en UNIX.


Averiguar qué sistemas de ficheros están montados


Dos comandos nos permiten examinar qué sistemas de ficheros y dónde están montados en nuestro sistema.

$ mount
ó
$ cat /etc/mtab


Su respuesta será algo similar a ésto:
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
/sys on /sys type sysfs (rw,noexec,nosuid,nodev)
varrun on /var/run type tmpfs (rw,noexec,nosuid,nodev,mode=0755)
varlock on /var/lock type tmpfs (rw,noexec,nosuid,nodev,mode=1777)
udev on /dev type tmpfs (rw,mode=0755)
devshm on /dev/shm type tmpfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
lrm on /lib/modules/2.6.22-14-generic/volatile type tmpfs (rw)
securityfs on /sys/kernel/security type securityfs (rw)


Estamos específicamente interesados en estos directorios: /proc, /sys, /var/run, /var/lock, /dev, /dev/shm, /dev/pts, /sys/kernel/security




El directorio /proc


procfs es un sistema de ficheros virtual, creado dinámicamente en memoria. Está usualmente montado en /proc.

El sistema de ficheros proc nos proporciona una interfaz a las estructuras de datos internas del kernel. Así podemos obtener información acerca del sistema y cambiar algunos parámetros del kernel en tiempo de ejecución (sysctl).


Podemos acceder a éste sistema de ficheros en modo texto:

P.ej: $ cat /proc/meminfo # muestra como está distribuida la memoria.



El directorio /proc/sys nos permite cambiar parámetros del kernel.

P.ej: $ sudo echo "fooname" > /proc/sys/kernel/hostname # cambia hostname de nuestro sistema.


Cada proceso tiene un subdirectorio en el sistema de ficheros proc denominado por su PID.


MONTAR EL SISTEMA DE FICHEROS: proc

$ mount -t proc proc /mnt/proc # Este comando monta un sistema de ficheros proc en /mnt/proc.




El directorio /sys


sysfs es un sistema de ficheros almacenado en la RAM e inicialmente basdo en ramfs. Proporciona una manera de exportar estructuras de datos del kernel, sus atributos y la relaciones entre ellos a espacio de usuario.


MONTAR EL SISTEMA DE FICHEROS: sys

$ sudo mount -t sysfs sysfs /sys # El sistema de ficheros sys está siempre activo y con éste comando podemos acceder siempre a él.




Sistema de ficheros tmpfs


Básicamente, tmpfs es un sistema de ficheros que utiliza la memoria RAM (y el swap) como su dispositivo, pero que reserva la memoria dinámicamente, al contrario que en un ramdisk. Por éso únicamente emplea la RAM que necesita.

tmpfs es un sistema de ficheros, no un dispositivo de bloques; símplemente lo montas y está allí. No es necesario usar el comando mkfs.

Este sistema de ficheros es usado en varios archivos y dispositivos como /tmp, /dev/shm, etc.


MONTAR UN SISTEMA DE FICHEROS tmpfs

$ sudo mount -t tmpfs tmpfs /mnt/tmpfs

/mnt/tmpfs tendrá una capacidad inicial muy pequeña, pero conforme se copien y creen nuevos ficheros, el driver de tmpfs reservará más memoria virtual e incrementará dinámicamente la capacidad del sistema de ficheros. Por lo mismo, conforme se vayan borrando ficheros de /mnt/tmpfs, el driver del sistema de ficheros tmpfs dinámicamente disminuirá el tamaño del sistema de ficheros y liberará los recursos de memoria.

La velocidad es la gran ventaja de tmpfs. Como reside en la RAM, el acceso es casi instantáneo. El swap también tiene un rendimiento elevado.

tmpfs no se preserva entre reinicios del sistema porque la memoria RAM es volátil.


Para evitar consumir toda la memoria virtual podemos pasar la opción size a tmpfs:

$ sudo mount tmpfs /tmp -t tmpfs -o size=64m # Limita su tamaño a 64 megabytes.


Más información en:

http://www.ibm.com/developerworks/library/l-fs3.html#2




El directorio /dev


En la filosofía Unix cada dispositivo tiene asociado un fichero.
El direcotrio /dev es el lugar donde los ficheros que representan dispositivos están almacenados.

http://en.wikipedia.org/wiki/Udev

udev es el controlador de dispositivos para la serie del kernel linux 2.6. Su función principal es manejar los nodos de dispositivos en /dev. Es el sucesor de devfs y hotplug, lo que significa que se encarga de actualizar el directorio /dev y llevar a cabo las acciones necesarias en espacio de usuario cuando se añaden o quitan dispositivos, incluyendo la carga de firmware.

$ sudo mount -t tmpfs udev /dev




El directorio /dev/pts


El sistema de ficheros devpts proporciona una interfaz para los pseudo dispositivos de terminal (pty). Habitualmente se montan en /dev/pts. Se crea dinámicamente un nuevo dispositivo cuando el dispositivo maestro multiplexador de pty, /dev/ptmx, se abre.

$ sudo mount -t devpts devpts /dev/pts




El directorio /dev/shm


Este dispositivo implementa la memoria compartida POSIX.

P.ej: La memoria compartida puede ser usada como una forma rápida de compartir datos entre programas.


$ sudo mount -t tmpfs shm /dev/shm




El directorio /tmp


Este directorio es donde los programas almacenan sus archivos temporales. No está garantizado que esos datos se preserven entre diferentes invocaciones al mismo programa.

/tmp debe ser borrado cada vez que el sistema se reinicia.

$ sudo mount -t tmpfs tmpfs /tmp




El sistema de ficheros securityfs


Este es un sistema de ficheros que utilizan los módulos del seguridad del kernel linux.
Está montado en /sys/kernel/security

$ sudo mount -t securityfs securityfs /sys/kernel/security




El directorio /var/run


Contiene información de sistema y se borra cada vez que el sistema se reinicia.

$ sudo mount -t tmpfs varrun /var/run




El directorio /var/lock


Los ficheros de bloqueo (lock files) deben ser colocados en este directorio.

$ sudo mount -t tmpfs varlock /var/lock




REFERENCIA


La documentación del kernel proporciona buena información sobre sistemas de ficheros.

Para leerla, ejecuta estos comandos:

$sudo aptitude install linux-doc-2.6.22
$zless /usr/share/doc/linux-doc-2.6.22/Documentation/filesystems/proc.txt.gz
$zless /usr/share/doc/linux-doc-2.6.22/Documentation/filesystems/sysfs.txt.gz
$zless /usr/share/doc/linux-doc-2.6.22/Documentation/filesystems/tmpfs.txt.gz

NOTA: Sustituye 2.26.22 por tu versión del kernel.


TRADUCIDO DE:


GNU/Linux SYSTEM DIRECTORIES and their FILESYSTEMS

No hay comentarios:

Publicar un comentario en la entrada