Search the VMware Knowledge Base (KB)
View by Article ID

Como desmontar um LUN ou desanexar um dispositivo repositório de dados de hosts ESXi (2092294)

  • 0 Ratings

Symptoms

Disclaimer: Este artigo é uma tradução de How to unmount a LUN or detach a datastore device from ESXi hosts (2004605). Como os artigos são traduzidos em uma base de melhor esforço, o conteúdo pode tornar-se desatualizado. Para obter o conteúdo mais recente, consulte o artigo em Inglês. 

Purpose

Este artigo apresenta as etapas para desmontar um LUN de um host ESXi 5.x/6.x, incluindo a desmontagem do sistema de arquivos e a desanexação do dispositivo repositório de dados/armazenamento. Essas etapas devem ser realizadas em todos os hosts ESXi.

Nota: o método documentado usando o vSphere Client se limita a desanexar o dispositivo em cada host. Para desanexar um dispositivo de armazenamento de múltiplos hosts ao mesmo tempo, consulte Automating detaching datastores using PowerCLIand the vSphere SDK for Perl na seção Resolution deste artigo.

Para obter informações sobre a desmontagem de um repositório de dados no ESXi/ESX 4.x, consulte Removing a LUN containing a datastore from VMware ESXi 4x and ESX 4.x (1029786). 

Resolution

Remover um LUN no ESXi/ESX 4.x é complexo. Foram feitas melhorias no ESXi 5.0 e na versão posterior para simplificar o procedimento e facilitar a remoção de LUNs pelos Administradores.

Lista de verificação para desmontagem de um LUN

Antes de desmontar um LUN, certifique-se de que:
  • Se o LUN estiver sendo usado como um repositório de dados VMFS, todos os objetos (como máquinas virtuais, instantâneos e modelos) armazenados no repositório de dados VMFS terão seus registros cancelados ou movidos para outro repositório de dados.

    Nota: todas as imagens de CD/DVD localizadas no repositório de dados VMFS também devem ter seus registros cancelados nas máquinas virtuais.

  • O repositório de dados não é usado para o "heartbeat" do vSphere HA.
  • O repositório de dados não faz parte de um cluster de repositório de dados.

    Para obter mais informações sobre clusters de repositório de dados, consulte:
  • O repositório de dados não é gerenciado pelo Storage DRS.

    Para obter mais informações sobre o Storage DRS, consulte:

  • O repositório de dados não está configurado como uma partição de descarga de memória de diagnóstico. 

    Para obter mais informações, consulte Configuring a diagnostic coredump partition on an ESXi 5.x host (2004299). 

  • O Storage I/O Control está desativado no repositório de dados. 

    Para obter mais informações, consulte a seção Managing Storage I/O Resources em vSphere 5.1 Resource Management Guide ou vSphere 5.0 Resource Management Guide. 

  • Nenhum script ou utilitário de terceiros em execução no host ESXi pode acessar o LUN que tem problema. Se o LUN está sendo usado como repositório de dados, cancele o registro de todos os objetos (como máquinas virtuais e modelos) armazenados no repositório de dados.
  • Se o LUN está sendo usado como um RDM, remova o RDM da máquina virtual. Clique em Edit Settings, selecione o disco rígido RDM e clique em Remove. Selecione Delete from disk, se não estiver selecionado, e clique em OK.

    Nota: isso destrói o arquivo de mapeamento, mas não o conteúdo LUN.

  • Verifique se o LUN/repositório de dados é usado como o local de rascunho persistente para o host. Para obter mais informações sobre o rascunho persistente, consulte Creating a persistent scratch location for ESXi 4.x and 5.x (1033696).

    Este script PowerCLI pode ser usado para verificar o local de rascunho atual:

    $vcServer = "vCenter01"
    $cluster = "CL01"
    $esxCred = Get-Credential
    Connect-VIServer $vcServer | Out-Null
    #Connect to ESX hosts in cluster
    foreach ($esx in Get-Cluster $cluster | Get-VMHost) {
    Connect-VIServer $esx -Credential $esxCred | Out-Null
    Get-VMHostAdvancedConfiguration -Name "ScratchConfig.ConfiguredScratchLocation"
    }
