Vorhandenes System softwareseitig umziehen

Errorsmith

Kompiliertier
Hi

Ich plane Die Platten in meinem Heimserver komplett auszutauschen, das OS bei der Gelegenheit upzudaten (von 8.0 auf 9 wenns denn dann draußen ist) und das vorhandene UFS durch ZFS zu ersetzen.

Auf dem Rechner laufen diverse Dienste, u.a. ldap, samba, istgt, apache, postifx und so weiter, teilweise auch in jails. (Falls wichtig, reiche ich eine komplette Liste nach)
Ich hab allerdings wenig Lust das alles neu zu installieren und vor allem: konfigurieren.
Kann ich das - nach einem ordentlichen Backup - irgendwie "umziehen"? Oder muß ich wirklich alles komplett neu machen?

Falls es mittlerweile problemlos möglich ist, UFS Basissystem und einen ZFS Datenbereich auf einem System zu betreiben, spare ich mir den Hardwareseitigen Umbau, die Updateproblematik bleibt aber. Bisher hatte sich das so ergeben, das ich bei größeren Updates ohnehin neu installieren mußte, ein Update über eine komplette Versionsnummer mache ich damit zum ersten mal.

Grüße,
Errorsmith
 
Hi!

Also ein Update von 8 auf 9 sollte kein großes Problem sein. Solltest du ein Standardsystem nutzen kannst du das Update per frebsd-update durchführen. Eine Anleitung wird dem Announcement beiliegen. WIchtig ist nur, dass du dich genau daran hältst.
Im Laufe des Updates wirst du alle Ports neu installieren müssen, damit das mit den aktuellen libs funktioniert. Deine Konfig bleibt aber erhalten. BTW: Du kannst auch jetzt schon auf 9.0 (RC3) updaten. Der Sprung auf das Release wird recht klein.

Ich habe mit ZFS keine Erfahrung da ich es bisher für meinen privaten Gebrauch für unnötig empfand. Du kannst jedoch unter UFS2 wunderbare Backups mit dump anlegen. Ich würde mal vermuten, dass du die wieder auf ein ZFS entpacken kannst... Aber wissen tu ich es nicht (da wie gesagt keine Erfahrung mit ZFS).

AFAIK ist der gleichzeitige Einsatz von UFS und ZFS noch immer... naja zumindest nicht empfohlen.

Hoffe ich konnte dir helfen. Grüße
 
Hi!

Was meinst du denn mit "Standardsystem"? Ich hab damals mit dem Miniboot-Iso ein Basissystem installiert, dieses aus den Quellen auf einen aktuellen Stand gebracht, einen Custom-Kernel erzeugt und danach die Ports die ich benötigt habe jeweils aus den Quellen installiert. Ist das noch ein Standardsystem?

Zu ZFS:
Bisher das sinnvollste aus meiner Sicht das mir untergekommen ist:
Ich möchte mittelfristig alle meine Rechner (so zwischen 5 und 8 Stück, Anzahl wechselt) auf diskless umstellen. Mit Gigabit Verkabelung sollte das auch von der Geschwindikeit her passen. Mit virtualbox hab ich das auch schon durchprobiert, das läuft soweit alles ganz gut eigentlich. FreeBSD, Linux und sogar Windows laufen perfekt über das Netzwerk, entweder mit NFS oder iSCSI.

Aber: Ich brauche Festplattenplatz dazu. Und den will ich
1. Flexibel erweitern können
2. Eine gewisse Ausfallsicherheit -> RAID5 o.ä.
3. Annehmbare Performance (ausgehend davon das maximal 2-3 Rechner gleichzeitig an sind)

Soweit ich sagen kann, bietet mir ZFS das alles, mit ufs steh ich da auf dem Schlauch und selbst Hardwareraidcontroller können das nicht alles - abgesehen davon das die Teile recht teuer sind und ich dann an spezifische Hardware gebunden bin.

