como posso gravar arbitrariamente em um armazenamento em disco/bloco e verificar como foi a gravação?

como posso gravar arbitrariamente em um armazenamento em disco/bloco e verificar como foi a gravação?

Quero monitorar um dispositivo de armazenamento em bloco conectado a um servidor Linux virtual e, como teste preliminar, só para entender como isso funciona, minha ideia é

  1. Escreva uma quantidade arbitrária de memória (na ordem de KB) no bloco
  2. Confirme se a gravação foi bem-sucedida (o bloco está acessível)
  3. Confirme se a quantidade de memória gravada estava correta
  4. Exclua o bloco de memória
  5. Confirme se a quantidade excluída liberou a quantidade de espaço especificada

Como escrevo especificamente nos endereços de memória da unidade de armazenamento em bloco? Sinto que posso fazer isso com C ou python. Posso ver que a unidade existe /dev/vdc, mas /sys/block/vdcnão tenho certeza de como exatamente monitorá-la ou se minha ideia acima é uma boa maneira.

CentOS6/7

Responder1

Você pode escrever e ler blocos de memória com dd:

dd if=/dev/zero of=/dev/vdc bs=512 count=2 seek=123

grava 2 blocos de 512 bytes nos blocos 123 e 124 /dev/vdcusando zeros como entrada. Você pode usar qualquer coisa como entrada: /dev/urandom, algum processo que produza um padrão de bits, ...

Você pode lê-los novamente com dde, por exemplo, exibi-los em hexadecimal:

dd if=/dev/vdc bs=512 count=1 skip=123 | hexdump -C

Você deveria ver algo como

00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200

porque hexdumpmescla linhas idênticas.

Mais detalhes com man dd.

Você pode repensar seus requisitos para ler e escrever "blocos de memória", não é tão fácil reservar e acessar memória a partir da linha de comando.

Se você quiser fazer isso em C ou Python, pergunte emfluxo de pilha, aqui não.

informação relacionada