Daten|teiler
Kopieren als Kulturtechnik

PowerShell und Jupyter Notebooks unter Linux in VS Code

24. Oktober 2022 von Christian Imhorst

Jupyter Notebook ist eine Open Source-Webanwendung, mit der man Dokumente erstellen und teilen kann, die Live-Code, mathematische Gleichungen, Visualisierungen von Daten und beschreibenden Text enthalten können. Ein Jupyter Notebook ist ein praktisches Werkzeug für die interaktive Erstellung von Präsentationen, um Code, dessen Ausführung und daraus resultierende Daten darzustellen. Die meisten Jupyter Notebooks laufen mit Python, man kann aber auch andere Sprachen benutzen, z.B. aus dem .NET-Umfeld wie C# oder auch PowerShell. Jupyter Notebooks laufen im Browser, es gibt mit Jupyter eine sehr schöne Erweiterung für VS Code. Und um die Notebooks noch um die .NET-Sprachen zu erweitern, kann man auch gleich noch die Erweiterung .NET Interactive Notebooks aus dem Marketplace von VS Code installieren.

Damit man überhaupt Jupyter Noteboos erstellen kann, wird das entsprechende Python-Modul benötigt:

python3 -m pip install --upgrade pip
python3 -m pip install jupyter

Um ein Jupyter Notebook im Browser zu starten, gibt man dann einfach jupyter notebook im Terminal ein. Im VS Code reicht es dagegen, eine neue Datei mit der Endung .ipynb zu erstellen und man kann loslegen und den beschreibenden Text mit Markdown erstellen und den Code in Python. Um eine Sprache aus dem .NET-Framework zu verwenden, muss natürlich .NET unter Linux installiert sein und für PowerShell am besten die neuste Version.

Wenn das erledigt ist, und die Befehle dotnet für .NET und pwsh für die PowerShell über die Pfad-Variable erreichbar sind, wird noch das Microsoft.dotnet-interactive-Paket benötigt, ein Befehlszeilen-Tool für die interaktive Programmierung mit C# oder PowerShell, inklusive Unterstützung für Jupyter Notebooks:

dotnet tool install --global Microsoft.dotnet-interactive

Anschließend führt man den folgenden Befehl aus, um dotnet-interactive zum Jupyter Notebook hinzuzufügen:

dotnet interactive jupyter install

Jetzt kann man im VS Code Jupyter Notebooks erstellen und PowerShell Cmdlets ausführen. Allerdings muss man darauf achten, dass der Kernel des Notebooks unter .NET Interactive läuft (also nicht Python) und der Programm-Code als „PowerShell (.NET Interactive)“ ausgeführt wird, so wie in der Abbildung:

Das schöne an .NET-Interactive als Kernel für Jupyter Notebooks ist, dass noch weitere Sprachen unterstützt werden, so dass man neben PowerShell auch Code-Blöcke in C#, JacaScript oder auch SQL erstellen kann.

Geschrieben in Gnu/Linux, Open Source, Powershell | Kommentare deaktiviert für PowerShell und Jupyter Notebooks unter Linux in VS Code

VirtualBox in openSUSE installieren

14. September 2022 von Christian Imhorst

Damit dein Einstieg in VirtualBox reibungslos verläuft und openSUSE Leap sich nicht beschwert, dass noch etwas fehlt, kannst du diese paar einfachen Schritte befolgen. Dafür installiert man zunächst alle wichtigen Pakete, die VirtualBox benötigt. Das geht mit YaST oder in der Konsole mit diesem Einzeiler:

sudo zypper install virtualbox virtualbox-host-source kernel-devel kernel-default-devel

Wenn die Installation abgeschlossen ist, werden die Kernelmodule kompiliert, die VirtualBox benötigt, um ein Gastsystem auf deiner openSUSE auszuführen:

sudo vboxconfig

Anschließend musst du noch deinen Benutzer zur Gruppe der VBOXUSERS hinzufügen:

sudo usermod -a -G vboxusers $USER

Damit die Änderung mit deinem Benutzer und der Gruppe wirksam werden, musst du dich einmal vom System ab- und wieder anmelden. Dann kannst du mit VirtualBox in openSUSE Leap starten.

Geschrieben in Gnu/Linux, OpenSuse | Kommentare deaktiviert für VirtualBox in openSUSE installieren

PipeWire unter openSUSE installieren

12. August 2022 von Christian Imhorst

