Fájlrendszer, NAS, storage

Linux: XFS a 2.5-ben?

Az XFS egy GPL licenc alatt kiadott nagyteljesítményű naplózó filerendszer, amelyet az SGI fejleszt 1994 óta. Az 1.0-ás verzió a tavalyi évben május 1-én jelent meg a Linux operációs rendszerhez. A jelenlegi verzió az 1.1-es. Christoph Hellwig készített egy patchset-et, amelynek nem titkolt célja az, hogy az XFS bekerüljön a 2.5-ös fejlesztői kernelbe.Egy nagyon hosszú thread alakult ki az LKML-en, amikor a 'khromy' névre hallgató tag feltette az alábbi kérdést:

"Mi újság az XFS-sel a linux-2.5-ben? Láttam néhány patchet, amelyet a listára küldtek, de nem láttam választ linustól. Mire van szükség még ahhoz, hogy végül be legyen olvasztva?"

Szokásos lemez, hogy Linus miért dobja el a hjozzá küldött patcheket, tulajdonképpen kevés kell ahhoz hogy az XFS be legyen olvasztva a 2.5-be.

Alan Cox: "A probléma az az XFS-sel, hogy a kód nagyon veszélyes, más dolgot "törhet meg" a kernelben, és ez nem biztos, hogy jó azoknak, akik nem akarják a kísérleti XFS kódot használni. Lassan fejlődik".

Eric Sandeen, aki tagja az SGI XFS fejlesztői csapatnak rámutatott, hogy melyek azok az "invazív" elemek az XFS-ben amik gondot okozhatnak: 1 új processz flag, 1 új CTL_VM név, 1 új CTL_FS név és 1 exportált szimbólum. Ahogy mondta, az XFS támogatás megjelenése a 2.5 mainline kernelben egészen valószínű dolog lehet.

Debian: JFS, XFS boot-floppyk és net install CD

Azoknak a felhasználóknak akik szeretnék a Debian rendszerüket JFS, vagy XFS filerendszerre telepíteni (from scratch) jó hírem van. Elérhető a Debianhoz módosított JFS bootfloppy-set, és módosított net install CD image. A JFS floppyk és CD image hasonló a régebb óta elérhető XFS bootfloppykhoz és CD imagehez.

A stuffokat megtalálod:

JFS floppyk és CD image, XFS floppyk és CD image

Naplózó filerendszerek teljesítmény-teszt eredményei

Ahogy ígértem, itt vannak. Megszülettek a naplózó filerendszerek teljesítmény-tesztjeinek eredményei. A tesztekben a nagyobb naplózó FS-ek vettek részt (reiserfs, ext3, jfs) és mellé viszonyítási alapnak bekerült a jó öreg ext2 is. Azért ezek a journaling fs-ek kerültek bele a tesztbe, mert ezek szereplenek (többnyire) a mainline kernelben. Ha az XFS is belekerül, megismételjük a tesztet ;-)

A teszt eredményekből messzemenő következtetést nem lehet levonni. Nem tudni melyik készítő cég szponzorálja Dankot ;-) Mindenesetre a tesztek végén a ReiserFS került ki győztesen. Összesen 4-szer végzett az élen, őt követte a JFS és a végére maradt az Ext3, bár ez nem egyértelmű de azért az Ext3 kétszer akkora file létrehozási ideje elég durva volt. Viszont a JFS se egy kapkodó idegbeteg. Az Ext2-t nem érdemes összehasonlítani velük, mert az nem journaling fs.

A mérésekhez a http://h2np.net/tools/fs-bench.tar.gz eszközt használtuk. A mérések egy 2GB-os partíción folytak.

Lássuk, hogy mért Danko:

"A tesztgep: Asus A7V133A alaplap, 640Megabyte memoria (SD, 133MHz-n), Thunderbird 900@1000 CPU, Alaplapi ATA100 vezerlore csatlakoztatott Quantum LCT 30gigabyte-os vincseszter, billentyuzet :)

A tesztet single user modban hajtottam vegre, a teszparticio 2000megabyte-os volt.

A teszt kozbeni vincseszterhangrol "sajnos" nem tudok semmit, mert Dream Theater-t hallgattam. Persze audioCD-rol, mert az mp3 hatraltatt volna a tesztet. Meg kulonbenis, single user mode. "



Részletes eredményekért klikk a tovább gombra.Az eredményeket megnézheted HTML táblázat formájában itt, de készül a grafikonizált verziója is.

Lássuk az eredményeket:

Create files:

1. ReiserFS

2. Ext2

3. JFS

4. Ext3

Tar all, Change owner:

1. ReiserFS

2. Ext2

3. JFS

4. Ext3

Random access:

1. Ext3

2. Ext2

3. ReiserFS

4. JFS

Change mode:

1. Ext2

