Detecção de volume lógico lento

1

Estou enfrentando alguns problemas com o servidor de teste recentemente. Foi instalado há poucos dias e funcionou bem até ontem, quando não acordou após a reinicialização. O bootloader não encontrou o dispositivo root. Erro:

Gave up waiting for root device.
ALERT! /dev/mapper/vg_mru-lv_mru_root does not exists. dropping to shell!

Eu iniciei no shell de recuperação, dispositivos montados, chrooted no sistema e tudo correu bem, então eu só aumentou o rootdelay para 90s e reiniciei. Então funcionou para outro dia. Mas agora estou recebendo o mesmo erro, seguido por:

udevd[112]: worker [119] unexpectedly returned with status 0x0100
udevd[112]: worker[119] failed while handling '/devices/virtual/block/md0'
udevd[112]: worker [120] unexpectedly returned with status 0x0100
udevd[112]: worker[120] failed while handling '/devices/virtual/block/md1'

Se eu esperar por cerca de 5 minutos e, em seguida, gravar exit intramfs shell, a inicialização continuará normalmente e o computador ficará totalmente funcional.

Nas mensagens, há poucas dúzias dessas linhas:

Sep 30 21:58:48 mru-server kernel: [ 1038.291536] lost page write due to I/O error on dm-15

e

Sep 29 10:02:16 mru-server kernel: [    0.845246] ACPI Warning: Incorrect checksum in table [OEMB] - A4, should be 9F (20090903/tbutils-314)

O computador que executa o ubuntu 10.04, 2 discos 1TD, espelhado no raid1, dois dispositivos raid md0 e md1, cada um deles contém um grupo de volumes LVM. Ambos os discos passaram em curto s.m.a.r.t. teste. A memória também passou um memtest86 + pass. E foi testado por 24h dois dias atrás.

Bug do Debian # 583917 parece de alguma forma semelhante, mas o Ubuntu tem uma versão mais antiga do mdadm.

Outra coisa que eu suspeito é lvm. Quando eu faço cat / proc / modules no shell intramfs, existem dezenas de módulos raid, mas nenhum módulo lvm.

Eu posso fornecer dados adicionais se você precisar.

grub.cfg

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
  load_env
fi
set default="0"
if [ ${prev_saved_entry} ]; then
  set saved_entry=${prev_saved_entry}
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z ${boot_once} ]; then
    saved_entry=${chosen}
    save_env saved_entry
  fi
}

function recordfail {
  set recordfail=1
  if [ -n ${have_grubenv} ]; then if [ -z ${boot_once} ]; then save_env recordfail; fi; fi
}
insmod raid
insmod mdraid
insmod lvm
insmod ext2
set root='(vg_mru-lv_mru_usr)'
search --no-floppy --fs-uuid --set 48111d09-5c3d-48e4-be9d-0ab141c8cb4a
if loadfont /share/grub/unicode.pf2 ; then
  set gfxmode=640x480
  insmod gfxterm
  insmod vbe
  if terminal_output gfxterm ; then true ; else
    # For backward compatibility with versions of terminal.mod that don't
    # understand terminal_output
    terminal gfxterm
  fi
fi
insmod raid
insmod mdraid
insmod lvm
insmod ext2
set root='(vg_mru-lv_mru_boot)'
search --no-floppy --fs-uuid --set 4523fbba-a68d-413a-9606-c68094438879
set locale_dir=($root)/grub/locale
set lang=en
insmod gettext
if [ ${recordfail} = 1 ]; then
  set timeout=-1
else
  set timeout=10
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Ubuntu, with Linux 2.6.32-25-server' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod raid
    insmod mdraid
    insmod lvm
    insmod ext2
    set root='(vg_mru-lv_mru_boot)'
    search --no-floppy --fs-uuid --set 4523fbba-a68d-413a-9606-c68094438879
    linux   /vmlinuz-2.6.32-25-server root=/dev/mapper/vg_mru-lv_mru_root ro   rootdelay=90
    initrd  /initrd.img-2.6.32-25-server
}
menuentry 'Ubuntu, with Linux 2.6.32-25-server (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod raid
    insmod mdraid
    insmod lvm
    insmod ext2
    set root='(vg_mru-lv_mru_boot)'
    search --no-floppy --fs-uuid --set 4523fbba-a68d-413a-9606-c68094438879
    echo    'Loading Linux 2.6.32-25-server ...'
    linux   /vmlinuz-2.6.32-25-server root=/dev/mapper/vg_mru-lv_mru_root ro single 
    echo    'Loading initial ramdisk ...'
    initrd  /initrd.img-2.6.32-25-server
}
menuentry 'Ubuntu, with Linux 2.6.32-24-server' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod raid
    insmod mdraid
    insmod lvm
    insmod ext2
    set root='(vg_mru-lv_mru_boot)'
    search --no-floppy --fs-uuid --set 4523fbba-a68d-413a-9606-c68094438879
    linux   /vmlinuz-2.6.32-24-server root=/dev/mapper/vg_mru-lv_mru_root ro   rootdelay=90
    initrd  /initrd.img-2.6.32-24-server
}
menuentry 'Ubuntu, with Linux 2.6.32-24-server (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod raid
    insmod mdraid
    insmod lvm
    insmod ext2
    set root='(vg_mru-lv_mru_boot)'
    search --no-floppy --fs-uuid --set 4523fbba-a68d-413a-9606-c68094438879
    echo    'Loading Linux 2.6.32-24-server ...'
    linux   /vmlinuz-2.6.32-24-server root=/dev/mapper/vg_mru-lv_mru_root ro single 
    echo    'Loading initial ramdisk ...'
    initrd  /initrd.img-2.6.32-24-server
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
    insmod raid
    insmod mdraid
    insmod lvm
    insmod ext2
    set root='(vg_mru-lv_mru_boot)'
    search --no-floppy --fs-uuid --set 4523fbba-a68d-413a-9606-c68094438879
    linux16 /memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
    insmod raid
    insmod mdraid
    insmod lvm
    insmod ext2
    set root='(vg_mru-lv_mru_boot)'
    search --no-floppy --fs-uuid --set 4523fbba-a68d-413a-9606-c68094438879
    linux16 /memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

Obrigado por respostas!

Atenciosamente, Andraz

    
por overlord_tm 01.10.2010 / 13:25

4 respostas

1

Eu corri para este recentemente atualizando uma máquina do Ubuntu Januty para o Ubuntu Karmic. Eu também tinha 2 grupos de volumes, incluindo um com cerca de 20 volumes lógicos e um segundo com root e alguns instantâneos.

Meu problema foi adicionar apenas mais um instantâneo do LVM que aumentou o tempo de inicialização do subsistema LVM após o tempo que o kernel aguardava até que o sistema de arquivos raiz fosse disponibilizado.

A solução foi adicionar um parâmetro "rootdelay = 180" à linha do kernel em /boot/grub/menu.lst (essa é uma das razões pelas quais ainda estou usando o grub legado).

Isso tem o efeito de prolongar os tempos de inicialização, mas em um servidor de longa execução não acho isso um problema significativo.

    
por 11.11.2011 / 05:26
0

O seu disco S.M.A.R.T é capaz? Se sim, você poderia dar uma olhada? Parece uma falha no disco para mim. (Ou talvez falha de RAM)

    
por 01.10.2010 / 14:56
0

Eu acredito que o LVM tem que fazer algum tipo de GC quando os instantâneos estão envolvidos. Quando você removeu o teste LV em vg_virt, sobraram muitos instantâneos?

    
por 14.10.2011 / 19:50
0

OK, acho que resolvi isso.

Eu tenho dois grupos de volumes, vg_mru para o sistema host e vg_virt para sistemas virtuais. Eu tenho testado recentemente algumas funcionalidades de captura instantânea do LVM, incluindo a tentativa de sobrescrever instantâneos sobre sua capacidade. Eu ainda não tenho uma causa exata, mas a remoção de todos os volumes lógicos de teste em vg_virt resolveu isso.

    
por 01.10.2010 / 17:17

Tags