Nota: ao usar o vSphere Web Client com o vSphere 5.x e 6.x, somente essas verificações são realizadas durante a operação de desmontagem do repositório de dados:
  • O host não deve ter nenhuma máquina virtual residente neste repositório de dados
  • O host não deve usar o repositório de dados para pulsações de HA

Obtendo o ID de NAA do LUN a ser removido

No vSphere Client, esta informação é visível na janela Properties (Propriedades) do repositório de dados.

No host ESXi, execute o comando:

# esxcli storage vmfs extent list

A saída é semelhante a:

Volume Name VMFS UUID Extent Number Device Name Partition
----------- ----------------------------------- ------------- ------------------------------------ ---------
datastore1 4de4cb24-4cff750f-85f5-0019b9f1ecf6 0 naa.6001c230d8abfe000ff76c198ddbc13e 3
Storage2 4c5fbff6-f4069088-af4f-0019b9f1ecf4 0 naa.6001c230d8abfe000ff76c2e7384fc9a 1
Storage4 4c5fc023-ea0d4203-8517-0019b9f1ecf4 0 naa.6001c230d8abfe000ff76c51486715db 1
LUN01 4e414917-a8d75514-6bae-0019b9f1ecf4 0 naa.60a98000572d54724a34655733506751 1


Anote o ID do NAA do repositório de dados para usar esta informação posteriormente neste procedimento.

Nota: como alternativa, é possível executar o comando esxcli storage filesystem list, que lista todos os sistemas de arquivos reconhecidos pelo host ESXi.

Desmontando um LUN usando o vSphere Client

Para desanexar o dispositivo de armazenamento usando o vSphere Client, consulte a seção Detach Storage Devices no vSphere 5.0 Storage Guide.

Cuidado: a desmontagem do repositório de dados deve ser bem-sucedida usando o método documentado antes de concluir as etapas descritas abaixo. Para obter mais informações, consulte a seção Unmount VMFS or NFS Datastores no vSphere 5.0 Storage Guide.

Para desmontar um LUN de um host ESXi 5.0 usando o vSphere Client:
  1. Se o LUN for um RDM, vá para a etapa 2. Caso contrário, na guia Configuration do host ESXi, clique em Storage. Clique com o botão direito do mouse no repositório de dados que está sendo removido e clique em Unmount.

    A janela Confirm Datastore Unmount (Confirmar desmontagem do repositório de dados) aparece. Quando os critérios de pré-requisitos forem aprovados, clique em OK.

    Nota: para desmontar um repositório de dados de múltiplos hosts no vSphere Client, clique na tela Hosts and Clusters > Datastores and Datastore Clusters (Ctrl+Shift+D). Realize a tarefa de desmontagem e selecione os hosts apropriados que devem deixar de acessar o repositório de dados a ser desmontado.
  2. Clique em Devices (em Configuration > Storage):

  3. Clique com o botão direito do mouse no ID de NAA do LUN (como observado acima) e clique em Detach. A janela Confirm Device Unmount é exibida. Quando os critérios de pré-requisitos forem aprovados, clique em OK. Em Operational State of the Device, o LUN está listado como Unmounted.

    Nota: a função Detach (Desanexar) deve ser executada em cada host e não se propaga a outros hosts no vCenter Server. Se um LUN for apresentado a um grupo de iniciador ou a um grupo de armazenamento na SAN, a função Detach deverá ser executada em cada host nesse grupo de iniciador antes de cancelar o mapeamento de LUN no grupo de SAN. Caso esta etapa não seja seguida, isso resultará em um estado all-paths-down (APD) para esses hosts no grupo de armazenamento cuja função Detach não foi executada com o LUN não mapeado.
  4. Confirme se o LUN foi desanexado com sucesso. Assim, o LUN pode ser ocultado do SAN com segurança. Para obter mais informações, entre em contato com o fornecedor da matriz de armazenamento.
  5. Realize uma nova verificação em todos os hosts ESXi que tiveram visibilidade no LUN. O dispositivo é automaticamente removido dos Storage Adapters.

Quando o dispositivo é desanexado, ele permanece em um estado desmontado, mesmo se o dispositivo for reapresentado (ou seja, o estado desanexado é persistente). Para colocar um dispositivo novamente on-line, ele deve estar anexado.

Se você deseja que o dispositivo seja permanentemente desativado de um host ESXi, remova manualmente as entradas NAA da configuração do host:

  1. Para listar os dispositivos desanexados permanentemente, execute o comando:

    # esxcli storage core device detached list

    A saída é semelhante a:

    Device UID State
    ------------------------------------ -----
    naa.50060160c46036df50060160c46036df off
    naa.6006016094602800c8e3e1c5d3c8e011 off 


  2. Para remover permanentemente do sistema as informações de configuração do dispositivo, execute o comando:

    # esxcli storage core device detached remove -d NAA_ID

    Por exemplo:

    # esxcli storage core device detached remove -d naa.50060160c46036df50060160c46036df

Desmontando um LUN usando a linha de comando

Para desmontar um LUN de um host ESXi 5.x/6.x usando a linha de comando:

  1. Se o LUN for um RDM, vá para a etapa 4. Caso contrário, para obter um lista de todos os repositórios de dados montados em um host ESXi, execute o comando:

    # esxcli storage filesystem list

    A saída exibida, que lista todos os repositórios de dados do VMFS, é semelhante a:

    Mount Point Volume Name UUID Mounted Type Size Free
    ------------------------------------------------- ----------- ----------------------------------- ------- ------ ----------- -----------
    /vmfs/volumes/4de4cb24-4cff750f-85f5-0019b9f1ecf6 datastore1 4de4cb24-4cff750f-85f5-0019b9f1ecf6 true VMFS-5 140660178944 94577360896
    /vmfs/volumes/4c5fbff6-f4069088-af4f-0019b9f1ecf4 Storage2 4c5fbff6-f4069088-af4f-0019b9f1ecf4 true VMFS-3 146028888064 7968129024
    /vmfs/volumes/4c5fc023-ea0d4203-8517-0019b9f1ecf4 Storage4 4c5fc023-ea0d4203-8517-0019b9f1ecf4 true VMFS-3 146028888064 121057050624
    /vmfs/volumes/4e414917-a8d75514-6bae-0019b9f1ecf4 LUN01 4e414917-a8d75514-6bae-0019b9f1ecf4 true VMFS-5 146028888064 4266131456


  2. Para localizar o identificador exclusivo do LUN que abriga o repositório de dados a ser removido, execute o comando:

    # esxcfg-scsidevs -m

    Este comando gera uma lista de volumes de repositório de dados VMFS e seus identificadores exclusivos relacionados. Anote o identificador exclusivo (NAA_ID) para o repositório de dados que você deseja desmontar, pois essa informação será usada posteriormente.

    Para obter mais informações sobre o comando esxcfg-scsidevs, consulte Identifying disks when working with VMware ESX/ESXi (1014953).

  3. Desmonte o repositório de dados executando o comando:

    # esxcli storage filesystem unmount [-u UUID | -l label | -p path ]

    Por exemplo, use um destes comandos para desmontar o repositório de dados LUN01:

    # esxcli storage filesystem unmount -l LUN01
    # esxcli storage filesystem unmount -u 4e414917-a8d75514-6bae-0019b9f1ecf4
    # esxcli storage filesystem unmount -p /vmfs/volumes/4e414917-a8d75514-6bae-0019b9f1ecf4


    Nota: se o sistema de arquivos do VMFS que você está tentando desmontar tiver E/S ativa ou não tiver cumprido os pré-requisitos para desmontar o repositório de dados do VMFS, será exibido um erro em VMkernel logs semelhante a:

    WARNING: VC: 637: unmounting opened volume ('4e414917-a8d75514-6bae-0019b9f1ecf4' 'LUN01') is not allowed.
    VC: 802: Unmount VMFS volume f530 28 2 4e414917a8d7551419006bae f4ecf19b 4 1 0 0 0 0 0 : Busy


  4. Para verificar se o repositório de dados foi desmontado, execute o comando:

    # esxcli storage filesystem list

    A saída é semelhante a:

    Mount Point Volume Name UUID Mounted Type Size Free
    ------------------------------------------------- ----------- ----------------------------------- ------- ------ ----------- -----------
    /vmfs/volumes/4de4cb24-4cff750f-85f5-0019b9f1ecf6 datastore1 4de4cb24-4cff750f-85f5-0019b9f1ecf6 true VMFS-5 140660178944 94577360896
    /vmfs/volumes/4c5fbff6-f4069088-af4f-0019b9f1ecf4 Storage2 4c5fbff6-f4069088-af4f-0019b9f1ecf4 true VMFS-3 146028888064 7968129024
    /vmfs/volumes/4c5fc023-ea0d4203-8517-0019b9f1ecf4 Storage4 4c5fc023-ea0d4203-8517-0019b9f1ecf4 true VMFS-3 146028888064 121057050624
    LUN01 4e414917-a8d75514-6bae-0019b9f1ecf4 false VMFS-unknown version 0 0


    O campo Mounted está definido como false, o campo Type está definido como VMFS-unknown version e não existe nenhum Mount Point.

    Nota: o estado desmontado do repositório de dados do VMFS persiste entre as reinicializações. Esse é o comportamento padrão. Se você precisar desmontar um repositório de dados temporariamente, poderá anexar a bandeira --no-persist ao comando unmount.

  5. Para desanexar o dispositivo/LUN, execute o comando:

    # esxcli storage core device set --state=off -d NAA_ID

  6. Para verificar se o dispositivo está off-line, execute o comando:

    # esxcli storage core device list -d NAA_ID

    A saída exibida, que mostra o Status do disco como off, é semelhante a:

    naa.60a98000572d54724a34655733506751
    Display Name: NETAPP Fibre Channel Disk (naa.60a98000572d54724a34655733506751)
    Has Settable Display Name: true
    Size: 1048593
    Device Type: Direct-Access
    Multipath Plugin: NMP
    Devfs Path: /vmfs/devices/disks/naa.60a98000572d54724a34655733506751
    Vendor: NETAPP
    Model: LUN
    Revision: 7330
    SCSI Level: 4
    Is Pseudo: false
    Status: off
    Is RDM Capable: true
    Is Local: false
    Is Removable: false
    Is SSD: false
    Is Offline: false
    Is Perennially Reserved: false
    Thin Provisioning Status: yes
    Attached Filters:
    VAAI Status: unknown
    Other UIDs: vml.020000000060a98000572d54724a346557335067514c554e202020


    Executar o comando partedUtil getptbl no dispositivo mostra que o dispositivo não foi encontrado.

    Por exemplo:

    # partedUtil getptbl /vmfs/devices/disks/naa.60a98000572d54724a34655733506751

    Error: Could not stat device /vmfs/devices/disks/naa.60a98000572d54724a34655733506751 - No such file or directory.
    Unable to get device /vmfs/devices/disks/naa.60a98000572d54724a34655733506751


  7. Se o dispositivo tiver que ser desativado permanentemente, será possível ocultar o LUN do SAN. Para obter mais informações, entre em contato com a equipe de armazenamento, o administrador de armazenamento ou o fornecedor da matriz de armazenamento.
  8. Para fazer uma nova verificação no host ESXi, execute o comando:

    # esxcli storage core adapter rescan [ -A vmhba# | --all ]

    Os dispositivos são automaticamente removidos dos Storage Adapters (Adaptadores de Armazenamento).

    Notas:
    • Deve-se executar uma nova verificação em todos os hosts visíveis para o LUN removido.
    • Quando o dispositivo é desanexado, ele permanece em um estado desmontado, mesmo se o dispositivo for reapresentado (ou seja, o estado desanexado é persistente). Para colocar um dispositivo novamente on-line, ele deve estar anexado. Para fazer isso através da linha de comando, execute o comando:

      # esxcli storage core device set --state=on -d NAA_ID

  9. Se o dispositivo tiver que ser desativado permanentemente de um host ESXi (ou seja, o LUN foi ou será destruído), remova as entradas NAA da configuração do host executando os seguintes comandos:

    1. Para listar os dispositivos desanexados permanentemente:

      # esxcli storage core device detached list

      A saída é semelhante a:

      Device UID State
      ---------------------------- -----
      naa.50060160c46036df50060160c46036df off
      naa.6006016094602800c8e3e1c5d3c8e011 off


    2. Para remover permanentemente do sistema as informações de configuração do dispositivo:

      # esxcli storage core device detached remove -d NAA_ID

      Por exemplo:

      # esxcli storage core device detached remove -d naa.50060160c46036df50060160c46036df

    A referência à configuração do dispositivo é removida permanentemente da configuração do host ESXi.

    Nota: se o dispositivo for desanexado, mas ainda é apresentado (a etapa 7 foi ignorada), o comando anterior falha ao remover permanentemente o dispositivo do sistema e o dispositivo será automaticamente reanexado. A etapa 7 deve ser concluída para o dispositivo ser removido permanentemente.

