Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Оплата
Новости
Доставка
Загрузки
Форум
Настройка
    info@proxmox.su
    +7 (495) 320-70-49
    Заказать звонок
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Телефоны
    +7 (495) 320-70-49
    Заказать звонок
    0
    0
    0
    Аспро: ЛайтШоп
    • +7 (495) 320-70-49
      • Назад
      • Телефоны
      • +7 (495) 320-70-49
      • Заказать звонок
    • info@proxmox.su
    • Москва, Бакунинская улица, 69с1
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Proxmox Виртуальная Среда
    как определить, на каком узле запущена виртуальная машина

    Форумы: Proxmox Виртуальная Среда, Proxmox Backup Server, Proxmox Mail Gateway, Proxmox Datacenter Manager
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    как определить, на каком узле запущена виртуальная машина, Proxmox Виртуальная Среда
     
    Jerome Duquesnoy
    Guest
    #1
    0
    07.11.2019 19:46:00
    Привет, возможно ли узнать, на каком узле запущена виртуальная машина в кластере? Если это мастер-узел, всё в порядке, но если виртуалка работает на слейв-узле, она может узнать, что мастер-узел оффлайн, и процесс запустит репликацию образа диска, который не содержит актуальные данные. Я использую кластер с двумя узлами и устройство на Linux с corosync-qnetd для кворума. Репликация происходит рано утром перед работой. Виртуальная машина работает на кастомной Debian 9, оба узла работают на pve 6.0-4. Спасибо за ваш интерес, с уважением.
     
     
     
    hellfire
    Guest
    #2
    0
    14.04.2020 15:17:00
    Вот команда, которая получает имя узла напрямую: Код: pvesh get /cluster/resources --type vm --output-format json | jq -r ' .[] | select(.name == "your_vm_name") | .node'
     
     
     
    veni69
    Guest
    #3
    0
    15.01.2023 14:46:00
    Привет, огромное спасибо за эту командную строку =)
     
     
     
    timdonovan
    Guest
    #4
    0
    10.10.2023 20:52:00
    Или, если не хотите полагаться на сторонние пакеты, которые не идут в комплекте с Proxmox (jq), чтобы сделать что-то, что действительно должно быть частью основного API... Код: pvesh get /cluster/resources -type vm --noborder | awk '{if($13 == "your_vm_name") print $14}' Саму команду pvesh, похоже, продумали странным образом. Она выводит столбец с названием type, который содержит недопустимые значения для ввода типа.
     
     
     
    t.lamprecht
    Guest
    #5
    0
    11.10.2023 07:50:00
    Вы используете "основное" API для получения этой информации... Это довольно ненадежно и, например, не работает, если есть состояние HA, тогда это будет $14 столбец. Если у вас действительно нет возможности или желания устанавливать такой базовый инструмент, как jq, вы всегда можете использовать существующие интерпретаторы, такие как python (выводя все узлы, если есть несколько гостей с одинаковыми именами): Код: pvesh get /cluster/resources -type vm --noborder --output-format json-pretty | python3 -c "import json,sys;j=json.load(sys.stdin);print(next((d['node'] for d in j if d['name']=='YOUR_VM_NAME'), 'Гость не найден'))" Или Perl, просто выводя первого, кого найдет: Код: pvesh get /cluster/resources -type vm --noborder --output-format json | perl -MJSON -ne 'my $j=decode_json($_); for my $res ($j->@*) { if ($res->{type} =~ /qemu|lxc/ && $res->{name} eq "YOUR_VM_NAME") { print $res->{node}."\n"; last; }}' Или Perl, но получая все узлы для гостей с одинаковым именем: Код: pvesh get /cluster/resources -type vm --noborder --output-format json | perl -MJSON -ne 'my $j=decode_json($_); print "$_->{node}\n" for grep { $_->{type} =~ /qemu|lxc/ && $_->{name} eq "YOUR_VM_NAME" } $j->@*;' И Python, и Perl являются широко доступными и по умолчанию установлены в Proxmox VE, так как оба имеют встроенные модули JSON, поэтому использовать такой структурированный формат намного лучше, чем парсинг с помощью AWK. Также можно создать небольшой скрипт shell, который облегчит использование: Bash: #!/bin/sh

    name="$1"
    if [ -z "$name" ]; then
       printf "использование: $0 <имя-гостя>\n"
       exit 1
    fi

    pvesh get /cluster/resources -type vm --noborder --output-format json \
       | NAME="$name" perl -MJSON -ne 'my $j=decode_json($_); print "$_->{node}\n" for grep { $_->{type} =~ /qemu|lxc/ && $_->{name} eq $ENV{"NAME"}} $j->@*;' Например, сохраните это как /usr/local/bin/find-guest-node на узлах Proxmox VE, сделайте его исполняемым (chmod +x /usr/local/bin/find-guest-node), и затем вы можете использовать find-guest-node "имя vm", чтобы получить узел(и). Единственное, что немного странно, это то, что входной тип "vm" должен называться "гость", так как он включает все наши виртуальные типы гостей. Но у возвратного типа, использующего значение конкретного типа, также есть свои причины, мы имели другие реализации для некоторых типов, такие как CT был openvz давно. И хотя мы всегда поддерживаем как ВМ, так и CT, подлежащая технология может измениться, поэтому "разные" типы позволяют фронтендам решать, как действовать с гостем, так как в зависимости от фактического типа доступны разные функции и так далее. Поэтому ввод требует гостей, что имеет смысл, так как VMID является единым пространством имен для всех гостей, а вывод дает вам конкретный тип; мы не видим здесь проблемы (кроме уже упомянутого, что ввод "vm" должен быть "гость", но просто ломать API для этого кажется слишком сложным для многих проектов, которые зависят от нас...)
     
     
     
    timdonovan
    Guest
    #6
    0
    11.10.2023 13:17:00
    Я просто говорю, что если VM ID уникален для кластера, я не первый, кто хотел бы, чтобы была удобная функция (я называю это так, потому что, полагаю, она не нужна для работы PVE), чтобы получить ID узла на основе VM ID (или, действительно, получить информацию о VM, не заботясь о том, на каком узле она находится), без всего этого ^^. Я уверен, что есть какая-то веская архитектурная или топологическая причина, почему это невозможно. В любом случае, это имеет смысл. Спасибо за perl-скрипты, это очень полезно! Я против необходимости устанавливать дополнительные вещи, потому что важно держать Proxmox как можно ближе к стандартной установке. Удачи!
     
     
     
    Страницы: 1
    Читают тему
    +7 (495) 320-70-49
    info@proxmox.su

    Конфиденциальность Оферта
    © 2026 Proxmox.su
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры