USB Stick für PostgreSQL vorbereiten (Raspbian Buster)

  • Hallo, ich beabsichtige auf einem USB Stick einen PostgreSQL Tablespace zu erstellen. Den Stick habe ich auf einem Drittrechner mithilfe der KDE-Partitionsverwaltung formatiert (GPT, ext4). Am Raspberry mit Raspian Buster erscheint der Stick unter der Bezeichnung 'sda'. Bei älteren Raspbian Versionen war das nach meiner Recherche wohl nicht der Fall und der Stick musste erst händisch eingebunden werden. Welche Vorbereitungen sind unter Buster noch zu treffen? PostgreSQL soll auch funktionieren, wenn der Raspberry neu gestartet wird und/oder eine zweiter Stick verwendet wird. Mit älteren Anleitungen besteht wohl die Gefahr sich etwas zu zerschießen :/ Danke!

  • Auf /dev/sda sollte eigentlich nichts gemountet werden, weder automatisch, noch manuell, Sondern auf einer, auf dem Gerät angelegten Partition [z.B. /dev/sda1]



    Servus !

    RTFM = Read The Factory Manual, oder so

  • So ich habe nun folgende Schritte durchgeführt:


    Kann man das so machen? Mich wundert, dass unter fstab PARTUUID Einträge bestehen, ich aber eine UUID ergänze. Das Ergebnis scheint aber zu stimmen:


    sda 8:0 1 58.2G 0 disk

    └─sda1 8:1 1 58.2G 0 part /media/cloud_daten

  • PostgreSQL soll auch funktionieren, wenn der Raspberry neu gestartet wird und/oder eine zweiter Stick verwendet wird. Mit älteren Anleitungen besteht wohl die Gefahr sich etwas zu zerschießen :/ Danke!

    Dann würde ich das Mounten mit einer Mount Unit machen.

    Dadurch gewinnst du den Vorteil, dass du Postgres oder dein Programm mit einer Service Unit starten lassen kannst. In dieser definierst du eine Abhängigkeit, dass es erst starten darf, wenn die Mount Unit erfolgreich ausgeführt ist.

    Somit kannst du sicherstellen, dass das mounten erfolgte.

  • Mounten lässt sich ein Filesystem nicht nur über das Device (/dev/xxx), sondern auch über:

    PARTUUID=

    UUID=

    LABEL=

    Da sich der Device-Descriptor (/dev/sda1) ändern kann, z.B. auf /sdb1, /sdc1 .... /sdz1, soll über eine eindeutige und einmalige Kennung gemountet werden. Dafür, dass UUID,PARTUUID,LABEL nur einmal im System vorkommt, ist der (Host-)Admin verantwortlich, der sich mit "List Block-Devices" und seinen Output-Optionen sich die richtigen Spalten anzeigen lässt. <lsblk -h>


    Von Zeile 14 gefällt mir sync und users nicht.

    Bei der syncronen Datenübertragung wird nach jedem empfangenen Block ein kompletter Schreibzugriff durchgeführt, was bei einem journalisierenden Filesystem eine Vielzahl von Journaleinträgen (Schreibzugriffen) nach sich zieht. Der nächste Block wird erst angefordert, wenn alle Journaleinträge durchgeführt wurden und die Prüfsumme des Blochs richtig ist. Bei grösseren (Medien-Dateien) wirst Du mit *der* Übertragungsgeschwindigkeit keine Freude haben, wie auch ein Speicherchip vorzeitig verschleisst.


    Was Du mit "users" vorhast, weiss ich nicht, Da kann zwar jeder User das Device mounten, wenn es sich einmal ausgehängt hat, allerdings dann auch umounten, was weniger gewollt ist.


    Automatisch geht jetzt gar nichts mehr. Jetzt musst Du die Unterverzeichnisse mit den richtigen Rechten erstellen (und die config Dateien berichtigen) wo Deine Dateien am Stick abgelegt werden sollen. Vorher ist eine Datensicherung angebracht.


    Servus !

    RTFM = Read The Factory Manual, oder so

  • ...

    Was Du mit "users" vorhast, weiss ich nicht, Da kann zwar jeder User das Device mounten, wenn es sich einmal ausgehängt hat, allerdings dann auch umounten, was weniger gewollt ist.


    Automatisch geht jetzt gar nichts mehr. Jetzt musst Du die Unterverzeichnisse mit den richtigen Rechten erstellen (und die config Dateien berichtigen) wo Deine Dateien am Stick abgelegt werden sollen. Vorher ist eine Datensicherung angebracht.


    Servus !

    Hallo und danke für die Rückmeldung. Was ich mit 'users' vorhabe, weiß ich leider auch nicht. Ich befolge grundsätzlich die im Internet auffindbaren Tutorials und ggf. vorhandene Kommentare. Ein paar Sachen verstehe ich, hin und wieder lerne ich etwas dazu, aber zumeist tippe ich Anweisungen ab. Kann ich 'users' und 'sync' einfach weglassen, z.B.:


    UUID=xxx /media/cloud_daten ext4 auto,nofail,rw 0 0


    Bezüglich 'Automatisch geht jetzt gar nichts mehr', kann ich den Stick einfach neu formatieren und von vorne beginnen? Daten habe ich noch keine gespeichert.


    Hofei


    Vielen Dank für deinen Beitrag, ich werde das zumindest mal im Hinterkopf behalten!

  • Auch wenn Du den Stick neu formatierst werden die "cloud_daten" genausowenig automatisch darauf landen, wie die Postgres Datenbanken. Wenn Du von den vorkonfigurierten Installationeinstellungen abweichen willst (/media/cloud_daten/xyz), dann musst Du das nach der Grundinstallation nach der Dokumentation des Herstellers ändern, meistens in den config-Files.


    Das kritiklose Abschreiben irgendwelcher, im Internet gefundenen Anleitungen ist ab einer gewissen Systemanforderung nicht ratsam. Eine Anleitung funktioniert nä,lich nur am System des Anleitenden zum Zeitpunkt der Erstellung der Anleitung (und das manchmal auch mehr schlecht als recht).


    So mag eine Mount Anleitung vor 5 Jahren "UUID=xxx /media/cloud_daten ext4 auto,nofail,rw 0 0" möglicherweise richtig gewesen sein und irgendwie funktionieren. Zum heutigen Zeitpunkt wäre "UUID=xxx /media/cloud_daten ext4 nofail 0 2" empfehlenswert, da die in mount einkompilierten Voreinstellungen (rw, suid, dev, exec, auto, nouser, async) nicht neuerlich definiert werden müssen. Es gilt immer die aktuelle, mit den (System-)Programmen mitinstallierte und -upgedatete Dokumentation, die Du auf Deinem System hier mit < man mount > und < man fstab >, samt SEE ALSOs ansehen kannst.


    Auch der 2-er im sechsten fstab Feld ist in < man fstab > beschrieben.



    Servus !

    RTFM = Read The Factory Manual, oder so

  • Ja, dass ich die PostgreSQL Daten auf den Stick bringen muss ist mir schon bewusst. Ich möchte ja erstmal auch nur den Stick entsprechend vorbereiten. Nicht, dass die Datenbank nicht mehr funktioniert wenn ich den Pi neustarte und/oder einen zweiten Datenträger anstecke.


    Das mit den Tutorials ist so eine Sache. Mir fehlt einfach die Zeit und das Verständnis, um mich tief in die Materie einzuarbeiten. Ich möchte auch nur eine kleine Cloud für unkritische private Daten betreiben.

  • Einen Tablespace auf einem externen Stick zu erstellen ist anscheinend keine gute Idee:


    https://dba.stackexchange.com/…l-database-on-external-hd


    Besser ist es wohl den Datenordner zu verschieben:


    https://www.digitalocean.com/c…-location-on-ubuntu-16-04


    Die '2' in der 6. fstab Spalte verstehe ich mittlerweile. Die vielen möglichen Parameter der 4. Spalte sind noch etwas verwirrend. Für meinen Anwendungfall werde ich es neben 'nofail' wohl erstmal bei den 'defaults' belassen.

    Zum heutigen Zeitpunkt wäre "UUID=xxx /media/cloud_daten ext4 nofail 0 2" empfehlenswert, da die in mount einkompilierten Voreinstellungen (rw, suid, dev, exec, auto, nouser, async) nicht neuerlich definiert werden müssen.

    Gut, ich habe das jetzt so verstanden, dass die Default Parameter (rw, suid, dev, exec, auto, nouser, async) auch ohne 'defaults' Verwendung finden.


    Danke!