Volumes


Sobre os volumes

Volumes são o armazenamento de blocos (semelhante aos SAN LUNs) que podem ser anexados às suas instâncias. Os volumes podem ter qualquer tamanho e podem ser de categorias diferentes, com desempenho e custo diferentes, dependendo da configuração de armazenamento da nuvem - o armazenamento em HDD e SSD são exemplos dessas categorias.

Uma característica importante de um volume é que, embora possa ser vinculado a uma instância específica ou não a nenhuma, ele não pertence a uma instância. Portanto, é muito fácil desvincular um volume de uma instância e vincular a outra, por exemplo, para mover grande quantidade de dados entre as instâncias. Além disso, quando você exclui uma instância, seus volumes não serão excluídos automaticamente e podem ser reutilizados posteriormente.


Criação de volume

Ao criar um volume, você precisa fazer várias escolhas:

  1. Você pode criar um novo volume (vazio), um volume de um instantâneo de volume existente ou um volume de uma imagem. Um volume vazio ainda não conterá nenhum sistema de arquivos ou dados - portanto, antes que você possa usá-lo, ele precisará ser formatado com um sistema de arquivos adequado, suportado pelo sistema operacional destino. Se o volume for criado a partir de um instantâneo, ele conterá os dados que estavam no volume original no momento em que o instantâneo de origem foi criado. Um volume inicializável é geralmente criado a partir de uma imagem - esse volume copia o conteúdo da imagem (normalmente um sistema operacional pré-instalado). Volumes inicializáveis são comumente usados para criar uma instância com um volume de inicialização.
  2. Se disponível na sua nuvem, você pode escolher mais de uma categori de volume, com desempenho e custo diferentes. Você pode escolher a categoria no momento da criação do volume - observe que isso não pode ser facilmente alterado posteriormente sem a migração de dados (por exemplo, anexando ambos os volumes a uma instância do Linux e executando o comando dd para copiar os dados, bloco por bloco).
  3. Especifique o tamanho do volume (em GB). Se necessário, é fácil aumentar o tamanho do volume posteriormente.

Vinculando um volume a uma instância

Para vincular um volume à sua instância, faça o seguinte:

  • Selecione o volume a ser vinculado.
  • Selecione uma instância à qual vincular o volume e clique em "Vincular"

As etapas finais devem ser feitas dentro da instância. Se o volume estava vazio antes, você precisará criar um sistema de arquivos antes de montá-lo - formate-o usando Gerenciamento de disco no Windows ou um comando como mkfs.ext4 no Linux. Se o volume já tiver sido usado anteriormente, essa etapa deverá ser omitida (a criação do sistema de arquivos destruirá todo o conteúdo anterior do volume, portanto, use com cuidado).

Enquanto normalmente é muito fácil localizar o volume no Windows, pode não ser tão óbvio no Linux. Os volumes anexados recebem seus nomes atribuídos como /dev/vda (que seria o volume de inicialização, se usado),/dev/vdb (primeiro volume anexado), /dev/vdc e assim por diante. O nome usado para o volume específico da instância, quando vinculado, também pode ser visto nas propriedades do volume.

O último passo seria montar o volume (ou atribuir uma letra de unidade no Windows). No Linux, para garantir que o sistema de arquivos ainda estará acessível após o reinício da instância, você precisará adicioná-lo à configuração da instância como fstab.

Observe que não há suporte para vincular volumes a várias instâncias ao mesmo tempo.


Redimensionando um volume

Como um volume vinculado não pode ser redimensionado, é necessário desanexá-lo de uma instância primeiro. Além disso, embora não seja imposto pela plataforma, é uma boa ideia desmontar o volume dentro da instância antes de desvinculá-lo, para garantir que ele esteja em um estado limpo e consistente.

Para redimensionar um volume, clique "Redimensionar " no menu de contexto do portal no volume que você deseja redimensionar e especifique o novo tamanho do volume. O tamanho deve ser maior que o tamanho existente (portanto, você só pode aumentar o tamanho do volume).

Depois disso, conecte o volume novamente à instância. Se você simplesmente montá-lo novamente, não verá o tamanho aumentado - portanto, é necessário redimensionar o sistema de arquivos primeiro para fazê-lo usar o novo espaço disponível. No Linux, isso é feito com o comando resize2fs (por exemplo,sudo resize2fs /dev/vdb). No Windows, vá para Gerenciamento de disco, clique com o botão direito do mouse no volume e selecione "Estender tamanho".


Sobre volumes inicializáveis

Quando uma instância é criada usando um volume inicializável (em vez de usar o disco de inicialização regular especificado pelo tipo da instância), esse volume conterá o sistema operacional e suas instruções de inicialização. O sistema operacional pode ser copiado de uma imagem (quando o volume é criado a partir de uma imagem) ou também instalado manualmente a partir de uma mídia de instalação, como imagem ISO. Um volume como esse é comercializado como "inicializável", diferente dos volumes regulares (que não são inicializáveis). Observe que quando a instância que usa um volume de inicialização é excluída, o volume não será excluído e deverá ser excluído manualmente se não for mais necessário.