PipeWire ist ein relativ neues Multimedia-Framework, was ursprünglich nur für Video-Streaming gedacht war und langfristig PulseAudio unter Linux ablösen soll. PipeWire will dabei über PulseAudio hinausgehen und Audio-Streams mit niedrigen Latenzen verarbeiten, wenn Programme es anfordern, selbst dann, wenn die Anwendung in einer Sandbox wie Flatpak läuft, und dass ohne großen Konfigurationsaufwand. Außerdem ist Pipewire mit Wayland kompatibel.

Aktuelle Versionen von Distributionen wie openSUSE, Fedora oder Ubuntu haben PipeWire zwar schon an Bord, lassen es allerdings zugunsten von PulseAudio noch deaktiviert. Möchte man PipeWire schon heute unter openSUSE nutzen, kann man es schnell manuell nachinstallieren, entweder im Terminal oder mit Hilfe von YaST:

sudo zypper install pipewire pipewire-pulseaudio pipewire-alsa gstreamer-plugin-pipewire

Dadurch wird jetzt allerdings ein Konflikt angezeigt, weil PulsAudio noch installiert ist und vorher noch deinstalliert werden muss. Deshalb wählt man bei der Auswahl an möglichen Konfliktlösungen die 1), um PulseAudio zu deinstallieren. Anschließend wird PipeWire installiert.

Danach müssen noch die Dienste von PipeWire aktiviert werden:

systemctl --user enable --now pipewire.{service,socket}
systemctl --user enable --now pipewire-pulse.{service,socket}

Ist das erledigt, startet man das Betriebssystem am besten einmal neu, damit PipeWire den PulseAudio-Server ersetzt wird. Erst dann sollte man prüfen, ob die Installation erfolgreich war:

pactl info | grep "Server Name"
   Server Name: PulseAudio (on PipeWire 0.3.56)

In der Ausgabe des Befehls sucht nach „Server Name“. Steht dort „Server Name: PulseAudio (on PipeWire 0.3…)“, hat es geklappt. Steht dort immer noch PulseAudio sollte man sich auf die Fehlersuche begeben.

Die Ausgabe des Befehls pactl, der zeigt, ob PipeWire installiert ist.

Troubleshooting

– Falls PipeWire nicht wie gewünscht funktioniert, sollte man zuerst einmal prüfen, ob die Ordner mir den Konfigurationsdateien /etc/pipewire und ~/.config/pipewire vorhanden sind und falls nicht, die Konfigurationsdateien kopieren:

[ ! -d "/etc/pipewire" ] && sudo cp -r /usr/share/pipewire /etc/
[ ! -d "~/.config/pipewire" ] && cp -r /usr/share/pipewire ~/.config/pipewire

– Bekommt man nach einem Neustart immer noch keinen Ton, sollte man PipeWire nochmal starten und schauen, ob es dann funktioniert:

systemctl --user restart pipewire.socket pipewire-pulse.socket wireplumber.service

Geschrieben in Gnu/Linux, OpenSuse | Kommentare deaktiviert für PipeWire unter openSUSE installieren

Remotedesktop mit Windows in QEMU/KVM

21. November 2020 von Christian Imhorst

Unter openSUSE benutze ich QEMU/KVM und die Virtuelle Maschineneverwaltung (virt-manager) als GUI. Als virtuelle Maschinen laufen Linux- aber auch ein Windows-Rechner.

Damit die Windows-Maschine über Remotedesktop (RDP) erreichbar ist, müssen die Kommandozeilenargumente an QEMU durchgereicht werden, mit denen man den Port in KVM weiterleiten kann. Dazu wird die Konfigurations-Datei, die in XML geschrieben ist, bearbeitet:

sudo virsh --connect qemu:///session edit Windows10

Der Befehl öffnet den VIM-Editor, mit dem man die Konfigurationsdatei bearbeiten kann. Die erste Zeile der Datei wird um folgenden Eintrag erweitert:

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>

Damit ermöglicht man es KVM, Kommandozeilenparameter von QEMU zu akzeptieren. In unserem Fall soll der Port für RDP vom Host zum Gast weitergereicht werden. Dazu trägt man gleich unter der ersten Zeile folgenden XML-Code ein:

  <qemu:commandline>
    <qemu:arg value='-net'/>
    <qemu:arg value='user,hostfwd=tcp::3389-:3389'/>
  </qemu:commandline>

Das Werkzeug zum Verwalten virtueller Maschinen virsh sortiert den Eintrag dann an die richtige Stelle in der XML-Datei nach dem Speichern.