Frage an die ZFS Leute hier: Wenn mir bei ZFS ne Platte ausfällt, kann die vom System ebgemeldet werden oder schmiert mir die Kiste dennoch ab? Hardwarecontroller können ja ne Platte vom System "abmelden" und ohne diese Platte weiterlaufen z.B. bei einem RAID0 Verbund (mirror). Wie verhält sich ZFS dann wenn da eine Spiegelplatte aussteigt? Bisher ist es so, das wenn mir eine Datenplatte aussteigt (nur Daten drauf, keine OS Bestandteil) hängt das System trotzdem. Fängt ZFS sowas ab?

Ich denke ich werde mal ein Image vom Server anlegen (ohne Nutzdaten) und damit auf VirtualBox herumprobieren.

Danke erstmal für Deine Antwort :)

Grüße,
Errorsmith

p.s.: Nutzdaten liegen z.Zt bei ca 1.5TB, hab noch keine Ahnung wie ich das komplet(!) sichern soll, außer noch mehr Hardware draufzuschmeißen...
Zur Zeit mache ich nur ein Backup vom wichtigsten (ca 100GB) aber das reicht ja dann nicht.
 
Hi!

Was meinst du denn mit "Standardsystem"? Ich hab damals mit dem Miniboot-Iso ein Basissystem installiert, dieses aus den Quellen auf einen aktuellen Stand gebracht, einen Custom-Kernel erzeugt und danach die Ports die ich benötigt habe jeweils aus den Quellen installiert. Ist das noch ein Standardsystem?

Und da du ein Custom-Kernel hast ist es schon kein Standardsystem mehr. ;)
Du kannst dann wohl nicht einfach ein Binärupdate machen sondern wirst dir wieder dein System aus den Quellen bauen müssen. Das sollte auch kein Problem sein. Im Handbook solltest du Hinweise finden.

BTW: Du sprachst von Jails.. Willst du die auch auf 9 heben musst du natürlich auch diese jeweils updaten
 
Hi

Binärupdate wollte ich eh nicht, ist ja alles an mein System angepaßt, auch die Welt und der ganze andere Krempel. Insofern paßt das schon. Dauert halt nur wieder ne kleine Ewigkeit...

Zu den jails:

Ich bastel viel rum und setze unter anderem deshalb für die meisten Dienste eigene jails auf, konkret sind das im Moment:
- clean, eine leere Basisjail mit ein paar standardtools damit ich die nicht immer neu installieren muß
- 2 jails mit Apache (einmal http und einmal https, letztere ist auch extern erreichbar)
- einmal postfix/dovecot
- einmal amavis
- einmal mySQL
- einmal bind
- einmal asterisk
- einmal Squid/Squidguard
- noch ein paar test und basteljails die inaktiv sind und nur bei Bedarf angemacht werden (z.B. eine mit einem zweiten bind, in der ich mit replikation herumgespielt habe)

Ich verwende keine jail Verwaltungstools außer einigen selbstgeschriebenen Scripts und dem was im Basissystem ist. Soweit ich weiß muß ich die auf jeden Fall updaten, aber da sollte mir das Handbuch weiterhelfen, da seh ich weniger ein Problem. Ich frag mich halt nur inwiefern man das System ohne Verlust der ganzen Konfigurationen auf die neuen Platten umziehen kann wenn auch das FS wechselt und eben gleichzeitig ein Update um eine ganze Versionsnummer macht.

Ach so: Bitte keine Diskussionen über den Sinn, mir ist klar das ein solches System völliger Overkill für ein Heimnetzwerk ist. Aber mir macht das Spaß und ich bleibe im Thema. ;)

Grüße,
Errorsmith
 
So viele Fragen am Morgen... :)

Also, zum Umziehen: Das geht eigentlich recht einfach mit dump(8). Du legst einen Dump auf deinem UFS-Dateisystem an und übergibst ihn an restore(8). restore(8) arbeitet unabhängig des zugrundeliegenden Dateisystems, kann ihn also auch auf ZFS wiederherstellen. Das sieht dann in etwa so aus:
Code:
dump -0 -af - /dev/device | restore -rf -
Wenn man misc/buffer aus den Port zwischen die beiden Programme hängt, wird der Prozess ein wenig vom IO der Festplatten entkoppelt und ca. 20% schneller. Bei großen Datenmengen kann es schon was ausmachen.

