• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Redundante, flexible Partitionierung für Xen Host

norritt

Member
Hallo zusammen,

ich bin gerade dabei einen opensuse 12.2 Server als Host für Virtualisierung via Xen einzurichten. Hirzu wird verwendet:

- Software RAID 1 zur redundanten Datenhaltung ohne von Controllerhardware abhängig zu sein
- LVM um bei Bedarf den Plattenplatz dynamisch erweitern zu können, sollte er mal knapp werden.

Ich habe mal die IMO sinvollste Partitionierung vorbereitet (siehe Screenshot) und würde den Vorschlag mal gern zur Diskussion stellen, insbesondere unter dem Aspekt der dynamischen Erweiterbarkeit.

Zur Erläuterung:
- sda, sdb sind jeweils eine 3TB grosse SATA Platte
- md0 -> 1 GB RAID 1 Bootpartition ohne LVM (lvm auf boot geht nicht laut yast, ist auch nicht wirklich nötig denke ich )
- md1 -> 20GB Systempartition für Virtualisierungshostsystem
- md2 -> ~ 2,9TB Partition für Daten/Virtual Harddsiks
- 8GB Swap ist mit jeweils 4 GB gesplittet auf sda un sdb (aus Geschwindigkeitsgründen)


Ich vermute die Kombination von Softwareraid und LVM ist ein wenig exotisch. Mir fällt zwar theoretisch kein Grund ein, wieso es bei der Konfiguration z.B. nicht möglich sein sollte ein zusätzliches RAID 1 aus zwei neuen physikalischen Festplatten dem System hinzuzufügen und damit das logische Volume vol_data0 zu erweitern. Mangels Praxiserfahrung mit einem solchen Setup stelle ich mir aber die Frage wie das System auf die erweiterung des Volumes das sich über 4 physikalische Platten bzw. 2 Software-RAID devices erstreckt reagiert. Kann ich das volume einfach so "On-The-Fly" erweitern, muss ich voher die Daten separat sichern und das Volume neu erstellen? Was meint ihr sind hier Probleme zu erwarten? Hat evtl. schonmal jemand eine solche, bzw. vergleichbare Kombi aus LVM und Software RAID ausprobiert?
 

spoensche

Moderator
Teammitglied
LVM + Softw. RAID ist nicht exotisch. Du brauchst keine 1 GB Bootpartition. 120MB sind vollkommen ausreichend, weil dort nur der Kernel, Systemmap, Initramfs und ein paar Sachen vom Grub liegen.

Da Systemsicherheit schon bei der Partitionierung anfängt solltest du für /, /tmp, /var und /usr (normalerweise auch für /home) eigene Volumes verwenden.

Das hat folgenden Hintergrund:
Wenn du das System konfiguriert hast, kannst du / read only mounten. /usr kannst du auch read only mounten, weil dort die Libraries und Programme liegen und somit nur beim installieren von Programmen schreibender Zugriff benötigt wird.

Unter /var liegen die Logfiles, also schreibender Zugriff notwendig. Für /tmp ein eigenes Volume zu verwenden macht deshalb Sinn, weil deine / nicht vollaufen kann und somit nicht wegen Platzmangel vorrübergehend stillgelegt werden muss.

/boot auf LVM geht aus folgenden Gründen nicht:

1. Wenn der verwendete Bootloader kein LVM kann, wird dein System nicht gebootet.
2. LVM muss im Initramfs vorhanden sein, damit es verwendet werden kann. D.h. ein Boot in den Recovermodus wäre nicht möglich.

Du musst bei der Erweiterung kein Volume neu erstellen. Der Volumegruppe wird ein weiteres physikalisches Volume (pvcreate /dev/sdc) hinzugefügt, danach wird die Volumegruppe vergrößert. Die Volumes haben i.d.R. ein FS, d.h. wenn du das Volume vergrößert hast musst du anschließend das FS vergrößern. Das FS sollte, wenn man seine Daten liebt, nur vergrößert werden, wenn sonst keine anderen Operationen (Lesen, Schreiben) auf dem FS stattfinden.

Softw. RAID + LVM auf meinem Server zu hause. Umzug auf ein anderes RAID LW. ist simple und schnell, wenn man einfach das physikalische Volume verschiebt. 465 GB in nicht mal 3 Std.

PS:
Auch wenn du den Swap Speicher auf zwei Platten verteilst ist er trotzdem so was von langsam, das man das weglaufen möchte. Also lieber zu viel RAM als zu wenig.
 

josef-wien

Ultimate Guru
Im Hinblick auf http://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge sehe ich in einer Trennung von / und /usr keinen Nutzen.
 
A

Anonymous

Gast
norritt schrieb:
einen opensuse 12.2 Server als Host für Virtualisierung via Xen einzurichten. Hirzu wird verwendet:

Zur Erläuterung:
- sda, sdb sind jeweils eine 3TB grosse SATA Platte
- md0 -> 1 GB RAID 1 Bootpartition ohne LVM (lvm auf boot geht nicht laut yast, ist auch nicht wirklich nötig denke ich )
- md1 -> 20GB Systempartition für Virtualisierungshostsystem
- md2 -> ~ 2,9TB Partition für Daten/Virtual Harddsiks
- 8GB Swap ist mit jeweils 4 GB gesplittet auf sda un sdb (aus Geschwindigkeitsgründen)

Ich vermute die Kombination von Softwareraid und LVM ist ein wenig exotisch.
Da ist nichts exotisches dran, sowohl LVM als MD-Raid sind "Felsen" .
Warum willst du Swap splitten, spiegeln wäre richtiger, das Splitten hilft dir sowieso nicht da ich noch nie gesehen habe das er bei mehreren Swapdevices gleichmäßig zur gleichen Zeit ausgelagert hätte. Auch wenn der anfängt zu swappen, dann schreibt er sowieso irgendwelche Daten und bei Raid1 sowieso auf beide Platten. Das bedeutet die Platten sind im Moment wenn er auslagern will schon beide fast komplett beschäftigt. Ob du dort den Swap auf den selben Platten gesplittest hast oder nicht, ist dann eh schon Wurscht. Das Swappen möglichst komplett vermeiden und wenn eine Platte im laufenden Betrieb stirbt auf der im Swap doch ein paar Blöcke rumliegen, verhindern dass die Kiste jetzt abkachelt wenn er an diese Blöcke will, wäre bei deiner Konstellation besser.

Vergrößern deiner Konfiguration im laufenden Betrieb ist problemlos möglich (sogar nur um eine 3T Platte indem aus Raid1 mache Raid5 mit 3 Platten), aber das Dateisystem das du verwenden willst muss das online vergrößern mitmachen, aber vergrößern lassen sich derzeit fast alle online.

solche "Felsen" kannst du Stapeln, aber du darfst nie vergessen, wenn du dich auf die grafischen Tools zum konfigurieren und administrieren verlassen musst, diese habe ihre Grenzen und können nicht alles was zB theoretisch oder mit Kommandos möglich ist. Auch werden die grafischen Tools nicht alles verstehen und sauber interpretieren können was du eventuell mit Konsol-Kommandos oder in den Konfigurationsdateien zusammen konfigurieren könntest.

Eine wirklich funktionierende redundante Bootkonfiguration solltest du dir ausdenken, damit wenn irgend eine Platte mal die Krätsche macht, die Kiste trotzdem bootet auch wenn die defekte Platte sich noch im Rechner befindet. Für Grub2 darfst du da entweder im Internet suchen oder Jugend forscht spielen. Im Wiki haben wir da für grub2 wohl noch nichts dazu. Oder kann das grub2 von sich aus ?, dann solltest du es aber auch mal austesten.

Im Hinterkopf solltest du beim Stapeln von Treibern jedoch immer folgendes haben. je mehr Treiber du übereinander stapelst um so öfter müssen jegliche Änderungen durch den Kernel bis sie irgendwann mal im Schreibcache der Platte landen und von dort aus hoffentlich auch noch geschrieben werden.

Platte -> RAID ->LVM -> Filesystem -> ( VDisk -> Filesystem )

da laufen die geänderten Bytes/Blöcke schon mal schöne Schleifen durch die einzelnen Treiber im Kernel bis sie irgend wann mal auf Platte geschrieben werden, und du hast 2 Dateisysteme und den Plattencache dazwischen die jeweils eventuell die Daten noch ein paar Sekunden zwischen speichern könnten. Solange die Kiste läuft kein Problem, kostet nur ein bisschen Rechenleistung. Stromausfall :???: und du könntest theoretisch noch viel mehr stapeln und auch noch Verschlüsselungen und mehrfach verschachtelte Raid oder LVMs einbauen. Kleiner Tipp. Bau niemals mehr übereinander wie du dir zutraust im Boot-Fehlerfall per Hand auch selbst fehlerfrei der Reihe nach wieder zusammen zusetzen.

robi
 
OP
N

norritt

Member
Erstmal lieben Dank für das ganze Feedback.

spoensche schrieb:
Du brauchst keine 1 GB Bootpartition. 120MB sind vollkommen ausreichend...

Zugegeben 1 GB war vielleicht in bißchen paranoid, ich wollte einfach nur genug Luft lassen, um nicht irgendwann in die Verlegenheit der Platzknappheit auf der Bootpartition zu kommen. Ich war mir hier nicht ganz sicher, was noch an Modulen/Treibern mit auf der Partition landet. Da z.B. der nVidia Treiber (binary) schon selbst mal gern über 100 MB in die Waagschale wirft, war der Hintergrundgedanke hier "Vorsicht ist die Mutter der Porzellankiste", ich werde sie dennoch ein wenig verkleinern.

spoensche schrieb:
Da Systemsicherheit schon bei der Partitionierung anfängt solltest du für /, /tmp, /var und /usr (normalerweise auch für /home) eigene Volumes verwenden.

Das ist ein interessanter Ansatz, ich bin allerdings überrascht das das so einfach funktioniert, ich hätte vermutet, das evtl. das ein oder andere schwarze Schaf auch schonmal irgendwo im / Baum schreibt wo es nicht sein soll und dann entsprechend Fehler verursacht.

Allerdings sehe ich bei zu starker Partitionierung der Platte auch immer einen Nachteil insbesondere bezogen auf das tmp Verzeichnis. Normalerweise würde ich davon ausgehen, daß hier nur recht kleine Datenmengen abgelegt werden. Was passiert aber in Ausnahmefällen, z.B. Distributions upgrade mit zypper oder yast2. Wird hier vielleicht doch mehr Platz benötigt? Insofern bleibt für mich die Frage wie groß muss /tmp sein damit es keine Probleme gibt.

Spinnt man das nun weiter und plant immer großzügig HDD-Puffer für /var, /tmp /user usw. ein bleibt zunhemend mehr Pufferplatz von der HDD unbenutzt der vielleicht an anderer Stelle fehlt. Andererseits schafft es, wie Du richtig angemerkt hast, ein Problem aus der Welt, die root Partition kann nicht durch Logs/Tempdateien vollaufen. Ist mir schonmal passiert und zwar kein Beinbruch, aber ärgerlich und sorgt erstmal für ein langes Gesicht wenn der Server aus heiterem Himmel den Dienst quittiert.