2. Ext3

3. JFS

4. ReiserFS

Random delete and create:

1. ReiserFS

2. Ext2

3. Ext3

4. JFS

Change mode again:

1. Ext2

2. Ext3

3. JFS

4. ReiserFS

Remove all files and directories:

1. ReiserFS

2. Ext3

3. Ext2

4. JFS

Igaz történet: hogyan váltottam ReiserFS-ről JFS-re

Több mint egy éve használok naplózó filerendszert az otthoni munkaállomásomon. Egy évvel ezelőtt amikor eldöntöttem, hogy lecserélem az ext2 filerendszeremet, és valami journaling FS után nézek, igazából nem sok választásom volt. Akkoriban az elérhető naplózó FS-ek az SGI-féle XFS, a SuSE által szponzorált ReiserFS, és a beta állapotú IBM-es JFS volt. Ezek közül egyetlen volt megtalálható az akkori kernelben, a többit bele kellett patchelni. Ez az egy a ReiserFS volt. Így nekiálltam, lementettem a filerendszerem, készítettem egy ReiserFS filerendszert, és használtam egy éven keresztül minden probléma nélkül. Bátran ajánlhatom mindenkinek, mert egy gyors, helytakarékos, korszerű journaling FS kap az, aki arra szánja el magát, hogy ReiserFS-t használ. Pár nappal ezelőtt megjelent a 2.4.20-pre4 prepatch kernel. Ez a kernel már tartalmazza az IBM JFS támogatást. Egy hirtelen ötlettől vezérelve úgy döntöttem, hogy lecserélem a jól bevált ReiserFS-t JFS-re. Hogy miért? Mert a ReiserFS túl jól működött ;-). Rendszerint a fejlesztői dolgokat használom, na nem azért mert én ``poweruser" vagyok, hanem mert szeretem kipróbálni az új dolgokat, szeretem végigszenvedni a fejlesztés lépéseit, esetenként bugreportolni, stb. Ebben az sem tántorít vissza, ha néha backupból vissza kell állítani a rendszerem. (Ilyenre az elmúlt 2-3 évben egyszer került sor, egy hibás 2.5-ös kernel IDE kód miatt.)



Szóval JFS. Miért is van szükség a JFS-re? Egyáltalán miért nem jó nekem a hagyományos ext2 filerendszer?



A legfőbb indok az, hogy a manapság kapható nagy kapacitású HDD-ket igazából nem lehet hatákonyan használni már ext2 filerendszerrel. Az ext2 filerendszer egyik szükségszerű velejárója az FSCK. Elég egy áramszünet, és a file system chechker már el is indul a gépünkön boot időben. Akinek nagy winchestere van az tudja, hogy egy 80GB-os HDD-n mennyi ideig fut az FSCK. Ez az idő a HDD-n levő adatok mennyiségétől függően több perc, egy jól megtömött filerendszer esetén akár több óra is lehet. Ezt elkerülendő, és más technikai okoból is kifejlesztettek ún. journaling, azaz naplózó filerendszereket. Ezek lényege röviden, mindenfajta technikai hókusz-pókusz nélkül az, hogy rendelkeznek egy ún. journaling-device-szal, egy naplófile-lal amelybe bejegyzésre kerülnek a filerendszeren történt változások. Ezek a bejegyzések rettentő gyorsan követik egymást. Egy esetleges rendszer osszeomlásnál a bootkor az FSCK-nak nem kell az egész filerendszert ellenőriznie, elegendő csak ellenőriznie a journal fileban levő legutolsó bejegyzések által mutatott fileokat. Így az FSCK ideje drasztikusan lecsökken. Ami azt jelenti, hogy egy 80GB-os filerendszeren egy 70%-os telítettségnél ReiserFS filerendszer RO-ra muntolva: a reiserfsck kb. 15-20 másodperc alatt végez. Gondoljuk el, hogy egy forgalmas weboldalnál mekkora kiesés lehet ext2 filerendszert alkalmazva, mondjuk egy 200-300GB-os lemezterületet ellenőrizni. Akár órákig is eltarthat. Ezt pedig az E-Business világában senki nem tudja bevállalni.



A JFS-ről csak jót lehet olvasni az IBM oldalnán (naná, ők fejlesztették ;-)). Lássuk mit tud: a JFS kimondottan nagy terhelésű fileszerverek, adatbázis szerverk filerendszerének készítették, tervezték, jelenleg az IBM enterprise kategóriájú szerverei használják. Az IBM open sourceszé tette. A JFS egy teljesen 64bites filerendszer. A minimális JFS partíció mérete 16MB. A maximális fileméretet tekintve 512 terrabyte-tól 4 petabyte-ig terjedhet. Azt hiszem a 160GB-os otthoni rendszeremnek ez bőven megfelel.



Ennyit az okoról, ha érdekel hogyan váltottam ReiserFS-ről JFS-re olvasd el JFS root boot HOWTO-t (egy cikkel feljebb). A teljesítménytesztek folynak, eredményekről később.

Linux: ext3, jobb ``dirty buffer'' kezelés

Stephen Tweedie - a szerzője és karbantartója az ext3 journaled filerendszernek - patcheket küldött a 2.4-es kernelbe való beillesztés céljából Marcelo Tosattinak. Ahogy megjegyezte: "ezek a patchek tartalmazzák a jelenlegi legnagyobb, legfrissebb változásokat az ext3 filerendszer kódban.". Az összes patch tesztelve lett az ext3 CVS tree-ben. (Stephen Tweedie eredetileg a 2.2-es kernelekhez írta az ext3 filerendszert. Csak később került portolásra a 2.4 kernelbe. A portolást Peter Braam, Andreas Dilger és Andrew Morton végezték, Stephen segítségével. Az ext3 filerendszer a 2.4.15 kernelben lett belolvasztva a 2.4 mainline kernelbe.)

Az első patch amely az ext3 filerendszer kódhoz készült, segít "robusztusabbá tenni a dump(8) vagy a tune2fs(8) munkálatokat a block eszközökkel ``live" filerendszeren." A második patch fixálja a "a race window in buffer refiling" hibát.

Stephen Tweedie levelei:From: Stephen Tweedie

To: Marcelo Tosatti, linux-kernel-mailing-list

Subject: [Patch 0/2] 2.4.20-pre4/ext3: ext3 dirty buffer management

Date: Fri, 23 Aug 2002 00:19:34 +0100

Hi Marcelo,

This patch set contains the biggest recent change to ext3: a change to the way it deals with other dirty buffers in the system, making it robust against things like dump(8) or tune2fs(8) playing with the block device on a live filesystem. This patch has been in ext3 CVS for some time now.

I'll follow up with the other smaller fixes and tweaks in the next batch.


From: Stephen Tweedie

To: Marcelo Tosatti, linux-kernel-mailing-list

Subject: [Patch 1/2] 2.4.20-pre4/ext3: Handle dirty buffers encountered unexpectedly.

Date: Fri, 23 Aug 2002 00:19:36 +0100

Ext3's internal debugging has always assumed that it was illegal for there to be parallel IO on a buffer-head which it is trying to modify. That's reasonable --- if there is an IO collision, we end up with IOs hitting disk out-of-order wrt the journal, so we lose recovery guarantees.

However, there are two cases where the test is a little over-zealous. If user space is performing inherently non-transactional writes (eg. tune2fs adding a label to a live filesystem and writing to the buffered device superblock location) then we can hit the ext3 assertion.

More seriously, since 2.4.11 the page cache can lock a buffer_head for read even if the bh is already under journal control. The tune2fs bug is very rare: there have been no reports of it in Bugzilla or ext3-users lists, and only one on 2.5 on linux-kernel. But now, a dump(8) on a live filesystem

can also give rise to the same condition, and in testing, dump + fs activity reproduces the assertion-failure VERY rapidly.

This patch changes the jbd get-write-access code to take the buffer_head lock before testing the uptodate and dirty state of a bh, and relaxes the handling of unexpectedly-dirty buffers to be a printk warning, not a fatal error. The lock will cure the dump(8) interaction, and the warning means that we will still spot out-of-order writes, while not taking the whole kernel down if we collide with a tune2fs(8).

The patch also removes a small potential hole in the recovery guarantees. It is not safe for a transaction to steal buffers from checkpoint mode until after that transaction has committed. Otherwise, a reboot at the wrong moment might

find the old copy of the buffer in the journal had been removed from the recovery set before the new copy was written.

[patch 1]

From: Stephen Tweedie

To: Marcelo Tosatti, linux-kernel-mailing-list

Subject: [Patch 2/2] 2.4.20-pre4/ext3: Fix "buffer_jdirty" assert failure.

Date: Fri, 23 Aug 2002 00:19:36 +0100

There was a race window in buffer refiling where we could temporarily expose the journal's internal BH_JBDDirect flag as BH_Dirty, which is visible to the rest of the VFS. That doesn't affect the journaling, because we hold journal_head locks while the buffer is in this transient state, but bdflush can see the buffer and write it out unexpectedly, causing ext3 to find the buffer in an unexpected state later.

The fix simply keeps the dirty bits clear during the internal buffer processing, restoring the state to the private BH_JBDDirect once refiling is complete.

Journaled File System (JFS) 1.0.21 kiadás

Megjelent az IBM naplózó filerendszerének legújabb 1.0.21-es verziója. A jfs-2.4-1.0.21.tar.gz és a jfsutils-1.0.21.tar.gz elérhető az IBM open source szoftver oldalán.

