Краткая справка.
Есть файл VMDK. Это файл,который является образом жёсткого диска для таких программ как виртуальные машины Oracle virtualbox, vmware и т.п. Соответственно, виртуальная машина — это программа, которая нужна, чтобы внутри, например, windows 7, установленной на компьютере, запустить windows xp.
Зачем это нужно? Ну, например, для обкатки каких-то приложений или для спама, или для того, чтобы посмотреть, как выглядит linux, но не устанавливать его.
В общем, задача была такая:
На моём ноуте установлена винда семёрка. А для использования одного бота используется в виртуальной машине Windows XP. И вот потребовалось мне туда поставить Microsoft dot net. А ему места не хватает — вылетает с ошибкой. Следовательно, нужно увеличить размер файла-образа.
И вот тут началась эпопея, решение которой расскажу в этой статье.
В качестве виртуальной машины у меня используется Virtualbox. Родной формат образов дисков для этой программы — .vdi. Искать и ставить VMWare, чтобы изучать, можно ли там менять размер VMDK-файла я не стал.
Что я сделал?
Шаг 1. В главном окне Oracle VM VirtualBox Manager нажал на файл, выбрал Менеджер виртуальных носителей
Шаг 2. Выделил строку с нужным файлом-образом и нажал копировать
Шаг 3. Протыкал по кнопкам в выскочившем окне. И получилось, что я преобразовал (скопировал) VMDK-файл в VDI-файл.
Теперь нужно изменить его размер.
Для этого в Virtualbox используется программа, которая называется vboxmanage.exe, она лежит в папке с программой virtualbox
Запускаем командную строку Windows (для этого можно нажать кнопки win r), вводим три буквы CMD, нажимаем Enter
Открывается окно консоли CMD
В ней мы перемещаемся в папку, в которой находится нужный нам файл vboxmanage.exe
Теперь нужно найти необходимый файл vdi, который мы недавно создали из vmdk. Он находится в той же папке, что и сам vmdk-файл. Нам нужен адрес этого файла вместе с путём к нему.
Теперь собираем всю команду на преобразование размера файла. Перед её запуском закройте саму программу virtualbox
У меня это выглядит так:
Нажимаем ввод.
Собственно, всё. Теперь файл — нужного размера. В примере я увеличил его до 5 гигабайт (5120 мегабайт).
Если угодно, можно его теперь снова скопировать, сделав снова vmdk-файл, но уже большего размера.
Прошу прощения за рекламу на сайте. Я постарался сделать это максимально ненавязчиво и по минимуму. При чтении заинтересовавших вас статей она не будет вам мешать.
И если есть возможность поставить мой сайт в исключения у блокировщика рекламы, я буду очень признателен вам.
Столкнулся с проблемой изменения размера диска vmdk в гостевой ОС. Изначально сделал 4 Гб, а сейчас понял, что мало.
1. Т.к. vmdk не родной формат для virtualbox, нам нужно его конвертировать в vdi- формат.
VBoxManage clonehd "/ПолныйПутьКДиску/НашДиск.vmdk" "/ПолныйПутьКДиску/НашДиск.vdi" --format vdi
2. Теперь можем изменить размер vdi-диска.
VBoxManage modifyhd "/ПолныйПутьКДиску/НашДиск.vdi" --resize 40000
3. Этот пункт двоякий: или мы конвертируем наш vdi-диск обратно в vmdk-формат, или же в настройках нашей гостевой ОС, выбираем созданный диск vdi.
Первый путь:
VBoxManage clonehd "/ПолныйПутьКДиску/НашДиск.vdi" "/ПолныйПутьКДиску/НашДиск.vmdk" --format vmdk
Второй путь:
Правой клавишей мышки нажимаем на ярлычке виртуальной машины в Менеджере VirtualBox.
В открывшемся меню нажимаем «Свойства», далее «Носители», потом в разделе «Носители информации» выбираем наш диск, а в разделе «Атрибуты», нажав на кнопку типа «стопки из трёх дисков», выбираем пункт «Выбрать образ жёсткого диска…».
Выбираем наш новый диск vdi.
А это менюшка
Кажется ничего не упустил :).
Изменить размер диска vmdk
28 марта 2013, 23:29
Александр
Linux
0
432
0
Из этой категории
-
Opera не русифицируется в Linux
Как исправить ошибку запуска VirtualBox VM в Linux
Не могу записать ничего на ext4
Как установить или удалить ядро Liquorix Linux Mint
13 горячих клавиш в bash Linux
Советы и приемы настройки командной строки в Bash Linux
Как определить папки занимающие большое пространство на диске, в Linux
Как скопировать файлы с помощью команды ср в Linux
Автоматическая перезагрузка при kernel panic
Opera не показывает некоторые видео в linux
В этой статье мы рассмотрим, как уменьшить размер виртуального диска (vmdk) в VMWare ESXi. В отличии от процедуры расширения диска виртуальной машины VMWare, которую можно выполнить на-лету без выключения ВМ, процедура уменьшения размера vmdk файла на гипервизоре VMWare ESXi задача более сложная, и выполнить ее непосредственно через графический интерфейс vSphere Client в принципе нельзя. Клиент vSphere не позволяет вам указать меньший размер виртуального диска.
Содержание:
- Уменьшение раздела внутри гостевой ОС
- Уменьшение размера VMDK файла виртуальной машины VMware
- Уменьшение размера виртуального диска с помощью VMware vCenter Converter Standalone
Важно. Данная инструкция не является официально поддерживаемым решением по сжатию vmdk дисков в VMWare. Однако я применял этот способ уже не один десяток раз. При написании этой статьи использовалась версия VMWare ESXi 6.7.
Перед тем, как уменьшить размера виртуального диска на хосте VMWare ESXi необходимо:
- Удалить все снапшоты виртуальной машины (иначе вы можете повредить виртуальный диск)
- Создать полную резервную копию виртуальной машины, или предварительно сделайте копию vmdk и flat файла, который вы хотите уменьшить. Воспользуйтесь командами:
cp vmname.vmdk backup_vmname.vmdk
cp vmname-flat.vmdk backup_vmname-flat.vmdk
Процедура уменьшения размера виртуального диска состоит из двух этапов:
- Уменьшение раздела внутри гостевой ОС;
- Уменьшение размера VMDK файла виртуальной машины VMware на VMFS (NFS) хранилище.
Уменьшение раздела внутри гостевой ОС
В первую очередь необходимо уменьшить размер дискового раздела внутри гостевой операционной системы. Если у вас в ВМ запущена Windows, воспользуйтесь диспетчером управления дисков diskmgmt.msc (операция Shrink Volume доступна во всех поддерживаемых версиях Windows, для старых версий Windows для уменьшения размера раздела используется утилита sdelete) или используйте сторонние утилиты (например, Acronis Disk Director). Если этого не сделать, то после уменьшения размера виртуального диска можно получить неработоспособную файловую систему.
Допустим, вы хотите хотим уменьшить размер диска на 40 Гб. Значит размер тома должен быть уменьшен на 40960 Мб (40 Гб x 1024). Именно это значение нужно ввести в поле мастера Shrink Volume. После уменьшения размера раздела на диске справа от вашего основного раздела останется некоторое количество неразмеченного (Unallocated) пространства (в нашем примере 40 Гб).
В Linux вы можете уменьшить размер раздела с помощью parted. Если используются LVM тома, то сценарий другой.
Уменьшение размера VMDK файла виртуальной машины VMware
Теперь нужно уменьшить размера VMDK файла на файловой системе VMWare VMFS.
- Выключите виртуальную машину, размер виртуального диска которой вы хотите уменьшить;
- Подключитесь по SSH к консоли гипервизора ESXi, на котором зарегистрирована ВМ (можно воспользоваться putty или встроенным ssh клиентом Windows);
- Перейдите в каталог, в котором хранится vmdk файл ВМ (путь можно узнать в свойствах виртуального диска в графическом клиенте vSphere)
cd /vmfs/volumes/datastore/test-VM
- Выведите содержимое конфигурационного файла виртуального диска (с расширением *.vmdk) с помощью команды cat:
# cat test_vm_3.vmdk
Размер vmdk диска задается в секции #Extent description (после символов RW). В данном случае указана цифра 167772160 (80 Гб *1024*1024*1024 / 512) - Я хочу уменьшить виртуального vmdk диска с 80 до 40 Гб. Это значит, что в секции Extent description нужно указать значение: 83886080 (40 Гб*1024*1024*1024 / 512). Задайте новый размер виртуального диска с помощью текстового редактора (
vi
или
nano
); - Я использую редактор vi:
# vi test_vm_3.vmdk
- В редакторе vi с помощью стрелки вниз перейдите на строку с размером диска и нажмите
i
(для перехода в режим редактирования). Укажите новый размер виртуального диска. Нажмите
ESC
, чтобы выйти из режима редактирования и
:wq
-> Enter чтобы сохранить изменения; - Осталось склонировать или смигрировать (Storage VMotion) виртуальную машину на другое хранилище (datastore). После перемещения файлов виртуальной машины в ее свойствах отобразится новый размер виртуального диска;
Совет. Если у вас всего один ESXi хост, одно VMFS хранилище или нет vCenter, то вы не сможете сделать операцию Storage vMotion. В таком случае можно склонировать vmdk диск командой:
vmkfstools -i test_vm_3.vmdk test_vm_3_newsize.vmdk
Удалите оригинальный vmdk диск и еще раз склонируйте оставшийся vmdk диск, вернув ему прежнее имя:
rm test_vm_3.vmdk
rm test_vm_3-flat.vmdk
vmkfstools -i test_vm_3_newsize.vmdk test_vm_3.vmdkУбедитесь, что в свойствах ВМ теперь отображается новый размер виртуального диска;
- Осталось запустить гостевую ОС и убедиться, что неразмеченная область пропала, а размер диска уменьшился.
Совет. Если на предыдущем шаге использовалась утилита vmkfstools, нужно переподключить виртуальный диск в настройках ВМ, т.к. его новый размер может отображаться некорректно.
Итак, мы рассмотрели один из вариантов выполнения операции уменьшения размера виртуального vmdk диска в VMWare ESXi. Если требует уменьшить размер тонкого диска VMWare за счет неиспользуемого места, рекомендуем воспользоваться этой инструкцией.
Примечание. В качестве распространенных альтернативных методик сжатия виртуальных vmdk дисков часто используются такие схемы:
- Уменьшение размера виртуального диска путем конвертации виртуальной машины с помощью VMware vCenter Converter. При конвертации нужно указать размер нового диска меньше, чем исходный (об этом в следующем разделе);
- Можно склонировать содержимого виртуального диска с помощью стороннего софта (например, Acronis True Image или Symantec Ghost32). Операция выполняется путем добавления в виртуальную машину нового диска меньшего размера и клонирования на него содержимого большего диска. После этого большой диск можно удалить.
Уменьшение размера виртуального диска с помощью VMware vCenter Converter Standalone
Еще один способ уменьшения размера виртуальных дисков у ВМ на VMWare с помочью GUI — воспользоваться бесплатным конвертером — VMware vCenter Converter Standalone.
Недостаток:
- Конвертация V2V выполняется медленно;
- На датасторе должно быть достаточно места для разрешения новой ВМ;
- У новой ВМ будет новый MAC адрес.
Плюсы:
- не требуется открывать в консоль vCenter или ESXi хоста;
- создается точная копия VM;
- источник не поломается при ошибке в настройках параметров задачи конвертирования.
Примечание. Виртуальная машина, которую вы хотите сконвертировать (изменять размеры дисков и т.д.), должна быть выключена (с помощью Shut down или Power Off, но не Suspend).
Укажите адрес ESXi хоста.
Выберите исходную ВМ.
Укажите параметры новой ВМ.
Перейдите в режим редактирования диска (Data to copy -> Edit).
Выберите режим копирования: Select volumes to copy.
Укажите новый размер диска в новой ВМ. Как вы видите, на диске в гостевой занято 48 гб, а размер самого диска – 150. Мы уменьшим размер виртуального диска до 60 Гб.
Запустите процесс конвертирования ВМ. После окончания отключите исходную ВМ и включите новую. Проверьте, что размер диска уменьшился. После этого исходную ВМ можно удалить.
Примечание. Отметим, что в последней версии гипервизора Microsoft есть технология динамического изменения (как расширения, так и сжатия) виртуальных дисков под названием Hyper –V Online VHDX Resize.
Когда я начал работать с ESXi, столкнулся с проблемой нехватки дискового пространства из-за сильно разросшихся тонких дисков. Вообще, лучше создавать диски меньшего размера, потому что увеличить диск в ESXi намного проще, чем уменьшить. Но что же делать, если все-таки возникла необходимость уменьшить диск? Причем, мое положение усугубляли LVM разделы на сервере, которые не распознавал Acronis, и, следовательно, не мог изменить размер раздела.
Опишу способ, которым воспользовался я:
1 этап) Уменьшение диска внутри виртуальной машины
Сперва нужно уменьшить диск внутри самой виртуальной машины, для этого существует множество универсальных программ: Acronis disc director, paragon partition manager, встроенная утилита управления дисками в windows и т.д. Мне ни одна из этих программ не помогла, поэтому пришлось использовать средства линукса и LiveCD.
1) Для начала нужно загрузиться с livecd linux, я использовал для этого centos 7. При загрузке виртуальной машины клавиша ESC для появления меню загрузки.
2) Активируем LVM разделы
vgchange -a y
3) Проверка активированных логических томов
lvscan
4) Проверяем файловые системы
fsck -fy /dev/test/root
fsck -fy /dev/test/home
5) Уменьшаем размер файловой системы
resize2fs /dev/test/home 20G
6) Уменьшаем размер тома до размера файловой системы
lvreduce -L 20G /dev/test/home
Также мы можем добавить это место к другом тому
Для этого:
Увеличиваем том root:
lvextend -L +10G /dev/test/root
Увеличиваем размер файловой системы на томе root до размера тома:
resize2fs /dev/test/root
7) Опять проверяем целостность файловой системы
fsck -fy /dev/test/root
fsck -fy /dev/test/home
Далее можно запустить виртуальную машину и убедиться, что все корректно работает
df -h
2 этап) уменьшение provisioning space.
10) Выключаем виртуальную машину
11) Подключаемся по SSH к физическому серверу, на котором установлен ESXi
12) Переходим в каталог, в котором хранится vmdk файл ВМ (путь можно узнать в свойствах виртуального диска в графическом клиенте vSphere). У меня это
cd /vmfs/volumes/datastore1*/
cd VM_name/
Каталог имеет подобную структуру:
Структура каталога виртуальной машины
/vmfs/volumes/53114b32-24d88d5a-2cbe-0025b500004f/MTS-SCPortal-TEST3 # ls -l
total 19810320
-rw-r—r— 1 root root 27 Dec 20 20:46 VM_name-0b1f4705.hlog
-rw——- 1 root root 6442450944 Feb 2 08:24 VM_name-0b1f4705.vswp
-rw——- 1 root root 147102629888 Feb 2 08:28 VM_name-flat.vmdk
-rw——- 1 root root 8684 Feb 2 08:25 VM_name.nvram
-rw——- 1 root root 507 Feb 2 08:25 VM_name.vmdk
-rw-r—r— 1 root root 0 Dec 20 20:14 VM_name.vmsd
-rwxr-xr-x 1 root root 3584 Feb 2 08:25 VM_name.vmx
-rw——- 1 root root 0 Feb 2 08:24 VM_name.vmx.lck
-rw-r—r— 1 root root 273 Dec 20 20:14 VM_name.vmxf
-rwxr-xr-x 1 root root 3584 Feb 2 08:25 VM_name.vmx~
-rw——- 1 root root 3424256 Feb 2 08:24 vmmcores-1.gz
-rw-r—r— 1 root root 240722 Dec 20 20:46 vmware-1.log
-rw-r—r— 1 root root 1252287 Feb 2 08:24 vmware-2.log
-rw-r—r— 1 root root 43555 Feb 2 08:24 vmware-3.log
-rw-r—r— 1 root root 151873 Feb 2 08:25 vmware.log
-rw——- 1 root root 122683392 Feb 2 08:24 vmx-VM_name-186599173-1.vswp
/vmfs/volumes/53114b32-24d88d5a-2cbe-0025b500004f/VM_name #
13) Просмотрим содержимое конфигурационного файла с расширением *.vmdk с помощью команды cat или vi:
cat VM_name.vmdk
Пример содержимого конфигурационного файла виртуальной машины
# Disk DescriptorFile
version=1
encoding=«UTF-8»
CID=829544ab
parentCID=ffffffff
isNativeSnapshot=«no»
createType=«vmfs»
# Extent description
RW 44000000 VMFS «VM_name-flat.vmdk»
# The Disk Data Base
#DDB
ddb.adapterType = «lsilogic»
ddb.geometry.cylinders = «17884»
ddb.geometry.heads = «255»
ddb.geometry.sectors = «63»
ddb.longContentID = «c78bccbfd4724f0ee20a1ef2829544ab»
ddb.thinProvisioned = «0»
ddb.uuid = «60 00 C2 98 20 ac 05 4a-e5 39 e4 40 e8 a2 d8 d0»
ddb.virtualHWVersion = «8»
14) Размер vmdk диска задается в секции #Extent description (после символов RW). Меняем это значение, например, чтобы установить размер диска в 20Гб ставим 41943040 (20 Гб*1024*1024*1024 / 512)
vi VM_name.vmdk
Я ставлю значение немного больше, чем размер, вычисленный по методике выше (41943040 (20 Гб*1024*1024*1024 / 512)), на всякий случай.
15) Осталось склонировать или смигрировать виртуальную машину, после чего отобразится новый размер диска.
Физическое уменьшение тонкого диска без изменения provisioning
Также возможно только уменьшить размер файла виртуальной машины, путем удаления нулевых блоков.
Для этого:
1) Нужно заполнить все неиспользованное пространство, внутри виртуальной машины, нулями. Создаем файл по размерам неиспользуемой области диска, а потом удаляем его.
cat /dev/zero > /file
cd /
rm file
2) Подключаемся по SSH к консоли ESXi как описано выше и переходим в каталог с виртуальной машиной.
3) В консоли гипервизора есть специальная утилита, которая позволяет затереть нулевые блоки, тем самым уменьшив физический размер тонкого диска.
Делается это с помощью ключа -K (можно также использовать ключ —punchzero) в консоли сервера ESXi
vmkfstools -K VM_name.vmdk
Надо отметить, что утилита vmkfstools, запущенная с ключом -K, еще и может преобразовать обычный диск (zeroedthick или eagerzeroedthick) в thin disk с вычищением нулевых блоков и, соответственно, уменьшением размера vmdk.
P.S. Надеюсь данная статья будет кому-то полезной. Во всяком случае, я потратил много времени, прежде чем мне удалось корректно уменьшить размер тонкого диска.
Увеличение размера диска в виртуальной машине под управлением VMware.
Для увеличения размера диска в виртуальной машине под управлением VMware, необходимо выполнить несколько важных шагов. Во-первых, необходимо увеличить размер диска в vSphere Client. Эта операция увеличит размер жесткого диска на уровне оборудования. Затем необходимо увеличить размер раздела.
Небольшая заметка, если сервер поддерживает “hot swap“, можно легко добавить новый жесткий диск к виртуальной машине. В противном случае, будет означать, что мы не можем увеличить размер LVM без перезагрузки. Если увеличим размер присоединенного диска (как в примере ниже), необходимо перезагрузить сервер или, по крайней мере, перечитать таблицу разделов.
В Linux можно повторно сканировать жесткие диски без перезагрузки гостевой виртуальной машины. Прочтите статью об этом, если вы не хотите, перезагружать VM после добавления нового жесткого диска или увеличения текущего размера диска: Обновление дисков виртуальных машин на Linux без перезагрузки в инфраструктуре VMware
Шаг 1. Проверка необходимости добавления нового диска, либо добавления нового
Довольно важный пункт, поскольку диск, который уже был разделен на 4 основных раздела не может быть увеличен. Чтобы проверить это, запустим fdisk -l
Диск /dev/sda: 21.5 ГБ, 21474836480 байт
255 heads, 63 sectors/track, 2610 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00028975
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 * 1 64 512000 83 Linux
Раздел 1 не заканчивается на границе цилиндра.
/dev/sda2 64 2611 20458496 8e Linux LVM
Диск /dev/mapper/vg_specialfeeling-lv_root: 18.8 ГБ, 18798870528 байт
255 heads, 63 sectors/track, 2285 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Диск /dev/mapper/vg_specialfeeling-lv_swap: 2147 МБ, 2147483648 байт
255 heads, 63 sectors/track, 261 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Насколько видно из вывода команды, то у нас только два раздел, поэтому увеличение диска в данном случае возможно.
Шаг 2. “Физическое” добавление диска на виртуальную машину
Увеличиваем диск виртуальной машины через vSphere клиент
Если «Provisioned Size» недоступно, необходимо выключить виртуальную машину (так как не поддерживается «горячее» добавление дисков), и проверить, если есть какие-то снепшоты, сделанные в этой виртуальной машине. Невозможно изменить размер диска пока доступны снепшоты.
Альтернатива, если уже есть четыре раздела, можно выбрать «Add…» и добавить новое оборудование «Virtual Disk» в виртуальную машину, чтобы увеличить размер диска.
Шаг 3. Создание разделов на нераспределенном пространстве
После того как мы изменили размер диска, необходимо включить виртуальную машину еще раз, или перезагрузить, если она работала. Системе необходимо загрузиться с нового диска, для того чтобы он мог обнаружить добавленное (незанятое) дисковое пространство.
После загрузки можно проверить, есть ли дополнительное пространство на диске.
Проверяем:
Диск /dev/sda: 42.9 ГБ, 42949672960 байт
255 heads, 63 sectors/track, 5221 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00028975
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 * 1 64 512000 83 Linux
Раздел 1 не заканчивается на границе цилиндра.
/dev/sda2 64 2611 20458496 8e Linux LVM
Диск /dev/mapper/vg_specialfeeling-lv_root: 18.8 ГБ, 18798870528 байт
255 heads, 63 sectors/track, 2285 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Диск /dev/mapper/vg_specialfeeling-lv_swap: 2147 МБ, 2147483648 байт
255 heads, 63 sectors/track, 261 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Как видим — объем диска изменился, теперь создадим раздел, используя утилиту fdisk
для устройства /dev/sda
. Пожалуйста, обратите внимание, что система может иметь только 4 основных разделов на диске! Если уже достигнут предел, необходимо создать расширенный раздел.
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Команда (m для справки): n
Действие команды
e расширенный
p основной раздел (1-4)
p
Номер раздела (1-4): 3
Первый цилиндр (2611-5221, по умолчанию 2611):
Используется значение по умолчанию 2611
Last цилиндр, +цилиндры or +size{K,M,G} (2611-5221, по умолчанию 5221):
Используется значение по умолчанию 5221
Значение цилиндров могут отличатся в системе. FDISK даст значение по умолчанию для первого и последнего цилиндра (как раз будет использоваться добавленное дисковое пространство).
Теперь изменим тип раздела. Вводим номер раздела, берем из предыдущего шага. Когда необходимо будет вводить «Hex code», вводим 8e
, и подтверждаем.
Команда (m для справки): t
Номер раздела (1-4): 3
Шестнадцатеричный код (введите L для получения списка кодов): 8e
Системный тип раздела 3 изменен на 8e (Linux LVM)
Команда (m для справки):
Возвращаемся в главное меню и нажимаем w
для записи раздела на диск. Получим сообщение, что ядро все еще использует старую таблицу раздела, необходимо перезагрузить машину для применения новой таблицы.
После перезагрузки, можно увидеть новый раздел, используя команду fdisk
.
Диск /dev/sda: 42.9 ГБ, 42949672960 байт
255 heads, 63 sectors/track, 5221 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00028975
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 * 1 64 512000 83 Linux
Раздел 1 не заканчивается на границе цилиндра.
/dev/sda2 64 2611 20458496 8e Linux LVM
/dev/sda3 2611 5221 20966162+ 8e Linux LVM
Диск /dev/mapper/vg_specialfeeling-lv_root: 18.8 ГБ, 18798870528 байт
255 heads, 63 sectors/track, 2285 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Диск /dev/mapper/vg_specialfeeling-lv_swap: 2147 МБ, 2147483648 байт
255 heads, 63 sectors/track, 261 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Расширяем Logical Volume
Теперь создаем физический том как основной для LVM командой pvcreate /dev/sda3
Physical volume "/dev/sda3" successfully created
Узнаем Volume Group
--- Volume group ---
VG Name vg_specialfeeling
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 19,51 GiB
PE Size 4,00 MiB
Total PE 4994
Alloc PE / Size 4994 / 19,51 GiB
Free PE / Size 0 / 0
VG UUID NUd3j0-54xM-f9WZ-iVXR-Tm09-YL2C-FpQYHj
И расширяем Volume Group только что добавленным томом, выполнив команду vgextend VolumeGroupName /dev/sda3
Volume group "vg_specialfeeling" successfully extended
Используя команду pvscan
, можно обнаружить новый том и дисковое пространство (20Гб в нашем случае).
PV /dev/sda2 VG vg_specialfeeling lvm2 [19,51 GiB / 0 free]
PV /dev/sda3 VG vg_specialfeeling lvm2 [19,99 GiB / 19,99 GiB free]
Total: 2 [39,50 GiB] / in use: 2 [39,50 GiB] / in no VG: 0 [0 ]
Следующим действием, расширяем Logical Volume командой lvextend /dev/VolGroup00/LogVol00 /dev/sda3
.
(Для поиска LogVol00 значения используем команду lvdisplay -v
)
Using logical volume(s) on command line.
Finding all volume groups.
--- Logical volume ---
LV Path /dev/vg_specialfeeling/lv_root
LV Name lv_root
VG Name vg_specialfeeling
LV UUID Z5c3hO-xmeP-EPKb-qMmA-d3Uv-wutX-YS4W30
LV Write Access read/write
LV Creation host, time special-feeling, 2015-10-01 21:55:58 +0300
LV Status available
LV Size 17,51 GiB
Current LE 4482
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
--- Logical volume ---
LV Path /dev/vg_specialfeeling/lv_swap
LV Name lv_swap
VG Name vg_specialfeeling
LV UUID gYbe2C-kkni-Aumv-wiDC-beq6-qsus-idyCk0
LV Write Access read/write
LV Creation host, time special-feeling, 2015-10-01 21:56:05 +0300
LV Status available
LV Size 2,00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
Size of logical volume vg_specialfeeling/lv_root changed from 17,51 GiB (4482 extents) to 37,50 GiB (9600 extents).
Logical volume lv_root successfully resized
Если испольузется убунтоподобная система, то выполняем команду lvextend /dev/mapper/vg-name /dev/sda3
Чтобы использовать новое дисковое пространство, необходимо только изменить размер файловой системы в группе томов.
Запускаем ресайз командой: resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg_specialfeeling/lv_root is mounted on /; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 3
Performing an on-line resize of /dev/vg_specialfeeling/lv_root to 9830400 (4k) blocks.
The filesystem on /dev/vg_specialfeeling/lv_root is now 9830400 blocks long.
Увеличение диска завершено — проверяем!
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_specialfeeling-lv_root
37G 809M 35G 3% /
tmpfs 939M 0 939M 0% /dev/shm
/dev/sda1 477M 57M 395M 13% /boot
Если используется файловая система XFS
, как правило на CentOS 7 она идет по умолчанию, то при запуске команды resize2fs
появится ошибка:
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Устройство или ресурс занято while trying to open /dev/sda3
Couldn't find valid filesystem superblock.
Вместо resize2fs
используйте команду xfs_growfs
:
meta-data=/dev/mapper/centos-root isize=256 agcount=4, agsize=1799936 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=7199744, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=3515, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 7199744 to 9820160
В свое время у меня сложилась ситуация, когда, работая с VirtualBox (Oracle VM VirtualBox), у виртуальной машины остался совсем небольшой объем дискового пространства, при этом задача стояла установить программное обеспечение, для которого требовалось в несколько раз больше свободного места, чем на тот момент оставалось на виртуальном диске.
Для тех, кто не в курсе:
- VMDK (Virtual Machine Disk)
- — формат файла, разработанный компанией VMware для использования в качестве образа виртуального диска в виртуальных машинах VMware.
- VDI (Virtual Disk Image)
- — специальный контейнер программы VirtualBox, используемый в качестве образа виртуального диска в виртуальных машинах Virtualbox.
В ходе создания и настройки виртуальной машины из предложенных вариантов образов виртуальных дисков я выбрал формат VMDK, пользуясь при этом VirtualBox v.4.3.10 r93012 в Windows 7 Корпоративная с Service Pack 1.
Немного поискав в Интернет я нашел решение, состоящее из нескольких шагов:
-
Используя VirtualBox и командную строку Windows (cmd) необходимо через обращение к файлу VBoxManage.exe расширить образ *.VMDK, но VBoxManage.exe работает только с «родными» образами *.VDI, поэтому предварительно *.VMDK нужно переконвертировать в *.VDI.
-
Подключить к виртуальной машине расширенный образ жесткого диска *.VMDK и с помощью программ для работы с разделами жесткого диска уже из виртуальной машины расширить дисковое пространство существующих разделов до допустимых размеров.
# Как запустить VirtualBox.exe от имени администратора?
ВНИМАНИЕ! Чтобы избежать проблем с политиками безопасности Windows и ограничений на запуск исполняемых файлов, необходимо для файла VirtualBox.exe (в моем случае он находится в папке C:Program FilesOracleVirtualBox) выполнить следующие операции:
- наведите курсор на файл и выделите файл VirtualBox.exe нажатием на левую клавишу мыши;
- не уводя курсор мыши с файла нажмите на правую клавишу мыши, вызвав контекстное меню;
- в появившемся меню выберите найдите и нажмите на пункт Свойства;
- открыть вкладку Совместимость;
- можете смотреть рисунок в конце списка или читать дальше по пунктам;
- нажать на кнопку Изменить параметры для всех пользователей;
- в появившемся окне найти и установить галочку в пункте Выполнять эту программу от имени администратора;
-
закрыть оба окна на кнопки ОК.
Для выполнения шага 1 необходимо открыть командную строку:
- WinKey (найти на клавиатуре и нажать на кнопку Windows в виде флажка, либо привычным для Вас способом открыть меню пуск)
- ввести в текстовое поле текст cmd.
-
нажать сочетание клавиш
Ctrl
+Shift
+Enter
и ввести команду для перемещения в папку с установленной программой VirtualBox (в моем случае это папка C:Program FilesOracleVirtualBox):
cd "C:Program FilesOracleVirtualBox"
и нажав Enter. Далее ввести команду:
VBoxManage modifyhd "C:UsersschritterVirtualBox VMsXProXPro.vmdk" --resize 15360
В моем случае цифра 15360 означает, что размер файла станет 15 Гб. Нажать Enter.
# Что означает ошибка VBOX_E_NOT_SUPPORTED?
Почему появилась ошибка VBOX_E_NOT_SUPPORTED при выводе результатов работы команды?
- 0%…
- Progress state: VBOX_E_NOT_SUPPORTED
- VBoxManage.exe: error: Resize hard disk operation for this format is not implemented yet!
Эта ошибка связана с тем, что файл, который я пытался преобразовать, не является «родным» форматом *.VDI, поэтому, к сожалению, нельзя с ним так просто работать и его нужно преобразовать. Следующие команды нам в этом помогут:
- VBoxManage clonehd «C:UsersschritterVirtualBox VMsXProXPro.vmdk» «C:UsersschritterVirtualBox VMsXProclone.vdi» —format vdi
- VBoxManage modifyhd «C:UsersschritterVirtualBox VMsXProclone.vdi» —resize 15360
- VBoxManage clonehd «C:UsersschritterVirtualBox VMsXProclone.vdi» «C:UsersschritterVirtualBox VMsXProXPro.vmdk» —existing
И наконец долгожданная строка со статусом выполнения задания означает, что операция успешно завершена:
-
0%…10%…20%…30%…40%…50%…60%…70%…80%…90%…100%
Так как ранее мы настроили запуск программ от имени администратора, это помогло нам избежать ошибки CO_E_SERVER_EXEC_FAILURE.
# Что означает ошибка CO_E_SERVER_EXEC_FAILURE?
Если в ходе выполнения скрипта Вы наблюдаете следующие ошибки:
- VBoxManage.exe: error: Failed to create the VirtualBox object!
- VBoxManage.exe: error: Code CO_E_SERVER_EXEC_FAILURE (0x80080005) — Server execution failed (extended info not available)
-
VBoxManage.exe: error: Most likely, the VirtualBox COM server is not running or failed to start.
это значит, что Вам нужно обратить внимание на алгоритм Как запустить VirtualBox.exe от имени администратора?, находящийся недалеко от начала этой страницы. Вкратце — настройте запуск VirtualBox.exe от имени Администратора.
# Что означает ошибка VERR_ALREADY_EXISTS?
Эта ошибка появилась, в моем случае, когда файл конечного образа XPro.vmdk уже существовал, и команда для конвертации файла из *.VDI в *.VDMK не смогла перезаписать его:
- VBoxManage clonehd «C:UsersschritterVirtualBox VMsXProclone.vdi» «C:UsersschritterVirtualBox VMsXProXPro.vmdk» —format vmdk
Красным выделен ошибочный фрагмент. Так как файл уже существует, команду необходимо выполнять в следующей редакции:
- VBoxManage clonehd «C:UsersschritterVirtualBox VMsXProclone.vdi» «C:UsersschritterVirtualBox VMsXProXPro.vmdk» —existing
После этого все благополучно сконвертировалось обратно:
- 0%…10%…20%…30%…40%…50%…60%…70%…80%…90%…100%
- Clone hard disk created in format ‘VMDK’. UUID: 8a4c86c3-26fd-4bfc-8e78-e95cdb654f02