LVM: “Não foi possível encontrar o dispositivo com o uuid”, mas o blkid localiza o UUID

4

Eu tenho um sistema SLES 11.2 PPC (3.0.58-0.6.6-ppc64) que perdeu o controle de seu grupo de volume (contendo LVs com dados que não são críticos, mas seria muito bom voltar). Os discos estão conectados por meio de dois caminhos de fibra de uma SAN.

O problema começou quando eu o reiniciei antes de uma queda de energia planejada na última sexta-feira. Eu não tive tempo para solucionar o problema antes de abaixá-lo novamente. O grupo de volume já havia sido usado com sucesso por cerca de dois anos.

vgscan e pvscan não retornam nada:

# pvscan -vP
Partial mode. Incomplete logical volumes will be processed.
 Wiping cache of LVM-capable devices
 Wiping internal VG cache
 Walking through all physical volumes
No matching physical volumes found
# vgscan -vP
Partial mode. Incomplete logical volumes will be processed.
  Wiping cache of LVM-capable devices
  Wiping internal VG cache
Reading all physical volumes.  This may take a while...
  Finding all volume groups
No volume groups found

O vgcfgrestore relata que não consegue encontrar os PVs:

# vgcfgrestore vgclients
Couldn't find device with uuid PyKfIa-cCs9-gBoh-Qb50-yOw4-dHQw-N1YELU.
Couldn't find device with uuid FXfSAO-P9hO-Dgtl-0Ihf-x2jX-TnHU-kSqUA2.
Cannot restore Volume Group vgclients with 2 PVs marked as missing.
Restore failed.

No entanto, o blkid pode encontrar esses UUIDs:

# blkid -t UUID=PyKfIa-cCs9-gBoh-Qb50-yOw4-dHQw-N1YELU
/dev/mapper/3600a0b800029df24000011084db97741: UUID="PyKfIa-cCs9-gBoh-Qb50-yOw4-dHQw-N1YELU" TYPE="LVM2_member" 
/dev/sdl: UUID="PyKfIa-cCs9-gBoh-Qb50-yOw4-dHQw-N1YELU" TYPE="LVM2_member" 
/dev/sdw: UUID="PyKfIa-cCs9-gBoh-Qb50-yOw4-dHQw-N1YELU" TYPE="LVM2_member" 
# blkid -t UUID=FXfSAO-P9hO-Dgtl-0Ihf-x2jX-TnHU-kSqUA2
/dev/mapper/3600a0b800029df24000017ae4f45f30b: UUID="FXfSAO-P9hO-Dgtl-0Ihf-x2jX-TnHU-kSqUA2" TYPE="LVM2_member" 
/dev/sdg: UUID="FXfSAO-P9hO-Dgtl-0Ihf-x2jX-TnHU-kSqUA2" TYPE="LVM2_member" 
/dev/sdr: UUID="FXfSAO-P9hO-Dgtl-0Ihf-x2jX-TnHU-kSqUA2" TYPE="LVM2_member" 

/etc/lvm/backup/vgclients tem todas as informações corretas e não diz que os PVs estão faltando:

# egrep "(N1YELU|kSqUA2|dm-|ALLOC)" /etc/lvm/backup/vgclients
                    id = "PyKfIa-cCs9-gBoh-Qb50-yOw4-dHQw-N1YELU"
                    device = "/dev/dm-7"    # Hint only
                    status = ["ALLOCATABLE"]
                    id = "FXfSAO-P9hO-Dgtl-0Ihf-x2jX-TnHU-kSqUA2"
                    device = "/dev/dm-12"   # Hint only
                    status = ["ALLOCATABLE"]

Confirmei no SAN que os volumes dedicados (e nomeados) para LVM neste servidor são apresentados e o identificador (termina em f30b ou 7741) corresponde na SAN e no servidor:

# multipath -ll | egrep -A5 "(f30b|7741)"
3600a0b800029df24000017ae4f45f30b dm-7 IBM,1814      FAStT
size=575G features='1 queue_if_no_path' hwhandler='1 rdac' wp=rw
|-+- policy='round-robin 0' prio=6 status=active
| '- 6:0:0:1   sdr  65:16  active ready running
'-+- policy='round-robin 0' prio=1 status=enabled
  '- 5:0:0:1   sdg  8:96   active ghost running
--
3600a0b800029df24000011084db97741 dm-12 IBM,1814      FAStT
size=834G features='1 queue_if_no_path' hwhandler='1 rdac' wp=rw
|-+- policy='round-robin 0' prio=6 status=active
| '- 5:0:0:7   sdl  8:176  active ready running
'-+- policy='round-robin 0' prio=1 status=enabled
  '- 6:0:0:7   sdw  65:96  active ghost running

Nenhum dos dispositivos tem uma tabela de partições (por design):

