RSS Feed

Linux-vserver, hit the barrier, reiserfs i jak to naprawić

Sierpień 10, 2012 by 0verlord

Linux-vserver zanim został uznany za przestarzały i zastąpiony containerami lxc był całkiem sensownym odpowiednikiem BSDowych jaili.
W ostatnich wersjach z loopbackiem jest już całkiem używalny i pozwala na sensowną separację i zarządzanie zasobami dla rozmaitych usług.

Tego posta piszę bardziej jako przypominajkę dla każdego, kto trafi na problem z filesystemem wewnątrz guesta, który objawia się losowymi problemami z dostępem, znikającymi plikami i urządzeniami i ogólnymi randomami w środku vservera.

U mnie problemem okazała się interakcja reiserfsa i vservera. Kilka razy na dobę odlatywały różne części różnych guestów i ogólnie działy się złe rzeczy.

Przyczyny i rozwiązania należy szukać na hoście. Dmesg najczęściej w takich przypadkach pokazywał, że plik, który akurat zniknął na gueście, jak to malowniczo określił mój kolega: „hitnął w barierkę”. Kawałek loga może wyglądać np. tak:

[2053443.951267] vxW: [?ps?,12778:#40052|40052|40052] did lookup hidden devpts:ffff88010d052600[#0,7] ?/dev/pts/4?.
[2053445.370697] vxW: [?ps?,12801:#40052|40052|40052] did lookup hidden devpts:ffff88010d050980[#0,5] ?/dev/pts/2?.
[2053445.370706] vxW: [?ps?,12801:#40052|40052|40052] did lookup hidden devpts:ffff88010d050980[#0,5] ?/dev/pts/2?.
[2053445.371055] vxW: [?ps?,12801:#40052|40052|40052] did lookup hidden devpts:ffff88010d052600[#0,7] ?/dev/pts/4?.
[2053445.371062] vxW: [?ps?,12801:#40052|40052|40052] did lookup hidden devpts:ffff88010d052600[#0,7] ?/dev/pts/4?.

albo tak:

808950.409850] vxW: [?ruby?,25311:#40052|40052|40052] did hit the barrier.
[808950.409856] vxW: [?ruby?,25311:#40052|40052|40052] did lookup hidden md5:ffff88023dd97d90[#0,12536220] ?/usr/local/rvm/gems/ruby-1.9.3-p194/gems/mixlib-authentication-1.1.4/lib/mixlib/authentication?.
[808950.410268] vxW: [?ruby?,25311:#40052|40052|40052] did hit the barrier.
[808950.410271] vxW: [?ruby?,25311:#40052|40052|40052] did lookup hidden md5:ffff88023dd97d90[#0,12536220] ?/usr/local/rvm/gems/ruby-1.9.3-p194/gems/mixlib-authentication-1.1.4/lib/mixlib/authentication?.
[808962.531726] vxW: [?ruby?,25807:#40052|40052|40052] did hit the barrier.
[808962.531731] vxW: [?ruby?,25807:#40052|40052|40052] did lookup hidden md5:ffff88023dd97d90[#0,12536220] ?/usr/local/rvm/gems/ruby-1.9.3-p194/gems/mixlib-authentication-1.1.4/lib/mixlib/authentication?.
[808962.532145] vxW: [?ruby?,25807:#40052|40052|40052] did hit the barrier.
[808962.532148] vxW: [?ruby?,25807:#40052|40052|40052] did lookup hidden md5:ffff88023dd97d90[#0,12536220] ?/usr/local/rvm/gems/ruby-1.9.3-p194/gems/mixlib-authentication-1.1.4/lib/mixlib/authentication?.

W tym drugim przypadku kilka gemów przestało działać, wysadzając z ten sposób jedną z aplikacji railsowych. Poziom randomów powodował, że ilość hitów w google z błędami często spadała poniżej 1 (słownie: jednego) wyniku.

Jak się okazało, jeżeli ma się reiserfsa, należy partycję, na której znajdują się fizycznie guesty zamontować z parametrem user_xattr. Tak to wygląda w moim fstabie:

/dev/md5 /home reiserfs rw,user_xattr 0 0

Dodajemy parametr w fstabie, wykonujemy mroczne zaklęcie:

mount -o remount,rw,user_xattr /home

(jeżeli nie pomoże, to rebootujemy hosta) i cieszymy się światem bez barrier ;-). A jak już nas spotka hit w barierę, to wykonujemy kolejne polecenie, które usuwa barierę.

setattr -R --~barrier katalog/na/mainie

A ogólnie,bariera to taki mechanizm niepozwalający na ucieczkę z guesta do innych zasobów. Można o tym dokładniej poczytać tu.


Brak komentarzy »

No comments yet.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

sześćdziesiąt dziewięć − = pięćdziesiąt dziewięć