Я хочу контролировать устройство блочного хранения, подключенное к виртуальному серверу Linux, и в качестве предварительного теста, просто чтобы понять, как это работает, моя идея состоит в том, чтобы
Как мне выполнить запись конкретно по адресам памяти в блоке хранения блоков? Я чувствую, что могу сделать это с помощью C или python. Я вижу, что устройство существует в / dev / vdc
и / sys / block / vdc
, но я не уверен, как именно его контролировать и подходит ли моя идея, приведенная выше, .
CentOS6 / 7
Вы можете записывать и читать блоки памяти с помощью dd
:
dd if=/dev/zero of=/dev/vdc bs=512 count=2 seek=123
записывает 2 блока по 512 байт в блоки 123 и 124 на / dev / vdc
с использованием нулей в качестве входных данных. В качестве входных данных можно использовать что угодно: / 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
, потому что шестнадцатеричный дамп
объединяет идентичные строки.
Более подробную информацию можно получить у man dd
.
Вы можете переосмыслить свои требования к чтению и записи «блоков из памяти», не так-то просто зарезервировать память и получить доступ к ней из командной строки.
Если вы хотите сделать это на C или Python, спрашивайте stackoverflow , а не здесь.