Archive

Archive for the ‘Linux/BSD’ Category

Nostalgija

November 11th, 2009

Nešto sam u tom raspoloženju ovih dana. To me je i nateralo da napišem ovaj blog. Posmatram okolo kako se neke stvari rade i ne sviđa mi se. Mislim tu pre svega na činjenicu da se danas svako naziva sistem administratorom. Sad svako može da kaže da zna da instalira Linux operativni sistem, i on je odmah sistem admin. To me podseća na davno prošlo vreme kada je ista situacija bila sa Winblows-om i ljudima koji su za sebe govorili da su administratori samo zato što su znali da instaliraju Winblows NT. Tome je naravno mnogo doprinela popularizacija Linux-a, i drastično pojednostavljeni procesi instalacije, manipulacije paketima, daleko većim brojem developer-a koji prave raznorazne GUI-e itd. Lepo je sve to, što neko sada zna da uz nekoliko click-ova instalira Linux operativni sistem, ali to ne znači da je taj neko sada i admin.

Linux/UNIX оperativnim sistemima se bavim nekih 15-tak godina. Vrlo dobro se sećam kada se 1 (jedan) server pripremao po nekoliko dana. Izvlačio se maksimum iz svakog delića mašine i njenih resursa. Svojevremeno smo se utrkivali ko će bolje da optimizuje kernel, da static kernel bude ispod 220kb (da kilobajta), primenjivali su se različiti security patchevi, … Danas, više ni ne znaju koliko megabajta je kernel. Optimizovao se svaki servis koji pruža ta mašina, koristile su se specijalne biblioteke, različite vrste configure opcija, svaki servis bio je chroot-ovan ili jail-ovan, particije su kreirane po svakom servisu, pisani su vrlo kvalitetni firewall-ovi specifični za servise, sistem se bre znao u “prste”, znao sam kako “diše” server. Testirao se svaki servis da bi se izabrao odgovarajući daemon koji će isti vršiti, znalo se da se sendmail odmah menja sa qmail-om, postfix-om … Znalo se da na mašini ne sme biti suid-a, radio se checksum fajlova, primenjivali su se specijalni kontrolni moduli za bolju kontrolu sistema,… Pratile su se mailing liste za svaki servis koji se koristi na sistemu, od developer do user grupa. Drugim rečima iskorišćenje sistema bilo je maksimalno a security je bio na zavidnom nivou, naravno ne savršen ali prokleto dobar. Rezultat? Uptime na serverima po 2-3 godine, nikad haknuti (bar ne da smo znali :) ) ali šta su te 486-ice, prvi Pentium-i, SUN-ovi i SGi-evi gurali tada, kad bi neko pravio poređenje … ehhh, ta nostalgija.

A danas? Danas se jako slabo ceni takva optimizacija, a opet svi viču “virtuelizuj! konsoliduj! optimizuj!”. Po meni je to paradox. Zapošljavaju se tzv. administratori koji su radili par meseci sa linux-0m i koji misle da znaju šta znači postaviti, podesiti, optimizovati i obezbediti neki servis ili server. I onda se poredi ko je uradio više po tome koliki je broj servera ili servisa instaliran i podešen za XYZ vremena. Štancuju se virtuelne mašine, da ne kažem kloniraju, kao tobože se vrši konsolidacija i iskorišćenje resursa, a da ti ljudi ni ne znaju kako to funkcioniše jer svo vreme koriste GUI. Naravno današnji multi core procesori i nikad jeftinija memorija će gurati i žvakati takve by-default instalirane sisteme, ali gde je tu kvalitet? Kad se pomene exploit(i), ovi tzv. admin-i ne znaju ni šta je to, a kamoli kako isti funkcionišu, što se njih tiče, dovoljno je postaviti par linija u hosts.(deny|allow) ili eventualno podići default SLES/RH/CentOS firewall i to je to, što se bezbednosti tiče. Tužno, ali istinito. Moram naravno da se složim sa činjenicom da je sada mnogo jednostavnije koristiti Linux i generalno UNIX, ali to ne znači da svako može sebi da okači titulu linux/unix sistem administratora samo zato što je par puta instalirao isti.

Luka Gerzic Linux/BSD, Lično, Razno , , ,

Preuzimanje audio kanala iz flash player-a

October 6th, 2009

Recimo da želite da “skinete” neko predavanje koje ste slušali preko web browser-a iz flash player-a (koga ja to lažem?), tj hteli ste da skinete neku pesmu koje nema na torentu a vrti se na nekom sajtu iz flash player-a (youtube/myspace/facebook?), evo kako to možete da uradite:

Ako koristite pulseaudio, onda je ovo vrlo jednostavno. Potrebno vam je nekoliko alata, prvo treba vam pactl (Control a running PulseAudio sound server), zatim pacat (Play back or record raw audio streams on a PulseAudio sound server). Prvo potrebno je da otkrijete gde je stream koji ćete maznuti:

$ pactl list | grep -A2 ‘Source #’ | grep ‘Name: .*\.monitor$’ | cut -d” ” -f2
alsa_output.pci_8086_284b_sound_card_0_alsa_playback_0.monitor

Sve što onda treba da uradite jeste da pripremite sledeću “kobaju”:

$ parec –device=alsa_output.pci_8086_284b_sound_card_0_alsa_playback_0.monitor –format=s16le –rate=44100 –channels=2 | sox –type raw -s2L –rate 44100 –channels 2 – –type wav “Ime Izvođača – Neka pesma.wav”

Pustite audio/video zapis u vašem browser-u i okinite komandu iznad. Kad se audio/video zapis završi prekinite gornju komandu sa CTRL+C. Dobićete u radnom direktorijumu nekompresovani raw wav fajl koji možete kompresovati u mp3 na sledeći način:

$ lame -b 256 “Ime Izvođača – Neka pesma.wav” “Ime Izvođača – Neka pesma.mp3″
LAME 3.98 32bits (http://www.mp3dev.org/)
CPU features: MMX (ASM used), SSE (ASM used), SSE2
Using polyphase lowpass filter, transition band: 19383 Hz – 19916 Hz
Encoding Ime Izvođača – Neka pesma.wav to Ime Izvođača – Neka pesma.mp3
Encoding as 44.1 kHz j-stereo MPEG-1 Layer III (5.5x) 256 kbps qval=3
Frame          |  CPU time/estim | REAL time/estim | play/CPU |    ETA
10633/10633 (100%)|    0:14/    0:14|    0:15/    0:15|   18.921x|    0:00
———————————————————————————————————————————————————————————–
kbps        LR    MS  %     long switch short %
256.0       53.0  47.0        95.7   2.7   1.7
Writing LAME Tag…done
ReplayGain: -2.5dB

I to je to. Dobili ste mp3 fajl u istom radnom direktorijumu. Uživajte.

Luka Gerzic Linux/BSD, Razno , , , , , , , ,

sms zavrzlame

September 29th, 2009

Naslov ovog teksta apsolutno nema veze sa SMS (Short Message Service) vašeg vam omiljenog GSM operatera, ako ste to pomislili, već sa M$ Winbows Systems Management Server klijent software-om.

Pre nekog vremena primetio sam da mi u regularnim intervalima ceo notebook “štucne” na par sekundi i onda se vrati u normalu kao da se ništa nije dogodilo. S obzirom da koristim linux kao main os, počeo sam da kopam po mašini ne bi li našao šta me to smara. Prvo naravno provera top-a, procesori slobodni, memorije nije da ima u izobilju ali je ima dovoljno, swap skoro da ga i ne koristim. Hmmm da vidimo šta radi disk. vmstat je odmah pokazao da se tu dešava nešto čudno:

Neobični upisi na disk od stane neke aplikacije u regularnim intervalima, gde se dešavalo da upis bude i po nekoliko desetina megabajta, prilično me je zaintrigiralo. S obzirom da sam našao šta kuca mašinu (prvo što sam bio pomislio bio je da neka aplikacija “kuca” procesor a ne disk), krenuo sam da čeprkam. Trebalo je naći koji proces od svih procesa na mašini ima potrebu da se igra sa diskom na ovako surov način. Idealan alat za to bio je iotop koji vam može prikazati koji proces radi šta sa diskom. I odmah se pokazalo:

Eh sad, vbox kod mene vrti Winblows XP korporativni (AD+Exchange stuff) na kome nema apsolutno ništa od software-a osim Outlook-a. Na samom WinXP-u, prva pomisao je da je virtuelna mašina iz nekog razloga ostala bez (1Gb) slobodne memorije pa ciklično swap-uje po disku. Međutim to nije bio slučaj. Da bih video koji proces pod Winblows-om kida disk, upotrebio sam jedan od besplatnih i veoma korisnih alata za uvid rad Winblows sistema. Sysinternals Process Explorer je odličan program i odmah je prikazao gde je problem:

Pošto ja nisam neki stručnjak za Winblows niti isti koristim za bilo šta osim za igranje i poneki email, raspitao sam se kod mojih kolega koji znaju dosta na tu temu. Procesi msiexec.exe startovan od stane  Winblows SMS je software-a gura zakrpe i programe mašinama koje su pod AD-om, po potrebi kada to administratori AD-a žele. Par trikova na AD-u, gpupdate /force i nekoliko restart-a kasnije problem je bio idalje tu. Međutim po savetu kolege posle brisanja \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\CcmExec segmenta iz registry-a i opet restart-a, problem je prestao. Ako ne možete da se igrate sa registryem postoji i ručna privremena varijanta:

X:\WINXP\system32>sc stop ccmexec

SERVICE_NAME: ccmexec
TYPE : 10 WIN32_OWN_PROCESS
STATE : 3 STOP_PENDING
(STOPPABLE,NOT_PAUSABLE,ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0×0)
SERVICE_EXIT_CODE : 0 (0×0)
CHECKPOINT : 0×0
WAIT_HINT : 0×0

Odmah da se ogradim. Ovakva akcija brisanja i zaustavljanja ovog servisa možda neće biti dobrodošla u vašem okruženju i pod polisama koje vi imate. Međutim ako imate ok admin-e koji imaju poverenja u to šta radite sa vašom radnom stanicom onda možete da primenite ovo što sam gore pomenuo kako vam mašina ne bi štucala s vremena na vreme. Naravno ovako nešto nećete ni primetiti ako niste pod AD-om.

Luka Gerzic Linux/BSD, Razno , , , , , , , , ,

Red Hat 5.4

September 5th, 2009

Izašla je nova verzija popularnog Red Hat Enterprise Linux 5.4 . Glavna novina u novoj verziji je svakako implementirana podrška Kernel-based Virtual Machine (KVM) hipervizora na x86_64 platformi. KVM je čedo Izraelske kompanije Qumranet koju je kasnije kupio Red Hat. Popularnost KVM-a drastično je porasla od momenta kad je isti postao integralni deo Linux Kernel-a, što se dogodilo od verzije Linux Kernel-a 2.6.20. KVM podržava kako Intel VT tehnologiju tako i AMD-V i trenutno su podržane Linux i FreeBSD host platforme. U ovom momentu KVM dolazi kao kernel modul, međutim najavljeno je da će isti uskoro dobiti svoju sopstvenu syscall funkciju direktno unutar samog Linux kernel-a. Iako je KVM prevashodno fokusiran na x86 platformu, trenutno se rade portovi za S390, PowerPC i IA64 platforme. Sam po sebi KVM ne vrši emulaciju, već user-space program koristi /dev/kvm interfejs kako bi podesio adresni prostor za guest operativni sistem što je jedan od razloga njegove uske povezanosti sa QEMU-om. KVM je integralni deo Linux Kernel-a i nije ga moguće koristiti u paru sa XEN virtuelizacijom, i za jedan i za drugi morate koristiti poseban kernel. KVM virtuelizacija omogućava i 32 i 64 bitne verzije guest operativnog sistema bez ikakvih modifikacija nad istim u isto vreme. Od novina tu je i USB passtrough, međutim RH to smatra Technology Preview (TP) opcijom.

U novoj verziji izmene su usledile na etherboot paketu koji je dodat uz ovaj update, a omogućiće vam podizanje guest virtuelnih mašina preko Preboot eXecution Environment (PXE) protokola. Sam proces se odvija pre nego što je sam operativni sistem učitan tako da u određenim situacijama sam operativni sistem nema saznanja da je podignut preko PXE-a. Etherboot je limitiran na upotrebu uz KVM. Od novina tu je podrška za fencing (fencing je diskonektovanje nod-a sa klasterovanig zajedničkog storage-a, prilikom rada u klaster režimu) za IBM Power seriju koja je dodata, ali kao TP opcija za sve LPAR-e koji se kontrolišu preko HMC-a. Dodata je i podrška za Generic Receive Offload (GRO) i u samom kernelu i u userspace-u tj u alatu ethtool. GRO bi trebao da smanji opterećenje CPU-a prilikom dolazećih mrežnih konekcija i time poboljša performanse prilikom heavy duty saobraćaja. GRO koristi identičan princip rada kao i Large Receive Offload (LRO) sistem ali može biti primenjen na širi opseg transport protokola. Pored toga GRO podrška je pridodata i drajverima nekih popularnih mrežnih adaptera (npr. Intel Gigabit Ethernet Adapter). Još od 2007-e pominju se drastična poboljšanja prilikom korišćenja ove tehnike.

RH 5.4 u segmentu podrške fajl sistemima donosi nekoliko značajnih novina. RH sada sadrži i FUSE (Filesystem in Userspace) kernel module i korisničke alate, što omogućuje korisnicima da instaliraju sopstveni FUSE fajl sistem na RH kernelu. Pored toga dodata je podrška za XFS fajl sistem ali u TP modu. Ažuriran je CIFS (čitaj ispravljeni bug-ovi) a novina je i ext4 koji je takođe u TP modu.

Sve u svemu dosta novina, naravno i novih grešaka koje su se “provukle”. Kao što se vidi iz novina i izmena koje je RH uveo, očigledno je da se sve okreće ka i oko virtuelizacije, grid i cloud computeing-u, a na nama je da to sve probamo, testiramo i implementiramo.

Luka Gerzic Linux/BSD , , , , , , , ,

32 ili 64bita?

June 11th, 2009

Ovo je mini linux howto za proveru da li je procesor i/ili operativni sistem 32bit-a ili 64bit-a (x86 platforma). Realna situacija u kojoj možete da naiđete na potrebu da ovako nešto proveravate je ako dođete na potpuno nepoznat “teren” pa treba da utvrdite šta je od postojeće opreme iskorišćeno i kako. Pa eto malog mini howto-a na ovu temu.

a)    ako uname vrati sledeće:

