pixel
Seite wählen

NETWAYS Blog

Ein kurzer Abriss über Graylog Sidecar

Graylog Sidecar ist ein Konfigurationsmanagementsystem, ein sogenanntes Framework, für unterschiedliche Log Collectoren, auch Backends genannt. Die Graylog Nodes agieren hier als zentraler Hub und halten die Konfiguration der Log Collectoren. Auf unterstützten Systemen, die Log Messages generieren, kann Sidecar als Service (unter Windows) oder daemon (unter Linux) laufen. Die Kommunikation zwischen Sidecar und Graylog wird durch eine SSL-Verschlüsselung der API gewährleistet. Für die Verbindung zwischen den Collectoren und Graylog sollte als Best Practive TLS aktiviert werden.

Die Log Collector Konfigurationen werden zentral über die Graylog Weboberfläche verwaltet. Periodisch holt sich der Sidecar daemon über die REST API alle relevanten Konfigurationen für das Ziel. Beim ersten Durchlauf oder nach einer Konfigurationsänderung erstellt Graylog Sidecar automatisch die relevanten Backend-Konfigurationsdateien. Im Anschluss werden die neu- oder umkonfigurierten Log Collectoren (neu-)gestartet.

 

Schematische Darstellung

Quelle: Graylog Sidecar

 

Folgende Punkte sind hierbei wichtig zu verstehen und zu beachten:

  • Eine Konfiguration ist die Darstellung einer Log Collector Konfigurationsdatei in der Graylog Weboberfläche. Eine Konfigurationsdatei kann den Sidecars zugewiesen werden, womit auch die entsprechenden Collectoren zugewiesen werden. Es können mehrere Konfigurationen einem einzigen Log Collector zugewiesen werden, jedoch kann ein Kollektor nicht mehreren Sidecars zugewiesen werden.
  • Inputs stellen die Prozesse dar, mit denen die Collectoren Daten sammeln. Ein Input kann z. B. ein Log File sein, das vom Collector in regelmäßgen Abständen gelesen wird, oder eine Verbindung zu einem Windows Event System, das Log Events ausgibt. Ein Input ist verbunden mit einem Output, ansonsten wäre es nicht möglich, die Daten an den näschsten Punkt zu weiterzugeben. Daher muss als erstes ein Output erstellt werden, mit dem danach einer oder mehrere Inputs verknüpft werden.
  • Jede Sidecar Instanz kann Statusinformationen zurück an Graylog senden. Über die Aktivierung der entsprechenden Funktion können Metriken wie Load oder auch die IP Adresse des Hosts, auf dem Sidecar läuft, gesendet werden. Des Weiteren sind auch Metriken enthalten, die für die Stabilität des Systems wichtig sind, z. B. Disk Volumes mit mehr als 75 % Füllstand. Zusätzlich kann per Aktivierung eine Liste mit Directories in der Graylog Weboberfläche angezeigt werden, worüber eingesehen werden kann, welche Dateien zum Sammeln bereit stehen. Diese Liste wird periodisch aktualisiert.
  • Für Sidecar existieren .deb und .rpm Packages sowie entsprechende Windows-Installer.

 

Log Collectors für Sidecar

Graylog umfasst unter anderem per Default Collector Konfigurationen für Filebeat, Winlogbeat oder NXLog (siehe untenstehende Liste). Es können aber auch weitere, eigene Collector Backends eingebracht werden wie z. B. sysmon, auditd oder packetbeat.

  • Beats on Linux: Filebeat und andere Beats
  • Beats on Windows: Im Windows Sidecare Package ist Filebeat und Winlogbeat bereits enthalten.
  • NXLog on Ubuntu
  • NXLog on CentOS
  • NXLog on Windows

 

Wir haben Euer Interesse an Graylog geweckt? Es haben sich Fragen aufgetan zu Eurer bestehenden Graylog-Umgebung? Dann her damit! Schreibt uns einfach über unser Kontaktformular oder an sales@netways.de. Auch per Telefon sind wir für Euch unter der 0911 / 92885-66 zum Thema Graylog erreichbar.

Quelle Titelbild: pixabay.com / Creator: Murmel

Nicole Frosch
Nicole Frosch
Sales Engineer

Ihr Interesse für die IT kam bei Nicole in ihrer Zeit als Übersetzerin mit dem Fachgebiet Technik. Seit 2010 sammelt sie bereits Erfahrungen im Support und der Administration von Storagesystemen beim ZDF in Mainz. Ab September 2016 startete Sie Ihre Ausbildung zur Fachinformatikerin für Systemintegration bei NETWAYS, wo sie vor allem das Arbeiten mit Linux und freier Software reizt. In ihrer Freizeit überschüttet Sie Ihren Hund mit Liebe, kocht viel Gesundes, werkelt im Garten, liest...

Icinga for Windows – Performance Boost mittels REST-Api

Seit dem ersten Release von Icinga for Windows hat sich eine Menge getan, um sowohl die Funktionalitäten, die Usability als auch die Sicherheit der Lösung zu erhöhen. Ein großer Fokus lag parallel jedoch auch immer auf der Performance, was sowohl auf den Aufbau des Icinga Agenten als auch der PowerShell oder generell der Plugins zurückzuführen ist.

Warum ist die Performance “schlecht”?

Der große flexible Ansatz von Icinga erlaubt es, beliebige Plugins in einer Vielzahl von Programmier- oder Skriptsprachen auszuführen – unter anderem auch PowerShell. Das bedeutet jedoch, dass Icinga sich keine Libraries, Inhalte oder sonstigen Informationen merkt. Stattdessen ist – im Beispiel von PowerShell – für jeden einzelnen Aufruf eine PowerShell zu starten. Hierfür müssten dann zuerst die notwendigen Bibliotheken geladen werden und gegebenenfalls umgebungsspezifische Informationen.

Zu guter letzt muss dann noch Icinga for Windows geladen werden, also das Framework und die Plugins, welche wir ausführen wollen. Das kostet nicht nur Zeit, sondern auch CPU-Ressourcen. Bis zu diesem Punkt haben wir aber auch das Plugin noch nicht ausgeführt – je nach Plugin, kommen dann noch WMI Handler und sonstige Themen hinzu, welche das Plugin abfragen und laden muss, bis man schließlich sein Ergebnis erhält.

Gibt es Lösungsansätze für dieses Problem?

Über paar Jahre in welchen Icinga for Windows entwickelt wurde, gab es mehrschichtige Ansätze, um die Performance zu verbessern. Zum einen wird von Icinga for Windows ein Cache-File für alle Komponenten des Frameworks angelegt und als “ein großes Modul” geladen. Dadurch entfallen Lade- und CPU-Zeiten für das Einbinden von Sub-Modulen oder Skripten.

Der größte und wichtigste Ansatz ist jedoch die Nutzung des Icinga for Windows Service. Dieses kleine Service Binary erlaubt es, eine PowerShell im Hintergrund über die Windows Dienste zu starten und zu verwalten. Dadurch können über das Icinga PowerShell Framework dann sogenannte Background Daemons registriert werden, welche im Hintergrund Ihren Dienst verrichten.

Einer dieser Background Daemons, welche normalerweise als separate Komponenten installiert werden, ist in den letzten Versionen direkt in das Icinga PowerShell Framework eingezogen: Die REST-Api

Eine REST-Api für Plugin Ausführung

Mittels der REST-Api und einer entsprechenden Funktion im Icinga PowerShell Framework können Plugin-Ausführungen über die REST-Api innerhalb des Icinga for Windows Dienstes ausgeführt werden. Das hat mehrere Vorteile, da man zum einen andere Wege finden könnte, seine Plugins auszuführen, zum anderen aber die Last von Icinga for Windows komplett anders verteilt wird.

Zwar startet der Icinga Agent im Standardverhalten zwar weiterhin eine PowerShell, diese führt aber den eigentlichen Plugin Code nicht mehr aus, sondern prüft, ob die REST-Api sowie das entsprechende Feature aktiviert sind. Falls ja, wird ein Versuch gestartet, den Plugin Aufruf über die REST-Api einzustellen. Das bedeutet, dass innerhalb der Daemons und der REST-Api zwar auch Bibliotheken geladen werden müssen, diese aber persistent verfügbar und beim erneuten Aufruf des Plugins bereits vorhanden sind. Das bringt nicht nur einen Performance-Boost für die Ausführungszeit, sondern reduziert auch die CPU last deutlich.