Automatizando a desanexação de repositórios de dados usando o PowerCLI e o vSphere SDK for Perl

É possível automatizar o processo de desanexação de repositórios de dados de múltiplos hosts usando scripts PowerCLI.

Usando o PowerCLI

Para desanexar um dispositivo de armazenamento usando o PowerCLI:

  1. Consulte o VMware Contributed Sample Code disclaimer.
  2. Faça download do script PowerCLI disponível em Automating Datastore/Storage Device Detachment in vSphere 5.

    Nota: este script PowerCLI é fornecido exatamente como está e tem suporte adequado da comunidade. Se você tiver problemas com este script PowerCLI, procure ajuda nos fóruns VMware Communities.

  3. Importe o script usando o comando:

    Import-Module path_to_script

  4. Certifique-se de que já desmontou o repositório de dados de destino. Para obter mais informações, consulte a seção Unmount VMFS or NFS Datastores no vSphere 5.0 Storage Guide.
  5. Liste todos os repositórios de dados e seus hosts anexados executando o comando:

    Get-Datastore | Get-DatastoreMountInfo | Sort Datastore, VMHost | FT –AutoSize

    A saída é semelhante a:

    Datastore VMHost Lun Mounted State 
    --------- ------ --- ------- ----- 
    IX2ISCSI01 esx01.vmw.local naa.5000144f52145699 False Attached
    IX2ISCSI01 esx02.vmw.local naa.5000144f52145699 False Attached
    IX2ISCSI01 esx03.vmw.local naa.5000144f52145699 False Attached
    LocalDatastore esx01.vmw.local mpx.vmhba1:C0:T0:L0 True Attached
    LocalDatastore esx02.vmw.local mpx.vmhba1:C0:T0:L0 True Attached
    esx04-Internal-150GB esx04.vmw.local t10.ATA_____GB0160EAPRR_____________________________WCAT25563003________ True Attached
    esx04-Internal-500GB esx04.vmw.local t10.ATA_____WDC_WD5000AAKS2D00V1A0________________________WD2DWMAWF0069467 True Attached
    esx03-Internal-150GB esx03.vmw.local t10.ATA_____GB0160EAPRR_____________________________WCAT25704089________ True Attached
    esx03-Internal-500GB esx03.vmw.local t10.ATA_____WDC_WD5000AAKS2D00YGA0________________________WD2DWCAS85034601 True Attached


  6. Selecione o repositório de dados apropriado, grave o nome abaixo da coluna Datastore e confirme se a coluna Mountedcontém o valor False para todos os hosts.
  7. Desanexe os dispositivos de todos os hosts executando o comando:

    Get-Datastore datastore_name| Detach-Datastore

    Em que datastore_name é o nome do repositório de dados gravado na etapa 3.

    A saída é semelhante a:

    Detaching LUN naa.5000144f52145699 from host esx01.vmw.local...
    Detaching LUN naa.5000144f52145699 from host esx02.vmw.local...
    Detaching LUN naa.5000144f52145699 from host esx03.vmw.local...