# uname -m
x86_64

Onda je u pitanju 64bit OS a samim tim i procesor.

b)    Ako vrne recimo:

# uname -m
i686

To može i ne mora da znači da je procesor 32-bitan. Da bi definitivno utvrdili koji operativni sistem je instaliran potrebno je otkucati sledeću komandu:

32 bit-a:

# file /sbin/init
/sbin/init: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV),
for GNU/Linux 2.6.8, dynamically linked (uses shared libs), stripped

64 bit-a:

# file /sbin/init
/sbin/init: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV),
for GNU/Linux 2.6.4, statically linked, for GNU/Linux 2.6.4, stripped

Time će te videti da li je instalirani operativni sistem instaliran za 32 ili 64bitnu arhitekturu.

c) Komanda: # cat /proc/cpuinfo može vam dati specifikaciju procesora kao i sve njegove
mogućnosti. To se vidi u segmentu Flags i to izgleda otprilike ovako:

processor		: 0
vendor_id		: GenuineIntel
cpu family		: 6
model		: 15
model name	: Intel(R) Xeon(R) CPU 5110  @ 1.60GHz
stepping		: 6
cpu MHz		: 1595.930
cache size		: 4096 KB
physical id	: 3
siblings		: 2
core id		: 0
cpu cores		: 2
fpu		: yes
fpu_exception	: yes
cpuid level	: 10
wp			: yes

flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni
monitor ds_cpl vmx tm2 cx16 xtpr dca lahf_lm

bogomips        	: 3195.07
clflush size    	: 64
cache_alignment	: 64
address sizes   	: 36 bits physical, 48 bits virtual
power management:

jer 64bitni procesor ima flag LM koji je označen crvenom bojom u gornjem tekstu.

Ako vas interesuje šta znači koji flag na procesoru koji je na datom sistemu, ukoliko je sistem
32-bitan opis flagova se nalazi u ovom fajlu: # cat /usr/include/asm/cpufeature.h a ako je sistem 64-bitan onda u: # cat /usr/include/asm-x86_64/cpufeature.h

I to izgleda otprilike ovako (za gore navedeni procesor):

Posle X86_FEATURE_<OVDE JE CPU FLAG> a zatim opis flag-a.

/* Intel-defined CPU features, CPUID level 0x00000001, word 0 */
#define X86_FEATURE_FPU        (0*32+ 0) /* Onboard FPU */
#define X86_FEATURE_VME        (0*32+ 1) /* Virtual Mode Extensions */
#define X86_FEATURE_DE        (0*32+ 2) /* Debugging Extensions */
#define X86_FEATURE_PSE     (0*32+ 3) /* Page Size Extensions */
#define X86_FEATURE_TSC        (0*32+ 4) /* Time Stamp Counter */
#define X86_FEATURE_MSR        (0*32+ 5) /* Model-Specific Registers, RDMSR, WRMSR */
#define X86_FEATURE_PAE        (0*32+ 6) /* Physical Address Extensions */
#define X86_FEATURE_MCE        (0*32+ 7) /* Machine Check Architecture */
#define X86_FEATURE_CX8        (0*32+ 8) /* CMPXCHG8 instruction */
#define X86_FEATURE_APIC    (0*32+ 9) /* Onboard APIC */
#define X86_FEATURE_SEP        (0*32+11) /* SYSENTER/SYSEXIT */
#define X86_FEATURE_MTRR    (0*32+12) /* Memory Type Range Registers */
#define X86_FEATURE_PGE        (0*32+13) /* Page Global Enable */
#define X86_FEATURE_MCA        (0*32+14) /* Machine Check Architecture */
#define X86_FEATURE_CMOV    (0*32+15) /* CMOV instruction (FCMOVCC and FCOMI too if FPU present) */
#define X86_FEATURE_PAT        (0*32+16) /* Page Attribute Table */
#define X86_FEATURE_PSE36    (0*32+17) /* 36-bit PSEs */
#define X86_FEATURE_PN        (0*32+18) /* Processor serial number */
#define X86_FEATURE_CLFLSH    (0*32+19) /* Supports the CLFLUSH instruction */
#define X86_FEATURE_DTES    (0*32+21) /* Debug Trace Store */
#define X86_FEATURE_ACPI    (0*32+22) /* ACPI via MSR */
#define X86_FEATURE_MMX        (0*32+23) /* Multimedia Extensions */
#define X86_FEATURE_FXSR    (0*32+24) /* FXSAVE and FXRSTOR instructions (fast save and restore */
                          /* of FPU context), and CR4.OSFXSR available */
#define X86_FEATURE_XMM        (0*32+25) /* Streaming SIMD Extensions */
#define X86_FEATURE_XMM2    (0*32+26) /* Streaming SIMD Extensions-2 */
#define X86_FEATURE_SELFSNOOP    (0*32+27) /* CPU self snoop */
#define X86_FEATURE_HT        (0*32+28) /* Hyper-Threading */
#define X86_FEATURE_ACC        (0*32+29) /* Automatic clock control */
#define X86_FEATURE_IA64    (0*32+30) /* IA-64 processor */
/* AMD-defined CPU features, CPUID level 0x80000001, word 1 */
/* Don't duplicate feature flags which are redundant with Intel! */
#define X86_FEATURE_SYSCALL    (1*32+11) /* SYSCALL/SYSRET */
#define X86_FEATURE_MMXEXT    (1*32+22) /* AMD MMX extensions */
#define X86_FEATURE_FXSR_OPT    (1*32+25) /* FXSR optimizations */
#define X86_FEATURE_LM        (1*32+29) /* Long Mode (x86-64) */
#define X86_FEATURE_3DNOWEXT    (1*32+30) /* AMD 3DNow! extensions */
#define X86_FEATURE_3DNOW    (1*32+31) /* 3DNow! */
/* Transmeta-defined CPU features, CPUID level 0x80860001, word 2 */
#define X86_FEATURE_RECOVERY    (2*32+ 0) /* CPU in recovery mode */
#define X86_FEATURE_LONGRUN    (2*32+ 1) /* Longrun power control */
#define X86_FEATURE_LRTI    (2*32+ 3) /* LongRun table interface */
/* Other features, Linux-defined mapping, word 3 */
/* This range is used for feature bits which conflict or are synthesized */
#define X86_FEATURE_CXMMX    (3*32+ 0) /* Cyrix MMX extensions */
#define X86_FEATURE_K6_MTRR    (3*32+ 1) /* AMD K6 nonstandard MTRRs */
#define X86_FEATURE_CYRIX_ARR    (3*32+ 2) /* Cyrix ARRs (= MTRRs) */
#define X86_FEATURE_CENTAUR_MCR    (3*32+ 3) /* Centaur MCRs (= MTRRs) */
#define X86_FEATURE_REP_GOOD    (3*32+ 4) /* rep microcode works well on this CPU */
#define X86_FEATURE_CONSTANT_TSC (3*32+5) /* TSC runs at constant rate */
#define X86_FEATURE_SYNC_RDTSC  (3*32+6)  /* RDTSC syncs CPU core */
/* Intel-defined CPU features, CPUID level 0x00000001 (ecx), word 4 */
#define X86_FEATURE_XMM3    (4*32+ 0) /* Streaming SIMD Extensions-3 */
#define X86_FEATURE_MWAIT    (4*32+ 3) /* Monitor/Mwait support */
#define X86_FEATURE_DSCPL    (4*32+ 4) /* CPL Qualified Debug Store */
#define X86_FEATURE_EST        (4*32+ 7) /* Enhanced SpeedStep */
#define X86_FEATURE_TM2        (4*32+ 8) /* Thermal Monitor 2 */
#define X86_FEATURE_CID        (4*32+10) /* Context ID */
#define X86_FEATURE_CX16    (4*32+13) /* CMPXCHG16B */
#define X86_FEATURE_XTPR    (4*32+14) /* Send Task Priority Messages */
/* VIA/Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001, word 5 */
#define X86_FEATURE_XSTORE    (5*32+ 2) /* on-CPU RNG present (xstore insn) */
#define X86_FEATURE_XSTORE_EN    (5*32+ 3) /* on-CPU RNG enabled */
#define X86_FEATURE_XCRYPT    (5*32+ 6) /* on-CPU crypto (xcrypt insn) */
#define X86_FEATURE_XCRYPT_EN    (5*32+ 7) /* on-CPU crypto enabled */
/* More extended AMD flags: CPUID level 0x80000001, ecx, word 6 */
#define X86_FEATURE_LAHF_LM    (6*32+ 0) /* LAHF/SAHF in long mode */
#define X86_FEATURE_CMP_LEGACY    (6*32+ 1) /* If yes HyperThreading not valid */

Luka Gerzic Linux/BSD , , , , , , , , ,

ClusterSSH

May 26th, 2009

Ako imate veći broj servera i potrebno vam je da uradite identičnu operaciju  (npr. da jednim potezom uništite sav svoj rad, naravno greškom) na svim serverima odjednom (a da se pritom ne mučite ni malo) alat pod nazivom ClusterSSH može vam završiti posao. CSSH ima jednostavan konfiguracioni fajl koji možete generisati na sledeći način:

stinger@noc:~$ cssh -u > ~/.csshrc
stinger@noc:~$

Unutar fajla možete definisati svoju listu servera kojima želite da pristupate, a savetujem vam da podesite i još neke parametre (po svom ukusu naravno), evo primera:

extra_cluster_file=~/.cssh_list
screen_reserve_top=20
terminal_reserve_top=5
terminal_size=80x20
ssh=/usr/bin/ssh
ssh_args= -x -o ConnectTimeout=10

Bitno je da definišete svoj extra_cluster_file (kako ne bi koristili sistemski predefinisani ili ako isti niste u mogućnosti da kreirate s obzirom da je isti u /etc). Unutar njega pravite listu servera koje želite simultano da kontrolišete. Unutar ovog fajla kreirate listing na sledeći način:

# Primer komentara
imegrupe admin1@server1 admin2@server2 server3 server4

Vodite računa da u spisku servera navodite prvo ime grupe koju će te kasnije pozivati, a u njenom produžetku navodite user@server ili samo server. U suštini trebalo bi da na svim serverima imate definisanog istog korisnika ili (malo verovatno ali moguće) da imate različite korisnike sa istom šifrom. To bi otprilike izgledalo ovako:

# Produkcioni mail serveri
mxgrp mx1.server.net mx2.server.net mx3.server.net pop3.server.net
# Produkcioni dns serveri
nsgrp ns1.server.net ns2.server.net
# Test serveri
testgrp sandbox.example.com crash.server.net
# Sve grupe zajedno
allgrps mxgrp nsgrp testgrp

Primetićete da u poslednjoj liniji imamo grupu allgrps koja poziva gore navedene grupe. To vam omogućuje da iz jedne grupe pozivate druge predefinisane grupe. Postoje i druge opcije koje vam mogu olakšati život, ovde sam nabrojao samo neke. Za ostatak man cssh. Da bi ste recimo otvorili terminale ka mx serverima kucate sledeće:

stinger@noc:~$ cssh mxgrp

Tada će CSSH kreirati terminale ka svim mašinama. To izgleda ovako:

Koristan alat za sve one koji imaju veliki broj mašina a potrebno im je da urade neku operaciju na svim tim serverima (tipa da vanredno pokrenete update nekog paketa), ovaj alat postaje dodatno lakši za korišćenje ukoliko koristite ssh predefinisane ključeve.

Luka Gerzic Linux/BSD , , , , ,

nmon: besplatni alat za analizu performansi AIX-a i Linux-a

April 11th, 2009

Pre nego što krenem da pišem o samom NMON-u, za one koji ga već uveliko koriste jedna dobra vest. NMON je konačno postao sastavni deo AIX-a od verzije 5.3 TL9 kao i uz 6.1 TL2 (u šta ulazi i VIOS 2.1). Naime IBM je konačno uvrstio ovaj alat u svoj support base, tako da će sada NMON dolaziti standardno uz sam AIX. Nova verzija NMON-a se zove topas_nmon, sadrži sve mogućnosti i opcije kao i klasični nmon 12e. Stara (klasična) verzija nmon-a će biti još neko vreme podržana, međutim sav razvoj se prebacuje na topas_nmon.  Dosadašnja praksa je bila da se NMON ažurira na otprilike svakih 6 meseci, sada će to biti prilikom svakog update-a AIX-a kroz IBM support kanale. Verzija NMON-a za linux neće biti poremećena novim statusom, i nastavlja svoj “život” kao i do sada.

Za one koji ga do sada nisu koristili, ili koji su samo čuli o ovom programu, pre svega evo malo informacija. NMON je skraćenica od Nigel’s Monitor (po autoru programa). Ovaj besplatni alat će vam omogućiti detaljan uvid u rad vašeg AIX /Linux sistema. Sam NMON ima mogućnost prikaza podataka na više načina. Direktno na ekran preko vama omiljenog terminala, ili direktno u fajl za kasniju obradu i analizu. Ako koristite ovu drugu opciju postoje različite vrste parsiranja podataka koje su drugi kreirali, a istakao bih NMON Analyser Excel spreadsheet koji će vam output fajl parsirati i prikazati lepe i zanimljive grafikone ili izveštaje. Uz manje parsiranje output fajl možete provući i kroz rrdtool i kreirati sebi lepe realtime grafikone opterećenja pojedinih sistema koji vas interesuju, a iste kasnije lako možete prikazati na web-u (ili nekom fensi izveštaju). NMON može prikazati sledeće informacije:

  1. CPU utilizaciju
  2. Iskorišćenost memorije
  3. Različite statistike Kernel-a
  4. Disks I/O, transfer statuse, i read/write odnose
  5. Slobodan prostor na disk sekcijama
  6. Disk adaptere i njihove performanse
  7. Mrežne I/O odnose, iskorišćenost i performanse
  8. Swap (page space) utilizaciju, slobodan prostor itd.
  9. Specifikacije CPU-a i AIX-a
  10. IBM HTTP Web cache
  11. Custom disk grupe
  12. Specifikaciju samog hardware-a (mašine) i njene resurse
  13. Asynchronous I/O – (samo na AIX-u)
  14. Workload Manager (WLM) – (samo na AIX-u)
  15. IBM TotalStorage® Enterprise Storage Server® (ESS) disks – (samo na AIX-u)
  16. Network File System (NFS)
  17. Dynamic LPAR (DLPAR) changes – (samo na AIX-u i IBM pSeriji)

Startup NMON-a izgleda ovako:

Na početnom ekranu NMON-a birate njegove opcije prikaza. Nemoguće je prikazati sve opcije NMON-a na jednom ekranu, ali mislim da ovaj screeny dobro ilustruje deo mogućnosti ovog alata:

Na gore prikazanoj slici, NMON prikazuje aktivnost virtuelnih CPU-a, iskorišćenost memorije, swap-a, mreže, I/O volume grupa koje sistem poseduje, virtuelnih diskova koji su dodeljeni sistemu, top procese i detaljne statistike AIX kernela. Ovo naravno nije sve što NMON može da prikaže adminu sistema, kao što sam gore napisao, mogućnosti su velike. Fino tjuniranje sistema sa direktnim uvidom u efekte vašeg prčkanja možete videti odmah, vrlo detaljno sa samo par komandi. O situacijama kada treba da ustanovite šta “guši” vaš AIX sistem neću ni da govorim. Ovo je jedan od must have alata za svakog AIX admin-a.

