Menü Schließen

OPNsense FreeBSD Root Disk vergrößern

OPNsense Logo

In der aktuellen Version der Open-Source Firewall OPNsense, lief die Root Disk voll. Unbound startete nicht mehr und das Netz war nicht wirklich funktionabel. Irgendwie bin ich sehenden Auges in das Problem gelaufen, hatte ich ich schon Wochen vorher die Speicherdauer der Logs von 5 Tagen auf 3 Tagen, auf 1 Tag und letztendlich deaktiviert, bis die Festplatte voll lief. Ich hatte keine Zeit und wusste auch nicht wie ich die Partition vergrößern kann und schob es vor mich hin. Wenn ich gewusst hätte wie einfach und schnell es geht.

Damit dir das nicht passiert zeige ich nachfolgend die Vergrößerung der Root Disk unter FreeBSD der OPNSense Firewall. Zu wissen ist hierbei, dass diese bei mir als KVM Maschien unter Proxmox VE läuft.

OPNsense Root Disk resizing

Und los gehts, HALT – vorher das Backup nicht vergessen :), dann per SSH mit der Firewall verbinden und als Option für die Shell, die 8 eingeben.

  0) Logout                              7) Ping host
  1) Assign interfaces                   8) Shell
  2) Set interface IP address            9) pfTop
  3) Reset the root password            10) Firewall log
  4) Reset to factory defaults          11) Reload all services
  5) Power off system                   12) Update from console
  6) Reboot system                      13) Restore a backup
Enter an option:8 (Shell)

Anzeigen der verfügbaren Partitionen wie folgt, wobei da0 für die Disk und 3 für die root Partition wichtig sind. Der IST-Stand:

 # gpart show
=>      40  33554352  da0  GPT  (16G)
        40    409600    1  efi  (200M)
    409640      1024    2  freebsd-boot  (512K)
    410664  31457272    3  freebsd-ufs  (15G)
  31867936   1686456       - free -  (823M)

Nun kann unter Proxmox VE die Festplatte der virtuellen Maschine wie gewohnt vergrößert werden. In OPNsense wird dies wie folgt angezeigt:

# dmesg
(da0:vtscsi0:0:0:0): Capacity data has changed
GEOM_PART: da0 was automatically resized.
  Use `gpart commit da0` to save changes or `gpart undo da0` to revert them.

Unter den Partitionen wird die neue freie Partition mit 11G angezeigt.

# gpart show
=>      40  54525872  da0  GPT  (26G)
        40    409600    1  efi  (200M)
    409640      1024    2  freebsd-boot  (512K)
    410664  31457272    3  freebsd-ufs  (15G)
  31867936  22657976       - free -  (11G)

Wer noch SWAP eingerichtet hat, muss diese jetzt deaktivieren, löschen, erstellen und an das Ende der Disk verschieben. Nachfolgend ohne Garantie, da ich kein SWAP habe und es nicht getestet habe:

# swapoff -a #SWAP in FreeBSD deaktivieren
# gpart delete -i 4 da0 #Swap Partition mit ID 4 löschen
# gpart show #Status anzeigen

#SWAP an das Ende der Disk verschieben, Start und Ende muss kalkuliert werden
#gpart add -t freebsd-swap -b <Swap Start (Sector)> da0
# gpart show #Kontrolle und falsch es nicht stimmt, löschen und nochmal erstellen
# gpart modify -i 4 -l swapfs da0 #Label für die neue SWAP Partition erstellen
# swapon /dev/gpt/swapfs #Start der neuen SWAP Partition

Nun wird die eigentliche Root Partition vergrößert. Diese ist die ID 3 der Disk da0

# gpart resize -i 3 da0
da0p3 resized

Der Status ist nun eine um 11GB vergrößerte Partition.

# gpart show
=>      40  54525872  da0  GPT  (26G)
        40    409600    1  efi  (200M)
    409640      1024    2  freebsd-boot  (512K)
    410664  54115248    3  freebsd-ufs  (26G)

Die neue größere Disk scannen und einbinden.

# growfs /dev/gpt/rootfs
Device is mounted read-write; resizing will result in temporary write suspension for /.
It's strongly recommended to make a backup before growing the file system.
OK to grow filesystem on /dev/gpt/rootfs, mounted on /, from 15GB to 26GB? [yes/no] yes
super-block backups (for fsck_ffs -b #) at:
 32056192, 33338432, 34620672, 35902912, 37185152, 38467392, 39749632, 41031872, 42314112, 43596352, 44878592, 46160832, 47443072, 48725312, 50007552, 51289792,
 52572032, 53854272

Der Status der Disk ist wie folgt:

# df -h
Filesystem                  Size    Used   Avail Capacity  Mounted on
/dev/gpt/rootfs              25G     13G    9.6G    58%    /
devfs                       1.0K    1.0K      0B   100%    /dev
devfs                       1.0K    1.0K      0B   100%    /var/dhcpd/dev
devfs                       1.0K    1.0K      0B   100%    /var/unbound/dev
/usr/local/lib/python3.9     25G     13G    9.6G    58%    /var/unbound/usr/local/lib/python3.9

OPNsense SSH Konsole beenden.

# exit

Ich habe das System abschließend neugestartet, sodass alle Dienste sauber starten und ich sicher gehen kann das OPNsense normal läuft.

 0) Logout                              7) Ping host
  1) Assign interfaces                   8) Shell
  2) Set interface IP address            9) pfTop
  3) Reset the root password            10) Firewall log
  4) Reset to factory defaults          11) Reload all services
  5) Power off system                   12) Update from console
  6) Reboot system                      13) Restore a backup

Enter an option: 6

The system will reboot. Do you want to proceed? [y/N]:y

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert