Mar 02 2010

Překlad utility SysBench na Debianu Lenny

Tag: Debian,English,HW Tunning,Linux,MySQLJens @ 23:00

Tento článke je k dispozici pouze v jazyce English.


Feb 10 2010

Linuxový repozitář aplikací od Googlu

Tag: Debian,LinuxJens @ 09:30

Na stánkách http://www.google.com/linuxrepositories/ lze najít návody a odkazy na repozitáře software od Googlu — a to pro různé linuxové distribuce: Debian, Ubuntu, Suse, Mandrivia, RedHat. Je zde popsán jak postup přidání repositáře preš „naklikání“ v GUI, tak pomocí příkazového řádku — například pro Debian s APT.

A jaké že to aplikace (je tam i několik knihoven) lze v repositáři nalézt?

  • google-chrome-beta – The web browser from Google
  • google-desktop-linux – Google Desktop: Personalize and organize your own computer
  • picasa – Image management application from Google

Moc toho není, ale komu se nechce složitě schánět/překládat třeba zrovna prohlížeč Google Chrome, může využít právě tuto nejjednodušší cestu.


Nov 23 2009

MySQL: Hromadná kontrola tabulek

Tag: Debian,MySQLJens @ 10:00

V aktuální old-stable (Etch) a vyšších verzí debianu se při spouštění MySQL 5.x automaticky provádí kontrola tabulek (CHECK TABLE) a případně i oprava (REPAIR TABLE) poškozených tabulek. Toto má nastarosti skript /etc/mysql/debian-start a funkce check_for_crashed_tables (definovaná v /usr/share/mysql/debian-start.inc.sh). Občas je ale potřeba explicitně prověřit všechny databáze a tabulky, to lze nejjednodušeji udělat z příkazové řádku pomocí utility mysqlcheck:

/usr/bin/mysqlcheck --defaults-file=/etc/mysql/debian.cnf --verbose --all-databases

Konfigurační soubor /etc/mysql/debian.cnf je přístupný pouze pro roota (tedy výše zmíněný příkaz lze spustit pouze pod rootem) a jsou v něm uloženy autentizační údaje pro systémový učet Debianu (debian-sys-maint) do MySQL.


Oct 01 2009

Jak zjistit verzi Debianu? – lsb_release!

Tag: DebianJens @ 10:36

Jak nejjednodušeji zjistit, jakou verzi Debianu či Ubuntu zrovna používáte, případně jaká verze Linuxu je použita na systému, kde jste se zrovna přihlásili? Určite se dá nají nějaký ten vhodný objekt v /etc/ kde to vyčtete, ale tato informace (například v /etc/issue) není vždy úplně přesná či úplná. Řešením je příkaz lsb_release (Linux Standard Base and Distribution information):

franta:~# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 5.0.2 (lenny)
Release:        5.0.2
Codename:       lenny

Tuto utilitu obsahuje balíček lsb-release a tedy nemusí být vždy součástí dané instalace, často však bývá standardní součástí systému. Nicméně, pokud se podíváte hlouběji pod kapotu (cat /usr/share/pyshared/lsb_release.py), tak zjistíte že se jedná pouze o Python, který prochází různé soubory (např. /etc/debian_version) a detekuje z nich verzi.


May 06 2009

mdadm: RebuildStarted event na Debianu

Tag: Debian,HW Tunning,LinuxJens @ 21:30

Na několikati Debianích strojích, které mám možnost spravovat jsem si až nedávno všiml velmi pozoruhodného úkazu — každou první neděli v měsíci okolo prvním hodiny ráno vyletí zatížení stroje na poměrně vysoké hodnoty, přičemž převažují především iowaity. V zápětí jsem zjistil že to má nastarost softwarový RAID a démon mdadm, který právě v tuto dobu spouští „kontrolu“ softwarového diskového RAIDu — utilita checkarray.

Příčinu jsem našel v souboru /etc/cron.d/mdadm:

#
# cron.d/mdadm -- schedules periodic redundancy checks of MD devices
#
# Copyright © martin f. krafft <madduck@madduck.net>
# distributed under the terms of the Artistic Licence 2.0
#

# By default, run at 00:57 on every Sunday, but do nothing unless the day of
# the month is less than or equal to 7. Thus, only run on the first Sunday of
# each month. crontab(5) sucks, unfortunately, in this regard; therefore this
# hack (see #380425).
57 0 * * 0 root [ -x /usr/share/mdadm/checkarray ] && [ $(date +%d) -le 7 ] && /usr/share/mdadm/checkarray --cron --all --quiet

