RSS Feed

Posts Tagged ‘barrier’

  1. 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.