Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Оплата
Новости
Доставка
Загрузки
Форум
Настройка
    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 Виртуальная Среда
    VM показывает 0% использования диска.

    Форумы: Proxmox Виртуальная Среда, Proxmox Backup Server, Proxmox Mail Gateway, Proxmox Datacenter Manager
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    VM показывает 0% использования диска., Proxmox Виртуальная Среда
     
    Amadex
    Guest
    #1
    0
    08.09.2022 03:47:00
    Привет! У меня ВМ показывает 0% использования диска, хотя это 50ГБ ВМ в продакшене (сайты, почта и т.д.). Qemu Guest Agent установлен. Что может быть не так? Она на арендованном выделенном сервере.
     
     
     
    Deepen Dhulla
    Guest
    #2
    0
    08.09.2023 15:18:00
    Заготовка исправления для использования Ceph-хранилища для виртуальных машин (ВМ) в кластере Proxmox Virtual Environment (PVE).  Загружу код в Bugzilla тоже (нужно будет проверить Development guideline тоже), и буду работать над ZFS хранилищем тоже, скоро; так как это еще одна популярная конфигурация в кластере PVE, делюсь, если кому интересно, если хотите использовать и если хотите оставить отзыв.

    **Введение:**

    Этот документ предоставляет пошаговые инструкции по реализации заготовки исправления для использования Ceph-хранилища в кластере Proxmox Virtual Environment (PVE).  В частности, это исправление решает проблему отображения использования диска загрузочного диска для виртуальных машин (ВМ), включая пространство снимков, в конфигурации Ceph-хранилища.

    **Процедура:**

    1.  **Создайте резервную копию оригинального Perl-файла:** Прежде чем вносить какие-либо изменения, крайне важно создать резервную копию оригинального Perl-файла для безопасности.

       ```bash
       cp /usr/share/perl5/PVE/QemuServer.pm /opt/QemuServer-original-`date +%Y-%m-%d-%s`.pm
       ```

    2.  **Отредактируйте Perl-файл:** Откройте Perl-файл для редактирования. Вы можете использовать любой текстовый редактор, но мы будем использовать пример использования редактора `vi`.

       ```bash
       vi /usr/share/perl5/PVE/QemuServer.pm
       ```

       Внутри редактора найдите строку, содержащую "{disk}" (примерно на строке 2944).

    3.  **Измените Perl-код:** Вы увидите следующий блок кода:

       ```perl
       my $size = PVE::QemuServer::Drive::bootdisk_size($storecfg, $conf);
       if (defined($size)) {
           $d->{disk} = 0; # no info available
           $d->{maxdisk} = $size;
       } else {
           $d->{disk} = 0;
           $d->{maxdisk} = 0;
       }
       ```

       После строки комментария "# no info available" добавьте следующий код для получения информации об использовании диска из Ceph-пула для ВМ:

       ```perl
       ##### CODE TO FETCH VM DISK USAGE FROM CEPH POOL START #####
       my @bootdiskorder = split('=', $conf->{boot});
       my @bootdiskname = split(';', $bootdiskorder[1]);
       my @bootdiskinfo = split(",", $conf->{$bootdiskname[0]});
       my @bootdiskdetail = split(":", $bootdiskinfo[0]);
       my $bootdiskstorage = $bootdiskdetail[0];
       my $bootdiskimage = $bootdiskdetail[1];

       if (defined $storecfg->{ids}->{$bootdiskstorage}->{type}) {
           my $bootdisktype = $storecfg->{ids}->{$bootdiskstorage}->{type};
           my $bootdiskpool = $storecfg->{ids}->{$bootdiskstorage}->{pool};

           if ($bootdisktype eq "rbd") {
               my $cephrbddiskinfocmd = "rbd disk-usage -p " . $bootdiskpool . " " . $bootdiskimage . " --format=json";
               my $cephrbddiskinfo = `$cephrbddiskinfocmd`;
               $cephrbddiskinfo =~ s/\n/""/eg;
               $cephrbddiskinfo =~ s/\r/""/eg;
               $cephrbddiskinfo =~ s/\t/""/eg;
               $cephrbddiskinfo =~ s/\0/""/eg;
               $cephrbddiskinfo =~ s/^[a-zA-z0-9,]//g;
               my $total_used_size = 0;

               if ($cephrbddiskinfo =~ /$bootdiskimage/) {
                   my $cephrbddiskinfoarray = decode_json($cephrbddiskinfo);
                   foreach my $image (@{$cephrbddiskinfoarray->{'images'}}) {
                       if (defined $image->{'used_size'}) {
                           $total_used_size += $image->{'used_size'};
                       }
                   }
                   $d->{disk} = $total_used_size;
               }
           }
       }
       ##### CODE TO FETCH VM DISK USAGE FROM CEPH POOL END #####
       ```

    4.  **Перезапустите службу `pvestatd`:** После внесения необходимых изменений перезапустите службу `pvestatd`, чтобы применить изменения.

       ```bash
       systemctl restart pvestatd.service
       ```

    5.  **Проверьте наличие ошибок:** Отслеживайте системные журналы для выявления возможных ошибок, чтобы убедиться, что изменения были применены без проблем.

       ```bash
       tail -f /var/log/syslog
       ```

    6.  **Проверьте использование диска:** Если все работает правильно, то теперь вы должны видеть использование диска, включая использование загрузочного диска и процент использованного пространства, для ВМ, когда они находятся в состоянии "ON".

       

    Надеюсь, это поможет кому-нибудь, и мы получим обратную связь. Заранее спасибо.
    -Deepen.
     
     
     
    LnxBil
    Guest
    #3
    0
    06.11.2024 17:35:00
    Выхода нет, в чём проблема-то. Например, с thick-LVM всегда будет 100% использования диска. Не думаю, что "информация" кому-то поможет.
     
     
     
    datschlatscher
    Guest
    #4
    0
    08.09.2022 12:00:00
    В данный момент использование диска для ВМ не отслеживается, поэтому это значение всегда отображается как 0%. По этому поводу все еще есть открытая задача. Больше информации или возможность внести свой вклад можно найти в этой задаче на нашем трекере ошибок.
     
     
     
    Amadex
    Guest
    #5
    0
    08.09.2022 12:13:00
    Спасибо за ответ. Перешел с Microsoft Hyper-V на Proxmox, поэтому вопросов много.
     
     
     
    mithrandir_63
    Guest
    #6
    0
    07.02.2024 20:05:00
    Привет всем! Большое спасибо за пост и решение. Но, если честно, я очень старался следовать всем шагам, но ничего не получилось. Разоряю эту тему! Вот 3 скриншота:
    - код, вставленный в файл "QemuServer.pm"
    - таблица со всеми ВМ, где четко видно, что использование диска аномально равно 0%. При этом, контейнер “LXC” работает нормально:
    - результаты "tail -f /var/log/syslog", которые показывают отсутствие логов и, соответственно, нет бага! ! !

    Заранее спасибо за помощь.

    С уважением @+++
     
     
     
    Deepen Dhulla
    Guest
    #7
    0
    08.02.2024 06:53:00
    Надеюсь, у вас используется Ceph RBD для хранения, потому что код сейчас разработан исключительно для Ceph Storage (совместимость со ZFS Storage я опубликую скоро). Я его автор. А ещё, для syslog, который по умолчанию не установлен в PVE8, вам нужно будет установить пакет rsyslog.
     
     
     
    jmcruvellier
    Guest
    #8
    0
    06.06.2024 14:23:00
    Привет! Ты смог опубликовать где-нибудь код совместимости? Я искал, но безуспешно. Спасибо за твою отличную работу!
     
     
     
    Deepen Dhulla
    Guest
    #9
    0
    11.06.2024 09:28:00
    Полный код с ceph rbd и ZFS выглядит следующим образом. Помните, что ZFS будет показывать больший размер, чем фактически выделено, например, 100 ГБ будет отображаться как 155 ГБ, если к снимку прикреплены данные.

    Код:
    ##### КОД ДЛЯ ОПРЕДЕЛЕНИЯ ИСПОЛЬЗОВАНИЯ ДИСКА ВМ ИЗ CEPH + ZFS POOL НАЧАЛО #####
    my @bootdiskorder = split('=', $conf->{boot});
    my @bootdiskname = split(';', $bootdiskorder[1]);
    my @bootdiskinfo = split(",", $conf->{$bootdiskname[0]});
    my @bootdiskdetail = split(":", $bootdiskinfo[0]);
    my $bootdiskstorage = $bootdiskdetail[0];
    my $bootdiskimage = $bootdiskdetail[1];

    if (defined $storecfg->{ids}->{$bootdiskstorage}->{type}) {
       my $bootdisktype = $storecfg->{ids}->{$bootdiskstorage}->{type};
       my $bootdiskpool = $storecfg->{ids}->{$bootdiskstorage}->{pool};
       if ($bootdisktype eq "zfspool") {
           my $zfsdiskinfocmd ="zfs get -H -p -oname,value  used ".$bootdiskpool."/".$bootdiskimage;
           my $zfsdiskinfo=`$zfsdiskinfocmd`;
           $zfsdiskinfo =~ s/\n/""/eg;
           $zfsdiskinfo =~ s/\r/""/eg;
           my $total_used_size = 0;
           if ($zfsdiskinfo =~ /$bootdiskimage/) {
                   my @zfsdiskbytes=split("\t",$zfsdiskinfo);
                   $total_used_size=$zfsdiskbytes[1];
                   }
           $d->{disk} = $total_used_size;
           }
      if ($bootdisktype eq "rbd") {
           my $cephrbddiskinfocmd = "rbd disk-usage -p " . $bootdiskpool . " " . $bootdiskimage . " --format=json";
           my $cephrbddiskinfo = `$cephrbddiskinfocmd`;
           $cephrbddiskinfo =~ s/\n/""/eg;
           $cephrbddiskinfo =~ s/\r/""/eg;
           $cephrbddiskinfo =~ s/\t/""/eg;
           $cephrbddiskinfo =~ s/\0/""/eg;
           $cephrbddiskinfo =~ s/^[a-zA-z0-9,]//g;
           my $total_used_size = 0;
           if ($cephrbddiskinfo =~ /$bootdiskimage/) {
               my $cephrbddiskinfoarray = decode_json($cephrbddiskinfo);
               foreach my $image (@{$cephrbddiskinfoarray->{'images'}}) {
                   if (defined $image->{'used_size'}) {
                       $total_used_size += $image->{'used_size'};
                   }
               }
               $d->{disk} = $total_used_size;
           }
       }
    }
    ##### КОД ДЛЯ ОПРЕДЕЛЕНИЯ ИСПОЛЬЗОВАНИЯ ДИСКА ВМ ИЗ CEPH POOL КОНЕЦ #####
     
     
     
    savalet_
    Guest
    #10
    0
    25.07.2024 16:13:00
    Можешь использовать мой модифицированный файл /usr/share/perl5/PVE/QemuServer.pm, чтобы использовать qemu guest agent для получения информации об использовании диска: https://gist.github.com/savalet/f1f34a9de9dfb331505294d96bae9f33
     
     
     
    Deepen Dhulla
    Guest
    #11
    0
    26.07.2024 07:36:00
    Отличный момент, узнал от Quest-Agent, можешь поделиться информацией об изменении секции, чтобы можно было взять нужный код. И ещё, показывает ли это все подключенные диски или только загрузочный?
     
     
     
    vizerei
    Guest
    #12
    0
    05.11.2024 16:41:00
    Просматривая эту и другие ветки обсуждения, а также отчет об ошибке, становится понятно, что эта проблема существует уже 5 лет. Для такой базовой функции гипервизора есть хоть какой-то способ добиться того, чтобы к ней отнеслись с большим приоритетом? Без обид, но мы платим полную лицензию за 7 серверов, и то, что это так и остается нерешенным, а единственным решением является какой-то странный обходной путь, разочаровывает.
     
     
     
    LnxBil
    Guest
    #13
    0
    05.11.2024 20:39:00
    Возможно, намек на то, что это еще не реализовано, должен подсказать тебе, что это не так-то просто. Использование информации об использовании диска из QEMU — просто ошибка, как указано здесь. То же самое и с использованием памяти.
     
     
     
    vizerei
    Guest
    #14
    0
    06.11.2024 16:34:00
    Если существует рекомендуемый обходной путь, которым клиенты в принципе должны пользоваться, то фраза "это не так просто, как кажется" мне кажется не совсем уместной. Это можно было бы автоматизировать в фоновом режиме.
     
     
     
    akballow
    Guest
    #15
    0
    03.12.2024 19:41:00
    Я пока не настолько сообразителен, чтобы понять, что происходит, потому что учусь, но я не смог получить информацию о дисковом пространстве для моих redhat 9 ВМ. Все остальные вроде бы в порядке. У них всех установлен qemu-agent. Есть ли способ это отладить?

    Например, для строки `Code: my $zfsdiskinfocmd ="zfs get -H -p -oname,value  used ".$bootdiskpool."/".$bootdiskimage;` все ВМ, включая RedHat, показывают значение используемого пространства, но оно по умолчанию равно 0, возможно, из-за более ранней функции `Code: my $size = PVE::QemuServer::Drive::bootdisk_size($storecfg, $conf);
    if (defined($size)) {
       $d->{disk} = 0; # no info available
       $d->{maxdisk} = $size;
    } else {
       $d->{disk} = 0;
       $d->{maxdisk} = 0;
    }
    Если, конечно, часть конфигурации хранилища начиная с `Code: if (defined $storecfg->{ids}->{$bootdiskstorage}->{type}) {` тоже не читается корректно. Я просто ковыряюсь пока что, но надеюсь, кто-нибудь сможет подсказать.

    EDIT: ПРОБЛЕМА ОКАЗАЛАСЬ В ПОРЯДКЕ ЗАГРУЗКИ, cdrom был первым пунктом загрузки, что обычно и должно быть, верно? Но, думаю, если изменить порядок так, чтобы диск был раньше, или отключить cdrom, то это исправит ситуацию.
     
     
     
    martusi61
    Guest
    #16
    0
    10.07.2025 02:05:00
    У меня последняя версия Proxmox 8.4.0, но проблема с нулевым использованием дискового пространства всё ещё остаётся. Кто-нибудь решил её?
     
     
     
    Страницы: 1
    Читают тему
    +7 (495) 320-70-49
    info@proxmox.su

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