CAPITULO 16
PSEUDO FILE SYSTEMS AND SWAP SPACE
Solaris 8 soporta algunos tipos de sistemas de archivos (filesystems) que se manejan en memoria, a todos ellos se les refiere como pseudo filesystems. Se soportan nueve tipos de pseudo filesystems. De ellos, cinco no necesitan ninguna administración. Huelga decir que el contenido de este tipo de filesystems se pierde cuando el filesystems se desmonta o cuando se va la luz.
|
Nombre |
Abreviación |
Uso |
|---|---|---|
|
Cache Filesystem FS |
CacheFS |
Hace cache de FS remotos (montados) |
|
File Descriptors FS |
FDFS |
Permite abrir archivos con descriptores de archivos nombrados. |
|
Fisrt-In First-Out FS |
FIFOFS |
Permite accesar "pipes" con nombre. |
|
Loopback FS |
LOFS |
Permite accesar datos a través de rutas alternativas. |
|
Name FS |
NAMEFS |
Permite que se monten los descriptores de archivos por módulos de STREAMS. |
|
Process FS |
PROCFS |
Permite accesar información de procesos que se están ejecutando. |
|
Special Device FS |
SPECFS |
Permite accesar dispositivos de caracteres o bloques. |
|
Swap FS |
SWAPFS |
Permite accesar el espacio de swap del sistema. |
|
Temporary FS |
TMPFS |
Permite un acceso rápido a archivos temporales. |
Los sistemas de archivos CacheFS, LOFS, TMPFS y PROCFS requieren cierta administración, los demás no.
Process Filesystems PROCFS
Todo sistema solaris 8 cuenta con una instancia de Process Filesystem disponible en el directorio /proc. Bajo el directorio /proc existirá un subdirectorio cuyo nombre es el número de proceso de cada proceso activo en el sistema. Todos estos direcrtorios son administrados directamente por el núcleo (kernel) del sistema operativo y contienen información (tal como el status) de cada proceso. Estos directorios le pertenecen al usuario "root" y sus permisos son 555 (r-xr-xr-x).
Existen un conjunto de comandos que sirven para extraer información variada de los directorios del PROCFS, a estos comandos se les conoce como PROC TOOLS.
|
Comando |
Descripción |
|---|---|
|
pcred |
Lista las credenciales del proceso que son su PID y GID. |
|
pflags |
Despliega banderas y señales pendientes entre otros datos. |
|
pfiles |
Despliega información de todos los archivos abiertos (i-nodos). |
|
pldd |
Despliega las librerías dinámicas abiertas |
|
prun |
Permite que el proceso continúe su ejecución. |
|
psig |
Lista las acciones de señales |
|
pstack |
Lista el stack |
|
pstop |
Detiene la ejecución del proceso, no lo termina, lo detiene. |
|
ptime |
Despliega el tiempo de ejecución del proceso. |
|
ptree |
Despliega el árbol de ejecución: procesos e hijos. |
|
pwait |
Espera a que el proceso termine su ejecución. |
|
pwdx |
Despliega el directorio actual de ejecución del proceso. |
|
pmap |
Despliega el mapa del espacio de memoria del proceso. |
Ejercicio: Cada uno de los asistentes abra un "vi <nombre_asistente.txt>" y obtenga el PID de su proceso vi. Luego váyase al directorio /proc
y vea la salida de cada comando.
Temporary File System TMPFS
Solaris 8 ofrece por default dos instancias de sistemas de archivos temporales. Uno reside en /tmp y es propiedad de "root" y tiene permisos 1777. El otro es /var/run cuyo dueño es "root" y sus permisos son 755. Ambos son filesystems basados en memoria y desaparecen cuando el filesystems es desmontado o cuando se hace un reboot.
Loopback File System LOFS
El loopback filesystem sirve para accesar filesystems a través de senderos alternos, lo cuasl permite que un mismo conjunto de datos se pueda accesar por rutas diferentes. Esto permite montar diferentes filesystems en un lugar orígen y verlo en las rutas diferentes. Pero si se monta un filesystem en el destino, éste no aparecerá en el origen.
Problema Real en la UDLA y solución con LOFS
Se tiene el siguiente escenario en la máquina goliath:
goliath# df -kl
Filesystem kbytes used avail capacity Mounted on
/dev/dsk/c0t0d0s0 146319 111214 20475 85% /
/dev/dsk/c0t0d0s6 722511 303373 346888 47% /usr
/proc 0 0 0 0% /proc
fd 0 0 0 0% /dev/fd
/dev/dsk/c0t0d0s7 936646 470891 372095 56% /opt
/dev/dsk/c0t1d0s6 2053515 336766 1655144 17% /swbiblio
/dev/dsk/c0t1d0s7 2028387 781751 1185787 40% /wwwbiblio
/dev/dsk/c0t5d0s0 1205856 496518 588758 46% /var/mail
/dev/dsk/c0t5d0s1 911233 672256 147857 82% /vol01
/dev/dsk/c0t5d0s3 911233 794460 25653 97% /vol02
/dev/dsk/c0t5d0s4 911233 794965 25148 97% /vol03
/dev/dsk/c0t2d0s0 3939604 2961850 583794 84% /vol04
swap 223208 264 222944 1% /tmp
goliath#
Y en su máquina sustituto llamada 'santa' se tiene lo siguiente:
santa# df -kl
Filesystem kbytes used avail capacity Mounted on
/dev/dsk/c1t0d0s0 4032504 832906 3159273 21% /
/proc 0 0 0 0% /proc
fd 0 0 0 0% /dev/fd
mnttab 0 0 0 0% /etc/mnttab
swap 2676128 8 2676120 1% /var/run
/dev/dsk/c1t0d0s5 14543925 9 14398477 1% /sydney
/dev/dsk/c1t0d0s4 15121031 2133 14967688 1% /opt
/dev/dsk/c1t0d0s3 288509 35 259624 1% /tmp
/dev/dsk/c1t1d0s4 15121031 2133 14967688 1% /wwwbiblio
/dev/dsk/c1t1d0s5 14543925 9 14398477 1% /vol04
santa#
Santa se particionó así para evitar el conocido problema de tener muchas particiones pequeñas susceptibles de llenarse y causar luego problemas de localización de espacio libre para trabajar.
Ahora, para poder copiar todos los datos de goliath hacia santa respetando los nombres de los filesystems vol01,vol02,vol03,swbiblio y todos los que sean necesarios, aplicaremos el uso del LOFS permitiendo así que un mismo filesystem se monte en repetidos mount-points. Por ejemplo, vamos a usar el filesystem /wwwbiblio de 15 Gb como /vol01 y /vol02. Esto se hace aplicando los siguientes comandos:
santa# mount -F lofs /wwwbiblio /vol01
santa# mount -F lofs /wwwbiblio /vol02
santa# df -kl
santa# df -kl
Filesystem kbytes used avail capacity Mounted on
/dev/dsk/c1t0d0s0 4032504 832906 3159273 21% /
/proc 0 0 0 0% /proc
fd 0 0 0 0% /dev/fd
mnttab 0 0 0 0% /etc/mnttab
swap 2676128 8 2676120 1% /var/run
/dev/dsk/c1t0d0s5 14543925 9 14398477 1% /sydney
/dev/dsk/c1t0d0s4 15121031 2133 14967688 1% /opt
/dev/dsk/c1t0d0s3 288509 35 259624 1% /tmp
/dev/dsk/c1t1d0s4 15121031 2133 14967688 1% /wwwbiblio
/dev/dsk/c1t1d0s5 14543925 9 14398477 1% /vol04
/wwwbiblio 15121031 2133 14967688 1% /vol01
/wwwbiblio 15121031 2133 14967688 1% /vol02
santa#
Para que los filesystems ya se monten de esta manera al tiempo de boot, falta que en el /etc/vfstab pongamos las líneas pertinentes a estos dos casos, las cuales quedarían así:
santa# cat /etc/vfstab
[salida parcialmente eliminada para mejorar legibilidad]
/dev/dsk/c1t1d0s4 /dev/rdsk/c1t1d0s4 /wwwbiblio ufs 2 yes -
/wwwbiblio - /vol01 lofs 3 yes -
/wwwbiblio - /vol02 lofs 3 yes -
santa#
Es importante que al poner entradas de puntos de montura tipo lofs, éstas queden al final del /etc/vfstab para asegurar que los mount-points y los filesystems a montar ya estén listos.
Tarea: Terminar de configurar "santa" para que tenga los demás "filesystems" que existen en goliath, tal vez ahora usar el filesystem vol04 de 14 Gb para tener /vol03, /var/mail y /swbiblio.
Cache File System CacheFS
También es un filesystem basado en memoria y sirve para agilizar el acceso a sistemas de archivos remotos (NFS) o discos locales lentos (CDROM). Este tipo de filesystem almacena localmente y en memoria los datos que se van accesando (remotos o cdrom) de manera que las próximas lecturas las hace en memoria. Se verá en detalle en el capítulo 17.
SWAP SPACE
El espacio de intercambio es usado para implementar en Solaris 8 el manejo de memoria virtual. Conforme los programas exigen memoria física y ésta se agota, Solaris 8 utiliza el espacio de SWAP para almacenar procesos que no están en ejecución (o partes de ellos) y carga en memoria los que están activos. Nótese que mientras más archivos temporales existan, Solaris 8 requerirá de mayor espacio de memoria física y posiblemente exija el uso de SWAP.
Solaris calcula un espacio por omisión de SWAP dependiendo de la cantidad de memoria real instalada conforme a la siguiente tabla.
|
Memoria Física Instalada |
Tamaño de SWAP recomendado |
|---|---|
|
Menos de 64 MB RAM |
32 |
|
De 64 a 127 MB |
64 |
|
De 128 a 511 MB |
128 |
|
De 512 en adelante |
256 |
Para añadir más espacio de SWAP se pueden hacer dos procedimientos:
Usar una partición nueva y declararla como SWAP usando el archivo /etc/vfstab
Crear un archivo con el comando "mkfile" y añadirla con el comando swap -a.
Administrando el espacio de SWAP
El comando "swap" sirve para añadir, listar, borrar y observar el uso del espacio de SWAP.
Listado:
centia# swap -l
swapfile dev swaplo blocks free
/dev/dsk/c0t0d0s1 32,1 16 14390432 14390432
centia#
Añadir espacio de SWAP y listarlo
centia# mkfile 20m SWAPCURSO
centia# swap -a /SWAPCURSO
/SWAPCURSO: No such file or directory <-- Es importante indicar el sendero completo de la ubicación del SWAPFILE
centia# pwd
/etc
centia# swap -a /etc/SWAPCURSO
centia# swap -l
swapfile dev swaplo blocks free
/dev/dsk/c0t0d0s1 32,1 16 14390432 14390432
/etc/SWAPCURSO - 16 40944 40944
centia#
Observar uso de SWAP
centia# swap -s
total: 773608k bytes allocated + 247264k reserved = 1020872k used, 7628880k available
centia#
Eliminar espacio de SWAP y listar
centia# swap -s
total: 773608k bytes allocated + 247264k reserved = 1020872k used, 7628880k available
centia# swap -d /etc/SWAPCURSO
centia# swap -s
total: 776056k bytes allocated + 248208k reserved = 1024264k used, 7605008k available
centia# swap -l
swapfile dev swaplo blocks free
/dev/dsk/c0t0d0s1 32,1 16 14390432 14390432
centia#
PREGUNTAS DE EXAMEN
Match each pseudo filesystem with its use
a. CacheFS 1. Temporary files
b. PROCFS 2. Alternate path names
c. TMPFS 3. Process information
d. LOFS 4. Local caching of data
Which swap command-line argument will add swap file to the system swap space?
[ ]a. -a
[ ]b. -d
[ ]c. -l
[ ]d. -s
The /tmp directory is one of two TMPFS instances tipically found on a Solaris 8 system. Which of the following is the other?
[ ]a. /etc/run
[ ]b. /var/run
[ ]c. /etc
[ ]d. /var/tmp
[ ]e. /(root)
Which of the following commands are PROC TOOLS ? Match with corresponding funcionality
[ ]a. pstop 1. List process used files in a i-node fashion
[ ]b. pfiles 2. List used memory or address space of process
[ ]c. pstart 3. Show the process current working directory for process
[ ]d. pwdx 4. Show signal actions for this process
[ ]e. psig 5. Tells the process to initiate activities
[ ]f. pmem 6. Stops the process for later activity.
Which of the following is the correct syntax for the mkfile command?
[ ]a. mkfile -s 32m /swapfile
[ ]b. mkfile 32 M swapfile
[ ]c. mkfile 32m /swapfile
[ ]d. mkfile 32m -f /swapfile
Which of the following conditions might require additional swap space?
[ ]a. Physical memory is added.
[ ]b. The /tmp file system is being heavily used.
[ ]c. The load on the system increases.
[ ]d. Several memory-intensive applications are added to the system.
Which of the following pseudo file systems are used to provide fast local access to files and directories?
[ ]a. TMPFS
[ ]b. LOFS
[ ]c. SWAPFS
[ ]d. PROCFS
[ ]e. CacheFS
Which is the correct syntax for mounting the already existing /home/34/vol01 filesystem on a different mount-point /volumen01?
[ ]a. mount -F nfs /home/34/vol01 /volumen01
[ ]b. mount -F hsfs /home/34/vol01 /volumen01
[ ]c. mount -F lofs /volumen01 /home/34/vol01
[ ]d. mount -F lofs /home/34/vol01 /volumen01