Unter openSUSE muss dann noch firewalld mitgeteilt werden, dass der RDP-Port geöffnet werden soll, damit eine Verbindung hergestellt werden kann:

firewall-cmd --permanent --add-port=3389/tcp
firewall-cmd --reload

Unter Windows muss noch in den Einstellungen unter dem Punkt „Einstellungen für Remotedesktop“ der Remotedesktop aktiviert werden.

Remotedesktop unter Windows aktivieren

Als Client gibt es Remmina für den Zugriff über RDP. Dort fügt man eine neue Verbindung hinzu und verbindet sich mit seiner Windows-VM.

Remmina Remotedesktop Client mit Zugriff auf Windows 10 über RDP.

Geschrieben in Gnu/Linux, OpenSuse, Windows | Kommentare deaktiviert für Remotedesktop mit Windows in QEMU/KVM

Nervige Fehlermeldung in Gnome bei openSUSE

28. September 2020 von Christian Imhorst

Nach jeder Anmeldung bei openSUSE Tumbleweed nervt die Gnome Software-App damit, dass eine „Aktualisierung Fehlgeschlagen“ sei. Die Gnome Software-App versucht, eine Datei herunterzuladen:

Failed To Update 
 
Detailed errors from the package manager follow: 
 
Download (curl) error for 'http://download.opensuse.org/tumbleweed/repo/non-oss/repodata/repomd.xml': 
Error code: Connection failed 
Error message: Could not resolve host: download.opensuse.org

openSUSE Software sagt: Aktualisierung Fehlgeschlagen

Angeblich kann der Hostname nicht aufgelöst werden, obwohl Internet und DNS funktionieren und die Webseite in der Fehlermeldung bei openSUSE auch erreichbar ist.

Die Lösung

Der Text befindet sich in der Datei /var/lib/PackageKit/offline-update-competed. Wenn man die Datei löscht, erscheint die Meldung nicht mehr:

sudo rm -rf /var/lib/PackageKit/offline-update-competed

Geschrieben in Gnu/Linux, OpenSuse | Kommentare deaktiviert für Nervige Fehlermeldung in Gnome bei openSUSE

Debian in QEMU

14. September 2020 von Christian Imhorst

Mit meinem QEMU-Bundle kannst du Debian 32-bit in QEMU starten und ausprobieren. Für Windows sind alle nötigen Dateien dabei, inklusive Putty für einen SSH-Zugriff auf die virtuelle Maschine (VM). Nach dem Start erfolgt die Anmeldung über Putty und SSH. Der Benutzername ist tux und das Passwort eudyptula für das Debian in der VM. Über SSH kann man sich nur mit einem Benutzer anmelden. Ist man in der VM eingeloggt, wird man mit dem Linux-Befehl su zum User root. Das Passwort ist dasselbe wie beim User tux.

Was ist QEMU?

QEMU (kurz für Quick Emulator) ist ein Prozessor-Emulator. Durch die Verwendung von QEMU kann man Betriebssysteme für verschiedene CPU-Architekturen unabhängig von der Architektur des eigenen Rechners ausführen. Es gibt x86, x86-64, ARM, PowerPC und viele mehr. QEMU kann man auf dem eigenen Rechner installieren oder von einem USB-Stick ausgeführen, so wie mein Bundle. QEMU stellt dabei eine großartige Open Source-Alternative zu VirtualBox und VMware dar.

Warum ist das Bundle im .7z-Format gepackt?

Im Allgemeinen können solche QEMU-Images ziemlich groß sein. In den meisten Fällen hat das .7z-Format eine bessere Komprimierung als beispielsweise .zip. Mit 7-zip kann man die Dateien entpacken.

Start der virtuellen Maschine in QEMU

Die virtuelle Maschine mit Debian in QEMU wird mit einem Doppelklick auf die Batch-Datei StartServer.bat:

Die Batch-Dateien zum Starten der VM in QEMU

Beim ersten Start, fragt die Firewall, ob die Ausnahme für QEMU okay ist, das bestätigen wir mit „Zugriff zulassen“, damit wir uns über SSH auf die VM verbinden können und die VM mit dem Internet verbunden ist:

Firewall Anfrage bestätigen

Im nächsten Schritt fragt Putty, ob der Fingerprint der VM passt und wir uns über SSH mit ihr verbinden wollen. Wir bestätigen mit „Ja“.

Der Fingerprint des SSH-Keys kann verglichen werden

Eine Messagebox verrät, wie die Zugangsdaten zum Server sind:

Die Zugangsdaten zur VM zeigt eine Messagebox

