|
Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official. |
Guia de referência rápida
O motor de dados V2 da SUSE Storage usa o Kit de Desenvolvimento de Desempenho de Armazenamento (SPDK) para oferecer desempenho aprimorado. Essa integração reduz a latência de E/S enquanto aumenta tanto IOPS quanto a taxa de transferência, fornecendo uma solução de armazenamento de alto desempenho que pode lidar com uma ampla gama de cargas de trabalho.
O motor de dados V2 é atualmente um recurso em Pré-visualização Técnica. Suas funcionalidades suportadas estão documentadas aqui.
Este tutorial orienta você pelo processo de configuração do ambiente e criação de recursos de armazenamento persistente do Kubernetes, como volumes persistentes (PVs) e solicitações de volumes persistentes (PVCs) que correspondem aos volumes do Longhorn usando o motor de dados V2.
Pré-requisitos
Carregar módulos do kernel
No Debian e Ubuntu, instale os módulos extras do kernel Linux antes de carregar os módulos do kernel necessários:
apt install -y linux-modules-extra-`uname -r`
Você pode configurar os módulos do kernel necessários e hugepages para o SPDK com o Longhorn CLI.
Você pode instalá-los manualmente:
Carregue os módulos do kernel em cada nó do Longhorn:
modprobe vfio_pci
modprobe uio_pci_generic
modprobe nvme-tcp
Alternativamente, em vez de carregar manualmente os módulos do kernel vfio_pci, uio_pci_generic e nvme-tcp toda vez após a reinicialização, você pode simplificar o processo configurando o carregamento automático de módulos durante a sequência de inicialização. Para instruções detalhadas, consulte o manual fornecido pelo seu sistema operacional.
Referência:
Habilitar hugepages
Configurar hugepages
O SPDK usa hugepages para melhorar o desempenho e minimizar a sobrecarga de memória. Você deve configurar hugepages de 2 MiB em cada nó do Longhorn para habilitar o uso de hugepages. Especificamente, 1024 páginas (equivalente a um total de 2 GiB) devem estar disponíveis em cada nó do Longhorn.
Para alocar hugepages, execute os seguintes comandos em cada nó.
echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
As alocações feitas sob /sys/kernel/mm/hugepages não são persistentes e são redefinidas após a reinicialização. Para tornar a alocação persistente, use um dos seguintes métodos:
Alocação persistente (recomendada)
Para pré-alocar hugepages permanentemente, atualize os parâmetros de inicialização do kernel.
-
Atualizar a configuração do GRUB
Edite
/etc/default/grube adicione os parâmetros de hugepages. Este exemplo aloca1024 × 2MiB de páginas (2 GiB no total):GRUB_CMDLINE_LINUX="hugepagesz=2M hugepages=1024"Se o nó já tiver parâmetros do kernel, anexe esses valores em vez de sobrescrevê-los.
-
Aplique a configuração do GRUB
Sistemas BIOS:
sudo update-grubRHEL ou SUSE (GRUB2):
sudo grub2-mkconfig -o /boot/grub2/grub.cfgSistemas UEFI:
sudo grub2-mkconfig -o /boot/efi/EFI/<distro>/grub.cfg -
Reinicie o nó:
sudo reboot -
Verifique hugepages:
grep Huge /proc/meminfoSaída esperada:
HugePages_Total: 1024 Hugepagesize: 2048 kB
-
Verifique hugepages como um recurso do Kubernetes:
kubectl describe node <node-name>Esperado sob Capacidade e Alocável:
hugepages-2Mi: 2Gi
Alternativa: configuração do sysctl (não recomendada)
Adicione a linha a seguir a /etc/sysctl.conf:
vm.nr_hugepages=1024
Isso não persiste após a reinicialização em muitas distribuições porque hugepages devem ser alocados cedo no processo de inicialização. Use apenas quando a modificação do GRUB não for permitida.
Verificar Ambiente
Usando a Ferramenta de Linha de Comando Longhorn
A ferramenta longhornctl é uma CLI para operações do Longhorn. Para mais informações, veja Ferramenta de Linha de Comando (longhornctl).
Para verificar os pré-requisitos e configurações, baixe a ferramenta e execute o subcomando check:
# For AMD64 platform
curl -sSfL -o longhornctl https://github.com/longhorn/cli/releases/download/v1.11.2/longhornctl-linux-amd64
# For ARM platform
curl -sSfL -o longhornctl https://github.com/longhorn/cli/releases/download/v1.11.2/longhornctl-linux-arm64
chmod +x longhornctl
./longhornctl check preflight --enable-spdk
Exemplo de resultado:
INFO[2024-01-10T00:00:01Z] Initializing preflight checker
INFO[2024-01-01T00:00:01Z] Cleaning up preflight checker
INFO[2024-01-01T00:00:01Z] Running preflight checker
INFO[2024-01-01T00:00:02Z] Retrieved preflight checker result:
worker1:
error:
- 'HugePages is insufficient. Required 2MiB HugePages: 1024 pages, Total 2MiB HugePages: 0 pages'
- 'Module nvme_tcp is not loaded: failed to execute: nsenter [--mount=/host/proc/204896/ns/mnt --net=/host/proc/204896/ns/net grep nvme_tcp /proc/modules], output , stderr : exit status 1'
- 'Module uio_pci_generic is not loaded: failed to execute: nsenter [--mount=/host/proc/204896/ns/mnt --net=/host/proc/204896/ns/net grep uio_pci_generic /proc/modules], output , stderr : exit status 1'
info:
- Service iscsid is running
- NFS4 is supported
- Package nfs-common is installed
- Package open-iscsi is installed
- CPU instruction set sse4_2 is supported
warn:
- multipathd.service is running. Please refer to https://longhorn.io/kb/troubleshooting-volume-with-multipath/ for more information.
Use o subcomando install para instalar e configurar as dependências de pré-verificação antes de instalar o Longhorn.
master:~# ./longhornctl install preflight --enable-spdk
INFO[2024-01-01T00:00:03Z] Initializing preflight installer
INFO[2024-01-01T00:00:03Z] Cleaning up preflight installer
INFO[2024-01-01T00:00:03Z] Running preflight installer
INFO[2024-01-01T00:00:03Z] Installing dependencies with package manager
INFO[2024-01-01T00:00:10Z] Installed dependencies with package manager
INFO[2024-01-01T00:00:10Z] Cleaning up preflight installer
INFO[2024-01-01T00:00:10Z] Completed preflight installer. Use 'longhornctl check preflight' to check the result.
|
Certas distribuições Linux imutáveis, como SUSE Linux Enterprise Micro (SLE Micro), exigem que você reinicie os nós de trabalho após executar o subcomando A documentação para sua distribuição Linux deve descrever tais requisitos. Por exemplo, a documentação do SLE Micro explica que todas as alterações feitas pelo comando |
Após instalar e configurar as dependências de pré-verificação, você pode executar o subcomando check novamente para verificar se todas as configurações do ambiente estão corretas.
master:~# ./longhornctl check preflight --enable-spdk
INFO[2024-01-01T00:00:13Z] Initializing preflight checker
INFO[2024-01-01T00:00:13Z] Cleaning up preflight checker
INFO[2024-01-01T00:00:13Z] Running preflight checker
INFO[2024-01-01T00:00:16Z] Retrieved preflight checker result:
worker1:
info:
- Service iscsid is running
- NFS4 is supported
- Package nfs-common is installed
- Package open-iscsi is installed
- CPU instruction set sse4_2 is supported
- HugePages is enabled
- Module nvme_tcp is loaded
- Module uio_pci_generic is loaded
Usar a Ferramenta de Linha de Comando Longhorn
Certifique-se de que tudo está corretamente configurado e instalado por
longhornctl --kubeconfig ~/.kube/config --image longhornio/longhorn-cli:v1.11.2 install preflight --enable-spdk
Consulte Ferramenta de Linha de Comando Longhorn para mais informações.
Instalação
Habilitar o Motor de Dados V2
Habilite o Motor de Dados V2 alterando a configuração v2-data-engine para true após a instalação. Após isso, os pods do gerenciador de instâncias serão reiniciados automaticamente.
Ou, você pode habilitá-lo em Settings > V2 Data Engine.
Uso de CPU e Memória
Quando o Motor de Dados V2 está habilitado, cada pod do Gerenciador de Instâncias para o Motor de Dados V2 utiliza 1 núcleo de CPU. O alto uso de CPU é causado por spdk_tgt, um processo executado em cada pod do Gerenciador de Instâncias que lida com operações de entrada/saída (E/S) e requer polling intensivo. spdk_tgt consome 100% de um núcleo de CPU dedicado para gerenciar e processar eficientemente as solicitações de E/S, garantindo desempenho e capacidade de resposta ideais para operações de armazenamento.
NAME CPU(cores) MEMORY(bytes) csi-attacher-57c5fd5bdf-jsfs4 1m 7Mi csi-attacher-57c5fd5bdf-kb6dv 1m 9Mi csi-attacher-57c5fd5bdf-s7fb6 1m 7Mi csi-provisioner-7b95bf4b87-8xr6f 1m 11Mi csi-provisioner-7b95bf4b87-v4gwb 1m 9Mi csi-provisioner-7b95bf4b87-vnt58 1m 9Mi csi-resizer-6df9886858-6v2ds 1m 8Mi csi-resizer-6df9886858-b6mns 1m 9Mi csi-resizer-6df9886858-l4vmj 1m 8Mi csi-snapshotter-5d84585dd4-4dwkz 1m 7Mi csi-snapshotter-5d84585dd4-km8bc 1m 9Mi csi-snapshotter-5d84585dd4-kzh6w 1m 7Mi engine-image-ei-b907910b-79k2s 3m 19Mi instance-manager-214803c4f23376af5a75418299b12ad6 1015m 133Mi (for V2 Data Engine) instance-manager-4550bbc4938ff1266584f42943b511ad 4m 15Mi (for V1 Data Engine) longhorn-csi-plugin-nz94f 1m 26Mi longhorn-driver-deployer-556955d47f-h5672 1m 12Mi longhorn-manager-2n9hd 4m 42Mi longhorn-ui-58db78b68-bzzz8 0m 2Mi longhorn-ui-58db78b68-ffbxr 0m 2Mi
Você pode observar a utilização das hugepages alocadas em cada nó executando o comando kubectl get node <node name> -o yaml.
# kubectl get node sles-pool1-07437316-4jw8f -o yaml
...
status:
...
allocatable:
cpu: "8"
ephemeral-storage: "203978054087"
hugepages-1Gi: "0"
hugepages-2Mi: 2Gi
memory: 31813168Ki
pods: "110"
capacity:
cpu: "8"
ephemeral-storage: 209681388Ki
hugepages-1Gi: "0"
hugepages-2Mi: 2Gi
memory: 32861744Ki
pods: "110"
...
Adicionar block-type discos nos nós do Longhorn.
Diferente dos discos filesystem-type que são projetados para volumes legados, os volumes que utilizam o Motor de Dados V2 são persistentes em discos block-type. Portanto, é necessário equipar os nós do Longhorn com discos block-type.
Preparar discos
Se não houver discos adicionais disponíveis nos nós do Longhorn, você pode criar dispositivos de bloco em loop para testar o recurso. Para fazer isso, execute o seguinte comando em cada nó do Longhorn para criar um dispositivo de bloco de 10 GiB.
dd if=/dev/zero of=blockfile bs=1M count=10240 losetup -f blockfile
Para exibir o caminho do dispositivo de bloco ao executar o comando losetup -f blockfile, use o seguinte comando.
losetup -j blockfile
Adicionar discos a node.longhorn.io
|
A partir da versão 1.11.0, SUSE Storage impede a adição de discos de bloco que contêm um sistema de arquivos ou tabela de partição existente para evitar perda de dados inesperada. Certifique-se de que o disco esteja limpo antes de adicioná-lo executando: wipefs -a /path/to/block/device Se o disco contiver um sistema de arquivos ou tabela de partição existente, a operação de adição do disco falhará. 1. O código possui comentários. Pressione enter para visualizar. |
Você pode adicionar o disco navegando até a página da interface do Node e especificando o Disk Type como Block. Em seguida, forneça o caminho do dispositivo de bloco no campo Path.
Ou, edite o recurso node.longhorn.io.
kubectl -n longhorn-system edit node.longhorn.io <NODE NAME>
Adicione o disco ao Spec.Disks
<DISK NAME>: allowScheduling: true evictionRequested: false path: /PATH/TO/BLOCK/DEVICE storageReserved: 0 tags: [] diskType: block
Aguarde um momento, você verá que o disco é exibido no Status.DiskStatus.
Implantação de Aplicativos
Após a instalação e configuração, podemos provisionar dinamicamente um Volume Persistente usando o V2 Data Engine seguindo os passos a seguir.