четверг, 13 декабря 2012 г.

VirtualBox увеличиваем размер дисков Windows и Linux

Появилась задача увеличить размер диска созданной виртуалки. Тут будет рассказано как увеличить размер виртуалки и затем добавить его к основному диску с системой.



Стоить сразу заметить, что созданный диск виртуальной машины должен быть динамическим (не фиксированного размера), в противном случае вы не сможете увеличить его размер с помощью данного метода. Если же диск у вас статический (фиксированный размер), то вы можете создать новый динамический диск и командой клонирования его туда скопировать. И так же вам лучше сделать копию vdi файла на время проведения работ, мало ли что :)

Для Windows.

Запускаем командную строку клавишами [Win] + R и вводим cmd, жмем [Enter]. Бывает так что не хватает прав на запись файлов тогда нужно запустить cmd с правами администратора для этого щелкаем по кнопке пуск, кнопка [Win] (либо в windows 8 правая панель) и вводим в строку поиска cmd, затем правой клавишей мыши по cmd —Запустить от администратора.
Далее нужно узнать путь к файлу VBoxManage.exe в папке, у меня она выглядит какVirtualBox. Для удобства я набираю команду в блокноте, чтобы,  при ошибке, проще было исправлять. У меня путь выглядит так:
C:\Program Files\Oracle\VirtualBox\VBoxManage.exe
Далее нужно найти файл с жетским диском виртуальной машины, по умолчанию этот путь:
C:\Users\{имя пользователя}\.VirtualBox\{имя виртуальной машины}\{имя виртуальной машины}.vdi
У меня он выглядит так (я переместил виртуалки):
C:\Work\Virtual\Windows XP SQL Server\Windows XP SQL Server.vdi
Дальше нужно просто добавить нужную команду, ее параметры и обернуть пути до файлов в скобки:
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyhd "C:\Work\Virtual\Windows XP SQL Server\Windows XP SQL Server.vdi" --resize 10240
modifyhd команда модификации виртуального жесткого диска, а размер задается командой resize, а далее задаем размер в мегабайтах, например тут 10240Мб = 10Гб


Для Linux.

Необходимо запустить терминал, если у вас Linux или командную строку, если Windows и ввести в нее следующую команду:
VBoxManage modifyhd /путь/к/vdi-файлу --resize x
Где в самом конце команды параметр “х” это размер в мегабайтах, к которому вы хотите увеличить ваш виртуальный жесткий. К примеру, если вы хотите увеличить размер виртуального жесткого для Windows 8 с 20 до 30 ГБ, то эта команда будет выглядеть так:
VBoxManage modifyhd /путь/к/Windows_8.vdi --resize 30000
Далее жмем клавишу Enter и вы должны увидеть процесс выполнения команды. После ее завершения (100%) размер виртуального жесткого увеличиться до заданного значения.


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


Для Windows.

Сразу скажу встроенный метод на мою систему XP не сработал и я воспользовался вторым методом.

1. Метод увеличения места с помощью программы diskpart

Открываем коммандную строку, как описано выше и запускаем diskpart, далее просто вводим нужные комманды:
DISKPART> list volume – смотрим, какой раздел нам нужен
DISKPART> select volume 1 – выбираем нужный раздел, это может 1 или 2, нужно просто смотреть на объем и название
DISKPART> extend – даем команду расширить
Если не выдало ошибок — отлично, но лично у меня не сработало.
DISKPART> list volume – убеждаемся, что всё хорошо (смотрим сколько места стало)
DISKPART> exit – прощаемся с утилитой diskpart

Тоже самое, но с графическим интерфейсом. Если diskpart не сработал, то и этот метод не сработает, но вдруг через графику вам проще.

Запускаем консоль управления компьютером щелкая правой кнопкой по «Мой компьютер» и выбираем управление, далее заходим во вкладку управления дисками. Видим добавленное не распределенное место. Выбираем нужный диск (нам интересен главный С) и кликаем расширить том, если он активен и доступен.

2. Метод увеличения места с помощью программы epm

Метод с консольной программой у меня не сработал, а именно, мне выдало:
Diskpart: Не удалось расширить том.
Убедитесь, что этот том позволяет выполнить расширение.
Графический метод тоже не помог, такого пункта просто не было, поэтому я решил использовать другой метод. Добавлю что для меня в первую очередь важна простота и скорость, и использовать программы которые запускаются с LiveCD мне не очень интересно.
Собственно существует программа для работы с разделами под названием EaseUS Partition Master, она платная, но существует бесплатной версия, который нам вполне хватит.
Заходим на официальный сайт программы EASEUS Partition Master Home Edition.
Скачиваем и устанавливаем -  соглашаемся с соглашением и нажимаем ОК, а дальше там все вполне тривиально.
Затем запускаем программ и выбираем Partition Manager
Далее выбираем нужный раздел, щелкаем правой кнопкой и выбираем resize, далее нужно просто потянуть за одну из сторон и расширить раздел на все свободное место.
Далее нужно просто нажать кнопкой Apply на основном интерфейсе Partition Manager, пройдет немного времени и все. Можно перезагрузить компьютер и радоваться новому месту :)
Главное окно Partition manager