Am Ende wird nur das Ergebnis zurückgegeben, von unserem Plugin-Handler ausgewertet und an den Icinga Agent weitergereicht. Sollte in diesem Prozess etwas schief gehen, gibt es immer noch den Fallback auf die automatische lokale Ausführung. Im EventLog von Icinga for Windows sind dann einige Details zu finden: Ob es ein Fehler bei der Ausführung des Plugins war oder ob die Ausführung zu lange gedauert hat und deshalb auf lokale Ausführung zurückgegriffen wurde.

Kann man dieses Feature einfach aktivieren?

Ja! Die einzigen Voraussetzungen für dieses Feature sind das Icinga for Windows Service Binary und der installierte Icinga Agent mit einem Zertifikat, das von der Icinga CA signiert wurde. Anschließend kann man das Feature über die IMC einfach aktivieren. Da wir nur einen HTTPS Socket anbieten, der per Default auf localhost läuft, ist weder eine externe Kommunikation möglich noch eine Nutzung der REST-Api ohne TLS.

Zuerst müssten wir den Icinga for Windows Service installieren, sofern nicht vorhanden:

Install-IcingaComponent -Name ‘service’ -Confirm;

Anschließend öffnen wir die Icinga Management Console mittels dem Befehl icinga in einer administrativen PowerShell und navigieren zu folgenden Punkten:

* [2] Settings
* [6] Icinga for Windows Features
* [0] Api-Check Forwarder

Mittels der IMC kann das Api-Check Forwarder Feature dann einfach aktiviert oder deaktiviert werden. Der jeweilige Status ist direkt neben dem Eintrag zu finden. Wenn alles aktiviert ist, starten wir zur Sicherheit noch den Icinga Agent sowie Icinga for Windows Dienst neu und alles sollte funktionieren!

Restart-Service -Name ‘icinga2’;
Restart-IcingaWindowsService;

Und jetzt?

Wenn die Ausführungszeit der Plugins von Icinga Seite schneller und die Last auf dem System reduziert ist, sollte alles funktionieren. Natürlich kann man jetzt noch das EventLog parallel beobachten, während man Checks ausführt, ob im Icinga for Windows EventLog Probleme auftreten:

Read-IcingaForWindowsLog;

Sofern Fragen hierzu sind, es Probleme gibt oder wir bei der Einrichtung helfen können, freuen wir uns natürlich über eure Kontaktaufnahme!

Viel Spaß mit Icinga for Windows und der neu gewonnenen Performance!

Christian Stein
Christian Stein
Lead Senior Account Manager

Christian kommt ursprünglich aus der Personalberatungsbranche, wo er aber schon immer auf den IT Bereich spezialisiert war. Bei NETWAYS arbeitet er als Senior Sales Engineer und berät unsere Kunden in der vertrieblichen Phase rund um das Thema Monitoring. Gemeinsam mit Georg hat er sich Mitte 2012 auch an unserem Hardware-Shop "vergangen".

Graylog: Basics für eine Best Practice Installation

Graylog hat hier einiges an Best Practice definiert, die Euch dabei hilft, eine stabil und sicher laufende Installation aufzubauen. Ein Hauptaugenmerk liegt dabei auf der Anzahl der Nodes, die für eine produktiv eingesetzte Umgebung folgendermaßen aussieht:

  • mehrere Graylog Nodes mit evtl. vorgeschaltetem Loadbalancer. Hier sollte auch im Nachhinein immer wieder über entsprechende Skalierungen oder Performance-Optimierungen nachgedacht werden.
  • jeder Graylog Node ist an die MongoDB Datenbank angeschlossen. Die MongoDB Instanzen sollten als Replica Set aufgesetzt sein.
  • ein Elasticsearch Cluster bestehend aus mindestens drei Nodes, um hier mit einem Quorum arbeiten zu können. (Vermeidung von Split Brain!)
  • ein Browser Eurer Wahl für den Zugriff auf die Graylog Web GUI

 

