Auf FreeBSD gibt es mehrere Wege, ZFS-Snapshots zu automatisieren. Ein bewährtes Tool ist zfs-auto-snapshot aus den Ports (sysutils/zfstools). Es orientiert sich an der Snapshot-Automatisierung von Solaris/OpenSolaris und kann auch konsistente Snapshots einer MySQL- oder PostgreSQL-Datenbank erstellen.
Hinweis: Seit FreeBSD 13 gibt es mit periodic(8) und dem ZFS-Periodic-Script eine eingebaute Alternative, die ohne zusätzliche Pakete auskommt. Für ältere Systeme oder mehr Kontrolle über die Retention bleibt zfstools eine gute Wahl.
Für konsistente Datenbank-Snapshots muss das Property auf dem Datenbank-Dataset speziell gesetzt werden — zfs-auto-snapshot friert die Datenbank dann vor dem Snapshot kurz ein:
# PostgreSQL
zfs set com.sun:auto-snapshot=postgresql zroot/data/postgres
# MySQL/MariaDB
zfs set com.sun:auto-snapshot=mysql zroot/data/mysql
Wichtig: Snapshots auf demselben System sind kein Backup-Ersatz. Geht die Platte kaputt, sind die Snapshots mit weg. Für eine echte Sicherung die Snapshots per zfs send/recv auf ein zweites System replizieren.
In meiner Sun Ultra 45 ist die Grafikkarte abgeraucht. Eine Sun XVR-2500, gebaut von 3Dlabs als Wildcat Realizm 800. PCI Express x16, Dual-DVI, damals eine professionelle OpenGL-Karte für CAD und Visualisierung. Die Workstation ist von 2006, also neun Jahre alt zum Zeitpunkt des Defekts. Ein Neun-Jahre-altes System darf mal einen Defekt haben.
Die Maschine
Zwei UltraSPARC IIIi mit 1,6 GHz, 8 GB RAM, SAS-Platten. Mit Solaris drauf ist das noch immer ein brauchbares Arbeitsgerät. Natürlich kann man das alles auch auf jeder anderen Kiste machen. Aber die Maschine läuft seit Jahren perfekt und ich hänge an dem Ding.
Reparieren oder nicht?
Die Entscheidung stand zwischen endgültig in Rente schicken oder eine Ersatzkarte besorgen. Refurbished XVR-2500 gab es für rund 70 Euro. 70 Euro in ein neun Jahre altes System stecken klingt nicht rational. Andererseits: Das Gehäuse, die Tastatur, die Maus, das ganze Ding hat Charakter. Sun hat Hardware gebaut die man anfassen wollte.
Die Bilder zeigen die Workstation, die defekte Karte und ein paar Details. Wer sowas kennt, versteht warum man 70 Euro für eine Ersatzkarte ausgibt.
Veraltet: Solaris 11 und OpenIndiana werden kaum noch eingesetzt. Unter FreeBSD lautet der Befehl shutdown -p now, unter Linux systemctl poweroff.
Ich habe heute einen Anruf eines befreundeten Sysadmins bekommen. Der arme muss darf heute bei einem seiner Kunden den Serveraum umziehen… Dafür möchte er nun die Systeme abschalten. Jetzt steht dort ein Solaris 11 System und der zum System gehörende Admin ist krank (zufällig am Feiertag des Serverraumumzuges…)! Jetzt steht mein Bekannter also vor der Konsole und will die Kiste im Grunde nur abschalten. Folgendes Gespräch ergab sich:
Bekannter: init 0 geht nicht, beim shutdown -h now soll -h eine unknown option sein. Ich bin genervt… Wie geht das aus? Ich: Solaris 11 im poduktiveinsatz? Dann habt ihr auch Support von Oracle; anrufen / chatte die helfen immer sofort. Bekannter: Laber nicht rum, ich bin hier für die Microsoft Maschinen. Keine Ahnung wo ich weh anrufen kann. Du kannst das doch, oder? Ich: Joar… Folgendes sollte dir helfen:
$ shutdown -y -i5 -g0
Bekanter: *Klacker Tipper* Ich: Root Konsole hattest du schon oder? Bekannter: *Klacker* japp *Klacker* Ich: shutdown ist shutdown, -y ist damit du nicht gefragt wirst -i5 ist um die Kiste nach dem Shutdown auch aus zu machen und -g0 ist das es unverzüglich gemacht wird. Bekannter: Warum ist das so kompliziert? Geht das nicht einfacher? Bei Linux ist das doch einfach shutdown -h now… Man… Ich will eine Maus! Ahh ich glaube er fährt runter! Ich: Du hättest mit man shutdown den korrekten Befehl erlesen können. Bekannter: Ach, das muss einfacher gehen! Ich: Ok dann nimmer das nächste mal den Befehl poweroff… Bekannter: Du Sack! Danke..
Ich finde es schon sinnvoll unterschiedliche Arten eines shutdown zu haben. Vor allem mit verschiedenen Arten der Signalisierung.
Eine gute Frage, oder? Nun ja, man bekommt diese tolle Windows Server Image oder Image Server Sicherung ja kostenlos von Microsoft dazu. Mit ihr lassen sich auch tatsächlich komplette Server sichern. Dieses sogar zuverlässig.
Ich muss aber sicher nicht erwähnen, dass ich im Grunde keine Ahnung von Microsoft Systemen und vor allem der Windows Server Sicherung habe, oder? Egal, mal weiter! Ich wollte ja die Frage beantworten….
Die Windows Server Sicherung kann nicht mit Bandlaufwerken oder ähnlichem umgehen. Natürlich kann man auf einen Netzwerk Share -eine Freigabe- sichern. Da die Sicherung in diesem Fall leider keine Volume Shadow Copy vom Ziel erstellen kann, würde die laufende Sicherung also die bestehende Überschreiben. Bricht die Sicherung als „unvollständig“ ab, hat man nichts mehr.
Volume Shadow Copy…. Weist man der Windows Server Sicherung ein spezielles Backup Volume zu, gibt es der Windows Sicherung die Möglichkeit solche Schattenkopien vom Ziel anzulegen. Man verliert also bei einer unvollständigen Sicherung nicht unbedingt die alten Sicherungen.. Damit sind wir also bei einer im Rechner verbauten Platte, einer externen USB Platte (bis hier eine schlechte Idee) oder auch bei einer ISCSI Platte. Ersteinmal ok, oder? Jain, warum erkläre ich später! Erst noch etwas zu den Schattenkopien. Windows selbst hat natürlich die Möglichkeit einzelne Schattenkopie von seinen Dateien anzulegen. Diese werden sogar noch von der Serversicherung gesichert. So könnte man also nach dem Zurückspielen einer Vollsicherung sogar noch zu einem etwas älteren Stand zurückspringen. Denn noch muss zuerst die Vollsicherung zurückgespielt werden und dann geht es auf einen älteren Stand. Das ist im Falle einer Rücksicherung sehr langwierig. Funktioniert denn noch sehr gut…
Vollsicherung… Die Windows Server Sicherung kann nur Vollsicherungen erstellen, also keine inkrementell oder differentielle Datensicherung. Das bedeutet man muss jeden Tag die kompletten Daten zum Sicherungsziel „pumpen“. Nutzt man nun als Ziel ein intelligentes Storage System wie ein NetApp oder ein ZFS basiertes System (Nexenta, OpenIndiana, Solaris, FreeNas)… Vielleicht noch zusammen mit ISCSI…. dann bringen einem sehr viele der feinen Zusatzfunktionen des Storage Servers kaum noch etwas. Mal angenommen man möchte sein Storage System mit einem anderen abgleichen, dann wird ebenfalls wieder alles kopiert, da sich ja leider immer alles ändert. Dumme Sache das 🙁
Möchte man also seine Sicherung nicht im Unternehmen liegen haben (Feuer / Flugzeug / Wasser / ..) würde so jeden Tag die vollständige Sicherung bewegt werden müssen. Denkt man nun an ein paar TB wird schnell klar, das man sich schon extreme Anbindungen an seinen Standort mieten muss, nur um die Sicherung überhaupt in einem gewissen Zeitfenster aus dem Haus zu bekommen.
Hier kommen dann wieder die etwas teureren Sicherungsprogramme anderer Hersteller ins Spiel .-)
Um es also auf den Punkt zu bringen… Die Windows Server Sicherung funktioniert und hält was sie verspricht, ohne die Möglichkeit einer differentielle Sicherung wird sie denn noch von mir in fast allen Fällen eine Abfuhr bekommen.
Oh ja, sobald es die Möglichkeit einer differentiellen Datensicherung gibt, bitte melden!
Veraltet: Dieser Beitrag bezieht sich auf IPv6 Neighbor Discovery unter Solaris/OpenIndiana. Das Konzept (NDP statt ARP) gilt weiterhin, die gezeigten Befehle sind aber Solaris-spezifisch. Unter Linux: ip -6 neigh show.
Damit IPv4 im Ethernet funktioniert braucht man das ARP (Address Resolution Protocol) als Unterbau. Denn sonst würden die IPv4 Pakete ja ihren Weg nicht zur richtigen Netzwerkkarte finden. ARP und IPv4 sind dabei völlig unabhängige Protokolle, sie arbeiten nur seit Jahrzenhten Hand in Hand. Das vergessen viele schnell.
Möchte man also nun herausfinden welche MAC Adresse das System (im gleichen Ethernet-Netzwerk) hat, mit welchem man sich gerade unterhält… Ja, dann bemüht man das ARP.
Unter Linux:
$ arp
Address HWtype HWaddress Flags Mask Iface
errorgrab.kernel-error. ether 00:ff:c9:05:01:c7 C enp2s0
wurstsuppe.kernel-error. ether 50:ff:5d:85:73:48 C enp2s0
Unter Openindiana/Solaris 11:
$ arp -a
Net to Media Table: IPv4
Device IP Address Mask Flags Phys Addr
------ -------------------- --------------- -------- ---------------
rge0 router.kernel-error 255.255.255.255 00:ff:42:72:2b:a6
rge0 192.168.1.31 255.255.255.255 00:ff:b0:ae:0b:eb
rge0 sebastian-solaris.kernel-error 255.255.255.255 SPLA 80:ff:73:4a:38:c7
rge0 all-routers.mcast.net 255.255.255.255 S 01:ff:5e:00:00:02
Bei IPv6 schaut es nun etwas anders aus. Man könnte sagen, hier wurde ARP direkt mit in IPv6 integriert. Es findet sich im Neighbor Discovery wieder. Möchte man hier seine „Nachbarn“ sehen klappt es so:
Unter Linux:
$ ip -6 neigh show
fe80::1 dev enp2s0 lladdr 50:ff:5d:85:73:48 router STALE
fe80::2ff:c9ff:fe05:1c7 dev enp2s0 lladdr 00:ff:c9:05:01:c7 router REACHABLE
Unter Openindiana/Solaris 11:
$ netstat -pf inet6
Net to Media Table: IPv6
If Physical Address Type State Destination/Mask
----- ----------------- ------- ------------ ---------------------------
rge0 33:33:ff:00:00:01 other REACHABLE ff02::1:ff00:1
rge0 00:ff:42:72:2b:a6 dynamic REACHABLE router.kernel-error
rge0 33:33:00:00:00:01 other REACHABLE ff02::1
rge0 33:33:00:01:00:02 other REACHABLE ff02::1:2
rge0 33:33:ff:00:00:06 other REACHABLE ff02::1:ff00:6
rge0 33:33:ff:10:98:82 other REACHABLE ff02::1:ff10:9882
rge0 33:33:ff:ad:7a:dd other REACHABLE ff02::1:ffad:7add
rge0 33:33:ff:00:00:11 other REACHABLE ff02::1:ff00:11
rge0 33:33:00:00:00:16 other REACHABLE ff02::16
rge0 46:ff:91:30:98:3d dynamic REACHABLE 2001:7d8:8001:0:ffff:bdb9:6810:9882
rge0 80:ff:73:4a:38:c7 local REACHABLE sebastian-solaris.kernel-error
rge0 80:ff:73:4a:38:c7 local REACHABLE fe80::ffff:73ff:fe4a:38c7
rge0 00:ff:42:72:2b:a6 dynamic REACHABLE fe80::fff:42ff:fe72:2ba6
rge0 33:33:ff:4a:38:c7 other REACHABLE ff02::1:ff4a:38c7
Früher war es mit dem ARP „einfacher“. Zumindest musste man sich nur einen Befehl merken und dann halt die für das jeweilige Betriebsystem nötigen Schalter herausfinden. Mit IPv6 ist es nun mit in die jeweiligen IP-Tools gewandert. Ich halte es für sauberer auch wenn man sich nun nicht mehr mit den Befehlt „arp“ behelfen kann.
BSD und ihre Ableger nutzen „ndp„. Bei Linux verschwindet alles in den iproute2-Tools mit dem Befehl: „ip“ (ifconfig, route, usw. usw…. alles im Tool ip) Microsoft wirft alles in „netsh„. Unixbasierendes hält sich ans gute alte „netstat„.
Veraltet: Solaris und OpenIndiana werden kaum noch eingesetzt. Unter Linux: ip link show, unter FreeBSD: ifconfig.
Es ändert sich im Laufe der Zeit ja mal immer wieder etwas. So auch der Weg mit Netzwerkkarten umzugehen unter Solaris. Wer also gerade versucht die MAC Adresse seiner lokalen Netzwerkkarte / NIC herauszufinden, dem wird folgender Command helfen:
Veraltet: OpenIndiana und Solaris werden kaum noch als Desktop eingesetzt. Unter Linux gibt es zahlreiche RSS-Reader (Thunderbird, Liferea, Newsboat).
Ich habe gerade meinen lieblings RSS-Feed Reader Liferea auf der Solariskiste kompiliert. Ich finde es gibt einfach keinen besseren! Spannenderweise konnte ich auch keinen „fertigen“ finden. Na bis auf Thunderbird…. Aber Thunderbird? So gefällt es mir besser *hüpf*.
Mein Creative ZEN Mozaic lässt sich nur per MTP mit Daten befüllen. Unter Windows kein Problem, unter Linux bringen die meisten Distributionen FUSE-Treiber mit. Solaris und OpenIndiana bringen von Haus aus nichts mit. Die Lösung: gMTP.
gMTP installieren
Das Paket gibt es direkt auf der gMTP-Downloadseite. Auspacken und installieren:
Veraltet: OpenIndiana und Solaris werden kaum noch als Desktop eingesetzt. USB-Kameras und Scanner funktionieren unter Linux mit SANE/XSane problemlos.
Man man man… Jetzt habe ich mich doch tatsächlich 1 Stunde lang in etwas sehr sinnlosem verrannt. *kopfschüttel*
Da will ich mal eben ein Bild mittels xsane von einem USB-Scanner einlesen. Da findet xsane auf dem Solaris 11 System den Scanner nicht. Genau so verhält es sich mit einer USB Digitalkamera….. Ich habe ja überall nachgeschaut, nur wohl ohne Verstand!
Die Lösung war natürlich recht simpel. Einfach mal das Paket: libusbugen installieren. *Narf*
Veraltet: OpenIndiana und Solaris werden kaum noch eingesetzt. Lokale Paketquellen lassen sich unter FreeBSD mit poudriere und unter Linux mit apt-mirror oder createrepo einrichten.
Citrix XenServer und local ISO Repository
Man kann zwar über das „klickbunit“ Interface XenCenter für seinen einzelnen XenServer neue ISO libarays anlegen, diese können dann leider nur auf einem Windows File Shareing (CIFDS) oder NFS ISO Share liegen. Klar, man könnte nun eine VM auf dem XenServer installieren und dort einen solchen Share anlegen. oder eine Kiste neben den Server stellen, welcher die ISOs vorhält. In größeren Umgebungen kein Problem… Im „Kleinen“ schon mal nervig.
Ich habe für mich eine einfache Lösung gefunden. Ich schraube einfach eine weitere kleine Platte in den Server, lege dort die für mich wichtigen ISOs ab und baue mir eine lokale ISO library. So habe ich die nötigen ISOs immer auf der Kiste, selbst wenn alles andere aus sein sollte.
Also lokalen Speicherplatz für die ISOs habe ich an eine 160GB SATA Platte von WD gedacht. Diese wird nicht gespiegelt oder ähnliches, da die ISO Files für mich erstmal keinen Wert haben. Brennt die Platte wirklich ab, kopiere ich die ISO Files halt auf eine neue.
Nach dem Einbau ist die WD Platte in meinem System als /dev/sde zu finden. Als erstes werde ich nun auf ihr eine primäre Patrion vom Type 83 (Linux) anlegen:
$ fdisk /dev/sde
The number of cylinders for this disk is set to 19457.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help):
Die Hilfe zu fdisk kann sicher jeder selbst lesen… Ich schaue als erstes über p nach ob ich wirklich auf der richtigen Platte bin, denn p listet mir die Partitionen auf der Platte auf. Dann erstell ich mit n ==> p ==> 1 eine neue primäre Partition und schreibe am Ende alles mit w auf die Platte. q beendet als letztes fdisk.
Nun muss ich die neue Partition noch formatieren. Als Dateisystem finde ich ext3 ganz passend:
$ mkfs.ext3 -L ISO-Store /dev/sde1
mke2fs 1.39 (29-May-2006)
Filesystem label=ISO-Store
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
19546112 inodes, 39072080 blocks
1953604 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
1193 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
Nun erstelle ich einen Mountpoint unter welchem ich die Platte einbinden möchte:
$ mkdir /ISOs
Schon kann ich die Platte mounten:
$ mount /dev/sde1 /ISOs
Noch schnell eine kontrolle ob alles dort ist wo es hin soll:
$ mount|grep ISO
/dev/sde1 on /ISOs type ext3 (rw)
Mit einem Eintrag in die fstab (ich muss immer aufpassen nicht vfstab zu schreiben) sorge ich nun dafür dass die neue Platte bei jedem Start des Servers wieder eingebunden wird.
$ vi /etc/fstab
und dann folgende Zeile einfügen:
/dev/sde1 /ISOs ext3 defaults 0 0
Jetzt kommt das wirklich spannende. XEN die neue Platte als localen ISO Speicher schmackhaft zu machen:
Schaut doch schon gut aus, oder? Dann lassen wir uns mal die neue ISO library anzeigen:
$ xe sr-list uuid=00da02b3-8b46-bade-6d00-e109e262ede9
uuid ( RO) : 00da02b3-8b46-bade-6d00-e109e262ede9
name-label ( RW): ISOs
name-description ( RW):
host ( RO): xenserver01-kernel-error.local
type ( RO): iso
content-type ( RO): iso
Warum auch immer, wird die Platte bei mir an diesem Punkt immer ausgehangen. Ich könnte es jetzt einfach wieder mounten und nutzen, würde denn noch vorschlagen hier den Server selbst einmal zu rebooten. So kann man gleich sehen ob die Platte wieder richtig eingebunden wird. Nach dem Reboot schaue ich also nach ob die Platte wieder richtig eingehangen wurde:
Im XenCenter sollte man nun schon das neue SR mit dem Namen „ISOs“ sehen. Klicke man nun am Reiter Storage auf Rescan wird das hochgeladene ISO gefunden und kann verwendet werden. Ich muss nun also nur noch alle meine ISOs dort hochschieben und fertig ist!