robi schrieb:
Da ist nichts exotisches dran, sowohl LVM als MD-Raid sind "Felsen"
spoensche schrieb:
LVM + Softw. RAID ist nicht exotisch

Dass diese Funktionen für sich genommen ausgereift und getestet sind habe ich nicht anders erwartet. Allerdings vermute ich dass im "Profi/Businessbereich" oft Hardwareraid zum Einsatz kommt, dafür ein Privatanwender sich seltener die Mühe macht nen Softwareraid einzurichten insbesondere nicht in Kombination mit LVM, es ist aber beruhigend zu hören das die Kombination schon bei Euch funktionstüchtig im Einsatz zu sein scheint.

robi schrieb:
Warum willst du Swap splitten, spiegeln wäre richtiger, das Splitten hilft dir sowieso nicht da ich noch nie gesehen habe das er bei mehreren Swapdevices gleichmäßig zur gleichen Zeit ausgelagert hätte. Auch wenn der anfängt zu swappen, dann schreibt er sowieso irgendwelche Daten und bei Raid1 sowieso auf beide Platten.

Swap spiegeln macht wenig Sinn die Daten sind ohnehin flüchtig insofern wozu duplizieren?
Laut opensuse Wiki

... Es macht keinen Sinn SWAP auf ein RAID oder in ein LVM zu legen. Da die SWAP-Daten nur temporäre Speicherauszüge sind, die möglichst schnell geschrieben und gelesen werden sollen/müssen, würde ein LVM, welches aufgrund des Aufbaus von LVM sehr defragmentiert sein kann Schreib- und Leseoperationen aus bremsen. Bei einem RAID würde die CPU-Belastung zum berechnen der Parität ebenfalls zu einer Verlangsamung führen. Einzig ein RAID-0 wäre sinnvoll, wenn SWAP das nicht schon selbst erledigen würde. Zwei SWAP-Partitionen mit derselben Priorität haben wirken wie ein RAID-0. Das macht natürlich auch nur Sinn, wenn die verschiedenen SWAP-Partitionen auf verschiedenen Platten liegen...

behandelt der Linuxkernel mehrere Swappartitionen implizit wie einen RAID0 was bei Splittung auf 2 HDDs die Schreibgeschwindigkeit theoretisch verdoppelt und ebenso die Lesegeschwindikeit erhöhen kann.

robi schrieb:
Kleiner Tipp. Bau niemals mehr übereinander wie du dir zutraust im Boot-Fehlerfall per Hand auch selbst fehlerfrei der Reihe nach wieder zusammen zusetzen.

Tja da ist was Wahres dran, was den Softwareraid angeht ist die "manuelle Rekonstruktion" noch recht einfach, eigentlich sollte es beim Ausfall einer Platte reichen über eine RettungsCD zu booten, über fdisk die Partitionstyp-ID von 0xFD z.B. zurück auf 0x83 oder was auch immer tatsächlich verwendet wird zu stellen, grub zu installieren (falls die Festplatte in deren MBR grub installiert war abgeraucht ist sonst entfällt der Schritt) und schon sollte das System wieder hochfahren.

In meiner Kombi mit LVM ist das aber vermutlich nicht so einfach und ich muss gestehen da stünde ich dann auch erstmal auf dem Schlauch...

Beim Thema Schlauch, ich habe gestern mal versucht eine Testinstallation mit meiner Partitionierung zu erstellen, wies scheint kann ich auf meinem System opensuse 12.2 auf meinem System gar nicht installaieren. Gegen Ende des Setups erhalte ich immer eine Fehlermeldung dass die Initrd nicht erstellt werden konnte weil die HDDs in der device map nicht eindeutig zugeordnet werden könnten. Leider lässt einem das opensuse Setup nicht allzuviele Möglichkeiten herumzuschrauben, ich habe bereits versucht die Konfiguration von Grub so anzupassen, dass die HDDS über die UUID und nicht die Geräte-ID identifiziert werden. Auch die Verwendung von grub statt grub2 verursacht hier denselben Fehler. Ich hab keine Ahnung ob es

- an der Hardware (HP ProLiant N40L)
- der Kombi aus Softwareraid und LVM und opensuse 12.2 damit nicht klarkommt
- oder es mit der Größe der Platten (> 2TB zusammenhängt)

Ich werde gleich mal versuchen die Distri in der Standardkonfiguration zu installieren, wenns die Hardware bzw. die Plattengröße ist sollte das ja auch nicht funktionieren. Ich lade auch parallel mal die 12.1 runter vielleicht ist es auch nur ein Bug im Installer der 12.2.
 
Zu allem Anderen halte ich mich raus aber die /boot solltest Du in der Größe belassen wie sie ist. Mir war auf einem System mal der Platz in dem Ding ausgegangen. Frag mich heute nicht mehr warum, ob Nvidia oder noch andere "Flavor" dazu kamen oder irgendetwas beim bilden der initrd schief lief aber ich bin seitdem mißtrauisch gegenüber der Größe die suse vorgibt.
 

josef-wien

Ultimate Guru
norritt schrieb:
Swap spiegeln macht wenig Sinn
Wenn SWAP tatsächlich verwendet werden muß, weil der Hauptspeicher nicht ausreicht, macht es durchaus Sinn, SWAP entweder zu spiegeln oder auf jeder Platte eine SWAP-Partition zu haben. Bei der Frage, welche Variante "besser" ist, wirst Du sehr gegensätzliche Meinungen finden.

