[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Linux, network root filesystems
[Thread Prev] | [Thread Next]
- Subject: Linux, network root filesystems
- From: Markus Hochholdinger <Markus@xxxxxxxxxxxxxxxxx>
- Date: Fri, 23 Dec 2005 17:50:02 +0100
- To: uugrn@xxxxxxxxxxxxxxx
Hallo,
ich bin gerade dabei zu evaluieren was die "beste" Methode ist bei einem
Linux-System das root Dateisystem im Netzwerk zu lagern. Und am besten noch
redundant. Hintergrund ist auch die Verwendung in Verbindung mit
Virtualisierung. Dabei spielt auch der Punkt Live-Migration (siehe Xen) eine
Rolle.
Prinzipiell verfolge ich den Ansatz Festplatten von der CPU zu trennen. Dabei
habe ich mindestens zwei Festplatten-Server (Redundanz). Und ein oder mehrere
Hardware, wo virtuelle Maschinen darauf laufen. Als Skizze:
----------------- -----------------
|Server1 | <-sync-> | Server2 |
| Festplatte(n) | | Festplatte(n) |
----------------- -----------------
| |
----------------------------------------- Netzwerk ¹
| |
----------------------- -----------------------
|Hardware1 | |Hardware1 |
| Virtueller Server1 | | Virtueller Server4 |
| Virtueller Server2 | | Virtueller Server5 |
| Virtueller Server3 | | Virtueller Server6 |
----------------------- -----------------------
Optimal waere:
Die virtuellen Server haben ihr root-Dateisystem uebers Netzwerk auf Server1
und Server2 (redundant). Das root-Dateisystem ist unabhaengig von Hardware1
oder Hardware2. Dadurch haette man bei einem Ausfall von Server1 oder Server2
kein Problem und koennte gleichzeitig eine Live-Migration von Hardware1 auf
Hardware2 machen.
Wenn eine Hardware "abstuerzt" sind natuerlich auch alle virtuellen Server
darauf beendet, koennten aber sehr einfach und "schnell" (automatisch) auf
Hardware2 gestartet werden.
Ansaetze:
1. nfs
Als erstes trifft man natuerlich auf nfs wenn man ein root-Dateisystem uebers
Netzwerk haben will.
* Nachteil(e)
- Keine echte Redundanz. Wenn Server1 ausfaellt bleibt der virtuelle
Server stehen bis Server1 wieder per nfs erreichbar ist.
- nfs hat (anscheinend) Probleme bei einer hohen Last.
- Performance ist ueber nfs nicht so gut.
- Nicht jedes Dateisystem Feature wird von nfs unterstuetzt.
* Vorteil(e)
- Live-Migration moeglich.
- Ein virtueller Server kann mit root-Dateisystem auf Server2 schnell
gestartet werden, wenn Server1 ausfaellt.
- nfs kann so ziemlich jeder Linux-Lernel von Haus aus.
- Keine Festlegung des verfuegbaren Platzes notwendig (Partitionierung).
2. nbd bzw. gnbd
Als naechstes trifft man haeufig auf die network block devices oder global
network block devices. Dabei habe ich keine Moeglichkeit gefunden ein nbd
schon beim Booten einzubinden (vielleicht kann mich hier jemand eines
besseren belehren?). Deswegen:
* Nachteil(e)
- Ein block device aus nbd(s) muss auf Hardware1 oder Hardware2 erst
konfiguriert werden und ist damit an die Hardware gebunden.
- Deswegen keine Live-Migration moeglich.
- Die Groesse eines nbd muss entweder ueber Partitonieren festgelegt werden
oder als Datei (langsamer) freigegeben werden. Ja, man kann dies auch
mit dem LVM abdecken. Hat dann aber immer ein gefummele wenn man
Festplattenplatz neu zuordnen will.
* Vorteil(e)
- Jeweils ein nbd von Server1 und Server2 kann zu einem RAID1
zusammengebaut werden. Ausfallsicherheit wenn Server1 oder Server2
abraucht.
- Performance ist gut.
- nbd wird von so gut wie jedem Linux-Kernel unterstuetzt.
- Das Dateisystem kann vom virtuellen Server selbst verwaltet (erstellt)
werden und damit sind alle Dateisystem Features moeglich die man
benoetigt.
3. iSCSI
Habe ich noch nicht genauer angeschaut. Sieht aber vielversprechend aus. Hat
hier jemand Erfahrung damit?
* Nachteil(e)
- iSCSI-Server mit Linux moeglich!? Hab dazu nichts gefunden! Sprich man
wuerde eine (teure) Storage-Loesung benoetigen!?
- Benoetigt evtl. Kernal-Anpassungen und vor allem eine initrd die man
entsprechend anpassen muss. Aeltere Linux-Systeme laufen evtl. damit
nicht.
* Vorteil(e)
- Server1 und Server2 koennen parallel jeweils ein iSCSI device bereit
stellen welche dann als RAID1 genutzt werden.
- Live-Migration moeglich.
- Das Dateisystem kann vom virtuellen Server selbst verwaltet (erstellt)
werden und damit sind alle Dateisystem Features moeglich die man
benoetigt.
4. gfs (global filesystem), impliziert eine Form der Nutzung von gnbd
Das hier habe ich noch nicht ganz verstanden. Evtl. kann mir auch hier jemand
weiter helfen?
* Nachteil(e)
- Benoetigt Kernel-Modifikationen. Aeltere Linux-Systeme laufen evtl. damit
nicht.
- Alle Systeme nutzen "dasselbe" gfs. Schweinereien mit symbolischen Links
fuer die einzelnen Server sind moeglich.
- Kompliziert (!?) aufzusetzen.
* Vorteil(e)
- root Dateisystem auf gfs moeglich.
- Live-Migration moeglich!?
- Ausfallsicherheit mit Multipath zu Server1 und Server2!?
Mehr wirklich nutzbare Moeglichkeiten habe ich nicht gefunden. Kennt ihr noch
welche?
Persoenlich finde ich den nfs-Ansatz am einfachsten umzusetzen. Gibt es
Moeglichkeiten nfs auf Ausfallsicherheit zu clustern, sprich dass auch offene
nfs-Dateien vom Fallback-Server uebernommen werden koennen? Bei nfs ist es auch
sehr unproblematisch aeltere Linux-Installationen zu uebernehmen. Allerdings
hat nfs doch hier und da Probleme. Anscheinend Probleme bei hoher Last
(konnte ich selbst aber noch nicht nachvollziehen) und Probleme mit dem file
locking (das habe ich jetzt schoen oefters gesehen). Ausserdem hat man mit nfs
nicht alle "Dateisystem-Features" wie EA und ACL.
Auch sehr gut finde ich den nbd bzw. gnbd Ansatz. Den wuerde ich sehr gerne
umsetzen wenn ich ein Moeglichkeit finde das nbd innerhalb der virtuellen
Server aufzusetzen und nicht schon auf dem Host-system (Hardware). Hm, evtl.
kommt man hier mit einer angepassten initrd weiter? Aber dann wird es wieder
schwierig aeltere Linux-Installationen zu uebernehmen.
Ich glaube das ganze wird ein Abwaegen was man wirklich braucht und was nur
"nice to have" waere.
Informationen oder Erfahrungen von euch wuerden mich brennend interessieren.
PS: Ich habe nun als Virtualisierung UML (user mode linux) schon ca. ein
halbes Jahr erfolgreich im Einsatz (allerdings schlechte I/O Performance) und
beginne nun mit Xen 3.0 zu experimentieren. Ausserdem steht evtl. ein groeÃ?eres
Projekt mit VMWare GSX Server an. Damit werde ich hoffentlich ein paar gute
Erfahrungen (und Vergleiche) mit all diesen Virtualisierungs-Loesungen
bekommen.
¹ Das Netzwerk sollte natuerlich physikalisch getrennt sein, zur einfacheren
Darstellung hier aber global als "Netzwerk" definiert. Protokoll sollte IP
sein.
--
Gruss
\|/
eMHa (o o)
------------------------------------------------------oOO--U--OOo--
Markus Hochholdinger
e-mail mailto:Markus@xxxxxxxxxxxxxxxxx .oooO
www http://www.hochholdinger.net ( ) Oooo.
------------------------------------------------------\ (----( )-
\_) ) /
(_/