xylit
Anmeldungsdatum: 22. September 2016
Beiträge: 135
|
Hallo,
habe soeben den Beitrag gelesen. das habe ich soweit verstanden, bei mir habe ich ein Script, dass 8 VM Server per ZFS sichert. | test -x /usr/sbin/zfSnap || exit 0
/usr/sbin/zfSnap -a 2d datenproxmox/bacula-web "alles wa älter als 2 Tage ist löschen"
/usr/sbin/zfSnap -d "tage"
|
"dass ganze 8 mal" Da hier mehrere commando "s" stehen, wie könnte ich dass in die schleife einbauen? vielen dank
|
nbkr
Anmeldungsdatum: 29. Oktober 2007
Beiträge: 1936
Wohnort: Aschaffenburg
|
Ich verstehe die Frage nicht so ganz. In den 3 Zeilen deines Scripts kann ich nicht erkennen was sich zwischen den durchläufen ändert. Vermutlich das 'datenproxmox/bacuala-web'? Der Test am Anfang, also test -x /usr/bin/zfSnap schaut nur nach ob es die Datei gibt und diese ausführbar ist. Da diese Datei ja aber immer gleich bleibt, reicht es
das einmal am Anfang zu testen. Insofern kann man das so umschreiben: test -x /usr/sbin/zfSnap || exit 0
for i in $(seq 1 8); do
/usr/sbin/zfSnap -a 2d datenproxmox/bacula-web "alles wa älter als 2 Tage ist löschen"
/usr/sbin/zfSnap -d "tage"
done Aber wie gesagt, das ist noch nicht wirklich sinnvoll, da du ja das gleiche Kommando 8x ausführst. Sinnvoller wirds so, wobei, wie gesagt, ich nicht weiß wie die anderen Kommandoaufrufe aussehen: vms="datenproxmox server2 server3 server4 server5 server6 server7 server8"
test -x /usr/sbin/zfSnap || exit 0
for i in $vms; do
/usr/sbin/zfSnap -a 2d ${i}/bacula-web "alles wa älter als 2 Tage ist löschen"
/usr/sbin/zfSnap -d "tage"
done
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12829
|
xylit schrieb:
Da hier mehrere commando "s" stehen, wie könnte ich dass in die schleife einbauen?
Das hängt natürlich davon ab, was Du erreichen möchtest. Wenn Du nur das Skript bei einem Fehler terminieren willst, dann kannst Du auch die Option set -e benutzen. | $ ( echo 1; false; echo 2 )
1
2
$ ( set -e; echo 1; false; echo 2 )
1
$ echo $?
1
|
|
xylit
(Themenstarter)
Anmeldungsdatum: 22. September 2016
Beiträge: 135
|
Hallo, oha, dass sieht etwas komplex aus. 😬 Ich betreibe einen Hypervisor mit 8 virtuellen VMS.
Diese werden nachts per snapshot gesichert. Was älter als 2 Tage ist, wird gelöscht.
Hier mein Script das in einer Datei wohnt. Dieses wird jeden Abend umd 20 Uhr aufgerufen | 0 20 * * * /root/backup-zfsnap/000-zfs-snapshot-all-vms
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100 |
# Alle Server herunterfahren!
#-- Abschnitt Script aus Forum Begin ------------------------------------------------------------------
WAIT=5 # waiting 5 mn max before hard stopping remaining guests
VMLIST=$(qm list | grep running | tr -s " " "#" | cut -d\# -f2)
for i in $VMLIST; do
qm shutdown $i
done
while [ $WAIT -gt 0 ]; do
VMLIST=$(qm list | grep running | tr -s " " "#" | cut -d\# -f2)
[ x"$VMLIST" = "x" ] && break
WAIT=$((WAIT-1))
sleep 60
done
[ $WAIT -eq 0 ] && qm stopall 30
# Fährt Hypervisor komplett herunter!
# shutdown -h now
#-- Abschnitt Script aus Forum END ------------------------------------------------------------------
#------------------------------------- Script wurde auf 3 Server gestestet, keine Probleme!
# Snapshots ausführen!
test -x /usr/sbin/zfSnap || exit 0
/usr/sbin/zfSnap -a 2d datenproxmox/server1
/usr/sbin/zfSnap -d
test -x /usr/sbin/zfSnap || exit 0
/usr/sbin/zfSnap -a 2d datenproxmox/server2
/usr/sbin/zfSnap -d
test -x /usr/sbin/zfSnap || exit 0
/usr/sbin/zfSnap -a 2d datenproxmox/server3
/usr/sbin/zfSnap -d
test -x /usr/sbin/zfSnap || exit 0
/usr/sbin/zfSnap -a 2d datenproxmox/server4
/usr/sbin/zfSnap -d
test -x /usr/sbin/zfSnap || exit 0
/usr/sbin/zfSnap -a 2d datenproxmox/server5
/usr/sbin/zfSnap -d
test -x /usr/sbin/zfSnap || exit 0
/usr/sbin/zfSnap -a 2d datenproxmox/server6
/usr/sbin/zfSnap -d
test -x /usr/sbin/zfSnap || exit 0
/usr/sbin/zfSnap -a 2d datenproxmox/server7
/usr/sbin/zfSnap -d
test -x /usr/sbin/zfSnap || exit 0
/usr/sbin/zfSnap -a 2d datenproxmox/server1-daten "zweite virtuelle Disk des server7 extra ZFS Volume"
/usr/sbin/zfSnap -d
# Server wieder hochfahren
sleep 5
qm start 200
sleep 5
qm start 203
sleep 5
qm start 204
sleep 5
qm start 208
sleep 5
qm start 211
# schreibe ausgabe in eine Datei
# qm list > vmserver.txt
#sende Mail
echo "Alle VMS gestartet" | mail -s "Alle VMS gestartet" user@domain.de
|
Das läuft alles Prima "seit ca. 3 Wochen", so kann ich 8 Server in weniger als 1 ner Minute komplett sichern. Allerdings ist dass noch eine Testumgebung! Nun muss ich mich auch darauf verlassen können, dass alles sauber durchläuft. Deshalb war meine Überlegung, Abfragen einzubauen, dass wenn server3 keinen zfSnap bekommt, ich per Mail eine Benachrichtigung per Mail bekomme usw. Ich bin ein absoluter Laie wenn es um die Shell Programmierung geht. Vielleicht könnte man dieses mit 2 oder 3 Schleifen und einigen Variablen auch kürzer gestalten. Ich werde eure Vorschläge mal probieren "vielen dank nochmal". Wenn ich nicht weiterkomme, melde ich mich nochmal. viele grüsse
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12829
|
xylit schrieb:
oha, dass sieht etwas komplex aus. 😬
Was?
Vielleicht könnte man dieses mit 2 oder 3 Schleifen und einigen Variablen auch kürzer gestalten.
Da ist ja furchtbar viel Redundanz. Da muss auf jeden Fall eine Schleife (oder mehr) her. Völlig schleierhaft ist auch, warum Du ständig diese Zeile wiederholst: | test -x /usr/sbin/zfSnap || exit 0
|
Außerdem, wenn das Programm nicht da ist, dann will man doch mit einem Fehler aussteigen - und nicht mit 0 für "OK". Ein weiterer Punkt, der mir auffällt: da Du erst alle Server herunter fährst, dann sicherst und dann wieder hochfährst, sind alle VMs länger offline als nötig. Wir wissen ja nicht, ob das so sein muss, weil es da Abhängigkeiten zwischen den VMs gibt. Eine andere Sache, die mir auffällt: beim Stoppen suchst Du dynamisch alle VMs zusammen, aber Du startest nur bestimmte festgelegte. Das ist inkonsistent. Das sind die Dinge, die mir beim ersten Draufschauen aufgefallen sind.
|
xylit
(Themenstarter)
Anmeldungsdatum: 22. September 2016
Beiträge: 135
|
hallo, Dass wiederholen einer Zeile hat es damit aufsich, dass ich mich damit nicht auskenne. Hatte ich breits geschrieben. Ich muss dass doch mal loswerden, da wendet sich man an ein Forum, an dem man denkt, man könnte Hilfe erwarten. Stattdessen bekommt man eine Rüge!.
"Da ist ja furchtbar viel Redundanz" Da geht mir jede puste aus!
Aber mit deiner Redundanz scheint alles in Ordnung zu sein. Eine konstruktive Antwort fällt dir dazu nicht ein. Naja, ich denke nicht, dass Dir ein komplexes Netzwerk jemals untergekommen ist. Ich komme aus dem Handwerk, "Schreiner seit 18 Jahren".
Seit 20 Jahen in der EDV. Ich würde dich mal als Hobby Scheiner weiterleiten! danke
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
xylit schrieb: Dass wiederholen einer Zeile hat es damit aufsich, dass ich mich damit nicht auskenne. Hatte ich breits geschrieben.
Dazu würde ich Dir vorschlagen, dass Du Dir tatsächlich mal unser Skripting-Wiki durcharbeitest. Und das meine ich jetzt nicht als Spruch, sondern ernsthaft, und konstruktiv !
Ich muss dass doch mal loswerden, da wendet sich man an ein Forum, an dem man denkt, man könnte Hilfe erwarten. Stattdessen bekommt man eine Rüge!.
"Da ist ja furchtbar viel Redundanz"
Nee, dafür kenne ich den Robert schon zu lange: das war wirklich als Hilfe gemeint, und als Hinweis, wie Du da besser 'rangehen kannst. Denn wenn Du den selben Abschnitt 8 Mal wiederholst, siehst Du vor lauter Zeugs und Wiederholungen die Fehler nicht mehr. Aber mit deiner Redundanz scheint alles in Ordnung zu sein.
... und der Vorschlag von Robert war ja gerade, die Redundanz zu vermeiden (→ eben nicht 8x das selbe zu schreiben !), sondern statt dessen 1 Schleife, die dann 8x (eben für jede der Maschinen) durchläuft. Sowas ist um Klassen robuster, sage ich Dir als Praktiker ! Naja, ich denke nicht, dass Dir ein komplexes Netzwerk jemals untergekommen ist.
Ich glaube, da täuscht Du Dich. Robert arbeitet nämlich auch von Berufs wegen "in der IT", und da hat der schon ganz andere Sachen gesehen als Du und ich. Wie gesagt: nimm unsere Kommentare mal nicht als "Rüge" oder so, sondern wirklich nur als Hinweise, wie man sowas stabiler und robuster programmieren kann. So als Tip von "alten Hasen" ** ... LG, track ** ... mir fällt gerade auf, dass ich meine ersten Programme vor ± 43 Jahren geschrieben habe, damals noch auf einem Olivetti-Rechner, natürlich in Maschinecode. Danach habe ich dann ALGOL60 gelernt, als richtige Programmiersprache. Das war auf einem Telefunken TR 440. Und ein bisschen schreinern tu ich auch. Jedenfalls habe ich schon verschiedene Möbel gebaut, und ½ Dachstuhl.
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12829
|
xylit schrieb:
Ich muss dass doch mal loswerden, da wendet sich man an ein Forum, an dem man denkt, man könnte Hilfe erwarten. Stattdessen bekommt man eine Rüge!.
"Da ist ja furchtbar viel Redundanz"
Tut mir leid, dass Du das als Rüge verstehst. Ich habe das nicht als persönlichen Vorwurf gemeint. Ich war vielleicht nur etwas knapp in meiner Antwort wg. Zeitmangel.
Eine konstruktive Antwort fällt dir dazu nicht ein.
Ich habe ein paar Hinweise gegeben, was ich ändern würde.
Naja, ich denke nicht, dass Dir ein komplexes Netzwerk jemals untergekommen ist.
Vielleicht. Unsere Kunden betreiben unser Produkt in Clustern bis zu hundert Maschinen, und unsere Cloud besteht auch aus reichlich Netzwerkknoten verteilt auf über 40 Länder. Dazu ärgern wir uns immer mal wieder mit unseren internen Netzwerken herum. Viele Grüße robert
|
xylit
(Themenstarter)
Anmeldungsdatum: 22. September 2016
Beiträge: 135
|
Hallo Robert, egal wass für eine Frage man hat, ich wollte nur etwas Hilfe bekommen. Cluster ist nett, nur mache ich dass nicht, da ich die Datenschutzbestinmmenungen der 40 Länder nicht kenne!
Bei 40 Ländern "Dazu ärgern wir uns immer mal wieder mit unserenm internen Netzwerken herum.", mal abgesehen von den 40 Ländern, finde ich es sehr schade, dass man sich über sein eigenes Netzwerk ärgert!.
Da ich keine Ahnung von Shell Programmierung habe, aber von Netzwerken, ist mir dass schleierhaft!
40 Ländern unter einen Hut zu bekokmmen, mal Respekt!
Abgeshen von der Datensicherung und den Servern.
Hut ab!
gruss
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12829
|
xylit schrieb:
Bei 40 Ländern "Dazu ärgern wir uns immer mal wieder mit unserenm internen Netzwerken herum.", mal abgesehen von den 40 Ländern, finde ich es sehr schade, dass man sich über sein eigenes Netzwerk ärgert!.
Tja, das passiert, wenn die gesamte Firma über die Jahre teilweise durch Zukäufe gewachsen ist und es so viele Wechsel in der Firmen- und IT-Struktur gibt, dass nicht mehr viele in der IT durchblicken. Wir selbst haben auf die IT-Ressourcen keinen Zugriff, dafür aber spezielle Anforderungen, was Verbindungen nach "draußen" angeht. Um mal wieder langsam zum Thema zurück zu kommen: Du hast ja auch schon verschiedene Hinweise bekommen, wie Du das eleganter lösen kannst. Wo hakt es denn jetzt noch?
|
xylit
(Themenstarter)
Anmeldungsdatum: 22. September 2016
Beiträge: 135
|
Hallo, sorry für die späte Antwort. zu deiner Frage "da Du erst alle Server herunter fährst, dann sicherst und dann wieder hochfährst!" ja, dass ist leider bei zfsonlinux so, ich kann nichts daran Ändern. Führe mal einen Sanpshot mit 3 Seafile Servern durch, die Online sind, dass klappt noch, aber spätestens bei einem zfs rollback hast du den salat. Dass gleiche gilt auch für Zentyal und Owncloud. Zudem wird über Bacula paralell noch gesichert. Da alles unter Proxmox sattfindet, könnte ich auch unter Proxmox das qm suspend ausführen "anhalten der VM", jedoch ist dass bei einem Dataset mit ZFS so nicht möglich! Da es wohl nicht direkt mit vzdump unter Proxmox kompatibel ist. Alles im allem sehe ich keinen Grund dafür, hier meine ganze Netzwerkstruktur darzustellen. ich wollte einfach nur einen kleinen Tipp, was dass Script angeht. Und wenn die Server herunter gefahren werden müssen, dann hat es seinen Grund, sonst klappt später der zfs rollback nicht und ich kann mit Snapshot Backup nichts anfangen. Ich finde schon diese Fragestellung etwas Schräg.
|