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

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

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

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

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

CentOS6/7

решение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

потому что hexdumpобъединяет идентичные строки.

Более подробную информацию можно получить по ссылке man dd.

Вы можете пересмотреть свои требования к чтению и записи «блоков из памяти», ведь не так-то просто зарезервировать память и получить к ней доступ из командной строки.

Если вы хотите сделать это на C или Python, пожалуйста, спросите напереполнение стека, не здесь.

Связанный контент