arrow_back

Como limpar discos permanentes órfãos e não utilizados

Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Como limpar discos permanentes órfãos e não utilizados

Lab 1 hora universal_currency_alt 5 créditos show_chart Intermediário
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP648

Laboratórios autoguiados do Google Cloud

Visão geral

Neste laboratório, você usará o Cloud Functions e o Cloud Scheduler para identificar e limpar recursos de nuvem desperdiçados. Neste caso, você agendará uma função do Cloud para identificar e limpar discos permanentes órfãos e não utilizados.

Pré-requisitos

  • Criar dois discos permanentes
  • Criar uma VM que use um dos discos
  • Desconectar o disco da VM
  • Revisar o código da função do Cloud
  • Implantar a função do Cloud
  • Testar a função do Cloud usando jobs do Cloud Scheduler

Arquitetura

O diagrama a seguir descreve a arquitetura usada na primeira seção do laboratório, em que você agenda uma função do Cloud para identificar e limpar discos permanentes órfãos e não utilizados.

Diagrama da arquitetura

Configuração

Nesta seção, você vai definir a infraestrutura e as identidades necessárias para concluir o laboratório.

Antes de clicar no botão Start Lab

Leia estas instruções. Os laboratórios são cronometrados e não podem ser pausados. O timer é iniciado quando você clica em Começar o laboratório e mostra por quanto tempo os recursos do Google Cloud vão ficar disponíveis.

Este laboratório prático permite que você realize as atividades em um ambiente real de nuvem, não em uma simulação ou demonstração. Você vai receber novas credenciais temporárias para fazer login e acessar o Google Cloud durante o laboratório.

Confira os requisitos para concluir o laboratório:

  • Acesso a um navegador de Internet padrão (recomendamos o Chrome).
Observação: para executar este laboratório, use o modo de navegação anônima ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e a conta de estudante, o que poderia causar cobranças extras na sua conta pessoal.
  • Tempo para concluir o laboratório---não se esqueça: depois de começar, não será possível pausar o laboratório.
Observação: não use seu projeto ou conta do Google Cloud neste laboratório para evitar cobranças extras na sua conta.

Como iniciar seu laboratório e fazer login no console do Google Cloud

  1. Clique no botão Começar o laboratório. Se for preciso pagar, você verá um pop-up para selecionar a forma de pagamento. No painel Detalhes do laboratório à esquerda, você verá o seguinte:

    • O botão Abrir Console do Cloud
    • Tempo restante
    • As credenciais temporárias que você vai usar neste laboratório
    • Outras informações se forem necessárias
  2. Clique em Abrir Console do Google. O laboratório ativa recursos e depois abre outra guia com a página Fazer login.

    Dica: coloque as guias em janelas separadas lado a lado.

    Observação: se aparecer a caixa de diálogo Escolher uma conta, clique em Usar outra conta.
  3. Caso seja preciso, copie o Nome de usuário no painel Detalhes do laboratório e cole esse nome na caixa de diálogo Fazer login. Clique em Avançar.

  4. Copie a Senha no painel Detalhes do laboratório e a cole na caixa de diálogo Olá. Clique em Avançar.

    Importante: você precisa usar as credenciais do painel à esquerda. Não use suas credenciais do Google Cloud Ensina. Observação: se você usar sua própria conta do Google Cloud neste laboratório, é possível que receba cobranças adicionais.
  5. Acesse as próximas páginas:

    • Aceite os Termos e Condições.
    • Não adicione opções de recuperação nem autenticação de dois fatores (porque essa é uma conta temporária).
    • Não se inscreva em testes gratuitos.

Depois de alguns instantes, o console do GCP vai ser aberto nesta guia.

Observação: para ver uma lista dos produtos e serviços do Google Cloud, clique no Menu de navegação no canto superior esquerdo. Ícone do menu de navegação

Ativar o Cloud Shell

