Práticas recomendadas para servidores thin-provisioning Linux (no VMware)


9

Eu tenho uma configuração de cerca de 20 máquinas Linux, cada uma com cerca de 30 a 150 gigabytes de dados do cliente. Provavelmente, o tamanho dos dados aumentará significativamente mais rápido em algumas máquinas do que em outras. Essas são máquinas virtuais em um cluster do VMware vSphere. As imagens de disco são armazenadas em um sistema SAN.

Estou tentando encontrar uma solução que use espaço em disco com moderação, enquanto ainda permita o fácil crescimento de máquinas individuais.

Em teoria, eu apenas criaria discos grandes para cada máquina e usaria o provisionamento dinâmico. Cada disco aumentaria conforme necessário. No entanto, parece que um sistema de arquivos ext3 de 500 GB com apenas 50 GB de dados e um número bastante baixo de gravações ainda aumenta facilmente a imagem do disco, por exemplo. 250 GB ao longo do tempo. Ou talvez eu esteja fazendo algo errado aqui? (Fiquei surpreso com o pouco que encontrei sobre o assunto com o Google. Aliás, não há nenhuma etiqueta de provisionamento dinâmico em serverfault.com.)

Atualmente, estou planejando criar discos grandes e com provisionamento thin - mas com um pequeno volume LVM neles. Por exemplo: um volume de 100 GB em um disco de 500 GB. Dessa forma, eu poderia aumentar com mais facilidade o volume LVM e o tamanho do sistema de arquivos, conforme necessário, mesmo online.

Agora, a pergunta real:

Existem maneiras melhores de fazer isso? (ou seja, aumentar o tamanho dos dados conforme necessário, sem tempo de inatividade).

As soluções possíveis incluem:

  • Usando um sistema de arquivos amigável de provisionamento dinâmico que tenta ocupar os mesmos pontos repetidamente, não aumentando o tamanho da imagem.

  • Encontrando um método fácil de recuperar espaço livre na partição (re-afinamento?)

  • Algo mais?

Uma pergunta bônus: se eu seguir o meu plano atual, você recomendaria a criação de partições nos discos ( pvcreate /dev/sdX1vs pvcreate /dev/sdX)? Eu acho que é contra as convenções usar discos brutos sem partições, mas facilitaria um pouco o crescimento dos discos, se isso for necessário. Tudo isso é apenas uma questão de gosto, certo?

Respostas:


7

Se eu entender corretamente o provisionamento dinâmico, isso poderá realmente causar problemas se você não estiver monitorando de perto o crescimento dos sistemas de arquivos VMFS e permitir que seus VMDKs preencham seus volumes VMFS. Você viu em seus testes que os discos thin provisioned tendem a aumentar para preencher seu espaço disponível rapidamente e que não podem recuperar espaço livre dentro do sistema operacional.

A outra opção é criar arquivos VMDK de tamanho suficiente para lidar com seu uso atual e picos esperados de crescimento e apenas adicionar mais arquivos VMDK à medida que o uso de dados do aplicativo aumenta. Novos arquivos VMDK podem ser adicionados ao vivo em uma VM, basta verificar novamente (eco "- - -"> / sys / class / scsi_host / host? / Scan). Você pode particionar o novo disco, adicioná-lo ao seu LVM e estender o sistema de arquivos ao vivo. Dessa forma, você sempre está ciente da quantidade de espaço alocado para cada uma das VMs e não pode executar acidentalmente seu VMFS sem espaço de dentro de um convidado.

Quanto a particionar ou não se o disco será usado apenas pelo LVM, eu particiono sempre. O particionamento do disco impede que quaisquer avisos sobre tabelas de partições falsas sejam exibidos quando a máquina é inicializada e deixa claro que o disco está alocado. É um pouco vodu, mas também inicio a partição em 64 para ajudar a garantir que a partição e o sistema de arquivos estejam alinhados com o armazenamento subjacente. É difícil detectar e categorizar, pois normalmente você não tem algo para comparar facilmente, mas se o sistema de arquivos do SO não estiver alinhado corretamente com o armazenamento subjacente, você poderá obter IOPS extras necessários para atender a solicitações que atendem a limites de bloco no armazenamento subjacente.


1
Obrigado pela ideia de adicionar novos arquivos vmdk (em vez de apenas aumentar os existentes).
tuomassalo

3

A melhor sugestão que posso pensar é criar uma configuração do LVM com volumes físicos, grupos de volumes e volumes lógicos e, em seguida, montar esses volumes lógicos como o sistema de arquivos da sua VM via iSCSI .

Isso permitirá redimensionar o volume lógico e, em seguida, tudo o que você precisa fazer é reiniciar o daemon iscsi e o software da máquina virtual, verificar se ele possui os novos parâmetros de tamanho e redimensionar o sistema de arquivos do convidado para corresponder.

O particionamento funcionaria como em um disco rígido padrão, assim como o LV pareceria ao convidado da máquina virtual.

Edit: não importa, tenho a falsa impressão de que você estava executando o vmware no linux, não o linux no vmware.



1

Sugestão diferente: configure um servidor de arquivos que conterá todos os seus dados de usuário.

É claro que esse servidor de arquivos deve ser gerenciado com o LVM para fins de gerenciamento de capacidade online.

Se desejar, você pode criar uma configuração ha (drbd + heartbeat) com uma cópia do seu servidor de arquivos na SAN e uma segunda cópia externa ou semelhante. (para os paranóicos)

Como seus clientes são baseados em Linux, você pode usar o NFS, que é considerado mais rápido que o Samba. Um FileServer permitirá uma estratégia de backup centralizada, bem como um monitoramento de uso de armazenamento centralizado. E em termos de sua pergunta de provisionamento dinâmico:

Crie sua configuração do LVM conforme desejado (no seu exemplo, 100 GB de LV em um PV de 500 GB, basta alterar os números correspondentes à soma de armazenamento necessária para as suas VMs). Expanda esse LV quando necessário, conforme planejado em cada VM separadamente. Mas faça isso UMA VEZ no seu servidor de arquivos. Cada vez que uma VM reduz seu uso de armazenamento, esse espaço fica disponível para todas as suas VMs ;-)

Use cotas no seu servidor de arquivos, se necessário ou desejado, para impedir que uma única VM preencha seu servidor de arquivos.


1

Você consegue expandir um volume sem desligar a máquina virtual usando-a? Geralmente faço isso, mas não sei como é a sua configuração de armazenamento ou como a VMware pode complicar as coisas. Se você puder, o que eu faria é isso

1) Não diminua a provisão. Faça de cada volume o tamanho que você acha que precisa. 2) Não use partições. Torne cada sistema de arquivos seu próprio volume. 3) Monitore o crescimento do sistema de arquivos para que você possa redimensionar volumes proativamente.

Quando chega a hora de aumentar um volume

1) Na sua SAN ou no VMware, faça o que for necessário para expandir o volume. 2) No Linux, execute echo 1 > /sys/block/EXAMPLE/device/rescan, onde EXEMPLO é o nome do dispositivo em / sys / block /. 3) No linux, execute resize2fs /dev/EXAMPLE, onde EXAMPLE é o nome do dispositivo em / dev.

Essa abordagem está funcionando bem para mim. Eu considerei sua abordagem com thin provisioning e LVM, e acho que funcionaria também.

Se você decidir seguir a rota LVM, recomendo não particionar os discos. Como você disse, não ter uma tabela de partição facilita o crescimento do disco virtual. Sem tabela de partição, você pode simplesmente executar pvresize e o linux reconhecerá que o volume físico aumentou. Com uma tabela de partição, é necessário desmontar todos os sistemas de arquivos, excluir a tabela de partições, recriar a tabela de partições e executar pvresize. Isso dá muito mais trabalho e requer tempo de inatividade.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.