USB Backup - Fortsetzung

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
gugus
Beiträge: 381
Registriert: 04.09.2002 17:41:17
Wohnort: da wo ich zu Hause bin

USB Backup - Fortsetzung

Beitrag von gugus » 19.04.2024 10:45:00

Servus
Im Nachgang zu dem Thema unter viewtopic.php?t=188919#p1352762 habe ich nun eine USB Festplatte tauschen müssen da eine der vorhandenen seltsame Geräusche von sich gab und das Backup immer länger dauerte.
Ok, dachte ich, no problem...

Seltsamerweise gibt die neue Platte (Barracuda 2TB) keine Seriennummer aus wenn ich mit udevadmin nachsehe. Da musste ich mir etwas anderes für meine udev rule überlegen. Mein Plan, einfach die neue Platte/Partition zu labeln (e2label) / (Backup1 / Backup2) und udev/systemd/script dementsprechend anzupassen.

Der Vorteil ist, dass ich, wenn notwendig, einfach eine neue Platte mit entsprechenden Label, Backup1-9, einbauen kann und ein Backup wird automatisiert durchgeführt ohne dass ich irgendwelche scripte oder config's anpassen muss.

Dabei habe ich gleich ein neues Feature eingebaut, wenn nur die Platte eingehängt werden soll um zB. eine einzelne Datei zurück zu kopieren ohne dass das Backup starten soll, muss vorher eine "nobackup" Datei in /tmp angelegt werden (touch /tmp/nobackup). Im Backup script wird nach dem mount geprüft ob die Datei existiert, wenn ja, wird kein Backup durchgeführt und die Platte steht für "wasauchimmer" so zur Verfügung.

Wenn dann die Arbeiten erledigt sind wird mit einem kleinen script die Datei "nobackup gelöscht, die Platte ge-synct, ausgehängt und die Steckdose abgeschaltet. Dem normalen Backup steht nichts im Weg.

Die Dateien sind

udev rule: /etc/udev/rules.d/99-usb-backup-disk.rules

Code: Alles auswählen

ACTION=="add", KERNEL=="sd[a-z][0-9]", ENV{ID_FS_LABEL}=="Backup[0-9]", SYMLINK+="%E{ID_FS_LABEL}", TAG+="systemd", ENV{SYSTEMD_WANTS}+="backup@%E{ID_FS_LABEL}.service"
# Übergabe des Labels an den Systemd-Service ist %E{ID_FS_LABEL}
Systemd Service: /etc/systemd/system/backup@.service

Code: Alles auswählen

[Unit]
Description=USBBackup
 
[Service]

# %i ist das übergebene Label
ExecStart=/bin/bash /usr/local/bin/test-udev.sh %i
 
[Install]
WantedBy=system.device
Backup Script: /usr/local/bin/backup_usb.ch
Das Backup script ist gekürzt, am Schluss wird noch eine Zusammenfassung via Email versendet.

Code: Alles auswählen

#!/bin/bash
# Script für ein Backup der Daten Verzeichnisse auf dem Fileserver
# Übergabeparameter $1 ist das Label der Partition e.g. Backup1
# verwendet für Symlink und Mountpoint

UDEV_DEV="/dev/$1"
UDEV_MOUNT="/media/$1"
PROC_MNT="/proc/mounts"
NO_BACKUP="/tmp/nobackup"


if [ -L "$UDEV_DEV" ]
  then 
    /bin/mount -m $UDEV_DEV $UDEV_MOUNT
  else
    echo "ERROR UDEV mount Fehler" > /var/log/rsnapshot_log.log
    exit
fi

if [ -f "$NO_BACKUP" ]
   then
        logger "Datei $NO_BACKUP existiert, kein Backup"
        logger "$NO_BACKUP löschen damit Backup ausgeführt wird"
        exit
fi

if [ grep -q "$UDEV_MOUNT" "$PROC_MNT" ]
  then
    HEUTE=$(date +"%a")
    case $HEUTE in
        Mo|Di|Mi|Do|Fr|Sa)
                TYPE="before daily"
                disk_usage
                logger "rsnapshot daily ..."
                /usr/bin/perl /usr/bin/rsnapshot daily
        ;;
        So)
                TYPE="before weekly"
                disk_usage
                /usr/bin/perl /usr/bin/rsnapshot daily
                sleep 2
                /usr/bin/perl /usr/bin/rsnapshot weekly
        ;;
    esac

    EOM=$(date -d "-$(date +%d) days  month" +%d)
    HEUTE=$(date +%d)

    if [ "$HEUTE" == "$EOM" ]
     then
        TYPE="before monthly"
        disk_usage
        /usr/bin/perl /usr/bin/rsnapshot monthly
    fi

.... usw

Noch ein bischen schön machen und mehr Kommentare.... das war's, vielleicht kanns ja jemand gebrauchen :mrgreen:

Gruss
gugus

Benutzeravatar
heisenberg
Beiträge: 3583
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: USB Backup - Fortsetzung

Beitrag von heisenberg » 19.04.2024 11:01:33

... die neue Platte (Barracuda 2TB) ...
Da muss ich gleich mal einhaken: Das ist eine SMR Platte! Keine idealen Voraussetzungen.

https://www.seagate.com/de/de/products/cmr-smr-list/

Siehe: debianforum.de: Allgemeine Erfahrungen mit SMR
Jede Rohheit hat ihren Ursprung in einer Schwäche.

gugus
Beiträge: 381
Registriert: 04.09.2002 17:41:17
Wohnort: da wo ich zu Hause bin

Re: USB Backup - Fortsetzung

Beitrag von gugus » 19.04.2024 11:15:46

Ah, danke, war mir so nicht bewusst.
Ich hatte die mal Anfang Jahr gekauft...
Ja nu, die läuft einmal pro 24 Stunden für ne halbe Stunde.

Ich werde es beobachten, habe ja ne kleine Funktion "disc-usage" eingebaut die mir verschiedenste Informationen nach dem Backup rausgibt.

Edit: Du hast in einem Beitrag selber auf ein Fazit hingewiesen:
heisenberg hat geschrieben: ↑ zum Beitrag ↑
27.06.2022 21:10:59
Das scheint mir ein umfassender und guter Artikel zu sein:

https://www.hardwareluxx.de/index.php/a ... hoden.html

Aus dem Fazit auch mal was positives für SMR:
Generell gilt aber festzuhalten: SMR-Festplatten sind nicht schlecht, schon gar nicht unbrauchbar. Für bestimmte Anwendungen mit linearem Schreiben oder zur Nutzung als Datengrab eigenen sie sich sehr gut. Wer eine große Festplatte für den Desktop-PC sucht, um dort Daten vorzuhalten, bekommt kühle und leise Festplatten mit geringer elektrischer Leistungsaufnahme.

Positive Aspekte von Shingled Magnetic Recording:

niedrige Leistungsaufnahme
günstiger Preis

Negative Aspekte von Shingled Magnetic Recording:

nicht für jeden Anwendungsfall einsetzbar (random access write)
Von daher, alles im grünen Bereich bei mir :mrgreen: :THX:
Zuletzt geändert von gugus am 19.04.2024 11:24:30, insgesamt 1-mal geändert.

Benutzeravatar
heisenberg
Beiträge: 3583
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: USB Backup - Fortsetzung

Beitrag von heisenberg » 19.04.2024 11:23:00

Also wenn die Platte nicht mit parallelen Zugriffen benutzt wird - so wie hier - dann kann es es sein, dass die Ihren Zweck erfüllt. Ansonsten ist das ja hier Off-Topic und geht hier ja um das Script.
Von daher, alles im grünen Bereich bei mir :mrgreen: :THX:
Ja. In diesem Fall mag das so sein. Ich selbst mache um SMR aber grundsätzlich und immer einen ganz großen Bogen und lasse lieber andere Leute Ihre Erfahrungen mit SMR machen. Also berichte gerne, wenn es etwas Neues zu berichten gibt. :-D
Jede Rohheit hat ihren Ursprung in einer Schwäche.

niemand
Beiträge: 534
Registriert: 22.12.2023 16:35:53
Kontaktdaten:

Re: USB Backup - Fortsetzung

Beitrag von niemand » 19.04.2024 12:44:14

gugus hat geschrieben: ↑ zum Beitrag ↑
19.04.2024 10:45:00
ich [habe] nun eine USB Festplatte tauschen müssen da […] das Backup immer länger dauerte.
War das auch eine SMR-Platte? In dem Fall hätte es mit einer gewissen Wahrscheinlichkeit helfen können, die mal einige Stunden am Strom zu lassen, damit sie die im CMR-Cache liegenden Daten in Ruhe wegschreiben kann.
„I fought in the Vim-Emacs-War.“ Quelle

gugus
Beiträge: 381
Registriert: 04.09.2002 17:41:17
Wohnort: da wo ich zu Hause bin

Re: USB Backup - Fortsetzung

Beitrag von gugus » 19.04.2024 13:12:07

Also, die Platte wurde/wird nur für das Backup eingeschaltet, rsnapshot durchgeführt, gesynct, umount und abgeschaltet.
Wo sollten da noch Daten in Cache sein ?

Da ich gleich die neue Platte mit einem ersten Durchlauf starte ist es für mich nicht wirklich wichtig, habe meine Daten noch und eine 2. Platte ... :mrgreen:

Benutzeravatar
heisenberg
Beiträge: 3583
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: USB Backup - Fortsetzung

Beitrag von heisenberg » 19.04.2024 13:15:52

gugus hat geschrieben: ↑ zum Beitrag ↑
19.04.2024 13:12:07
Also, die Platte wurde/wird nur für das Backup eingeschaltet, rsnapshot durchgeführt, gesynct, umount und abgeschaltet.
Wo sollten da noch Daten in Cache sein ?
Das ist eine Besonderheit von SMR. Sie hat einen "schnellen" CMR-Cache. Der wird ab und zu mal auf die "langsameren" SMR-Bereiche geschrieben. Schnell heisst hier, dass eine (herkömmliche) CMR-Platte gut per random-access beschrieben werden kann, während "langsam" bei SMR meint, dass diese aufgrund der Aufzeichnungstechnik nur sequentiell beschrieben wird und random-access-writes in sequentielle-writes umwandelt um dann große Datenblöcke auf einmal zu schreiben.

Die Controllerlogik der Platte macht das, wenn halt sonst nix zu tun ist. Wenn Sie das nicht schafft - weil die Platte aus ist oder ständig zu viel geschrieben wird, dann passieren diese Reorganisationen in den Zeiten, in denen die Platte arbeitet - was sehr ungünstig ist, bzw. den normalen Schreibbetrieb stark beeinträchtigt und die Schreibgeschwindigkeit reduziert (mitunter bis auf 0 für bis zu mehreren Minuten, wenn der Cache voll ist).
Jede Rohheit hat ihren Ursprung in einer Schwäche.

gugus
Beiträge: 381
Registriert: 04.09.2002 17:41:17
Wohnort: da wo ich zu Hause bin

Re: USB Backup - Fortsetzung

Beitrag von gugus » 19.04.2024 13:25:25

Na ja, ich habe mich damit noch nicht beschäftigt.
Ich kann die Platte auch 30min nachlaufen lassen, kein Problem.
Weiss aber jetzt auch nicht wo und wie ich dies kontrolliere ob dann alles "hygienisch rein" auf der Platte ist.
So nur auf Zuruf ohne Kontrolle scheint mir irgendwie komisch

Benutzeravatar
heisenberg
Beiträge: 3583
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: USB Backup - Fortsetzung

Beitrag von heisenberg » 19.04.2024 13:30:33

gugus hat geschrieben: ↑ zum Beitrag ↑
19.04.2024 13:25:25
Weiss aber jetzt auch nicht wo und wie ich dies kontrolliere ob dann alles "hygienisch rein" auf der Platte ist?
Keine Ahnung. Man weiss halt nicht so viel über diese platteninternen Vorgänge.

ChatGPT hat da ein paar Hilfreiche Sätze dazu: https://chat.openai.com/share/7f3c4f39- ... 831568ec78 (Vorsicht: Das muss nicht wahr sein!)

Ich würde mal prüfen, wie die Festplattenaktivität im Leerlauf so ist. Aber wie man Hintergrundaktivität einer Festplatte misst, außer mal zu hören, ob die Platte Aktivitätsgeräusche produziert, wüsste ich jetzt auch nicht.

Wie niemand schon schrieb: Lieber mal etwas mehr Idle-Zeit lassen, zumindest einmalig bzw. regelmässig wiederkehrend mal (also einmalig vielleicht mal einen Tag im Idle belassen) bis die aufgelaufenen Reorganisationen durchgeführt wurden.

Nachtrag:

