Portál AbcLinuxu, 25. dubna 2024 02:55

Moderní souborové systémy - ReiserFS

11. 12. 2002 | Petr Novický
Články - Moderní souborové systémy - ReiserFS  

Popis ReiserFS, návod na zprovoznění a tipy pro provoz.

Úvod a motivace

V dnešním díle seriálu o souborových systémech se budeme bavit o historicky prvním linuxovém souborovém systému, který podporoval žurnálování. Jistě jste jméno ReiserFS už někdy slyšeli a v tomto díle se o něm dozvíte něco blíže. Hlavní osoba, která za tímto projektem stojí, je Hans Reiser, po kterém byl filesystém pojmenován. Ovšem vyvíjelo ho s ním samozřejmě ještě spousta dalších spolupracovníků.

Teď byste možná rádi věděli, proč ReiserFS používat. Má spoustu vlastností, které ostatní filesystémy neobsahují. Jak jsem již řekl, jedná se o žurnálovací souborový systém, tudíž jednou z výhod, které poskytuje, je zajištění konzistence dat při výpadku a také zrychlení obnovení systému oproti fsck.

ReiserFS je založen na rychlém balancovaném stromu. Je tak zrychlena práce např. s velkým množstvím položek v adresáři. Už není žádným problémem, aby adresář obsahoval třeba 100 000 souborů, ReiserFS s takto obsáhlým adresářem pracuje bez problémů.

Třetí a nejdůležitější vlastností je jeho schopnost pracovat efektivně s místem na diskovém oddílu. ReiserFS neukládá data do bloků pevných velikostí. Pokud chceme uložit několik souborů velkých například 100B, uloží jich ReiserFS filesystém několik do jednoho bloku. Použitím tohoto souborového systému tedy šetříme nezanedbatelnou měrou prostor na našem záznamovém médiu. Stejně tak jsou do jednoho bloku ukládány konce souborů, které už nezabírají celý blok. Na druhou stranu tím však dochazí ke snížení výkonnosti filesystému, kvůli vyšší míře externí fragmentace.

Dalším problémem je přidání dalších dat na konec souboru. V tomto případě je na první pohled zřejmé, že se jedná o složitější problém, než např. u Ext2, kde přidaní několika bytů je triviální záležitostí. Jednoduše se použije nevyužité místo v rámci bloku, který používá soubor jen z části. Ovšem u Reiserfs musí dojít k přesouvání dat do jiných bloků, aby se tam přidávaná data vešla.

Uchovávání malých souborů se hodí hlavně v případě databází. ReiserFS byl navržen, aby umožnoval ukládat malé záznamy na disku, tudíž aby nebylo nutné používat nějaké způsoby shromažďování dat do větších souborů. Tento přístup by měl nejen zvýšit výkon, ale také snížit dobu vyvíjení aplikací tím, že programátoři nemusí vymýšlet způsoby, jak spojit několik malých bloků dat do jednoho velkého. Mohou je jednoduše na disk ukládat každý zvlášť.

Instalace

Jako první věc, kterou musíme provést, pokud chceme používat ReiserFS filesystem, je opět kompilace kernelu, který tento filesystém podporuje. Stačí povolit volbu CONFIG_REISERFS_FS. Pokud používáte make menuconfig nebo make xconfig, najdete ji v menu Filesystems, položka Reiserfs support. Podpora ReiserFS se dá zkompilovat přímo do kernelu nebo jako modul. Pokud budeme používat Reiserfs na kořenový svazek, je nutné zakompilovat podporu Reiserfs přímo do kernelu.

Pro vytvoření nového filesystému poté slouží příkaz:

mkreiserfs /dev/hdXX,

kde /dev/hdXX je zařízení, kde chcete nový filesystém vytvořit. Poté již můžeme bez problémů nový diskový oddíl připojit. Nevýhodou oproti ext3 je bohužel nemožnost přetransformovat filesystém z klasického ext2 na reiserfs bez ztráty dat.

Dále je nutné přidat záznam do konfiguračního souboru /etc/fstab, tento záznam může vypadat následovně:

/dev/hdc1 /home reiserfs defaults 0 0

Položka /home je místo, kam chcete diskový oddíl připojit, tudíž si ho samozřejmě můžete změnit podle potřeby.

Parametry zrychlující práci filesystému

Jak jsem již uvedl, ReiserFS má i některé své nedostatky (práce s konci souborů), které výkon snižují. Tyto nedostatky se však dají částečně napravit pomocí správných nastavení při připojování oddílu. Pomocí volby noatime zrušíme záznamy filesystému o posledním přístupu ke všem položkám filesystému. Další volbou, která zrychlí práci s filesystémy je notail. Tím zrušíme ukládání konců souborů do jednoho bloku. Ztratíme tím sice nějaké místo na disku, ale dojde k zrychlení práce filesystému. Tedy např. kořenový filesystém znovu přípojíme se se správnými parametry pomocí příkazu:

mount / -o remount, notail

Opravený záznam v souboru /etc/fstab je následující:

/dev/hdc1 /home reiserfs noatime,notail 0 0

Změna velikosti filesystému

Užitečnou vlastností ReiserFS filesystému je možnost změny jeho velikosti. Příkaz resize_reiserfs slouží právě ke změně velikosti diskového oddílu. Ke zvýšení velikosti ho dokonce nemusíme ani odpojovat. Pokud souborový systém zvětšujeme, je nutné, aby bylo samozřejmě na disku volné místo (např. zrušením následujícího oddílu pomocí příkazu cfdisk). Když chceme zmenšit filesystém, musíme nejprve použít resize_reiserfs a poté teprve cfdisk (pozor aby jste ho nesnižovali na menší než velikost, kterou data na něm zabírají!).

Například kdybychom chtěli zmenšit velikost filesystému na diskovém oddílu /dev/hda2 připojeném na adresář /mnt, postupovali bychom následovně:

umount /mnt
resize_reiserfs -s -1G /dev/hda2
mount /dev/hda2 /mnt

Bližší informace získáte z manuálové stránky resize_reiserfs(8).

Shrnutí

K dalším výhodám souborového systému ReiserFS patří podpora žurnálovacího souboru na odděleném diskovém oddílu a dynamické alokování inodů. Jak jsem se již zmínil také možnost online zvětšit filesystém. Zajímavá je podpora špatných bloků a pomocí externího patche i možnost quot.

Související články

Moderní souborové systémy - ext3
Moderní souborové systémy - 1. část
Jaderné noviny 192

Odkazy a zdroje

http://www.reiserfs.org
Advanced filesystem implementor's guide
Advanced filesystem implementor's guide 2
http://root.cz/clanek.php4?id=505

Seriál Moderní souborové systémy (dílů: 5)

První díl: Moderní souborové systémy - 1. část, poslední díl: Moderní souborové systémy - JFS.
Předchozí díl: Moderní souborové systémy - ext3
Následující díl: Moderní souborové systémy - XFS

Další články z této rubriky

Úvod do Dockeru (1)
Paralelizace běžných činností v konzoli pomocí GNU Parallel
Unixové nástroje – 26 (triky pro práci v Bashi)
Unixové nástroje – 25 ((s,c)fdisk, gdisk, parted a findmnt)
Linux: systémové volání splice()

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.