Oświecenie



Niedawno zmigrowałem część filesystemów na swojej workstacji z reiserfs3 na ext3. Dzisiaj patrząc na ładowanie jednego z maildirów i słuchając pracy dysków doznałem oświecenia.

Chodzi o problem z szybkością, a raczej jej brakiem. Załadowanie maildira z siedmioma tysiącami maili na reiserfs3 trwało niemal pół minuty. Sprawdzanie bilioteki, wykonywane przez Quodlibet na starcie trwa ponad minutę, choć u pimana, głównego dewelopera, zajmuje to tylko parę sekund i to przy większej ilości plików. W marcu myślałem, że to dlatego, że glibc sabotuje reiserfs, wymuszając 32-krotnie większy readahed. Ale to nie dlatego.

Co takiego usłyszałem dzisiaj w dysku? W czasie ładowania maildira z reisera słychać było pracę dysków. Z ext3 ładuje się o wiele szybciej i praktycznie niesłyszalnie. Czyli nie ma seeków (nb bardzo kosztownych). I wtedy mnie olśniło -- xattrs!

W xattrs, czyli rozszerzonych atrybutach Linux przechowuje informacje o ACL (Access Control Lists). Ponieważ ACLe mają większy priorytet niż standardowe uprawnienia rwx, każdy dostęp do pliku wymaga sprawdzenia ACLi. Różnica w prędkości dostępu wynika z różnych sposóbów implementach xattrs przez reiserfs i ext3.

W ext3 xattrs przehowywane są w inodzie, dostęp do nich jest praktycznie darmowy, bo i-węzeł i tak trzeba odczytać. Natomiast z reiserfsem jest gorzej. Już dawno Hans wypiął się na wersję trzecią i kazał swoim kumplom pracować nad czwórką, a reiserfs3 uznał za przestarzałe. Obsługę m. in. xattrs dodał już Jeff Mahoney, pracownik Novella. I dodał w ten sposób, że w katalogu głównym filesystemu tworzony jest ukryty katalog .reiserfs_priv*. Przechowywane w nim pliki zawierają rozszerzone atrybuty. Dostęp do dowolnego pliku wymaga więc sprawdzenia jego obecności w dwóch katalogach (właściwy i z xattrs). Katalogi zazwyczaj znajdują się w różnych miejscach dysku, ergo, głowice latają tam i z powrotem, wydajność spada, dysk jest słyszalny.

* że faktycznie tam jest łatwo sprawdzić:
% cd /.nie_ma_takiego_katalogu
cd: no such file or directory: /.nie_ma_takiego_katalogu

% cd /.reiserfs_priv
cd: permission denied: /.reiserfs_priv


Archived comments:

smk 2006-10-20 21:31:10

Używasz do czegoś xattrs?

zdzichu 2006-10-20 21:33:26

Tak, do przechowywania ACLi różnicujących dostęp do plików wszystkim trzem użytkownikom mojej workstacji.
Dodatkowo, w obrębie ~zdzichu Beagle trzyma w xattrs czas ostatniego skanowania pliku i jego uuid.
Jakbym nie używał, to bym wyłączył. :)

wojtekka 2006-10-20 22:22:44

Też bym chętnie w końcu przeszedł na ext3, ale przeraża mnie e2fsck. Na domowej workstacji po ,,unclean shutdown'' montowanie reiserfsa trwa parę chwil, a w pracy w takiej samej sytuacji z ext3 muszę kilka minut, aż e2fsck łaskawie pozwoli mi skorzystać z komputera :-/

japhy 2006-10-21 13:36:49

wojtekka: to ja muszę mieć jakieś inne ext3 -- za ext2 faktycznie to tak wyglądało, ext3 u mnie odtwarza journal i montuje w parę sekund. E2fsck odpala się co ileś-tam montowań (bodaj dwadzieścia parę) tak na wsjakij pożarnyj, ale to można wyłączyć bodaj tune2fs (chociaż osobiście nie wyłączam -- na tyle rzadko bootuję workstację, że mi nie robi).

smk 2006-10-21 13:42:36

Jednak gdy ma się kilka tysięcy plików w jednym katalogu, to reiserfs zdecydowanie daje rady. :-)

zdzichu 2006-10-21 13:43:47

Smoku: jak się zakłada ext3 to się daje "-O dir_index" i nie ma różnicy.

smk 2006-10-21 13:47:53

O, nie wiedziałem, że ext3 ma katalogi b-tree. Dzięki za info. :-)

Azrael Nightwalker 2006-10-21 15:36:59

Mnie akurat reiserfs denerwuje przy fsck bo skanuje się dłużej niż ext3.

h. 2006-10-22 23:32:06

A co z xfs?

h. 2006-10-23 12:51:27

Apropos -O dir_index (http://www.redhat.com/archives/redhat-list/2005-July/msg00221.html) ktos to moze potwierdzic?

Hoppke 2006-10-24 08:22:56

@h.: nie potwierdzam. Z drugiej strony ten mail z listy nie należy do współczesnych, co nie?

Aha, co do XFS... nie wiem jak obecnie, ale nie tak dawno temu miał np. taką przykrą przypadłość, że po "journal recovery" wypełniał niektóre pliki na dysku zerami. I to niekoniecznie te pliki, które były ostatnio zapisywane. I developerzy nie wiedzieli "dlaczego" (u mnie z reguły zerował jakieś ukryte pliki z $HOME, jak np. historia shella).

wojtekka 2006-10-24 17:44:25

japhy: To najwyraźniej z moją workstacją jest coś nie tak. Przy najbliższej okazji sprawdzę, czy czegoś nie zepsułem w systemie.

smk 2006-10-24 19:48:08

Hoppke: Zeruje (a właściwie gubi dane o alokacjach, więc często też zaśmieca) pliki otwarte w czasie crash'u i nie sync'nięte na dysk. Dlatego najczęściej tracone są configi, historie itp.

m--s 2006-11-27 11:40:16

Ja nie wiem, czy to mit, ale z reiserfs łatwiej odzyskać pliki w sytuacjach krytycznych:

http://www.antrix.net/journal/techtalk/reiserfs_data_recovery_howto.comments
http://www.martian.org/marty/archives/000888.html

... podczas gdy na ext3 jedyną dostępną strategią o jakiej słyszałem jest kombinowanie dd / dd_rescue z grepem.

Jak dla mnie, to system może być wolniejszy, jeśli jest przy tym bezpieczniejszy. Oczywiście mogę się mylić, to są w końcu stare linki... czy ktoś coś wie?

Comments


Comments powered by Disqus