Skip to main content
O português é fornecido por meio de tradução automática para sua conveniência. O inglês precede o português em caso de inconsistências.

Importar volumes

Colaboradores netapp-aruldeepa juliantap joan-ing netapp-shwetav netapp-mwallis

Você pode importar volumes de armazenamento existentes como um PV do Kubernetes usando tridentctl import ou criando uma Persistent Volume Claim (PVC) com anotações de importação do Trident.

Visão geral e considerações

Você pode importar um volume para o Trident para:

  • Conteinerize um aplicativo e reutilize seu conjunto de dados existente

  • Use um clone de um conjunto de dados para uma aplicação efêmera

  • Reconstruir um cluster do Kubernetes com falha

  • Migrar dados da aplicação durante a recuperação de desastre

Considerações

Antes de importar um volume, reveja as seguintes considerações.

  • O Trident pode importar apenas volumes ONTAP do tipo RW (leitura-gravação). Os volumes do tipo DP (proteção de dados) são volumes de destino do SnapMirror. Você deve quebrar a relação de espelhamento antes de importar o volume para o Trident.

  • Sugerimos importar volumes sem conexões ativas. Para importar um volume usado ativamente, clonar o volume e, em seguida, executar a importação.

    Aviso Isso é especialmente importante para volumes de bloco, já que o Kubernetes não sabia da conexão anterior e poderia facilmente anexar um volume ativo a um pod. Isso pode resultar em corrupção de dados.
  • Embora StorageClass deva ser especificado em um PVC, o Trident não usa esse parâmetro durante a importação. As classes de armazenamento são usadas durante a criação de volume para selecionar os pools disponíveis com base nas caraterísticas de armazenamento. Como o volume já existe, nenhuma seleção de pool é necessária durante a importação. Portanto, a importação não falhará mesmo se o volume existir em um backend ou pool que não corresponda à classe de armazenamento especificada no PVC.

  • O tamanho do volume existente é determinado e definido no PVC. Depois que o volume é importado pelo driver de armazenamento, o PV é criado com uma ClaimRef para o PVC.

    • A política de recuperação é inicialmente definida como retain no PV. Depois que o Kubernetes vincula com êxito o PVC e o PV, a política de recuperação é atualizada para corresponder à política de recuperação da Classe de armazenamento.

    • Se a política de recuperação da Storage Class for delete, Trident exclui o volume de armazenamento quando o PV é excluído.

  • Por padrão, Trident gerencia o PVC e renomeia o FlexVol volume e o LUN ou qtree no backend. Você pode usar a --no-manage flag para importar um volume não gerenciado e a --no-rename flag para manter o nome do volume.

    • --no-manage* - Se você usar o --no-manage A Trident não realiza nenhuma operação adicional no PVC ou PV durante o ciclo de vida dos objetos. O volume de armazenamento não é excluído quando o PV é excluído, e outras operações como clonagem e redimensionamento de volume também são ignoradas.

    • --no-rename* - Se você usar a --no-rename`flag, o Trident mantém o nome do volume existente ao importar volumes e gerencia o ciclo de vida dos volumes. Esta opção é compatível apenas com os drivers `ontap-nas, ontap-san (incluindo sistemas ASA r2), ontap-san-economy e ontap-nas-economy (importação de qtree).

      Dica Essas opções são úteis se você deseja usar o Kubernetes para cargas de trabalho em contêineres, mas, de outra forma, prefere gerenciar o ciclo de vida do volume de armazenamento fora do Kubernetes.
  • Uma anotação é adicionada ao PVC e ao PV que serve para um duplo propósito de indicar que o volume foi importado e se o PVC e o PV são gerenciados. Esta anotação não deve ser modificada ou removida.

Importar um volume

Você pode importar um volume usando tridentctl import ou criando um PVC com anotações de importação do Trident.

