Interfaz de programación de aplicaciones de gestión de datos

AIX® proporciona una interfaz de programación de aplicaciones de gestión de datos (DMAPI), que es una implementación del estándar X/Open "System Management: Data Storage Management (XDSM) API" estándar X/Open publicado por The Open Group.

DMAPI permite a los proveedores de software desarrollar aplicaciones de gestión de datos utilizando un conjunto de funciones y semánticas que no se encuentran en sistemas compatibles con POSIX. No proporciona funcionalidad directa al usuario final. La documentación completa de la DMAPI se encuentra en la sección de Publicaciones del sitio web de The Open Group.

La DMAPI proporcionada por AIX es una implementación de finalidad general. El nivel de soporte para interfaces y funcionalidad opcionales viene determinado por la implementación del sistema de archivos subyacente y se documenta en una sección separada para el sistema de archivos específico.

La intención de la DMAPI es dar soporte a un único producto en cualquier sistema de archivos. DMAPI no excluye distintos productos de distintos proveedores que operan en el mismo sistema de archivos, pero no se recomienda. DMAPI da soporte completo a distintos productos en distintos sistemas de archivos con respecto a la entrega de sucesos, sujeto a las restricciones siguientes:
  • Varias sesiones no pueden registrar la disposición para el mismo evento en el mismo objeto.
  • Los mensajes de evento se dirigen a sesiones y se colocan en cola; no hay ningún destino explícito de un evento a un proceso específico.
  • Si ninguna sesión ha registrado una disposición para un evento determinado que no sea el evento de montaje, la DMAPI no generará un evento y permitirá que el proceso continúe como si no hubiera ningún evento habilitado. Si ninguna sesión ha registrado una disposición para el montaje even, que siempre está habilitada, la DMAPI fallará el evento y no permitirá que se monte el sistema de archivos.

La DMAPI se implementa en una capa abstracta dentro de AIX, lo que permite a cualquier sistema de archivos subyacente definir su nivel individual de soporte y opciones de implementación. El sistema de archivos del sistema de archivos registrado por diario (JFS) no proporciona ningún soporte para la DMAPI. Los comportamientos mejorados del sistema de archivos de diario (JFS2) para opciones de implementación, límites y otras especificaciones descritas por el estándar X/Open se describen en Consideraciones de DMAPI para el sistema de archivos de diario mejorado.

La función ' dm_init_service ' devuelve 0 cuando la DMAPI AIX está correctamente inicializada y -1 si la inicialización falla. El uso de cualquier otra función DMAPI después de que falle la inicialización también fallará.

La DMAPI de AIX no proporciona soporte para las siguientes funciones DMAPI opcionales:
  • dm_downgrade_right
  • dm_upgrade_right
  • Familia dm_obj_ref_*
  • dm_pending
Es posible que otras interfaces opcionales no estén soportadas por la implementación del sistema de archivos subyacente y se indican en la documentación de DMAPI para el sistema de archivos específico.

Cuando una aplicación de gestión de datos (DM) especifica que desea bloquear hasta que un derecho esté disponible, la aplicación DM se bloquea ininterrumpidamente.

AIX permite varias regiones gestionadas persistentes no solapadas. Sólo se permite que los archivos normales tengan regiones gestionadas. La implementación del sistema de archivos subyacente determina si las regiones gestionadas se reordenan o se fusionan.

Cuando no se ha registrado ninguna sesión para recibir un evento determinado para el que se ha habilitado un objeto y se produce una actividad que de otro modo desencadenaría el evento, AIX no genera el evento y permite que el proceso continúe como si no hubiera ningún evento habilitado.

La ejecución de la función dm_set_eventlist hace que se almacene una lista de sucesos persistentes con el objeto. Si anteriormente se ha establecido una lista de sucesos para todo el sistema de archivos y una lista de sucesos posterior para un objeto en ese sistema de archivos incluye un suceso que se ha establecido para el sistema de archivos, los sucesos se seguirán generando basándose en la lista de sucesos para el sistema de archivos hasta que se inhabilite dicho suceso, en cuyo caso la lista de sucesos para el objeto entrará en juego.

Cuando un proceso que genera un suceso se bloquea a la espera de una respuesta de una aplicación DM, la suspensión es interrumpible.

AIX adopta un modelo razonablemente fiable de entrega de mensajes asíncrona. El número de mensajes asíncronos no entregados está limitado por la cantidad de memoria disponible (real o virtual) configurada en el sistema. Si el número de mensajes supera la cantidad de memoria disponible, se perderán los mensajes asíncronos no entregados. La entrega asíncrona de mensajes de suceso de espacio de nombres viene determinada por la implementación del sistema de archivos subyacente.

Para AIX, DM_SESSION_INFO_LEN es 256 y DM_ATTR_NAME_SIZE es 8.

Para las interfaces DMAPI que devuelven datos a un almacenamiento intermedio de usuario y rellenan una variable de usuario con el tamaño resultante del almacenamiento intermedio, tanto el contenido del almacenamiento intermedio como la variable de tamaño de usuario no están definidos cuando la interfaz falla con un error distinto de E2BIG. Para cualquier error de este tipo, el contenido del almacenamiento intermedio de usuario debe ignorarse. Cuando la interfaz falla y errno es E2BIG, el contenido de la variable de tamaño de usuario se establecerá para indicar el tamaño necesario, en cuyo caso la aplicación puede reintentar la interfaz con un almacenamiento intermedio redimensionado.

Consideraciones sobre DMAPI para el sistema de archivos de diario mejorado

Nota: Las instantáneas internas no se pueden utilizar con sistemas de archivos gestionados por DMAPI.

Además de la funcionalidad proporcionada por la implementación general de AIX de la DMAPI, la implementación JFS2 proporciona las siguientes funciones y restricciones.

La función dm_get_config devuelve los valores siguientes para las opciones y límites de implementación JFS2 :
DM_CONFIG_BULKALL
Soportado
DM_CONFIG_LEGACY
Soportado
DM_CONFIG_PERS_ATTRIBUTES
Soportado
DM_CONFIG_PERS_EVENTS
Soportado
DM_CONFIG_PERS_HERE_ATTRIBS
Soportado
REGIÓN_GESTIONADA_CONFIG_DM_PERS_MANAGED_REGIONES
Soportado
DM_CONFIG_PUNCH_HOLE
Soportado
REINTENTO de DM_CONFIG_WILL_RETRY
Soportado
DM_CONFIG_CREATE_BY_HANDLE
No soportado
DM_CONFIG_LOCK_UPGRADE
No soportado
DM_CONFIG_OBJ_REF
No soportado
DM_CONFIG_PENDING
No soportado
DM_CONFIG_DTIME_OVERLOAD
VERDADERO
DM_CONFIG_MAX_ATTR_ON_DESTROY
128
TAMAÑO_ATRIBUTO_MÁX_CONFIG_DM
4072
DM_CONFIG_MAX_HANDLE_SIZE
32
DM_config_max_managed_regions
167
DM_CONFIG_MAX_MESSAGE_DATA
65536
DM_CONFIG_TOTAL_ATTRIBUTE_SPACE
4072

En la implementación JFS2 , todos los valores de atributo DM comparten la misma asignación. En consecuencia, el tamaño de cualquier valor de un atributo no puede exceder DM_CONFIG_MAX_ATTRIBUTE_SIZE y está más restringido por la suma de los tamaños de valor de todos los atributos DM asociados a un objeto, que también está limitado a DM_CONFIG_MAX_ATTRIBUTE_SIZE.

Además de las interfaces opcionales no soportadas por AIX, la implementación de JFS2 no da soporte a los sucesos de cancelación y debut de DMAPI opcionales, ni a las funciones opcionales adicionales de dm_getall_dmattr, dm_create_by_handley dm_symlink_by_handle .

Debido a la implementación actual del soporte de atributos ampliados de JFS2, la función dm_set_region hace que se modifique el ctime del archivo. JFS2 no intenta reordenar ni fusionar regiones gestionadas.

JFS2 genera mensajes de suceso de espacio de nombres asíncronos para todas las operaciones correspondientes, tanto si son satisfactorias como si fallan.

JFS2 proporciona interfaces que permiten la preasignación y el control directo de metadatos dentro de un sistema de archivos. El uso de estas interfaces con las modalidades MM_ALLOC o MM_RECORD genera un suceso de grabación DMAPI para el desplazamiento y la longitud especificados.

Si no se especifica un valor para la máscara en las funciones dm_get_bulkall, dm_get_bulkattr, dm_get_dirattrsy dm_get_fileattr (es decir, se establece en cero), JFS2 devolverá todos los campos de la estructura dm_stat . Si la máscara se establece en un valor específico, sólo se devuelven los campos solicitados por la máscara; los valores para los campos no especificados por la máscara no están definidos.

