Domino fragmentierung

  • Hallo Forum,


    langsam stinkt mir Domino. Tja, hätte nicht gedacht, dass ich das mal sage. Die meisten Softwaretechniken sind mittlerweilen sowas von überholt. Man könnte meinen IBM lebt noch im letzten Jahrtausend. Aber gut. Was führt mich heute hierher? Fragmentierung.


    Gerade unsere zentrales Mail-Cluster und unser Anwendungs-DB/Replikations-Cluster fragmentieren tierischst! Aber ist auch kein Wunder, etwa 2200 User die täglich fleißig darauf Mails bekommen und wieder löschen und am Wochenende ein compact der alles wieder aufräumt. Im Moment läuft das so, dass die Server halt immer ein gutes Quartal für sich Zeit haben um wieder richtig langsam zu werden und dann ziehen wir drei Admins hier Streichhölzchen, wer am Wochenende manuell den Windows-Defrag laufen lässt - dauert bei unserer 2TB-Partition (davon übrigens 1,4TB belegt) zur Zeit nette 14 Stunden in denen natürlich keine Domino laufen darf. Schon alleine dadurch sind wir eigentlich schon knapp über unseren SLA...


    Und genau hier kommt ihr ins Spiel *g*
    Wie krieg ich den Server dazu, dass er nicht mehr fragmentiert oder zumindest weniger fragmentiert? Am idealsten wäre es ja eigentlich wenn ich analog zu Exchange 2-10 echte Datenbanken darunter hängen könnte und darin alle User-DBs liegen. Oder wenn ich den User-DBs sozusagen eine Initialgröße geben könnte. Wobei wir dann wieder aktuell das Problem haben, dass wir ohne Quota fahren, da wir erst vor kurzem unser Archiv-System wieder raus geschmissen haben, welches einfach nicht funktioniert hat - vor allem im Zusammenhang mit verschlüsselten Mails. Aber letzteres lasst mal mein Problem sein. Wenn's nur mit Quota geht, geht's halt nur mit Quota - dann können wir das auch wieder durchdrücken ;)


    So, war jetzt viel Text. Hoffe jemand weiß Rat. Vielen Dank schon mal so weit für's lesen.

  • Schon interessant: Dir stinkt Domino, weil du ein Problem mit dem Windows Dateisystem hast.


    Nur mal zur Info: Auch SQL Datenbanken fragmentieren, wenn sie auf einem entsprechenden Dateisystem eingesetzt werden. Das ist völlig unabhängig davon was du dort speicherst, denn die Fragmentierung wird durch das darunterliegende Betriebssystem im Zusammenhang mit dem verwendeten Dateisystem verursacht.


    IBM kann das gar nicht ändern, weil dazu Windows verändert werden müsste.


    So wie es deiner Beschreibung nach klingt setzt ihr lokale Platten mit NTFS ein und NTFS ist nun mal ein Dateisystem, daß konzeptionell mit Fragmentierung zu kämpfen hat.


    Wenn du die Fragmentierung verhindern willst, setz ein Dateisystem bzw eine Technik ein, die eben keine Fragmentierung verursacht.
    Z.B. richtige SAN Systeme.

  • Also, wir müssen 2 Arten von Fragmentierung unterscheiden. Zum Einen die Fragmentierung des White Space in den DBs an sich, die lassen sich mit einem compact beheben. Wie ihr es ja auch macht. Das andere Ding ist die Fragmentierung im Filesystem. Das lässt sich nicht verhindern. Außer eventuell mit einem anderen Filesystem (und damit OS), wobei *alle* mehr oder weniger stark fragmentieren. Geht nicht anders. Ist so.


    Dass Notes/Domino eben *nicht* alles in ein File klatschen und das dann intern organisieren, ist definitiv die bessere Wahl. Verreckt das eine File, sind alle darin organisierten User betroffen. Die Kollegen aus einer anderen Abteilung administrieren für einen (Gott sei Dank nur einen) Kunden Exchange. Die freuen sich immer tierisch, wenn so ein Container krepiert, ein Dutzend User Incident Tickets schrieben und die Rücksicherung dann den halben Tag dauert.


    Die einzige Möglichkeit die ihr habt, ist eben wirklich Quotas einzuführenn. Nur so lässt sich der Platz für die Mail-DBs einigermaßen in Grenzen halten (wobei 1,4TB nicht soooo wahnsinnig viel sind). Was bei eurem Archiv schief gelaufen ist, kann so natürlich niemand beantworten. Eine einfache Möglichkeit ist aber, einen extra Server hinzustellen, auf den dann per bordeigenen Mitteln archiviert wird. Das tut zuverlässig und man setzt nicht viel Geld für nicht funktionierende Nachbauten eines Drittherstellers in den Sand, der meint, schlauer zu sein als IBM.

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Ist schon klar, dass die Fragmentierung generell erst mal ein Windows-Problem ist. Nur, wenn solche Datenmengen in massig kleinen Files rumliegen, wo sich immer wieder die tatsächliche File-Größe ändert, fragmentiert sowas halt wesentlich schneller wie z.B. ein SQL Server wo ich ne DB mit einer Initial-Größe anlege und sich diese im Filesystem im Prinzip erst einmal nicht mehr ändert. Da hängen dann alle Datenblöcke brav hintereinander auf der Platte. Nur wenn die Fiels unter der Woche mal 50GB wachsen und am Wochenende der compact wieder 49GB aufräumt, verteilen sich die Datenblöcke zu einer NSF halt schon ganz schön über die Platte :-/
    Und nein, ich meine nicht die Whitespace-Fragmentation in den NSFs.
    Das ganze liegt übrigens in einem SAN. Wie ganz genau könnten meine Server-Hardware-Kollegen besser erklären aber im Prinzip sind die Partitionen über einen Fiberchannel-Adapter dann ins Blechle eingebunden und für Windows sind es dann ganz normale Partitionen - natürlich mit NTFS formatiert.


    Was wäre hier den generell besser bzw. BestPractice? Firmenpolitisch sind wir leider an Windows gebunden? Würd ja das ganze lieber mal unter einem Linux ausprobieren, aber man kann halt nur mit dem arbeiten, was man kriegt.

  • Du hast dann im Endeffekt 3 Möglichkeiten:
    1) wechsel das FS
    2) leb mit der Fragmentierung (vernünftige Hardware sollte auch so schnell genug sein)
    3) lass den compact weg, leb mit dem Whitespace im NSF, führe einen FS-defrag durch. So wird zuerst immer der Whitespace verbraten, bevor das eigentliche File im FS vergrößert wird.

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Hm... Befürchtete schon, dass es auf sowas hinausläuft.


    Zu 1.)
    Welche sinnvollen Alternativen hätte man denn da? Kenne mich in dem Bereich leider zu wenig aus.


    Zu 2.)
    naja, wir versuchen es ja schon, aber wenn das FS zu über 80% fragmentiert ist bleibt halt nur noch ein drittel der Platten-Performance effektiv übrig und da wird dann schon etliches recht zäh.

  • 1) Unixe und deren Derivate mit den dort vorherrschenden FSsen (ich wiederhole: auch da gibt Fragmentierungen, wenn auch nicht so stark wie bei NTFS). Eine firmenpolitische Bindung ist ja gut und schön, technsiche Fakten sind aber nun einfach mal technische Fakten.


    2) Wie gesagt: verzichte auf den compact und führe einmalig ein defrag durch. Dann bleiben die einzelnen Files über einen weiten Bereich unangetastet, weil DB-intern erst einmal versucht wird, den Whitespace zu nutzen. Was läuft da eigentlich sonst noch auf den Platten, bzw. von wievielen Files sprechen wir eigentlich? Eine 80%ige Fragmentierung ist garantiert nicht normal für ein Mailverzeichnis...
    Eine Alternative wäre, die wenigen großen von den vielen kleinen Files zu trennen auf unterschiedliche Plattenstapel zu packen, um so in gewissen Grenzen die Fragmentierung einzuschränken.

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Wir sprechen hier von 5 Mailverzeichnissen:
    1.) 1312,2GB in 1925 Dateien
    2.) 2,9GB in 11 Dateien
    3.) 27,7 GB in 55 Dateien
    4.) 10,7 GB in 11 Dateien
    5.) 428,6GB in 459 Dateien (andere Partition)


    Aktuell ist die Fragmentierung wieder bei "nur" 20%, da der letze Defrag erst ein drei Wochen her ist. Nach einem Quartal sind wir aber schon bei guten 80-90% - und da wird das System so zäh, dass der Compact länger 24h braucht.


    Aktuell fahren wir den compact mit "-c", auf dem Cluster ist TransactionalLogging aktiviert. Wir haben mal versucht nur mit DB-internem Compact durchzuhalten, haben dann aber nach zwei Wochen wir auf "mit Reduzierung der Datenbankgröße" wechseln müssen, da wir vom Wachstum nach zwei weiteren Wochen an die Kapazitätsgrenzen gestoßen wären.


    Meine Kollegen haben sich halt damit schon längst abgefunden, aber ich bin halt schon irgendwo der Meinung, dass man das mit sicherheit eleganter lösen könnte. Ich komm nur nicht drauf :-/

  • 1) ungefähr 680MB/File
    2) ungefähr 260MB/File
    3) ungefähr 500MB/File
    4) ungefähr 1GB/File
    5) ungefähr 1GB/File


    Also werden 1) und 3) zusammengelegt, 4) und 5) werden ebenfalls zusammengelegt.


    Ein compact -c ist natürlich auch die denkbar ungünstigste Variante, die du nur hättest wählen können. Ein "copy-style compaction" macht genau das, was der Name sagt: es kopiert die DB. Ergo: es wird temporär eine 2. Datei angelegt, der Inhalt der ersten reinkopiert, die erste gelöscht, die 2. auf den Namen der ersten umbenannt. Dass das fragt- insbesondere bei der absoluten Anzahl aller Dateien-, dürfte logisch sein, oder? Wesentlich sinniger wäre ein "compact -S x% -b" (wohlgemekrt: ein kleines "b"!). Das komprimiert nur die Files, bei denen x Prozent ungenutzter Platz existiert und reduziert die Filesize *nicht* (um das FS-fragging zu unterbinden).

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • Hallo zusammen,


    wenn ich das hier so lese möchte ich manchmal in die Tischkante beissen - da treffen ja etliches an Halbwissen und "Tipps" aufeinander, da mag ich denn mal auch meine 50 Cents dazugeben.


    <B>Domino und Compact:</B>


    Auf den Compact zu verzichten ist keine gute Idee, nicht mal ansatzweise. Der tut schließlich einiges mehr als nur die Dateien kleiner zu machen - und sogar das läßt sich per Switch steuern. Aber dazu später.


    <B>Windows und Fragmentierung:</B>


    Alle Filesysteme unterliegen diesem "Problem", nur sind die Auswirkungen unterschiedlich stark zu merken.


    Wo liegt das Performance-Problem hierbei? Nun, eigentlich ganz simpel in der Tatsache, daß der Schreib/Lesekopf der Platte immer erst neu positioniert werden muß, bevor der nächste Block gelesen werden kann. Stehen die Blöcke "hintereinander" fällt diese Verzögerung weg. Womit wir aber schon die nächste Frage hätten - stehen nach dem Defragmentieren die Blöcke wirklich hintereinander?


    <B>Anatomie der Datenspeicherung:</B>


    Der Schreib/Lesekopf der Platte (ich nenne ihn jetzt mal kurz nur "Kopf") liest einen Block von der Platte und schreibt ihn in einen Puffer. Da die Daten auf der Platte schneller kommen als der Puffer verarbeiten kann muß die Platte jetzt warten, bis der Puffer wieder zur Verfügung steht. Im Idealfall dauert das z.B. genau eine Plattenumdrehung und der Kopf wäre, bei sequentieller Speicherung, genau an der richtigen Stelle für den nächsten Block. Und der Vorgang wiederholt sich.


    Dieser "Idealfall" existiert allerdings heutzutage aus folgenden Gründen nicht mehr wirklich:


    - Die Blockgröße der Festplatte und des Betriebssystems müssen dafür identisch sein.
    - Die Festplatte liegt heutzutage bei Servern in einem RAID, meist 5 oder 6. Ein RAID hat ebenfalls eine Block-Größe (meist als Stripe bezeichnet).
    - das RAID beherbergt oft Daten verschiedener Systeme oder Programme. Die Vorstellung, zum Zeitpunkt X fragt nur genau eines dieser Programme die Daten sequentiell ab ist weltfremd.
    - Ein SAN beherbergt u.U. mehrere redundante RAID-Systeme und wird von vielen Servern und Applikationen zeitgleich genutzt. Der Hauptvorteil einer Defragmentierung wird dadurch zunichte gemacht, daß die Köpfe sowieso aufgrund der verschiedenen parallelen Anfragen ständig in Bewegung sind.
    - Alle RAID-Versionen (außer 0) schreiben die Daten doppelt, von wo sie später gelesen werden kann man nicht direkt beeinflussen, selbst wenn sie an einer Stelle sequentiell stehen würden werden die Kopien auf andere Platten redundant verteilt.


    <B>Erkenntnisse aus obigen Bemerkungen:</B>


    In einem modernen Serversystem mit RAID und/oder sogar SAN kann man den physikalischen Speicherort nicht beeinflussen. Vielmehr hat man bereits in Planungsphase auf bestimmte Dinge zu achten, die die Performance später maßgeblich beeinflussen:


    - Nicht alle Daten gehören ins SAN (Stichwort OS und Translogs)
    - RAID 5 und 6 sind nicht für alle Daten sinnvoll (Stichwort Translogs)
    - Trenne OS und Daten
    - beachte die verwendeten Blockgrößen und stimme sie ab
    - kenne deine Applikation und die benötigten Blockgrößen
    - kenne dein OS und dessen Vor- und Nachteile
    - Nutze Cache-Mechanismen sinnvoll
    - vermeide unnötige Vorgänge durch rechtzeitige DB-Wartung (Stichwort Compact und Updall)


    usw ...


    Um zum Thema Compact zurückzukommen, das ja vom Verfasser des Ur-Postings gemeinsam mit dem Datenbankspeicher sinngemäß als "Quelle allen Übels" bezeichnet wurde:


    Wenn du wirklich davon überzeugt, daß die Fragmentierung dein Problem verursacht, wieso läßt du die Datenbanken dann überhaupt verkleinern? Dann lasse sie doch in der Größe unangetastet und benutze statt dessen den Compact-Schalter -b (kleines(!) b) dieser läßt die Größe unangetastet aber führt trotzdem die Wartung durch, indem z.B. der White-Space zusammengefaßt wird und doppelte Unread- und Ordner-Aktionen reduziert werden. In keinem Fall sollte man das komplett abschalten. Wenn man es täglich (nachts) laufen läßt geht das auch ohne große Performance-Verluste durch.


    Wenn du vom "schlechten Windows" sprich NTFS überzeugt bist - nimm DB2 als Backend, ich verspreche dir keine Performance-Verbesserung - aber dein Argument der Fragmentierung würde dann nicht mehr ziehen (wenn die Datenbank auf einem anderen System liegt) Aber ich behaupte, es wird keine signifikante Änderung erkennbar werden.


    <B>Tipp:</B>


    Um euer Performance-Problem auszuloten sollte man sich auf den beteiligten Systemen mal mit ein paar Hilfsmitteln die I/O etwas genauer anschauen. Ein Windows-Defrag mag ja auf einem Laptop oder PC was bringen, ich vermute euer Problem allerdings eher woanders, selbst wenn ein Defrag nach dem Streichholz-Zieh-Prinzip bei euch temporär Besserung bringt so denke ich nicht, daß es die eigentliche Ursache darstellt.


    <i>Früher ... da gab es mal Computersysteme mit einer einzigen rotierenden Magnetscheibe.</i>

  • So habe ich das noch nie gesehen... und mir überhaupt noch nicht Gedanken in diese Richtung gemacht. Wir haben nur immer von unser Server-Gruppe an den Kopf geschmissen gekriegt, dass die Defragmentierung an der schlechten Performance Schuld ist. Hinterfragt hatte ich das bisher noch nicht. Naja, selbst schuld. Hm, werde da wohl nochmal mit PerfMon rangehen und mir mal dokumentieren, was die Defragmentierung dann effektiv bringt. Schönen Dank so weit schon einmal.