Zu UFS und ZFS: Das Problem ist, dass UFS und ZFS jeweils eigene Caches nutzen. Hast du beide parallel auf einem System, werden Daten durchaus mal doppelt und dreifach gecachet und du verschwendest RAM ohne Ende. Die Performance könnte auch besser sein. Aber anders als bisher sollte ab spätestens 9.0 (eher schon 8-STABLE) der Kernel nicht mehr an Speichermangel (panic: kmem_map too small) abstürzen. Von daher ist es vorübergehend oder dauerhaft in Maßen durchaus möglich UFS und ZFS nebeneinander zu betreiben.

Zu ZFS:
- Sofern der Controller beim Versagen einer Platte ein "Hotplug"-Signal schickt, wird der Kernel die Platte rauswerfen und ZFS sie als defekt erkennen und entsprechend markieren. Unterstützen tun das zumindest neuere Intel- und AMD-Controller. ZFS kann übrigens auch Hot-Spares, also ungenutzte Festplatten die beim Versagen einer Platte automatisch deren Funktion übernehmen.
- Soll das ZFS per NFS oder iSCSI bereit gestellt werden, ist es sehr zu empfehlen ein separates Cache-Device für die ZIL zu nehmen, am besten eine kleine SSD. Ansonsten riskierst du, dass die von Netzwekdateisystemen losgetretenen, großen Mengen Sync-Requests den Pool thrashen und der Durchsatz in den Keller geht.
- Gerade bei RAID-Z Pools kann es sich lohnen eine kleine SSD als Cache-Device einzusetzen. Es erhöht die Performance zum Teil drastisch.
- ZFS hat mit "zfs send" und "zfs receive" eine interne, auf Wunsch inkrementelle Backuplösung.
 
So viele Fragen am Morgen... :)
Und Klasse Antworten :)
Naja, ich wills halt gut vorbereiten. Der eigentliche Umzug wird erst im Frühjahr stattfinden, aber das Risiko da was kaputt zu machen ist mir zu hoch, daher setze ich mich jetzt schon damit auseinander und spiele einige Szenarios in der Emulation durch.

Also, zum Umziehen: Das geht eigentlich recht einfach mit dump(8). Du legst einen Dump auf deinem UFS-Dateisystem an und übergibst ihn an restore(8). restore(8) arbeitet unabhängig des zugrundeliegenden Dateisystems, kann ihn also auch auf ZFS wiederherstellen. Das sieht dann in etwa so aus:
Code:
dump -0 -af - /dev/device | restore -rf -
Wenn man misc/buffer aus den Port zwischen die beiden Programme hängt, wird der Prozess ein wenig vom IO der Festplatten entkoppelt und ca. 20% schneller. Bei großen Datenmengen kann es schon was ausmachen.

Das klingt einfach. :)

Zu UFS und ZFS: Das Problem ist, dass UFS und ZFS jeweils eigene Caches nutzen. Hast du beide parallel auf einem System, werden Daten durchaus mal doppelt und dreifach gecachet und du verschwendest RAM ohne Ende. Die Performance könnte auch besser sein. Aber anders als bisher sollte ab spätestens 9.0 (eher schon 8-STABLE) der Kernel nicht mehr an Speichermangel (panic: kmem_map too small) abstürzen. Von daher ist es vorübergehend oder dauerhaft in Maßen durchaus möglich UFS und ZFS nebeneinander zu betreiben.
Naja, was ich mir wünschen würde:
Das Basissystem mit meinen installierten Diensten auf einer (relativ) kleinen Festplatte um die 250GB. Dazu dann eine Reihe von Festplatten die als zpool zusammengefaßt werden und sowohl die jails, als auch die Nutzdaten enthalten. Da Platten zur Zeit in Gold aufgewogen werden, kann ich aber nicht einfach einen Stapel Platten ordern sondern werde das schrittweise implementieren, je nachdem was mein "IT Budget" halt gerade hergibt. Daher auch der Wunsch nach Flexibilität und - um die Neuinstallation zu vermeiden - der Wunsch nach Parallelbetrieb von ufs und zfs. Uptime vom Server liegt im Moment bei etwa 6 - 12 Monaten, zuletzt hab ich ihn abschalten müssen weil die Ladeinheit von meiner USV durchgebrannt ist, und ich diese dann getauscht hab. Sonst läuft er eigentlich 24/7. Ob das noch als "in Maßen" durchgeht ist ne andere Frage. RAM hatte ich 8GB im Blick. Gab es da nicht ne tunable um den Speicherhunger von ZFS etwas einzuschränken? Oder prügeln die sich trotzdem noch?