A evo kako to može da izgleda u praksi prilikom nadzora rada jednog LPAR-a, gde je fokus na disk sekciji (klikni da veću fotku):

Luka Gerzic AIX, IBM P Serija, Linux/BSD , , , , , , , ,

VMware mobile virtuelizacija

March 24th, 2009

VMware je prikazao svoju novu mobilnu platformu za virtuelizaciju koja vam omogućava da na svom mobilnom telefonu pokrenete 2 operativna sistema (na video snimku se vidi kako demonstrator pokreće Window$ CE i Google Android na istom telefonu). Iako je u pitanju preveliki i nimalo praktični Nokia N800 (da ne kažem cigla), prikaz njihovog hypervisor-a i nove tehnologije je itekako zanimljiv.

Ovo bi generalno trebalo da znači da u budućnosti možemo da očekujemo jednostavnu migraciju svog radnog okruženja (operativnog sistema) sa jednog na drugi mobilni telefon.Više detalja na originalnom članku koji je preneo ITPro časopis.

Luka Gerzic Linux/BSD, Razno , , , , , , , ,

Linux VPN tips

March 18th, 2009

Ako koristiš linux kao i ja, i u nekom trenutku poželiš da koristiš vpn (prošla su ta davna vremena direktnih konekcija preko telnet-a ili ssh-a) može da se desi da ćeš naleteti na problem poput ovog: vpnc not able to establish connection with remote cisco device.

U okviru ovog texta pokušaću da rešim barem neke od mogućih problema prilikom uspostavljanja vpn veze pod linux-om.

Izvesnom prilikom kada sam pokušao da se konektujem direktno na cisco vpn koncentrator, dobio sam sledeću grešku:

vpnc: response was invalid [2]: (ISAKMP_N_INVALID_PAYLOAD_TYPE)(1)

Posle malo googlanja, i čeprkanja po source-u vpnc-a primetio sam da vpnc klijent šalje specifičan greeting udaljenom hostu (u ovom slučaju cisco vpn koncentratoru) koji nije hteo da prihvati taj tip hello-a s obzirom da vpnc oponaša cisco vpn windows aplikaciju. U određenim okolnostima cisco vpn ima mogućnost nametanja specifičnih podešavanja klijentu koji pokušava da se konektuje na mrežu putem vpn-a kao što bi recimo bilo podešavanje lokalnog firewall-a na klijentu ili nekih drugih opcija koje udaljeni administrator podesi kod sebe. Ako se ne varam, ovo se kod cisco-a zove “Cisco Systems Integrated Client Firewall, Capability: (Centralized Protection Policy)”. Interesantno je da detaljnom inspekcijom sadržaja paketa kao i logovanjem čitave sesije prilikom inicijalne konekcije možete saznati tačno koji tip uređaja je sa druge strane. U mom slučaju to je bio: “Cisco IOS Software, 2800 Software (C2800NM-ADVIPSERVICESK9-M), Version 12.4(15)T1, RELEASE SOFTWARE (fc2)”. U svakom slučaju, problem je bio u samom tkz. pozdravnom segmentu, i sve što treba da uradiš je:

# wget http://www.unix-ag.uni-kl.de/~massar/vpnc/vpnc-0.5.1.tar.gz

ujedno skini i libgcrypt11 biblioteku, moguće da je već imaš ali za svaki slučaj.

Pre kompajliranja vpnc-a, otvori u svom omiljenom editoru config.c fajl i pronađi sledeću liniju u njemu:

asprintf(&version, "Cisco Systems VPN Client %s:%s", VERSION, uts.sysname);

zakomentariši je i umesto nje umetni:

asprintf(&version, "Cisco Systems VPN Client %s:%s", "4.8.00 (0490)", "Linux");

Po završenim izmenama, snimi fajl i odradi standardni make && make install. Nemoj da zaboraviš da obrišeš lokalnu kopiju vpnc binarnih fajlova ako si ih već imao na svojoj mašini.

# mv /usr/sbin/vpnc /usr/sbin/vpnc.old
# mv /usr/sbin/vpnc-disconnect /usr/sbin/vpnc-disconnect.old
# ln -s /usr/local/sbin/vpnc /usr/sbin/vpnc
# ln -s /usr/local/sbin/vpnc-disconnect /usr/sbin/vpnc-disconnect

Da bi konvertovao svoje cisco pcf fajlove možeš da iskoristiš skriptu koju dobijaš uz vpnc. A primer konverzije bi bio:

# /usr/share/vpnc/pcf2vpnc youcompany.pcf yourcompany.conf

A taj fajl bi potom trebalo prebaciti u /etc/vpnc/yourcompany.conf

Potom pokreni vpnc:

