Chamando lvcreate de dentro do contêiner trava

4

Eu corro um contêiner. Ele tem todos os recursos e monta todos os diretórios do root (exceto /proc ). Quando eu chamo lvcreate de dentro dele eu recebo:

# lvcreate -v -L104857600B -n vol1 default
Finding volume group "default"
Archiving volume group "default" metadata (seqno 17).
Creating logical volume vol1
Creating volume group backup "/etc/lvm/backup/default" (seqno 18).
Activating logical volume "vol1".
activation/volume_list configuration setting not defined: Checking only host tags for default/vol1
Creating default-vol1
Loading default-vol1 table (252:4)
Resuming default-vol1 (252:4)

E o comando trava. Eu também recebo isso em logs:

Sep 12 12:03:31 node3 systemd-udevd[12529]: Process '/sbin/dmsetup udevcomplete 23072978' failed with exit code 1

Se eu interromper com ctrl - C eu configurei que o volume lógico foi criado. Eu também posso interromper o comando emitindo dmsetup udevcomplete_all de dentro do mesmo contêiner. Se eu chamar o lvcreate no host, ele funcionará normalmente e sairá limpo.

Acredito que esse problema tenha algo a ver com o fato de os cookies do udev não serem compartilhados entre o contêiner e o host. Eu não tenho ideia, no entanto, o que exatamente é o lvm tentando fazer aqui e como consertar o problema.

Eu preciso disso para que o kubelet conteinerizado possa chamar o plugin flexvolume que seria capaz de alocar volumes lógicos.

    
por zefciu 13.09.2016 / 14:24

1 resposta

3

Eu vou dizer que você deve evitar usar udev neste caso. Isso é fácil de fazer com o LVM, e o LVM é totalmente capaz de lidar com volumes e dispositivos por conta própria.

Dentro do seu arquivo /etc/lvm/lvm.conf , você encontrará estas linhas:

udev_sync = 0

udev_rules = 0

Como eu os imprimi lá, ajuste esses valores para zero e veja se isso está claro. No mínimo, descarta udev . Você terá que colocar seus volumes off-line para fazer essa alteração, já que estará mudando de udev management para LVM management.

    
por 22.09.2016 / 11:46

Tags