Zu ZFS:
- Sofern der Controller beim Versagen einer Platte ein "Hotplug"-Signal schickt, wird der Kernel die Platte rauswerfen und ZFS sie als defekt erkennen und entsprechend markieren. Unterstützen tun das zumindest neuere Intel- und AMD-Controller. ZFS kann übrigens auch Hot-Spares, also ungenutzte Festplatten die beim Versagen einer Platte automatisch deren Funktion übernehmen.
Der Controller für den zpool wäre noch anzuschaffen. Das Board hat zwar 4 SATA Ports aber die sind erstens SATA1, zweitens ist das Board schon etwas älter und drittens zu wenige. Aber gut zu wissen worauf ich achten muß :)

- Soll das ZFS per NFS oder iSCSI bereit gestellt werden, ist es sehr zu empfehlen ein separates Cache-Device für die ZIL zu nehmen, am besten eine kleine SSD. Ansonsten riskierst du, dass die von Netzwekdateisystemen losgetretenen, großen Mengen Sync-Requests den Pool thrashen und der Durchsatz in den Keller geht.
- Gerade bei RAID-Z Pools kann es sich lohnen eine kleine SSD als Cache-Device einzusetzen. Es erhöht die Performance zum Teil drastisch.
Was heißt denn in diesem Fall "klein"? Die Dinger gibts ja schon ab 4GB (SATA300, intern ca 20 EUR) Meinst du konkret 2 SSDs? Also eine für ZIL und eine als Cache? Macht es dann Sinn die an einen anderen Controller zu hängen, also z.B. am externen PCIe Controller nur echte Festplatten und am Onboard die Systemplatte und die SSD(s)? Und zu guter Letzt: Ich schrieb ja oben schon schrittweise: Kann ich das später einbauen oder müssen die von Anfang an da sein?
Das ZFS wird via CIFS und NFS bereitgestellt werden, enthält außerdem eine Reihe von Images die als iSCSI targets für die Windowsrechner zur Verfügung gestellt werden.

- ZFS hat mit "zfs send" und "zfs receive" eine interne, auf Wunsch inkrementelle Backuplösung.

Gut zu wissen.
Danke für die ausführlichen Antworten
icon14.gif


Grüße,
Errorsmith
 
Errorsmith said:
Ob das noch als "in Maßen" durchgeht ist ne andere Frage. RAM hatte ich 8GB im Blick. Gab es da nicht ne tunable um den Speicherhunger von ZFS etwas einzuschränken? Oder prügeln die sich trotzdem noch?
Die Frage ist nicht so einfach zu beantworten. 8GB sind eigentlich genug, außer man speichert wirklich extrem viele Daten. Also mehr als 20TB. Ob sie sich prüglen, hängt aber einzig vom Nutzerverhalten ab und nur indirekt von der Datenmenge. Je mehr gelesen und geschrieben wird, umso mehr wird gecached. Daher bin ich ein wenig unsicher, ob ich wirklich sagen soll, dass es geht... Im Zweifel würde ich einfach alles auf ZFS werfen. Einschränken kann man die Größe des ARC-Caches. Eigentlich muss man es nicht mehr, da ZFS von allein Speicher freigibt, wenn er anderweitig benötigt wird. Leider ist der Mechanismus etwas träge, weshalb ich dennoch eine Begrenzung auf Zweidrittel des RAMs empfehlen würde. Davon würde dann natürlich auch UFS profitieren.