Předpokládal bych, že tato utilita „nějak“ zkontroluje příslušný MD oddíl a v případě zjištění nedostatků, spustí jeho synchronizaci. Realita je však jiná, na všech strojích spustila tato utilita kompletní synchronizaci všech oddílů.

May  3 00:57:01 localhost /USR/SBIN/CRON[22337]: (root) CMD ([ -x /usr/share/mdadm/checkarray ] && [ $(date +%d) -le 7 ] && /usr/share/mdadm/checkarray --cron --all --quiet)
May  3 00:57:02 localhost kernel: [141056.924658] md: data-check of RAID array md0
May  3 00:57:02 localhost kernel: [141056.924663] md: minimum _guaranteed_  speed: 1000 KB/sec/disk.
May  3 00:57:02 localhost kernel: [141056.924666] md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for data-check.
May  3 00:57:02 localhost kernel: [141056.924670] md: using 128k window, over a total of 97659008 blocks.
May  3 00:57:02 localhost kernel: [141056.926736] md: delaying data-check of md1 until md0 has finished (they share one or more physical units)
May  3 00:57:02 localhost kernel: [141056.928064] md: delaying data-check of md2 until md1 has finished (they share one or more physical units)
May  3 00:57:02 localhost kernel: [141056.928070] md: delaying data-check of md1 until md0 has finished (they share one or more physical units)
May  3 00:57:02 localhost mdadm[2769]: RebuildStarted event detected on md device /dev/md0
...

Nevím jestli je možné, že za měsíc provozu libovolného stroje se MD svazky tak rozhodí, že je třeba provést pravidelnou synchronizaci, ale přijde mě minimálně divné, že se to dělej na všech vzájemně nezávislých strojích měsíc co měsíc — vždy kompletní synchronizace pro všechny svazky.

May  3 00:57:02 localhost mdadm[2769]: RebuildStarted event detected on md device /dev/md0
May  3 01:00:02 localhost mdadm[2769]: Rebuild20 event detected on md device /dev/md0
May  3 01:04:02 localhost mdadm[2769]: Rebuild40 event detected on md device /dev/md0
May  3 01:07:02 localhost mdadm[2769]: Rebuild60 event detected on md device /dev/md0
May  3 01:10:02 localhost mdadm[2769]: Rebuild80 event detected on md device /dev/md0
May  3 01:12:11 localhost mdadm[2769]: RebuildStarted event detected on md device /dev/md1
May  3 01:12:11 localhost mdadm[2769]: RebuildFinished event detected on md device /dev/md0
May  3 01:18:11 localhost mdadm[2769]: Rebuild20 event detected on md device /dev/md1
May  3 01:24:11 localhost mdadm[2769]: Rebuild40 event detected on md device /dev/md1
May  3 01:30:11 localhost mdadm[2769]: Rebuild60 event detected on md device /dev/md1
May  3 01:36:11 localhost mdadm[2769]: Rebuild80 event detected on md device /dev/md1
May  3 01:41:31 localhost mdadm[2769]: RebuildStarted event detected on md device /dev/md2
May  3 01:41:31 localhost mdadm[2769]: RebuildFinished event detected on md device /dev/md1
May  3 01:48:31 localhost mdadm[2769]: Rebuild20 event detected on md device /dev/md2
May  3 01:54:31 localhost mdadm[2769]: Rebuild40 event detected on md device /dev/md2
May  3 02:02:31 localhost mdadm[2769]: Rebuild60 event detected on md device /dev/md2
May  3 02:09:31 localhost mdadm[2769]: Rebuild80 event detected on md device /dev/md2
May  3 02:18:00 localhost mdadm[2769]: RebuildFinished event detected on md device /dev/md2, component device mismatches found: 128

Z výsledku logu přitom jasně vyplýva, že problém byl nalezen pouze na svazku md3, ale všechny ostatní byly v pohodě.

Proto doporučuji, pokud používate mdadm a váš stroj poskytuje nějakou důležitou službu, jejíž chod by mohlo omezit přílišné zatížení systému v době synchronizace, tuto kontrolu vypnout a spouštět příkazem /usr/share/mdadm/checkarray --cron --all --quiet raději ručně v době, kdy vám to více vyhovuje.


Mar 22 2009

bonnie++: linux filesystem benchmark

Tag: Debian,HW Tunning,LinuxJens @ 01:00