Wenn die VM gestartet ist, kann man sich über SSH mit Putty an der VM anmelden:

Anmeldung über über Putty mit SSH an der VM

Der Start der VM kann gelegentlich eine ganze Weile dauern. Putty hat dann nach einiger Zeit keine Lust mehr zu warten und beendet die Warterei mit einer Fehlermeldung: „Network Error: Software caused connection abort.“

Putty Fehlermeldung

Die QEMU-VM mit Debian ist dann trotzdem gestartet. Die SSH-Verbindung zu Putty kann man diesem Fall herstellen, indem man die Fehlermeldung bestätigt, Putty beendet und über die Batch-Datei ConnectPutty.bat nochmal startet.

Geschrieben in Gnu/Linux | Kommentare deaktiviert für Debian in QEMU

Mein erstes Makro mit Python in LibreOffice

8. Dezember 2019 von Christian Imhorst

In LibreOffice kann man Makros in mehreren Sprachen als nur BASIC schreiben, darunter zum Beispiel auch Python. Dazu benötigt man PyUNO, das die Brücke zwischen Python und LibreOffice herstellt. Damit das funktioniert, sollten die Pakete libreoffice-pyuno oder unter Ubuntu noch libreoffice-script-provider-python installiert sein. Unter Windows klappt das natürlich auch. Ob Makros in Python grundsätzlich unterstützt werden, kann man mit den Makros testen, die LibreOffice schon mitbringt. Dazu öffnet man ein neues Dokument in Writer und wählt im Menü „Extras -> Macros -> Macros verwalten -> Python…“. Unter „LibreOffice Makros“ findet man dann „HelloWorld -> HelloWorldPython“, das „Hello World (in Python)“ ins Dokument schreibt, wenn man es ausführt. Sieht man das Ergebnis, kann das installierte LibreOffice Python-Makros ausführen.

Das Python-Skript, das „Hello World“ ins Dokument schreibt, findet man unter Linux übrigens im Verzeichnis /usr/lib64/ bzw. /usr/lib/ und dann libreoffice/share/Scripts/python/, was davon abhängt, ob man die 32- oder 64-Bit-Version von LibreOffice installiert ist. Ähnlich liegt das Skript in Windows unter C:\Program Files\ oder C:\Program Files (x86)\ und dann LibreOffice\share\Scripts\python.

Eigene Makros kopiert man unter Linux im Home-Vereichnis in den Unterordner .config/libreoffice/4/user/Scripts/python/ bzw. im Heimverzeichnis des Nutzers unter Windows in den versteckten Ordner AppData\Roaming\ und dann weiter unter LibreOffice\4\user\Scripts\python. Wichtig ist bei beiden Systemen, auf die Schreibweise der Verzeichnisnamen zu achten: Es muss Scripts\python heißen, mit großem „S“ in „Scripts“ und kleinem „p“ in „python“.

Das Python_makro in LibreOffice

Ein erstes Makro könnte dann so aussehen, wie das aus dem Wiki von LibreOffice:

import uno
 
def my_first_macro_writer():
    doc = XSCRIPTCONTEXT.getDocument()
    text = doc.getText()
    text.setString('Hello World in Python in Writer')
    return

Um das Makro auszuführen, klickt man in Writer unter „Extras -> Makros -> Makros ausführen…“, dann „Meine Makros“ und wählt den Namen des Makros aus, unter den man die Python-Datei abgespeichert hat, in meinem Fall „MyFirstMacroWriter“.

Mein Makro ausführen

Eine andere Möglichkeit ist, das Makro direkt in das Dokument selbst einzubinden. Jede ODF-Datei ist eigentlich eine ZIP-Datei, die man entpacken kann. Hat man sie erfolgreich entpackt, erstellt man im Stammverzeichnis den Ordner Scripts/python/ und kopiert dort das Python-Skript mit dem Makro hinein:

Python Makro in einer ODF-Datei

Nun muss noch die Datei manifest.xml im Ordner META-INF bearbeitet werden und die folgenden Zeilen kurz vor dem schließenden Tag </manifest:manifest> hinzuzufügen:

 <manifest:file-entry manifest:full-path="Scripts/python/mymacros.py" manifest:media-type="" />
 <manifest:file-entry manifest:full-path="Scripts/python/" manifest:media-type="application/binary" />
 <manifest:file-entry manifest:full-path="Scripts/" manifest:media-type="application/binary" />

Dabei muss man darauf achten, dass der Name des Python-Skripts in der ersten Zeile gleich ist. Wenn alles gespeichert ist, stellt man das ODT-Archiv mit einem ZIP-Programm wieder her. Aber Vorsicht, es darf nicht der übergeordnete Ordner, der beim Entpacken erstellt wurde, gezippt werden, sondern nur der Inhalt des Ordners:

zip -r -Z store ../DocumentWithMacro.odt *

Will man jetzt das LibreOffice-Dokument öffnen, erscheint eine Warnung, dass es Makros enthält:

Makro-Warnung in LibreOffice

Unter „Extras -> Optionen -> LibreOffice -> Sicherheit -> Makrosicherheit“ kann man die Makrosicherheitsstufe auf „Mittel“ stellen, um die Makroausführung mithilfe einer Bestätigung zu ermöglichen:

LibreOffice Makrosicherheitsstufe auf Mittel

Danach erhält man ein Auswahlfenster, mit dem man die Ausführung von Makros zulassen kann:

Makros aktivieren zulassen

Unter „Extra -> Makro -> Makro ausführen“ findet man das Makro dann eingebunden im LibreOffice-Dokument und kann von dort gestartet werden:

Makro auswählen

Geschrieben in Gnu/Linux, LibreOffice, OpenSuse, Python | Kommentare deaktiviert für Mein erstes Makro mit Python in LibreOffice

Linux Laptop Basar: Freie Soft- und Hardware

7. November 2019 von Christian Imhorst

Am Samstag, den 30.11.2019, gibt es von 10-18 Uhr den Linux Laptop Basar für freie Soft- und Hardware in der Lernoase des Freizeitheims Vahrenwald in Hannover. Zusammen mit weiteren Mitgliedern der LUG Hannover werden wir dort einen kleinen Linux Presentation Day machen und Unterstützung beim Installieren von Linux anbieten.

Außerdem gibt es:

  • Audio Bearbeitung mit Audacity (Eric Münchow, Audio-Artist)
  • Eine Einführung in die Programmierung des Calliope Mini (Christian Mund, Medienzentrum der Region Hannover)
  • Linux auf Klein-Computern wie Rasperry Pi und Co. Was lässt sich damit alles anstellen? (Reik Kaps, Leine-Lab)
  • Selbstbau eines MakeyMakey auf der Basis eines STM32 Boards – Anleitung (Mirek Hancl)
  • Kreatives Programmieren mit Scratch und dem MakeyMakey (Heiko Idensen, Lernoase)
  • Wie kann ich bei Wikipedia mitmachen? (Wikipedia Hannover)
  • Freie Software für Android Handys: Kleiner F-Droid-Workshop (Christian Imhorst, Linux User Group Hannover)

Eine Vielzahl älterer Laptops, Rasperry Pis, Controller etc. kann man gegen eine kleine Spende erstehen.

Weitere Infos findet ihr unter: kurzelinks.de/basar

Geschrieben in Gnu/Linux | Kommentare deaktiviert für Linux Laptop Basar: Freie Soft- und Hardware

Tagesschau im Firefox gucken mit openSUSE

16. Juni 2019 von Christian Imhorst

Es muss natürlich nicht nur die Tagesschau sein, es geht um Multimedia im Allgemeinen bei openSUSE: Standardmäßig werden aus rechtlichen Gründen nur freie, offene, also nicht patentgeschützte Formate wie Ogg und Flac unterstützt. Für die Wiedergabe von Online-Videos im Firefox wird Software aus einem zusätzlichen Repository wie Packman benötigt.

Ein Repository kann unter openSUSE entweder über YaST hinzugefügt werden, indem man unter der Kategorie „Software“ auf „Software-Repositories“ klickt, dann auf „Hinzufügen“ und dann auf „Community-Repositories“. Unter Leap wird Packman gleich angeboten, unter Tumbleweed trägt man es dann ein (Adresse siehe weiter unten).

Alternativ fügt man das Repository im Terminal mit zypper hinzu:

sudo zypper addrepo -f http://packman.inode.at/suse/openSUSE_Leap_15.1/ packman

Wer Tumbleweed benutzt schreibt statt „openSUSE_Leap_15.1/“ dann „openSUSE_Tumbleweed/“. Danach werden die nötigen Pakete zuerst upgedatet:

zypper up --allow-vendor-change

Und anschließend installiert, was eventuell noch fehlt:

