Я хочу контролировать блочное устройство хранения данных, подключенное к виртуальному серверу Linux, и в качестве предварительного теста, просто чтобы понять, как это работает, моя идея заключается в следующем:
- Записать произвольный объем памяти (порядка КБ) в блок
- Подтвердите, что запись прошла успешно (блок доступен)
- Подтвердите, что объем записанной памяти правильный.
- Удалить блок памяти
- Подтвердите, что удаленный объем освободил указанный объем пространства.
Как мне записать конкретно по адресам памяти в блочном хранилище? Я чувствую, что могу сделать это с помощью 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, пожалуйста, спросите напереполнение стека, не здесь.