Увеличение размера виртуального диска не приводит к автоматическому изменению размера тома


Наверняка многие из вас сталкивались с тем, что выделенный ранее размер виртуального диска (VHD) стал недостаточен для нужд вашей виртуальной машины. Это может касаться как о расширяемых (Dynamically Expanding), так и о дисках фиксированного объема (Fixed Size). Выходов из подобной ситуации немного — увеличить размер имеющегося диска или добавить новый. Первый вариант обычно оказывается предпочтительнее. В отличие от физических жестких дисков, для виртуальных это не составляет никакой проблемы. Достаточно в консоли Hyper-V Manager выбрать операцию Edit Disk, указать нужный файл и увеличить его размер при помощи команды Expand. Понятно, что диск в этот момент не должен использоваться виртуальными машинами. Однако, запустив виртуальную машину после описанной процедуры, вы обнаружите, что объем доступного системе места не изменился. В моем случае, диск C как был 50-гигабайтным, так и остался — хотя я увеличил размер файла диска до 130 ГБ.



Ошибка? Нет, в консоли Hyper-V Manager я явно вижу полный размер диска.



На примере этой ситуации хорошо видна разница между двумя предметами.



  • диск — как часть эмулируемого оборудования виртуальной машины. Он же виртуальный диск или файл VHD;

  • том или раздел — как элемент файловой системы ОС, существующей внутри виртуальной машины. Он же логический диск.

Я увеличил размер виртуального диска, но при этом логический диск остался неизменным — что явно видно в консоли Disk Manager виртуальной машины.



Если в вашей виртуальной машине установлена ОС Windows Vista или Windows Server 2008, расширить логический диск вы можете совершенно элементарно, причем это касается и системного, и загрузочных дисков. Не потребуется даже перезагружаться. Для этого в контекстном меню раздела выбираете команду Extend Volume.



Укажите размер, на который вы хотите увеличить логический диск. Выбирайте число, равное значению поля Maximum available space, чтобы увеличить том до полного размера виртуального диска.



И вот как будет выглядеть результат.



Увы, данный способ сработает лишь в Vista/WS08. Если вы используете более старую ОС, вам потребуется использовать утилиту Diskpart. Причем если вам необходимо изменить размер загрузочного диска, то потребуектся сначала перезагрузить ВМ в другую ОС — например, с диска WinPE или Microsoft Diagnostic and Recovery Toolkit. Вот так можно посмотреть полный размер виртуального диска.



Затем выбираем первый физический (а в нашем случае — виртуальный) диск командой select disk 0.



Затем уже из разделов на этом диске выбираем том, размер которого собираемся менять. В нашем примере — с 127 ГБ до 130 ГБ.



И просто выполняем команду extend.



Вуаля, задача выполнена, логический диск увеличен. Можно перезагружаться в основную ОС и радоваться жизни.


Comments (16)

  1. Alex A says:

    Нет.

    Мы категорически не поддерживаем ручное изменение конфигурационных файлов. Только через WMI/PowerShell, а это все документировано.

  2. Anonymous says:

    А как проделать тоже самое, только с debian в качестве гостевой?

  3. Anonymous says:

    AndreyV спасибо большое!

    Добавим в копилку знаний!

    тут и пример есть:

    ict-freak.nl/2008/10/10/vmware-extend-the-os-disk-the-easy-way-extpartexe/

  4. Alex A says:

    По разному можно.

    С LiveCD: wiki.kartbuilding.net/…/Resize_%26_Create_Partitions_in_Debian

    или даже напрямую: http://www.radioprosciutto.com/…/7

  5. Anonymous says:

    Старый добрый diskpart, еще на Beta релизе Server 2008 я был приятно удивлен когда diskpart зделал extend системного диска C:

    Примите к сведению господа, на Windows Server 2008 можно extend-ить и shrink-ить диск в онлине! В независимость от того физичеки это сервер (диск) или виртуальный. В Server 2003 проводить такие работы над диском C: было невозможным, только перегружая сервер…

    Еще одно маленькое преимущество Server 2008 над Server 2003. Windows Server non stop!

    Arman Obosyan.

  6. Alex A says:

    Данный файл создается, но в него ничего не пишется. Память всегда хранится в RAM.

    Файл создается на случай необходимости экстренного сохранения системы (Save State), – например, при окончании места на диске. Сделано это, чтобы вы не потеряли данных.

  7. AndreyV says:

    DELL EXTPART увеличивает размер раздела в Windows 2003 Server без перезагрузок.

  8. Кирилл says:

    Добрый день.

    Вопрос немного не в тему.

    При старте виртуальной машины на диске появляется файл равный по размеру памяти выделяемой для этой машины. Есть ли возможность не создавать эти файлы? Чтобы далеко не ходить в обьяснениях – тот же vmware server при старте делает тоже самое (пишет содержимое памяти на диск), и чтобы "уговорить" его держать память виртуальной машины в физической памяти, а не записывать на диск есть команда, которую можно написать в конфигурационном файле виртуальной машины и в результате файл не создается, место на диске не расходуется, снижается дисковая активность и прочая прочая…

    Нет ли какого документа по таким ключам в конфигурации виртуальных машин создаваемых Hyper-v ?

  9. Кирилл says:

    Alex A. – спасибо.

    А по содержимому конфигурационного файла есть где либо информация? Например какой параметр за что отвечает.

    Иногда проще поправить конфигурацию напрямую в тексте. Ну и для использования скриптов (изменение параметров машины для какой либо задачи) было бы интересно.

  10. Кирилл says:

    *Только через WMI/PowerShell, а это все документировано.

    Тыкнете носом пожалуйста в документацию

  11. Ссылки нерабочие в:

    "Причем если вам необходимо изменить размер загрузочного диска, то потребуектся сначала перезагрузить ВМ в другую ОС — например, с диска WinPE или Microsoft Diagnostic and Recovery Toolkit."

  12. Grechina M says:

    Alex A. вы описали ситуацию когда у вас только один диск С, как быть если присутствует С и D, в консоли Hyper-V Manager я увеличил размер диска, запустил "машину" но команда Extend Volume ни на диске С ни D мне не доступна.

    Диски С ни D хранятся в одном vhd файле, так как виртуалка сделана с физической машины с помощью Disk to vhd

    Заранее спасибо      

  13. Наталья says:

    Спасибо большое!

  14. Сергей says:

    спасибо. Почему нигде этого не пишут? Еле нашел…

Skip to main content