norritt schrieb:
Tja da ist was Wahres dran, was den Softwareraid angeht ist die "manuelle Rekonstruktion" noch recht einfach, eigentlich sollte es beim Ausfall einer Platte reichen über eine RettungsCD zu booten, über fdisk die Partitionstyp-ID von 0xFD z.B. zurück auf 0x83 oder was auch immer tatsächlich verwendet wird zu stellen, grub zu installieren (falls die Festplatte in deren MBR grub installiert war abgeraucht ist sonst entfällt der Schritt) und schon sollte das System wieder hochfahren.
Du denkst zu kompliziert. Es ist der Sinn eines RAID1, daß das System auch dann startet bzw. funktioniert, wenn eine Platte ausfällt und somit nur ein "halbes RAID" zur Verfügung steht. Der Boot-Manager muß natürlich auf beiden Platten bzw. Partitionen installiert sein, d. h. Du kannst den PC nach Belieben von beiden Platten starten.

Geier0815 schrieb:
/boot solltest Du in der Größe belassen wie sie ist
Also bei 125 MB habe ich locker Platz für vier verschiedene Standard-Kernel mit allem, was dazu gehört.

P. S. Bei Deinen Plattengrößen brauchst Du eine GPT, die herkömmliche Partitionentabelle im MBR geht hier nicht mehr. Ich schließe nicht aus, daß die Installationsautomatik mit Deinen Anforderungen nicht ganz zurechtkommt. Da ist möglicherweise Handarbeit notwendig, aber mit diesen Plattengrößen habe ich keine Erfahrungen.
 
OP
N

norritt

Member
*UPDATE*
So ich habe jetzt mal einige Testinstallationen durchgeführt und hierbei folgendes festtgestellt:

1. Versuch:
  • Neustart von opensuse Installationscd
  • Installation Minimalsystem (Textkonsole) mit manueller vereinfachter Partitionierung. Ich habe hier nur eine Platte ohne LVM/RAID partitioniert:
    • sda1 (boot, 128MB)
    • sda2 (swap, 8GB)
    • sda3 (root, 30GB)
    • sda4 (home, ~2,9TB)
-> Resultat: Bei der Partitionierung erhielt ich bereits mehrere Fehlermeldungen z.B. Code -1007, -3008, -3030.


2. Versuch:
  • Start des Systems mit Rettungscd, manuelles Löschen der Partitionstabelle mit parted
  • Neustart von opensuse Installationscd
  • Installation Minimalsystem (Textkonsole) mit automatischer Partitionierung/Konfiguration einer HDD durch yast ohne LVM und RAID
-> Resultat: Installation lief fehlerfrei durch, also scheint es schonmal keine generelle Inkompatibilität mit der Hardware zu geben. Allerdings blieb hierbei ein Großteil der HDD unpartitioniert, was ein Hinweis darauf sein könnte, dass das Problem bei Partitionen > 2TB zu suchen ist.

3. Versuch:
  • Start des Systems mit Rettungscd, manuelles Löschen der Partitionstabelle mit parted
  • Neustart von opensuse Installationscd
  • Installation Minimalsystem (Textkonsole) mit LVM und SoftwareRAID analog zu in meinem ersten Post beschriebenen Partitionierung.
-> Resultat: Fehler bei grub2 Installation initrd konnte nicht erstellt werden. Ich habe hierzu nochmal die Fehlermeldungen abfotografiert (siehe unten, sorry falls es schlecht lesbar ist, aber da ich kein laufendes System habe, kann ich die Texte leider nicht einfach so extrahieren und zum abtippten sind sie teilweise etwas lang geraten).

josef-wien schrieb:
Bei Deinen Plattengrößen brauchst Du eine GPT, die herkömmliche Partitionentabelle im MBR geht hier nicht mehr. Ich schließe nicht aus, daß die Installationsautomatik mit Deinen Anforderungen nicht ganz zurechtkommt. Da ist möglicherweise Handarbeit notwendig, aber mit diesen Plattengrößen habe ich keine Erfahrungen.

Ich vermute das Problem liegt in dieser Richtung, allerdings schreibt yast automatisch eine GPT Tabelle, wie ich mit parted im Rettungssystem festgestellt habe. Nichtsdestotrotz ist die Situation nicht ganz einfach, da ich die Installation nichtmal abschliessen kann und die Möglichkeiten im Installer leider recht eingeschränkt sind. Hat evtl. schonmal jemand die 2TB Schallmauer durchbrochen und hier nen Tipp?

Screenshots:
Fehler 1
Fehler 2
 
A

Anonymous

Gast
norritt schrieb:
robi schrieb:
Warum willst du Swap splitten, spiegeln wäre richtiger, das Splitten hilft dir sowieso nicht da ich noch nie gesehen habe das er bei mehreren Swapdevices gleichmäßig zur gleichen Zeit ausgelagert hätte. Auch wenn der anfängt zu swappen, dann schreibt er sowieso irgendwelche Daten und bei Raid1 sowieso auf beide Platten.

Swap spiegeln macht wenig Sinn die Daten sind ohnehin flüchtig insofern wozu duplizieren?
Laut opensuse Wiki

... Es macht keinen Sinn SWAP auf ein RAID oder in ein LVM zu legen. Da die SWAP-Daten nur temporäre Speicherauszüge sind, die möglichst schnell geschrieben und gelesen werden sollen/müssen, würde ein LVM, welches aufgrund des Aufbaus von LVM sehr defragmentiert sein kann Schreib- und Leseoperationen aus bremsen. Bei einem RAID würde die CPU-Belastung zum berechnen der Parität ebenfalls zu einer Verlangsamung führen. Einzig ein RAID-0 wäre sinnvoll, wenn SWAP das nicht schon selbst erledigen würde. Zwei SWAP-Partitionen mit derselben Priorität haben wirken wie ein RAID-0. Das macht natürlich auch nur Sinn, wenn die verschiedenen SWAP-Partitionen auf verschiedenen Platten liegen...

vielleicht kann man sich da wirklich drüber streiten, meiner bescheidenen Meinung nach steht dort viel im Internet was niemand jemals wirklich genau ausprobiert hat oder einfach nicht bis zum Ende durch gedacht hat bevor er seine scheinbar logische Schlussfolgerung im Internet zur Volksweisheit erklärt hat. ;)

Wann fängt der Rechner an zu swappen und was passiert genau in diesem Moment und welche Daten werden dann auf den Swap geschrieben.? ;)
Wenn der Rechner anfängt zu swappen wird ihm der Speicher knapp. Das bedeutet er hat schon sogut wie alles an Dateisystemcache aufgegeben und muss jetzt den Letzten den er aufgibt (das können jetzt aber nur noch solche Cache-Daten sein, die er gerade erst angefasst oder geändert hat, ) noch mit der Platte synchonisieren und solange der Speichernotstand besteht geht jede Schreib und Leseaktion ohne oder mit minimalem Cache, also immer voll über die Platte.
Warum hat der Rechner aber Speichernotstand. Möglich währen natürlich Forc-Bomben oder sehr viele "leere Speicheranforderungen" aber das ist mehr die Ausnahme, meistens weil er viel zu tun hat und diese Daten die jetzt in den Speicher legen will kommen sehr oft genau von den Platten und nicht aus der Luft kommen. (zB Librarys die er jetzt laden will müssen von der Platte gelesen werden)
Liegt der Swap genau auf den selben Platten von denen er diese Daten holt die in den Speicher müssen und mit denen er auch noch den Cache syncronisieren will, hat die Platte Schreib-Lese-Anfordereungen an 100 physikalischen Positionen gleichzeitig.

Was lagert der Kernel denn in den Swap aus? Die auslagerbaren Speicherseiten die er am längsten nicht angefasst hat. Das werden in aller Regel beim ersten Swappen irgendwelche Libraryteile eines Programmes sein, das zwar gestartet ist, aber eigentlich nichts tut. Diese Speicherseiten wird er mit großer Wahrscheinlichkeit auch die nächsten Stunden nicht brauchen.

behandelt der Linuxkernel mehrere Swappartitionen implizit wie einen RAID0 was bei Splittung auf 2 HDDs die Schreibgeschwindigkeit theoretisch verdoppelt und ebenso die Lesegeschwindikeit erhöhen kann.
Warum sollte der Kernel so dämlich sein und zusammen gehörende Speicherseiten zu splitten und sich damit noch einen viel größeren Verwaltungsaufwand diese Seiten einzuhandeln. Im besten Fall lagert er Seiten mal "hier" und mal "hier" hin, aber nie "hier und hier" wie es bei einem richtigen Raid0 sein müsste um Vorteile zu erhalten.

Das ganze bezieht sich jetzt erstmal nur auf den Moment wenn er anfangt zu swappen oder gelegentlich mal moderat so arbeitet. Das ganze artet dann in dem Moment aus, wenn er Speicherbereiche auslagern muss, die er eigentlich braucht. Denn dann muss er ständig umstapeln. Was er gerade braucht ist im Moment im Swap, das muss jetzt in den Speicher, und das was dafür aus dem Speicher raus in den Swap geschrieben wird, ist unglücklicherweise genau das, was er anschließend wieder braucht. :???:
Ein System in diesem Status ist eigentlich nur noch mit sich selbst beschäftigt. Und dabei ist es vollkommen egal wie schnell er den jetzt swappen kann, im dümmsten Fall, der leider oft auch die Regel ist, kommt er aus dieser Situation nicht aus eigener Kraft mehr heraus. Hier wären 2 separate Swapbereiche eventuell im Vorteil. Hilfreich wäre jetzt das Stoppen eines oder mehrere Programme, nur dazu muss man sich anmelden und einen Befehl starten. Um dafür aber die Speicherkapazität zu erhalten muss der Kernel jedoch erstmal noch viel mehr swappen. :???:
Wer Lust hat darf das selbst untersuchen und testen und dann einen Doktorarbeit darüber schreiben. Aber soweit sollte man es möglichst nicht kommen lassen in dem man den Rechner entsprechend seiner Arbeitsaufgabe HW-seitig gut ausrüstet. Hin und wieder können auch Softwarebugs dieses auslösen, doch dann sollte man die Bugs mit Updates beseitigen und sich nicht freuen das der Kernel mit 2 oder 3 Swapbereichen vielleicht jetzt noch 1% arbeiten kann, während er bei einem Raid1 als Swap jetzt noch noch 0.85% arbeiten könnte.
Swap spiegeln macht wenig Sinn die Daten sind ohnehin flüchtig insofern wozu duplizieren?
klar sind diese Daten eigentlich nicht relevant. Aber stell dir folgenden Fall vor. Ein Programm wurde gestartet, dieses fordert 10MB Speicher an
der auch allociert wird. Das Programm macht aber nichts und der Kernel lagert diese 10MB in den Swap aus. Jetzt stirbt die Platte. Das System läuft weiter da ja alle Dateisysteme gespiegelt sind. Jetzt willst du aber das Programm das eigentlich nichts macht beenden. Der Kernel muss dazu den allocierten Speicher wieder freigeben der jetzt im Swap ist, will also auf den Swap zugreifen der aber nicht mehr reagiert weil die Platte tot ist. Was jetzt genau passiert ist unterschiedlich, aber ein Kernelcrash ist nicht auszuschließen. Und bei diesem Crash können Daten von anderen Programmen durchaus in Mitleidenschaft gezogen werden. Wenn alles gespiegelt ist aus dem Grunde dass der Rechner weiter läuft auch wenn eine Platte stirbt. sollte auch den Swap spiegeln. Wer das Raid1 nur hat um die Daten doppelt zu haben und der ununterbrochene Betrieb des Servers nicht so wichtig ist, der darf gerne auch auf gespiegelten Swap verzichten.

So nun kann sich jeder überlegen wie er seinen Swap konfiguriert ? ;) ;) ;)

robi
 
OP
N

norritt

Member
robi schrieb:
vielleicht kann man sich da wirklich drüber streiten...

Streiten wollte ich mich sowieso nicht ;) Ausserdem steht natürlich außer Frage das der SWAP-Space idealerweise selten bzw. gar nicht zum Einsatz kommen sollte, da er mit oder ohne RAID exorbitant langsamer ist als der RAM. Dem wiederspreche ich auch in keinster Weise. Vorausgesetzt die Info aus dem opensuse WIKI ist korrekt, und der Kernel verteilt die Zugriffe wirklich automatisch auf zwei HDDs wenn die entsprechenden Partitionen eingereichtet sind dann ist, sollte der worst case eintreten, halb so langsam immer noch besser als total langsam, oder nicht?

robi schrieb:
Warum sollte der Kernel so dämlich sein und zusammen gehörende Speicherseiten zu splitten und sich damit noch einen viel größeren Verwaltungsaufwand diese Seiten einzuhandeln. Im besten Fall lagert er Seiten mal "hier" und mal "hier" hin, aber nie "hier und hier" wie es bei einem richtigen Raid0 sein müsste um Vorteile zu erhalten.

Auch wenn es reine Spekulation ist, (ich für meinen Teil kenne die Interna des Linux kernels nicht genug um sagen zu können, wie das Swapping arbeitet) vermute ich mal das nicht einzelne Speicherseiten zerrissen werden, aber wenn größere Datenmengen ausgelagert werden, sagen wir mal 2GB, was einer ganzen Menge Speicherseiten entspricht, so ist die Rechnung doch recht einfach: Bei einer Schreibgeschwindigkeit von 100MB/s braucht eine Platte 20 Sekunden um 2000MB zu schreiben, wenn du diesen Schreibzugriff auf 2 Platten, also entsprechenden einem Stripeset (RAID-0) verteilst, sind es nur noch 10 Sekunden da jede Platte nur noch 1000MB schreibt.

Möglicherweise werden in der Praxis solche Speicherbrocken nicht auf einen Rutsch ausgelagert, aber auch bei kleineren Datenmengen ändert sich ja prinzipiell nichts an der Verdopplung der Schreibgeschwindigkeit. Insofern stellt sich die Frage, wenn der Kernel mir praktisch kostenlos eine Verdopplung der Geschwindigkeit im worst-case schenkt, wieso soll ich das dann darauf verzichten?
 
A

Anonymous

Gast
norritt schrieb:
so ist die Rechnung doch recht einfach: Bei einer Schreibgeschwindigkeit von 100MB/s braucht eine Platte 20 Sekunden um 2000MB zu schreiben, wenn du diesen Schreibzugriff auf 2 Platten, also entsprechenden einem Stripeset (RAID-0) verteilst, sind es nur noch 10 Sekunden da jede Platte nur noch 1000MB schreibt.

Das ist genau das was ich meinte ;)
und schon wird scheinbar eine theoretische Überlegung zur Volksweisheit. Keine Ahnung wie die Straße aussieht, aber mein Porsche fährt 250Kmh also sollte ich die Stecke Hamburg-München (775km) in 3,1 Stunden geschafft haben. ;) ;) ;) ;)

robi
 
OP
N

norritt

Member
Update & Retreat

Soo, schlußendlich habe ich yast2 doch noch dazu bewegen können die Installation durchzuführen, es gibt noch ein großes "aber", grub2 bootet trtoz "erfolgreicher" Installation nicht, dazu später mehr.

Kurz zu den Fakten:

Bekannt ist, das Festplatten > 2 TB nicht mehr über herkömmliche Partitionstabellen verwaltet werden können. Hierzu wurde GPT eingeführt.

  • Opensuse kennt GPT, kann diese erstellen und tut dies auch automatisch korrekt, zumindest in meinem Fall
  • GPT ist Teil der UEFI Spezifikation und somit nicht unbedingt für den Boot im BIOS Modus gedacht, nichtsdestotrotz kann man mit einem PC mit "herkömmlichem" BIOS von einer GPT Partition booten, wenn das OS bzw. der Bootloader es unterstützt. Windows tut sich hiermit oft schwer, im Netz kursieren aber gerüchte es ginge mit 64 Bit Versionen von Windows 7 bzw. 2008 Server.

Nun zum Haken bei der opensuse 12.2 Installation:
Die GPT Partitionstabelle wird zwar richtig angelegt, hat der PC aber kein EFI muss manuell eine 2MB grosse Bootpartition geflaggt als "bios_grub" bzw. 0x103 am Anfang der Platte zusätzlich zur "/boot" partition angelegt. werden. Diesen Partitionstyp bietet Yast bei der Installation in der Auswahlbox nicht an, man kann den Wert 0x103 aber manuell in die Auswahlbox eintippen. Bei mir hat Yast die Partition, vermutlich aus Alignemntgründen, immer autmatisch auf 7,48MB vergrössert. Alternativ kann man vor der Installation das Rescuesystem von der CD starten die Partitionierung mit parted einrichten (fdisk kann kein GPT) und die Partitionierung in Yast importieren.

Die "/boot"-Partition darf, obwohl grub2 dies eigentlich unterstützt, nicht auf einem md-RAID liegen. Auch das scheint einfach eine Unzulänglichkeit im Installer zu sein. Nach dem Anlegen der "bios_grub" Partition und Entfernung des md-RAIDs von der "/boot"-Partition. Lief der opensuse 12.2 Installer dann aber ohne Fehlermeldung durch. Leider blieb grub2 nach dem ersten Neustart dann aber auf schwarzem Bildschirm mit blinkendem Cursor hängen.

Mangels aussagekräftiger Fehlermeldung und somit schwieriger weiterer Recherche, habe ich mich dann dazu entscheiden, das Host OS auf eine separate 60GB SSD zu installieren. Was dann auch vernünftig geklappt hat.

Fazit: BIOS-Boot von GPT partitionierten Festplatten > 2TB ist theoretisch mit Linux möglich aber einabenteuerliches Unterfangen das eine Menge Handarbeit erfordert. Übrigens Ubuntu Server 12.04 LTS hatte beim Booten mit grub2 das selbe Problem.

Interessante Detailinfos zu dem thema gibts u.a. hier.
 

spoensche

Moderator
Teammitglied
norritt schrieb:
Die "/boot"-Partition darf, obwohl grub2 dies eigentlich unterstützt, nicht auf einem md-RAID liegen. Auch das scheint einfach eine Unzulänglichkeit im Installer zu sein.

Das ist keine Unzulänglichkeit des Installers. Das ist bewusst so. Angenommen es tritt ein Problem auf, was dich zum Reboot zwingt und dir das RAID teilweise zerlegt hat, dann wärst du nicht in der Lage das System im Rescue Modus zu booten, weil /boot auf dem zerlegten RAID liegt.

norritt schrieb:
Nach dem Anlegen der "bios_grub" Partition und Entfernung des md-RAIDs von der "/boot"-Partition. Lief der opensuse 12.2 Installer dann aber ohne Fehlermeldung durch. Leider blieb grub2 nach dem ersten Neustart dann aber auf schwarzem Bildschirm mit blinkendem Cursor hängen.

Mangels aussagekräftiger Fehlermeldung und somit schwieriger weiterer Recherche, habe ich mich dann dazu entscheiden, das Host OS auf eine separate 60GB SSD zu installieren. Was dann auch vernünftig geklappt hat.

Fazit: BIOS-Boot von GPT partitionierten Festplatten > 2TB ist theoretisch mit Linux möglich aber einabenteuerliches Unterfangen das eine Menge Handarbeit erfordert. Übrigens Ubuntu Server 12.04 LTS hatte beim Booten mit grub2 das selbe Problem.

Die erste Partition deiner SSD fängt bei Sektor 2048 oder? Wenn nicht, dann hast du kein vernünftiges Alignment und das mag eine SSD überhaupt nicht. Ein falsches Alignment führt dazu, dass die Blöcke sich evtl. überrlappen und das wirkt sich auf die Anzahl der Schreiboperation aus (du brauchst einen mehr) und als Folge dessen auf die Lebensdauer der SSD.
 
OP
N

norritt

Member
spoensche schrieb:
Das ist keine Unzulänglichkeit des Installers. Das ist bewusst so. Angenommen es tritt ein Problem auf, was dich zum Reboot zwingt und dir das RAID teilweise zerlegt hat, dann wärst du nicht in der Lage das System im Rescue Modus zu booten, weil /boot auf dem zerlegten RAID liegt.

Eigentlich ist der RAID (1) ja für genau diesen Fall gedacht. Wenn es eine HDD zerlegt kann man von der anderen booten ohne Probleme. Hinzu kommt, dass man einzelne Platten aus nem MD-RAID 1 genauso wie eine nicht RAID Platte behandeln und mounten kann, vorausgesetzt die Partitionstabelle und oder das Dateisystem ist nicht geschreddert, aber in dem Fall ist man mit der RAID Config immer noch besser dran, da hier die Wahrscheinlichkeit, dass der defekte Bereich auf der einen Platte auf der anderen noch intakt ist.

norritt schrieb:
Die erste Partition deiner SSD fängt bei Sektor 2048 oder? Wenn nicht, dann hast du kein vernünftiges Alignment und das mag eine SSD überhaupt nicht. Ein falsches Alignment führt dazu, dass die Blöcke sich evtl. überrlappen und das wirkt sich auf die Anzahl der Schreiboperation aus (du brauchst einen mehr) und als Folge dessen auf die Lebensdauer der SSD.

Jap keine Sorge das Alignment auf der SSD ist okay, es sieht auch so aus als macht Yast das immer brav automatisch richtig, ich habe, außer manuell im Rescuesystem, auch keine Möglichkeit gefunden daran rumzuschrauben.

Partitionierung meiner SSD:
Code:
Device Boot      Start         End         Blocks   Id  System
/dev/sdc1   *        2048     1044479      521216   83  Linux
/dev/sdc2         1044480    17815551     8385536   82  Linux swap / Solaris
/dev/sdc3        17815552   125044735    53614592   83  Linux

Ich schreib gerade alles zusammen was ich gefunden und getestet habe zum Thema SSD Lebensdauer verbessern/HDD Zugriffe reduzieren/Energiesparen und werd das dann bei Gelegenheit in nem separaten Thread posten. Was mir wie im anderen Thread erwähnt noch echt Probleme macht ist die Onlinedefragmentierung bei ext4.
 
A

Anonymous

