PowerFlex: Behovsbasert kompilering av PowerFlex SDC-driveren

Summary: Denne kunnskapsbaserte artikkelen beskriver hvordan du aktiverer behovsbasert kompilering av PowerFlex SDC-driveren på Linux-systemer.

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

Denne funksjonen er ment å imøtekomme ABI-endringer (Application Binary Interface) i Linux-kjernen, noe som kan føre til at en SDC-driver, forhåndskompilert for en annen kjerne, ikke kan lastes inn.

Historisk sett inneholdt en SDC-installasjonspakke for Linux (RPM/DEB) flere SDC-kjernemoduler for forskjellige kjerner av den Linux-distribusjonen. For brukere som installerer på distribusjoner som Ubuntu, som utgir hyppige kjerneoppdateringer, har det vært mulighet for å konfigurere SDC-tjenesten til å koble til Dells eksterne lager av SDC-drivere og prøve å laste ned en SDC fra den.

Med den nye funksjonen kan brukere kompilere en perfekt match av SDC-driveren for deres kjørende kjerne uten å stole på tilgjengeligheten av en matchende SDC i driverens depot.

Merk: Den selvkompilerte funksjonaliteten støttes bare på Linux-systemer der SDC støttes. Se støttematrisen for PowerFlex hvis du vil ha mer informasjon.

Målgruppe: Brukere som ofte oppdaterer kjernene sine av sikkerhetsgrunner, og som kjører spesialiserte tilpassede kjerner, kan dra nytte av funksjonen.

 

Forutsetninger
For at kompileringsprosedyren skal lykkes, må følgende pakker installeres på verten for SDC-tjenesten:

  • Den nyeste versjonen av GNU C-kompilatoren (GCC), GCC
  • GNU gjør(1).
  • Kjerneutviklingspakken for den kjørende kjernen. Denne pakken er vanligvis tilgjengelig med følgende navn:
    • kjerneutvikling for distribusjoner ved hjelp av RPM-pakkebehandling. (Red Hat, SUSE, så videre)
    • linux-headere for distribusjoner som bruker Debian pakkebehandler (Debian, Ubuntu, så videre)

Automatisk on-demand-kompilering
For å tillate automatisk kompilering av SDC-driveren på forespørsel, må verten oppfylle alle forutsetningene som er oppført under delen Forutsetninger ovenfor. Når du henter frem SDC-driveren, prøver SDC-tjenesten å kompilere SDC-driveren hvis alle følgende betingelser er oppfylt:

  • En SDC som samsvarer med den kjørende kjernen, er ikke tilgjengelig i driverbufferen.
    Hvis du vil ha mer informasjon om driverbufferen, kan du se Driverbuffer nedenfor.

  • En fil med navnet /etc/emc/scaleio/scini_sync/.build_scini Finnes.
    Filens innhold ignoreres. Brukere bør imidlertid holde den tom for mulige fremtidige forbedringer.
    Filen kan opprettes ved å kjøre en touch(1) kommando.

Manuell kompilering
SDC-driveren, må kompileringsverten oppfylle alle forutsetningene som er oppført under delen Forutsetninger ovenfor.
Hvis du vil kompilere SDC-driveren manuelt, gjør du følgende:

  1. Kopier kompileringsbunten fra katalogen i driverbufferen til en midlertidig katalog. Plasseringen av bunten avhenger av PowerFlex-versjonen og Linux-distribusjonen.
    For eksempel er bunten for PowerFlex 3.6.3 SDC for Red Hat Enterprise Linux 9-baserte distribusjoner: /bin/emc/scaleio/scini_sync/driver_cache/RHEL9/3.6.3000.128/Dell-PowerFlex-scini_builder-3.6.3000.128.x86_64.tgz
    Hvis du vil ha mer informasjon om driverbufferen, kan du se Driverbuffer nedenfor.

  2. Gå til den midlertidige katalogen, og pakk ut kompileringspakken.
    Eksempel:

    tar xzf Dell-PowerFlex-scini_builder-3.6.3000.128.x86_64.tgz
  3. Kjør build_driver.sh -skriptet, som du finner på øverste nivå av det utpakkede innholdet. Uten argumenter forsøker skriptet å kompilere driveren for den kjørende kjernen.
    Hvis du vil kompilere for en annen kjerne, angir du banen til kjernens overskriftskataloger med "-o" og "-s" kommandolinjeargumenter.
    Hvis du vil ha mer informasjon om aktivering, kjører du:

    build_driver.sh -h
  4. Kompileringsprosessutgangen skrives ut til standard utskrift.
    Etter en vellykket kompilering finner du den resulterende SDC-driverfilen, scini.ko, på ./ini/scini.ko.

  5. Kopier driverfilen fra kompileringsverten til SDC-målverten til en katalog som samsvarer med målkjerneversjonen, på samme sted som kompileringspakken, i driverbufferen.
    For en driver som for eksempel overholdes for kjerneversjon 5.14.0-362.24.1.el9_3.x86_64, er målbanen for driverfilen /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

Driverbuffer
En SDC-driver kompilert for en bestemt kjerne vil bli kopiert til riktig katalog i driverbufferen, og kompileringen vil ikke bli utløst igjen.
Driverbufferens plassering er /bin/emc/scaleio/scini_sync/drive_cache.

Bygge logg
Når automatisk behovsbasert kompilering er aktivert, legges alle kompileringslogger til /bin/emc/scaleio/scini_sync/driver_build.log.
En vellykket kompilering avsluttes med meldinger som ligner på følgende:

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.

SDC init-container
Init-beholderen for SDC leveres forhåndskonfigurert til å bruke funksjonen. Det inkluderer gcc og lager pakker, og /etc/emc/scaleio/scini_sync/.build_scini Filen er til stede. For at kompileringer skal lykkes, må imidlertid kjernehodekatalogen for vertskjernen tilordnes beholderen, til /usr/src. Hvis du for eksempel vil kjøre beholderen manuelt med docker, legger du til den riktige kjerneutviklingspakken på verten etter at du har installert den riktige kjerneutviklingspakken på verten -v/usr/src:/usr/src til kommandolinjen, for at katalogen kjerneoverskrifter skal være tilgjengelig for kompileringsskriptet.

Begrensning
Det kan være en situasjon der GCC-kompilatoren som er gjort tilgjengelig på vertens Linux-distribusjon, ikke er avansert nok til å kompilere SDC mot noen kjerne. Denne situasjonen bør være sjelden, da den sannsynligvis vil innebære en tilpasset kjerne og ikke en som er felles for den distribusjonen. I dette tilfellet må brukeren installere en mer avansert GCC fra et ikke-standard pakkelager, og plasseringen av den GCCen må spesifiseres i $PATH. Det finnes ingen automatisk måte å tilby en alternativ GCC-bane til SDC-tjenesten på.

Versjoner
3.6.3 eller høyere 4.5.2 eller høyere

Videoinstruksjoner

 

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.