O Cloud Shell é uma máquina virtual com várias ferramentas de desenvolvimento. Ele tem um diretório principal permanente de 5 GB e é executado no Google Cloud. O Cloud Shell oferece acesso de linha de comando aos recursos do Google Cloud.

  1. Clique em Ativar o Cloud Shell Ícone "Ativar o Cloud Shell" na parte de cima do console do Google Cloud.

Depois de se conectar, vai notar que sua conta já está autenticada, e que o projeto está configurado com seu PROJECT_ID. A saída contém uma linha que declara o projeto PROJECT_ID para esta sessão:

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.

  1. (Opcional) É possível listar o nome da conta ativa usando este comando:
gcloud auth list
  1. Clique em Autorizar.

  2. A saída será parecida com esta:

Saída:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Opcional) É possível listar o ID do projeto usando este comando:
gcloud config list project

Saída:

[core] project = <project_ID>

Exemplo de saída:

[core] project = qwiklabs-gcp-44776a13dea667a6 Observação: para conferir a documentação completa da gcloud, acesse o guia com informações gerais sobre a gcloud CLI no Google Cloud.

Tarefa 1: ativar as APIs e clonar os repositórios

  1. No Cloud Shell, ative a API Cloud Scheduler:

    gcloud services enable cloudscheduler.googleapis.com
  2. Clone o repositório:

    gsutil cp -r gs://spls/gsp648 . && cd gsp648
  3. Defina as variáveis de ambiente e a pasta do repositório como $WORKDIR, onde você vai executar todos os comandos relacionados a este laboratório:

    export PROJECT_ID=$(gcloud config list --format 'value(core.project)' 2>/dev/null) WORKDIR=$(pwd)
  4. Defina a região do projeto neste laboratório:

    gcloud config set compute/region {{{project_0.default_region | "REGION"}}}
  5. Crie uma variável para a região:

    export REGION={{{project_0.default_region | Region}}}
  6. Crie uma variável para a zona:

    export ZONE={{{project_0.default_zone | Zone}}}

Saiba mais na documentação Regiões e zonas.

Observação: quando você executa a gcloud na sua máquina, as configurações continuam as mesmas em todas as sessões. Porém, no Cloud Shell, elas precisam ser definidas a cada nova sessão ou reconexão.

Tarefa 2: criar discos permanentes

  1. No Cloud Shell, acesse o diretório unattached-pd:

    cd $WORKDIR/unattached-pd
  2. Exporte os nomes dos discos como variáveis:

    export ORPHANED_DISK=orphaned-disk export UNUSED_DISK=unused-disk
  3. Crie dois discos:

    gcloud compute disks create $ORPHANED_DISK --project=$PROJECT_ID --type=pd-standard --size=500GB --zone=$ZONE gcloud compute disks create $UNUSED_DISK --project=$PROJECT_ID --type=pd-standard --size=500GB --zone=$ZONE

    O exemplo usa a região , mas é possível escolher outra e usá-la no restante do laboratório.

  4. Confirme se foram criados dois discos:

    gcloud compute disks list

    A resposta será semelhante a esta:

    NAME LOCATION LOCATION_SCOPE SIZE_GB TYPE STATUS orphaned-disk {{{project_0.default_zone | Zone}}} zone 500 pd-standard READY unused-disk {{{project_0.default_zone | Zone}}} zone 500 pd-standard READY

Testar a tarefa concluída

Clique em Verificar meu progresso para conferir a tarefa realizada. Se você tiver criado um disco permanente, verá uma pontuação de avaliação.

Crie um disco permanente

