как я могу произвольно записывать данные на диск / блочное хранилище и проверять, как идет запись?

Я хочу контролировать устройство блочного хранения, подключенное к виртуальному серверу Linux, и в качестве предварительного теста, просто чтобы понять, как это работает, моя идея состоит в том, чтобы

  1. записать произвольный объем памяти (порядка КБ ) в блок
  2. Подтвердите, что запись прошла успешно (блок доступен)
  3. Подтвердите, что объем записанной памяти был правильным
  4. Удалите блок памяти
  5. Подтвердите, что удаленная сумма освободила сумму указанного пространства

Как мне выполнить запись конкретно по адресам памяти в блоке хранения блоков? Я чувствую, что могу сделать это с помощью C или python. Я вижу, что устройство существует в / dev / vdc и / sys / block / vdc , но я не уверен, как именно его контролировать и подходит ли моя идея, приведенная выше, .

CentOS6 / 7

0
12.04.2017, 11:45
1 ответ

Вы можете записывать и читать блоки памяти с помощью 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 , а не здесь.

1
28.01.2020, 02:46

Теги

Похожие вопросы