Também é possível reutilizar um volume inicializável, com todos os dados, para uma nova criação de instância. Para criar com êxito essa instância, o volume inicializável deve conter um sistema operacional da criação da instância anterior.

Common scenarios to use bootable volumes include:

  • Changing root volume storage type (for example, if root volume gets on HDD by default, while you want to use SSD).
  • Image size exceeding storage limits specified in the flavor (when instance is boot from a volume, storage limitations on the root volume from the flavor are no longer relevant).
  • Persistence (you want the instance root disk to stay after instance itself is deleted).

Tipos de volume

Tipos de volume refere-se ao armazenamento em diferentes back-ends de hardware e / ou configurações diferentes de QoS, que resultam em desempenhos diferentes (e normalmente em preços diferentes). Por exemplo, um tipo de volume pode ser baseado em HDD e outro em SSD, fornecendo diferentes níveis de desempenho.

O tipo de volume é especificado no momento em que um volume é criado. Devido às especificidades da implementação do back-end de armazenamento, não é possível alterar o tipo de volume para um volume existente. Portanto, se o usuário precisar migrar um volume existente de um tipo para outro (por exemplo, para mover dados do HDD para o SSD com desempenho mais alto), será necessário criar um novo volume de tamanho igual, anexar ambos na mesma instância e copiar o conteúdo bloco a bloco de um para o outro, com um software como dd.


Instantâneos de volume

Um instantâneo de volume é um ponto de recuperação criado em um volume específico. Esse ponto de recuperação permite, posteriormente, acessar os dados do volume que existiam no momento em que o instantâneo foi criado. Por exemplo, você pode criar um instantâneo antes de implantar uma atualização grande ou atualizar um esquema de banco de dados - para no caso onde as coisas derem errado, seria possível recuperar os dados para o momento antes da modificação.

Ao contrário de um instantâneo de VM em muitos hipervisores, o instantâneo de volume não permite "reverter" um volume existente para o estado anterior. Em vez disso, esse instantâneo pode ser usado para criar um novo volume, usando o instantâneo como ponto de partida - o novo volume conterá os dados do instantâneo (observe que, nesse caso, o novo volume deve ter o mesmo tipo de volume do volume original usado como fonte).

Instantâneos de volume não devem ser confundidos com instantâneos de instância. Embora o nome seja semelhante, a implementação é diferente. Os instantâneos de instância existem como objetos separados (imagens) no repositório de imagens e serão preservados mesmo que a instância original tenha sido excluída. Os instantâneos de volumes existem apenas com o volume - se você excluir o volume, todas os instantâneos serão perdidas (na verdade, você não poderá excluir um volume que contenha instantâneos - neste caso, eles devem ser excluídos primeiro).

Os instantâneos de volume são incrementais - isso significa que, quando um novo instantâneo é criado, a base original do volume se torna somente leitura e todas as outras modificações de volume serão redirecionadas para a captura instantânea via CoW (Copy-on-Write). O tamanho da captura instantânea, originalmente zero, começará a aumentar e poderá atingir o tamanho máximo do volume (se todos os blocos nesse volume forem modificados).

Um volume pode conter vários instantâneos. Quando esse for o caso, as novas modificações serão armazenadas no instantâneo mais recente - todos os anteriores serão somente leitura. Se, no entanto, você excluir um snapshot intermediário, os snapshots na parte superior poderão depender das alterações armazenadas nesse snapshot - como resultado, enquanto o snapshot será excluído, um snapshot próximo ao excluído provavelmente aumentará de tamanho devido a mesclagem dos dados durante a operação de exclusão.

Criptografia de Volume

A criptografia de volume significa que os dados dentro do volume serão embaralhados e não poderão ser lidos por humanos sem uma chave/segredo de criptografia. A chave/segredo de criptografia é criada no momento da criação do volume criptografado, e o OpenStack através do Cinder/Barbican é responsável por gerenciar e armazenar as chaves/segredos com segurança, além disso, a criptografia dos volumes acontece de forma transparente para o cliente. De acordo com as recomendações do OpenStack e os padrões da indústria, a cifra de criptografia utilizada é um algoritmo AES-256.

Tanto os volumes quanto volumes inicializáveis criptografados são possíveis na plataforma selecionando o tipo de volume criptografado durante a criação do volume.

Quando você cria um volume criptografado e o anexa a uma instância, os seguintes dados são criptografados:

  • Dados em repouso dentro do volume
  • Todos os instantâneos criados a partir do volume
  • Todos os volumes criados a partir desses instantâneos