Nota: O comando powercli Get-Datastore datastore_name| Detach-Datastore só desanexa a extenção da cabeça (primeira extensão) do repositório de dados que é composto por múltiplas extensões. Esta etapa não funciona para o repositório de dados com múltiplas extensões.


Usando o vSphere SDK for Perl

Para desanexar um dispositivo de armazenamento usando o Perl:

  1. Consulte o VMware Contributed Sample Code disclaimer.
  2. Implante o script Perl disponível com suporte da comunidade VMware vSphere Blog, Automating Datastore/Storage Device Detachment in vSphere 5.

    Cuidado: antes de continuar, certifique-se de que já desmontou o repositório de dados de destino. Para obter mais informações, consulte a seção Unmount VMFS or NFS Datastores no vSphere 5.0 Storage Guide. 

  3. Liste todos os repositórios de dados e seus hosts anexados executando o comando:

    ./lunManagement.pl --server vcenter_ip --username user --operation list

    Em que vcenter_ip é o endereço IP do vCenter Server gerenciando seus hosts e user é um usuário com privilégios de administrador.

  4. Será solicitada uma senha para a conta de usuário usada na etapa 3. Se a senha correta for inserida, o script vai gerar uma saída semelhante à seguinte:

    Datastore: esx01-local-storage-1 LUN: mpx.vmhba1:C0:T0:L0
    esx01.vmw.local MOUNTED ATTACHED
    Datastore: esx02-local-storage-1 LUN: mpx.vmhba1:C0:T0:L0
    esx02.vmw.local MOUNTED ATTACHED
    Datastore: iSCSI-1 LUN: naa.600144f0a33bc20000004e9772510001
    esx01.vmw.local UNMOUNTED ATTACHED
    esx02.vmw.local UNMOUNTED ATTACHED
    Datastore: iSCSI-2 LUN: naa.600144f0a33bc20000004e9772ee0002
    esx01.vmw.local MOUNTED ATTACHED
    esx02.vmw.local MOUNTED ATTACHED
    Datastore: iSCSI-3 LUN: naa.600144f0a33bc20000004e9773560003
    esx01.vmw.local MOUNTED ATTACHED
    esx02.vmw.local MOUNTED ATTACHED
    Datastore: iSCSI-4 LUN: naa.600144f0a33bc20000004e9773560004
    esx01.vmw.local MOUNTED ATTACHED
    esx02.vmw.local MOUNTED ATTACHED
    Datastore: iSCSI-5 LUN: naa.600144f0a33bc20000004e9773570005
    esx01.vmw.local MOUNTED ATTACHED
    esx02.vmw.local MOUNTED ATTACHED


  5. Confirme se o repositório de dados que você deseja desanexar foi desmontado, verificando a palavra-chave UNMOUNTEDabaixo do nome do repositório de dados aplicável e do valor NAA.
  6. Desanexe os dispositivos em múltiplos hosts executando o comando:

    ./lunManagement.pl --server vcenter_ip --username user --operation detach --datastore datastore

    Em que vcenter_ip é o endereço IP do vCenter Server, user é um usuário com privilégios de administrador e datastore é o nome do repositório de dados identificado na etapa 4.

  7. Será solicitada uma senha e a confirmação que você deseja realizar a operação. Depois de fornecer a senha correta e confirmar o aviso, a ferramenta vai gerar uma saída semelhante à seguinte:

    Detaching LUN "0200000000600144f0a33bc20000004e9772510001434f4d535441" from Host "esx01.vmw.local" ...
    Successfully detached LUN!
    Detaching LUN "0200000000600144f0a33bc20000004e9772510001434f4d535441" from Host "esx02.vmw.local" ...
    Successfully detached LUN!