JFS2 no utiliza el parámetro respbufp de la función dm_respond_event . Si se especifica, el contenido del almacenamiento intermedio no está definido cuando se devuelven las funciones.

Puesto que JFS2 sobrecarga dm_ctime y dm_dtime (es decir, DM_CONFIG_DTIME_OVERLOAD es true), el parámetro setdtime de la función dm_set_dmattr se ignora.

En el momento en que un archivo está correlacionado con la memoria (es decir, cuando se ejecuta la llamada mmap(2) ), cualquier parte no residente de un archivo debe ser residente por la aplicación DM. Para notificar a la aplicación de la correlación, JFS2 generará un suceso de lectura o escritura correspondiente a la modalidad y región que se está correlacionando.

Activación de DMAPI en un sistema de archivos JFS2

Para activar la DMAPI en un sistema de archivos JFS2 , escriba lo siguiente:
chfs -a managed=yes mountpoint

Si el sistema de archivos está montado actualmente cuando se emite el mandato chfs , debe haber una aplicación habilitada para DMAPI que escuche y responda a los sucesos de montaje cuando se establezca el parámetro managed ; el éxito del mandato chfs dependerá de cómo responda la aplicación al suceso de montaje.

Para desactivar la DMAPI en un sistema de archivos JFS2 , escriba lo siguiente:
chfs -a managed=no mountpoint

Si el sistema de archivos está montado actualmente cuando se emite el mandato chfs , debe haber una aplicación habilitada para DMAPI que escuche y responda a los sucesos previos al desmontaje cuando se establezca el parámetro managed . El éxito del mandato chfs depende de cómo responda la aplicación al suceso de predesmontaje.

Utilización de DMAPI en sistemas de archivos cifrados JFS2

Cuando realiza operaciones de E/S invisibles en archivos cifrados en un sistema de archivos cifrados JFS2 , se aplican las mismas restricciones de alineación de desplazamiento y longitud que si realizara E/S en modalidad RAW en el archivo. En concreto, el desplazamiento y la longitud de la E/S deben estar alineados en bloque de acuerdo con el tamaño de bloque del sistema de archivos. El tamaño de los datos cifrados siempre es un múltiplo de los bloques del sistema de archivos, incluso cuando el tamaño del archivo descifrado no lo es; cuando el tamaño del archivo no está alineado en bloque, el archivo contiene datos cifrados más allá del tamaño del archivo.
Nota: La subrutina estado y las interfaces DMAPI, como por ejemplo la función dm_get_fileattr , notifican el tamaño de archivo de texto simple (descifrado), mientras que la subrutina Statx notifica el tamaño de datos cifrados alineados en bloque cuando pasa STX_EFSRAW como parámetro mandato .
La función dm_read_invis y la función dm_write_invis deben cumplir los requisitos siguientes para que la operación sea satisfactoria:
dm_read_invis
Para los archivos cifrados, los parámetros off y len deben estar alineados con el tamaño de bloque del sistema de archivos, o la operación falla con el código de error EINVAL .
dm_write_invis
Para los archivos cifrados, los parámetros off y len deben estar alineados con el tamaño de bloque del sistema de archivos y la operación no debe intentar ampliar el archivo, o la operación falla con el código de error EINVAL .

Uso de DMAPI en particiones de carga de trabajo AIX

Debe añadir el privilegio PV_FS_DMAPI al conjunto de privilegios y asignarlos a los procesos que se ejecutan en la partición de carga de trabajo (WPAR) para ejecutar las aplicaciones DMAPI dentro de una WPAR. Puede añadir y asignar el conjunto de privilegios a una WPAR cuando se está creando, o puede modificar el conjunto de privilegios más adelante.

Ejemplos
mkwpar -S privs+=PV_FS_DMAPI -n wparname
chwpar -S privs+=PV_FS_DMAPI wparname

De forma predeterminada, sólo los procesos raíz obtienen el privilegio para ejecutarse en una WPAR. En un sistema deshabilitado para root o en una instalación Trusted AIX, donde root está deshabilitado por defecto, los procesos no root obtienen este privilegio utilizando la tabla privcmds en un sistema global o WPAR. Para obtener más información, consulte Privilegios RBAC.