Pular para o conteúdo

Hoje eu comecei a configurar dois Dell PowerEdge 840 com 4 discos de 1 TB cada. Esses serão os meus novos servidores de backup aqui no trabalho. Estou usando DRBD para fazer com que o segundo seja o espelho do primeiro (RAID 1 over TCP/IP). Criei uma partição de 15 GB para receber o Debian Lenny e uni o resto do primeiro disco com os outros com LVM.

O problema ocorreu quando eu instalei e configurei o DRBD. Ao dar start, vejam a mensagem de erro:

gramado:/# /etc/init.d/drbd start
Starting DRBD resources:    [ d(backup) /dev/drbd0: Failure: (140) vmalloc() failed. Out of memory?

[backup] cmd /sbin/drbdsetup /dev/drbd0 disk /dev/gramado/backup /dev/gramado/backup internal –set-defaults –create-device  failed – continuing!

n(backup) ].
gramado:/#

Bem, o problema parece claro: vmalloc() failed. É o seguinte (resumo): o kernel pode alocar espaço para uso na memória física ou na virtual. Para a memória física ele usa kmalloc. Para memória virtual (RAM + swap) ele usa vmalloc. A literatura especializada diz que é raro usar vmalloc. No entanto, encontrei isto:

kmalloc is limited in the size of buffer it can provide: 128 KBytes. If you need a really big buffer, you have to use vmalloc or some other mechanism like reserving high memory at boot.

Fonte: STACK OVERFLOW. What is the difference between vmalloc and kmalloc?. Disponível em http://stackoverflow.com/questions/116343/what-is-the-difference-between-vmalloc-and-kmalloc. Acesso em 14 jul. 09.

No caso do meu problema com o DRBD, dei uma olhada no vmalloc com o comando # cat /proc/meminfo. No resultado, observei o seguinte:

VmallocTotal:   114680 kB
VmallocUsed:      2344 kB
VmallocChunk:   111928 kB

Conclusão: se tinha cerca de 112 MB e ele só usou 2.3 MB e ainda disse que faltou memória, então 112 MB era pouco. Agora, como fazer para aumentar o vmalloc? Uma rápida olhadinha no Google mostrou como. É só editar o menu.lst do GRUB. No meu caso, a linha referente ao kernel que estou usando ficou assim (para 160 MB de vmalloc):

kernel          /boot/vmlinuz-2.6.26-2-686 root=/dev/sda1 ro quiet vmalloc=160m

É isso. Problema resolvido. Veja:

gramado:~# cat /proc/meminfo


VmallocTotal:   147448 kB
VmallocUsed:    121272 kB
VmallocChunk:    25844 kB

gramado:~# /etc/init.d/drbd start
Starting DRBD resources:    [ d(backup) n(backup) ].
gramado:~#

Marcações:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

14 − 2 =