jfreund wrote:sogo wrote:XFS hat einige nette Features, aber bei einem Dateisystem sollte man so konservativ wie moeglich sein. Ein paar % Performance sind es nicht wert...
Das würde ich so nicht stehen lassen wollen. Klar, wenn Du völlig überdimensionierte Hardware hast, kommt es nicht drauf an. Für einen DB-Server unter Last sind aber XFS und JFS deutlich besser geeignet als ext2 oder ext3 (Reiser wurde bei mir auch zum Un-Dateisystem erklärt), insbesondere, wenn es um etwas größere Dateisysteme (z. B. Plattenverbünde in einem SAN) geht. Ein solches System verfügt aber in der Regel auch über entsprechende Absicherungen (batteriegepufferter RAID-Controller Cache, USV), so dass die intensivere RAM-Nutzung nicht zum Problem werden kann.
Datenbanken laufen entweder auf raw devices oder via O_DIRECT. Das Dateisystem ist dabei bei der Performance quasi unerheblich.
jfreund wrote:
sogo wrote:Wenn Du Dir das Design von XFS anschaust geht es nicht kaputt, aber die Dateien gehen kaputt (google mal ein wenig herum, da sind einige Reproducer vorhanden).
Die Schwächen betrafen vor allem ältere Versionen. Das verschweigt auch das von SGI geführte Changelog nicht.
Es ist das Design, dies kann auch nicht behoben werden. Wenn Daten geschrieben werden, kommen diese erstmal in den Buffer. Wenn Strom weg ist sind die Daten weg, daran kann kein Dateisystem der Welt etwas aendern (auch wenn es die SGI Entwickler versucht haben ;-) )
Die Aufgabe des Dateisystems ist es sicher zu stellen dass die Daten konsistent sind.
ext3 kann (und macht defaultmaessig) Block journaling, das heisst dass die eigentlichen Daten, die geschrieben werden in dem Journal markiert werden. XFS macht nur Metadata journaling, dass heisst, dass von einer Operation open(),seek(),write() usw. nur markiert wird, dass *inode* X veraendert wurde. Welche Bloecke da letzendlich geschrieben wurden ist nicht nachvollziehbar. Wenn waerend des Schreibens von einem Block der Storage weg ist oder der Kernel crashed oder aehnliches, weiss man nur noch welche Dateien betroffen sind, aber die Dateikonsistenz ist nicht gesichert.
Bedenke, dass XFS von SGI kommt und fuer Performance entwickelt wurde.
Block journaling im Gegensatz schreibt auf, welche Bloecke gerade geschrieben werden. Das ist natuerlich aufwendiger, aber danach weiss man, dass die Konsistenz der Daten auch gesichert wurde.
ZFS macht uebrigens einige interessante Sachen, um Block Journaling zu beschleunigen (oder zu verlagsamen ->
http://www.opensolaris.org/jive/thread. ... 3115&93115 8-[ ), aber wird auf absehbare Zeit nicht performant (FUSE only) Linux sein...
jfreund wrote:
Ext2/3 hat IMHO durchaus seine Macken, zumal einige Distributionen nicht gerade restriktiv bei den Default-Einstellungen sind (z. B. Journal Mode). Doch selbst mit diesen kommt es auch ohne sichtbaren Grund (Stromausfall etc.) immer mal wieder vor, dass sich mein ext2 hier zu Hause (große Datenaustausch-Partition) für korrupt hält. Es ließ sich bisher nur immer wieder reparieren. Ein XFS habe ich bisher erst einmal verloren, bei einem Plattencrash. Auf der Platte befanden sich auch noch einige ext3-Partitionen. Die Images der ext3-Partitionen ließen sich recovern, aber das Image der XFS-Partition leider nicht mehr. Daraus habe ich für mich abgeleitet, dass XFS ziemlich robust ist - aber wenn es dann doch mal kaputt gekriegt wurde, dann richtig. Liegt ja auch ein wenig am Design des File Systems, dass - wenn die "richtigen" Blöcke (am besten die mit den Allocation Group Zuordnungen) zerstört wurden - sich auch Teilbereiche nicht wieder herstellen lassen.
Consumer Hardware ist broken by Design, da es billig und schnell sein muss. Wenn die el-cheapo IDE Platte meldet, dass der Block schon geschrieben wurde, waerend noch geschrieben wird (damit Sie bei Benchmarks gut aussieht), helfen kein Dateisystem. Software kann keine Hardware fixen.
Was Du beschreibst ist doch normal, das Dateisystem meldet Dir dass es Inkonsistenzen gefunden hat und diese beheben moechte und fsck behebt das.
Wichtig ist, dass dies *immer* der Fall ist und dass Du sicher sein kannst dass Daten nicht halb geschrieben wurden...
-- so ' traue keinem Filesystem' gos