У меня это заняло 1 минуту вместе с установкой программы и изменением размера диска С. Затем после перезагрузки программу я удалил.
Для Linux.
В зависимости от настроек вашей гостевой системы расширить жесткий диск как в Windows может быть не просто. К примеру,  в Ubuntu даже если есть свободное место на жестком при расширении активного раздела сбиваются настройки загрузчика с вытекающими для этого последствиями. Поэтому как простейший вариант можно создать в неразмеченной области отдельно новый раздел и просто монтировать его при загрузке в нужное место. Я же в свою очередь попробовал увеличить размер sda1 и у меня всё получилось без проблем.

Для этого в гостевой ОС необходимо установить менеджер управления разделами. Один из наиболее популярных – это GParted. Этот менеджер существует для различных видов Linux и имеет очень удобный интерфейс. Установить GParted для Ubuntu, Debian, Mint можно с помощью следующей команды:

sudo apt-get install gparted
Для Fedora, Centos:
su yum install gparted
Далее запускаем GParted и вы должны увидеть неразмеченный раздел.
Правой кнопкой мышки по новому разделу выберите из меню “Новый”. В моем примере выбрана файловая система Ext4, такая же как и на основном разделе, но утилита GParted позволяет выбрать файловую систему из достаточно широкого списка: FAT, FAT32, NTFS, Ext2/3, ReiserFS и т.п.
После всего в главном окне программы кликните на зеленую галочку чтобы применить все изменения. После того как программа завершит роботу можно запустить файловый менеджер чтобы примонтировать в систему только что созданный раздел. Монтирование раздела из файлового менеджера действительно только до первой перезагрузки, поэтому чтобы сделать автоматическое монтирование при каждом запуске виртуальной машины нужно сделать следующее. Запустите опять GParted чтобы узнать какое имя утилита присвоила новому разделу. Как правило это имя будет иметь следующий вид:

  /dev/sdaХ

Где Х – это номер раздела. Это же можно выяснить с помощью команды в терминале:

  sudo blkid

Где наш новый раздел будет последним. После чего в терминале открываем от имени рута право на редактирование системного файла:

  sudo gedit /etc/fstab

После чего вставляем в конец этого файла следующую строчку:

  /dev/sdaХ /путь/куда/монтировать/раздел ext4 defaults 0 2

Где Х – это номер раздела. К примеру:

/dev/sda5 /media ext4 defaults 0 2

7 комментариев:

  1. Огромный респект за статью! Все понятно и доступно написано. Правда возникла проблема при расширении VDI файла, так как он у меня был фиксированного размера. Вот тут http://www.devbug.info/2012/02/virtualbox-vdi-vmdk.html я подсмотрел как сделать из VDI фиксированного размера VDI динамического размера и после этого все прошло на УРА! Еще раз - СПАСИБО!!!

    ОтветитьУдалить
    Ответы
    1. Спасибо за отзыв. Очень рад, что статья помогла вам решить вашу проблему. Так же, я уверен, со временем вы придёте к мнению, что лучше диски всегда делать статические - очень сильно экономит место и время.

      Удалить
  2. Замечу, что в случае со стандартными файловыми системами unix процесс увеличения размеров FS - действие одностороннее. "Ужать" его обратно так просто уже не получится - надо будет переносить данные.

    ОтветитьУдалить
  3. изменил размер диска виртуалки с виндовс хп, после чего она перестала грузиться с ошибкой
    FATAL: Could not read from the boot medium! System halted.
    Варианты есть восстановить работу виндовс?

    ОтветитьУдалить
    Ответы
    1. Ну варианты следующие, либо проверяете настройки VB, что указано в качестве загрузки и т.д, т.к. виртуалка просто не знает с чего грузится. Если всё же испортилась загрузочная область (как? непонятно...), то один из вариантов воткнуть установочный диск с XP и поставить систему "поверх" - это своеобразное восстановление, при котором система сообщает что скопирует системные файлы которые отличаются или повреждены, а файлы и программы пользователя остаются не измены. Но я склоняюсь скорее всего к тому что косяк в настройках VB. Создайте новую виртуалку и прикрепите этот диск, что он скажет?

      Удалить
    2. Аналогичная ерунда и у меня произошла, только гостевая убунту. Слетела загрузочная часть, таблица разделов :( видимо есть какие-то проблемы у виртуал бокс с этим. Лучше делать копию диска предварительно

      Удалить
  4. Расширил виртуальный жесткий диск, в GUI оснастки управления дисками появилась не размеченная область. Расширение тома из GUI было недоступно. Из утилиты DISKPART тоже не доступно. Попробовал EPM - скончалась файловая система (NTFS). Откатился к ранее созданному снепшоту.

    ОтветитьУдалить