Como adicionar espaço à sua instância existente do Mongodb

Temos instância Mongodb com array RAID-10 com volumes lógicos. Poucos dias atrás, chegamos ao ponto em que deveríamos expandi-lo ou remodelar toda a instância. Já que não planejamos entrar na replicação do mongodb, já que nosso único nó pode atender à nossa demanda por enquanto. Pensamos em adicionar mais alguns discos.

Então, aqui estão as etapas que seguimos para adicionar novo espaço em nossa instância atual:

  1. Criou pela primeira vez mais 4 EBS a partir do console AWS (com 200 GB + IOPS 600)
  2. Manteve backup para unidades existentes (não posso apostar na incerteza)
  3. Anexado 4 novos EBS com instância Mongodb EC2
  4. Faça login na instância do Mongodb
  5. Nova matriz RAID-10 criada
  6. Unidade Física Criada
  7. Grupo de volume estendido
  8. Novo Espaço Alocado
  9. Sistema de arquivos estendido para utilizar novo espaço
  10. Verificado e concluído!

Criou pela primeira vez mais 4 EBS a partir do console AWS (com 200 GB + IOPS 600)

Acabei de criar mais 4 drives EBS na página AWS Volumes. Definimos 200 GB com IOPS 600. Em seguida, os anexamos com Mongodb EC2 Instance.

Manteve backup para unidades existentes (não posso apostar na incerteza)

Você pode tirar fotos do console da AWS ou usar ferramentas de linha de comando. Verifique o status no console da AWS. Demora um pouco com base no tamanho do armazenamento.

Anexado 4 novos EBS com instância Mongodb EC2

Anexe seus 4 volumes EBS recém-criados e atribua um nome que você pode chamar mais tarde. Usamos / dev / sdn1 a 4. Mas esses foram renomeados para / dev / xvdn1-4 pelo próprio sistema. Atualize o console da AWS apenas para garantir que você se conectou a todos eles.

Faça login na instância do Mongodb

$ssh your-server-address

Nova matriz RAID-10 criada

Vamos nomear este novo array / dev / md1 porque nosso primeiro array foi nomeado / dev / md0

Basta executar o seguinte comando –

$ sudo mdadm --verbose --create /dev/md1 --level=10 --chunk=256 --raid-devices=4 /dev/xvdn1 /dev/xvdn2 /dev/xvdn3 /dev/xvdn4

Portanto, isso deve ser feito sem nenhum erro (se todos os seus volumes estiverem ok). Você pode executar o seguinte código para ver os detalhes –

$ sudo mdadm --detail /dev/md1

Adicionar nova matriz ao arquivo de configuração mdadm –

$ echo 'DEVICE /dev/xvdn1 /dev/xvdn2 /dev/xvdn3 /dev/xvdn4' | sudo tee -a   /etc/mdadm/mdadm.conf
$ sudo mdadm
--detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

Unidade Física Criada

Com base no tutorial do mongodb, é assim que a leitura antecipada é configurada –

$ sudo blockdev --setra 128 /dev/md1
$ sudo blockdev
--setra 128 /dev/xvdn1
$ sudo blockdev
--setra 128 /dev/xvdn2
$ sudo blockdev
--setra 128 /dev/xvdn3
$ sudo blockdev
--setra 128 /dev/xvdn4

Defina zero para os primeiros 512 bytes do primeiro bloco.

$ sudo dd if=/dev/zero of=/dev/md0 bs=512 count=1

Agora, finalmente, crie uma unidade física –

$ sudo pvcreate /dev/md1

Grupo de volume estendido

Temos uma nova unidade física, agora podemos anexá-los ao nosso grupo de volume existente.

$ sudo vgextend vg0 /dev/md1

Novo Espaço Alocado

$ sudo vgs

Verifique quanto espaço não alocado (VFree) está listado. Em nosso caso, conseguimos cerca de 400 GB de espaço para alocar. Precisamos expandir nossas partições / dados existentes, / log e / journal.

Você pode usar% GRÁTIS se quiser alocar por porcentagem ou pode definir um número específico. Terminamos com%, então vamos mostrar que sim.

$ sudo lvextend /dev/vg0/data -l +80%FREE
$ sudo lvextend
/dev/vg0/journal -l +10%FREE
$ sudo lvextend
/dev/vg0/log -l +10%FREE

E manteve poucos espaços como não alocados para que possamos utilizá-los no futuro.

Sistema de arquivos estendido para utilizar novo espaço

Desmontar do sistema –

$ sudo umount /data

Verifique as partições se tudo estiver bem –

$ sudo e2fsck -f /dev/vg0/data

Redimensione a partição com o seguinte comando – (Isso deve utilizar todo o espaço disponível no volume)

$ sudo resize2fs -p /dev/vg0/data

Continue este processo para todas as suas partições. Depois de terminar, monte todos os dispositivos.

$ sudo mount /data

Nota: Caso você não consiga desmontar algum dispositivo, você pode tentar –

$ lsof | grep /log

E termine o processo que o está prendendo, Agora tente desmontar.

Verificado! & Feito!

Agora vamos verificar quanto espaço de armazenamento você tem.

$ df -h

Isso é tudo 🙂

A propósito, segui a maioria das instruções de – http://docs.mongodb.org/ecosystem/tutorial/install-mongodb-on-amazon-ec2/#install-mongodb-on-amazon-ec2 e mais tarde a partir daqui – http: //pubmem.wordpress.com/2010/09/16/how-to-resize-lvm-logical-volumes-with-ext4-as-filesystem/

Graças a eles 🙂

Postado novamente em meu blog pessoal – http://we4tech.wordpress.com/2013/07/19/how-to-add-space-to-your-existing-mongodb-instance/