Errorsmith said:
Der Controller für den zpool wäre noch anzuschaffen.
Schaue dir mal siis(4) an. Die Controller sind vergleichsweise günstig, bieten kein Hardware-RAID, aber sind dafür hervorragend unterstützt und für ZFS eigentlich optimal.

Errorsmith said:
Was heißt denn in diesem Fall "klein"? Die Dinger gibts ja schon ab 4GB (SATA300, intern ca 20 EUR) Meinst du konkret 2 SSDs?
Auch hier wieder ein "kommt darauf an, wie viele daten durchlaufen", aber in deinem Fall eines eher kleinen Heimnetzwerks eher nicht. Da tut es auch eine SSD mit zwei Partitionen, wobei ich stark empfehlen würde, die ZIL zu spiegeln. Denn fällt das Log-Device aus, wird der Pool zwar nicht inkonsistent, aber alle noch nicht ausgeschriebenen Daten sind futsch. Ähnlich wie das Softupdates-Lag von UFS. Es können um Extremfall durchaus einige Minuten sein, zu viel für Anwendungen wie Datenbanken. Für die Größe des Log-Device stand mal was in der SUN-Doku. Könnte im "ZFS Evil Tuning Guide" gewesen sein. Das Ergebnis war, dass 1GB meist locker ausreichen.

Der Cache kann verloren kann, die Daten werden dort nun Zwecks schnellerem Zugriff zwschengespeichert. Wie viel es bringt, hängt vom Nutzungsmuster ab, entsprechend auch der Platzbedarf. Da aber eigentlich nur auf einer kleinen Menge Daten aktiv gearbeitet wird, sind 2GB meist genug.

Zu dem nachträglich einbauen: Man kann sowohl Cache- als auch Log-Devices nachträglich hinzufügen. Log-Devices kann man aber erst ab ZFSv19 (d.h. im kommenden 8.3 und 9.0, aber nicht 8.2 und älter) wieder entfernen! Festplatten kannst du in RAID-Z beliebig einfügen, aber (derzeit) nicht wieder entfernen. Aber natürlich gegen andere Platten ersetzen.
 
Danke für die weiteren Erläuterungen.

20TB sind nicht angedacht. Ich denke eher so an 5-6 TB, dabei eben eine kleine Systemplatte und 5 oder 6 Platten für den Pool.

Der siis(4) Treiber unterstützt soweit ich das auf den ersten Blick gesehen habe Karten mit maximal 4 Ports. Da ich nur einen PCIe Platz auf dem Board habe - eigentlich soll da na Grafikkarte rein - werd ich erstmal sehen ob es da was mit 8 Ports gibt um auf der sicheren Seite zu sein.

Als SSD werd ich mir vormerken 2x4GB an den Onboard Controller zu hängen. Die dann partitionieren und wie empfohlen die ZIL zu spiegeln. Die Teile kosten ja wirklich nicht viel.

Zum Umzug:
Die beste Reihenfolge ist wohl: Update auf 9, danach Umzug auf die neuen Platten. So greife ich das aktuelle zfs mit ab.

Festplatten würde ich in der Regel nur hinzufügen oder bei defekt ersetzen wollen. Habs irgendwie noch nie erlebt das Festplattenplatz "zu viel" war. Der Normalzustand einer Festplatte ist irgendwie immer "fast voll" :D Insofern macht es erstmal nichts das man die nicht rausnehmen kann aus dem Pool, solange das Ersetzen (durch größere?) geht. Ich werd aber dennoch beobachten ob das Entfernen irgendwann hinzukommt.

Ich hab mir mal eine VM angelegt und werd morgen bzw nächste Woche den Server komplett virtualisieren und damit zunächst das Update, danach den Umzug auf zfs ausprobieren ohne das laufende System kaputt zu machen. Im Idealfall könnte ich das in der VM aktualisierte System sogar in den echten Server zurückspielen, oder?

Grüße,
Errorsmith
 
Back
Top