Hier eine schematische Darstellung einer Produktivumgebung:

Quelle: https://docs.graylog.org/docs/architecture

Des Weiteren sollten Log-Daten mithilfe der geeigneten Tools, z. B. syslog, GELF oder den Beats in Graylog wandern.  Zusätzlich wird ein Loadbalancer empfohlen, über den die gesamte Kommunikation mit Graylog erfolgt und somit eine Verteilung der Last ermöglicht und die Performance optimiert. Die Kommunikation umfasst hierbei alle Aufrufe über den Browser per HTTP(S) sowie die Weiterleitung der Log-Dateien an die vorhin genannten Graylog Nodes.

Wer hier tiefer einsteigen möchte, dem seien die folgenden Links zur Graylog Dokumentation empfohlen:

 

Natürlich könnt Ihr Euer KnowHow auch mit unserer Unterstützung aufbauen und erweitern! Ihr benötigt z. B. Unterstützung bei der Skalierung Eurer Umgebung? Ihr habt neue Systeme, deren Log Daten in Graylog laufen sollen? Ihr möchtet auf Graylog Enterprise umsteigen und benötigt eine Lizenz? Mit all diesen Fragen könnt Ihr einfach auf uns zukommen über unser Kontaktformular oder per Mail an sales@netways.de.

Infos zu Schulungen und deren Buchung zum Thema Graylog könnt Ihr hier finden: Graylog Schulung

Nicole Frosch
Nicole Frosch
Sales Engineer

Ihr Interesse für die IT kam bei Nicole in ihrer Zeit als Übersetzerin mit dem Fachgebiet Technik. Seit 2010 sammelt sie bereits Erfahrungen im Support und der Administration von Storagesystemen beim ZDF in Mainz. Ab September 2016 startete Sie Ihre Ausbildung zur Fachinformatikerin für Systemintegration bei NETWAYS, wo sie vor allem das Arbeiten mit Linux und freier Software reizt. In ihrer Freizeit überschüttet Sie Ihren Hund mit Liebe, kocht viel Gesundes, werkelt im Garten, liest...

Der NETWAYS Support Collector

Dem ein oder anderen unserer Support Kunden ist unser neuer Support Collector vielleicht schon über den Weg gelaufen. Aber was ist das überhaupt? Und was bringt er?

Der NETWAYS Support Collector ist eines unserer neuesten Kreationen. Inspiriert von, dem mehr verbreiteten, icinga2-diagnostics ist die Aufgabe des Support Collectors, Daten über laufende Systeme und deren Komponenten zu sammeln.
So ist es möglich mittels eines einzelnen Aufrufes alle essentiellen Daten über das System zu sammeln.

Anhand dieser Daten können beispielsweise Support Abläufe effizienter gemacht werden oder sogar aussagekräftige Statistiken erstellt werden.

Der Support Collector kann neben den vorstellbar gängigen Daten wie Icinga 2 und Icinga Web 2 weit aus mehr.
Der aktuelle Rahmen, welcher durch das Tool abgedeckt wird, ist folgender:

  • Allgemeine System Informationen
  • Icinga 2
  • Icinga Web 2
  • Icinga Director
  • Mysql / MariaDB
  • PostgreSQL
  • Ansible
  • Puppet
  • InfluxDB
  • Grafana
  • Graphite

Für den User ist es selber wählbar, welche “Module” durch den Support Collector alle gesammelt werden sollen. Standartmäßig werden alle “Module” gesammelt, welche auf dem System gefunden werden.

Um den Sicherheitsaspekt zu beachten, werden alle Passwörter / IP Adressen / Token innerhalb der gesammelten Daten entfernt, bevor diese zu einen ZIP verpackt werden.
Die generierte ZIP Datei kann dann durch Support Kunden an unseren Support weitergeleitet werden, sobald ein Support Fall eintrifft.

Wer selber einen Blick auf den Support Collector werfen möchte, kann dies in dem GitHub Repository machen oder sich das Tool mit den durch uns bereit gestellten Paketen auf packages.netways.de/extra installieren.
Die –help Übersicht liefert einige Konfigurations Möglichkeiten, welche optional mitgegeben werden können.

