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/sdX1
vs 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?
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.
fonte
Eu não sei como ele funciona no VMware, mas o Redhat RHEV-M / RHEV-H é possível e suporta o RHEL 4.8 a 5.X e ao mesmo tempo para ganhar 2k3 R2 e ganhar 2k8. Para mais informações http://studyhat.blogspot.com/2010/05/rhev-for-servers-22-installation-and.html
fonte
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.
fonte
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, executeresize2fs /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.
fonte