Nota: Depois de desanexar o LUN, ele pode ser ocultado do armazenamento. No entanto, se o comando esxcli storage core device detached remove -d NAA_ID for executado para desativar permanentemente o LUN do host ESXI antes de ocultar o LUN do armazenamento, o LUN será reanexado ao host e deverá ser desanexado novamente.

Nota TSE: em sequência, você ainda visualizará alarmes de conectividade de armazenamento do vCenter. Seria vantajoso desativar o alarme ao realizar as tarefas.




Additional Information

Para excluir um repositório de dados ao invés de ocultá-lo, consulte:
Para obter mais informações, consulte Best Practice: How to correctly remove a LUN from an ESX host.

Se o LUN que você está tentando remover estiver sinalizado como permanentemente reservado para evitar que ele cause atrasos de inicialização do host. O sinalizador de permanentemente reservado pode evitar uma desmontagem bem-sucedida de LUN.

Para remover a bandeira de permanentemente reservado, execute o comando:
 
# esxcli storage core device setconfig -d $device --perennially-reserved=false

Em seguida, execute este comando para tentar novamente a remoção do dispositivo:
 
# esxcli storage core device detached remove -d $device

Nota: configurar a bandeira como false não tem nenhum impacto negativo, mesmo quando não for necessário.

Tags

Portuguese Português Portugues

See Also

Request a Product Feature

To request a new product feature or to provide feedback on a VMware product, please visit the Request a Product Feature page.

Feedback

  • 0 Ratings

Did this article help you?
This article resolved my issue.
This article did not resolve my issue.
This article helped but additional information was required to resolve my issue.

What can we do to improve this information? (4000 or fewer characters)




Please enter the Captcha code before clicking Submit.
  • 0 Ratings
Actions
KB: