Zwiększenie dysku na maszynie wirtualnej stworzonej w Oracle virtualbox

przez | 31 maja 2019

Zapewne nieraz zdarzało Ci się kląć bo maszyna wirtualna którą sobie pieczołowicie wydłubywałeś w pocie i znoju, przy instalacji na niej „czegoś” zakomunikowała Ci radośnie – nic z tego – ten dysk jest za mały. Zanim zaczniesz przeinstalowywać całość, spróbuj poszerzyć dyski wirtualne. Ja nie jestem adminem unix – i trochę mi zajęło aby dojść jak to zrobić sprawnie i szybko – stąd postanowiłem się podzielić tą wiedzą – może i Ty nie jesteś adminem unix.

Zaczynamy od zwiększenia dysku w VBox – maszyna powinna być wcześniej zgaszona.

E:VMsoel7>"c:Program FilesOracleVirtualBoxVBoxManage.exe" modifyhd oel7.vdi --resize 25600
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

E:VMsoel7>"c:Program FilesOracleVirtualBoxVBoxManage.exe" modifyhd oel7-disk1.vdi --resize 25600
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

E:VMsoel7>"c:Program FilesOracleVirtualBoxVBoxManage.exe" modifyhd oel7-disk2.vdi --resize 81920
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

zwiększenie partycji – bootujemy nasz serwer przy użyciu programu gparted – otwórz settings->storage->controlller IDE -> klik w plusik i wybieramy ściągnięty uprzednio ze strony gparted plik iso (wersja aktualna na dzień wpisu to gparted-live-0.33.0-2-i686.iso).

następnie wybieramy kolejność źródeł bootowania:

po czym startujemy wirtualną maszynę:

akceptujemy defaultowo proponowane ustawienia:

potem już tylko quit, exit – i wyłączamy wirtualną maszynę (po kliknięciu exit ja musiałem trochę poczekać na reakcję), mamy powiększone partycje, prawie wszystkie 🙂 w wypadku wolumenów LVM musimy jeszcze wykonać kilka kroków

po pierwsze – wyświetlmy volume group – komendą vgdisplay:

[root@localhost ~]# vgdisplay
  --- Volume group ---
  VG Name               ol
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  6
  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               <24.00 GiB
  PE Size               4.00 MiB
  Total PE              6143
  Alloc PE / Size       4863 / <19.00 GiB
  Free  PE / Size       1280 / 5.00 GiB
  VG UUID               gTFVc0-5ysZ-xZby-ilyd-MkPO-zbe6-RgYW0V

widzimy volume group ol – a w niej free PE – 5GB do zadysponowania – dokładnie tyle ile rozszerzyliśmy partycję w gpart kolejna komenda lvdisplay powie nam jakie wolumeny się znajdują w tejże grupie

[root@localhost ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/ol/swap
  LV Name                swap
  VG Name                ol
  LV UUID                Qgu1M6-L6lT-CVPU-FqG5-xdwS-wlbj-ZQN3SW
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2018-11-03 15:02:31 +0100
  LV Status              available
  # open                 2
  LV Size                <1.20 GiB
  Current LE             307
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           249:1

  --- Logical volume ---
  LV Path                /dev/ol/root
  LV Name                root
  VG Name                ol
  LV UUID                jkNECZ-Vxyu-Ca5j-npHS-Az2g-1mSW-5xs2Bv
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2018-11-03 15:02:32 +0100
  LV Status              available
  # open                 1
  LV Size                <17.80 GiB
  Current LE             4556
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           249:0

i czas rozszerzyć wolumen root – o całość komendą
lvextend -l +100%FREE /dev/ol/root gdybyśmy chcieli poszerzyć o mniej – wtedy np. lvextend -L+2G /dev/ol/root i np lvextend -L+3G /dev/ol/swap

[root@localhost ~]# lvextend -l +100%FREE /dev/ol/root
  Size of logical volume ol/root changed from <17.80 GiB (4556 extents) to <22.80 GiB (5836 extents).
  Logical volume ol/root successfully resized.

ostatnim krokiem (uff) będzie daktyczne rozszerzenie filesystemu do rozmiaru wolumenu logicznego – dla ext3/4 będzie to resize2fs , w moim jednak przypadku – filesystemu xfs – będzie to xfs_growfs

[root@localhost ~]# xfs_growfs /dev/ol/root
meta-data=/dev/mapper/ol-root    isize=256    agcount=8, agsize=641792 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=4665344, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 4665344 to 5976064

voila! mamy już rozszerzony filesystem o żądaną wielkość:

[root@localhost ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs             3.8G     0  3.8G   0% /dev
tmpfs                3.8G     0  3.8G   0% /dev/shm
tmpfs                3.8G  9.5M  3.8G   1% /run
tmpfs                3.8G     0  3.8G   0% /sys/fs/cgroup
/dev/mapper/ol-root   23G   16G  7.0G  70% /
/dev/sdb1             25G  2.5G   21G  11% /install
/dev/sdc1             79G   72M   75G   1% /opt
/dev/sda1           1014M  312M  703M  31% /boot
GridInstall12.2       75G   28G   47G  38% /media/sf_GridInstall12.2
tmpfs                773M  4.0K  773M   1% /run/user/42
tmpfs                773M   28K  773M   1% /run/user/0

dużo trudniej jest taki wolumen zmniejszyć, gdy np. wolumen na którym znajduje się filesystem bootujący jest rozmiaru 100GB z tego obszar zajęty to powiedzmy – 5GB

ale i taki przypadek postaram się opisać wkrótce.