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.
- 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á.
- dm_downgrade_right
- dm_upgrade_right
- Familia dm_obj_ref_*
- dm_pending
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
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.
- 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
chfs -a managed=yes mountpointSi 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.
chfs -a managed=no mountpointSi 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
- 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.
mkwpar -S privs+=PV_FS_DMAPI -n wparname chwpar -S privs+=PV_FS_DMAPI wparnameDe 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.