PowerFlex: Compilazione on-demand del driver PowerFlex SDC

Summary: Questo articolo della Knowledge Base descrive come abilitare la compilazione on-demand del driver PowerFlex SDC sui sistemi Linux.

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Instructions

Questa funzione ha lo scopo di supportare le modifiche ABI (Application Binary Interface) nel kernel Linux, che potrebbero impedire il caricamento di un driver SDC, precompilato per un kernel diverso.

In passato, un pacchetto di installazione SDC per Linux (RPM/DEB) conteneva diversi moduli kernel SDC per vari kernel di quella distribuzione Linux. Per gli utenti che eseguono l'installazione su distribuzioni come Ubuntu, che rilascia frequenti aggiornamenti del kernel, è stata possibile configurare il servizio SDC in modo che si connetta al repository remoto di Dell dei driver SDC e tenti di scaricare un SDC da esso.

Con la nuova funzionalità, gli utenti possono compilare una corrispondenza perfetta del driver SDC per il kernel in esecuzione senza fare affidamento sulla disponibilità di un SDC corrispondente nel repository del driver.

Nota: La funzionalità autocompilata è supportata solo sui sistemi Linux su cui è supportato l SDC. Per ulteriori informazioni, consultare la Support Matrix di PowerFlex.

Target: Gli utenti che aggiornano frequentemente i propri kernel per motivi di sicurezza e che eseguono kernel personalizzati specializzati possono trarre vantaggio da questa funzionalità.

 

Prerequisiti
Affinché la procedura di compilazione abbia esito positivo, è necessario installare i seguenti pacchetti sull host del servizio SDC:

  • L'ultima versione del compilatore GNU C (GCC), GCC
  • GNU make(1).
  • Il pacchetto di sviluppo del kernel per il kernel in esecuzione. Questo pacchetto è comunemente disponibile con i seguenti nomi:
    • kernel-devel per le distribuzioni che utilizzano il gestore di pacchetti RPM. (Red Hat, SUSE e così via)
    • linux-headers per le distribuzioni che usano il gestore di pacchetti Debian (Debian, Ubuntu, ecc.)

Compilazione
automatica on-demandPer consentire la compilazione automatica on-demand del driver SDC, l'host deve soddisfare tutti i prerequisiti elencati nella sezione Prerequisiti sopra. Quando si attiva il driver SDC, il servizio SDC tenta di compilare il driver SDC se vengono soddisfatte tutte le seguenti condizioni:

  • Un SDC corrispondente al kernel in esecuzione non è disponibile nella cache dei driver.
    Per informazioni dettagliate sulla cache dei driver, vedere Cache dei driver di seguito.

  • Un file denominato /etc/emc/scaleio/scini_sync/.build_scini Esiste.
    Il contenuto del file viene ignorato. Tuttavia, gli utenti dovrebbero mantenerlo vuoto per eventuali miglioramenti futuri.
    Il file può essere creato eseguendo un touch(1) .

Compilazione
manualeSDC, l'host di compilazione deve soddisfare tutti i prerequisiti elencati nella sezione Prerequisiti precedente.
Per compilare manualmente il driver SDC, attenersi alla seguente procedura:

  1. Copiare il pacchetto di compilazione dalla relativa directory nella cache dei driver in una directory temporanea. La posizione del pacchetto dipende dalla versione di PowerFlex e dalla distribuzione Linux.
    Ad esempio, il pacchetto per l SDC PowerFlex 3.6.3 per le distribuzioni basate su Red Hat Enterprise Linux 9 è: /bin/emc/scaleio/scini_sync/driver_cache/RHEL9/3.6.3000.128/Dell-PowerFlex-scini_builder-3.6.3000.128.x86_64.tgz
    Per informazioni dettagliate sulla cache dei driver, vedere Cache dei driver di seguito.

  2. Passare alla directory temporanea ed estrarre il pacchetto di compilazione.
    Esempio:

    tar xzf Dell-PowerFlex-scini_builder-3.6.3000.128.x86_64.tgz
  3. Eseguire build_driver.sh che si trova al livello superiore del contenuto estratto. Senza argomenti, lo script tenta di compilare il driver per il kernel in esecuzione.
    Per eseguire la compilazione per un kernel diverso, fornire il percorso alle directory di intestazione del kernel con "-o" e "-s" argomenti della riga di comando.
    Per ulteriori informazioni sulla chiamata, eseguire:

    build_driver.sh -h
  4. L'output del processo di compilazione viene stampato nell'output standard.
    Al termine della compilazione, il file del driver SDC risultante, scini.ko, è disponibile all'indirizzo ./ini/scini.ko.

  5. Copiare il file del driver dall'host di compilazione all host SDC di destinazione in una directory corrispondente alla versione del kernel di destinazione, nella stessa posizione del pacchetto di compilazione, nella cache del driver.
    Ad esempio, per un driver conforme alla versione del kernel 5.14.0-362.24.1.el9_3.x86_64, il percorso di destinazione per il file del driver è /bin/emc/scaleio/scini_sync/driver_cache/RHEL9/3.6.3000.128/5.14.0-362.24.1.el9_3.x86_64/scini.ko.

 

Additional Information

Cache
driverUn driver SDC compilato correttamente per un kernel specifico verrà copiato nella directory appropriata della cache del driver e la sua compilazione non verrà nuovamente attivata.
La posizione della cache del driver è /bin/emc/scaleio/scini_sync/drive_cache.

Log
di compilazioneQuando la compilazione automatica on-demand è abilitata, tutti i registri di compilazione vengono aggiunti a /bin/emc/scaleio/scini_sync/driver_build.log.
Una compilation corretta termina con messaggi simili ai seguenti:

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.

Contenitore
di inizializzazione SDCIl contenitore di inizializzazione SDC è preconfigurato per l'utilizzo della funzione. Include il gcc e crea pacchetti, e il /etc/emc/scaleio/scini_sync/.build_scini Il file è presente. Tuttavia, affinché le compilazioni abbiano esito positivo, la directory delle intestazioni del kernel per il kernel host deve essere mappata al container, a /usr/src. Ad esempio, per eseguire manualmente il container con Docker, dopo aver installato il pacchetto kernel-devel corretto sull host, aggiungere -v/usr/src:/usr/src alla riga di comando, affinché la directory delle intestazioni del kernel sia disponibile per lo script di compilazione.

Limitazione
È possibile che il compilatore GCC reso disponibile sulla distribuzione Linux dell host non sia sufficientemente avanzato per compilare l SDC su un kernel. Questa situazione dovrebbe essere rara, in quanto probabilmente coinvolgerà un kernel personalizzato e non uno comune a quella distribuzione. In questo caso, l'utente deve installare un GCC più avanzato da un repository di pacchetti non standard e la posizione di tale GCC dovrà essere specificata in $PATH. Non esiste un modo automatico per fornire un percorso GCC alternativo al servizio SDC.

Versioni
3.6.3 o versioni successive
4.5.2 o versioni successive

Istruzioni video

 

Affected Products

PowerFlex rack, PowerFlex Appliance, PowerFlex Software

Products

PowerFlex custom node
Article Properties
Article Number: 000224134
Article Type: How To
Last Modified: 18 Sep 2024
Version:  6
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.