sudo zypper install --allow-vendor-change ffmpeg lame gstreamer-plugins-bad gstreamer-plugins-ugly gstreamer-plugins-ugly-orig-addon gstreamer-plugins-libav libavdevice56 libavdevice58 libdvdcss2 vlc-codecs libavcodec56 libavcodec57 libavcodec58 libavformat56 libavformat57 libavformat58 libavdevice56 libavdevice57 libavdevice58

Die Lösung funktioniert ganz gut für openSUSE Leap und Tumbleweed, wenn man Videos in der Mediathek z.B. auf ARTE.TV, die Tagesschau, oder den Eurosport Player TV-Kanal sehen möchte.

Mehr Infos:

Geschrieben in Gnu/Linux, OpenSuse | Kommentare deaktiviert für Tagesschau im Firefox gucken mit openSUSE

Festplatte voll mit Btrfs-Subvolumes

2. März 2019 von Christian Imhorst

Ich hatte eine ganze Reihe Btrfs-Subvolumes im Dateisystem von openSUSE Tumbleweed einhängen, die Platz auf der Festplatte gebraucht haben, aber im Root-Verzeichnis leer waren. Es waren vor allem Subvolumes von Docker, die den Platz beansprucht haben:

$ sudo btrfs subvolume list /
ID 257 gen 101389 top level 5 path var/tmp
[...]
ID 1599 gen 101254 top level 5 path var/lib/docker/btrfs/subvolumes/5d6eb5431d75641963973f53ab44ffbb328981d3a3781219b0224534cb17cca3
ID 1605 gen 101254 top level 5 path var/lib/docker/btrfs/subvolumes/b4adf86f01370d6b00e3e300cf75ab9d7e540b66af91d46a794f10a78c7aa7b0
ID 1607 gen 101254 top level 5 path var/lib/docker/btrfs/subvolumes/2c35776404fa91d25d4a3009055a1c98f1d8568173fca15911f2ee4989b5f511
ID 1614 gen 101254 top level 5 path var/lib/docker/btrfs/subvolumes/4bced6174066e61a9f01bf99e2d80eddb3865b6c3593b35d4609972af90987f5-init
ID 1615 gen 101254 top level 5 path var/lib/docker/btrfs/subvolumes/4bced6174066e61a9f01bf99e2d80eddb3865b6c3593b35d4609972af90987f5
 
[...]

Meine erste Idee, sie einfach zu löschen, hat nicht funktioniert:

$ sudo btrfs subvolume delete </path/of/subvolume>
   ERROR: cannot access '<subvolume>': No such file or directory

Einen Ansatz, die Subvolumes zu löschen, der funktioniert, habe ich im Unix-Forum von StackExchange gefunden. Ich konnte die Subvolumes löschen, nachdem ich das ganze Btrfs-Volume komplett unter /mnt ins Dateisystem eingehangen habe:

$ sudo mount /dev/mapper/system-root /mnt/ -o subvol=/
$ ls /mnt
   .snapshots  dev   lib64  proc  selinux  tmp
   .w3m        etc   media  root  snap     usr
   bin         home  mnt    run   srv      var
   boot        lib   opt    sbin  sys
$ sudo btrfs subvolume delete /mnt/var/lib/docker/btrfs/subvolumes/4bced6174066e61a9f01bf99e2d80eddb3865b6c3593b35d4609972af90987f5-init/
   Delete subvolume (no-commit): '/mnt/var/lib/docker/btrfs/subvolumes/4bced6174066e61a9f01bf99e2d80eddb3865b6c3593b35d4609972af90987f5-init'

Nachdem ich mit dem Löschen der einzelnen Subvolumes fertig war, habe ich /mnt wieder ausgehangen und das Btrfs-Dateisystem neu ausbalanciert:

$ sudo umount /mnt
$ btrfs balance start -m /
   Done, had to relocate 4 out of 103 chunks
$ sudo btrfs fi df /
   Data, single: total=95.05GiB, used=61.86GiB
   System, single: total=32.00MiB, used=16.00KiB
   Metadata, single: total=1.97GiB, used=1.42GiB
   GlobalReserve, single: total=175.34MiB, used=0.00B

Der disk free Befehl zeigt nach dem Ausbalancieren, dass ich jetzt wieder über 20 GB mehr zur Verfügung habe als vorher. Jetzt muss ich mir nur überlegen, was ich mit Docker und Btrfs zukünftig mache, um mein Btrfs-Volume nicht wieder zu „überfüllen“.

Geschrieben in Gnu/Linux, OpenSuse | Kommentare deaktiviert für Festplatte voll mit Btrfs-Subvolumes

« Previous Entries