Dados meta do LVM ausentes de um dispositivo

1

Aqui está a situação. Eu tenho um dispositivo MD, / dev / md0, que é totalmente funcional, mas parece não ter metadados LVM. No que diz respeito a tudo o que sei fazer, não faz parte de um grupo de volumes e não aparece como um volume físico. Por outro lado, é uma partição de inicialização e preenche essa função sem nenhum problema. Eu também posso falhar em um dos dispositivos nele e adicioná-lo novamente e ele reconstrói o array sem problemas. Por que então eu me importo? Bem, toda vez que eu atualizo o grub eu recebo um monte de mensagens de "erro: cabeçalho do metadado do LVM desconhecido". Isso não é um problema, mas está me incomodando.

Aqui estão alguns detalhes:

# uname -a
Linux redacted 3.9-1-amd64 #1 SMP Debian 3.9.6-1 x86_64 GNU/Linux

# pvck /dev/md0
Could not find LVM label on /dev/md0

# mdadm --detail --scan
ARRAY /dev/md/0 metadata=1.2 name=redacted:0 UUID=Stuff
ARRAY /dev/md/1 metadata=1.2 name=redacted:1 UUID=Stuff
ARRAY /dev/md/2 metadata=1.2 name=redacted:2 UUID=Stuff
# lvscan -v
Finding all logical volumes
ACTIVE            '/dev/vg01/home' [232.83 GiB] inherit
ACTIVE            '/dev/vg01/storage' [3.87 TiB] inherit
ACTIVE            '/dev/vg00/root' [59.53 GiB] inherit

# pvdisplay -v
Scanning for physical volume names
--- Physical volume ---
PV Name               /dev/md2
VG Name               vg01
PV Size               4.09 TiB / not usable 512.00 KiB
Allocatable           yes (but full)
PE Size               4.00 MiB
Total PE              1073097
Free PE               0
Allocated PE          1073097
PV UUID               Stuff
--- Physical volume ---
PV Name               /dev/md1
VG Name               vg00
PV Size               59.53 GiB / not usable 4.93 MiB
Allocatable           yes (but full)
PE Size               4.00 MiB
Total PE              15239
Free PE               0
Allocated PE          15239
PV UUID               Stuff

# cat /proc/mdstat 
Personalities : [raid1] [raid6] [raid5] [raid4] 
md2 : active raid5 sdc1[0] sdf1[3] sde1[2] sdd1[1]
      4395406848 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
md1 : active raid1 sda2[0] sdb2[1]
      62423992 blocks super 1.2 [2/2] [UU]
md0 : active raid1 sda1[2] sdb1[1]
      96244 blocks super 1.2 [2/2] [UU]
unused devices: <none>  

# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=1011774,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=810888k,mode=755)
/dev/mapper/vg00-root on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=1621760k)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
/dev/md0 on /boot type ext4 (rw,relatime,data=ordered)
/dev/mapper/vg01-home on /home type ext4 (rw,relatime,stripe=384,data=ordered)
/dev/mapper/vg01-storage on /storage type ext4 (rw,relatime,stripe=384,data=ordered)
rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)

# file -k -s /dev/md0 /dev/sda1 /dev/sdb1
/dev/md0:  sticky Linux rev 1.0 ext4 filesystem data, UUID=redacted (needs journal recovery) (extents) (huge files)
/dev/sda1: sticky Linux Software RAID version 1.2 (1) UUID=redacted name=redacted:0 level=1 disks=2
/dev/sdb1: sticky Linux Software RAID version 1.2 (1) UUID=redacted name=redacted:0 level=1 disks=2

Tem alguma maneira de corrigir isso ou devo simplesmente viver com ele?

    
por Calcipher 12.07.2013 / 17:28

1 resposta

4

Ao criar um PV em um dispositivo, o rótulo LVM fica (por padrão) no segundo setor 512B. Se o dispositivo é um disco inteiro no qual o grub deve ser instalado, então é exatamente onde o core.img do grub está. Os metadados do LVM, para os quais há, por padrão, uma cópia por disco, ficam após o rótulo, iniciando no quinto setor. (Uma segunda cópia opcional dos metadados pode ser localizada no final do disco.) Esse tamanho de metadados é padronizado para 255 setores. Você pode alterar o local padrão do rótulo para qualquer lugar nos quatro primeiros setores, usando a opção --labelsector para pvcreate , mas isso não parece suficiente, pois o core.img do grub parece precisar dos 62 setores imediatamente após o MBR . (O MBR ocupa o primeiro setor e contém o boot.img do grub.)

É possível fazer o chainload do grub, usando um gerenciador de inicialização no MBR para carregar o boot.img / core.img localizado em outro lugar no disco. Normalmente "em outro lugar" significaria no registro de inicialização do volume, o espaço antes da primeira partição e após o MBR + outros dados interferentes. O problema é que normalmente a seção de dados do PV começa imediatamente após a seção de metadados. Há uma opção --dataalignmentoffset para pvcreate que pode abrir espaço aqui, mas essa abordagem pode ser um exercício para o leitor.

Veja (grub2): link

Veja (lvm2): link

Eu sugeriria que a maneira de contornar isso, em vez de usar todo o dispositivo como um PV, é criar uma única partição em seu disco. Use isso como o PV para o LVM. Em seguida, o rótulo PV & LVM & os metadados estarão no início da partição, e não no início do disco. Isso deixará os 62 setores após o MBR (e antes da primeira partição) livres para core.img.

Eu adicionarei que o GPT lança uma chave inglesa nessas obras, que eu não começo a entender. [Ok, o comentário faz parecer fácil o suficiente.]

    
por 24.01.2014 / 09:54