0

Масштабирование vhd в websitepanel

В редакторе конфигурации виртуальной машины не работает масштабирование диска. Изменяются только параметры CPU и RAM.

Как выяснилось, в исходном коде нет никакого текста, который бы увеличивал объем HDD.

Я добавил в своей инсталлляции данный функционал. Код позволяет панели увеличить размер диска и увеличить файловую систему на примонтированном 1м томе.

В проекте WebsitePanel Server открываем WebsitePanel.Providers.Virtualization.HyperV/HyperV.cs
и после строк

        public VirtualMachine UpdateVirtualMachine(VirtualMachine vm)
        {
            string vmId = vm.VirtualMachineId;

            // get VM object
            ManagementObject objVM = GetVirtualMachineObject(vmId);

            // update general settings
            UpdateVirtualMachineGeneralSettings(vmId, objVM,
                vm.CpuCores,
                vm.RamSize,
                vm.BootFromCD,
                vm.NumLockEnabled);

следующее:

                //resize vhd
                bool expanded = false;
                VirtualHardDiskInfo vhdInfo = null;
                vhdInfo = GetVirtualHardDiskInfo(vm.VirtualHardDrivePath);
                if (vhdInfo != null || !vhdInfo.InUse)
                {
                    // check if it should be expanded
                    int hddSizeGB = Convert.ToInt32(vhdInfo.MaxInternalSize / Size1G);
                    if (vm.HddSize > hddSizeGB)
                    {
                        // wait for completion
                        while (expanded == false)
                        {
                           JobResult result = ExpandVirtualHardDisk(vm.VirtualHardDrivePath, (ulong)vm.HddSize);
                           if (JobCompleted(result.Job)) expanded = true;
                             
                        }
                            MountedDiskInfo mountedInfo = MountVirtualHardDisk(vm.VirtualHardDrivePath);
                            if (mountedInfo.DiskVolumes.Length > 0)
                            {
                                ExpandDiskVolume(mountedInfo.DiskAddress, mountedInfo.DiskVolumes[1]);
                            }
                            UnmountVirtualHardDisk(vm.VirtualHardDrivePath);
                    }

                }

после этого компилируем и подсовываем новые dll в рабочую среду

XpycT

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *