Wsparcie dla OpenVZ w PLD

Łukasz Chrustek lukasz at chrustek.net
Sun Jan 30 13:15:44 CET 2011


Witam,

> On Sunday 30 of January 2011, Łukasz Chrustek wrote:
>> Witam,
>> 
>> > On Sunday 30 of January 2011, Łukasz Chrustek wrote:
>> >> Witam,
>> >> 
>> >> > Czyli co konkretnie z tym procem? Bez konkretów to się nic zmienić nie
>> >> > da
>> >> 
>> >> W przypadku VSERVER proc nie jest montowany, w przypadku OPENVZ proc
>> >> jest potrzebny. Chodzi dokładnie o ten kawałek w rc.sysinit (jedyna
>> >> różnica między OPENVZ a VSERVER):
>> >> 
>> >> if is_yes "$OPENVZ"; then
>> >> 
>> >>         mount -n -o gid=17 -t proc /proc /proc
>> >> 
>> >> fi
>> > 
>> > Standardowe montowanie proca takie jak jest na zwykłym systemie nie
>> > wystarczy?
>> 
>> Wg mnie wystarczy, tylko ponższa linijka wyłącza nie tylko montowanie
>> proca, a w zasadzie tylko ten proc jest potrzebny dla openvz.

> Jeśli reszta nie przeszkadza to ją lepiej zostawić niż jeszcze bardziej
> rozjeźdzać "ścieżki" pomiędzy hostem i guestem. Im więcej wspólnego tym
> lepiej.

>> >> if ! is_yes "$VSERVER" && ! is_yes "$OPENVZ" ; then
>> > 
>> > To jest błędne. Na normalnym systemie też proc nie zamontowało by.
>> > Wystarczy zostawić if ! is_yes "$VSERVER" tak jak było IMO.
>> 
>> I właśnie tutaj albo czegoś nie wiem, albo nie rozumiem, ale wg mnie
>> się montuje.

> Jak dasz tam echo "odpalam się" czy set -x i na tej podstawie stwierdzisz, że
> montuje w dokładnie tym miejscu to ok bo bóg wie co i w którym momencie
> jeszcze mogło proca zamontować.

To fakt, przy czym w kontenerze nie znalazłem możliwości wyplucia
komunikatów z inita (tak jak je widać przy uruchamianiu vserver). Nie
mniej jednak to i tak raczej nie będzie miało większego znaczenia w
przypadku, gdyby VSERVER 'zmergować' z OPENVZ. Jeśli dobrze
zrozumiałem, to chodziło by Ci (i gotarowi w innym wątku) mniej więcej
o coś takiego:

w functions:

if [ -z "$VSERVER" -o "$VSERVER" = "detect" ]; then
        {
                while read _f _ctx; do
                        [ "$_f" = "VxID:" -o "$_f" = "s_context:" ] && break
                done </proc/self/status
        } 2>/dev/null
        if [ -z "$_ctx" -o "$_ctx" = "0" ]; then
                VSERVER=no
+                CONTAINER=no
        else
                VSERVER=yes
+                CONTAINER=yes
        fi
        unset _f _ctx
fi
if [ -z "$OPENVZ" -o "$OPENVZ" = "detect" ]; then
        if [ -f /proc/vz/version ]; then
                OPENVZ=no
+                CONTAINER=no
        else
                OPENVZ=`cat /proc/self/status | awk '$1 == "envID:" {if ($2 != 0) {print("yes")} else {print("no")}}'`
                if [ "$OPENVZ" = "" ]; then
                        OPENVZ=no
+                        CONTAINER=no
                fi
        fi
fi

później wszędzie wywalamy te ify z OPENVZ i VSERVEREM (zastępując je
CONTAINER), gdzie jest wspólnie i zostawiamy (w zasadzie jeden if) z
OPENVZ, gdzie jest różnie od VSERVER ?

-- 
Pozdrawiam,
 Łukasz Chrustek



More information about the pld-devel-pl mailing list