¿Cómo puedo escribir arbitrariamente en un disco/almacenamiento en bloque y comprobar cómo fue la escritura?

¿Cómo puedo escribir arbitrariamente en un disco/almacenamiento en bloque y comprobar cómo fue la escritura?

Quiero monitorear un dispositivo de almacenamiento en bloque conectado a un servidor Linux virtual y, como prueba preliminar, solo para entender cómo funciona esto, mi idea es

  1. Escriba una cantidad arbitraria de memoria (del orden de KB) en el bloque
  2. Confirme que la escritura fue exitosa (el bloque es accesible)
  3. Confirmar que la cantidad de memoria escrita fue correcta
  4. Eliminar el bloque de memoria.
  5. Confirme que la cantidad eliminada liberó la cantidad de espacio especificada

¿Cómo escribo específicamente en las direcciones de memoria en la unidad de almacenamiento en bloque? Siento que puedo hacerlo con C o Python. Puedo ver que la unidad existe /dev/vdcpero /sys/block/vdcno estoy seguro de cómo monitorearla exactamente o si mi idea anterior es una buena manera.

CentOS6/7

Respuesta1

Puedes escribir y leer bloques de memoria con dd:

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

escribe 2 bloques de 512 bytes en los bloques 123 y 124 /dev/vdcutilizando ceros como entrada. Puede utilizar cualquier cosa como entrada: /dev/urandomalgún proceso que produzca un patrón de bits, ...

Puede volver a leerlos con ddy, por ejemplo, mostrarlos en hexadecimal:

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

Deberías ver algo como

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

porque hexdumpfusiona líneas idénticas.

Más detalles con man dd.

Puede reconsiderar sus requisitos para leer y escribir "bloques de la memoria", no es tan fácil reservar y acceder a la memoria desde la línea de comandos.

Si quieres hacerlo en C o Python, por favor pregunta endesbordamiento de pila, aqui no.

información relacionada