Skip to content

12.4.4 VM

Создание VM

При создании VM в ГИ возможен выбор селектора не только для пула, но и для кластера.

Для создания VM в ГИ необходимо выполнить следующие действия:

1. Перейти во вкладку Все виртуальные машины в разделе ВЦОД провайдера.

2. Нажать на кнопку Действия и выбрать Создать ВМ.

Рисунок 1. Создание виртуальной машины

3. В появившемся окне заполнить основную информацию о VM:

  • имя ВМ;
  • кластер;
  • тип операционной системы (ОС) – Linux, FreeBSD, Windows, pfSense;
  • облачный шаблон ОС – выбрать подходящий из списка;
  • краткое описание ВМ (опционально);
  • ВЦОД (при необходимости) – по умолчанию выбран тот ВЦОД, в котором создается ВМ;
  • автоматический селектор пула с:

    • Наименьшим провизированным пространством;
    • Наименьшим провизированным количеством виртуальных ядер;
    • Наименьшим провизированным количеством ОЗУ;
  • явный выбор пула;

  • количество виртуальных ядер;
  • количество оперативной памяти.

Рисунок 2. Заполнение основной информации о VM

Дальнейшие шаги по созданию VM выполняются аналогично действиям, указанным в документации на vStack HCP в разделе 7.7 Виртуальная машина (ВМ, или VM).

Методы

12.4.4.1 vms-create

Метод создания VM.

В данном примере создается VM с двумя дисками, второй из которых создается в виде 4kn. Создаются две NIC, IP-адреса назначаются автоматически с использованием функциональности пула IP-адресов каждой из сетей.

В секции настроек гостевой ОС описаны назначение пользователю root двух SSH-ключей и установка пароля, создание пользователя volobuev, назначение ему одного SSH-ключа и установка пароля, а также назначение конфигурации resolver, установка hostname и назначение команды, выполняемой при каждой загрузке.

Кластер можно выбрать вручную, если указать параметр cluster_id или воспользоваться автоматическим селектором. Если указать параметр cluster_selector, то cluster_id имеет больший приоритет (даже если указаны сразу два параметра).

Возможные значения cluster_selector:

  • 0 - (CPU) Кластер с минимальным значением отношения used/total.
  • 1 - (CPU) Кластер с минимальным значением отношения provisioned/total.
  • 2 - (CPU) Кластер с минимальным абсолютным значением provisioned.
  • 3 - (RAM) Кластер с минимальным значением отношения used/total.
  • 4 - (RAM) Кластер с минимальным значением отношения provisioned/total.
  • 5 - (RAM) Кластер с минимальным абсолютным значением provisioned.
  • 6 - (STORAGE) Кластер с минимальным значением отношения used/total.
  • 7 - (STORAGE) Кластер с минимальным значением отношения provisioned/total.
  • 8 - (STORAGE) Кластер с минимальным абсолютным значением provisioned.

Значения предопределенных «автоматических» селекторов для выбора пула приведены в документации на vStack HCP в разделе 7.7 Виртуальная машина (ВМ, или VM).

Запрос:

{
    "jsonrpc": "2.0",
    "method": "vms-create",
    "id": "769e8460-64d2-4dc6-ab3e-7a7ac099764a",
    "params": {
        "cluster_id": "d535b7b8-917d-4aed-aec0-6a09e54c9342",
        "name": "Federation VM MVP",
        "cpus": 2,
        "ram": 2147483648,
        "os_type": 6,
        "os_profile": 3022,
        "vdc_id": 37,
        "disks": [
        {
            "size": 23622352896,
            "slot": 1
        },
        {
            "sector_size": {
            "logical": 4096,
            "physical": 4096
            },
            "size": 47244705792,
            "label": "44GB 4Kn redo logs",
            "slot": 2
        }
        ],
        "network_ports": [
        {
            "network_id": 174,
            "slot": 1
        },
        {
            "network_id": 176,
            "slot": 2
        }
        ],
        "guest": {
        "users": {
            "root": {
            "ssh-authorized-keys": [
                "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEkIzoBL/vwQ1fbdhH8MGq/CPXA1QQtU2buiy03sVbn5 evgueni.gavrilov@vStack.com",
                "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJnT4MAS9coPy2nZhOiXXQeLcc4RoCaQJEBMbSp4ZAhs allan@vStack.com"
            ],
            "password": "$6$csNIFbubwcx.vLWM$ua7n12KtekpzPhYi8hSS5xSITPFAyOwGKylUam4owBbtZVO2uUH1t3d8PcZj3f.w6OsSgODbRy8mozhDSCBjV."
            },
            "volobuev": {
            "ssh-authorized-keys": [
                "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILBz8xQUuLBZzVqSph0RGVLIuqyYMOTLYp/y1e3jmV7F vol@nsa.gov"
            ],
            "password": "$6$csNIFbubwcx.vLWM$ua7n12KtekpzPhYi8hSS5xSITPFAyOwGKylUam4owBbtZVO2uUH1t3d8PcZj3f.w6OsSgODbRy8mozhDSCBjV."
            }
        },
        "ssh_password_auth": 1,
        "resolver": {
            "name_server": [
            "8.8.8.8",
            "8.8.4.4",
            "1.1.1.1"
            ],
            "search": "nsa.gov"
        },
        "boot_cmds": [
            "swapoff -a"
        ],
        "run_cmds": [
            "systemctl restart ntpd"
        ],
        "hostname": "ubuntu-07-snap.docker.us.nsa.gov"
        }
    }
}