Tobias Bauriedel
Tobias Bauriedel
Systems Engineer

Tobias ist ein offener und gelassener Mensch, dem vor allem der Spaß an der Arbeit wichtig ist. Bei uns hat er seine Ausbildung zum Fachinformatiker für Systemintegration abgeschlossen und arbeitet nun im NETWAYS Professional Services - Team Operations und entwickelt nebenbei Projekte für die NPS. In seiner Freizeit engagiert er sich ehrenamtlich aktiv bei der Freiwilligen Feuerwehr als Atemschutzgerätetrager und Maschinist, bereist die Welt und unternimmt gerne etwas mit Freunden.

LUKS LVM Resizing

Ever tried to create a Dual Boot Ubuntu AFTER you encrypted your whole hard drive already?
Well don’t worry we got you covered!

My Problem:

I want to shrink my encrypted Ubuntu installation to make room for another OS, which I need for my video editing.
For that I have a SSD 512GB, which is encrypted with LUKS, uses LVM and ist partitioned in ext 4 fs.
But I also have an encrypted LUKS Swap called “vgubuntu-swap_1”, who also uses LVM and is formated in swap fs.

My partition had a size around 475 GiB before shrinking. The swap volume helps to demonstrate that shrinking may lead to gaps between logical LVM volumes.
The plan is to shrink the file system, its volume, the volume group and also the encrypted partition.
I used a Live Ubuntu System from a USB stick, since I could not just take the hard drive out. If you have just one computer available, use either a Live System from a USB stick or a DVD.

Disclaimer: PLEASE MAKE A BACKUP of the whole disk first.
Please read carefully through the steps first before you do anything.
If you are unsure about the commands and what they mean or what consequences they have, do some research on the Internet ahead. Likewise in case of trouble or error messages. It definitely helps to be familiar with partitioning, LVM, dm-crypt and LUKS.

My Solution:

Resizing was a sequence of 14 steps – following the disk layout in reverse order, I started resizing from the filesystem to the LVM structure down to the partition.
You open an encrypted partition with LVM on LUKS just as any dm-crypt/LUKS-partition by:

cryptsetup open /dev/Disk-MAPPING-Name cryptdisk

For the mapping name I used “cryptdisk“. Note that closing the encrypted device requires to deactivate the volume groups in the kernel first; in our case:

vgchange -a n vg1;

cryptsetup close cryptdisk

Otherwise you may not be able to close your device.

 

Step 1: Take a look at your Block Devices

With lsblk you take a look at you partitions

lsblk

For instance for me the disk appeared as “/dev/nvme0n1” – the encrypted partition was located on “/dev/nvme0n1p3”.

 

Step 2: Opening the encrypted partition

ubuntu@ubuntu:~$ cryptsetup open /dev/nvme0n1p3 cryptdisk

Review it so you know the mapping is done correctly by “ls -la /dev/mapper”
Take a look at the “cryptdisk”-device, but keep a close eye on the LVM-volumes inside the encrypted partition. They should appear automatically as distinct devices.

 

Step 3: Let’s take a look at the LVM Structure

Next up we have:

pvdisplay
vgdisplay
lvdisplay

Pvdisplay and vgdisplay show you the PV device:  “/dev/mapper/cryptdisk” and the volume group, like in my case “vgubuntu”.
With lvdisplay you can take a look at the logical volumes, so the path to the devices and LV Size. In this case it was: “/dev/vgubuntu/root” and “/dev/vgubuntu/swap_1”

 

Step 4: Filesystem Integrity check

With fsck we can make sure the filesystem is clean:

ubuntu@ubuntu:~$ sudo fsck /dev/vgubuntu/root
fsck from util-linux 2.36.1
e2fsck 1.46.3 (27-Jul-2021)
/dev/mapper/vgubuntu-root: clean, 530426/13107200 files, 14946582/52428800 blocks

That seems fine, let’s move on!

 

Step 5: Review  filesystem physical block size and used space

Since we need to take a look at the phyisical block size, we can use “fdisk -l”.
There were also a lot of loop devices in my case, but the last entry showed my encrypted drive.

