GNU Linux/Linux-VServer

Iš Wikibooks.

Linux-VServer yra atvirojo kodo sistema skirta Linux branduoliui. Naudojama kurti virtualius, serverius, veikiančius viename fiziniame kompiuteryje (serveryje).

Linux-VServer leidžia kurti virtualius privačius serverius (VPS), kurie veikia kaip normalūs Linux serveriai, tačiau jų gali būti daug. Visi virtualūs serveriai veikia vienoje sistemoje, tačiau galima įjungti arba išjungti atskiras paslaugas (ssh, mail, web, duomenų bazes) kiekvienam virtualiam serveriui taip pat, kaip ir administruojant realius serverius. Kiekvienas virtualus serveris turi savo atskirus vartotojų duomenų bazę ir administratorių. Tarpusavyje jie yra nepriklausomi ir negali turėti įtakos kitų virtualių serverių veikimui.

Linux branduolio diegimas[keisti]

Linux-VServer naudojimui reikalingas Linux branduolys palaikantis VServer, t.y. galintis izoliuoti atskirus virtualių serverių branduolius, kurie veiktų nepriklausomai vienas nuo kito.

Branduolio parinkimas[keisti]

Linux branduoliai su pataisymais tinkantys VServer nurodyti čia: http://linux-vserver.org/Welcome_to_Linux-VServer.org.

Branduolio versiją galima sužinoti terminalo lange įvedus:

uname -r

Naudojant Ubuntu 8.04, branduolio versija yra 2.6.24-16-generic, kuri nėra tinkama VServer naudojimui. Taigi kompiliuosime Linux branduolį Ubuntu sistemai. Iš lentelės pasirenkame branduolį.

Pirmiausia įsitikinam, kad visi branduolio atnaujinimui reikalingi paketai yra įdiegti:

apt-get install build-essential gcc make g++ libncurses5-dev ssh ncurses-base patch libc6-dev

Toliau sukuriame naują direktoriją ir pereiname į ją, kur bus reikalingas branduolys:

cd /usr/src/
mkdir kernel
cd kernel

Parsiunčiame Linux branduolį bei pataisų paketus:

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.19.tar.bz2
wget http://people.linux-vserver.org/~harry/patch-2.6.22.19-vs2.2.0.7-grsec2.1.11-20080317.diff

Išskleidžiame archyvą ir pereiname į sukurtą direktoriją:

tar xfjv linux-2.6.22.19.tar.bz2
cd linux-2.6.22.19.tar.bz2

Branduolio atnaujinimas[keisti]

Atnaujiname branduolio failus:

cat ../patch-2.6.22.19-vs2.2.0.7-grsec2.1.11-20080317.diff | patch -p1

Galime palikti tuos pačius nustatymus, kokie buvo mūsų pradinėje sistemoje, nukopijavę esamą failą:

cp /boot/vmlinuz-2.6.24-16-generic /usr/src/kernel/linux-2.6.22.19.tar.bz2

Sukuriame konfigūracinį failą pagal dabartinės sistemos konfigūravimo nustatymus. Jums lieps pasirinkti tik tuos nustatymus, kurių nebuvo anksčiau. Beveik visus nustatymus galite palikti pagal nutylėjimą (jei nepatyrę vartotojai), išskyrus šiuos:

  • Enable Legacy kernel API
  • Enable Proc Security
  • Enable Hard CPU Limits

Jie turėtų būti įjungti (pasirenkame Y). Kuriant naujus nustatymus naudotumėm make config

make oldconfig

Įvykdome dar vieną komandą, kuri atveria meniu pasirinkimo langą (galima nieko nekeisti):

make menuconfig

Branduolio kompiliavimas[keisti]

Kompiliuojame ir instaliuojame naują branduolį (komandos make vykdymas gali užtrukti 30-60 min.).:

make
make install
make modules_install

Sukuriame branduolio paleidimo failą:

mkinitramfs -o /boot/initrd.img-2.6.22.19-grsec2.1.11-vs2.2.0.7 2.6.22.19-grsec2.1.11-vs2.2.0.7

Branduolio paleidimo įrašai[keisti]

Paskutinis žingsnis - užtikrinti, kad branduolio paleidimo sąraše būtų įrašas, leidžiantis užkrauti naująjį branduolį. Reikia patikrinti ir paredaguoti /boot/grub/menu.lst failą:

vi /boot/grub/menu.lst

Ir prieš visus esančius įrašus įrašyti:

title           Ubuntu, 2.6.22.19-grsec2.1.11-vs2.2.0.7 (VServer)
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.22.19-grsec2.1.11-vs2.2.0.7 root=/dev/sda1 ro quiet splash
initrd          /boot/initrd.img-2.6.22.19-grsec2.1.11-vs2.2.0.7
savedefault
boot

Naudojamo branduolio patikrinimas[keisti]

Išsaugojam papildytą failą ir perkrauname sistemą su nauju branduoliu (shutdown -r now). Patikrinus užkrautą branduolį (uname -r) turime pamatyti:

2.6.22.19-grsec2.1.11-vs2.2.0.7

Perkrovus sistemą man atsirado baltas langas ir prie grafinės aplinkos nepavyko prieiti, bet per terminalo langą (Ctrl+Alt+F[1-12]) viskas veikia.

Linux-VServer diegimas[keisti]

Į paruoštą sistemą reikia instaliuoti util-vserver ir vserver-debiantools. Tai galima padaryti naudojant Paketų tvarkyklę Synaptic arba įvedę eilutę į terminalą:

apt-get install util-vserver vserver-debiantools

Linux-VServer diegimo problemos[keisti]

Čia pateikiu problemas su kokiomis aš susidūriau norėdamas paleisti VServer, kokius pranešimus gavau ir ne į visus radau atsakymus internete. Tikiuosi kažkam bus naudingi.

Testavimas su skriptu[keisti]

Ar sėkmingai įdiegtas ir tinkamai veikia VServer galima patikrinti atsisiuntę ir paleidę šį skriptuką.

wget http://vserver.13thfloor.at/Stuff/SCRIPT/testme.sh
chmod +x testme.sh
sudo ./testme.sh

Jei gavome žemiau esantį pranešimą, tai reiškia, kad Linux branduolys nepalaiko VServer. Reikia įdiegti palaikantį Linux branduolį, kaip aprašyta pirmame skyriuje.

Linux-VServer Test [V0.17] Copyright (C) 2003-2006 H.Poetzl 
chcontext: tools were built without legacy API support; can not continue 
chcontext failed! 
WARNING: --nid is not supported by this version 
chbind: kernel does not provide network isolation 
WARNING: --nid is not supported by this version 
chbind: kernel does not provide network isolation 
chbind failed! 
Linux 2.6.24-16-generic #1 SMP Thu Apr 10 13:23:42 UTC 2008 i686 
Ea 0.30.214 273/glibc (DSa) <v13,net,v21,v22,v23,netv2> 
VCI: <none> (Tn) 
--- 

Virtualaus serverio kūrimas[keisti]

Bandome sukurti virtualų serverį:

newvserver -v --hostname test1 --domain "pavyzdys.lt" --ip 193.169.100.2 --interface dummy0

Jeigu nepavyko sukurti virtualaus serverio ir gaunate pranešimą, tai reiškia mūsų branduolys negali saugiai atskirti virtualių serverių, t.y. nepalaiko VServer. Žiūrėti pirmąjį skyrių.

newvserver error: 
	Must be run from the host server (security context 0) 
	on a "vserver/ctx-patch" enabled kernel 
	See: http://www.solucorp.qc.ca/miscprj/s_context.hc 

Linux-VServer konfigūravimas[keisti]

VServer tinklo konfigūravimas[keisti]

Pirmiausia reikia sukurti tinklą ir priskirti jį VServer paketui. Ubuntu ir Debian sistemose taip galime padaryti į failą /etc/network/interfaces įrašę tokias eilutes:

auto dummy0
iface dummy0 inet static
        address 193.169.100.1
        netmask 255.255.255.0

Jeigu viskas veikia, mes galime pamatyti susietą adresą su sukurtu interfeisu dummy0 įvedę eilutę:

ip addr show dev dummy0

Turėtumėt gauti kažką panašaus:

5: dummy0: <BROADCAST,NOARP,UP,10000> mtu 1500 qdisc noqueue 
    link/ether 6e:07:f6:a2:7d:d1 brd ff:ff:ff:ff:ff:ff
    inet 10.1.1.1/24 brd 10.1.1.255 scope global dummy0
    inet6 fe80::6c07:f6ff:fea2:7dd1/64 scope link 
    valid_lft forever preferred_lft forever

Tinklo paketai, siunčiami iš virtualaus serverio, turi ateiti iš šio sukurto interfeiso. Tačiau norint gauti išorinius paketus į virtualų serverį, reikia šiam interfeisui nustatyti nukreipimus.

echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 193.169.100.1/32 -j SNAT --to-source $IP

čia $IP yra išorinio interfeiso adresas. Šis nukreipimas turi būti atliekamas kiekvieną kartą perkraunant tinlą, todėl geriausia šias komandas įkelti į sistemos startavimo failą.

Virtualaus serverio valdymas[keisti]

Virtualių serverių valdymas vyksta gana paprastai, naudojant paprastas komandas: start, stop, enter, delete.

Virtualaus serverio kūrimas[keisti]

Virtualiems serveriams kurti naudojant VServer paketą reikalingas internetas, todėl įsitikinkite, kad Jūsų serveris prijungtas prie jo. Įjungiame Linux sistemą su branduoliu, palaikančiu VServer. Kurti virtualius serverius turime su super administratoriaus teisėmis.

sudo -s

Kuriame virtualų serverį:

newvserver --hostname test1 --domain pavyzdys.lt --ip 193.169.100.2/32 --interface dummy0

Virtualaus serverio įjungimas[keisti]

Paleidžiamas virtualus serveris:

vserver start test1

Įėjimas į virtualų serverį[keisti]

Patekti į virtualų serverį galime:

vserver enter test1

Dabar galime vykdyti visas komandas, kaip ir paprastame serveryje, nepriklausomai nuo kitų veikiančių virtualių serverių.

Virtualaus serverio stabdymas[keisti]

vserver stop test1

Virtualaus serverio šalinimas[keisti]

vserver delete test1
Are you sure you want to delete the vserver test2 (y/N) y

Virtualių serverių statistika[keisti]

Į virtualių serverių paketą įeina ir vserver-stat programa, kuri pateikia duomenis apie visus fiziniame serveryje veikiančius virtualius serverius. Iškviečiama komanda, turint super administratoriaus teises (sudo):

vserver-stat

Išvedama lentelė su veikiančiais virtualiais serveriais:

CTX   PROC    VSZ    RSS  userTIME   sysTIME    UPTIME NAME
40001    2  14.8M   1.4M   0m00s32   0m00s16   9m06s29 test1
40003    2  14.8M   1.4M   0m00s24   0m00s24   9m03s32 test3

Išorinės nuorodos[keisti]

  1. http://linux-vserver.org/Welcome_to_Linux-VServer.org
  2. http://support.uni-klu.ac.at/VServer
  3. http://seehuhn.de/pages/vserver