Ha valakinek kellene ilyen… nem is tudom, miért nincs alapból?!?
http://www.syslinux.org/wiki/index.php/DiskImageCreation
Ha valakinek kellene ilyen… nem is tudom, miért nincs alapból?!?
http://www.syslinux.org/wiki/index.php/DiskImageCreation
A cím lehetne az is, hogy megoldásaim, mert ezeken kívül még biztos nagyon sokféle van. Az is biztos, hogy nem térek ki mindenre teljes részletességgel.
A feladat
Az elmúlt időben számos olyan feladat adódott, ahol egyszerűbb volt virtuális gépeken megvalósítani egy-egy apróbb feladatot. A FreeBSD-től nem igazán szeretek megválni, de sajnos a VMWare server nem fut (legalábbis nem találtam) FreeBSD-n.
VmWare Server – Ubuntu 8.04 LTS Server
Az első ilyen “éles” megoldás egy Ubuntu Serverre került fel. A gép és az oprendszer adott volt. Windowsos fájlmegosztást végzett egy kis üzemben. A gép kihasználtsága nem volt magas (a feladatához mérve még túl erős is volt), így könnyedén fel lehetett telepíteni a VmWare Server 2-t. A telepítésről nem igazán érdemes sokat mondani. Ugyan nem Windowsokon megszokott Next-Next-Ok módon zajlik a telepítés, de minden egyszerűen érthető. X nem kell neki és service-ként elindul. A gépet sem kellett újraindítani. Az aktuális kernel forrását le kell tölteni (ha nem lenne amúgy is ott), mert a saját moduljait a telepítő lefordítja. A telepítés kulturáltan végig megy és a hálózat újraindítása után miden klappol. Elindít egy webes management felületet, amin keresztül szinte minden beállítható.
A Webes felülettel egy apró gondom volt. A frontend szerint a kiszolgáló webservice mindig megáll. Ennek okát (még) nem találtam meg, de ha elég lassan kattintgatok (értsd: kattintás után megvárom míg a műveletet befejezi), akkor minden OK. Egyetlen szépséghibája, hogy szerintem IE alatt jobban megy a felület, mint más böngészőből.
A hálózatok a korábban megszokott VmWare-es analógiára épülnek itt is. Megjelenik mindegyik interfész a host gépen és minden ugyanúgy érvényes rá mint más ethernetes interfészekre.
Röviden összegezve, letölt, kulcsot aktivál, feltelepít és megy. Ennyi. Viszonylag kis erőforrást visz el és a virtuális gépek is barátságos teljesítménnyel szaladnak.
VirtualBox OSE – FreeBSD 7.2
VirtualBox-ot eddig nem használtam, de kellemesen csalódtam. A VmWare után kicsit mazochistább dolog, de kivitelezhető. Biztos ami biztos alapon nem az éles gépen telepítettem fel első körben. A teszt masina egy öreg IBM Netfinity ( 🙂 ) vas. Legnagyobb előnye, hogy van. Ennyit tud üzembiztosan. A VirtualBox lefordítása is meglehetősen sok időt vett igénybe, de screenben futott, így nem érdekelt, hogy mikorra lesz kész.
A bajok ott kezdődtek, hogy viszonylag ritkán frissítgettem a “játszótérnek” használt gépet, és a VB-nek is szükséges csomagok meglehetősen régiek voltak. Egyszer élünk alapon mondtam, hogy frissítse le, majd meglátjuk mi lesz. Hát az lett, hogy a munin, az mc és pár saját applikáció megszűnt működni :). Sebaj Tóbiás, van itt hatalmas számítási teljesítmény, hamar megoldjuk. A következő 2 napban frissített és fordított szegény masina, de a vége az lett, hogy nagyjából minden megy. (megjegyezném, hogy a munin-mastert le kellett állítani, mert míg minden noderól újrarajzolta a grafikonokat, addig rendszeresen eldumpolt a VB) Ez a művelet arra volt jó, hogy legalább nem okozott problémát amikor az éles helyen került telepítésre a VirtualBox. Na meg persze tényleg nem érdemes Virtualizálni kicsi vason. Ennyi.
Az éles telepítés nem volt több fél óránál. És az első virtuális gép el is indult. Kapott egy procit, 512Mb ramot meg egy XP-t (azért Win-t, mert ez volt a feladat, kellett egy kicsi wines alkalmazásnak állandó hálózat meg ilyenek). A sebessége normális, logmein-nel tökéletes.
A VirtualBox közelebb áll a lelkemhez, mint a vmware, mert számomra érthetőbb a parancssoros része mint a vmware-nek. Az “éles” BSD-re már nem is telepítettem semmi grafikus dolgot hozzá, kivéve a vnc-s consolet, amit akkor indítok el, ha valami gáz lenne vele. A hálózati része kicsit más. Nem ad oda rögtön minden interfészt, hanem alapból minden további nélkül natol. Ez kliensekhez szerintem egész jó dolog. Persze itt is van Host-Only, meg Bridged megoldás hasonlóan a vmware-hez. Kényelmes, mert nem kell webes marhaságokkal tökörészni, de tény és való, hogy a VmWare megoldása nagyon elegáns.
Freebsd Jail – Futottak még kategória
A Jail több, mint egy chroot, de kevesebb, mint egy virtuális gép. Lebecsülni nem szabad, mert nagyon jó és teljesítményben biztosan jobb, mintha hasonló funkciót egy komplett virtuális géppel valósítanánk meg. Nagyon sok mindent lehet benne korlátozni. Nekem az egyik gépen úgy van, hogy a host freebsd nem csinál semmit, csak tartja a jaileket és ő a tűzfal. A jailek meg a saját IP-jükkel nyújtják a szolgáltatásokat. Az IP-ket itt aliasként kell felvenni a host hálókártyájára és a jail-ek konfigjában kell ezt beállítani. A jailekből elméletileg nem lehet kilátni és a jailek között nem lehet átlátni. Ez valamilyen kernelvirtualizált megoldás vagy mi, ha már szép szavakkal kell illetni. Sajnos a régebbi BSD-ken nem igazán lehet jól szabályozni a a jailek erőforrásait. Diszket persze olyat lehet alá becsatolni amilyet szeretnénk, de ez manapság édes kevés.
Összegzés
Remélem az általános dolgokon túl tudok majd írni érdekesebb dolgokat is, de egyelőre ennyi. A VmWare Server és a VirtualBox szerintem nagyon jó megoldás arra, hogy “igazi” virtuális gépeket futtassunk. Szerencsére a VirtualBox OSE ingyenes és open, a VmWare-nek van ingyenes verziója is (Server 2 is és ESXi), a jail meg a BSD része. Minden adott, hogy ingyen hozzájuthassunk jó megoldásokhoz. Azt, hogy melyiket használjuk, az az adott feladat függvénye. Ha lesznek egyéb tapasztalatok, lesznek újabb posztok.
Történt egy érdekes eset. Az okát még nem tudom, nem is nagyon olvastam utána. Eddig akár BSD, akár ubuntu volt telepítve, X-es alkalmazások futtatása ssh-n keresztül minden mókolás nélkül működött. Az egyik 7.2-es FreeBSD viszont akadt egy kis galiba. Egyáltalán nem tudtam rajta X-es alkalmazásokat indítani.
Az xauth és a xorg-fonts csomagok feltelepítése után megy. Ezek után direkt megnéztem a 6.x-es BSD-ket, hogy ott mi a helyzet, de ott egyeiken sincsenek ezek telepítve.
Na mindegy… érteni nem értem, de működik.
Ha valakivel előfordul, hogy “elfelejti” az sql szerver root jelszavát, íme a megoldás:
1. mysql szerver leállítása:
host# /usr/local/etc/rc.d/mysql-server stop
2. init script gyártása:
UPDATE mysql.user set password=PASSWORD('új password') where user='root';
flush privileges;
3. mysqld indítása a saját scripttel:
mysqld_safe --init-file=/home/petike/sql_root_reset.sql
Ez indításkor módosítja a root passwordöt.
Ezek után már mehet is a móka.
Természetesen a fájlt ezek után már nem kell használni, le is törölhetjük. Végezetül pedig indítsuk el újra rendesen a mysql-servert.
sendmail -q -v
Hasznos dolog lehet még:
mailq
mailstats
FreeBsd-n a legjobb (szerintem) módja az alkalmazások telepítésére a ports könyvtár (/usr/ports). Ha esetleg nem lenne feltelepítve, akkor:
portnsap fetch
portsnap extract
Későbbiekben már elegendő a portsnap update.
Amit én szeretek használni az a portmaster. Így könnyedén hagyhatom magára a c fordítót egy screenben és majd ha végzett megnézem a kimenetet. Első körben magát a portmastert kell feltelepíteni:
cd /usr/ports/ports-mgmt/portmaster
make config && make && make install
rehash
Ezek után a telepítéshez nem kell mást beírni, mint a következőt:
pl.:
portmaster /usr/ports/mail/alpine
Így a művelet elején minden függőség konfig oldalát megjeleníti és miután ezekkel megvagyunk magára lehet hagyni a masinát. Egyszer majd csak végez…
Érdekelt, hogy hogyan lehet LVM-hez hasonló megoldást alkalmazni Freebsd-n. A helyzet úgy adódott, hogy összeguberált alkatrészekből kellett egy kis gépet össztákolni. A HDD-k kicsit voltak, de az érkező fájlok mérete ~100G körüli. Így össze kellett őket fűzni.
A BSD kötetkezelő megoldásában kellemesen csalódtam. (aztán lehet, hogy megbánom… majd leírom a tapasztalatokat)
Az egész két egyszerű lépésből áll:
tatuin# gconcat label -v backup /dev/ad0s2 /dev/ad1 /dev/ad2
tatuin# newfs /dev/concat/backup
ez kb. annyit csinál, hogy az említett három eszközt összefűzi egy logikai eszközzé, majd étrehozok rajta egy új fájlrendszert.
Már csak fel kell mountolni:
tatuin# mount /dev/concat/backup /mnt/
Eddig sebesség különbségeket nem igazán véltem felfedezni. Lehet, hogy egy erősebb gépen nagyobb eltérések látszódnának. Jelen esetben szinte semmivel nem lassabb…
Update1:
Ahhoz, hogy ne szpoassuk magunkat feleslegesen a /boot/loader.conf fileba írjuk be
geom_concat_load="YES"
Az fstab-ot is ennek megfelelően módosítsuk:
/dev/concat/backup /usr/backup ufs rw 2 2
Update2:
Ha esetleg széthullana valamiért a kötet, vagy powerfailure után nem állna magától össze, akkor nézzük meg hogy helyesen betöltődött-e a kernel modul, ha nem akkor töltsük be manuálisan.
tatuin# kldload geom_concat.ko
Ezzel okosan lehet élő fájlrendszert menteni:
dump -0uan -L -f - /usr | gzip -2 | ssh user@myhost.com dd of=/home/user/dump-usr-20091104.gz
Készít egy snapshotot az aktuális állapotról, lementi, majd a végén rendbetesz mindent. A userek észre sem veszik…
Ez a megoldás ssh-n áttolja gzippel tömörítve a teljes /usr tartalmát…
UPDATE 1:
Azt elfelejtettem írni, hogy visszaálítani a következő képpen tudjuk:
tatuin# cd /backup
tatuin# cat /home/petike/dump-usr-2xxxxxxx.gz | gzip -dc | restore -xv -f -
Van egy kis problémám… az adaptec scsi vezérlő mögötti HDD-k hőmérsékletét nem tudom lekérdezni a smartd-n keresztül. Nemes egyszerűséggel fogalma sincs arról, hogy milyen HDD ülnek rajta. Egy darab aac0-t lát. Ez jól is van így, de annak örültem volna, ha a smartd látta volna őket. A szerencse az, hogy az adaptec-hez van cli, ami működik… Kicsit bugos, de megy.
hostname# aaccli open aac0 : enclosure show status
--------------------------------------------------------------------------------
Adaptec SCSI RAID Controller Command Line Interface
Copyright 1998-2002 Adaptec, Inc. All rights reserved
--------------------------------------------------------------------------------
Executing: open "aac0"
Executing: enclosure show status
Enclosure
ID (B:ID:L) UpTime D:H:M PowerCycle Interval Door Alarm
----------- -------------- ---------- -------- -------- -----
0 0:06:0 0:00:00 0 10 UNLOCKED OFF
Enclosure
ID (B:ID:L) Fan Status
----------- --- -------------
Enclosure
ID (B:ID:L) Power State Status
----------- ----- ------------ -------
Enclosure
ID (B:ID:L) Slot scsiId Insert Status
----------- ---- ------ ------- ------------------------------------------
0 0:06:0 0 0:00:0 1 OK ACTIVATE
0 0:06:0 1 0:01:0 1 OK ACTIVATE
0 0:06:0 2 0:02:0 1 OK ACTIVATE
0 0:06:0 3 0:03:0 1 OK UNCONFIG HOTSPARE ACTIVATE
0 0:06:0 4 0:04:0 1 OK ACTIVATE
Enclosure
ID (B:ID:L) Sensor Temperature Threshold Status
----------- ------ ----------- --------- --------
0 0:06:0 0 77 F 120 NORMAL
0 0:06:0 1 89 F 120 NORMAL
A hőmérséklet nem celsiusban van, de egy kis shell barkácsolással lehet okosítani. Elméletileg egy saját cli-t adna az aaccli, de egy pár utasítás után megáll. Ha egy sort kalapálok bele, akkor minden működik. Láss csodát vannak hőmérsékletek. Jelen esetben két sensor érhető el rajta.