Jak otestovat výkonnost souborového systému na linuxu? Je lepší ext3, ReiserFS, JFS nebo XFS? Jaký RAID použít a jako ho nastavit? Odpověď není jednoduchá, vždy záleží na konkrétní situaci a na konkrétních požadavcích. Jedno je ale jasné, většina z nás chce dosáhnout maximálního výkonu při zachování bezpečnosti uložených dat. To jak otestovat výkonnost filesystému na linuxu je předmětem tohoto článku.

Utilita bonnie++

Tato jednoduchá utilitka testuje zvolený filesystém tím že na něj vytvoří různými způsoby poměrně velké souboru (ve výchozím stavu 2 * velikost RAM po 1 GB — tedy 8 GB RAM = 16 * 1GB souborů), které následně čte a přepisuje. Toto všechno měří a počítá rychlosti jednotlivých operací, navíc v dalších testech umí vyvářet různé (volitelné) množství souborů a adresářů, ke kterým různě přistupuje (mazání a čtení). Otestuje tedy i schopnost filesystému rychle přistupovat k adresářům a souborům.
Instalace bonnie je na Debianu velmi jednoduchá, i ve stable existuje balíček bonnie++:

# apt-get install bonnie++

Spuštění je téměř stejně jednoduché jako instalace, vytvoříte si na testovaném FS nějaký adresář (například /var/bonnie):

# mkdir -m 0777 /var/bonnie
# bonnie++ -d bonnie -u root:root

a už to jede …, výsledek testu se pak zobrazí v textovém formátu přibližně takto (důležitý pro další zpracování je poslední řádek):

jens,16G,62748,98,180566,53,79826,14,71269,94,230871,21,614.8,0,16,31768,100,+++++,+++,+++++,+++,31162,99,+++++,+++,+++++,+++

Tomuto bonnie říká CSV formát, zároveň s utilitou bonnie++ se vám taky nainstalují bon_csv2html a bon_csv2txt. První převádí CSV formát do přehledné HTML tabulky a druhý generuje textovou tabulku.
bon_csv2html lze použít následovně:

# echo "jens,16G,62748,98,180566,53,79826,14,71269,94,230871,21,614.8,0,16,31768,100,+++++,+++,+++++,+++,31162,99,+++++,+++,+++++,+++" | bon_csv2html > bonnie.html

Výsledný soubor bonnie.html je výsledková tabulka s popisky a s výsledky (ke každému testu rychlost a zatížení CPU), pokud provedeme více testování, pak si všechny výsledné řádky dáme do jednoho souboru, např. bonnie.txt a vygenerujete si výsledkovou tabulku pro všechny testy:

# cat bonnie.txt | bon_csv2html > bonnie.html

Při použiti bon_csv2txt získáváte textový výstup:

Version  1.03e      ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
jens            16G 62748  98 180566  53 79826  14 71269  94 230871  21 614.8   0
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
jens             16 31768 100 +++++ +++ +++++ +++ 31162  99 +++++ +++ +++++ +++

Je důležité říci, co znamenají hodnoty ++++ a +++ ve výsledku benchmarku: tento výsledek znamená, že test proběhl tak rychle (méně jako 500ms), že nebylo možně vyhodnotit správnou hodnotu a proto raději nevypíše nic, než nevypovídající číslo. Z tohoto důvodu je třeba parametry spuštění ještě lehce upravit tak, aby benchmark vyvořil více souborů a aby naměřil nějaké relevantní hodnoty. Vetšinou se s tím setkáte u create testů, které vytváří soubory a adresáře. Proto nastavte parametr -n například takto:

# bonnie++ -d bonnie -u root:root -n 16:10000:16:64

Důležité odkazy na bonnie++:


Mar 14 2009

Debian: jak změnit výchozí editor

Tag: Debian,LinuxJens @ 17:31

Debian (Etch i Lenny) používá ve výchozím stavuj editor nano. Toto lze jednoduše změnit pomocí utility update-alternatives. Pokud tedy chcete používat například vi nebo vim namísto nano, tak hurá do toho.

# update-alternatives --config editor

Tento příkaz vám pak dá na výběr, začátečník si pak může vybrat třeba i iterní editor který používá Midnight Commander: mcedit.

franta:~# update-alternatives --config editor