ubuntu@ubuntu:~$ sudo fdisk -l

Disk /dev/mapper/cryptdisk: 475.71 GiB, 510787584000 bytes, 997632000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Inode count:              13107200
Block count:              52428800
Reserved block count:     2621439
Free blocks:              37482218
Free inodes:              12576774

 

Step 6: Reducing the Volume and filesystem size

For the reduced filesystem I went with 210G, since it should be about 200GiB size at the end.
With lvreduce we work with GiB, so the filesystem size should be 5-10% smaller than the logical volume size. Then we would get 200 * 1024 * 1024 * 1024 Bytes = 214.748.364.800 Bytes.

 

Step 7: Actually shrinking the filesystem

Please check first if the filesystem is mounted somewhere and then proceed with:

ubuntu@ubuntu:~$ sudo resize2fs /dev/mapper/vgubuntu-root 210G
resize2fs 1.46.3 (22-Dez-2021)
Resizing the filesystem on /dev/mapper/vgubuntu-root to <pre style="padding:8px;"> (4k) blocks.
The filesystem on /dev/mapper/vgubuntu-root is now 52428800 (4k) blocks long.

 

Step 8: Shrink the logical volume

With “lvreduce” we can resize the LVM volume, the option parameter “L” together with a “size” determines how big the volume will become.

ubuntu@ubuntu:~$  lvreduce -L 200G /dev/vgubuntu/root
WARNING: Reducing active logical volume to 200 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vgubuntu/root? [y/n]: y
Size of logical volume vgubuntu/root changed from 210 GiB (20480 extents) to 200.00 GiB (15360 extents).
Logical volume vgubuntu/root successfully resized.

Since we got the confirmation that it worked, we can now proceed.

 

Step 9: Check for gaps between the volumes of your LVM volume group

That was the trickiest part for me at least since I had a swap with my Ubuntu. The first thing I did was to scan for the Swap, on which Blocks it was located.

I then used “pvmove” to get the swap from the last blocks to the ones after my root volume.

As you can see, my swap moved over and my free space had no further volumes in between.

 

Step 10: Resize/reduce the physical LVM

Next I had to resize and reduce the physical LVM to 200G

ubuntu@ubuntu:~$ sudo pvresize --setphysicalvolumesize 200.96G /dev/mapper/cryptdisk
/dev/mapper/cryptdisk: Requested size <200.96 GiB is less than real size <475.71 GiB. Proceed?  [y/n]: y
WARNING: /dev/mapper/cryptdisk: Pretending size is 421443665 not 997632000 sectors.
Physical volume "/dev/mapper/cryptdisk" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized

Since the resize worked, I wanted to make sure everything was fine.

ubuntu@ubuntu:~$ sudo pvdisplay
--- Physical volume ---
PV Name               /dev/mapper/cryptdisk
VG Name               vgubuntu
PV Size               <200.96 GiB / not usable <2.04 MiB
Allocatable           yes (but full)
PE Size               4.00 MiB
Total PE              51445
Free PE               0
Allocated PE          51445
PV UUID               KpzZm…

 

Step 11: Setting up the encrypted regions size

First make sure which Block Size the current drive has:

ubuntu@ubuntu:~$ sudo cryptsetup status cryptdisk
/dev/mapper/cryptdisk is active and is in use.
type:    LUKS2
cipher:  aes-xts-plain64
keysize: 512 bits
key location: keyring
device:  /dev/nvme0n1p3
sector size:  512
offset:  32768 sectors
size:    997632000 sectors
mode:    read/write

Then I had to calculate the new blocksize for the encrypted disk, I used the formula on the Arch Wiki: NEW_LUKS_SECTOR_COUNT = PV_EXTENT_COUNT * PV_EXTENT_SIZE / LUKS_SECTOR_SIZE

From Step 10 (pvdisplay) and the cryptdisk status you can gather all the information needed to get:
(53880 extent + 1 unusable extent) * 4 MiB/extent /512 B/sector = 441393152 sectors

