Skip to content

freii23/device-mapper-proxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Device Mapper Proxy (DMP) Module

Модуль ядра Linux для создания виртуальных блочных устройств с отслеживанием статистики операций ввода-вывода.

Описание

DMP модуль создает прокси-устройства поверх существующих блочных устройств и собирает детальную статистику всех операций I/O. Статистика доступна через интерфейс sysfs.

Возможности

  • Создание proxy блочных устройств поверх существующих
  • Сбор статистики операций чтения и записи
  • Подсчет среднего размера блоков
  • Интерфейс sysfs для просмотра статистики
  • Поддержка всех стандартных операций device mapper

Собираемая статистика

  • Количество запросов на чтение - общее число операций чтения
  • Количество запросов на запись - общее число операций записи
  • Средний размер блока на чтение - средний размер блока для операций чтения
  • Средний размер блока на запись - средний размер блока для операций записи
  • Общее количество запросов - суммарное количество всех операций
  • Средний размер блока - средний размер блока для всех операций

Сборка и установка

Требования

  • Linux kernel headers
  • GCC compiler
  • Make

Сборка

make

Установка модуля

# Загрузка модуля
sudo insmod dmp.ko

# Или установка в систему
sudo make install

Использование

1. Создание базового устройства

Сначала создайте базовое блочное устройство (например, zero target):

# Создание устройства размером 1GB (2097152 сектора по 512 байт)
sudo dmsetup create zero1 --table "0 2097152 zero"

2. Создание proxy устройства

Создайте DMP устройство поверх базового:

# Создание proxy устройства того же размера
sudo dmsetup create dmp1 --table "0 2097152 dmp /dev/mapper/zero1"

3. Использование устройства

Теперь можно работать с устройством /dev/mapper/dmp1 как с обычным блочным устройством:

# Запись данных
sudo dd if=/dev/random of=/dev/mapper/dmp1 bs=4k count=10

# Чтение данных
sudo dd if=/dev/mapper/dmp1 of=/dev/null bs=4k count=10

4. Просмотр статистики

Статистика доступна через sysfs:

cat /sys/module/dmp/dmp/stat/volumes

Пример вывода:

read:
  reqs: 500
  avg size: 4096
write:
  reqs: 100
  avg size: 4096
total:
  reqs: 600
  avg size: 4096

5. Удаление устройств

# Удаление proxy устройства
sudo dmsetup remove dmp1

# Удаление базового устройства
sudo dmsetup remove zero1

6. Выгрузка модуля

sudo rmmod dmp

Автоматическое тестирование

В комплекте предоставляется скрипт для автоматического тестирования:

# Сделать скрипт исполняемым
chmod +x dmp_test.sh

# Запустить тест (требуются права root)
sudo ./dmp_test.sh

Скрипт автоматически:

  1. Загружает модуль
  2. Создает тестовые устройства
  3. Выполняет операции I/O
  4. Проверяет статистику
  5. Очищает тестовое окружение

Структура файлов

.
├── dmp.c           # Исходный код модуля
├── Makefile        # Файл сборки
├── dmp_test.sh     # Тестовый скрипт
└── README.md       # Документация

Технические детали

Архитектура

Модуль использует фреймворк Device Mapper ядра Linux для создания виртуальных блочных устройств. Каждое DMP устройство выступает как прозрачный прокси, перенаправляя все операции на подлежащее устройство и одновременно собирая статистику.

Сбор статистики

  • Статистика собирается на уровне bio структур
  • Используются атомарные операции для thread-safe обновления счетчиков
  • Статистика агрегируется глобально для всех DMP устройств

Интерфейс sysfs

Статистика предоставляется через файл /sys/module/dmp/dmp/stat/volumes в текстовом формате, удобном для чтения человеком и парсинга скриптами.

Поддерживаемые операции

  • Чтение (READ)
  • Запись (WRITE)
  • Flush операции
  • Discard операции

Ограничения

  • Статистика агрегируется глобально для всех устройств
  • Не поддерживается статистика per-device
  • Требует права администратора для работы

Отладка

Для отладки можно использовать:

# Просмотр логов модуля
dmesg | grep dmp

# Проверка загруженных модулей
lsmod | grep dmp

# Информация об устройствах device mapper
dmsetup info
dmsetup table

Лицензия

GPL v2

Авторы

Rusin A.N.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors