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