Observação Se você utiliza anotações PVC, não precisa baixar ou usar tridentctl para importar o volume.
Usando tridentctl
Passos
  1. Crie um arquivo PVC (por exemplo, pvc.yaml) que será usado para criar o PVC. O arquivo PVC deve incluir name, namespace, accessModes e storageClassName. Opcionalmente, você pode especificar unixPermissions na sua definição de PVC.

    O seguinte é um exemplo de uma especificação mínima:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: my_claim
      namespace: my_namespace
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: my_storage_class
    Observação Inclua apenas os parâmetros necessários. Parâmetros adicionais, como o nome do PV ou o tamanho do volume, podem fazer com que o comando de importação falhe.
  2. Use o tridentctl import Comando para especificar o nome do backend Trident que contém o volume e o nome que identifica exclusivamente o volume no armazenamento (por exemplo: ONTAP FlexVol, Element Volume). O -f É necessário fornecer o argumento para especificar o caminho para o arquivo PVC.

    tridentctl import volume <backendName> <volumeName> -f <path-to-pvc-file>
Usando anotações em PVC
Passos
  1. Crie um arquivo YAML de PVC (por exemplo, pvc.yaml) com as anotações de importação do Trident necessárias. O arquivo de PVC deve incluir:

    • name e namespace em metadados

    • accessModes, resources.requests.storage, e storageClassName em especificação

    • Anotações:

      • trident.netapp.io/importOriginalName: Nome do volume no backend

      • trident.netapp.io/importBackendUUID: UUID do backend onde o volume existe

      • trident.netapp.io/notManaged (Opcional): Defina como "true" para volumes não gerenciados. O padrão é "false".

        A seguir está um exemplo de especificação para importar um volume gerenciado:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: <pvc-name>
      namespace: <namespace>
      annotations:
        trident.netapp.io/importOriginalName: "<volume-name>"
        trident.netapp.io/importBackendUUID: "<backend-uuid>"
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: <size>
      storageClassName: <storage-class-name>
  2. Aplique o arquivo YAML do PVC ao seu cluster Kubernetes:

    kubectl apply -f <pvc-file>.yaml

    Trident importará automaticamente o volume e o vinculará ao PVC.

Exemplos

Reveja os exemplos de importação de volume a seguir para drivers suportados.

ONTAP nas e ONTAP nas FlexGroup

O Trident suporta a importação de volume usando os ontap-nas drivers e ontap-nas-flexgroup.

Observação
  • O `ontap-nas-economy`driver gerencia o armazenamento no nível de qtree, portanto, não oferece suporte à importação de um volume FlexVol por si só. Para importar qtrees com o `ontap-nas-economy`driver, consulte Importar qtrees (Prévia Técnica). Quando Trident importa uma qtree, ele também importa o volume pai FlexVol como um bucket que contém a qtree.

  • Os ontap-nas drivers e ontap-nas-flexgroup não permitem nomes de volume duplicados.

Cada volume criado com o ontap-nas driver é um FlexVol volume no cluster do ONTAP. Importar volumes FlexVol com o ontap-nas driver funciona da mesma forma. Um volume FlexVol que já existe em um cluster ONTAP pode ser importado como ontap-nas PVC. Da mesma forma, os vols FlexGroup podem ser importados como ontap-nas-flexgroup PVCs.

Exemplos de ONTAP NAS usando tridentctl

Os exemplos a seguir mostram como importar volumes gerenciados e não gerenciados usando tridentctl.

Volume gerenciado

O exemplo a seguir importa um volume nomeado managed_volume em um backend chamado ontap_nas:

tridentctl import volume ontap_nas managed_volume -f <path-to-pvc-file>

+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
|                   NAME                   |  SIZE   | STORAGE CLASS | PROTOCOL |             BACKEND UUID             | STATE  | MANAGED |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
| pvc-bf5ad463-afbb-11e9-8d9f-5254004dfdb7 | 1.0 GiB | standard      | file     | c5a6f6a4-b052-423b-80d4-8fb491a14a22 | online | true    |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
Volume não gerenciado

Ao usar o --no-manage argumento, o Trident não renomeará o volume.

O exemplo a seguir é importado unmanaged_volume ontap_nas no backend:

tridentctl import volume nas_blog unmanaged_volume -f <path-to-pvc-file> --no-manage

