我想监视连接到虚拟 Linux 服务器的块存储设备,作为初步测试,只是为了了解其工作原理,我的想法是
- 将任意数量的内存(KB数量级)写入块
- 确认写入成功(块可访问)
- 确认写入的内存量正确
- 删除内存块
- 确认删除的数量释放了指定的空间量
如何具体写入块存储单元中的内存地址?我觉得用C或者python都可以做到。我可以看到该单元存在于 和 中/dev/vdc
,/sys/block/vdc
但我不确定如何准确地监视它,或者我上面的想法是否是一个好方法。
CentOS6/7
答案1
您可以使用以下命令写入和读取内存块dd
:
dd if=/dev/zero of=/dev/vdc bs=512 count=2 seek=123
/dev/vdc
使用零作为输入将 2 个 512 字节的块写入块 123 和 124 。您可以使用任何内容作为输入:/dev/urandom
,一些产生位模式的过程,...
您可以使用 再次读回它们dd
,例如以十六进制显示它们:
dd if=/dev/vdc bs=512 count=1 skip=123 | hexdump -C
你应该看到类似的东西
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000200
因为hexdump
合并相同的行。
更多详细信息,请参阅man dd
.
您可能会重新考虑读取和写入“内存块”的要求,从命令行保留和访问内存并不那么容易。
如果你想用 C 或 Python 来做,请询问堆栈溢出, 不在这里。