Hoje tive a experiência de aumentar um LVM com RAID0 na AWS, a situação foi que um PostgreSQL warm-standby parou de funcionar em função de não ter mais espaço no PGDATA para consumir WALs, então o pg_standby caiu.
Detalhes da situação:
1 - Instância apenas com uma tablespace;
2 - Sistema de arquivos em XFS;
3 - 3 discos dedicados para o PGDATA em RAID0.
Não vou dar grandes explicações, vamos ao procedimento:
1 - Adição do novo disco e vinculação a instância na Amazon;
2 - Adição do novo disco no array do RAID(mdadm --detail /dev/md0 ; mdadm --grow /dev/md0 --raid-devices=3 --add /dev/xvdi);
Observe que no parâmetro '--raid-devices' você tem que preencher o número de discos/partições que seu RAID será composto. Em caso de dúvida rode um 'cat /proc/mdstat'.
IMPORTANTE: Considere neste passo o nível de RAID, pois alguns tipos de RAID não podem crescer sem que o novo disco fique em spare, então se este caso é o seu minha sugestão é criar um novo array de RAID e depois vincular ao LVM, claro que para isso você precisará de mais discos.
3 - Desativar o LVM(umount /var/lib/pgsql/data/ ; swapoff -a ; lvchange -an /dev/vg_dados/lv_swap ; lvchange -an /dev/vg_dados/lv_pgdata);
Aqui desativei o LV do swap também, pois no mesmo LVM está a swap do sistema operacional, talvez isso não se aplica ao seu caso.
4 - Aguardar até que o novo disco seja sincronizado com os demais(watch -n1 "mdadm --detail /dev/md0);
Com este comando você verá o percentual de execução do sincronismo do novo disco do RAID, quando todos estiverem sincronizados vá para o passo 8.
Mentira, é o 5.
5 - Após fazer um resize do LVM(pvresize /dev/md0 ; vgextend vg_dados /dev/md0 ; lvextend -L+120G /dev/vg_dados/lv_pgdata ; lvchange -ay /dev/vg_dados/lv_pgdata ; lvchange -ay /dev/vg_dados/lv_swap ; swapon -a);
Aqui estou fazendo um resize no PV e LV, no parâmetro '-L' utilize o tamanho do seu novo HD do RAID.
6 - Aumentar o XFS(xfs_growfs /dev/mapper/vg_dados-lv_pgdata );
Como meu sistema de arquivos é XFS utilizei o comando acima.
7 - Reparar o XFS(xfs_repair -v /dev/mapper/vg_dados-lv_pgdata ; mount -a);
Quando tentei iniciar o PostgreSQL sem executar o passo atual, o pg_ctl retornou que não conseguia gravar o 'postmaster.pid' em função da estrutura não estar limpa, então procurando na Internet descobri que era coisa do sistema de arquivos, o comando corrente resolveu o problema.
8 - Aguardar o PostgreSQL consumir os WALs(tail -f /var/log/pgsql.log);
Chegou a hora de subir o PGSQL, se tudo deu certo é só alegria. Que foi o meu caso, tomara que seja o seu leitor.