A project honlapja:

http://oss.software.ibm.com/jfs

Bejelentés:From: Steve Best

To: linux-kernel@vger.kernel.org

Subject: [ANNOUNCE] Journaled File System (JFS) release 1.0.21

Date: 12 Aug 2002 20:45:23 +0200

Release 1.0.21 of JFS was made available today.

Drop 59 on August 12, 2002 (jfs-2.4-1.0.21.tar.gz

and jfsutils-1.0.21.tar.gz) includes fixes to the file

system and utilities.

The new feature in this release is the capability to resize

the file system.

Utilities changes

- add external log support to xpeek

- fix fsck.jfs to update log device number in superblock after logredo with external log.

- fix typo in mkfs.jfs Emergency help. (Bas)

- do not build currently unused defrag, extendfs utilities

- eliminate uuid redefinition compiler warnings

- add logsuper functions to libfs

- fix printf format specifiers. (Christoph Hellwig)

- code cleanup (all)

- update JFS FSIM for EVMS - see http://sourceforge.net/projects/evms/

File System changes

- define sb_bread for kernels older than 2.4.18

- C99-style initializers (Christoph Hellwig)

- Add resize function to JFS

This is invoked by mount -oremount,resize=

See Documentation/filesystems/jfs.txt for more information.

- Remove d_delete calls from jfs_rmdir & jfs_unlink

- Dynamically allocate metapage structures

Use slab cache and pool of reserved structures to manage the metapage structures. This is set up similar to the mempool routines in the 2.5 kernel. Previously a fixed number of these structures were preallocated. This did not scale well.

- Rework JFS's inode locking

For more details about JFS, please see the patch instructions or changelog.jfs files.

Steve

JFS for Linux http://oss.software.ibm.com/jfs

Linux Enterprise Volume Managment System v1.0.0

Az Enterprise Volume Management System ( EVMS ) Project célja az, hogy kifejlesszen egy egyidejűleg flexibilis és bővíthető storage kezelő rendszert (természetesen linuxon, csak nem a Tivoli rendszer portja?). A rendszer tartalmazza a logikai kötetkezelést (LVM), amelynek köszönhetően könnyen bővíthetők és testreszabhatók a különböző szintű diszk tömbök (RAID1, RAID5, RAID0+1, stb.) Mindezt plug-in formában valósítja meg. Ennek legfőbb oka a későbbi bővíthetőség, amely a megjelenő új IBM szervereket támogatná elsősorban.Az eszköz létezik parancssori, szöveges Textmode-UI, és GUI felülettel is.

IBM: JFS 1.0.14 Linux -hoz

A JFS az IBM naplózó filerendszere, amelyet a nagyobb teljesítményű enterprise szervereire tervezett. Ott alkalmazzák ahol nagy rendelkezésre állásra van szükség. A filerendszer a naplózás miatt sokkal megbizhatóbb lesz, egy esetleges váratlan szerverleállás során egy ún. naplófileból, tranzakciós logból, képes a filerendszert visszaállítani.

Ezzel sok időt lehet megtakarítani (fsck), és nem utolsósorban sokkal biztonságosabb rendszerhez jutunk. A naplózó filerendszerek között nem annyira ismert, elsősorban a reiserFS, és az ext3 a legnépszerűbb, de kipróbálni mindenesetre érdemes.A jfs-2.4-1.0.14-patch.tar.gz letölthető innen.

Upgrade Ext3 filerendszerre

A naplózó filerendszereké a jövő szerintem. Többször írtam már róluk itt, a cikkeket megtalálhatod itt.

A nagyobb disztribúciók mindegyike kínál valamilyen megoldást a journalig FS -ekre, a SuSE a ReiserFS -t, a RedHat pedig az Ext3 -at támogatja telepítéskor. Ezek jól jönnek egy friss rendszer telepítésekor, de vajon mit lehet tenni egy meglévő, régi, jól bevált rendszer esetében? Lehet azt upgradelni? Vagy újra kell telepíteni, az egész rendszert?Erre a kérdésre válaszol az Ext3 filerendszer oldaláról az alábbi cikk. A cikket James Green írta, a linuxnewbie.net -en jelent meg. A cikk azt taglalja, hogy hogyan lehet egy meglévő Ext2 filerendszert gyorsan, fájdalommentesen Etx3 rendszerre varázsolni. Mint tudjuk az Ext3 filerendszer alapjában véve az Ext2 -re épül, csak journaling funkcióval van kibővítve. Ebből adódóan nagyfokú kompatibilitás jellemzi az Ext2 felé. Az Ext2 -ből egyszerű konvertálással lehet Ext3 készíteni, és ami a meglepő (vagy nem is annyira meglepő?) ez visszafelé is működik. A cikket elolvashatod itt.