Removendo o volume lógico sem confirmação

1

Estou escrevendo um script automatizado que removerá um volume lógico, mas não tenho 100% de certeza sobre como fazer isso. Parece que se deve usar o -f flag para lvremove , mas a documentação parece muito desleixada para me deixar confortável com isso:

-f|--force ...

Override various checks, confirmations and protections. Use with extreme caution.

O que são esses "vários cheques, confirmações e proteções"? Para mim, parece que há um risco de que eu esteja evitando outra coisa além da confirmação sobre a exclusão do volume.

    
por skyking 27.10.2018 / 12:43

2 respostas

1

Eu acho que seu maior risco é remover um volume que ainda está em uso de alguma forma. Ou seja if dmsetup info mostra um valor não igual a zero Open count .

# dmsetup info SSD-root | grep Open
Open count:        1

No entanto, neste caso, lvremove se recusará a operar.

# lvremove SSD/root
  Logical volume SSD/root contains a filesystem in use.

Mesmo com --force , ele ainda se recusa a apagá-lo (não tente fazer isso em casa).

# lvremove --force --yes --verbose SSD/root
    Device dm-33 (253:33) appears to be mounted on /.
  Logical volume SSD/root contains a filesystem in use.

Isso funciona mesmo se não for montado, apenas em uso de outra forma.

# lvcreate -n test -L100M SSD
# losetup --find --show /dev/SSD/test
# time lvremove SSD/test
  Logical volume SSD/test is in use.
real    0m4.816s
user    0m0.008s
sys 0m0.005s

Na verdade, isso é muito lento (5 segundos para essa chamada lvremove!), já que ele procura o ponto de montagem em todos os lugares, não encontra um, e continua verificando novamente a contagem aberta. Então é como "huh isso não está montado, então porque ainda está aberto".

Assim, para volumes regulares, acho que é razoavelmente seguro usar --force aqui; não força casos que são realmente perigosos. A manpage sugere até mesmo o uso de força na seção de exemplos. No entanto, eu não testei o que acontece no caso de snapshot, cache e outros volumes especiais.

    
por 27.10.2018 / 13:43
0

A página man do lvremove também oferece --yes , que declara

Do not prompt for confirmation interactively but always assume the answer yes.

Isso deve evitar que você precise usar --force (com todas as suas verificações e contrapesos não especificados) enquanto ainda pode ter o volume removido programaticamente.

(Eu sei que não abordei as proteções que --force remove. Eu ofereci uma alternativa que acredito que atenderá aos seus requisitos subjacentes. Não sinta que você tem que aceitar essa resposta se realmente quiser saber sobre --force .)

    
por 27.10.2018 / 12:51

Tags