Tarefa 3: criar uma VM e inspecionar os discos

  1. No Cloud Shell, crie uma instância:

    gcloud compute instances create disk-instance \ --zone=$ZONE \ --machine-type=n1-standard-1 \ --disk=name=$ORPHANED_DISK,device-name=$ORPHANED_DISK,mode=rw,boot=no
  2. Inspecione o disco que foi anexado à VM:

    gcloud compute disks describe $ORPHANED_DISK --zone=$ZONE --format=json | jq

    O resultado será assim:

    { "creationTimestamp": "2019-06-12T12:21:25.546-07:00", "id": "7617542552306904666", "kind": "compute#disk", "labelFingerprint": "42WmSpB8rSM=", "lastAttachTimestamp": "2019-06-12T12:24:53.989-07:00", "name": "orphaned-disk", "physicalBlockSizeBytes": "4096", "selfLink": "https://www.googleapis.com/compute/v1/projects/automating-cost-optimization/zones/{{{project_0.default_zone | Zone}}}/disks/orphaned-disk", "sizeGb": "500", "status": "READY", "type": "https://www.googleapis.com/compute/v1/projects/automating-cost-optimization/zones/{{{project_0.default_zone | Zone}}}/diskTypes/pd-standard", "users": [ "https://www.googleapis.com/compute/v1/projects/automating-cost-optimization/zones/{{{project_0.default_zone | Zone}}}/instances/disk-instance" ], "zone": "https://www.googleapis.com/compute/v1/projects/automating-cost-optimization/zones/{{{project_0.default_zone | Zone}}}" }

    No exemplo de código anterior, observe o seguinte:

    • users identifica a VM à qual o disco está conectado.
    • lastAttachTimestamp identifica quando o disco foi conectado pela última vez a uma VM.

Testar a tarefa concluída

Clique em Verificar meu progresso para conferir a tarefa realizada. Se você tiver criado uma instância de VM com disco permanente, verá uma pontuação de avaliação.

Crie uma instância de VM com disco permanente
  1. Desconecte o disco órfão da VM:

    gcloud compute instances detach-disk disk-instance --device-name=$ORPHANED_DISK --zone=$ZONE
  2. Inspecione o disco órfão:

    gcloud compute disks describe $ORPHANED_DISK --zone=$ZONE --format=json | jq

    O resultado será assim:

    { "creationTimestamp": "2019-06-12T12:21:25.546-07:00", "id": "7617542552306904666", "kind": "compute#disk", "labelFingerprint": "42WmSpB8rSM=", "lastAttachTimestamp": "2019-06-12T12:24:53.989-07:00", "lastDetachTimestamp": "2019-06-12T12:34:56.040-07:00", "name": "orphaned-disk", "physicalBlockSizeBytes": "4096", "selfLink": "https://www.googleapis.com/compute/v1/projects/automating-cost-optimization/zones/{{{project_0.default_zone | Zone}}}/disks/orphaned-disk", "sizeGb": "500", "status": "READY", "type": "https://www.googleapis.com/compute/v1/projects/automating-cost-optimization/zones/{{{project_0.default_zone | Zone}}}/diskTypes/pd-standard", "zone": "https://www.googleapis.com/compute/v1/projects/automating-cost-optimization/zones/{{{project_0.default_zone | Zone}}}" }

    No exemplo de código anterior, observe o seguinte:

    • O disco não tem users listados, o que indica que ele não está em uso no momento.
    • Existe agora uma entrada lastDetachTimestamp, que indica quando o disco foi desconectado de uma VM pela última vez e, portanto, quando deixou de ser usado.
    • O campo lastAttachTimestamp ainda está presente.

Testar a tarefa concluída

Clique em Verificar meu progresso para conferir a tarefa realizada. Se você tiver desconectado o disco órfão da VM, verá uma pontuação de avaliação.

Desconecte o disco órfão da VM

Tarefa 4: revisar o código da função do Cloud

  1. No Cloud Shell, gere a seção do código que recupera todos os discos permanentes no projeto:

    cat $WORKDIR/unattached-pd/main.py | grep "(request)" -A 12

    O resultado é o seguinte:

    def delete_unattached_pds(request): # get list of disks and iterate through it: disksRequest = compute.disks().aggregatedList(project=project) while disksRequest is not None: diskResponse = disksRequest.execute() for name, disks_scoped_list in diskResponse['items'].items(): if disks_scoped_list.get('warning') is None: # got disks for disk in disks_scoped_list['disks']: # iterate through disks diskName = disk['name'] diskZone = str((disk['zone'])).rsplit('/',1)[1] print (diskName) print (diskZone)

    A função usa o método aggregatedList para buscar todos os discos permanentes no projeto do Google Cloud onde é executado e faz a iteração em cada um dos discos.

  2. Gere a seção do código que verifica o campo lastAttachTimestamp e exclui o disco se ele não existir:

    cat $WORKDIR/unattached-pd/main.py | grep "handle never" -A 11

    O resultado é o seguinte:

    # handle never attached disk - delete it # lastAttachedTimestamp is not present try: if disk["lastAttachTimestamp"] is None: print ("none!") except KeyError: print ("disk " + diskName + " was never attached - deleting") deleteRequest = compute.disks().delete(project=project, zone=diskZone, disk=diskName) deleteResponse = deleteRequest.execute() waitForZoneOperation(deleteResponse, project, diskZone) print ("disk " + diskName + " was deleted") continue

    Esta seção exclui o disco se lastAttachTimestamp não estiver presente, significando que ele nunca foi usado.

  3. Gere a seção do código que calcula a idade do disco, se ele for órfão, cria um snapshot dele e o exclui:

    cat $WORKDIR/unattached-pd/main.py | grep "handle detached" -A 32

    O resultado é o seguinte:

    # handle detached disk - snapshot and delete # lastAttachTimestamp is present AND users is not present try: if disk['users'] is None and disk['lastDetachTimestamp'] is not None: print ("users is none") except KeyError: print ("disk " + diskName + " has no users and has been detached") detachTimestamp = dateutil.parser.parse(disk['lastDetachTimestamp']) detachedFor = pytz.utc.localize(datetime.utcnow()) - detachTimestamp print ("disk has been detached for " + str(detachedFor)) # update this for your preferred age if detachedFor.days > -1: # take a snapshot snapShotName = diskName + str(int(time.time())) print ("taking snapshot: " + snapShotName) snapshotBody = { "name": snapShotName } snapshotRequest = compute.disks().createSnapshot(project=project, zone=diskZone, disk=diskName, body=snapshotBody) snapshotResponse = snapshotRequest.execute() waitForZoneOperation(snapshotResponse, project, diskZone) print ("snapshot completed") # delete the disk print ("deleting disk " + diskName) deleteRequest = compute.disks().delete(project=project, zone=diskZone, disk=diskName) deleteResponse = deleteRequest.execute() waitForZoneOperation(deleteResponse, project, diskZone) print ("disk " + diskName + " was deleted") continue

    Esta seção do código é usada quando o disco tem usuários listados e lastDetachTimestamp está presente. Isso significa que o disco não está em uso agora, mas foi usado em algum momento. Nesse caso, a função do Cloud cria um snapshot do disco para reter os dados e depois exclui o disco.

  4. No Cloud Shell, clique em Abrir editor e edite o arquivo main.py.

Observação: se solicitado, clique em Abrir em uma nova janela.
  1. Acesse gsp648/unattached-pd.

  2. Abra o main.py.

  3. Edite a linha 15 do arquivo e substitua automating-cost-optimization pelo ID do projeto, que deve ser semelhante a:

    project = 'qwiklabs-gcp-b5dbc291a25a68db'
  4. Selecione Arquivo > Salvar para salvar o arquivo.

Tarefa 5: implantar a função do Cloud

  1. No Cloud Shell, implante a função do Cloud (clique em Abrir terminal, se necessário):

    gcloud functions deploy delete_unattached_pds --trigger-http --runtime=python39 --region {{{project_0.default_region | Region}}} Observação: digite S quando for exibida a pergunta: Permitir invocações não autenticadas da nova função [delete_unattached_pds]? (S/N)? Observação: a implantação da função do Cloud pode levar de 2 a 5 minutos, dependendo da região.
  2. Capture o URL do gatilho da função do Cloud como uma variável de ambiente:

    export FUNCTION_URL=$(gcloud functions describe delete_unattached_pds --format=json --region {{{project_0.default_region | Region}}} | jq -r '.httpsTrigger.url')

Testar a tarefa concluída

Clique em Verificar meu progresso para conferir a tarefa realizada. Se você tiver implantado a função do Cloud, verá uma pontuação de avaliação.

Implante a função do Cloud

Tarefa 6: programar e testar a função do Cloud

  1. No Cloud Shell, crie um aplicativo do App Engine para usar o Cloud Scheduler:
gcloud app create --region={{{project_0.startup_script.app_region | REGION}}}
  1. No Cloud Shell, crie uma tarefa do Cloud Scheduler para executar a função do Cloud às 2h todos os dias:

    gcloud scheduler jobs create http unattached-pd-job \ --schedule="* 2 * * *" \ --uri=$FUNCTION_URL \ --location=$REGION

Testar a tarefa concluída

Clique em Verificar meu progresso para conferir a tarefa realizada. Se você tiver criado uma tarefa do Cloud Scheduler para executar a função do Cloud, verá uma pontuação de avaliação.

Crie uma tarefa do Cloud Scheduler para executar a função do Cloud
  1. Acione o job manualmente para testar:

    gcloud scheduler jobs run unattached-pd-job \ --location=$REGION
  2. Confirme se o snapshot do disco órfão foi criado:

    gcloud compute snapshots list

    O resultado será assim:

    NAME DISK_SIZE_GB SRC_DISK STATUS orphaned-disk1560455894 500 {{{project_0.default_zone | Zone}}}/disks/orphaned-disk READY
  3. Confirme se o disco não utilizado e o órfão foram excluídos:

    gcloud compute disks list

    O resultado será assim:

    NAME LOCATION LOCATION_SCOPE SIZE_GB TYPE STATUS disk-instance {{{project_0.default_zone | Zone}}} zone 10 pd-standard READY

Testar a tarefa concluída

Clique em Verificar meu progresso para conferir a tarefa realizada. Se você testou corretamente o job com o acionamento manual, verá uma pontuação de avaliação.

Acione o job manualmente para testar

Parabéns!

Neste laboratório, você concluiu as seguintes tarefas:

  • Criar dois discos permanentes
  • Criar uma VM que usa um dos discos
  • Desconectar o disco da VM
  • Revisar o código da função do Cloud
  • Implantar a função do Cloud
  • Testar a função do Cloud usando jobs do Cloud Scheduler

Termine a Quest

Este laboratório autoguiado faz parte da Quest Optimizing your Google Cloud Costs. Uma Quest é uma série de laboratórios relacionados que formam um programa de aprendizado. Ao concluir uma Quest, você ganha um selo como reconhecimento da sua conquista. Você pode publicar os selos com um link para eles no seu currículo on-line ou nas redes sociais. Inscreva-se nesta Quest ou em outra que tenha este laboratório para receber os créditos de conclusão imediatamente. Consulte o catálogo do Google Cloud Ensina para ver todas as Quests disponíveis.

Comece o próximo laboratório

Continue sua Quest com o laboratório Níveis de rede: como otimizar os gastos com rede ou confira estas sugestões:

Treinamento e certificação do Google Cloud

Esses treinamentos ajudam você a aproveitar as tecnologias do Google Cloud ao máximo. Nossas aulas incluem habilidades técnicas e práticas recomendadas para ajudar você a alcançar rapidamente o nível esperado e continuar sua jornada de aprendizado. Oferecemos treinamentos que vão do nível básico ao avançado, com opções de aulas virtuais, sob demanda e por meio de transmissões ao vivo para que você possa encaixá-las na correria do seu dia a dia. As certificações validam sua experiência e comprovam suas habilidades com as tecnologias do Google Cloud.

Manual atualizado em 20 de outubro de 2023

Laboratório testado em 20 de outubro de 2023

Copyright 2024 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de produtos e empresas podem ser marcas registradas das respectivas empresas a que estão associados.