Configuración de Redes para usar Bases de Datos descargar PDF

2004.05.18 by anix

Cuando una aplicación es instalada en una red, cualquier problema o debilidad en el sistema operativo o red, son heredados por la aplicación. Como resultado, cuando ocurren problemas de red, afectan el software de la aplicación. Como el problema se manifiesta a través de la aplicación, suele culparse a la misma por los daños ocasionados. Sin embargo, la corrupción de datos y otros problemas manifestados en la aplicación son generalmente causados por problemas del software de red e inclusive por problemas de hardware. A medida que el número de usuarios de una red aumenta, el tráfico en la misma y la frecuencia con que estos problemas se suceden. Debido a la complejidad de los sistemas de red, cuando ocurre una corrupción de los datos, resulta muy difícil diagnosticar dichos problemas, incluso para el personal especializado.


Información del artículo

He aquí una recopilación de entradas de configuración del Registro de Windows, para redes Windows, Netware y Samba, que ayudan a comprender ciertos parámetros útiles a la hora de prevenir errores. La mejor solución para estos problemas suele ser la instalación de todas las actualizaciones, parches y service packs disponibles para el sistema operativo. Inclusive es recomendable instalar los controladores de hardware provistos por el mismo fabricante de la placa de red, y no el provisto por Microsoft, como así también el Cliente de Redes Novell provisto por la firma y no el de Microsoft.
Esta recopilación se basa en artículos publicados en las bases de conocimiento de Microsoft, Borland, Netware y Samba, como así también algunos artículos aislados publicados en foros de discusión, y en parámetros de configuración recomendados en las FAQ y Help de algunos programas, en Ingles y español, que he traducido a nuestra lengua para facilitar su comprensión. Si bien existen versiones en español de varios de los artículos utilizados de la base de conocimientos de Microsoft, la mayoría han sido interpretados y traducidos por mi de su versión en Ingles, ya que los traductores automáticos utilizados suelen ser bastante poco precisos y brindar resultados confusos.
Esta configuración debe ser implementada en cada maquina que compone una red, a pesar de que algunos puedan ser específicos de un sistema operativo en particular, no causará daño si se aplican en cualquier otro, y deben reaplicarse cada vez que se instale el sistema operativo o un cliente de red, y posteriormente reiniciar el equipo en cuestión.
Esta configuración es útil para bases de datos TopSpeed, Paradox, Clarion para DOS y puede que algunas otras.
Lamentablemente, no puedo hacerme responsable por los daños que pueda ocasionar la implementación de estos parámetros de configuración. Nunca es recomendable editar el registro de Windows, debido los potenciales problemas que pueden surgir si no se hace correctamente. La versión de Microsoft de esta advertencia es la siguiente: “Using Registry Editor Incorrectly can cause serious problems that may require you to reinstall your operating system. Microsoft cannot guarantee that problems resulting form the incorrect use of Registry Editor can be solved. Use registry editor at your own risk”, o sea ellos tampoco se hacen cargo.


Algunos conceptos teóricos a modo de glosario

MKB: Microsoft Knowledge Base o Base de Conocimientos de Microsoft. (http://support.microsoft.com)

RAS:
Remote Access Service o Servicio de Acceso Remoto

Redirector:
Es el software que permite a las estaciones de trabajo clientes de la red, comunicarse con el servidor a través de la misma. Este software es un componente crítico de la red. Cada estación de trabajo en una red, tiene instalado un redirector. Para redes Windows VREDIR.VXD, para redes Netware NWREDIR.VXD.

SMB:
Server Message Block o Bloque de Mensaje del servidor

Oportunisitic Locking u OpLock:
Es un mecanismo para realizar en la maquina local, un caché de datos a los cuales accede una aplicación, en vez de leer la información mas reciente en ellos del servidor Windows NT/2000/XP, a los fines de mejorar el tiempo de respuesta a peticiones realizadas por usuarios de la red. En la MKB traducen Oportunisitic Locking como Bloqueo Oportunista. Este bloqueo suele ocasionar problemas cuando no funciona correctamente. Se explica en detalle en el articulo de la base de conocimientos de Microsoft Nº 129202 “Explanation of Opportunisitic Locking on Windows NT”. Vale recalcar que el mismo artículo aclara “El OpLocks mejora notablemente el rendimiento, pero tiene el potencial de causar perdida de datos en caché en algunas redes…”
Funcionamiento: Con un OpLock exclusivo, si un archivo es abierto de modo NO exclusivo (deny none), el redirector solicita un bloqueo oportunista sobre todo el archivo. Mientras ningún otro proceso tenga el archivo abierto, el servidor garantiza este OpLock, dando al redirector acceso exclusivo a ese archivo específico. Esto le permite al redirector realizar un buffer de lectura y escritura y un caché del mismo mientras ningún otro proceso intente abrir el archivo. Cuando un segundo proceso intenta abrir el archivo, se le solicitará al propietario original que detenga el bloqueo oportunista o se pase a un nivel II del mismo. En ese momento, el redirector debe invalidar los datos en caché, quitar los bloqueos estándar, y liberar el bloqueo oportunista o cerrar el archivo.
El nivel II del bloqueo oportunista (OpLock Level II), provee un método que garantiza a más de una estación de trabajo, el acceso de lectura para un archivo. Esto le permite a estas estaciones cachear datos localmente para realizar un buffer de lectura. Mientras ninguna estaciones escriba en el archivo, todas pueden tener el archivo abierto con este bloqueo de nivel II.
Ejemplo paso a paso del funcionamiento:
cabe aclarar que cuando menciono Clientes, me refiero a estaciones de trabajo, clientes de un servidor en una red:

El cliente 1 abre el archivo solicitando un bloqueo oportunista.
Como ninguna otra estación tiene el archivo abierto, el servidor le garantiza al cliente 1 un OpLock exclusivo.
El cliente 2 abre el archivo, solicitando un OpLock.
Como el cliente 1 aun no ha escrito en el archivo, el servidor le solicita al mismo que se pase a un oplock de nivel II.
El cliente 1 acepta la petición invalidando la información cacheada del bloqueo y tomando los datos actualizados del servidor.
El cliente 1 informa al servidor que se ha pasado a un opclock nivel II (alternativamente podría haber cerrado el archivo).
El servidor responde a la solicitud de apertura del archivo realizada por el cliente 2, garantizándole un bloqueo oportunista de nivel II. De igual modo, otros clientes pueden abrir el archivo y obtener el mismo nivel de bloqueo.
El cliente 2 (o cualquier otro cliente que tenga el archivo abierto) envía un pedido de escritura SMB. El servidor devuelve la respuesta al pedido de escritura.
El servidor le solicita a todos los clientes que tienen el archivo abierto que se pasen a un bloqueo Oportunista None, o sea ningún cliente tiene un oplock sobre el archivo. Debido a que los clientes pueden tener escrituras en el buffer o bloqueos estándar en ese momento, necesitan no responder a la solicitud, todo lo que necesitan hacer es declarar como NO válidos todos los datos de su buffer de lectura.

RFCB: Bloques de control de archivos remotos.

LFCB: Bloques de control de archivos locales.


La causa de la corrupción de datos en pocas palabras

Los redirectores intentan mejorar el rendimiento de la red poniendo en un caché de memoria de la maquina local, parte de los archivos de la base de datos en vez de leer la información mas reciente del servidor de la red. Desafortunadamente los algoritmos utilizados para realizar el caché, suelen ocasionar problemas que interfieren con el correcto funcionamiento de programas de bases de datos multiusuarios. Generalmente los proveedores de los redirectores (Microsoft, Novell, etc.), publican actualizaciones o parches que corrigen estas fallas una vez que han sido reportadas.


Claves y valores del Registro de Windows


[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\FileSystem]


DriveWriteBehind = 0

Esta opción determina la utilización del caché de escritura en segundo plano. En Windows 9x puede configurase desde el panel de control, Sistema, seleccionando la pestaña Rendimiento, Sistema de archivos, Solución de problemas, y activar la opción Desactivar la caché de escritura en segundo plano.
Se recomienda activarla (valor 1 o checkbox desmarcada), únicamente en sistemas que disponen de menos de 64 Mb de memoria RAM.

SoftCompatMode = 0

Esta opción permite desactivar la “Nueva semántica de bloqueo y uso compartido de archivos".
Puede encontrase en la misma pestaña especificada anteriormente.

AsyncFileCommit = 0

Esta opción permite desactivar las grabaciones sincronizadas de buffer. Puede encontrase en la misma pestaña especificada anteriormente, bajo la etiqueta “Deshabilitar operaciones sincronizadas de búfer”.
Otras opciones interesantes de esta rama, que no aconsejo sean modificadas ya que no he encontrado mayor información, son DisableLowDiskSpaceBroadcast y ContigFileAllocSize.


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]


AutoShareWks = 0

Esta opción deshabilita los recursos compartidos iniciados por defecto para tareas administrativas en una estación de trabajo, que por más que uno los elimine, serán recreados al reiniciar la máquina a menos que esta opción tenga valor 0. El valor por defecto de la misma es 1. Estos recursos pueden ser accedidos conectando a \\NombreEquipo\Disco$. (Ej.: \\PC1\c$). Windows establece esta opción a los fines de que los usuarios con derechos de administrador en el servidor de la red, realicen tareas de mantenimiento sobre los clientes. Se aconseja poner en 0 esta opción (**). También puede deshabilitarse en el servidor estableciendo el valor AutoShareServer = 0.

CachédOpenLimit = 0

Establece el máximo de RFCB que pueden cachearse. El valor por defecto es 5.
En algunas aplicaciones que se ejecutan desde un cliente Windows se produce error cuando se intenta escribir en un archivo contenido por un servidor Windows NT. La aplicación puede informar de este error de varias formas tal como una infracción al compartir, o reportar que el tamaño del archivo es cero.
Existe una optimización en Windows NT que controla si un archivo es realmente cerrado o no en el servidor cuando el cliente realiza una petición para hacerlo. Si el servidor tiene un oplock sobre el archivo cuando el cliente lo cierra, por mas que el servidor reporte un Close SMB indicando que el archivo ha sido cerrado, lo mantendrá abierto localmente (Remueve RFCB pero mantiene el LFCB y no ejecuta el pedido local NtClose()), asumiendo que el cliente va a reabrir el archivo. Si el cliente reabre el archivo, esta opción reduce notablemente el tiempo requerido para responder al pedido.
Esta opción puede funcionar incorrectamente dependiendo de cómo haya sido abierto el archivo por la aplicación.
El Servidor almacena en caché los handles (identificadores) de archivos (RFCB) que ha abierto debido a una solicitud del cliente. Aunque la solicitud de escritura se ejecuta normalmente, el pedido de cierre es respondido por el servidor pero guardado en el buffer del sistema de archivos. Esta opción intenta optimizar el tiempo de respuesta a repetidas operaciones de apertura y cierre realizadas por el cliente. En consideración al oplock, esta optimización es una extensión lógica de la forma que el cliente almacena (cachea) su propia solicitud de cierre de archivo y de cómo el servidor procesará las próximas solicitudes de clientes para acceder a archivos.
Por cuestiones de compatibilidad, a veces oplock se debe deshabilitar. También el cacheo de RFCB.

EnableOplocks = 0

Esta opción con el valor 0, especifica que los clientes no tienen permitido utilizar los bloqueos oportunistas en el servidor. Los oplocks mejoran notablemente el rendimiento, pero tiene el potencial de causar la pedida de datos en caché, en algunas redes particularmente WAN.
Las aplicaciones de bases de datos para DOS, pueden manifestar errores como “El archivo está en uso”, “El archivo ya está abierto”, “No se puede escribir en el disco X:\”, “El dispositivo de red X:\ no se encuentra disponible” o reportar un tamaño de archivo igual a 0.
Esto puede ocurrir e redes NT o Small Business Server, ya que los motores de bases de datos de las aplicaciones basadas en DOS, no han sido desarrollados para soportar el mecanismo de bloqueo oportunista de estos tipos de redes, que esta por defecto activado.
Si no se deshabilita la opción anterior, pueden usarse las mencionadas a continuación configurar mas en detalle el bloqueo oportunista.

MinLinkThroughput = 0

El valor por defecto para esta opción es 0, osea infinitos bytes por segundo, ya que esta opción especifica el mínimo link throughput permitido por el servidor, antes de deshabilitar bloqueos oportunistas y directos (raw) para esta conexión.

MaxLinkDelay = 60

El valor por defecto es 60, pero puede especificarse uno entre 0 y 100000 segundos, ya que esta opción especifica el tiempo máximo permitido para una demora en el enlace. Si la demora excede este número, el servidor deshabilita la entrada/salida directa y el bloqueo oportunista para esta conexión.

OplockBreakWait = 35

El valor por defecto es 35, pero puede especificarse una valor entre 10 y 180 segundos, ya que esta opción especifica el tiempo que el servidor espera por una respuesta del cliente a un pedido de bloqueo oportunista.
Los valores pequeños pueden facilitar la detección de clientes que no están respondiendo, pero puede causar la perdida de datos almacenados en caché.

UtilizeNTCaching = 0

Esta opción le indica al redirector si debe utilizar el manejador del caché para almacenar el contenido de archivos. El valor 0 deshabilita este parámetro con el solo propósito de garantizar que toda la información se vuelca al servidor inmediatamente después de ser escrita por la aplicación.

EnableOpLockForceClose = 1

El valor por defecto para esta opción es 0. Este parámetro determina uno de dos comportamientos posibles cuando un cliente tiene un oplock y no responde a una solicitud oplock break (finalización de bloqueo oportunista): Si tiene el valor 0, falla la segunda apertura por ende limita el acceso al archivo. Si tiene valor 1, obliga el cierre de la instancia abierta del cliente que tiene el oplock, arriesgándose a perder datos almacenados en el caché local.

Autodisconnect = ffffffff

Windows NT y Windows 2000 tiene dos tipos diferentes de auto desconexión, uno para desconectar conexiones RAS y otro para desconectar conexiones LAN. El parámetro para desconectar conexiones RAS se encuentra documentado en el artículo Q153944 de MKB. El utilizado para conexiones LAN no está documentado en MKB si no en el archivo de ayuda del Kit de recursos para NT, en la sección Entradas del Registro.
Este parámetro se utiliza para desconectar sesiones en estado IDLE después de una cantidad especificada de minutos. Este tiempo también puede configurarse utilizando desde la consola DOS el comando net config server (ej: Para desconectar conexiones idle después de 30 minutos, ejecutamos net config server /autodisconnect:30).
Este parámetro puede tomar un valor en un rango que va desde -1 a 65535 minutos (equivalente a varios años). Para deshabilitar la desconexión, debe asignarse el valor -1. En conexiones LAN el valor 0 no deshabilita la opción y puede producir desconexiones muy rápidas, con apenas unos segundos de estado idle. En conexiones RAS el valor 0, deshabilita la auto desconexión.
Como el registro no admite el valor -1, solo puede establecerse desde la línea de comando, pero si vemos como se refleja dicho cambio en el registro, se verá que automáticamente se le asigna el valor mas alto admitido.
Cuando se establece el valor anterior, se crean también dos claves en el registro:

Anndelta
: REG_DWORD: 0xbb8
Es el valor Delta para el índice de anuncio en milisegundos. Este valor especifica cuanta demora o anticipación debe tolerarse a la hora de recibir los anuncios del servidor.

Announce:
REG_DWORD: 0xf0
Este parámetro especifica el tiempo de anuncio de la red. Determina cuan frecuentemente el servidor se reporta a las demás computadoras en la red.
(Ej.: si el valor del anuncio es 10 y el Delta es 1, el tiempo que debe esperase un aviso debe ser uno entre 9.999 y 10.001 segundos)
Después de unos minutos de estado idle, su conexión a un recurso compartido puede aparecer como desconectada, lo cual se indica con una “X” roja en el icono de la unidad.


[HKLM\SYSTEM\CurrentControlSet\Services\Lanmanworkstation\parameters]


UseOpportunisticLocking = 0

El valor por defecto de esta opción es 1 (Habilitado). Indica si el redirector debe usar el método de bloqueo oportunista. Este valor debe estar en 0 para evitar problemas.


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MRXSmb\Parameters]


OplocksDisabled = 1

Por defecto esta opción se encuentra en 0 (habilitado). Esta entrada del registro, especifica a los clientes Windows de una red, si deben o no solicitar un bloqueo oportunista sobre un archivo remoto.


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\Parameters]


UseWriteBehind = 0

Esta opción especifica si puede realizarse un caché de escritura local en las estaciones de trabajo clientes de una red, con el sistema operativo Windows 9x instalado. Estableciendo el valor 0, se deshabilita la utilización de este caché.


[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VREDIR]


DiscardCachéOnOpen = 1

Esta entrada se modifica en los clientes. Mediante la misma, le pedimos al redirector de la red Microsoft que cuando abra un archivo en red, descarte cualquier página que haya quedado en la memoria del cliente. De este modo garantizamos que los datos sean siempre los actuales. Para evitar cualquier problema con el redirector, se aconseja verificar que todos los clientes de su red, tengan instalada una versión de VREDIR.VXD posterior al 11/09/97 y de VNETSUP.VXD posterior al 30/05/1997 y tengan esta opción con valor 1. Caso contrario, la actualización no se tendrá en cuenta y continuará el potencial problema.
Un problema originado por esta falla se evidencia cuando se encuentran archivos de bases de datos dañados en clientes de una red Microsoft que tienen por sistema operativo Windows 95 / 95 OSR2 / 95 OSR2.1. Se produce cuando una aplicación utiliza la API GetFileSize() para obtener el tamaño de un archivo remoto existente en un servidor. El Servidor puede no retornar correctamente el tamaño del archivo y cuando intenta escribir información al final del archivo, puede que se sobrescriba información existente.


(**)
No he encontrado información acerca de cual es su función específica y como podría la misma ser beneficiosa a la hora de prevenir la corrupción de datos.


Contacto

Agradeceré los comentarios, criticas, aclaraciones y posibles ampliaciones para este documento.
Aníbal Galdeano
anibal@xune.com.ar

regresar

hit counter