Ответ:

{
    "jsonrpc": "2.0",
    "id": "769e8460-64d2-4dc6-ab3e-7a7ac099764a",
    "result": {
        "code": 1,
        "data": {
            "d535b7b8-917d-4aed-aec0-6a09e54c9342": {
                "id": "769e8460-64d2-4dc6-ab3e-7a7ac099764a",
                "jsonrpc": "2.0",
                "result": {
                    "code": "1",
                    "data": {
                        "admin_status": 10,
                        "boot_media_id": 0,
                        "cpu_priority": 1,
                        "cpus": 2,
                        "create_completed": 1,
                        "created": 1703593142,
                        "description": null,
                        "disks": [
                            {
                                "guid": "2361119567646420320",
                                "iops_limit": null,
                                "label": null,
                                "mbps_limit": null,
                                "sector_size": {
                                    "logical": 512,
                                    "physical": 4096
                                },
                                "size": 23622352896,
                                "slot": 1
                            },
                            {
                                "guid": "17328433694908340100",
                                "iops_limit": null,
                                "label": "44GB 4Kn redo logs",
                                "mbps_limit": null,
                                "sector_size": {
                                    "logical": 4096,
                                    "physical": 4096
                                },
                                "size": 47244705792,
                                "slot": 2
                            }
                        ],
                        "gc_id": 2,
                        "gc_name": "Cloud-init: SmartOS",
                        "guest": {
                            "ram_used": null
                        },
                        "hv_faults": {
                            "sigabort": {
                                "interval": 60,
                                "restarts": 5
                            }
                        },
                        "hw_version": 4,
                        "id": 117921,
                        "incarnation": 17035931423,
                        "locked": 0,
                        "modified": 1703593142,
                        "name": "Federation VM MVP",
                        "ndmp_address": "10.32.141.208",
                        "network_ports": [
                            {
                                "address": "10.0.0.2",
                                "ip_guard": 1,
                                "mac": "ca:0b:fb:f9:98:89",
                                "network_id": 174,
                                "port_id": 122412,
                                "ratelimit_mbits": null,
                                "slot": 1
                            },
                            {
                                "address": "10.0.0.2",
                                "ip_guard": 1,
                                "mac": "ca:0b:2a:88:30:65",
                                "network_id": 176,
                                "port_id": 122413,
                                "ratelimit_mbits": null,
                                "slot": 2
                            }
                        ],
                        "oper_status": 10,
                        "oper_status_ts": 1703593143,
                        "os_profile": "3022",
                        "os_type": 6,
                        "pool": "11506271842240015790",
                        "ram": 2147483648,
                        "root_dataset": 15642036712752733090,
                        "status": 10,
                        "uefi": "/usr/local/share/uefi-firmware/vStack_BHYVE_UEFI_20210214.fd",
                        "vcpu_class": 1,
                        "vdc": 5000014
                    }
                }
            }
        }
    }
}

12.4.4.2 vms-cpu-priority

Метод для установки приоритета vCPU для VM.

Данная возможность может быть полезной для исключения негативного влияния VM, потребляющих большое количество vCPU ресурсов. Меньшее значение (1) соответствует максимально возможному приоритету - VM получит больше vCPU ресурсов. Большее значение (20) соответствует минимально возможному приоритету - VM получит меньше vCPU ресурсов. Изменение данного параметра на работающей VM применяется сразу.

