Volumes de troca de armazenamento de instâncias - Amazon Elastic Compute Cloud

Volumes de troca de armazenamento de instâncias

O espaço de troca no Linux pode ser usado quando um sistema precisa de mais memória que a que foi alocada fisicamente. Quando o espaço de troca está habilitado, os sistemas Linux podem mudar páginas da memória física usadas infrequentemente para espaço de troca (uma partição dedicada ou um arquivo de troca em um sistema de arquivos existente) e liberar esse espaço para páginas de memória que exigem acesso de alta velocidade.

nota

O uso do espaço de troca para paginação de memória não é tão rápido ou eficiente quanto usar a RAM. Se a workload estiver paginando a memória regularmente no espaço de troca, é necessário considerar migrar para um tipo de instância maior com mais memória RAM. Para obter mais informações, consulte Alterar o tipo de instância.

Os tipos de instância c1.medium e m1.small têm uma quantidade limitada de memória física para trabalhar e recebem um volume de troca de 900 MiB no momento do lançamento para atuar como memória virtual para AMIs do Linux. Embora o kernel do Linux veja esse espaço de troca como uma partição no dispositivo raiz, ele é na verdade um volume separado para armazenamento de instâncias, independentemente do tipo de dispositivo raiz.

O Amazon Linux habilita e usa automaticamente esse espaço de troca, mas a AMI pode exigir algumas etapas adicionais para reconhecer e usar esse espaço de troca. Para ver se a instância está usando o espaço de troca, é possível usar o comando swapon -s.

[ec2-user ~]$ swapon -s Filename Type Size Used Priority /dev/xvda3 partition 917500 0 -1

A instância acima tem um volume de troca de 900 MiB anexado e habilitado. Se você não vir um volume de troca listado com esse comando, será possível precisar habilitar o espaço de troca para o dispositivo. Verifique os discos disponíveis usando o comando lsblk.

[ec2-user ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda1 202:1 0 8G 0 disk / xvda3 202:3 0 896M 0 disk

Aqui, o volume de troca xvda3 está disponível para a instância, mas não está habilitado (observe que o campo MOUNTPOINT está vazio). É possível habilitar o volume de troca com o comando swapon.

nota

Você precisa preceder /dev/ ao nome do dispositivo listado pelo lsblk. Seu dispositivo pode ter um nome diferente, como sda3, sde3 ou xvde3. Use o nome do dispositivo de seu sistema no comando abaixo.

[ec2-user ~]$ sudo swapon /dev/xvda3

Agora o espaço de troca deve ser mostrado na saída do lsblk e do swapon -s.

[ec2-user ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda1 202:1 0 8G 0 disk / xvda3 202:3 0 896M 0 disk [SWAP] [ec2-user ~]$ swapon -s Filename Type Size Used Priority /dev/xvda3 partition 917500 0 -1

Também será necessário editar o arquivo /etc/fstab para que esse espaço de troca seja habilitado automaticamente em cada inicialização do sistema.

[ec2-user ~]$ sudo vim /etc/fstab

Acrescente a linha a seguir ao arquivo /etc/fstab (usando o nome do dispositivo de troca de seu sistema):

/dev/xvda3 none swap sw 0 0
Para usar um volume de armazenamento de instâncias como espaço de troca

Qualquer volume de armazenamento de instâncias pode ser usado como espaço de troca. Por exemplo, o tipo de instância m3.medium inclui um volume de armazenamento de instâncias SSD de 4 GB que é adequado para o espaço de troca. Se o volume de armazenamento de instâncias for muito maior (por exemplo, 350 GB), será possível considerar particionar o volume com uma partição de troca menor de 4 a 8 GB e o restante para um volume de dados.

nota

Esse procedimento se aplica apenas a tipos de instância que oferecem suporte ao armazenamento de instâncias. Para obter uma lista dos tipos de instâncias compatíveis, consulte Volumes de armazenamento de instâncias.

  1. Liste os dispositivos de blocos anexados à instância para obter o nome do dispositivo de seu volume de armazenamento de instâncias.

    [ec2-user ~]$ lsblk -p NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT /dev/xvdb 202:16 0 4G 0 disk /media/ephemeral0 /dev/xvda1 202:1 0 8G 0 disk /

    Neste exemplo, o volume de armazenamento de instâncias é /dev/xvdb. Como essa é uma instância do Amazon Linux, o volume de armazenamento de instâncias está formatado e montado em /media/ephemeral0. Nem todos os sistemas operacionais Linux fazem isso automaticamente.

  2. (Opcional) Se o volume de armazenamento de instâncias está montado (ele é listado como um MOUNTPOINT na saída do comando lsblk), você precisa desmontá-lo com o comando a seguir.

    [ec2-user ~]$ sudo umount /dev/xvdb
  3. Configure uma área de troca do Linux no dispositivo com o comando mkswap.

    [ec2-user ~]$ sudo mkswap /dev/xvdb mkswap: /dev/xvdb: warning: wiping old ext3 signature. Setting up swapspace version 1, size = 4188668 KiB no label, UUID=b4f63d28-67ed-46f0-b5e5-6928319e620b
  4. Habilite o novo espaço de troca.

    [ec2-user ~]$ sudo swapon /dev/xvdb
  5. Verifique se o novo espaço de troca está sendo usado.

    [ec2-user ~]$ swapon -s Filename Type Size Used Priority /dev/xvdb partition 4188668 0 -1
  6. Edite o arquivo /etc/fstab para que esse espaço de troca seja habilitado automaticamente em cada inicialização do sistema.

    [ec2-user ~]$ sudo vim /etc/fstab

    Se o arquivo /etc/fstab tiver uma entrada para /dev/xvdb (ou para/dev/sdb) altere-o para que corresponda à linha abaixo. Se ele não tiver uma entrada para esse dispositivo, adicione a linha a seguir no arquivo /etc/fstab (usando o nome do dispositivo de troca de seu sistema):

    /dev/xvdb none swap sw 0 0
    Importante

    Os dados do volume de armazenamento de instâncias são perdidos quando uma instância é interrompida ou hibernada. Isso inclui a formatação do espaço de troca do armazenamento de instâncias criadas em Passo 3. Se você parar e reiniciar uma instância que foi configurada para usar o espaço de troca de armazenamento de instâncias, deverá repetir a Passo 1 até a Passo 5 no novo volume de armazenamento de instâncias.