+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
|                   NAME                   |  SIZE   | STORAGE CLASS | PROTOCOL |             BACKEND UUID             | STATE  | MANAGED |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
| pvc-df07d542-afbc-11e9-8d9f-5254004dfdb7 | 1.0 GiB | standard      | file     | c5a6f6a4-b052-423b-80d4-8fb491a14a22 | online | false   |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
Exemplos do ONTAP NAS usando anotações PVC

Os exemplos a seguir mostram como importar volumes gerenciados e não gerenciados usando anotações PVC.

Volume gerenciado

O exemplo a seguir importa um volume de 1GiB ontap-nas nomeado ontap_volume1 do backend 81abcb27-ea63-49bb-b606-0a5315ac5f21 com o modo de acesso RWO definido usando anotações PVC:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: <managed-imported-volume>
  namespace: <namespace>
  annotations:
    trident.netapp.io/importOriginalName: "ontap_volume1"
    trident.netapp.io/importBackendUUID: "81abcb27-ea63-49bb-b606-0a5315ac5f21"
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: <storage-class-name>
Volume não gerenciado

O exemplo a seguir importa 1Gi ontap-nas volume nomeado ontap-volume2 do backend 34abcb27-ea63-49bb-b606-0a5315ac5f34 com o modo de acesso RWO definido usando anotações PVC:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: <umanaged-imported-volume>
  namespace: <namespace>
  annotations:
    trident.netapp.io/importOriginalName: "ontap-volume2"
    trident.netapp.io/importBackendUUID: "34abcb27-ea63-49bb-b606-0a5315ac5f34"
    trident.netapp.io/notManaged: "true"
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: <storage-class-name>

Importar qtrees

Observação

A importação de qtree é um recurso em Tech Preview no Trident 26.06. Recursos em Tech Preview não são suportados para uso em produção.

A partir do Trident 26.06, você pode importar qtrees ONTAP existentes para o Trident usando o driver ontap-nas-economy. Identifique a qtree pelo nome do volume FlexVol e pelo nome da qtree no formato flexvol/qtree, juntamente com o UUID do backend que a contém. As considerações gerais de importação em Visão geral e considerações também se aplicam à importação de qtrees.

Importe um qtree usando o tridentctl

Especifique a qtree no formato flexvol/qtree como o nome do volume. O exemplo a seguir importa a qtree qtree1 do volume FlexVol flexvol1 no backend ontap_nas_economy:

tridentctl import volume ontap_nas_economy flexvol1/qtree1 -f <path-to-pvc-file>

Para importar a qtree sem renomeá-la, adicione a --no-rename flag. Para importar a qtree sem que Trident gerencie seu ciclo de vida, adicione a --no-manage flag.

Importe um qtree usando anotações PVC

Crie um PVC com as seguintes anotações:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: <pvc-name>
  namespace: <namespace>
  annotations:
    trident.netapp.io/importOriginalName: "flexvol1/qtree1"
    trident.netapp.io/importBackendUUID: "<backend-uuid>"
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: <size>
  storageClassName: <storage-class-name>

Para manter os nomes de volume FlexVol e qtree existentes, adicione a trident.netapp.io/importNoRename: "true" anotação. Para importar o qtree como não gerenciado, adicione a trident.netapp.io/notManaged: "true" anotação.

Comportamento de nomeação e gerenciamento
Importação gerenciada (padrão)

Trident renomeia a qtree para corresponder ao nome do PVC e renomeia o FlexVol volume de acordo com a ontap-nas-economy convenção de nomenclatura. O caminho de junção não se altera.

--no-rename

Trident mantém os nomes de volume FlexVol e qtree existentes. Os nomes já devem seguir as convenções de nomenclatura do Trident, caso contrário, o Trident não poderá gerenciar operações de exclusão ou montagem do qtree.

--no-manage

Trident faz referência à qtree, mas não gerencia seu ciclo de vida. Os nomes devem seguir as convenções de nomenclatura do Trident, e Trident não usa nem gerencia políticas de exportação automática para a qtree.

Comportamento da política de exportação

Se o backend usar políticas de exportação automática, a qtree importada usará o modelo de política de exportação por qtree, no qual cada qtree tem sua própria política de exportação. Trident atribui à qtree uma política de exportação vazia na importação. No momento da publicação, Trident atualiza o volume FlexVol para a política de exportação por backend se a exportação automática estiver habilitada e a política de exportação FlexVol existente for default ou vazia.

