Вопрос или проблема
У меня настроен Intel Software RAID (Intel® VROC) на моем хост-машине с Red Hat, и я хотел бы получить доступ к его статусу и т.д. в гостевой виртуальной машине KVM на базе Debian.
[root@localhost ~]# mdadm --detail-platform
mdadm: возможности imsm не найдены для контроллера: /sys/devices/pci0000:00/0000:00:17.0 (тип SATA)
mdadm: возможности imsm не найдены для контроллера: /sys/devices/pci0000:00/0000:00:19.0 (тип SATA)
Платформа : Intel(R) Virtual RAID on CPU
Версия : 8.5.0.1096
Уровни RAID : raid0 raid1 raid10
Размеры чанков : 4k 8k 16k 32k 64k 128k
2TB тома : поддерживается
2TB диски : поддерживается
Максимум дисков : 96
Максимум томов : 2 на массив, 24 на контроллер
NVMe от сторонних производителей : поддерживается
Контроллер ввода/вывода : /sys/devices/pci0000:9a/0000:9a:00.5 (VMD)
NVMe под VMD : /dev/nvme0n1 (S64FNN0X507593)
Шифрование(Способность|Статус): SED|Несшифрованный
NVMe под VMD : /dev/nvme2n1 (S64FNN0X507591)
Шифрование(Способность|Статус): SED|Несшифрованный
NVMe под VMD : /dev/nvme1n1 (S64FNN0X507583)
Шифрование(Способность|Статус): SED|Несшифрованный
Контроллер ввода/вывода : /sys/devices/pci0000:c6/0000:c6:00.5 (VMD)
[root@localhost ~]# sudo mdadm --detail /dev/md126
/dev/md126:
Контейнер : /dev/md/imsm, член 0
Уровень RAID : raid1
Размер массива : 890806272 (849.54 GiB 912.19 ГБ)
Размер используемого устройства : 890806272 (849.54 GiB 912.19 ГБ)
Устройства RAID : 2
Всего устройств : 2
Состояние : активное
Активные устройства : 2
Рабочие устройства : 2
Неправильные устройства : 0
Политика一致ности : resync
UUID : 991e034f:faaee5eb:fc8c7c50:8482898a
Номер Главный Второстепенный RaidDevice Состояние
1 259 0 0 активное синхронизировано /dev/nvme0n1
0 259 2 1 активное синхронизировано /dev/nvme1n1
Хотя я понимаю, что могу использовать PCI passthrough, чтобы напрямую предоставить контроллер RAID гостю, меня беспокоит потеря доступа к RAID с хоста.
Один из подходов, который я рассматривал, – это использование общего доступа к файлам для выгрузки всех необходимых данных RAID в общий файл, который затем может быть смонтирован виртуальной машиной. Однако этот метод не кажется достаточно гибким для моих нужд, так как после перезагрузки виртуальной машины мне нужно будет вручную перемонтировать файл. Я также предпочитаю не добавлять записи монтирования в /etc/fstab
виртуальной машины.
Существует ли лучший способ достичь этого?
Ответ или решение
Доступ к программному RAID Intel (vROC) с KVM-гостя на Debian из Red Hat Host
В вашей ситуации необходимо установить доступ к состоянию программного RAID Intel (vROC), настроенному на хосте Red Hat, из виртуальной машины Debian, работающей в KVM. Давайте рассмотрим несколько подходов к решению этой задачи, избегая недостатков, связанных с прямой передачи контроллера RAID (PCI passthrough) и использования файлового шары.
1. Использование Virtio для передачи данных
Virtio — это стандартный интерфейс виртуализации, который позволяет совместно использовать устройства между хостом и гостем. Вы можете установить виртуальный блок-устройство, которое будет предоставлять необходимую информацию о RAID.
-
Шаг 1: Установка необходимого программного обеспечения
Убедитесь, что у вас установлен пакет
virtio
на хосте и в гость (Debian). Это можно сделать путем установки соответствующих модулей. -
Шаг 2: Конфигурация виртуального устройства
Используйте команду
virsh
или графический интерфейс, чтобы создать виртуальное блок-устройство, которое будет направлено на файл, в который вы будете записывать статус вашего RAID.
virsh attach-disk <vm_name> /path/to/raid-status.img vdb --driver qcow2 --subdriver raw --persistent
С помощью этого метода, вы сможете хранить динамическое состояние вашего RAID прямо в установленном виртуальном блок-устройстве.
2. Использование интеграции с Web API
Если ваш RAID-контроллер или программное обеспечение предоставляет Web API для получения информации о состоянии RAID, это будет удобным способом доступа к данным без необходимости взаимодействовать напрямую с файловой системой.
-
Шаг 1: Настройка API
Настройте доступ к API через
curl
или другой инструмент в Debian, который будет запрашивать информацию о RAID. -
Шаг 2: Создайте скрипт для автоматизации
Создайте скрипт на языке типа Python или Bash, который будет выполнять запросы к API, запрашивать информацию и сохранять ее в файл или выводить прямо в терминал. Вы можете планировать его выполнение с помощью cron.
# Пример простого скрипта на Bash
#!/bin/bash
curl http://<raid-controller-ip>/api/status > /mnt/raid-status.json
3. Использование SSH для внешней проверки
Если доступ к информации через API отсутствует, вы можете использовать SSH для доступа к хосту из гостя, чтобы выполнять команды mdadm
и считывать информацию о RAID.
-
Шаг 1: Настройка SSH-доступа
Настройте доступ без пароля, используя ключи SSH, чтобы ваша гость могла выполнять команды на хосте без ввода пароля.
-
Шаг 2: Создайте скрипт для выполнения команд
Создайте Bash-скрипт на гость, который будет подключаться к хосту и выполнять команды mdadm
для получения состояния RAID.
ssh user@host 'mdadm --detail /dev/md126' > /mnt/raid-status.txt
Заключение
Каждый из представленных методов имеет свои преимущества в зависимости от ваших конкретных требований и уровня контроля, который вы хотите поддерживать между хостом и гостем. Первая опция с использованием Virtio обеспечивает более тесную интеграцию и удобную работу с RAID без существенно дополнительных настроек, в то время как варианты с API и SSH предоставляют гибкость и простоту использования.
Перед реализацией любого из предложенных методов рекомендуется выполнить тестирование в контролируемой среде, чтобы гарантировать, что вы не потеряете доступ к RAID-дискам на хосте при обращении из виртуальной машины.