- Увеличение размера виртуального диска в VirtualBox для гостевой операционной системы Oracle Linux
- Правильное увеличение размера диска в виртуальной машине
- netzgewitter
- Resizing a Linux Partition (Running in VirtualBox)
- Step 1: Enlarging the Virtual Drive
- Step 2: Resizing the Partition
- Step 3: Enlarging the File System
Увеличение размера виртуального диска в VirtualBox для гостевой операционной системы Oracle Linux
В данном посте пошагово описывается способ расширения размера дискового раздела root операционной системы Oracle Linux за счет увеличения виртуального диска VirtualBox.
Могут возникнуть случаи, когда заранее выделенного места на дисковом пространстве гостевой операционной системы (далее ОС) Oracle Enterprise Linux (далее OEL) в виртуальной машине может быть недостаточно. В такой ситуации, есть возможность расширить дисковое пространство (виртуальный диск) на гостевой операционной системе средствами VirtualBox и системными средствами ОС OEL, не пересоздавая виртуальную машину. Под гостевой ОС подразумевается операционная система, которая устанавливается, настраивается и работает на виртуальной машине. В данном посте описывается ситуация, когда заполняется дисковое пространство на корневом дисковом разделе root. Для расширения дискового пространства системного диска гостевой ОС Oracle Linux, надо выполнить следующие шаги:
- Проверить текущий размер диска гостевой ОС.
- Настроить диск виртуальной машины в VirtualBox.
- Расширить системный диск гостевой операционной системы.
1. Проверка текущего размера расширяемого локального диска гостевой ОС.
Проверяется текущий размер дискового раздела root гостевой ОС с помощью инструментов командной строки.
Анализируя полученный результат, можно заключить, что в корневом разделе (/) (в данном случае /dev/mapper/ol-root) свободно 350М из имеющихся 8 Гб.
Проверяется размер диска в гостевой Oracle Linux.
Результат команды fdisk показывает, что размер виртуального диска /dev/sda 10.7 Гб и из них 8585 MB (то есть 8 Гб) используется корневым разделом – /dev/mapper/ol-root: 8585 MB.
После этого можно приступать к расширению дискового пространства корневого раздела.
2. Настройка диска виртуальной машины в VirtualBox.
Необходимо остановить гостевую операционную систему Oracle Linux. Надо убедиться, что виртуальная машина выключена, а не находится в состоянии сохранения. Также перед продолжением, необходимо удалить снэпшоты (snapshots), которые ассоциируются с виртуальной машиной, если они используются в VirtualBox. Это поможет определить, что модифицируется корректный виртуальный диск, и что все будет правильно работать после модификации.
Для настройки расширения диска виртуальной машины в VirtualBox, надо войти в меню «Файл» и выбрать «Менеджер виртуальных носителей», как показано на скриншоте ниже.
В «Менеджере виртуальных носителей» можно увидеть все виртуальные диски существующих виртуальных машин. В данном примере их три. Изменение размера виртуального диска будет выполняться для OEL-fdisk.vdi, у которой размер диска 10 Гб. Выбирается OEL-fdisk.vdi и по нажатию на «Свойства» можно получить доступ к дополнительной информации и опциям, среди которых есть и изменение размера диска.
Размер диска увеличивается на 2 Гб в пункте «Размер», то есть был 10 Гб и теперь назначается 12 Гб.
3. Расширение корневого раздела (/) гостевой операционной системы внутри виртуальной машины.
Теперь необходимо запустить виртуальную машину на Oracle Linux и распределить появившееся дисковое пространство. Для этого можно использовать утилиту fdisk и проверить размер раздела диска /dev/sda, где находится корневой раздел (/).
Видно, что размер диска изменился с 10 на 12 Гб. Теперь надо сделать это новое пространство видимым для системы и нужного раздела. Запускается утилита fdisk для удаления и пересоздания LVM, данные пользователей останутся без изменений.
Выбирается ключ «m» для получения списка команд. Из списка выбирается ключ «p» для вывода данных таблицы разделов (партицирования).
Удаляется второй раздел ключом «d», т.к. основной раздел по умолчанию находится во втором разделе:
Создается новый основной раздел ключом «n» и начальные и конечные значения секторов оставляются по умолчанию:
После создания нового раздела проверяются текущие значения таблицы разделов (партицирования):
Меняется системный идентификатор для созданного раздела с помощью ключа «t» и шестнадцатеричного кода 8e, который обозначает Linux LVM. Таким образом, тип раздела сменится с Linux на Linux LVM.
Все изменения на диск записываются ключом «w».
Новые изменения разделов вступят в силу после следующей перезагрузки операционной системы. В связи с этим перезагружается операционная система.
После перезагрузки ОС проверяются настройки физического раздела диска.
и изменяется размер физического диска:
Проверяются размер и другие настройки логического размера диска.
Далее расширяется логический диск с помощью команды lvextend:
Ошибка выше возникает из-за того, что в этой логической группе уже есть логический том, который занимает место и не дает расшириться на 10 Гб. В данном случае можно распределить логическому тому все свободное дисковое пространство, используя приведенную ниже команду:
Проверяются настройки логического размера диска после его расширения:
Применяются изменения для логического раздела диска.
Проверяются размеры разделов из чего видно, что корневой раздел (/) (в данном случае /dev/mapper/ol-root) расширился с 8 Гб на 10 Гб и свободно стало 2.4 Гб вместо 350 Мб.
На этом завершается процесс увеличения размера корневого диска гостевой операционной системы Oracle Enterprise Linux, работающей в VirtualBox.
Источник
Правильное увеличение размера диска в виртуальной машине
Не претендуя на полноту, все же считаю, что это может пригодиться системным администраторам.
Увеличение размера диска в виртуальной машине происходило при следующих вводных: формат файла виртуалки qcow2, виртуальная машина использует lvm и ext4, root partition находится в extended partition. Действо обычно происходит ночью, когда нагрузка минимальна и даунтайм не сильно давит на нервы. Хотя при работе с highload-проектами адреналина всё равно выделяется достаточно, чтобы 10 раз подумать, перед тем, как что-либо делать. Поэтому перед началом процесса, лучше отключить систему оповещения по СМС, чтобы не пугать коллег сообщениями типа «Server down» среди ночи.
1. Выключить виртуальную машину
Я сделал это через GUI, нажав на красную кнопку power в virt-manager. Если нет virt-manager, это можно сделать дав команду shutdown в командной строке виртуальной машины.
2. На гипервизоре увеличиваем размер файла (в моем случае на 200 гигабайт)
3. Цепляем диск к другой (сервисной) виртуальной машине через управляющую машину с virt-manager, альтернативный вариант — загрузиться с CD с поддержкой lvm.
Cooтветственно, при загрузке с LiveCD, vdb поменяется на vda
4. Запускаем сервисную машину (на ней тоже должен быть lvm) через virt-manager.
5. Далее на сервисной (или LVM liveCD) машине:
получим размер диска:
увеличим extended partition, если этого не сделать получим Error: Can’t have overlapping partitions. ubuntu parted -gparted
увеличим logical root partition
теперь нужно увеличить размер физического диска в lvm
увеличиваем размер логического диска в lvm
В выводе resize2fs должно быть такое:
теперь проверим и исправим файловую систему:
диск готов
6. выключаем сервисную машину, отключаем от нее диск в virt-manager
из командной строки, не используя GUI для управления виртуальными машинам можно сделать это при помощи virsh, использование которого хорошо описано здесь: управление виртуальными машинами из командной строки
7. Запускаем сервер
Увеличение с минимальным даунтаймом, почти на лету, проверено на lvm2/ext4 можно сделать так:
1. Увеличение размера файла на 200 гигабайт выполняется на гипервизоре
2. Перезагрузка виртуальной машины
3. На виртуальной машине
Посмотрим размер физического диска и всех логических разделов
увеличим extended partition
увеличим logical root partition
теперь нужно увеличить размер физического диска в lvm
увеличиваем размер логического диска в lvm
В этом случае проверять и исправлять файловую систему нельзя, fsck -f /dev/mapper/vm—db—0—vg-root убьёт файловую систему
Проверить, что получилось:
Источник
netzgewitter
Resizing a Linux Partition (Running in VirtualBox)
I was recently setting up a new test environment (BackTrack 5) inside a VirtualBox VM. Half way down the road of my project I realized that I was way to stingily with the amount of space I assigned to the virtual drive. Well, I thought no problem – I am going to enlarge the virtual drive. The steps would be easy:
- Enlarging the virtual drive
- Enlarging the partition holding the root file system with parted
- Enlarging the file system with resize2fs
Easy in theory. In reality it was still a little bit tricky.
Note, that everything that I describe in steps 2 and 3 also applies to a real linux machine. Step 1 is only necessary, because I happened to work inside a VM. On a real machine, step 1 would be something like copying the data of the old physical drive onto a newer bigger drive with dd or the likes.
I also realize that there may be more professional programs like partition magic, which would have saved me some trouble. But I wanted to make it work right here and there with the things I had at hand. Which was parted. Or even the plain old fdisk would have done I guess.
It also goes without saying, that before you do things like this, that you need to make a backup if the data is of any value to you at all.
Step 1: Enlarging the Virtual Drive
This was the easy part. The virtual drive is actually a .vdi file. There is a VirtualBox command line tool, that can resize the drive. On a real computer, this would be like copying the hard drive data onto a larger disk.
My host computer is running Windows. The virtual drive was initially set to have a size of 8GB. I wanted it to be twice as big. So the command looks like:
The operation only took a second. The size is given in MB so 16GB = 16*1024MB = 16386MB.
Step 2: Resizing the Partition
I booted up the VM and checked the hard drive size with fdisk -l. Yep, /dev/sda1 had now 16GB. So all I had to do was to enlarge the partition holding the root file system to 16GB and then resize the file system with resize2fs.
Parted didn’t let me resize the partition, since it was mounted as the current file system at /. That was expected. So I booted Linux from a live CD. I used the BackTrack 5 CD since I had it at hand. But any other live CD like Knoppix would have done just as well.
Once I’d booted into the live CD I checked the partitions again with parted:
As you can see, I switched the units to cylinders with “unit cyl“. That way it would be easier to determine the new end of the partition. Since there was a swap partition at the end of the drive, it was not possible to just resize the partition holding the file system. First I had to move the swap partition to the end of the drive. There is a command in parted to move a partition. But it didn’t let me move an extended partition. Since that was not possible I tried to remove partition 2 and recreated it at the end of the drive:
Dang. It didn’t let me. The reason was that the live CD automatically detected and used the swap partition. So I first had to turn off the swap partition:
Now I tried to remove the swap partition again with parted:
Ok, that did the trick. Now I could recreate the swap partition at the end of the drive with the command mkpart:
I created a logical partition inside an extended partition again. A single second primary partition would have done as well, since we would not exceed the limit of four primary partitions. But I recreated the partitions as they were. It makes no difference. Here you can also see why I switched the units to cylinders. Since I knew the partition was exactly 50 cylinders big, I only needed to specify -51 for the start and -1 for the end. No other calculations were required. Negative numbers are counted backwards from the end of the disc. That’s a neat feature of parted.
The new swap partition also needs to be activated:
Now I was finally ready to enlarge my file system partition. I tried with the command resize, but parted was again being stubborn and didn’t execute the operation because the file system had some features enabled that it was not compatible with.
This is somewhat silly of parted, since I only wanted to resize the partition table entries and not the file system as well. I would do that with resize2fs myself later on. Maybe there is a trick to make parted to do it. But I didn’t know any better then to delete the first partition and recreate it at the exact same location. Just bigger.
This is a somewhat scary thought. But the actual data inside the partition is going to be unchanged by the process. We are only manipulating partition table entries here. Up to now we did not do anything really dangerous. So this is the point of no return. Make your backup now or forever hold your peace.
To be really sure that I would place the new partition at the exact same position I switched the displayed units to chs (cylinder/head/sector).
So maybe that was not a bad thing. It tells me that the partition starts at 0,32,32. If I would have created the new partition just by specifying the cylinder, it might have created the new partition at 0,0,0. I guess that would have been the death of my file system (but I didn’t really try that to say for sure). Anyway, specifying the position by chs is certainly not a bad idea.
Now I removed the partition and created a new one from 0,32,32 – 2036,254,62. The end of the partition is the last sector of cylinder 2036 which is the one before the one where the swap partition is on:
Almost done. Let’s not forget to make the partition bootable:
Another problem I had was that the partitions in /etc/fstab were identified by their UUID and not by the device file. You can check your drive’s UUID with blkid:
And the content of /etc/fstab was:
So I had to adjust the UUID of the swap partition in /etc/fstab.
Step 3: Enlarging the File System
I powered up the VM and after a couple seconds it booted into linux from the virtual drive again. YEAAH! I only realized afterwards that I was holding my breath during the whole reboot.
Since the partition has now the right size, we can resize the contained file system. I guess we could have also done that while I was still working from the live CD. But resize2fs also let’s you resize a mounted file system. Calling resize2fs with only the device makes the file system as big as possible:
Now let’s check the size of the file system:
Источник