Cuidado

A atualização da política de exportação do volume FlexVol pode interromper outras qtrees no mesmo volume FlexVol que estejam montadas. Importe qtrees somente quando as qtrees no volume FlexVol estiverem desmontadas.

Aviso

Não aponte dois clusters Kubernetes para a mesma SVM ativa e não importe uma qtree que outro cluster ainda gerencia. Se ambos os clusters gerenciarem o mesmo volume, operações conflitantes podem corromper ou destruir os dados.

San ONTAP

O Trident suporta importação de volume usando o ontap-san (iSCSI, NVMe/TCP e FC) e ontap-san-economy motoristas.

O Trident pode importar volumes ONTAP SAN FlexVol que contêm um único LUN. Isto é consistente com o ontap-san driver, que cria um FlexVol volume para cada PVC e um LUN dentro do FlexVol volume. O Trident importa o FlexVol volume e o associa à definição de PVC. Trident pode importar ontap-san-economy volumes que contêm vários LUNs.

Os exemplos a seguir mostram como importar volumes gerenciados e não gerenciados:

Volume gerenciado

Para volumes gerenciados, o Trident renomeia o FlexVol volume para pvc-<uuid> o formato e o LUN no FlexVol volume para lun0.

O exemplo a seguir importa ontap-san-managed o FlexVol volume que está presente no ontap_san_default back-end:

tridentctl import volume ontapsan_san_default ontap-san-managed -f pvc-basic-import.yaml -n trident -d

+------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
|                   NAME                   |  SIZE  | STORAGE CLASS | PROTOCOL |             BACKEND UUID             | STATE  | MANAGED |
+------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
| pvc-d6ee4f54-4e40-4454-92fd-d00fc228d74a | 20 MiB | basic         | block    | cd394786-ddd5-4470-adc3-10c5ce4ca757 | online | true    |
+------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
Volume não gerenciado

O exemplo a seguir é importado unmanaged_example_volume ontap_san no backend:

tridentctl import volume -n trident san_blog unmanaged_example_volume -f pvc-import.yaml --no-manage
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
|                   NAME                   |  SIZE   | STORAGE CLASS | PROTOCOL |             BACKEND UUID             | STATE  | MANAGED |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
| pvc-1fc999c9-ce8c-459c-82e4-ed4380a4b228 | 1.0 GiB | san-blog      | block    | e3275890-7d80-4af6-90cc-c7a0759f555a | online | false   |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+

Se você tiver LUNS mapeados para grupos que compartilham uma IQN com um nó Kubernetes IQN, como mostrado no exemplo a seguir, você receberá o erro: LUN already mapped to initiator(s) in this group. Você precisará remover o iniciador ou desmapear o LUN para importar o volume.

Imagem de LUNS mapeados para iqn e cluster iqn.

Exemplos de SAN-economy do ONTAP

Os exemplos a seguir mostram como importar volumes gerenciados e não gerenciados para o ontap-san-economy backend.

Volume gerenciado

Ao importar um volume gerenciado, Trident assume a propriedade do FlexVol e o renomeia. Você deve levar em consideração essa renomeação ao importar vários LUNs do mesmo FlexVol.

O exemplo a seguir importa lun1 de FlexVol toimport como um volume gerenciado chamado vol-managed-saneco:

tridentctl import volume vol-managed-saneco toimport/lun1 -f import1.yaml

Após a importação lun1, Trident renomeia o FlexVol (por exemplo, para trident_lun_pool_xyz). Para importar LUNs adicionais do mesmo FlexVol, use o novo nome do FlexVol:

tridentctl import volume vol-managed-saneco trident_lun_pool_xyz/lun2 -f import2.yaml
Observação O ontap-san-economy backend importa um LUN por vez. Você pode automatizar várias importações usando um script.
Volume não gerenciado

Ao importar um volume não gerenciado, Trident não assume a propriedade do FlexVol. No entanto, o FlexVol e o LUN devem seguir as convenções de nomenclatura do Trident.

