CAPITULO 18
NETWORK FILE SYSTEM (NFS)
El NFS es un servicio que usa el modelo cliente/servidor cuyo propósito principal es permitir que el servidor comparta su espacio de almacenamiento con los clientes con los siguientes beneficios obtenidos de le centralización del almacenamiento:
Eliminar redundancia
Tener consistencia
Reducir tareas administrativas
El protocolo NFS está especificado en el RFC 1813 "NFS Version 3 Protocol Specification".
En el servicio de NFS el servidor se le conoce como "stateless server", lo cual significa que el servidor no mantiene ninguna bitácora o control del estado de las operaciones sobre los archivos (read, write, ...). El cliente es quien debe mantener las bitácoras o registros de control para saber el estado de los archivos tal como si los archivos residieran en un disco duro local. Esta estrategia de "stateless server" aporta los siguientes beneficios:
El servidor puede "caerse" y "regresar" sin producir pérdidas de información
La única contrariedad producida por un servidor caido es que se "cuelga" el cliente, siempre y cuando se estén accesando sus datos exportados.
Si el cliente se "cae" los daños producidos son los mismos que si los datos residieran en el disco duro local.
Cuando un servidor comparte almacenamiento hacia los clientes, se dice que "exporta" o que "advierte" su almacenamiento. A su vez, los clientes "importan" o "montan" ese espacio de almacenamiento.
Los comandos y archivos que están implicados en estas operaciones de exportación e importación, ya sea en línea o al tiempo de "boot" son:
|
Comando Archivo |
Propósito |
Cliente |
Servidor |
|---|---|---|---|
|
share exportfs shareall unshare unshareall |
Exportan o eliminan la exportación de filesystems |
|
si |
|
/etc/dfs/dfstab
|
Especifica los filesystems y sus permisos de exportación |
|
si |
|
/etc/rmtab |
Contiene la lista de filesystems exportados y el nombre de los clientes que lo importaron |
|
si |
|
/etc/dfs/sharetab |
Contiene la lista de recursos disponibles para ser montados en clientes. |
|
si |
|
mount mountall umount umountall
|
Importan o desmontan filesystems |
si |
|
|
/etc/vfstab |
Especifica los filesystems locales y remotos que se montan e importan al tiempo de "boot" |
si |
|
|
/etc/mnttab |
Contiene la lista de filesystems montados actualmente |
si |
|
COMANDO SHARE
El comando "share" permite exportar un filesystem. Es necesario que el filesystem resida en un disco duro local, es decir, no está implementada la facilidad de que un filesystem montado de un servidor a la vez se exporte desde la máquina que lo importó.
Ejemplos.
Observar que filesystems tenemos:
lara# df -kl
Filesystem kbytes used avail capacity Mounted on
/dev/dsk/c0t0d0s0 7054325 5071127 1912655 73% /
/dev/dsk/c0t0d0s3 246463 44703 177114 21% /tmp
/dev/dsk/c0t0d0s4 887398 102 834053 1% /var/tmp
Exportar uno que hayamos escogido, en este caso /tmp:
lara# share -F nfs -o rw,root=acadaplic /tmp
lara# share
/tmp rw,root=acadaplic ""
Observar qué filesystems tenemos exportados:
lara# share -F nfs -o [email protected] /cdrom
lara# share
- /tmp rw,root=acadaplic ""
/cdrom [email protected] ""
|
Option |
Description |
|---|---|
|
aclok |
Allows access control for NFS Version 2 clients |
|
anon=uid |
Assigns anonymous users the specified uid |
|
index=file |
Displays the contents of file instead of listing the directory for Web NFS clients |
|
nosub |
Prevents clients from mounting subdirectories of shared resources |
|
nosuid |
Prevents clients from seting setuid or setgid access modes on files |
|
public |
Specifies a public file handle |
|
ro |
Allows read-only access |
|
ro=list |
Allows read-only access to those clients specified by list |
|
root=list |
Allows root accesss to root users on clients specified by list |
|
rw |
Allows read/write access |
|
rw=list |
Allows only read/write access to those clients specified by list |
|
sec=mode |
Uses one or more of the security modes specified by mode to authenticate clients |
|
window=value |
Sets the maximum lifetime for a client's credentials to value seconds |
COMANDO UNSHARE
El comando unshare, ejecutado en un servidor, niega los próximos accesos a un filesystem que fue exportado, ya sea de manera automática (por el archivo /etc/dfs/dfstab) o bien por un comando "share" ejecutado en línea. Como argumento debe llevar al menos el nombre del filesystem y el tipo. Si el tipo no se especifica, se usará aquél especificado en el archivo /etc/dfs/fstypes.
Ejemplos.
Intento de montar /tmp de sun09sala4 que no está exportado:
lara# mkdir /tiempo
lara# mount sun09sala4:/tmp /tiempo
nfs mount: sun09sala4:/tmp: Permission denied
Exportación en sun09sala4 del filesystem /tmp:
sun09sala4# share -F nfs -d "montar en /tiempo" -o ro /tmp
sun09sala4# share
/tmp ro "montar en /tiempo"
Montado exitoso de /tmp del servidor sun09sala4:
lara# mount sun09sala4:/tmp /tiempo
lara# df -k
Filesystem kbytes used avail capacity Mounted on
/dev/dsk/c0t0d0s0 7054325 5071444 1912338 73% /
sun09sala4:/tmp 486192 456 485736 1% /tiempo
lara#
Negación de la exportación de /tmp estando éste montado en lara:
sun09sala4# unshare /tmp
sun09sala4# share
sun09sala4#
Efecto, en lara, de negar en el servidor sun09sala4 la exportación de /tmp:
lara# df -k
Filesystem kbytes used avail capacity Mounted on
/dev/dsk/c0t0d0s0 7054325 5071459 1912323 73% /
df: cannot statvfs /tiempo: Stale NFS file handle
lara#
Exportación de /tmp en el servidor para recuperar la funcionalidad en lara:
sun09sala4# share -F nfs -o ro -d "montar togro" /tmp
sun09sala4#
Efecto en lara de haber exportado /tmp que ya habia sido importado antes:
lara# df -k
Filesystem kbytes used avail capacity Mounted on
/dev/dsk/c0t0d0s0 7054325 5071459 1912323 73% /
sun09sala4:/tmp 486192 456 485736 1% /tiempo
lara#
LA TABLA DE EXPORTACION /etc/dfs/dfstab
En esta tabla se encuentran, por cada línea, la especificación de la exportación de un filesystem y los permisos con lo que éste son exportados. Las líneas que comiencen con un signo de "gato" son lineas de comentarios. Las líneas deben insertarse con cualquier editor normal y deben aparecer con la misma sintaxis como si se ejecutaran en la línea de comandos.
Ejemplo.
lara# cat /etc/dfs/dfstab
# Place share(1M) commands here for automatic execution
# on entering init state 3.
#
# Issue the command '/etc/init.d/nfs.server start' to run the NFS
# daemon processes and the share commands, after adding the very
# first entry to this file.
#
# share [-F fstype] [ -o options] [-d "<text>"] <pathname> [resource]
# .e.g,
# share -F nfs -o rw=engineering -d "home dirs" /export/home2
share -F nfs -o rw=lara:l10.1.1.1,root=lara:10.1.1.1 -d "privado" /kike
lara#
LOS COMANDOS SHAREALL Y UNSHAREALL
SHAREALL se usa para exportar todos los recursos exportables de un servidor usando el nombre de archivo enviado como argumento y el tipo de exportación de la opción -F.
UNSHAREALL se usa para negar la exportación de los filesystems del tipo indicado por la opción -F.
En ambos comandos, si no hay opción -F el tipo NFS es asumido. Solamente el comando shareall acepta el nombre de un archivo como argumento.
Ejemplos.
lara# unshareall
lara# share
lara# shareall /etc/sharitos
lara# share
- /tmp ro "temporal"
- /opt ro "curso"
lara# cat /etc/sharitos
share -F nfs -o ro -d "temporal" /tmp
share -F nfs -o ro -d "curso" /opt
lara#
EL COMANDO dfshares
Este comando sirve para desplegar qué recursos están disponibles para compartir. Si se le indica con la opción -F el tipo de exportación, mostrará únicamente los recursos montados de ese tipo. Si se usa la opción -h, los encabezados no son desplegados. La información se puede obtener tambi'en del archivo /etc/dfs/sharetab.
Ejemplos.
lara# cat /etc/dfs/sharetab
/tmp - nfs ro temporal
/opt - nfs ro curso
lara# dfshares
RESOURCE SERVER ACCESS TRANSPORT
lara:/tmp lara - -
lara:/opt lara - -
lara#
EL COMANDO MOUNT
El comando mount se usa para importar un filesystem que un servidor ha advertido o exportado, ya sea por un comando "share" en línea o al tiempo de boot por su tabla de exportación /etc/dfs/dfstab. Las opciones del comando mount son:
|
Argumento |
Descripción |
|---|---|
|
-F fstype |
Specifies the file system type |
|
-m |
Mounts the file system without creating an /etc/mnttab entry |
|
-o |
Specifies NFS-specific options (Ver tabla A) |
|
-O |
Overlays an existing mount point |
|
-r |
Mounts the file system read - only |
The mount conmmand's NFS-specific options (Tabla A)
|
Option |
Description |
|---|---|
|
hard |
If the server does not respond, continues to try to mount the resource |
|
intr |
Allows keyboard interrupts to kill the process while waiting on a hard mount |
|
nointr |
Does not allow keyboard interrupts to kill the process while waiting on a hard mount |
|
public |
Specifies a public file handle |
|
retrans=n |
Retransmits NFS request n times |
|
retry=n |
Retries the mount operation n times |
|
ro |
Mounts resource read only |
|
rw |
Mounts resource read/write |
|
soft |
If the server does not respond, retuns an error and exists. |
|
timeo=n |
Sets the NFS time-out to n tenths of a second |
|
|
|
EL COMANDO umount
Este comando es usado para desmontar un filesystem que esté actualmente importado. Soporta la opción -V para desplegar el comando a ser usado sin ejecutar la acción (sirve para verificar que el comando esté bien) y la opción -a para indicar que se desea desmontar en forma paralela.
Ejemplo.
lara# umount sun09sala4:/tmp
lara#
LA TABLA DE MONTURA E IMPORTACION /etc/vfstab
|
Field |
Description |
|---|---|
|
Device to mount |
Uses the system.resource format, where system is a hostname or IP addess an resource is the full path name of the shared NFS resource |
|
Device To fsck |
Uses a hyphen (-) to indicate no entry, because NFS clients should not check remote NFS resources with the fsck command |
|
Mount Point |
Specifies the subdirectoriy where the NFS resource should be mounted |
|
FS Type |
Uses nfs to indicate an NFS resource |
|
fsck Pass |
Uses a hyphen (-) to indicate no entry |
|
Mount At Boot |
Uses yes to indicate that the resource should be mounted at boot or when the mountall command is executed; otherwise, no. Filesystems like / and /usr are always mounted independently of the "yes" or "no" flag. |
|
Mount Options |
Specifies any desired NFS mount options, see TABLA A or the manual page for the mount command |
Nfs soporta la caracteística de client-side failover, es decir, que el cliente puede recuperarse de la falla de un servidor usando varios servidores para un mismo recurso. Por el momento, sólo se puede usar sobre recursos montados read-only, por ejemplo, las páginas del manual. No es útil para filesystems de escritura ya que el usuario tendría que saber, en el caso de que un servidor fallara, en donde quedaron sus datos finalmente.
Para usar la facilidad de client-side failover sólo hay que indicar, para un recurso que hay que importar, la lista de servidores separados por comas, como se especifica en el siguiente ejemplo en la línea de comandos:
sun09sala4# mount -r acadaplic,mailweb:/usr/man /usr/man
sun09sala4# df -k
Filesystem kbytes used avail capacity Mounted on
/dev/dsk/c0t0d0s0 8242901 4812808 3347664 59% /
acadaplic,mailweb:/usr/man
2097343 1306517 727906 65% /usr/share/man
sun09sala4#
Si se desea que en la máquina sun09sala4 se monte el /usr/man por /etc/vfstab, la línea correspondiente sería:
acadaplic,mailweb:/usr/man - /usr/man nfs 3 yes ro
Ejemplo y el caso del filesystem necio:
Montamos /usr/man en el esquema de failover, el vfstab ya tiene la entrada pertinente.
sun09sala4# mount /usr/man
sun09sala4# df -k
Filesystem kbytes used avail capacity Mounted on
/dev/dsk/c0t0d0s0 8242901 4813192 3347280 59% /
acadaplic,mailweb:/usr/man
2097343 1306522 727901 65% /usr/share/man
Desmontamos todo de uno de los dos servidores especificados:
sun09sala4# umountall -h acadaplic
sun09sala4# df -k
Filesystem kbytes used avail capacity Mounted on
/dev/dsk/c0t0d0s0 8242901 4813192 3347280 59% /
acadaplic,mailweb:/usr/man
2097343 1306522 727901 65% /usr/share/man
El filesystem no se desmontó porque agarró al segundo servidor, entonces desmontamos del segundo servidor y tampoco se desmonta porque el failover ahora toma al primero:
sun09sala4# umountall -h mailweb
sun09sala4# df -k
Filesystem kbytes used avail capacity Mounted on
/dev/dsk/c0t0d0s0 8242901 4813192 3347280 59% /
acadaplic,mailweb:/usr/man
2097343 130652 727901 65% /usr/share/man
Ahora lo desmontamos sin especificarle un servidor en particular y tenemos éxito:
sun09sala4# umount /usr/man
sun09sala4# df -k
Filesystem kbytes used avail capacity Mounted on
/dev/dsk/c0t0d0s0 8242901 4813192 3347280 59% /
Ahora lo montamos otra vez en el esquema failover:
sun09sala4# mount /usr/man
Y lo desmontamos con éxito indicando el tipo "nfs" con "umountall":
sun09sala4# umountall -F nfs
sun09sala4# df -k
Filesystem kbytes used avail capacity Mounted on
/dev/dsk/c0t0d0s0 8242901 4813192 3347280 59% /
sun09sala4#
EL COMANDO mount y COMANDO mountall
El comando mount sirve para montar un filesystem que un server ha advertido o exportado previamente. El comando mountall hace lo mismo pero con un conjunto de filesystems. Las banderas -F sirven para indicar el tipo de recurso (normalmente nfs), -l para indicar que actúe montando los locales y -r para que actúe sobre los remnotos según aparecen en el /etc/vfstab y cuya columna de "Mount at Boot" diga "yes".
Además, el comando umountall soporta las banderas -s para evitar el desmontado en paralelo, -k para eliminar aquellos procesos que estén usando un filesystem (para matyar usa el comando fuser) y la opción -h para indicar el nombre de un host específico (nombre o IP) del cual desmontar todos sus recursos.
El COMANDO dfmounts (este fue el que me confundió , ratilla del mal)
Este comando muestra los recursos mountados tanto localmente como remotamente por clientes. Es similar al comando "showmount -a" aunque la salida no tienen el mismo formato.
Ejemplos:
sun09sala4# dfmounts -F nfs
RESOURCE SERVER PATHNAME CLIENTS
- sun09sala4 /cdrom/5_3_4r2 superacadaplic
- sun09sala4 /cdrom/office52 callisto.pue.udlap.mx
- sun09sala4 /jumpstart bell2
sun09sala4# showmount -a
bell2:/opt/os_server
callisto:/jumpstart
callisto.pue.udlap.mx:/cdrom/office52
[... salida eliminada ...]
sun09sala4#
Los comandos dfmounts y showmount toman sus datos del archivo /etc/rmtab, echándole un ojo e ese archivo tenemos:
sun09sala4# more /etc/rmtab
callisto.pue.udlap.mx:/cdrom/office52
eslfw1:/opt/os_server/Solaris_8/Tools/Boot
eslfw1:/opt/os_server
[... salida eliminada ...]
sun09sala4#
La facilidad WebNFS
WebNFS es un servicio que permite accesar archivos y directorios de un servidor de NFS a través de un URL del tipo nfs://server/path. No todos los browsers o aplicaciones soportan los URL del tipo antes descrito, entre los que si lo soportan están el Hot Java Browser de Sun Microsystems . La especificación del WebNFS está en el RFC 2054 y 2055.
En el uso del WebNFS existen tres factores iniciales que tomar en cuenta y son:
1.- Cada servidor de NFS tiene una llave pública (public handle) que por omisión está asociada al filesystem raíz (/). Si el sendero especificado en el URL nfs://server/path es un descendiente de la raíz y la raíz esta exportada, entonces el acceso es permitido. Si no se desa esto, entonces se debe usar el comando "share" (o una enyrada en el dfstab) usando la opción "public" para indicar que la llave pública está asociada a otro filesystem y el acceso será permitido a sus descendientes.
Ejemplo:
sun09sala4# share -F nfs -o public -d "exportado en WebNFS" /opt
2.- El servicio de WebNFS mostrará de inicio el listado de archivos del directorio raíz o del directorio asociado a la llave pública. Si se desea que mejor se muestre un index.html, esto se debe especificar con la opción index del comando "share" (o de la entrada pertinente en la tabla dfstab):
sun09sala4# share -F nfs -o public,index=index.html -d "web" /var/apache/htdocs
3.- Los directorios o filesystems que de por sí ya están exportados son buenos candidatos a convertirse en filesystems exportados por WebNFS. Se debe tener mucho cuidado de que los archivos y directorios exportados bajo este mecanismo ahora tengan permisos adecuados y seguros ya que están expuestos al tierno escrutinio de Internet.
El Servicio AutoFS
El servicio de AutoFS fue diseñado para simplificar las tareas administrativas de NFS, reducir el tráfico en la red, evitar la fatiga de administrar múltiples tablas /etc/vfstab y agilizar los procesos de boot y shutdown.
El comando automount y el daemon automountd son ejecutados automáticamente en el nivel 2 de corrida del sistema, proveyendo los servicios de mount y umount automáticos.
Por omisión, un recurso es desmontado si no es usado durante 10 minutos. Este tiempo puede ser modificado con la opción -t del comando automount. La operación o fruncionalidad del automount es controlado por un conjunto de "mapas".
Los mapas del AutoFS
Existen tres mapas: /etc/auto_master, /etc/auto_direct y /etc/auto_indirect.
El mapa auto_master
Este mapa tiene tres columnas. La primera columna especifica el mount_point, es decir, la ruta completa o la parte inicial de una ruta en donde se va a montar el recurso. La segunda columna especifica el nombre del mapa (directo o indirecto) que indica cómo y de donde se va a montar el recurso. Si el nombre del mapa comienza con un guión (hyphen en inglés) entonces el nombre de mapa es un "special builtin map". La tercera columna especifica las opciones de mount tales como rw,ro,intr,bg,soft,etcétera.
Ejemplo:
sun09sala4# cat /etc/auto_master
# Master map for automounter
# La entrada -hosts indica /etc/hosts
# La entrada -xfn utiliza recursos del servicio Federated Naming Services
# La entrada +auto_master indica que se usará la misma tabla pero de NIS
#
+auto_master
/net -hosts -nosuid,nobrowse
/home auto_home -nobrowse
/xfn -xfn
sun09sala4#
Mapas Directos
Un mapa directo es aquél que especifica senderos de mount point y recursos de NFS, estos mapas tienen tres columnas que son:
Key (llave).- Que especifica un mount point
Mount Options.- Cero o más opciones del comando "mount"
NFS Resource.- Especificado como server:path. Se pueden especificar varios servers para un mismo mount_point.
El nombre por default del primer mapa directo es /etc/auto_direct.
Ejemplo:
acadaplic# pwd
/var/yp/auto
acadaplic#/ more auto_direct
archivos/vol102 -nosuid,intr,soft,bg mailweb:/home/34/vol102
/archivos/vol117 -nosuid,intr,soft,bg eslfw1:/tragones1
/archivos/vol118 -nosuid,intr,soft,bg eslfw1:/tragones2
/archivos/vol119 -nosuid,intr,soft,bg eslfw1:/sig01
/archivos/vol120 -nosuid,intr,soft,bg eslfw1:/sig02
/archivos/vol103 -nosuid,intr,soft,bg mailweb:/home/34/vol103
/archivos/vol104 -nosuid,intr,soft,bg mailweb:/home/34/vol104
/archivos/vol105 -nosuid,intr,soft,bg mailweb:/home/34/vol105
/archivos/vol106 -nosuid,intr,soft,bg mailweb:/home/34/vol106
/archivos/vol107 -nosuid,intr,soft,bg mailweb:/home/34/vol107
/archivos/vol01 -nosuid,intr,soft,bg superacadaplic:/home/34/vol01
/archivos/vol02 -nosuid,intr,soft,bg superacadaplic:/home/34/vol02
/archivos/vol03 -nosuid,intr,soft,bg superacadaplic:/home/34/vol03
/archivos/vol04 -nosuid,intr,soft,bg superacadaplic:/home/34/vol04
/archivos/vol05 -nosuid,intr,soft,bg superacadaplic:/home/34/vol05
acadaplic#
Mapas Indirectos
Un mapa indirecto se encarga de especificar el resto del mount point que se comenzó a determinar en el archivo /etc/auto_master y el recurso NFS a ser usado. Estos mapas tienen 3 columnas que son:
Key : Típicamente el resto del mount point.
Mount Options: Cero o más opciones de montura separados por comas.
NFS Resource : Especificación de servidor:filesystem.
Ejemplo:
acadaplic# cat auto_master
/home auto_home
acadaplic# cat auto_home
/mx/vol500 soft,intr,bg mailweb:/archivos/vol500
acadaplic#
En este ejemplo, en el auto_master se especifica que las monturas del directorio /home están especificados por el archivo auto_home. Y en el auto_home especifica que el directorio /home/mx/vol500 será montado con opciones soft,intr,bg del servidor mailweb y el filesystem a montar ( o directorio) es /archivos/vol500.
EJECUTANDO EL COMANDO automount
Siempre que se le haga cualquier cambio a un mapa directo se recomienda que se ejecute el comando "automount" para que dichos cambios sean tomados en cuenta y los recursos por montar o desmontar sean actualizados.
Ejemplo:
sun09sala4# automount -v
automount: no mounts
automount: no unmounts
sun09sala4#
El Servicio de Cache File System CacheFS
El servicio de Cache File System (CacheFS) es un servicio del lado del cliente (client-side) que provee la facilidad de almacenar en un disco local los accesos a archivos que residen en filesystems remotos, obteniendo como beneficio incrementar la velocidad de acceso y decrementar el tráfico en la red.
Primero, se tiene que crear un área de cache. Después se monta el filesystem remoto asociándolo al rea de cache.
Ejemplo:
lara# cfsadmin -c /cache/AREA
lara# mount -F cachefs -o backfstype=nfs,cachedir=/cache/AREA sun09sala4:/usr/man /usr/man
lara#
La primera vez que un recurso de un filesystem es accesado, el recurso es copiado al área de cache. Los accesos siguientes son tomados del área de cache en lugar de ir al servidor de NFS. El recurso remoto se puede montar por un comando mount en línea, a través de una entrada en la tabla vfstab o por el sistema de AutoFS.
Los filesystems root (/) y /usr no se pueden usar bajo el CacheFS, pero si se pueden "cachear" usando el mecanismo de AutoClient revisado brevemente en el capítulo 13.
Configurando un Cache
Para configurar un cache y manejarlo se usa el comando cfsadmin (cache file system admin), con las siguientes opciones:
cfsadmin -c [ -o cacheFS-parameters ] cache_directory: Crea un área de cache.
cfsadmin -d [ cache_ID| all ] cache_directory: Borra un área de cache.
cfsadmin -l cache_directory: Lista el contenido del área de cache.
cfsadmin -s [ mntpt1...| all ]: Realiza una verificación de consistencia.
cfsadmin -u [ -o cacheFS-parameters ] cache_directory: Actualiza los parámetros de configuración.
Ejemplo y Ejercicio:
|
Servidor |
A quien le toca |
cliente |
|---|---|---|
|
acadaplic |
Mtro. Angel Rico Guzmán |
lara.udlap.mx |
|
mailweb |
Reyna Castro Ibarra |
lara.udlap.mx |
|
adminaplic |
Mtro. Sandra Rocío M.C. |
lara.udlap.mx |
|
develop |
Ing. Alejandra Aldrette M. |
lara.udlap.mx |
|
ssray1 |
Ing. Elizabeth Gómez S. |
lara.udlap.mx |
|
ssray2 |
Ing. Violeta Vasconcelos Ch. |
lara.udlap.mx |
|
ssray5 |
Ing. Ruth Enriquez M. |
lara.udlap.mx |
Cada participante exporte el directorio /usr/man de la máquina que le toca según la tabla anterior. Esto es, "share -F nfs -o ro /usr/man".
Cada participante entre a lara.udlap.mx y cree un área de cache indicando que el tamaño máximo de archivo a cachar es de 5 Megabytes. Esto es: " cfsadmin -c -o maxfilesize=5 /cache/AREA_SSRAY1".
Cada participante monte en lara.udlap.mx el filesystem que exportó de su servidor asociándola al rea de cache que le toque.
Primero cree un directorio local donde montar el filesystem remoto, esto es: "mkdir /usr/<nombre_servidor_que_toque>".
Monte el filesystem remoto asociándolo al área de cache, esto es: " mount -F cachefs -o backfstype=nfs,cachedir=/cache/AREA_SSRAY1 ssray1:/usr/man /usr/ssray1".
Cheque que el filesystem está montado, esto es: " df -k ".
Goce de la eficiencia y efectividad del manejo del cache observando su compartamiento.
Cada participante eche a andar un snoop para ver el tráfico entre lara.udlap.mx y el servidor que le toque en una ventana separada.
Luego consulte el man page del comando "ls" usando el directorio de man page que le toque de su servidor .
Ponga mucha atención a la salida del snoop en el primer acceso y luego en el segundo.
El segundo acceso debe ser más rápido y el tráfico mostrado por snoop más liviano. Esto es: " snoop between lara ssray1" en una ventana y en la otra "man -M /usr/ssray1 ls ".
Cada participante cheque el estado de su cache. Esto es: " cfsadmin -l /cache/AREA_SSARY1".
Cada participante cambie el tamaño del maxfilesize a 10 Megabytes.
Primero desmonte el filesystem correspondiente.
Luego cambie el privilegio con el comando: " cfsadmin -u maxfilesize=10 /cache/AREA_SSRAY1".
Vuelva a montar el filesystem correspondiente.
Cada participante cheque las estadísticas del rea de cache. Esto es: " cachefsstat /usr/ssray1".
Cada participante haga un chequeo de consistencia de su cache. Esto es: " cfsadmin -s /usr/ssray1".
La opción -l del comando cfsadmin muestra la siguiente información.
|
descriptor |
significado |
|---|---|
|
maxblocks |
Cantidad máxima de espacio que el cache puede ocupar en el filesystem que lo contiene, en % de blocks. Default es 90. |
|
minblocks |
Cantidad mínima de espacio que el cache puede ocupar en el filesystem que lo contiene, en % de blocks. Default es 0. |
|
threshblocks |
La holgura a la cual no se pueden ocupar más recursos después de haber rebasado el minblocks, en %blocks. Default es 85. |
|
maxfiles |
El máximo nmero de archivos que se pueden usar del filesystem donde reside el cache, en % de i-nodes. Default es 90. |
|
minfiles |
The número mínimo de archivos que el cache puede usar en el filesystem donde reside, en % de i-nodes. Default es 0. |
|
thresfiles |
La holgura a la cual no se pueden pedir más i-nodes después de alcanzar minfiles, en % de i-nodes. Default es 85. |
|
maxfilesize |
Tamaño máximo de archivo que se cacha en Megabytes.Default es 3. |
|
mount_info |
Recurso que se monta, mapeando la diagonal por subrayas. |
TIP.- Note que todos los máximos tienen por default 90. Note que todos los "tresholds" tienen por default 85. Note que todos los mínimos son 0. Note que todos los parámetros referidos en "blocks" se expresan en % de blocks, note que todos los parmetros referidos en "files" están en % de i-nodes.
Despliegue de las estadísticas de uso del cache
El comando cachefsstat(1M) se usa para desplegar las estadísticas de uso del área de cache como se vio en el ejercicio anterior. La información desplegada está en la siguiente tabla.
|
parámetro |
significado |
|---|---|
|
cache hit rate |
% de intentos exitosos de acceso de archivos y directorios y número de intentos fallidos y exitosos. |
|
consistency checks |
Número de chequeos de consistencia hechos, número de exitosos y de fallidos. |
|
modifies |
Número de operaciones de modificación |
|
garbage collection |
Número de intentos de desocupar recursos que están en desuso. |
Chequeo de la consistencia del cache
El chequeo de la consistencia se hace para estar seguros de que la información en el cache está actualizada. El chequeo de la consistencia se hace automáticamente cada cierto intervalo de tiempo consumiendo tráfico de la red. En algunos casos se desearía no hacer chequeos de consistencia o hacerlos manualmente (on demand, en demanda).
Para deshabilitar el chequeo automático, especifique la opción demandconst al montar el filesystem. Es obvio que si un filesystem es montado read-only, se debe deshabilitar el chequeo de consistencia ya que los datos no necesitan verificarse porque nunca cambiarán. Ejemplo:
lara# mount -F cachefs -o backfstype=nfs,cachedir=/cache/AREA_SSRAY1,demandconst ssray1:/usr/man /usr/ssray1
lara#
El chequeo de la consistencia se hace a mano (en demanda) asi:
lara# cfsadmin -s /usr/man
lara#
Observe que al comando cfsadmin se le envía el punto de montura para el chequeo de consistencia y no el área de cache.
Manejando un Cache Log
El comando cachefslog(1M) se usa para establecer, verificar y detener (setup, verify, halt) la facilidad de CacheFS logging. Luego, el comando cachefswssize (cache file system working set size) se usa para analizar el "log" y determinar un mejor tamaño del "working set" del cache. Un cache que es muy pequeño causará retrasos en el acceso y un mayor tráfico en la red (low hit rate). Un cache muy grande desperdiciará espacio en el filesystem que lo contiene.
Para habilitar un CacheFS Log, use el comando cachefslog con la opción -f seguido por el nombre del archivo de log y luego el mount_point (no use el nombre del cache). Ejemplo:
lara# cachefslog -f /tmp/logssray1 /usr/ssray1
/tmp/logssray1: /usr/ssray1
lara#
Para verificar si se está haciendo "CacheFS Log" sobre un filesystem teclee:
lara# cachefslog /usr/ssray1
/tmp/logssray1: /usr/ssray1
lara#
Para detener el Log teclee:
lara# cachefslog -h /usr/ssray1
not logged: /usr/ssray1
lara#
Para analizar y determinar el cache working set apropiado teclee:
lara# cachefswssize /tmp/logssray1
/usr/ssray1
end size: 200k
high water size: 200k
total for the cache
initial size: 10000K
end size: 200K
high water size: 200K
lara#
|
parámetro |
significado |
|---|---|
|
End size |
Tamaño del working set cuando el log fue detenido. |
|
High water size |
Máximo tamaño del working set durante el uso del cache. |
|
TforC initial size |
Tamaño inicial del cache. |
|
TfC end size |
Tamaño final del cache. |
|
TfC high water size |
Máximo tamaño del working set durante el uso del cache. |
Si el TfC high water size es el mismo que initial size, probablemente el cache es muy pequeño. Si TfC high water size es mucho más pequeño que initial size, probablemente es muy grande.
EXAM
1.- Which of the following commands can be used to mount the /export/home file system from the solaris system (IP address of 192.168.39.7) on the /mnt mount point?
[] a. mount -F nfs -h solaris /export/home/mnt
[] b. mount -F nfs 192.168.39.7:/export/home /mnt
[] c. mount -F nfs /mnt solaris:/export/home
[] d. mount -F nfs /export/home@solaris /mnt
2.- Enter the name of the file system type used to temporarly store a remote NFS resource on a local disk.
_____________________________
3.- Which of the following are types of AutoFS maps? [Select all that apply]
[] a. direct
[] b. indirect
[] c. linked
[] d. auto_master
[] e. auto_home
Which of the following situations requires that the autmount command be manually executed? [Select all that apply]
[] a. Addition to auto_master
[] b. Addition to a direct map
[] c. Addition to an indirect map
[] d. Deletion from auto_master
[] e. Deletion from a direct map
[] f. Deletion from an indirect map
Which of the following commands is used to create a Cache FS configuration?
[] a. cfsadm
[] b. cachefsinit
[] c. cfsadmin
[] d. newcache
[] e. cfscreate
6.-Idenfify the command used to make an NFS resource available for mounting or to list those resources available.
_____________________________
7.- Match each comand with its operation:
|
a. cachefswssize |
|
1. Displays cache file system statistics |
|
b. cachefslog -h |
|
2. Displays the cache status |
|
c. cachefslog -f |
|
3. Displays the cache working set size |
|
d. cachefsstat |
|
4. Starts cache logging |
|
e. cfsadmin -l |
|
5.Stops cache logging |
8.- Which of the following commands can be used to determine any mounted NFS resources? [Select all that apply]
[] a. share
[] b. dfmounts
[] c. nfsmounts
[] d. mountall
[] e. mount
9.- When using NFS, which of the following results are true? [Select all that apply]
[] a. Introduces redundancy
[] b. Improves consistency
[] c. Reduces administration
[] d. Reduces network traffic
Identify the NFS-specific option used with the -o command - line argument of the share command to change the public file handle.
_________________________________
Which file contains one or more share commands used with the shareall command?
[] a. /etc/ nfs/nfstab
[] b. /etc/nfs/shares
[] c. /etc/dfs/dfstab
[] d. /etc/dfs/sharetab
The command cfsadmin -s xyz fails. Which of the followin is probably the reason?
[] a . xyz is a mount point. It shoul be the name of a acache.
[] b. The demandconst option was not specified when mounting wyz
[] c. Cache logging has not been started.
[] d. The size of the cache is too small