Gast
norritt schrieb:
Was mir wie im anderen Thread erwähnt noch echt Probleme macht ist die Onlinedefragmentierung bei ext4.
Was hast du denn damit für "echte Probleme" ?
Wenn du nicht einen uralten Kernel hast, dann hast du im Kernel Schnittstellen die dafür benötigt werden. Und wenn du mit deinen e2fstools das e4defrag Tool installiert hast, dann hast du den Befehl mit dem du es starten kannst. Wenn du den Befehl nicht startest, dann gibt es keine Onlinedefragmentierung. Na gut wenn du noch User hast, die könnte versuchen ihre eigenen Dateien damit zu defragmeniteren, werden aber nicht allzuviel Spaß damit haben. Das könntest du aber endgültig verhindern, zB in dem du e4defrag die Ausführungsrechte entziehst.

Es gibt nur wenige (eigentlich nur 2) vernünftige Gründe die Onlinedefragmentierung zu verwenden, nach einem Konvertieren eines ext3 in ein ext4 entsteht ein Hybrid, da die alten Datein noch im ext3 Format gespeichert bleiben und alles was neu angelegt wird, wird automatisch ext4 formatiert geschrieben. Um die alten ext3 Dateien und Verzeichnisse endgültig auch auf ext4 umzustellen nimmt man diese Funktion.

Der andere Grund könnte ZB sein, dein Dateisystem ist mehr als 75% voll oder läuft öfter mal voll und dein Dateisystem enthält sehr viele kleine Dateien die oft gelöscht und neu angelegt worden sind. (zB weil du auf der Kiste Kompilierst oder öfters mit massenweisen kleinen Dateien rumhandierst die nicht ewig auf der Maschine bleiben ) und auf dem Filesystem wurden aber im laufe der Zeit auch viele große Dateien angelegt, (ZB Videos, CD Images, oder anderer Multimediakram der einige MB oder GB groß ist) , diese großen Dateien sollen aber ewig bestehen bleiben. Hier kannst du mit der Defragmentierung ein vernünftigere Block Verteilung erreichen, da unter dem Umstand wenn das Dateisystem ziemlich voll ist, dann werden auch große Dateien hin und wieder mal zerstückelt abgelegt und zwar in den größeren Löchern die vom löschen der Kleinen Dateien her stammen. Auf einem Dateisystem das weniger als halb voll ist, werden beim normalem schreiben nur sehr wenige Dateien zerstückelt, und das um entstandene Löcher zu stopfen, und bringt eigentlich mehr Vorteile als Nachteile, da die bestehenden Bereiche dann alle voll ausgenutzt werden und somit immer genügend große neue Bereiche zum speichern von neuen großen Dateien vorhanden sind.
Wenn du allerdings Logdateien hast, an die du jeden Tag nach dem neu booten hinten ein paar KB ranschreibst, dann entstehen ziemlich stark fragmentierte Dateien, die man ja im Normalfall eigentlich dann auch irgendwann mal komprimiert oder Löscht und damit ist so eine hochfragmentierte Logdatei dann auch schon wieder verschwunden.

Das einzige was hin und wieder automatisch mal aufgeräumt und optimiert wird, sind die Dateinblöcke von sehr großen Verzeichnissen in denen sehr viele Dateien gelöscht worden sind. Wenn das nicht automatisch anlaufen kann, (weil du zB keine weiteren Dateien dort löscht oder anlegt werden), dann musst sowas ansonsten dort mal per Hand mit "fsck -D" oder notfalls mal durch umkopieren beseitigt werden, sonst werden solche Verzeichnisse sonst A....langsam.

Alles andere ist Legende und "hast nicht gesehen" von Leuten die zu lange mit Windows gespielt haben. ;)

robi
 
OP
N

norritt

Member
robi schrieb:
Was hast du denn damit für "echte Probleme" ?
Wenn du nicht einen uralten Kernel hast, dann hast du im Kernel Schnittstellen die dafür benötigt werden. Und wenn du mit deinen e2fstools das e4defrag Tool installiert hast, dann hast du den Befehl mit dem du es starten kannst. Wenn du den Befehl nicht startest, dann gibt es keine Onlinedefragmentierung.

So ich verlinke hier nochmal auf den angesprochenen "anderen Thread", damit klar ist, worum es geht.

Ich setze eine SSD ein, auf der bauartbedingt eine Defragmentierung nicht nur keinen Sinn macht, sondern die Lebenszeit der SSD unnötig verkürzt. e4defrag bringt mir also gar nichts, da es ein Kommandozeilentool zur Defragmentierung ist und mit der Onlinedefragmentierung zunächst mal nichts zu tun hat. Mein "echtes Problem" besteht also aus zwei Teilen:

  • Wie kann ich prüfen ob bei die Onlinedefragmentierung aktiv ist? (Mit Onlinedefragmentierung ist hier nicht nur gemeint das das Dateisystem eingebunden bleibt, sondern auch das praktisch im Hintergrund, im laufenden Betrieb stetig defragmentiert wird - meines Wissens passiert das seit ext3)
  • Wie kann ich das ggf. abstellen?

Aber die Sache gehört thematisch wahrscheinlich eher in besagten "anderen Thread".
 
A

Anonymous

Gast
norritt schrieb:
sondern auch das praktisch im Hintergrund, im laufenden Betrieb stetig defragmentiert wird - meines Wissens passiert das seit ext3)
Kannst du mal bitte eine offizielle oder einigermaßen vertrauenswürdige Seite zeigen aus der du meinst das irgendwo heraus gelesen zu haben.

robi
 
OP
N

norritt

Member
Nein kann ich nicht, es gibt viele Gerüchte in Blogs und Foren aber nichts konkretes. Dummerweise finde ich auch (bis jetzt) keine zuverlässige Quelle die diesen Gerüchten widerspricht, genau das ist ja das Problem. Ich durchforste gerade die offizelle ext4 Doku und das ext4 Wiki nach Infos...
 
Oben