Formato de nomenclatura do FlexVol
trident_lun_pool_STORAGEPREFIX_RANDOMSTRING
  • STORAGEPREFIX é o valor de storagePrefix na sua configuração de backend. O padrão é trident.

  • RANDOMSTRING é qualquer sequência de caracteres que você escolher.

Requisito de nomenclatura LUN

O LUN deve ser nomeado lun0.

Exemplo

Se o seu storagePrefix é xyz, o caminho completo para o LUN é:

trident_lun_pool_xyz_randomstring/lun0

Elemento

O Trident suporta o software NetApp Element e a importação de volume NetApp HCI usando o solidfire-san driver.

Observação O driver Element suporta nomes de volume duplicados. No entanto, o Trident retorna um erro se houver nomes de volume duplicados. Como solução alternativa, clone o volume, forneça um nome de volume exclusivo e importe o volume clonado.

O exemplo a seguir importa um element-managed volume no backend . element_default

tridentctl import volume element_default element-managed -f pvc-basic-import.yaml -n trident -d

+------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
|                   NAME                   |  SIZE  | STORAGE CLASS | PROTOCOL |             BACKEND UUID             | STATE  | MANAGED |
+------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+
| pvc-970ce1ca-2096-4ecd-8545-ac7edc24a8fe | 10 GiB | basic-element | block    | d3ba047a-ea0b-43f9-9c42-e38e58301c49 | online | true    |
+------------------------------------------+--------+---------------+----------+--------------------------------------+--------+---------+

Azure NetApp Files

O Trident suporta a importação de volume usando azure-netapp-files o driver.

Observação Para importar um volume Azure NetApp Files, identifique o volume pelo seu caminho de volume. O caminho do volume é a parte do caminho de exportação do volume após o :/. Por exemplo, se o caminho de montagem for 10.0.0.2:/importvol1, o caminho do volume será importvol1.

O exemplo a seguir importa um azure-netapp-files volume no back-end azurenetappfiles_40517 com o caminho do volume importvol1 .

tridentctl import volume azurenetappfiles_40517 importvol1 -f <path-to-pvc-file> -n trident

+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
|                   NAME                   |  SIZE   | STORAGE CLASS | PROTOCOL |             BACKEND UUID             | STATE  | MANAGED |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+
| pvc-0ee95d60-fd5c-448d-b505-b72901b3a4ab | 100 GiB | anf-storage   | file     | 1c01274f-d94b-44a3-98a3-04c953c9a51e | online | true    |
+------------------------------------------+---------+---------------+----------+--------------------------------------+--------+---------+

Google Cloud NetApp volumes

O Trident suporta a importação de volume usando google-cloud-netapp-volumes o driver.

O exemplo a seguir importa um volume no backend backend-tbc-gcnv1 com o volume testvoleasiaeast1.

tridentctl import volume backend-tbc-gcnv1 "testvoleasiaeast1" -f < path-to-pvc> -n trident

+------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+
|                   NAME                   |  SIZE   | STORAGE CLASS        | PROTOCOL |             BACKEND UUID             | STATE  | MANAGED |
+------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+
| pvc-a69cda19-218c-4ca9-a941-aea05dd13dc0 |  10 GiB | gcnv-nfs-sc-identity | file     | 8c18cdf1-0770-4bc0-bcc5-c6295fe6d837 | online | true    |
+------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+

O exemplo a seguir importa um google-cloud-netapp-volumes volume quando dois volumes estão presentes na mesma região:

tridentctl import volume backend-tbc-gcnv1 "projects/123456789100/locations/asia-east1-a/volumes/testvoleasiaeast1" -f <path-to-pvc> -n trident

+------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+
|                   NAME                   |  SIZE   | STORAGE CLASS        | PROTOCOL |             BACKEND UUID             | STATE  | MANAGED |
+------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+
| pvc-a69cda19-218c-4ca9-a941-aea05dd13dc0 |  10 GiB | gcnv-nfs-sc-identity | file     | 8c18cdf1-0770-4bc0-bcc5-c6295fe6d837 | online | true    |
+------------------------------------------+---------+----------------------+----------+--------------------------------------+--------+---------+