Não é possível criar um sistema de arquivos flakey para teste

4

No Ubuntu 14.04 quando tento:

sudo dmsetup create test --table '0 123 flakey 1 0 /dev/loop0'

(ou o delay target), recebo um erro:

  

mapeador de dispositivos: recarregar o ioctl no teste com falha: argumento inválido
  Comando falhou

Mas quando eu uso a meta error , ela é bem-sucedida.

Como posso criar um dispositivo "flakey" usando dmsetup ?

    
por Dennis Williamson 17.06.2016 / 19:55

2 respostas

2

Resposta curta:

  • Sintaxe incorreta (pode ser que era para uma versão mais antiga ), formato correto:

    '<logical_start_sector> <num_sectors> flakey <dev path> <offset> <up interval> <down interval>'
    

    dev_path vem primeiro

  • Não é possível acessar o sistema de arquivos subjacente montado. Evite mount :

    sudo losetup <loop_device> <image_file>
    

Detalhes:

  • Eu recebi o mesmo erro, usando o sistema de arquivos loop

    ~$ sudo mount -o loop image.iso  ~/Desktop/rmme0
    mount: /dev/loop4 is write-protected, mounting read-only
    
    ~$ sudo dmsetup create test --table '0 123 flakey 1 0 /dev/loop4'
    device-mapper: reload ioctl on test failed: Invalid argument
    Command failed
    

    Era uma sintaxe incorreta, pois poderia encontrar uma referência:

    linux-doc (pacote): / usr / share / doc / linux-doc / device-mapper / dm-flakey.txt

    Table parameters
    ----------------
    <dev path> <offset> <up interval> <down interval> \
        [<num_features> [<feature arguments>]]
    
    Mandatory parameters:
        <dev path>: Full pathname to the underlying block-device, or a
                    "major:minor" device-number.
        <offset>: Starting sector within the device.
        <up interval>: Number of seconds device is available.
        <down interval>: Number of seconds device returns errors.
    
  • Então, novamente com:

    ~$ sudo dmsetup -v create test --table '0 123 flakey /dev/loop4 0 10 2'
    device-mapper: reload ioctl on test failed: Device or resource busy
    Command failed
    

    Encontrou este tópico: mapeador de dispositivos: remove ioctl failed: Falha no dispositivo ou recurso ocupado . Acabou que a mensagem poderia ser levantada quando o sistema de arquivos subjacente já estivesse montado.

    Então, verifique com as partições do disco rígido

    ~$ sudo dmsetup create test --table '0 123 flakey /dev/sda1 0 10 2'
    ~$ file /dev/mapper/test 
    /dev/mapper/test: symbolic link to ../dm-0
    

    Você pode verificar em detalhes usando a sinalização detalhada:

    sudo dmsetup -vvv create test --table '0 123 flakey /dev/sda1 0 10 2'

  • O dispositivo de loop não deve ser montado, portanto, evite usar mount para criá-lo. Forma alternativa, usando losetup :

    sudo losetup /dev/loop4 image.iso
    sudo dmsetup create test --table '0 123 flakey /dev/loop4 0 10 2'
    

Testado no Xubuntu 16.04 (máquina real)

    
por user.dz 01.07.2016 / 02:08
0

Eu tentei fazer isso no meu trabalho anterior, onde eu estava testando um dispositivo de armazenamento. O problema com flakey é que geralmente é muito flakey nos lugares errados e causa um erro muito duro. Você tem isso definido para erro a cada segundo que é muito duro para qualquer coisa, mas ferramentas forenses.

Você precisa especificar como o dispositivo está sendo flakey, o padrão é hard error, que é o que está impedindo você de usá-lo, há duas outras opções - drop_writes e corrupt_bio_byte

soltar gravações - falhará em todas as gravações, mas as leituras serão bem-sucedidas

corrupt_bio_byte - é provavelmente o que você precisa, pois permite uma quebra mais sutil que é possível para as ferramentas manipularem.

A documentação do dmflakey está aqui link

por exemplo:

Isso deve gerar uma causa a cada 32º byte de cada READ que fosse 1 para ser 0

sudo dmsetup create test --table '0 123 flakey 1 0 /dev/loop0 1 corrupt_bio_byte 32 r 1 0'
    
por Amias 29.06.2016 / 16:17

Tags