PowerFlex: Compilación según demanda de controladores de SDC de PowerFlex en Linux

Resumen: En este artículo de la base de conocimientos, se describe cómo habilitar la compilación según demanda de los controladores de la controladora definida por software (SDC) de PowerFlex en sistemas Linux. ...

Este artículo se aplica a Este artículo no se aplica a Este artículo no está vinculado a ningún producto específico. No se identifican todas las versiones del producto en este artículo.

Instrucciones

Esta función está diseñada para adaptarse a los cambios de la interfaz binaria de aplicaciones (ABI) en el kernel de Linux, lo que puede provocar que un controlador de SDC, precompilado para un kernel diferente, no se cargue.

Históricamente, un paquete de instalación de SDC para Linux (RPM/DEB) contenía varios módulos de kernel de SDC para varios kernels de esa distribución de Linux. Para los usuarios que instalan distribuciones como Ubuntu, que lanza actualizaciones frecuentes del kernel, existe la opción de configurar el servicio SDC para conectarse al repositorio remoto de controladores de SDC de Dell e intentar descargar un SDC desde él.

Con la nueva función, los usuarios pueden compilar una coincidencia perfecta del controlador de SDC para su kernel en ejecución sin depender de la disponibilidad de un SDC coincidente en el repositorio del controlador.
 

La funcionalidad compilada automáticamente solo se admite en sistemas Linux en los que se admite el SDC. Consulte la matriz de soporte de PowerFlex para obtener más detalles.

Público objetivo: Los usuarios que actualizan sus kernels con frecuencia por razones de seguridad y que ejecutan kernels personalizados especializados pueden beneficiarse de la función. 

Requisitos previos:
Para que el procedimiento de compilación se realice correctamente, se deben instalar los siguientes paquetes en el host del servicio de SDC:

  • La versión más reciente del compilador de C de GNU (GCC), GCC
  • GNU make (1).
  • El paquete de desarrollo del kernel para el kernel en ejecución. Por lo general, este paquete está disponible con los siguientes nombres:
    • kernel-devel para las distribuciones que utilizan el administrador de paquetes RPM. (Red Hat, SUSE, etc.)
    • linux-headers para distribuciones que usan el administrador de paquetes Debian (Debian, Ubuntu, etc.)

Compilación
automática bajo demandaPara permitir la compilación automática y según demanda del controlador de SDC, el host debe cumplir con todos los requisitos previos enumerados en la sección Requisitos previos anterior. Cuando se abre el controlador de SDC, el servicio de SDC intenta compilar el controlador de SDC si se cumplen todas las siguientes condiciones:

  • Un SDC que coincida con el kernel en ejecución no está disponible en la caché del controlador.
    Para obtener detalles sobre la caché del controlador, consulte Caché del controlador a continuación.

  • Un archivo denominado /etc/emc/scaleio/scini_sync/.build_scini existe.
    Se ignora el contenido del archivo. Sin embargo, los usuarios deben mantenerlo vacío para posibles mejoras futuras.
    El archivo se puede crear mediante la ejecución de un touch(1) comando.

Compilación
manualEl controlador de SDC, el host de compilación debe cumplir con todos los requisitos previos enumerados en la sección Requisitos previos anterior.
Para compilar manualmente el controlador de SDC, siga estos pasos:

  1. Copie el paquete de compilación de su directorio en la caché del controlador a un directorio temporal. La ubicación del paquete depende de la versión de PowerFlex y de la distribución de Linux.
    Por ejemplo, el paquete del SDC PowerFlex 3.6.3 para distribuciones basadas en Red Hat Enterprise Linux 9 es el siguiente: /bin/emc/scaleio/scini_sync/driver_cache/RHEL9/3.6.3000.128/Dell-PowerFlex-scini_builder-3.6.3000.128.x86_64.tgz
    Para obtener detalles sobre la caché del controlador, consulte Caché del controlador a continuación.

  2. Vaya al directorio temporal y extraiga el paquete de compilación.
    Ejemplo:

    tar xzf Dell-PowerFlex-scini_builder-3.6.3000.128.x86_64.tgz
  3. Ejecute el comando build_driver.sh script, ubicado en el nivel superior del contenido extraído. Sin argumentos, el script intenta compilar el controlador para el kernel en ejecución.
    Para compilar para un kernel diferente, proporcione la ruta a los directorios de encabezado de ese kernel con "-o” y “-s" argumentos de la línea de comandos.
    Para obtener más información acerca de la invocación, ejecute:

    build_driver.sh -h
  4. La salida del proceso de compilación se imprime en la salida estándar.
    Después de una compilación correcta, el archivo del controlador de SDC resultante, scini.ko, se puede encontrar en ./ini/scini.ko.

  5. Copie el archivo de controlador del host de compilación al host de SDC de destino, a un directorio que coincida con la versión del kernel de destino, en la misma ubicación que el paquete de compilación, en la caché del controlador.
    Por ejemplo, para un controlador que cumple con la versión del kernel 5.14.0-362.24.1.el9_3.x86_64, la ruta de destino para el archivo del controlador es /bin/emc/scaleio/scini_sync/driver_cache/RHEL9/3.6.3000.128/5.14.0-362.24.1.el9_3.x86_64/scini.ko.

Información adicional

Caché
del controladorUn controlador de SDC compilado correctamente para un kernel específico se copia en el directorio de caché del controlador correspondiente y su compilación no se volverá a activar.
La ubicación de la caché del controlador es /bin/emc/scaleio/scini_sync/drive_cache.

Registro de compilación
Cuando se habilita la compilación automática según demanda, todos los registros de compilación se anexan a /bin/emc/scaleio/scini_sync/driver_build.log.
Una compilación correcta finaliza con mensajes similares a los siguientes:

make: Entering directory '/usr/src/linux-headers-5.15.0-30-generic'
"Following additional compilation's conditions are defined:" 
BLK_MQ_HEADER 
BLK_DEV_MAX_SEGMENTS 
SOCKET_HAS_NET_IN_CREATE 
BIO_BI_BDEV 
BIO_BI_STATUS 
BLK_QUEUE_FLAG_FUNCS 
BLK_INITIALIZE_RMQ_FN 
WAIT_QUEUE_ENTRY_T 
HAS_SCSI_REQUEST 
HAS_SCSI_REQ 
HAS_SCSI_CMND 
HAS_SCSI_IOCTL 
HAS_SCSI_IOCTL_WITH_GENDISK 
HAS_QUEUE_FLAG_DISCARD 
HAS_DISK_LIVE_IN_GENHD 
  CC [M]  /tmp/PowerFlex_driver_build_hpoM6l/ini/./linux/api/api_main.o 
  CC [M]  /tmp/PowerFlex_driver_build_hpoM6l/ini/./linux/api/api_mos.o 
  CC [M]  /tmp/PowerFlex_driver_build_hpoM6l/ini/./linux/api/api_net.o 
  CC [M]  /tmp/PowerFlex_driver_build_hpoM6l/ini/./linux/api/api_ioctl.o 
  CC [M]  /tmp/PowerFlex_driver_build_hpoM6l/ini/./linux/api/api_blk_io.o 
  CC [M]  /tmp/PowerFlex_driver_build_hpoM6l/ini/./linux/api/api_blk_dev.o 
  LD [M]  /tmp/PowerFlex_driver_build_hpoM6l/ini/scini.o 
"Following additional compilation's conditions are defined:" 
BLK_MQ_HEADER 
BLK_DEV_MAX_SEGMENTS 
SOCKET_HAS_NET_IN_CREATE 
BIO_BI_BDEV 
BIO_BI_STATUS 
BLK_QUEUE_FLAG_FUNCS 
BLK_INITIALIZE_RMQ_FN 
WAIT_QUEUE_ENTRY_T 
HAS_SCSI_REQUEST 
HAS_SCSI_REQ 
HAS_SCSI_CMND 
HAS_SCSI_IOCTL 
HAS_SCSI_IOCTL_WITH_GENDISK 
HAS_QUEUE_FLAG_DISCARD 
HAS_DISK_LIVE_IN_GENHD 
  MODPOST /tmp/PowerFlex_driver_build_hpoM6l/ini/Module.symvers 
  CC [M]  /tmp/PowerFlex_driver_build_hpoM6l/ini/scini.mod.o 
  LD [M]  /tmp/PowerFlex_driver_build_hpoM6l/ini/scini.ko 
  BTF [M] /tmp/PowerFlex_driver_build_hpoM6l/ini/scini.ko 
Skipping BTF generation for /tmp/PowerFlex_driver_build_hpoM6l/ini/scini.ko due to unavailability of vmlinux 
make: Leaving directory '/usr/src/linux-headers-5.15.0-30-generic' 
02-Apr-2024 11:46:48 INFO: Success.

Contenedor
de inicialización de SDCLa COSUDE init El contenedor viene preconfigurado para usar la característica. Incluye el GCC y hace paquetes, y el /etc/emc/scaleio/scini_sync/.build_scini El archivo está presente. Sin embargo, para que las compilaciones se realicen correctamente, el directorio de encabezados de kernel para el kernel host debe asignarse al contenedor, a /usr/src. Por ejemplo, para ejecutar el contenedor manualmente con Docker, después de instalar el kernel-devel paquete en el host, agregue -v/usr/src:/usr/src a la línea de comandos, para que el directorio de encabezados del kernel esté disponible para el script de compilación.

Limitación
Puede haber situaciones en las que el compilador GCC disponible en la distribución de Linux del host no sea lo suficientemente avanzado como para compilar el SDC en algún kernel. Esta situación debería ser poco frecuente, ya que probablemente implicará un kernel personalizado y no uno común a esa distribución. En este caso, el usuario debe instalar un GCC más avanzado desde un repositorio de paquetes no estándar y la ubicación de ese GCC se debe especificar en $PATH. No hay ninguna manera automática de proporcionar una ruta de GCC alternativa al servicio de SDC.

Versiones
3.6.3 o posterior
4.5.2 o posterior

Instrucciones en video

 

Productos afectados

PowerFlex rack, PowerFlex Appliance, PowerFlex Software

Productos

PowerFlex custom node
Propiedades del artículo
Número del artículo: 000224134
Tipo de artículo: How To
Última modificación: 30 dic 2025
Versión:  7
Encuentre respuestas a sus preguntas de otros usuarios de Dell
Servicios de soporte
Compruebe si el dispositivo está cubierto por los servicios de soporte.