Запрос:

{
        "jsonrpc":      "2.0",
        "method":       "vms-cpu-priority",
        "id":           "1ccca298-c822-11ea-b43f-e7f855bcd16b",
        "params": {
                "vm_id":        500274,
                "cluster_id":   "579bfe88-82cd-40a5-a124-3adeaa0a3a18",
                "cpu_priority": 7
        }
}

Ответ:

{
   "id" : "1ccca298-c822-11ea-b43f-e7f855bcd16b",
   "jsonrpc" : "2.0",
   "result" : {
        "code" : 1,
        "data" : {
            "579bfe88-82cd-40a5-a124-3adeaa0a3a18": {
                "id" : "1ccca298-c822-11ea-b43f-e7f855bcd16b",
                "jsonrpc" : "2.0",
                "result" : {
                    "code": 1
                }
            }   
        }
   }
}

12.4.4.3 vm-billing

Метод запроса billing (сети).

Запрос:

{
        "jsonrpc":      "2.0",
        "method":       "vm-billing",
        "id":           "1ccca298-c822-11ea-b43f-e7f855bcd16b",
        "params": {
                "vm_id":        500274,
                "cluster_id":   "579bfe88-82cd-40a5-a124-3adeaa0a3a18",
                "begin_time":   1567342800,
                "end_time":     1567347642
        }
}

Ответ:

{
    "jsonrpc": "2.0",
    "id": "8daa0668-44ce-4366-90a6-442d6d5685b0",
    "result": {
        "code": 1,
        "data" : {
         "results" : [
            {
               "series" : [
                  {
                     "columns" : [
                        "time",
                        "rx_bytes",
                        "tx_bytes"
                     ],
                     "name" : "virtio_net",
                     "values" : [
                        [
                           "1970-01-01T00:00:00Z",
                           2328943108,
                           78679228
                        ]
                     ]
                  }
               ],
               "statement_id" : 0
            }
         ]
      }
    }
}

12.4.4.4 vm-import-area-list

Метод получения списка виртуальных машин, находящихся в области для импорта. Данная область применяется для восстановления из резервных копий или для приема виртуальных машин, мигрируемых из виртуальных инфраструктур, построенных с помощью других продуктов.

Запрос:

{
        "jsonrpc":      "2.0",
        "method":       "vm-import-area-list",
        "id":           "1ccca298-c822-11ea-b43f-e7f855bcd16b"
}

Ответ:

{
    "jsonrpc": "2.0",
    "id": "f018c35f-d8a6-4f26-a88d-2a6ba7c71ce8",
    "result": {
        "code": 1,
        "data": {
            "4ad7afcd-c7f1-48bf-8b6a-07d5c78f24fc": {
                "id": "f018c35f-d8a6-4f26-a88d-2a6ba7c71ce8",
                "jsonrpc": "2.0",
                "result": {
                    "code": 1,
                    "data": {
                        "z05/.ndmp/.vm_V4/000005095": {
                            "dataset": "z05/.ndmp/.vm_V4/000005095",
                            "duration": 22,
                            "finished": 1,
                            "full_size": 1643266236,
                            "local_ip": "10.78.141.205",
                            "original_pool_exists": 1,
                            "original_vdc_exists": 1,
                            "original_vm_exists": 1,
                            "peer_ip": "10.78.27.24",
                            "pool_guid": "4182847010042355858",
                            "pool_name": "z05",
                            "start_ts": 1704891502,
                            "transferred": 1643266236,
                            "update_ts": 1704891523,
                            "vm": {
                                "cpus": 2,
                                "created": 1679903612,
                                "description": null,
                                "hw_version": 4,
                                "id": 5095,
                                "incarnation": 16813757185,
                                "modified": 1681375718,
                                "name": "VM -- NDMP backup to NetWorker",
                                "os_name": "Ubuntu 20.04",
                                "os_profile": 1023,
                                "os_type": 6,
                                "ram": 2147483648,
                                "vcpu_class": 1,
                                "vdc": 1350
                            }
                        }
                    }
                }
            },
            "579bfe88-82cd-40a5-a124-3adeaa0a3a18": {
                "id": "f018c35f-d8a6-4f26-a88d-2a6ba7c71ce8",
                "jsonrpc": "2.0",
                "result": {
                    "code": 1
                }
            }
        }
    }
}