# fdisk -l /dev/dm-7 /dev/dm-12 | grep table
Disk /dev/dm-7 doesn't contain a valid partition table
Disk /dev/dm-12 doesn't contain a valid partition table

Eu posso ler diretamente dos dispositivos:

# dd if=/dev/dm-7 of=/tmp/a bs=1024 count=1
1+0 records in
1+0 records out
1024 bytes (1.0 kB) copied, 0.00121051 s, 846 kB/s
# strings /tmp/a
LABELONE
LVM2 001FXfSAOP9hODgtl0Ihfx2jXTnHUkSqUA2

Eu tentei reinicializar e também excluir sd(r|g|l|w) e dm-(7|12) e redigitalizar, sem efeito.

Eu tentei recriar o PV usando os valores de backup, mas ele ainda diz que não pode encontrá-los.

# pvcreate --uuid "PyKfIa-cCs9-gBoh-Qb50-yOw4-dHQw-N1YELU" --restorefile /etc/lvm/backup/vgclients /dev/mapper/3600a0b800029df24000011084db97741 -t
  Test mode: Metadata will NOT be updated and volumes will not be (de)activated.
  Couldn't find device with uuid PyKfIa-cCs9-gBoh-Qb50-yOw4-dHQw-N1YELU.
  Couldn't find device with uuid FXfSAO-P9hO-Dgtl-0Ihf-x2jX-TnHU-kSqUA2.
  Device /dev/mapper/3600a0b800029df24000011084db97741 not found (or ignored by filtering).

Aqui está o meu lvm.conf, embora, até onde sei, a única alteração que fiz foi aumentar o nível de log:

# egrep -v "^( *#|$)" /etc/lvm/lvm.conf
devices {
    dir = "/dev"
    scan = [ "/dev" ]
    preferred_names = [ ]
    filter = [ "a|^/dev/sda$|", "r/.*/" ]
    cache = "/etc/lvm/.cache"
    write_cache_state = 1
    sysfs_scan = 1      
    md_component_detection = 1
    ignore_suspended_devices = 0
}
log {
    verbose = 0
    syslog = 1
    overwrite = 0
    level = 2

    indent = 1
    command_names = 0
    prefix = "  "
}
backup {
    backup = 1
    backup_dir = "/etc/lvm/backup"
    archive = 1
    archive_dir = "/etc/lvm/archive"

    retain_min = 10
    retain_days = 30
}
shell {
    history_size = 100
}
global {

    umask = 077
    test = 0
    units = "h"
    activation = 1
    proc = "/proc"
    locking_type = 3
    fallback_to_clustered_locking = 1
    fallback_to_local_locking = 1
    locking_dir = "/var/run/lvm/lock"
}
activation {
    missing_stripe_filler = "/dev/ioerror"
    reserved_stack = 256
    reserved_memory = 8192
    process_priority = -18
    mirror_region_size = 512
    readahead = "auto"
    mirror_log_fault_policy = "allocate"
    mirror_device_fault_policy = "remove"

    udev_rules = 1
    udev_sync = 1
}
dmeventd {
    mirror_library = "libdevmapper-event-lvm2mirror.so"
    snapshot_library = "libdevmapper-event-lvm2snapshot.so"
}

Então, o que dá? Para onde foi o meu VG e como o recebo de volta?

    
por Chris 14.04.2013 / 22:43

3 respostas

3

Um documento na base de conhecimento da Novell parece aplicar-se aqui: explica que no SLES, o LVM, por padrão, não varre os dispositivos multipath e, assim, nunca os verá nessa situação.

Para resolver o problema, você pode implementar a solução alternativa que a Novell fornece:

Em /etc/lvm.conf na seção devices , altere o filter para:

filter = [ "a|/dev/sda.*|", "a|/dev/disk/by-id/dm-uuid-.*mpath-.*|", "r|.*|"]

(Isso é para o SLES 11. Para outras versões, consulte o artigo da KB ligado.)

    
por 15.04.2013 / 00:28
4
vgreduce --removemissing ajudou no meu caso quando eu estava tendo o mesmo problema.

Foi assim que criei este problema.

Eu ia estender um volume lógico existente, mas no meio de um outro terminal rodava o fdisk no dispositivo que seria usado para extensão. Ele tinha alguma tabela de partição anterior que eu pensei em excluir. Como eu já havia adicionado esse disco ao grupo de volumes (apenas não estendi o volume lógico em si ainda), mas esse volume físico não existia mais, então ocorreu o problema de falta do UUID.

Para resolver isso eu rand o vgreduce --removemissing e, em seguida, foi ok.

    
por 12.12.2014 / 06:33
0

Modifique o arquivo /etc/lvm/backup/<vg_name> . Corrigir o material bagunçado, especialmente remover os UUIDs ausentes.

Em seguida, execute:

vgcfgrestore <vg_name>
    
por 02.10.2018 / 17:05

Tags