root@noc:/# vpnc yourcompany
Enter password for admin@xxx.xxx.xxx.xxx:
VPNC started in background (pid: 8444)...
root@noc:/#

I to bi trebalo da ti omogući da nesmetano koristiš vpnc iz linux-a.

Drugi problem na koji ćeš možda naleteti je:

MTU size missconfiguration

Pošto se konačno uspešno konektuješ na udaljeni sistem preko vpnc-a (ili nekog drugog vpn klijenta), može lako da se desi da odmah po uspostavljanju konekcije i tvog logovanja na sistem, odmah posle bilo koje komande, da se dogodi da ti se sesija “smrzne” i da ti se konzola potom diskonektuje. Ovo je najverovatnije problem u konfiguraciji MTU veličine. Ako koristiš vpnc, po uspostavljanju uspešne veze primetićeš da si dobio novi interfejs na mašini, najverovatnije će se zvati tun0. Proveri MTU na tom interfejsu komandom:

root@noc:/# ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:xxx.xxx.xxx.xxx  P-t-P:xxx.xxx.xxx.xxx  Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1412  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Za početak probaj da izmeniš na default vrednost od 1300 sledećom komandom:

root@noc:/# ifconfig tun0 mtu 1300

Potom proveri da li je interfejs zaista dobio novi MTU size:

root@noc:/# ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:xxx.xxx.xxx.xxx  P-t-P:xxx.xxx.xxx.xxx  Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1300  Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:25 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:746 (746.0 b)  TX bytes:4447 (4.3 KB)

Ako jeste, onda si završio posao. Ako međutim i dalje imaš problem kao što sam gore napisao moguće je da tvoji mrežni administratori iz nekog razloga forsiraju drugačiji MTU size, najbolje je da se kod njih informišeš koji MTU koristi udaljena lokacija na koju želiš da se nakačiš VPN-om.

Moram da priznam da ne koristim winblows (sem pod virtuelnom mašinom), ali neko me je svojevremeno pitao kako da namesti MTU na winblows mašini. Nisam nikakav stručnjak za winblows niti me on interesuje, ali regeditom unutar sledećeg key-a možete izmeniti MTU:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\ Interfaces\[Adapter ID]

Vrednost mora biti uneta decimalno!

Eto to bi bilo to što se tiče gore navedena 2 problema prilikom korišćenja VPN-a pod linux-om.

Luka Gerzic Linux/BSD , , , , , ,

glibc optimizacija

March 18th, 2009

Ne tako davne 2003 godine, moj prijatelj i ja smo primetili lošu optimizaciju nekih kompajlera (na nekim platformama) pokušavajući da kreiramo specifično okruženje za ultra siguran server koji je trebao da trpi izuzetno veliko opterećenje. Posle dužeg ćaskanja na ES forumu (što se tada svelo na praktično gubljenje vremena, jer su neki držali takozvani gnu-brain-wash stav), priču smo preneli na malo ozbiljniji nivo. Poslali smo email na glibc dev listu, gde se kasnije vodila diskusija. Rezultate kao i logove svega ovoga nalaze se lokalno u ovom fajlu. Ukratko i radi najjednostavnijeg primera, kompajlirali smo prazan program:

echo "int main() {}" > linux.c
gcc -o linux linux.c
gcc -static -o linux-static linux.c
strip linux-static
ls -al

A rezultati su varirali od platforme do platforme:

 system        | arch. |  glibc ver.  |  dynamic  | static strip |
+--------------+-------+--------------+-----------+--------------+
 Slackware 7.1 |   x86 |    2.91.66   |    11505  |       205360 |
 Slackware 8   |   x86 |     2.95.3   |    13102  |       339360 |
 Slackware 9   |   x86 |      3.2.2   |    10960  |       413360 |
 Debian 3      |  ia64 |   ia64 3.3   |     6831  |       848600 |
 Debian 3      | alpha |     2.95.4   |     8669  |       518224 |
 Red Hat 7.2   | alpha |       2.96   |   178107  |       493464 |
 SuSe 7.1      | alpha |       2.96   |   167243  |       451560 |
 FreeBSD 4.8   |   x86 |     2.95.4   |     4180  |        12284 |
 NetBSD 1.6    |   x86 |     2.95.3   |     5737  |        12500 |
 OpenBSD 3.2   |   x86 |     2.95.3   |    25306  |        20480 |
 HP-UX B.11.11 |hppa64 |        3.2   |     8440  |       234832 |
 SunOS 5.6     | sparc |      2.8.1   |    24156  |        77364 |
 SunOS 5.8     | sparc |        3.2   |     6164  |        77312 |
+--------------+-------+--------------+-----------+--------------+

Još tada videlo se koje platforme i koji operativni sistemi imaju daleko bolju optimizaciju, i vode računa (opet priča o malloc()-u). Razlike su bile drastične, iz gornje tabele se može videti da su neki fajlovi bili i do 10 puta veći. Iako su gore prikazane verzije operativnih sistema dosta stare, situacija se popravila samo kod nekih.

Luka Gerzic Linux/BSD , , , , ,