Não consigo inicializar depois de converter raiz lvm2 em lvm2 raid1

4

Eu tenho o Ubuntu 12.10 (sem atualizações, kernel 3.5.0-17-generic) no primeiro HDD (sda), que usa o MBR e foi particionado como "Use whole disk for ubuntu" com o LVM2 ativado. O sistema de arquivos raiz está no LVM2 (VG: ubuntu). Hoje adicionei o segundo HDD (sdb) com o mesmo tamanho, particionei como primeiro hdd, criei o lvm2 PV e converti o root LV para o raid1:

pvcreate /dev/sdb5
vgextend ubuntu /dev/sdb5
lvconvert --type raid1 -m1 /dev/ubuntu/root /dev/sdb5

Após 100% de ressincronização, reiniciei e o initramfs não conseguiu encontrar o root fs:

Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
... (kernel messages)
Gave up waiting for root device. Common problems:
 - Boot args (cat /proc/cmdline)
   - Check rootdelay= (did the system wait long enough?)
   - Check root= (did the system wait for the right device?)
 - Missing modules (cat /proc/modules; ls /dev)
ALERT!  /dev/mapper/ubuntu-root does not exist.  
Dropping to a shell!

Há uma lista de módulos:

(initramfs) cat /proc/modules
hid_generic
usbhid
hid
e1000
raid10
raid456
async_pq
async_xor
xor
async_memcpy
async_raid6_recov
raid6_pq
async_tx
raid1
raid0
multipath
linear
(initramfs) cat /proc/cmdline
BOOT_IMAGE=/vmlinux-3.5.0-17-generic root=/dev/mapper/ubuntu-root ro
(initramfs) ls /dev/mapper
control     ubuntu-swap_1

Existe uma saída do utilitário lvm :

lvm> pvscan
  PV /dev/sda5    VG ubuntu   lvm2 [ 13.76 GiB / 408.00 MiB free]
  PV /dev/sdb5    VG ubuntu   lvm2 [ 13.76 GiB / 508.00 MiB free]
lvm> vgscan
  Reading all physical volumes. This may take a while...
  Found volume group "ubuntu" using metadata type lvm2
lvm> lvscan
  inactive        '/dev/ubuntu/root' [13.26 GiB] inherit
  ACTIVE          '/dev/ubuntu/swap_1' [100.00 MiB] inherit

lvm> lvdisplay ubuntu
  --- Logical volume ---
  LV Path                /dev/ubuntu/root
  LV Name                root
  VG Name                ubuntu
  LV UUID                xxxxxxxxxxxxxxx
  LV Write Access        read/write
  LV Creation host, time ubuntu, 2013-05-07
  LV Status              NOT available          <<<<< !!!!
  LV Size                13.26 GB
  Current LE             3394
  Mirrored volumes       2
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto

E lvchange -ay ubuntu falha:

lvm>  lvchange -ay ubuntu
  /sbin/modprobe failed: 1
  Can't process LV root: raid1 target support missing from kernel?

O que está faltando no initrd?

    
por osgx 07.05.2013 / 16:22

2 respostas

5

Eu acertei esse mesmo problema no meu sistema Debian; ele foi causado por alguns módulos necessários que não foram instalados no initramfs.

Especificamente, depois de adicionar essas linhas ao / etc / initramfs-tools / modules:

dm_mirror
dm_raid
dm_region_hash

e executando

update-initramfs -u -k all

meu sistema inicializa corretamente.

Note que não verifiquei se todas essas linhas são realmente necessárias. Eu acho que o módulo dm_raid está ausente por padrão pelo menos.

Após uma busca mais aprofundada, há um bug do Debian aberto contra o initramfs-tools sobre este problema: link

    
por Sami Liedes 26.07.2013 / 23:48
2

Outra opção é usar o tipo mirror em vez do raid1 . Isso deve funcionar por padrão, até o grub2 suporta. Então, ao invés de

lvconvert --type raid1 -m1 /dev/ubuntu/root /dev/sdb5

faça isso:

lvconvert --type mirror -m1 /dev/ubuntu/root /dev/sdb5

(Você não precisa especificar sdb5 no final, o LVM escolherá um PV adequado para colocar o espelho.)

No entanto, o tipo de espelho tem uma grande desvantagem, ele só é lido a partir do primeiro dispositivo, portanto, você não obterá a velocidade de desempenho de leitura esperada do RAID1.

    
por tobias.pal 04.01.2016 / 10:25

Tags