PowerFlex: Compilação sob demanda do driver do PowerFlex SDC

Summary: Este artigo da base de conhecimento descreve como habilitar a compilação sob demanda do driver do PowerFlex SDC em sistemas 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

Esse recurso destina-se a acomodar alterações de interface binária de aplicativo (ABI) no kernel Linux, o que pode fazer com que um driver SDC, pré-compilado para um kernel diferente, não seja carregado.

Historicamente, um pacote de instalação do SDC para Linux (RPM/DEB) continha vários módulos de kernel SDC para vários kernels dessa distribuição Linux. Para os usuários que instalam em distribuições como o Ubuntu, que libera atualizações frequentes do kernel, existe a opção de configurar o serviço SDC para se conectar ao repositório remoto de drivers SDC da Dell e tentar fazer download de um SDC a partir dele.

Com o novo recurso, os usuários podem compilar uma correspondência perfeita do driver SDC para seu kernel em execução sem depender da disponibilidade de um SDC correspondente no repositório do driver.

Nota: A funcionalidade autocompilada é compatível apenas com sistemas Linux nos quais o SDC é compatível. Consulte a matriz de suporte do PowerFlex para obter detalhes.

Público-alvo: Usuários que frequentemente atualizam seus kernels por razões de segurança e que executam kernels personalizados especializados podem se beneficiar do recurso.

 

Pré-requisitos
Para que o procedimento de compilação seja bem-sucedido, os seguintes pacotes devem ser instalados no host do serviço SDC:

  • A última versão do compilador GNU C (GCC), GCC
  • GNU make(1).
  • O pacote de desenvolvimento do kernel para o kernel em execução. Esse pacote geralmente está disponível com os seguintes nomes:
    • kernel-devel para distribuições usando o gerenciador de pacotes RPM. (Red Hat, SUSE, assim por diante)
    • linux-headers para distribuições usando o gerenciador de pacotes Debian (Debian, Ubuntu, etc.)

Compilação
automática sob demandaPara permitir a compilação automática e sob demanda do driver do SDC, o host deve atender a todos os pré-requisitos listados na seção Pré-requisitos, acima. Ao ativar o driver do SDC, o serviço do SDC tentará compilar o driver do SDC se todas as seguintes condições forem atendidas:

  • Um SDC que corresponda ao kernel em execução não está disponível no cache do driver.
    Para obter detalhes sobre o cache do driver, consulte Cache do driver abaixo.

  • Um arquivo chamado /etc/emc/scaleio/scini_sync/.build_scini Existe.
    O conteúdo do arquivo é ignorado. No entanto, os usuários devem mantê-lo vazio para possíveis aprimoramentos futuros.
    O arquivo pode ser criado executando um touch(1) .

Compilação
manualDriver SDC, o host de compilação deve atender a todos os pré-requisitos listados na seção Pré-requisitos acima.
Para compilar manualmente o driver SDC, execute estas etapas:

  1. Copie o pacote de compilação de seu diretório no cache do driver para um diretório temporário. A localização do pacote depende da versão do PowerFlex e da distribuição do Linux.
    Por exemplo, o pacote do PowerFlex 3.6.3 SDC para distribuições baseadas no 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
    Para obter detalhes sobre o cache do driver, consulte Cache do driver abaixo.

  2. Vá para o diretório temporário e extraia o pacote de compilação.
    Exemplo:

    tar xzf Dell-PowerFlex-scini_builder-3.6.3000.128.x86_64.tgz
  3. Execute a build_driver.sh script, localizado no nível superior do conteúdo extraído. Sem argumentos, o script tenta compilar o driver para o kernel em execução.
    Para compilar para um kernel diferente, forneça o caminho para os diretórios de cabeçalho desse kernel com o "-o" e "-s" argumentos de linha de comando.
    Para obter mais informações sobre invocação, execute:

    build_driver.sh -h
  4. A saída do processo de compilação é impressa na saída padrão.
    Após uma compilação bem-sucedida, o arquivo de driver SDC resultante, scini.ko, pode ser encontrado em ./ini/scini.ko.

  5. Copie o arquivo de driver do host de compilação para o host do SDC de destino, em um diretório correspondente à versão do kernel de destino, no mesmo local que o pacote de compilação, no cache do driver.
    Por exemplo, para um driver compatível com a versão de kernel 5.14.0-362.24.1.el9_3.x86_64, o caminho de destino do arquivo de 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 do
driverUm driver SDC compilado com sucesso para um kernel específico será copiado para o diretório apropriado do cache do driver e sua compilação não será acionada novamente.
A localização do cache do driver é /bin/emc/scaleio/scini_sync/drive_cache.

Registro de compilação
Quando a compilação sob demanda automática está habilitada, todos os registros de compilação são anexados a /bin/emc/scaleio/scini_sync/driver_build.log.
Uma compilação bem-sucedida termina com mensagens semelhantes à seguinte:

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.

Contêiner
de inicialização do SDCO contêiner de inicialização do SDC vem pré-configurado para usar o recurso. Inclui o gcc e faz pacotes, e o /etc/emc/scaleio/scini_sync/.build_scini arquivo está presente. No entanto, para que as compilações sejam bem-sucedidas, o diretório de cabeçalhos do kernel do host deve ser mapeado para o contêiner, para /usr/src. Por exemplo, para executar o contêiner manualmente com o docker, depois de instalar o pacote kernel-devel correto no host, adicione -v/usr/src:/usr/src para a linha de comando, para que o diretório de cabeçalhos do kernel esteja disponível para o script de compilação.

Limitação
Pode haver uma situação em que o compilador GCC disponibilizado na distribuição Linux do host não é avançado o suficiente para compilar o SDC em algum kernel. Essa situação deve ser rara, pois provavelmente envolverá um kernel personalizado e não um comum a essa distribuição. Nesse caso, o usuário precisa instalar um GCC mais avançado a partir de um repositório de pacotes não padrão, e o local desse GCC terá que ser especificado em $PATH. Não há uma maneira automática de fornecer um caminho alternativo do GCC para o serviço SDC.

Versões
3.6.3 ou superior
4.5.2 ou superior

Instruções em vídeo

 

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.