Ein Ausgabe von smartctl -a der Platte wäre vielleicht ganz hilfreich. Dann würden wir hier sehen, ob und welche zusätzlichen Smart-Informationen der Hersteller in Bezug auf SMR vielleicht bereitstellt.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
MSfree
Beiträge: 10799
Registriert: 25.09.2007 19:59:30

Re: USB Backup - Fortsetzung

Beitrag von MSfree » 19.04.2024 13:46:55

Die Lese-/Schreibgeschwindigkeit von Festplatten ist nicht konstant. Der Umfang einer Spur am äußeren Rand der Platte ist rund doppelt so lang wie der Umfang der am weitesten innen liegenden Spur. Die Datendichte in Bytes pro mm Spurlänge ist aber konstant. Das heißt, daß Spuren im innenre Bereich weniger Bytes tragen können als im äußeren Bereich. Die Drehzahl ist ebenfalls konstant, so daß im inneren Bereich die Datenrate ungefähr die Hälfte ist wie im äußeren Bereiech.

Dazu kommt, daß das Betriebssystem bei zunehmendem Füllstand des Dateisystem immer öfter Lücken füllen müssen, die vormals zum Zweck der Minimierung von Fragmentierung freigelassen wurden. Dadurch nehmen die Kopfbewegungen mit steigendem Füllstand zu. Zusätzlich steigt die Fragmentierung, Dateien müssen über mehrere nicht zusammenhängende Teile verteilt werden. Das bremst die Geschwindikgeit zusätzlich aus.

Sowohl der geometrische Effekt durch variierende Bytes pro Spur als auch die Zunahme von Kopfbewegungen durch steigenden Füllstand führen dazu, daß Platten immer langsamer vor allem beim Schreiben werden. Beim Lesen federn der Cache auf der Platte und der Cache des Betriebssystems vieles ab.

Bei SMR-Platten werden die Spuren überlappend geschrieben, um den Abstand zwischen zwei Spuren zu verringern. Man kann hier also nicht mehr eine einzelne Spur überschreiben, wenn man mitten drin etwas schreiben will. Man muß also immer ein ganzes Bündel von Spuren einlesen und erneut überlappend schreiben. Damit man nicht die ganze Platte neu schreiben muß, ist die Platte von außen nach innen in Zonen unterteilt, so daß jeweils "nur" eine Zone gelesen und überlappend geschrieben werden muß. Um das Neuschreiben einer Zone kümmert sich der Controler auf der Platte, das Betriebssystem bekommt davon nichts mit. Allerdings bekommt das Betriebssystem mit, daß einige Schreibvorgänge gelegentlich deutlich länger als erwartet dauern. Das kann dazu führen, daß das Bertiebssystem die Platte als aufgehängt betrachtet, was insbesondere bei RAIDs zu Platten führt, die fälschlicherweise als fehlerhaft markiert und aus dem RAID-Verbund rausgeworfen werden.

Ein Teil einer SMR-Platte ist in konventioneller CMR-Schreibweise organisiert und dient als Cache, um Schreibvorgänge in die SMR-Zonen auf Zeitpunkte zu verlagern, wo die Platte nichts zu tun hat. Ist der Cache voll, kann eine SMR-Platte sehr langsam werden, weil erstmal der Cache abgearbeitet werden muß.

Eine SMR-Platte mal eine Nacht am Strom zu lassen, würde ihr die Gelegenheit geben, den Cache umzuschreiben. Auch hier gilt, das macht alles der Controller auf der Platte. Das Betriebssystem hat hierüber keine Einflußmöglichkeit.

gugus
Beiträge: 381
Registriert: 04.09.2002 17:41:17
Wohnort: da wo ich zu Hause bin

Re: USB Backup - Fortsetzung

Beitrag von gugus » 19.04.2024 14:12:36

Hehehe, ChatGPT weiss halt auch nur das was ihm verfüttert wurde.
Sieht man klar an dieser Antwort, die auf allgemein bekannte Maßnahmen verweist.

Herstellerangaben sind sicherlich die beste Variante.
Man könnte auch nach beenden des Backups den Strombedarf der Platte messen, aber ich glaube in diesem Fall mit Kanonen auf Spatzen geschossen.


...und eigentlich geht es hier um udev und systemd und durchreichen des Labels einer Platte.

PS: habe gerade mal nachgesehen, die Platte ist von 2012, die darf das

Antworten