There are 5 alternatives which provide `editor'.

  Selection    Alternative
-----------------------------------------------
          1    /bin/ed
 +        2    /bin/nano
          3    /usr/bin/vim.tiny
*         4    /usr/bin/vim.basic
          5    /usr/bin/mcedit-debian

Press enter to keep the default[*], or type selection number:

Další zajímavá věc, které s tímto tak trochu souvisí je, že v poslední době se ve výchozí instalaci Midnight Commanderu (mc) používá také nano jako výchozí editor. To je poměrně nepříjemné, protože nano mě přijde oproti mcedit jaksi nepřívětivé. Toto lze však také velmi jednoduše změnit, v konfiguraci mc si zaškrtnete use internal edit (viz obrázek).

debian mcedit use internal editor


Feb 15 2009

Debian Linux 5.0 – Lenny – uvolněn

Tag: Debian,ZprávičkyJens @ 23:30

Pětkrát sláva! Po 22 měsících vývoje byla dnes vydána další stabilní verze Debianu: Debian GNU/Linux 5.0 s kódovým označením Lenny. Testing verze se tedy tak stala stable, aktuální testing se stává verze s kódovým označením Squeeze.

Důležité novinky jsou z mého pohledu především tyto:

  • jádro Linux verze 2.6.26
  • Apache 2.2.9
  • MySQL 5.0.51a
  • PHP 5.2.6

A ještě link na oficiální stránku novinky o vydání Debianu 5.0.


Jan 11 2009

Jak nainstalovat Monitorix na Debian

Tag: Debian,Linuxadmin @ 23:00

Nedávno jsem objevil další zajímavý nástroj na monitorování systémuMonitorix. Né že by to byla nějaká novinka na poli monitorovacích nástrojů různých systém, těch existuje celá řada, kvalitních a vyzkoušených, co monitorují kde co. Monitorix mě zaujal ale svými screenshoty, které vypadaly z dálky velmi dobře, tak jsem to zkusil nainstalovat. Jelikož to vypadá, že je to poměrně mladý projekt, tak mě bylo jasné že v Debianu balíček určitě nebude, i když používám současný testing (Lenny). Takže klasická instalace ze zdrojáků.

Monitorix monitoruje:

  • CPU: vytížení, procesy, pamět, teplotu
  • Časy procesů user, nice, system, idle a i/o wait)
  • Teploty pomcí LM-Sensors a HDDtemp
  • Využití disků (max. 5 mount-pointů)
  • Síťová rozhraní input/output (max. 5)
  • Aktivitu na uživatelsky definovatelných portech sítového rozhraní
  • Aktivitu přerušení sytému
  • Monitorování služeb SMTP, SSH, FTP, Telnet, Samba, NetAtalk, VirusMail, FAX, POP3 a HTTP
  • … a možná i další


Příprava instalace

V době psaní tohoto článku byla aktuální verze Monitorixu 1.2.2, na oficiálních stránkách je uveden návod na instalaci v Ubuntu, který bohužel se nezdá příliš aktuální. Monitorix používá pro vykreslování grafů nástroj RDDtool, takže před vlastní instalací Monitorixu bude třeba ještě nainstalovat balíček rddtool a knihovnu rddtool librrds-perl pro Perl – protože Monitorix je napsán celý v Perlu.

# apt-get install rrdtool librrds-perl

Instalace Monitorixu ze zdrojáků

# wget http://www.monitorix.org/monitorix-1.2.2.tar.gz
# tar xfz monitorix-1.2.2.tar.gz
# cd monitorix-1.2.2
# ./install.sh

Až se vás to zeptá, jakou distribuci chce instalovat, zvolte: 3 – Debian a poté už další otázky jen potvrďte (případně postupujte dle uvážení).

Příprava na spuštění

V tuto chvíli by teoreticky mohlo být vše připraveno na spuštění, ale to by autor musel odstranit všechny mušky příslušné verze. V první řadě je třeba vytvořit adresář, kam se budou logovat stavy systému aby se z nich následně daly vytvořit grafy.

# mkdir -p /var/lib/monitorix

Dále, ač jsme sice zvolili instalaci pro Debian, tak se nainstaluje defaultní verze konfiguračního souboru /etc/monitorix.conf, proto je třeba jej upravit (jedná se především o řádek 34our $OSTYPE="Linux-RHFC" přepsat na our $OSTYPE="Linux-Debian", další parametry pak podle uvážení a potřeby, včetně sekce vybraných grafů.

our $TITLE="Jens.cz";                   # your company name
our $HOSTNAME="";                       # hostname of this server
our $OSTYPE="Linux-Debian";             # choose your OS type (see below)
our $IDATE="01 Jan 2009";               # initial statistics date
our $SAMBAVER="3";                      # Samba version (2 or 3)
our $MULTIHOST="N";                     # Enable multihost feature
our $MULTIHOST_FOOTER="Y";              # (multihost) display URL in image
our $MULTIHOST_IMGPERLINE="2";          # (multihost) # of images per line
our $REPORT_LANG="en";                  # Report language
our $THEME_COLOR="black";               # Default is "black", none is "white"
our $EMAIL="root@localhost";           # Generic email for reports
our $REFRESH_RATE="150";                # Web stats' refresh rate in seconds
our $ENABLE_CROND_MAIL="N";             # Error messages are sent by crond

Poslední věc co musíte udělat je ověřit nastavení případně přenastavit Apache tak, aby jste měli přes nějakou adresu dostupnou složku /var/www/monitorix (já jsem použil do svého virtual-hostu Alias, protože nemám DocumentRoot ve /var/www) a poté přístup k CGI skriptům přes klasickou URL ../cgi-bin/...

Alias /monitorix/ /var/www/monitorix/

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

Spuštění

A konečně můžete Monitorix spustit. On se sice tváří jako daemon, a spouští přes /etc/init.d/monitorix, ale to je jen skript, který vytvoří minutový cron /etc/cron.d/monitorix, který provádí monitorování systému.

# /etc/init.d/monitorix start

V případě že vám to při spuštění napíše nějakou chybu, tak máte nejspíše špatně nastaven konfigurační soubor a nebo nemáte vytvořené příslušné adresáře (/var/lib/monitorix, /var/www/monitorix).

Zhodnocení

Monitorix lze nainstalovat velmi rychle, jeho konfigurace je taktéž poměrně jednoduchá (v defaultním stavu jsou zobrazeny všechny grafy). Vypnuté jsou pouze statistiky z lm-sensors a hddtemp, které umožňují monitorování hardwaru – teplot, otáček atd. Grafické výstupy jsou obstojné, na úvodní stránce s výběrem zobrazovaného intervalu by se dalo zapracovat a doplnit možnost hodinového zobrazení a možnost zobrazení konkrétního intervalu od – do. Po nahlédnutí do zdrojáku musím říci, že je na celém nástroji ještě hodně práce, spousta věcí je tam jaksi „natvrdo“ a chtělo byt to lepší dokumentaci jak na webu, tak v kódu.

monitorix tool cpu screenshot

Jinak ještě upozorním, že v defaultní konfiguraci se Monitorix pokouší provádět monitorování různých portu síťového rozhraní, to dělá tak, že si přidá vlastní „pravidla“ pomocí iptables. Toto chování se konkrétně mě silně nelíbí, a proto doporučují vypnout před prvním spuštěním monitorování portů pomocí proměnné $ENABLE_PORT na „N“.


Jan 04 2009

Apache mod_rewrite a htaccess na Debianu

Tag: Apache,Debian,LinuxJens @ 23:00

Zprovoznění mod_rewrite pro Apache2 na různých verzích debianu nebylo vždy stejné. Dřívější funkční použití a2enmod vyžadovalo (na prvních verzích Etche) předponu mod_. V současné stable verzi (Etch/6) i v testing (Lenny) se oba přístupy sjednotili a stačí tedy už jen: a2enmod rewrite. Musím připomenou že utilita a2enmod vytváří pouze symbolický link z /etc/apache2/mods-available do /etc/apache2/mods-enabled (takže se bez ní dá jednoduše obejít s využítím ln -s ...).

Celý postup pak tedy vypadá následovně (vše je třeba dělat pod rootem nebo použít sudo).

  1. Povolení modulu
  2. # a2enmod rewrite
    
  3. Nastavení konfigurace Apache pro daný adresář a (virtuální doménu):
    <Directory /var/www/projekt>
    	Options FollowSymLinks
    	AllowOverride All
    </Directory>
    
  4. A konečně, v souboru /var/www/projekt/.htaccess musí být hned na začátku:
    RewriteEngine on

Pokud by jste chtěli být úplně „precizní“, tak se doporučuje ještě v souboru .htaccess zapsat konfiguraci pro přepisovaní pomocí mod_rewrite do podmíněného bloku kde se testuje, zda-li je mod_rewrite natažen. Tedy například takto:

<IfModule mod_rewrite.c>
	RewriteEngine On
	...
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteRule . /index.php [L]
	...
</IfModule>

Vyzkoušeno na: Lenny: Apache/2.2.9 a Etch: Apache/2.2.3.


Další stránka »