ubuntu@ubuntu:~$  sudo cryptsetup -b 441393152 resize cryptdisk
Enter passphrase for /dev/nvme0n1p3:
ubuntu@ubuntu:~$ sudo cryptsetup status cryptdisk
/dev/mapper/cryptdisk is active and is in use.
type:    LUKS2
cipher:  aes-xts-plain64
keysize: 512 bits
key location: keyring
device:  /dev/nvme0n1p3
sector size:  512
offset:  32768 sectors
size:    441393152 sectors
mode:    read/write

And now we have a smaller LUKS Partition. You came this far, now don’t stop!

 

Step 12: Reduce the size of the physical partition

Here I used parted to get an overview of my drives and resize it to the desired size:

ubuntu@ubuntu:~$ sudo parted /dev/nvme0n1
GNU Parted 3.4
Using /dev/nvme0n1
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: PM9A1 NVMe Samsung 512GB (nvme)
Disk /dev/nvme0n1: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number  Start   End     Size   File system  Name                  Flags
1      1049kB  538MB   537MB  fat32        EFI System Partition  boot, esp
2      538MB   1305MB  768MB  ext4
3      1305MB  512GB   511GB

(parted) resizepart

Partition number? 3
End?  [512GB]? 211GB
Warning: Shrinking a partition can cause data loss, are you sure you want to continue?
Yes/No? y
(parted) print
Model: PM9A1 NVMe Samsung 512GB (nvme)
Disk /dev/nvme0n1: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number  Start   End     Size   File system  Name                  Flags
1      1049kB  538MB   537MB  fat32        EFI System Partition  boot, esp
2      538MB   1305MB  768MB  ext4
3      1305MB  211GB   210GB

(parted) q

Information: You may need to update /etc/fstab.

I checked with print in between, to see if the parted resize worked.

 

Step 13: Set new size of the encrypted region

Now we just need to make sure we also have use the full partition size:

ubuntu@ubuntu:~$ sudo cryptsetup resize cryptdisk
ubuntu@ubuntu:~$ sudo cryptsetup status cryptdisk
/dev/mapper/cryptdisk is active.
type:    LUKS2
cipher:  aes-xts-plain64
keysize: 512 bits
key location: keyring

device:  /dev/nvme0n1p3
sector size:  512
offset:  32768 sectors
size:    409526848 sectors
mode:    read/write

 

Step 14: Reset the PV size to the full partition size

Next up we have to use pvresize so the cryptdisk gets also adjusted and then we can take a look at the volumes.

ubuntu@ubuntu:~$ pvresize  /dev/mapper/cryptdisk
Physical volume "/dev/mapper/cryptdisk" changed
1 physical volume(s) resized / 0 physical volume(s) not resized
ubuntu@ubuntu:~$ sudo pvdisplay
--- Physical volume ---
PV Name               /dev/mapper/cryptdisk
VG Name               vgubuntu
PV Size               210.47 GiB / not usable 2.00 MiB
Allocatable           yes
PE Size               4.00 MiB
Total PE              53880
Free PE               2435
Allocated PE          51445
PV UUID               Kpz...

ubuntu@ubuntu:~$ sudo vgdisplay
--- Volume group ---
VG Name               vgubuntu
System ID
Format                lvm2
...
VG Size               <210.47 GiB
PE Size               4.00 MiB
Total PE              53880
Alloc PE / Size       51445 / <200.96 GiB
Free  PE / Size       2435 / 9.51 GiB
VG UUID               dz0...

That’s it!

You can also do a checkup with gparted/disks, but apart from that I was just happy that I had more space for a second OS while also maintaining the encryption for Ubuntu!
(Now I will create another backup, just in case I break something with the new OS Installation.)

 

 

Rania Hedrich
Rania Hedrich
Technology Evangelist

Rania ist NETWAYS voller Begeisterung im November 2021 beigetreten. Seitdem unterstützt sie als Technology Evangelist das Managed Services Team, wo ihr Aufgabenschwerpunkt auf technischem Marketing und Community-Aufbau liegt. Man kann sie immer wieder auf Konferenzen antreffen oder im Homeoffice auf Twitter. Wenn sie nicht gerade an einem Computer bastelt oder bouldern geht, ist Rania als Head of Administration im eSport Bereich tätig.