Defunct fcgid/fastcgi processes in Debian Jessie apache2

Wenn ihr unter dem aktuellen stabilen Release von Debian GNU/Linux – Codename Jessie – den Webserver Apache2 zusammen mit fcgid oder fastcgi einsetzt und von (z.B.) PHP-Prozessen geplagt werdet, die nicht richtig beendet werden und stattdessen als Zombie mit dem Zusatz <defunct> weiter in der Prozessliste rumgammeln bis FcgidMaxProcesses oder FcgidMaxProcessesPerClass erreicht ist und Eure Seite dann nicht mehr erreichbar ist, habe ich hier die Lösung für Euch.

So sieht das Problem aus:

% ps f -o user,pid,nice,%cpu,%mem,cputime,etime,tty8,command ax
USER       PID  NI %CPU %MEM     TIME     ELAPSED TTY      COMMAND
root     11886   0  0.0  0.0 00:00:12    08:45:37 ?        /usr/sbin/apache2 -k start
www-data 26825   0  0.0  0.0 00:00:04    06:27:00 ?         \_ /usr/sbin/apache2 -k start
user4    26854   0  3.3  0.0 00:13:07    06:27:00 ?         |   \_ [php5] <defunct>
user4    26856   0  5.6  0.0 00:21:45    06:27:00 ?         |   \_ [php5] <defunct>
user3    26976   0  0.3  0.0 00:01:31    06:26:51 ?         |   \_ [php5] <defunct>
user4    27389   0  5.1  0.0 00:19:37    06:23:13 ?         |   \_ [php5] <defunct>
user2     7283   0  1.5  0.0 00:04:08    04:32:24 ?         |   \_ [php5] <defunct>
user1    12657   0  1.2  0.0 00:02:56    03:46:37 ?         |   \_ [php5] <defunct>
user1    12680   0  1.9  0.2 00:04:23    03:46:35 ?         |   \_ /usr/lib/cgi-bin/php5
user2    19589   0  0.9  0.0 00:01:36    02:47:44 ?         |   \_ [php5] <defunct>
user3    21574   0  0.6  0.0 00:00:56    02:31:46 ?         |   \_ [php5] <defunct>
user4    24239   0  1.4  0.0 00:01:56    02:11:06 ?         |   \_ [php5] <defunct>
user4    24241   0  2.3  0.0 00:03:07    02:11:06 ?         |   \_ [php5] <defunct>
user4    24252   0  2.1  0.0 00:02:47    02:11:06 ?         |   \_ [php5] <defunct>
user4    24253   0  1.7  0.0 00:02:15    02:11:06 ?         |   \_ [php5] <defunct>
user4    24254   0  5.6  0.2 00:07:24    02:11:06 ?         |   \_ /usr/lib/cgi-bin/php5
user2    28074   0  1.0  0.0 00:00:57    01:30:14 ?         |   \_ [php5] <defunct>
user2    28088   0  1.8  0.2 00:01:42    01:30:14 ?         |   \_ /usr/lib/cgi-bin/php5
user2    30171   0  1.9  0.2 00:01:31    01:16:54 ?         |   \_ /usr/lib/cgi-bin/php5
user4    30676   0  5.4  0.2 00:04:05    01:15:05 ?         |   \_ /usr/lib/cgi-bin/php5
user4    30678   0  4.7  0.2 00:03:34    01:15:05 ?         |   \_ /usr/lib/cgi-bin/php5
user4    31164   0  5.7  0.2 00:04:11    01:13:10 ?         |   \_ /usr/lib/cgi-bin/php5
user3    32378   0  1.8  0.2 00:01:07    01:02:07 ?         |   \_ /usr/lib/cgi-bin/php5
user3    32385   0  1.4  0.2 00:00:53    01:02:06 ?         |   \_ /usr/lib/cgi-bin/php5
user3    32395   0  1.3  0.2 00:00:48    01:02:06 ?         |   \_ /usr/lib/cgi-bin/php5
user3    32402   0  1.6  0.2 00:01:01    01:02:06 ?         |   \_ /usr/lib/cgi-bin/php5
user3    32410   0  1.1  0.2 00:00:44    01:02:05 ?         |   \_ /usr/lib/cgi-bin/php5
user1      418   0  1.4  0.2 00:00:52       59:03 ?         |   \_ /usr/lib/cgi-bin/php5
user1      433   0  2.1  0.2 00:01:15       59:02 ?         |   \_ /usr/lib/cgi-bin/php5
user1      436   0  2.5  0.2 00:01:30       59:02 ?         |   \_ /usr/lib/cgi-bin/php5
user4     1266   0  4.9  0.2 00:02:31       51:23 ?         |   \_ /usr/lib/cgi-bin/php5
user2     3231   0  3.3  0.2 00:01:14       36:57 ?         |   \_ /usr/lib/cgi-bin/php5
www-data  6830   0  1.1  0.1 00:00:07       10:42 ?         \_ /usr/sbin/apache2 -k start
www-data  7145   0  1.2  0.1 00:00:06       08:23 ?         \_ /usr/sbin/apache2 -k start
www-data  7183   0  1.0  0.1 00:00:04       08:11 ?         \_ /usr/sbin/apache2 -k start

Der Webserver läuft seit fast 9 Stunden und es gibt viele fcgid-Prozesse (in diesem Fall PHP), die nicht korrekt beendet wurden und stattdessen als Zombie weiterleben. Zombie-Prozesse sind in der Regel kein Problem, da sie keine Ressourcen verbrauchen. In diesem Fall führt es aber dazu, dass die Zombie-Prozesse weiterhin mitgezählt werden und irgendwann keine neuen php5-Prozesse mehr gestartet werden, weil ja bereits genügend laufen. Je nach Traffic des Webservers ist so bereits nach ein paar Stunden das Limit erreicht und die Webseite(n) werden unerreichbar. Wird viel Traffic über verschlüsseltes SSL/TLS abgewickelt, erhöht das die Chancen, von diesem Problem betroffen zu sein.

Gleichzeitig findet mal im error.log des Webservers folgende Einträge:

[mpm_worker:emerg] [pid 18908:tid 139812686178048] (35)Resource deadlock avoided: AH00273: apr_proc_mutex_lock failed. Attempting to shutdown process gracefully.
[ssl:warn] [pid 31524:tid 140433418090240] (35)Resource deadlock avoided: AH02026: Failed to acquire SSL session cache lock

Die Lösung: in /etc/apache2/apache2.conf die folgende Zeile auskommentieren:

Mutex file:${APACHE_LOCK_DIR} default

Quellen:

Siehe auch Changelog zu apache2-2.4.20-1:

apache2 (2.4.20-1) unstable; urgency=medium

  • New upstream release – mostly bugfixes and HTTP/2 improvements
  • Build against lua 5.2 instead of 5.1. Closes: #820243
  • Correct systemd-sysv-generator behavior by customizing some parameters. This fixes ‘systemctl status’ returning incorrect results. Thanks to Pierre-André MOREY for the patch. LP: #1488962
  • On Linux, use pthread mutexes. On kfreebsd/hurd, continue using fctnl because they lack robust pthred mutexes. LP: #1565744, #1527044

— Stefan Fritsch <sf@debian.org>  Sun, 10 Apr 2016 14:03:41 +0200

hpsa Abort request on C0:B0:T0:L0 FAILED. Aborted command has not completed after 30 seconds.

When you’re running Linux on a HP Proliant Server with a SmartArray Controller attached and have errors in Syslog like

hpsa 0000:0e:00.0: Abort request on C0:B0:T0:L0
hpsa 0000:0e:00.0: ABORT REQUEST on C0:B0:T0:L0 Tag:0x00000000:00000010 Command:0x28 SN:0x88896  REQUEST SUCCEEDED.
hpsa 0000:0e:00.0: ABORT REQUEST on C0:B0:T0:L0 Tag:0x00000000:00000010 Command:0x28 SN:0x88896  FAILED. Aborted command has not completed after 30 seconds.
hpsa 0000:0e:00.0: resetting device 0:0:0:0
hpsa 0000:0e:00.0: device is ready.

and disk IO hangs but the SmartArray Controller reports no problems at all

Smart Array P410i in Slot 0 (Embedded)

   array A (SAS, Unused Space: 0  MB)

      logicaldrive 1 (558.7 GB, RAID 1+0, OK)

      physicaldrive 2I:1:1 (port 2I:box 1:bay 1, SAS, 300 GB, OK)
      physicaldrive 2I:1:2 (port 2I:box 1:bay 2, SAS, 300 GB, OK)
      physicaldrive 2I:1:3 (port 2I:box 1:bay 3, SAS, 300 GB, OK)
      physicaldrive 2I:1:4 (port 2I:box 1:bay 4, SAS, 300 GB, OK)

then chances are high that you have one drive that is going to die very soon.

After some hours and some more IO stalls and kernel logs like above the disk status will hopefully change to this:

Smart Array P410i in Slot 0 (Embedded)

   array A (SAS, Unused Space: 0  MB)

      logicaldrive 1 (558.7 GB, RAID 1+0, OK)

      physicaldrive 2I:1:1 (port 2I:box 1:bay 1, SAS, 300 GB, OK)
      physicaldrive 2I:1:2 (port 2I:box 1:bay 2, SAS, 300 GB, Predictive Failure)
      physicaldrive 2I:1:3 (port 2I:box 1:bay 3, SAS, 300 GB, OK)
      physicaldrive 2I:1:4 (port 2I:box 1:bay 4, SAS, 300 GB, OK)

Now you know which disk is causing the problem and can replace it.

No DRI/XVideo with radeon after Upgrading to openSUSE 11.3

After upgrading openSUSE 11.2 to 11.3 my

VGA compatible controller: ATI Technologies Inc RV370 5B60 [Radeon X300 (PCIE)]

couldn’t use DRI anymore and thus XVideo (e.g. with mplayer) wasn’t available anymore.

Error in dmesg:

[drm] radeon: cp idle (0x10000C03)
[drm] Loading R300 Microcode
[drm] radeon: ring at 0x00000000B8000000
[drm:r100_ring_test] *ERROR* radeon: ring test failed (sracth(0x15E4)=0xCAFEDEAD)
[drm:r100_cp_init] *ERROR* radeon: cp isn’t working (-22).
[drm:r100_cp_fini] *ERROR* Wait for CP idle timeout, shutting down CP.
[drm] radeon: cp finalized

Error in Xorg.0.log:

(II) AIGLX: Screen 0 is not DRI2 capable
(II) AIGLX: Screen 0 is not DRI capable

glxinfo:

% glxinfo | grep direct
direct rendering: No

xvinfo:

% xvinfo
X-Video Extension version 2.2
screen #0
no adaptors present

Solution:

  1. Remove any vga= options from /boot/grub/menu.lst (e.g. vga=0x31b)
  2. Disable bootsplash in /etc/sysconfig/bootsplash
  3. mkinitrd
  4. reboot

Thanks to hifi and Ke in #radeon on irc.freenode.net for their help and input on this matter.

Edit:

If this doesn’t help, try adding

nomodeset

to the kernel command line in /boot/grub/menu.lst (or just try the failsafe boot option which has this option added by default).

Thanks to cb400f in #suse on irc.freenode.net for pointing this out.

Wir haben ein Monster geschaffen!

Inspiriert durch Isotopps Artikel Ich habe ein Monster geschaffen! gibt es hier auch mal wieder einen techniklastigen Artikel von mir.

Unser bisheriger Backup-Server im Datacenter war ein betagter Proliant DL380 G3 und sollte durch etwas aktuelleres ersetzt werden, vorzugsweise mit mehr Plattenplatz als nur 6x 300GB im RAID10.

Aus wirtschaftlichen Gründen (es ist “nur” ein Backupserver) haben wir uns gegen einen Server von HP entschieden, nicht zuletzt weil die 1TB SATA-Platten von HP mit 299€/Stück einfach jenseits von gut und böse liegen im Vergleich zu aktuellen Preisen für nicht-HP SATA-Platten im regulären Handel.

Bei der Wahl des Chassis hatten sich mein Azubi und ich relativ schnell für das Chieftec UNC-410F-B entschieden – 4U, 10 5,25″-Einschübe und damit genug Platz für Platten. Außen an das Gehäuse kommt eine Schiene RSR-260 zwecks Rackmontage und fertig ist das Chassis.

Den Saft für den Server liefert das redundant ausgelegte 500W-Netzteil MRG-6500P, das mit seinen 8 Molex- und 2 SATA-Steckern vorläufig genug Anschlüsse liefert.

Beim Mainboard haben wir uns an das von Kris verbaute Asus P5Q Premium gehalten, mussten aber leider während der Testphase feststellen, dass von den 10 SATA-Ports nur 8 sinnvoll nutzbar sind und haben deshalb auch noch eine Adaptec 1430SA nachgekauft.

Auf dem Mainboard findet anschließend eine Intel Core2Quad Q9550 Boxed (C1) CPU, 4x 2GB RAM und eine beliebige Grafikkarte Platz.

Bei der Suche nach passenden Backplanes wurden wir bereits auf der Zubehörseite des Chassis fündig: 3 Backplanes SST-2131SAS verstauen insgesamt 9 Western Digital Caviar WD15EARS.

2 Backplanes bilden mit ihren je 3 Platten ein Software-RAID5 auf dem dann LVM mit einem striped Logical Volume aufsetzt – quasi ein RAID50, durch LVM aber komfortabler zu managen.

Debian Lenny 64-bit ist per PXE-Boot, USB-Stick oder USB-CDROM innerhalb von 10 Minuten installiert, anschließend installieren wir BackupPC und übernehmen die Config-Files vom alten Server.

Beim Partitionieren der Platten sollte man die Sektorgröße von 4kB beachten – “normales” Partitionieren, so wie es der Linux-Sysadmin gewohnt ist, lässt die Schreibperformance auf diese Partitionen auf wenige MByte/s einbrechen.

Wie man es richtig macht findet man im Wiki von brain4free: WD “Advanced Format” HD mit LINUX.

Mittels pvs -o+pe_start stellt man sicher, dass die Nutzdaten des LVM-Layers auf einem Vielfachen der Chunksize des RAID5 beginnen:

PV         VG     Fmt  Attr PSize PFree 1st PE
/dev/md1   debian lvm2 a-   1.36T 1.36T 192.00K
/dev/md2   data   lvm2 a-   2.73T    0  192.00K
/dev/md3   data   lvm2 a-   2.73T    0  192.00K

Da meine Chunksize 64kB beträgt, passt der Beginn der Daten an Stelle 192kB also:

md2 : active raid5 sdd1[0] sdf1[2] sde1[1]
2930152704 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

md3 : active raid5 sdg1[0] sdi1[2] sdh1[1]
2930152704 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

lvs -o+stripes,stripesize,devices

LV       VG     Attr   LSize #Str Stripe Devices
backuppc data   -wi-ao 5.46T    2 64.00K /dev/md2(0),/dev/md3(0)

Wer an dieser Stelle stutzig wird, hat offenbar schon mehrfach mit Software-RAID zu tun gehabt:

Bei einem RAID5 aus 3 Platten mit einer Chunksize von 64kB müsste die optimale Stripesize für das darüberliegende Logical Volume 128kB sein. Verschiedene Benchmarks haben aber zu meiner Verwunderung ergeben, dass die Write-Performance mit der 64kB Stripesize um 10-15 MByte/s höher lag als bei der rechnerisch optimalen Stripesize von 128kB.

Das auf dem LV liegende ext3 FS sollte ebenfalls passend angelegt werden: Mit dem mkfs.ext3 RAID stride calculator ergibt sich bei einem RAID0 über 2 “Platten” mit einer Stripesize von 64kB und einer FS-Blocksize von 4kB folgendes mkfs-Command:

mkfs.ext3 -b 4096 -E stride=16,stripe-width=32 /dev/data/backuppc

Damit erfolgen Schreiboperationen auf das Dateisystem nun in optimaler Weise.

Weitere Stellschrauben:

Das Optimieren der stripe-cache-size der 2 RAID5-Bricks von default 256kB auf 4096kB hat bei uns die lineare Writeperformance auf das LV von 180 MByte/s auf 300 MByte/s gesteigert; recht beachtlich, wie ich finde.

Update: ext3- und xfs-Benchmarks mit bonnie++ auf dem LV.

Update: Smart-Werte (sda+sdb = System, sdc = Spare, sdd-sdi = Daten)

Server-Admin gesucht

Hallo allerseits und noch ein frohes neues Jahr!

Die IntelliAd Media GmbH sucht kurzfristig einen Server-Admin für ein Projekt im Raum München. Da dies für mich aktuell nicht in Frage kommt, dumpe ich hier nach Rücksprache deren Anfrage:

Für das Setup einer redundanten hochverfügbaren Serveraufstellung für ein Tracking System
suchen wir aktuell kurzfristig einen Experten, ggf. wäre das ja etwas für Sie?

Einsatzort München und remote
Einsatzzeit kurzfristig 3-5 Tage Vorort
langfristig 5-6 Tage Wartung / Monat remote

Erfahrungen in mehreren der folgenden Bereiche sollte vorhanden sein:
Storage (Dell equallogic),
Linux (debian/ubuntu),
Hochverfügbarkeit,
MySQL Replikation,
Load Balancing.

Interessenten wenden sich bitte per Email direkt an Herrn Rürup (mruerup[at]intelliad[dot]de) von IntelliAd.

Anleitung zum Ersetzen des 1&1-Rootserver-Kernels auf openSUSE-11-Installationen

Wie bereits im Heise-Forum von mir zum Heise News-Artikel openSuse-Kernel auf 1&1-Root-Servern möglicherweise veraltet angemerkt, lässt sich der 1&1-eigene Kernel, der offenbar Sicherheitslücken aufweist und sich über die Paketverwaltung nicht aktualisieren lässt, relativ einfach durch den Standard-Kernel von openSUSE ersetzen.

Die folgende Anleitung wurde erfolgreich auf 3 Root-Servern bei 1&1 getestet (1&1 Root-Server S64 mit Athlon64 Single- oder Dual-Core-CPU, 1GB RAM, NVIDIA-Chipsatz (lspci.txt)).

Wie immer bei Anleitungen aus dem Internet gilt auch hier:

Verwendung der Anleitung auf eigene Gefahr. Zu Risiken und Nebenwirkungen fragen Sie Ihren kompetenten Systemadministrator!

Wir aktualisieren die lokale Datenbank des Paketmanagers und schauen uns an, wieviele Updates darauf warten, eingespielt zu werden:

zypper refresh && zypper patch-check

Die letzte Zeile der Ausgabe könnte z.B. so aussehen:

4 patches needed (2 security patches)

Das Release bzw. die Versionsnummer des aktuell laufenden Kernels lassen wir uns mit

uname -r

anzeigen:

2.6.27.31rootserver-20090819a

Durch den Zusatz “rootserver” können wir erkennen, dass hier der von 1&1 selbstgebackene Kernel läuft, den wir gerne ersetzen wollen.

Wir installieren den openSUSE-Standard-Kernel mittels

zypper install kernel-default

Wie ich durch eigene Tests herausgefunden habe, stört sich der SUSE-Kernel an dem Boot-Parameter ro (das Root-FS wird dadurch read-only gemountet, openSUSE mountet dies während der Boot-Phase offenbar selbst nicht read-write).

Ob wir davon betroffen sind, verrät uns

grep kernel /boot/grub/menu.lst

Die Ausgabe könnte z.B. so aussehen:

kernel /boot/vmlinuz-2.6.25.20-0.5-default root=/dev/md1 ro console=tty0 console=ttyS0,57600
kernel /boot/vmlinuz-2.6.25.20-0.5-default root=/dev/md1 showopts ide=nodma apm=off acpi=off noresume edd=off x11failsafe console=tty0 console=ttyS0,57600

Falls bei Euch das ro in der Zeile auftaucht, die mit kernel beginnt, solltest Du mit Deinem Lieblingseditor (z.B. vim oder nano) die Datei /boot/grub/menu.lst bearbeiten und das ro entfernen.

Die Angabe root=/dev/md1 ist darüber hinaus ein Indiz, dass im Server ein Software-RAID eingerichtet ist.

Überprüfen lässt sich das mit

cat /proc/mdstat

Tauchen hier ein oder mehrere md-Devices (md1, …) auf, so ist ein Software-RAID eingerichtet.

Bei den von mir aktualisierten 1&1-Root-Servern war die Datei /etc/mdadm.conf nicht vorhanden.

Diese Datei sollte unbedingt vorhanden sein und die aktuellen RAID-Einstellungen widerspiegeln, wenn man den SUSE-Kernel booten will:

test -e /etc/mdadm.conf && mv /etc/mdadm.conf /etc/mdadm.conf.backup
mdadm –detail –scan > /etc/mdadm.conf

Wichtig: Das initrd-Image muss neu gebaut werden, damit dies die mdadm.conf enthält:

mkinitrd

Die Fehler bzgl. des 1&1 Kernels ignorieren wir.

Anschließend via

reboot

den Server rebooten.

An dieser Stelle empfiehlt es sich, sich zu Diagnose-Zwecken über den seriellen Konsolen-Server von 1&1 mit dem Server zu verbinden – damit ist man in der Lage, dem Kernel beim Booten zuzusehen und eventuelle Unregelmäßigkeiten zu erkennen. Die Zugangsdaten zum Konsolen-Server findest Du im 1&1 Control-Center unter dem Menüpunkt Server-Verwaltung/Serielle Konsole.

Sobald der Server wieder erreichbar und Du per SSH eingeloggt bist, kannst Du mit

uname -r

prüfen, dass nun der SUSE-Kernel geladen wurde. Der aktuelle SUSE-Kernel (Stand 26.11.2009) für openSUSE 11.0 ist:

2.6.25.20-0.5-default

Damit ist das Update des Kernels abgeschlossen.

Chown auf 66 Millionen Dateien

Wie lange dauert da wohl ein rekursives chown?

Filesystem    Type    Inodes   IUsed   IFree IUse% Mounted on
/dev/sda4     ext3   145227776 66000722 79227054   46% /home

Update: Nach 131 Stunden war es endlich durch … Hardware siehe Kommentare.

#quelle #payment #fail

Screenshot quelle.de am 05.08.2009 um 23:00 Uhr beim Versuch, per Kreditkarte zu zahlen

*fail*

Nachtrag:

Aug 5 23:01:18 gate daemon.info pppd[22148]: LCP terminated by peer
Aug 5 23:01:18 gate daemon.info pppd[22148]: Connect time 1440.0 minutes.
Aug 5 23:01:18 gate daemon.info pppd[22148]: Sent 9831702 bytes, received 173885908 bytes.

#quelle #payment #unfail

Scheiß Murphy!

Mathe

Gerade im IRC aufgeschnappt:

hrm … wenn ich 41 mal [a-z|0-9] nehmen kann .. wieviele variationen macht das?
wobei … “a” genauso gültig sein kann wie “aa” und “aaa” und ….

Die 12. Klasse ist zwar ein Weilchen her, aber meiner Meinung nach müsste es folgende Lösung sein:

361 + 362 + 363 + … + 3641

Um das kurzerhand in eine Zahl zu gießen:

$> { for i in $(seq 1 41) ; do echo -n “36^$i + ” ; done ; echo 0 ; } | bc
6616632105109660076363899730488896757253096051716453117437890676

Meinungen? Verbesserungen? Ratschläge?

vim-Default-Settings unter Debian

Die Default-Settings von Debian hinsichtlich vim sind ja wirklich nur als unterirdisch zu bezeichnen.

Als Gentoo-User vermisst man da einiges. Deshalb direkt die erste Amtshandlung:

# cat /etc/vim/vimrc.local
” Switch syntax highlighting on, when the terminal has colors
” Also switch on highlighting the last used search pattern.
if &t_Co > 2 || has(“gui_running”)
    syntax on
    set hlsearch
endif

” When editing a file, always jump to the last cursor position
autocmd BufReadPost *
    \ if ! exists(“g:leave_my_cursor_position_alone”) |
    \     if line(“‘\””) > 0 && line (“‘\””) <= line("$") |     \         exe "normal g'\"" |     \     endif |     \ endif

Nun kann man auch unter Debian vernünftig mit Vim arbeiten.

Broadcom Corporation BCM4312 802.11b/g [14e4:4315]

Nach dem Sieg des Spieltriebs über die Vernunft musste sich der Adminblogger auch eines dieser neumodischen Netbooks zulegen – die Entscheidung fiel auf ein Lenovo IdeaPad S10e, welches ich bereits vor einigen Tagen bei einem Arbeitskollegen begutachten konnte.

Out of the box funktioniert eigentlich alles – außer WLAN – unter grml 2008.11 sowie openSUSE 11.0.

Das WLAN-Device von Broadcom gibt sich als [14e4:4315] zu erkennen:

# lspci -nn | grep Broadcom

02:00.0 Ethernet controller [0200]: Broadcom Corporation NetLink BCM5906M Fast Ethernet PCI Express [14e4:1713] (rev 02)
05:00.0 Network controller [0280]: Broadcom Corporation BCM4312 802.11b/g [14e4:4315] (rev 01)

Das intern per USB angeschlossene WLAN-Device lässt sich leider weder per bcm43xx-Modul noch dessen Nachfolger b43/b43-legacy zum Leben erwecken.

Allerdings wurde von Broadcom vor kurzem ein Treiber veröffentlicht mit dem WLAN funktioniert, ohne auf NDISwrapper angewiesen zu sein.

Wie bei You’re Special, Just Like Everybody Else im Blog zu lesen, lässt sich der Treiber relativ einfach einbinden.

Zuallererst stellt man sicher, dass ihr die Header-Dateien für Euren Kernel installiert habt. Je nach Distribution gelingt das mittels

(openSUSE) # zypper ref ; zypper in kernel-source linux-kernel-headers
(debian/grml) # apt-get update ; apt-get install linux-headers-$(uname -r)

Nun besorgt man sich von der oben erwähnten Broadcom Webseite die aktuelle Version des Treibers für seine Architektur, z.B.

hybrid-portsrc-x86-32_5_10_27_11.tar.gz

Es folgt das übliche Prozedere bei Archiven unter Linux:

tar xfz hybrid-portsrc-*.tar.gz

Das Modul sollte sich nun problemlos mittels

(openSUSE) # make -C /lib/modules/$(uname -r)/build M=$(pwd)
(debian/grml) # make -C /usr/src/linux-headers-$(uname -r) M=$(pwd)

übersetzen lassen. Anschließend noch ein

mkdir /lib/modules/$(uname -r)/extra
cp wl.ko /lib/modules/$(uname -r)/extra
depmod -a
modprobe -rv bcm43xx b43 b43legacy
modprobe -v wl

und es sollte nun ein neues Interface auftauchen, auf meinem Lenovo Ideapad mit openSUSE 11.0 z.B. eth1.

# dmesg | tail

müsste in etwa folgende Ausgabe produzieren:

ieee80211_crypt: registered algorithm ‘TKIP’
wl: module license ‘unspecified’ taints kernel.
eth1: Broadcom BCM4315 802.11 Wireless Controller 5.10.27.11

Das sollte es gewesen sein. Nach einem Reboot sollte das WLAN-Device nun automatisch auftauchen, eventuell müssen von Euch die bcm43xx- und b43-Module geblacklisted werden.

Viel Spaß mit Linux auf dem Ideapad S10e.

Ärger mit UTF-8 in MySQL…

Kris hatte hier und hier 2006 die Grundlagen von Encodings/Charsets und Collations in MySQL erklärt.

Viele Artikel und Howtos im Netz beschäftigen sich damit, wie man Daten im latin1-Format aus MySQL 4.0 Datenbanken in 4.1 oder 5.x DBs konvertiert und gleichzeitig den Umstieg auf UTF-8 vollzieht.

Was jedoch meist nicht zur Sprache kommt ist die Problematik, dass unter bestimmten Umständen für MySQL bei Verwendung von UTF-8 der String “A” identisch ist mit “a”, bzw. “hatte” mit “hätte”.

Einfach ausgedrückt: Groß-/Kleinschreibung und Sonderzeichen wie deutsche Umlaute.

Wir migrieren z.B. gerade Daten aus pre-MySQL-4.1-Zeiten (latin1) auf MySQL 5.0.54 (utf-8). Der Datenbank-Server läuft komplett auf UTF-8, genauso wie die Entwickler-Maschinen:

SELECT VERSION(); SHOW GLOBAL VARIABLES LIKE ‘character%’; SHOW GLOBAL VARIABLES LIKE ‘collation%’;
+————+
| VERSION()  |
+————+
| 5.0.54-log |
+————+

+————————–+—————————-+
| Variable_name            | Value                      |
+————————–+—————————-+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+————————–+—————————-+

+———————-+—————–+
| Variable_name        | Value           |
+———————-+—————–+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+———————-+—————–+

CREATE DATABASE test2 DEFAULT CHARACTER SET utf8;
USE test2;
CREATE TABLE foo(user VARCHAR(20));
INSERT INTO foo (user) VALUES(‘a’),(‘A’),(‘ä’),(‘Ä’);
SELECT user, LENGTH(user), CHAR_LENGTH(user) FROM foo where user=’a’;
+——+————–+——————-+
| user | LENGTH(user) | CHAR_LENGTH(user) |
+——+————–+——————-+
| a    |            1 |                 1 |
| A    |            1 |                 1 |
| ä    |            2 |                 1 |
| Ä    |            2 |                 1 |
+——+————–+——————-+

Die einzige Möglichkeit, MySQL dieses Verhalten auszutreiben und gleichzeitig bei UTF-8 zu bleiben, ist offenbar VARBINARY anstatt VARCHAR zu verwenden:

ALTER TABLE foo MODIFY user VARBINARY(20);
SELECT user, LENGTH(user), CHAR_LENGTH(user) FROM foo where user=’a’;
+——+————–+——————-+
| user | LENGTH(user) | CHAR_LENGTH(user) |
+——+————–+——————-+
| a    |            1 |                 1 |
+——+————–+——————-+

Allerdings gibt die 20 bei VARBINARY(20) nicht die Anzahl der maximal zulässigen Zeichen an (im Gegensatz zu VARCHAR), sondern die Bytes. Dies hat Zur Folge, dass man bei VARBINARY nun nicht mehr die maximale “Länge” (im Sinne von Zeichen) festlegen kann, weil Strings mit Sonderzeichen mehr Bytes belegen und damit von MySQL abgeschnitten werden:

INSERT INTO foo SET user=’Maximale-Laenge-betraegt-20-Bytes’;
INSERT INTO foo SET user=’öäüÖÄÜ Sonderzeichen mit dabei’;
SELECT user, LENGTH(user), CHAR_LENGTH(user) FROM foo;
+———————-+————–+——————-+
| user                 | LENGTH(user) | CHAR_LENGTH(user) |
+———————-+————–+——————-+
| Maximale-Laenge-betr |           20 |                20 |
| öäüÖÄÜ Sonderz       |           20 |                20 |
+———————-+————–+——————-+

(Wieso sagt hier MySQL beim 2. String CHAR_LENGTH(user) sei 20?)

VARBINARY scheidet also aus.

Muss man sich jetzt seine eigene Kollation bauen oder gibts es andere Möglichkeiten, dass MySQL so arbeitet wie man es eigentlich erwarten kann?

MySQL beschreibt unter Examples of the Effect of Collation genau dieses Problem, gibt aber für UTF-8 keine Lösung.

Wie handhabt Ihr das? Umstieg auf UTF-8 abblasen und weiterhin latin verwenden?

Update: Mit Kollation utf8_bin scheint sich das Problem in Luft aufzulösen. Morgen mal damit experimentieren.

Supported ports: [ FIBRE ]

Kämpfe gerade auf Arbeit mit einem Dell Vostro 410 mit integrierter Realtek Gigabit-NIC RTL8111/8168B, die laut ethtool nur einen Fibre-Port, keinen RJ45-Port hat …

Supported ports: [ FIBRE ]
Supported link modes: 1000baseT/Full
Speed: 1000Mb/s
Duplex:Full
Port: FIBRE
[..]
Link detected: no

*nerv*

Update: Nach entsprechender Recherche und Lektüre im Netz der Netze war dann die Lösung, einmal den herstellereigenen Kernel-Treiber r8168 zu laden.

Anschließend lässt sich die NIC auch mit dem r8169-Modul betreiben. Grund ist wohl, dass r8169 nicht weiß, wie man die NIC aktiviert.

Firefox 3 and Copy & Paste headaches

Since i’m using Firefox 3 there are some real issues regarding copy & paste of URLs.

If you’re not using Linux/Unix on the desktop you probably don’t know about a really cool feature:

Copying text into the clipboard is as simple as selecting text. You don’t have to press Control+C or open context menu – the selected text is instantly copied to your clipboard. Pasting the contents of your clipboard is easy too: a click on your third (middle) mouse button does the trick.

So if i wanted to post an URL to a buddy of mine i would just double click the Firefox URL bar to get the URL selected (copied to clipboard) and press the middle mouse button in my instant messenger chat window (paste from clipboard). Simple as that.

First issue with Firefox 3:

The URL gets decoded – that means if you’re opening the URL

http://www.google.com/search?q=firefox%203%20copy%20sucks

in FF3 it will be displayed as

http://www.google.com/search?q=firefox 3 copy sucks

in the URL bar (%20 is the URL-encoded representation of a single space).

I don’t know why the developers changed this – it might be they think the user could be confused by these “voodoo-characters” in the address bar.

You might now have a clue what’s the issue with this for Linux/Unix users… you really don’t want to post URL-decoded URLs in forums, usenet, instant messengers, IRC or even emails.

However: if you decide to copy via Control+C or right click context menu firefox will copy the URL-encoded string to the clipboard … you’re so funny, firefox developers. Not!

Second issue:

Whenever i copy something to my clipboard that matches the regular expression

^https?://.

the KDE clipboard application Klipper will popup something like this:

KDE Klipper action popup

This is really useful if you’re running irssi and someone posts an URL:

Double click the URL to get it selected (and thus copied to clipboard) and the popup will appear.

I’m using this so called Klipper “action” basically to transfer .torrent files to my server for later download:

Copy link location in firefox right click context menu

With Firefox 2 i just had to choose “Copy Link Location” and Klipper would popup the actions dialog above. With Firefox 3 this doesn’t work.

There is a chance this might be a bug in Klipper and not in Firefox because the URL is copied to clipboard nevertheless – just the popup doesn’t appear.

Does anybody know how to fix these issues or can point me in the right direction?

Dune – Lost in Space

Der Vermieter eine Etage unter mir hat gerade seine Musikanlage getestet und “Lost in Space” von Dune gespielt.

Aus der Pre-MP3-Ära hab ich auch noch eine Handvoll Musik-CDs (viel mehr sind es wirklich nicht) … darunter auch das Album Expedicion von Dune aus dem Jahre 1996.

Also CD ins Laufwerk gelegt, Audacious angeschmissen und meinen Vermieter in Sachen Lautstärke etwas unterstützt.

Inzwischen ist’s ruhig geworden :)

firefox -remote “openURL” unter OpenSUSE 10.3

Du benutzt OpenSUSE 10.3 und es regt Dich auf, dass das Öffnen von URLs in einem neuen Tab eines bereits laufenden Firefox-Fensters nicht funktioniert?

Dann ist dieses Shell-Skript genau das richtige für dich.

Nach /usr/local/bin kopieren und mit chmod 755 ausführbar machen.

Anschließend öffnet der erste Aufruf von

firefox http://www.example.com/

wie bisher Firefox mit der gewünschten URL.

Alle darauffolgenden Aufrufe der Form

firefox http://foo.bar/

öffnen die URL in einem neuen Tab des bereits bestehenden Firefox-Fensters anstatt in einem neuen Fenster wie bisher.

Die Ursache: Unter OpenSuse führt der Aufruf von

firefox -remote ‘openURL(http://foo.bar,new-tab)’

zu der Fehlermeldung

Error: Failed to send command: 500 command not parseable

anstatt zum gewünschten Ergebnis.

fuck.ext3

Note to myself: Das Vertauschen von fsck.ext3 und mkfs.ext3 ist … suboptimal.

Text während der Eingabe ersetzen unter Linux

Cheffe möchte unter Linux gerne Textbausteine wie “MfG” automatisch während der Eingabe durch “Mit freundlichen Grüßen” ersetzen lassen, so wie es z.B. RapidKey Autotext unter Windows ermöglicht.

Mit Khotkeys von KDE ist es leider nur möglich, Text nach einer Mausgeste oder einer Tastenkombination einzufügen, nicht jedoch direkt während der Eingabe eines Schlüsselworts.

Kennt jemand ein Tool, welches die gesuchte Funktionalität unter Linux bereitstellt?

Verzeichnisbaum unter Linux in ASCII-Art ausgeben

Weil es gerade ein Arbeitskollege zu Dokumentationszwecken fürs Wiki brauchte und es ganz praktisch ist:

# mkdir -p directory/{foo,bar}/{linux,bsd}/{src,docs}
+-directory/
  |
  +-foo/
  | |
  | +-bsd/
  | | |
  | | +-src/
  | | |
  | | +-docs/
  | |
  | +-linux/
  |   |
  |   +-src/
  |   |
  |   +-docs/
  |
  +-bar/
    |
    +-bsd/
    | |
    | +-src/
    | |
    | +-docs/
    |
    +-linux/
      |
      +-src/
      |
      +-docs/

tree.py – graphically displays the directory structure of a specified path

Den Source-Code muss man anschließend einmal mit

perl -pi -e ‘s/\r$//’

behandeln, um die Windows-Zeilenumbrüche zu konvertieren.

“We’re sorry…”

Heute haben wir in der Firma ein seltsames Phänomen beobachtet:

Ab etwa 13:30 Uhr wurden viele unserer Mitarbeiter bei harmlosen Google-Suchanfragen auf Googles “Sorry, Sie haben einen Virus oder Trojaner”-Seite weitergeleitet.

Trotz Firmenproxy und mehr als 20 Mitarbeitern trat dieses Problem bisher nie auf, was mich etwas stutzig machte.

Das erste Analysieren des Proxy-Logfiles bestätigte eine eher geringe Zugriffsfrequenz auf google.de, was ein Blocken seitens Google aufgrund zu vieler Abfragen unwahrscheinlich erscheinen ließ.

Ebenfalls waren die Suchanfragen an sich selbst harmlos, keine Queries die man als “hier sucht jemand nach verwundbaren Webapplikationen” falschverstehen könnte.

Mit dem folgenden Einzeiler habe ich einmal die Anzahl unserer Suchanfragen an www.google.de innerhalb der letzten 30 Tage nach Stunden aggregiert:

egrep -h ‘GET http://www.google.de/.*search.*q=’ access.log* | cut -d. -f 1 | while read timestamp ; do date ‘+%d.%m.%Y um %H Uhr’ -d @$timestamp ; done | sort | uniq -c | sort -r -n -k 1 | head

Heraus kam folgendes:

146 04.02.2008 um 10 Uhr
129 06.02.2008 um 15 Uhr
122 07.02.2008 um 15 Uhr
115 23.01.2008 um 11 Uhr
105 07.02.2008 um 10 Uhr
99 03.01.2008 um 14 Uhr
95 07.02.2008 um 13 Uhr
94 15.01.2008 um 10 Uhr
83 29.01.2008 um 09 Uhr
83 28.12.2007 um 11 Uhr

Am Montag (04.02.) zwischen 10 und 11 Uhr hatte Google.de also 146 Suchanfragen von uns zu bearbeiten, heute (07.02.) in der Spitze nur 122 zwischen 15 und 16 Uhr (wovon natürlich auch ein nicht unerheblicher Teil Test-Suchanfragen aufgrund des Blocks gewesen ist).

Zum Vergleich hier die Anzahl Suchanfragen von heute Vormittag:

5 07.02.2008 um 08 Uhr
72 07.02.2008 um 09 Uhr
105 07.02.2008 um 10 Uhr
19 07.02.2008 um 11 Uhr
17 07.02.2008 um 12 Uhr
95 07.02.2008 um 13 Uhr

Laut IRC haben Leute diese Meldung von Google bisher oft beim Benutzen von Tor oder Internetzugang über Handy zu Gesicht bekommen, was ja aufgrund der Masse an Suchanfragen von nur wenigen IP-Adressen aus verständlich ist – aber bei nur ca. 2,5 Suchanfragen pro Minute wie in unserem Fall?

Hat von Euch jemand Ähnliches beobachtet oder vielleicht andersweitig einen Tipp?

Edit: Wir scheinen nicht die einzigen zu sein: Google’s “Sorry” Service, Oliver, Google says We’re sorry, (Guatemala) Google is sorry, Goggle Sorry Page, Google CAPTCHA sorry page, Will Google Captcha themeselves out of buiness?

Kaputte Video-Wiedergabe unter SuSE 10.3 mit Xvideo

Ich habe hier mit dem Laptop meiner Schwester und OpenSuSE 10.3 nach einem Upgrade von 10.2 ein seltsames Problem. Vielleicht habt Ihr ja eine Idee, woran es liegen könnte.

Wird mit vlc oder mplayer ein Video (egal ob WMV, XviD, MPEG2, …) über die Xvideo-Schnittstelle (-vo xv bei mplayer) abgespielt, sieht das folgendermaßen aus:

Xv video playback on SuSE 10.3
(Anklicken für Großansicht)

Spielt man das Video über die X11-Schnittstelle (-vo x11 bei mplayer) ab, funktioniert es tadellos – nur leider nicht im Vollbildmodus, weshalb ich bzw. meine Schwester ;) gerne Xvideo nutzen würde.

Es scheint also nicht am Codec oder Player zu liegen, sondern irgendwo rund um Xv.

Im Laptop stecken eine ATI Radeon Xpress 200M und es wird auch der freie radeon-Treiber genutzt.

Ich freue mich über jeden Tipp in den Kommentaren. :)

Edit: Starte ich mplayer mit -vo sdl:nohwaccel, so funktioniert Vollbild, allerdings deutlich verpixelter als ich das mit Xvideo gewöhnt bin.

Setze ch in der xorg.conf beim radeon-Treiber die Option “NoAccel” auf true, ändert das bei Videoausgabe über Xv leider nichts am kaputten Bild.

OS error code 124: Wrong medium type

Hallo, da bin ich wieder.

Eigentlich ist mir im Moment garnicht zu Spaßen zu Mute … ich habe mir bei einem Arbeitskollegen eine fiese Erkältung eingefangen und werde nun die Woche über hier zu Hause versuchen, mich standhaft gegen den fürchterlichen Husten und Schnupfen zu wehren. Gleich gibt es erstmal eine Tasse Erkältungstee.

Letzte Woche habe ich auf Arbeit u.a. eine Datenbank von MySQL 4.1 auf 5.0 migriert, weil ein Arbeitskollege aus performancetechnischen Gründen MERGE-Tables ausprobieren will, die scheinbar erst mit MySQL 5 brauchbar laufen.

Wobei “brauchbar” ein sehr dehnbarer Begriff zu sein scheint, findet sich doch im Error-Log des MySQL-Servers die Fehlermeldung

[ERROR] Got error 124 when reading table ‘./foo/bar’

Wer sich jetzt fragt, was ein Error 124 ist, der befragt perror:

# perror 124
OS error code 124: Wrong medium type

Vielleicht muss ich /var/lib/mysql von CD-ROM oder einem USB-Stick mounten, damit das geht… :)

nomachine NX

Hat von Euch schon mal jemand mit nomachine NX gearbeitet?

Ich habe heute auf unserem Linux-Terminalserver, zu dem sich die Clients bisher via XDMCP verbinden, den nxserver-freenx installiert.

Der 1. Eindruck: Mit dem Windows-Client ist der Bildaufbau unter KDE zwar nicht wirklich lahmarschig, aber auf jeden Fall langsamer als bei XDMCP-Verbindungen unserer schon relativ schwachbrüstigen Thinclients (VIA C3).

Bin gespannt wie das Ganze aussieht, wenn Linux als Client zum Einsatz kommt. Das werde ich morgen einmal ausgiebig testen.

EDIT: Hatte vergessen zu erwähnen, dass ich es eben von zu Hause aus per DSL 3000 ausprobiert habe und es dort wirklich flott war. Nur im LAN mit Windows-Client kam kein richtiges “Das ist jetzt richtig schnell”-Feeling auf.

13677days

Hier war scheinbar schon jemand eingeloggt, noch bevor das System gebootet wurde:

17:08:21 up 227 days, 14:45,  2 users,  load average: 0.47, 11.03, 16.02
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0      17:03    13677days 0.01s 0.01s -bash
root     pts/1      16:58   0.00s 14.72s  0.02s w

Sachen gibts… :)

Entwickeln von RAW-Fotos unter Linux mit LightZone

Wer mit Linux RAW-Fotos von seiner Digital-Spiegelreflexkamera entwickeln will, sollte sich einmal LightZone von Light Crafts anschauen.

Die Linux-Version gibt es im Gegensatz zur Windows- und Mac-Version kostenlos, hinkt diesen allerdings hinsichtlich Aktualität etwas hinterher.

LightZone packt alle Aktionen des Benutzers auf einen Stack ohne das Originalbild zu verändern – so kann man im Laufe der Bearbeitung z.B. den Schärfe-Filter im Stack so umpositionieren, dass er anstatt vor dem Tonwertkorrektur-Filter nun nach diesem angewendet wird.

Für alle Filter lässt sich ein Preset definieren und für das Batch-Processing gibt es immerhin die Möglichkeit, den aktuellen Stack als Template zu speichern um diesen dann auf weitere Bilder anzuwenden.

Auch wenn der SourceCode nicht offen liegt, lohnt sich auf jeden Fall der Blick auf LightZone.

Den Download für Linux gibt es hier (Registrieren nicht nötig), eine Mailingliste für die Linux-Version existiert ebenfalls.

Es gibt mehrere Videos, die das allgemeine Handling von LightZone erklären.

Vielen Dank an dieser Stelle an Piwi, der mich auf LightZone aufmerksam gemacht hat!

LightZone
(Anklicken für Großansicht)

Vor der Bearbeitung mit LightZone
RAW-Foto, aufgenommen mit Canon EOS 400D

Nach der Bearbeitung mit LightZone
Nach der Bearbeitung mit LightZone

root@käsetheke.marktkauf.de

Da stand ich doch heute Abend kurz vor Ladenschluss an der Käsetheke im örtlichen Marktkauf und suchte nach einem Stück Bavaria blu, als eine gutgelaunte Mitarbeiterin hinter der Käsetheke an den Tresen trat.

Nachdem ich meinen Wunsch nach einer Ecke des schon erwähnten Käses verlauten ließ, fragte mich die Dame, was denn root bedeute?

Auf meinen verdutzten Gesichtsausdruck hin verliessen die Worte “Born to be root” ihren Mund, während sie auf mein T-Shirt deutete.

In dem Moment fiel bei mir der Groschen das Cent-Stück und ich überlegte kurz, wie ich das nun möglichst leicht verständlich erkläre. Schlussendlich sagte ich “Vergleichbar wie bei Windows der Administrator – die Person, die alles machen kann”, woraufhin sie ein breites Grinsen aufsetzte und meinte “Dann bin ich das hier auch” :).

Die Frage, ob sie root richtig ausgesprochen hätte bejahte ich und bekam von einer Mitarbeiterin, die sichtlich Spass hatte, meinen Käse über die Theke gereicht.

Als ich mich gerade mit meinem Einkaufswägelchen Richtung Kasse aufmachen wollte, hörte ich noch, wie sie sich mit ihren Kolleginnen über das soeben Gelernte unterhielt … “root” *tuschel* “Administrator” *tuschel* “man muss sich ja weiterbilden”.

Ich konnte mir im Fortgehen ein Grinsen nicht verkneifen ;).

In diesem Sinne, frohen 1. Mai!

RAID5 Recovery

Wie bereits im Artikel Mein RAID5 löst sich auf beschrieben, zeigte eine der Samsung Platten in meinem privaten Rechner Ermüdungserscheinungen.

Heute war es dann endlich so weit, vom Cron-Daemon bekam ich folgende E-Mail:

Subject: Warning: Degraded RAID detected on lisa.local
Date: Sun, 15 Apr 2007 21:00:02 +0200 (CEST)

Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md1 : active raid1 sdd1[3] sdc1[2] sdb1[1] hda1[0]
96256 blocks [4/4] [UUUU]

md2 : active raid5 sdd2[3] sdc2[2] sdb2[0] sda2[4](F)
17566848 blocks level 5, 64k chunk, algorithm 2 [4/3] [U_UU]

md3 : active raid5 sdd3[3] sdc3[2] sdb3[1] sda3[4](F)
216684288 blocks level 5, 128k chunk, algorithm 2 [4/3] [_UUU]

unused devices: <none>

Wie ihr seht, hatte ich hda1 bereits als Ersatz für sda1 im RAID md1 (/boot-Partition) in Benutzung, nun verabschiedete sich sda2 aus md2 (/) und sda3 aus md3 (/home), zu erkennen an dem (F) – F wie Faulty.

Das dumme war nun, daß die IDE-Platte hda mit 9729 Zylindern um genau 4 Zylinder kleiner war als die Samsung SATA-Platten – mit mal eben 2 Partitionen auf hda1 anlegen und zu den MD-Devices dazupacken war es leider nicht getan.

Im Endeffekt lief es darauf hinaus, md1 zu verkleinern, damit alle 3 Partitionen auf hda gross genug wären für die RAID-Devices.

Was folgte, war hda1 aus md1 zu entfernen, ein Backup der Daten aus /boot zu machen, md1 mit mdadm zu verkleinern, die Daten zurückzuspielen und 3 neue Partitionen auf hda anzulegen, diesmal mit einer um ein paar Blocks kleineren Partition hda1.

Dann kurz mit mdadm /dev/md$foo -a /dev/hda$foo die 3 Partitionen den 3 RAID-Devices hinzufügen und fertig ist der Lack:

Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md1 : active raid1 hda1[0] sdd1[3] sdc1[2] sdb1[1]
32768 blocks [4/4] [UUUU]

md2 : active raid5 hda2[1] sdd2[3] sdc2[2] sdb2[0]
17566848 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

md3 : active raid5 hda3[4] sdd3[3] sdc3[2] sdb3[1]
216684288 blocks level 5, 128k chunk, algorithm 2 [4/3] [_UUU]
[===>……………..] recovery = 16.2% (11748992/72228096) finish=27.8min speed=36228K/sec

unused devices: <none>

Eine halbe Stunde später sollte dann, wenn alles gut geht, das RAID5 wieder redundant und damit fault-tolerant sein.

Nine Inch Nails Album -Year Zero- als legaler Download

Heise online berichtet über eine mißglückte PR-Aktion von Nine Inch Nails, wobei darauf hingewiesen wird, daß man sich alle Tracks des Albums “Year Zero” per Stream anhören kann.

Hat man erst einmal seine Emailadresse (foo@bar.invalid tut es auch) auf der Webseite in den Flash-Player eingetragen, kann man auch schon den 16 Tracks lauschen.

Dank der DownloadhelperExtension für Mozilla Firefox, kann man sich jeden einzelnen Track im FLV-Format von http://http.vitalstreamcdn.com/sparkart2_vitalstream_com/sparkart/nyz/ herunterladen:

  • 01Hyperpower.flv
  • 02TheBeginningOfTheEnd.flv
  • 03Survivalism.flv
  • 04TheGoodSoldier.flv
  • 05Vessel.flv
  • 06MeImNot.flv
  • 07CapitolG.flv
  • 08MyViolentHeart.flv
  • 09TheWarning.flv
  • 10GodGiven.flv
  • 11MeetYourMaster.flv
  • 12TheGreaterGood.flv
  • 13TheGreatDestroyer.flv
  • 14AnotherVersionOfTheTruth.flv
  • 15InThisTwilight.flv
  • 16ZeroSum.flv

Hat man die 16 “Videos” erst einmal auf Platte, ist man nur noch ein Einzeiler in der Shell von den Audiospuren entfernt (der Übersicht halber in 3 Zeilen :-)):

for i in *.flv
do mplayer -dumpaudio -dumpfile $(basename $i .flv).mp3 $i
done

Keine 5 Sekunden später haben wir anstatt dem propritären “Macromedia Flash Video”-Müll anständiges “MPEG ADTS, layer III, v1, 256 kBits, 44.1 kHz, Stereo”, was sich auch problemlos auf Eurem mp3-Player abspielen läßt.

Windows-User kommen entweder mit FLV Extract oder aber auch MPlayer ans Ziel:

FOR %i IN (*.flv) DO mplayer -dumpaudio -dumpfile %~ni.mp3 %i

Quelle: Heise Forum

Frohe Ostern!

Windows-Rechner mit MAC-Adresse 00-00-00-00-00-00

Ein Arbeitskollege hatte heute einen Laptop mit WinXP dabei, der keine IP per DHCP bekam. Auch nach dem Konfigurieren einer festen IP konnte noch nicht einmal der Router gepingt werden.

Nur durch Zufall sah ich dann in den Eigenschaften der SiS Netzwerkkarte die MAC-Adresse 00:00:00:00:00:00.

Im Netzwerkkartentreiber gab es die Option, eine beliebige MAC-Adresse einzutragen, testweise mit 00:00:00:11:22:33 ausgefüllt funktionierte alles tadellos.

Nach dem Booten von grml von CD konnte sich der Kollege dann die richtige MAC-Adresse notieren, die wir anschließend unter Windows im Treiber hinterlegt haben.

Eine Option “Hardwareseitige Standard-MAC-Adresse nutzen” bot der Treiber leider nicht.

/usr/bin/ls: No such file or directory

Mhh:

# ls
bash: /usr/bin/ls: No such file or directory

Da steigt dann ganz automatisch der Puls in die Höhe und man fängt an zu schwitzen – bis, ja bis man sich daran erinnert, daß gerade eben ein

emerge -uDN world

durchgelaufen ist.

In /var/log/emerge.log findet man dann auch einen Hinweis auf ein Update von coreutils – schnell checken ob coreutils auch “vollständig” ist:

# equery files coreutils | grep ls
/bin/false
/bin/ls

*puh* Glück gehabt :-)

Ein

# . /etc/profile

in allen offenen Konsolen hat das “Problem” dann gelöst.

Vermieter mit Windows-Problemen II

So, heute war ich dann mal auf ein Bierchen bei meinem Vermieter, mir seine Windows-Kiste ansehen.

Es war ein älterer Compaq-PC mit P3 666 MHz, 128MB RAM, 20GB Platte und wider Erwarten auch USB (1.1).
Sein Windows 98 ließ sich von 640×480 mit 16 Farben nicht abbringen, der Treiber der Grafikkarte war mit “Standard-Grafikkarte” (oder so ähnlich) auch nicht besonders hilfreich als es darum ging, den passenden Treiber zu identifizieren.

Also kurzerhand grml von CD gebootet und voila: lspci offenbarte als verbauten Grafikchip einen SiS 300/305.

Anschließen wieder Windows gebootet, den passenden Treiber und Firefox runtergeladen (mein Vermieter nutzte noch den IE…) und alles installiert.

Am Ende gab es dann noch eine kurze Einführung in Firefox und Adblock und das war es dann eigentlich auch schon gewesen.

NC7170 Gigabit Server Adapter II

Die Netzwerkkarte ist inzwischen im Router verbaut und funktioniert auch problemlos mit dem e1000 Modul:

e1000: 0000:07:01.0: e1000_probe: (PCI-X:133MHz:64-bit) 00:11:0a:XX:XX:XX
e1000: eth2: e1000_probe: Intel(R) PRO/1000 Network Connection
ACPI: PCI Interrupt 0000:07:01.1[B] -> GSI 49 (level, low) -> IRQ 21
e1000: 0000:07:01.1: e1000_probe: (PCI-X:133MHz:64-bit) 00:11:0a:XX:XX:XX
e1000: eth3: e1000_probe: Intel(R) PRO/1000 Network Connection

lspci:

0000:07:01.0 Ethernet controller: Intel Corporation 82546EB Gigabit Ethernet Controller (Copper) (rev 01)
0000:07:01.1 Ethernet controller: Intel Corporation 82546EB Gigabit Ethernet Controller (Copper) (rev 01)

0000:07:01.0 Class 0200: 8086:1010 (rev 01)
0000:07:01.1 Class 0200: 8086:1010 (rev 01)

0000:07:01.0 Ethernet controller: Intel Corporation 82546EB Gigabit Ethernet Controller (Copper) (rev 01)
Subsystem: Compaq Computer Corporation: Unknown device 00db
Flags: bus master, 66Mhz, medium devsel, latency 64, IRQ 20
Memory at fdfe0000 (64-bit, non-prefetchable) [size=1280M]
Memory at fdf80000 (64-bit, non-prefetchable) [size=256K]
I/O ports at 5000 [size=64]
Expansion ROM at 00040000 [disabled]
Capabilities: [dc] Power Management version 2
Capabilities: [e4] Capabilities: [f0] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable-

0000:07:01.1 Ethernet controller: Intel Corporation 82546EB Gigabit Ethernet Controller (Copper) (rev 01)
Subsystem: Compaq Computer Corporation: Unknown device 00db
Flags: bus master, 66Mhz, medium devsel, latency 64, IRQ 21
Memory at fdf60000 (64-bit, non-prefetchable)
I/O ports at 5040 [size=64]
Capabilities: [dc] Power Management version 2
Capabilities: [e4] Capabilities: [f0] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable-

NC7170 Gigabit Server Adapter

Für die Migration unseres Firmennetzwerks bauche ich für unseren zukünftigen Linux-Router (HP Proliant DL360 G4 mit 2x GBit-NICs onBoard) noch eine weitere Netzwerkkarte.

Unser lokaler Hardware-Dealer hatte leider keine PCI-X 64bit Netzwerkkarten vorrätig, weshalb ich mich kurz entschlossen an den Support des Datacenters gewandt habe.

Nach ein paar Telefonaten war klar, daß der Vertrieb zwar auch keine Netzwerkkarten vorrätig hat (Stichwort Just in time), aber eine Karte bis zum nächsten, spätestens übernächsten Werktag bestellen könnten.

Zur Wahl standen eine HP NC7771 (Single-Port, Kupfer, Broadcom 5703) und eine HP NC7170 (Dual-Port, Kupfer, Intel 82546EB).

Nach ein wenig Recherche im Netz fand sich die PCI-ID der NC7170, nach denen man dann in den Kernel-Sourcen greppen kann – und siehe da, die NC7170 mit dem Intel 82546EB Chip wird scheinbar vom e1000 Modul unterstützt:

# grep 0x1010 e1000*
e1000_hw.h:#define E1000_DEV_ID_82546EB_COPPER 0x1010
e1000_main.c: INTEL_E1000_ETHERNET_DEVICE(0x1010),

Nach der NC7771 mit Single-Port habe ich garnicht weiter geschaut, da die Preisdifferenz nur 30 Euro betrug und man in einem Router eh nie genug Netzwerk-Ports haben kann.

Ich bräuchte mal Eure Hilfe

Ich hab hier mit Firefox unter Linux ein seltsames Problem, das ich mir nicht erklären kann. Vielleicht hat jemand von Euch eine Idee, wie man das beheben könnte.

Es geht um’s Scrollen in Firefox.

Bei Webseiten, die einen festen Hintergrund benutzten (background-attachment: fixed) und der dann auch noch wiederholt wird (background-repeat: repeat-x), geht bei mir das Scrollen im Firefox extrem langsam und der Repaint der verschobenen Bereiche dauert ziemlich lange, so daß es dann u.a. zu solchen unschönen Ergebnissen kommt:

Firefox scrolling under linux extremly slow with repaint
(Bild anklicken für große Ansicht)

Zum selber ausprobieren:

http://www.the-distraught-queen.de/

Auf adminblogger.de habe ich ganz bewusst auf den in diesem Template normalerweise vorhandenen festen Hintergrund verzichtet, weil das Scrollen mit Firefox unter Linux sonst eine Qual ist.

Weiteres Beispiel, wo das Scrollen zwar extrem abgehackt und langsam ist, jedoch keine Repait-Fehler auftreten wie im obigen Screenshot:

http://s-fels.de/software/update-wp-theme-iconis-triple-version-3/

Falls jemand einen Tip hat, bitte in den Kommentaren melden.

Update

Das Deaktivieren der Kantenglättung bei Schriften, das Verwenden des nv-Treibers anstatt des nvidia-Moduls, Reduzieren der Farbtiefe auf 16 bit, Fluxbox anstatt KDE und auch das Zurücksetzen des FF-Profils hat keine Auswirkungen auf das Scrollverhalten im Firefox.

Software:

  • Kernel 2.6.17
  • nVidia Kernel-Modul 1.0.8776
  • X.Org 7.1 (xorg.conf)
  • Firefox 1.5.0.9 & 2.0.0.1
  • dev-libs/nss-3.11.3
  • dev-libs/nspr-4.6.3

Hardware:

  • AMD Athlon XP1700+
  • nVidia GeForce 4 Ti 4200
  • 3GB RAM
  • TFT @60Hz & native resolution

Antwort auf Beschwerde über Kommentar-Spam

Nachdem ich in letzter Zeit auch vermehrt Ziel von Kommentar-Spam bin und ich mir mittels

<Files “wp-comments-post.php”>
Order Deny,Allow
Deny from 58. 59. 60. 61. 121. 122. 123. 124. 125. 126. 202. 203. 210. 211. 218. 219. 220. 221. 222.
</Files>

sowie

<Location ~ “/blog/.*/trackback/?”>
Order Deny,Allow
Deny from 58. 59. 60. 61. 121. 122. 123. 124. 125. 126. 202. 203. 210. 211. 218. 219. 220. 221. 222.
</Location>

in der Apache-Config den ganzen Kommentar- und Trackback-Spam aus Asien (siehe APNIC in IANA IPv4 Address Space Allocation) vom Leib halten kann, kommt nun eigentlich nur noch Spam von einigen verseuchten Kisten aus dem nicht-asiantischen Raum im Blog an.

Diese Woche war es mal wieder so weit. Da der Spam von einer IP aus Deutschland abgesetzt wurde, habe ich an den entsprechenden Abuse-Desk eine kurze Email geschrieben (in diesem Fall Hetzner):

Hallo,

wie im Attachment zu sehen, wurde von der IP 85.10.xxx.yyy aus Ihrem
Netz Kommentar-Spam abgesetzt.

Da es sich hierbei nur um einen in einer ganzen Flut von
Kommentar-Spams handelt, ist der entsprechende Server
höchstwahrscheinlich unter fremder Kontrolle.

Mit freundlichen Grüßen,
Vorname Name.

Rund 4 Stunden später trudelte dann die Antwort von Hetzner ein:

Sehr geehrte Damen und Herren,

vielen Dank fuer die Informationen.

Wir haben umgehend mit unserem Kunden Kontakt aufgenommen und ihn darum gebeten, sich um das Problem zu kuemmern. Falls Sie nochmal Probleme mit dieser IP bzw. diesem Server haben, bitte ich Sie, sich einfach nochmals kurz zu melden.

Bitte entschuldigen Sie die Unannehmlichkeiten.

Mit freundlichen Grüßen

xxxx yyyyyy

Hetzner Online AG
Industriestr. 6
91710 Gunzenhausen

Weitere 2 Stunden später kam dann auch eine Email von dem entsprechenden Hetzner-Kunden:

Ich bitte um Entschuldigung fuer die Belaestigung durch Dienste auf einem von mir betreuten Server (85.10.xxx.yyy). Er ist bereits seit mehreren Wochen nicht mehr im Regelbetrieb und stand deshalb leider nicht unter angemessener Beobachtung von meiner Seite. Nach einem Neustart wurde unbeabsichtigt ein ungeschuetzter Squid wieder hochgefahren. Dieser Dienst (neben einigen anderen) ist nun voellig deaktiviert.

Besten Gruss

xyz

Das finde ich ja mal nett – eine Entschuldigung mit der Erklärung, daß nun wieder alles im grünen Bereich ist.

Wenn denn mal alle Complaints so verlaufen würden *träum*.

Testbericht: IBM Thinkpad z60m

Nachdem ich hier vor kurzem bereits über mein neues Firmen-Notebook kurz berichtet habe, wollte ich nach nun fast 4 Wochen doch etwas detailierter meine Erfahrungen mit dem Thinkpad z60m niederschreiben.

Allgemeines

Das von mit verwendete Gerät ist ein IBM/Lenovo Thinkpad z60m (2529) mit Pentium M 760 (Dothan) 2,0 GHz auf Centrino-Basis, 1GB RAM, 100GB SATA-Platte, ATI Mobility Radeon X600 mit 128MB eigenem Speicher, WLAN (a/b/g) und dem ganzen anderen Krempel, der halt bei einem Notebook heutzutage so dabei ist (Sound, Bluetooth, DVD-Brenner, Speicherkartenleser, …).

Verarbeitung

Das Gehäuse ist rundum solide verarbeitet und entgegen Erfahrungen mit anderen elektronischen Geräten sehr verwindungssteif: Es quietscht oder knarzt absolut nichts.

Tastatur

Die Tastatur ist eine der ersten, die nach dem Verkauf der PC-Sparte von IBM an Lenovo diese beschissenen Windows-Tasten verpasst bekommen hat.

Damit muss man leider leben. Ansonsten sind die Tasten aber schön groß und im Vergleich zum JVC-Notebook macht damit auch das Arbeiten auf der Konsole Spaß.

Touchpad/Trackpoint

Das Thinkpad z60m wird mit Touchpad und dem genialen Trackpoint geliefert – ich liebe diesen Knubbel :-).

Das Touchpad funktioniert so wie es soll, das war es dann aber auch schon (bei mir). Als erste Amtshandlung wurde das Touchpad von mir im BIOS deaktiviert, da man mit dem “Knubbel” eh besser arbeiten kann und versehentliche Betätigungen des Touchpads durch Handballen einfach nerven (Linuxer können davon ein Lied singen).

Das z60m hat unter (vor?) dem Touchpad 2 Maustasten, für den Trackpoint über (hinter) dem Touchpad sogar 3. Damit muss man sich unter Linux nicht mit Emulate3Button und dem gleichzeitigen Drücken der linken und rechten Maustaste zur Simulation eines Klicks auf die mittlere herumschlagen.

Erwähnenswert ist noch, daß 3 verschiedene Aufsätze, allesamt rot, für den Knubbel mitgeliefert werden. Wer wie ich, den werksseitig installierten Trackpoint-Aufsatz nicht mag, wird sich vielleicht mit einem der 2 anderen anfreunden können.

Mein RAID5 löst sich auf

Eben etwas gestutzt, warum GRUB geschätzt 30 Sekunden gebraucht hat, um mir den Bootmanager meines Desktop-PCs zu präsentieren.

Inzwischen weiß ich warum:

end_request: I/O error, dev sda, sector 56
Buffer I/O error on device sda, logical block 7
ata1: translated ATA stat/err 0x51/40 to SCSI SK/ASC/ASCQ 0x3/11/04
ata1: status=0x51 { DriveReady SeekComplete Error }
ata1: error=0x40 { UncorrectableError }

Eine meiner vier 80GB-Samsung-SATA-Platten (SP0812C) scheint den Geist aufzugeben. Scheinbar ist genau einer der Blöcke defekt, auf dem Teile der Partitionstabelle liegen.

Nun stehe ich hier mit einem RAID1 über alle 4 Platten (/boot) sowie RAID5 für / und /home. Die RAID-Devices scheinen noch in Ordnung zu sein:

root@lisa:~>cat /proc/mdstat
Personalities : [raid0] [raid1] [raid5] [raid4]
md1 : active raid1 sdd1[3] sdc1[2] sdb1[1] sda1[0]
96256 blocks [4/4] [UUUU]

md2 : active raid5 sdd2[3] sdc2[2] sdb2[0] sda2[1]
17566848 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

md3 : active raid5 sdd3[3] sdc3[2] sdb3[1] sda3[0]
216684288 blocks level 5, 128k chunk, algorithm 2 [4/4] [UUUU]

unused devices:

Allerdings wäre es leichtsinnig, den Fehler trotz RAID zu ignorieren – deshalb muss Ersatz her. Die Plattenbelegung sieht wie folgt aus:

root@lisa:~>df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/md/2 ext3 17G 7.9G 7.9G 50% /
/dev/md/1 ext2 92M 9.1M 78M 11% /boot
/dev/md/3 ext3 204G 172G 33G 85% /home

Mir stellt sich nun die Frage, ob es sich überhaupt noch lohnt, die 80GB-Platte zu ersetzen oder ob ich besser ein neues RAID mit größeren Platten aufsetzen sollte.

Als Ersatz für die 4x 80GB gibt es z.B. folgende Möglichkeiten:

3x 250GB à 65€ = 195€ & 500GB netto bei RAID5 => 0.39€/GB
4x 250GB à 65€ = 260€ & 750GB netto bei RAID5 => 0.347€/GB
3x 300GB à 95€ = 285€ & 600GB netto bei RAID5 => 0.475€/GB
4x 300GB à 95€ = 380€ & 900GB netto bei RAID5 => 0.42€/GB
2x 400GB à 120€ = 240€ & 400GB netto bei RAID1 => 0.60€/GB

Durch den Verkauf der vier 80GB-Platten sollte sich, optimistisch gerechnet, ein kleiner Teil der Kosten wieder reinholen lassen (Gedankennotiz für Ebay: 4. Platte für “Bastler” :-)).

Der Kauf einer einzelnen 80GB-Platte schlägt mit immerhin rund 43€ zu Buche, so daß das auch nicht gerade die günstigste Alternative ist, schaut man sich das Preis-/Leistungverhältnis an.

Hat jemand … günstigere … Vorschläge? ;-)

Geringere Bandbreite ohne Traffic-Shaping

Heute ein Phänomen aus der Kategorie “strange”.

Ich benutze hier privat einen ADSL-Anschluss der Telekom, fälschlicherweise auch als T-DSL bezeichnet und eine Flatrate von KAMP.

Gestern wurde nun mein ADSL-Anschluss von der Telekom von 1000 auf 3000 kbit/s umgestellt – die Flatrate von KAMP ist technisch bedingt bis Ende diesen Monats noch eine 1000er, wird danach aber auf 6000 umgestellt (Bevor jemand fragt: die 6000er kostet bei KAMP genauso viel wie die 3000er).

Als Gateway ins Internet tut hier ein Linksys WRT54GS (V1.1) mit OpenWrt (white russian (rc3)) seinen Dienst. Zwecks Traffic-Shaping kommt bei mir auf dem Router ein angepasstes Wondershaper Script zum Einsatz.

Das seltsame ist nun, daß ohne Traffic-Shaping auf den Downstream die Downloadrate seit der Umstellung maximal zwischen 50 und 70 kByte/s beträgt. Sobald ich die Downstream-Bandbreite mit dem Script (in meinem Fall auf 1200 kbit/s) limitiere, steigt die Downloadrate wieder und strebt gegen etwa 125-127 kByte/s.

Nachvollziehen kann ich dieses Verhalten bisher nicht, denke aber, daß es etwas mit der Queue bei KAMP zu tun hat.

Hat vielleicht jemand von Euch eine plausible Erklärung?

Update: Das geschilderte Problem tritt nur auf, wenn ich mit meinem Desktop (Linux) runterlade. Lade ich auf dem Router direkt was runter, geht das selbst ohne Shaping mit voller Bandbreite.

Update II: Problem gelöst. Nach ein bisschen Fummelei mit den Linux TCP-Parametern funktioniert es nun wieder wie gewohnt.

Update III: Das scheint wohl ein größeres Problem zu sein – siehe Kerneltrap “Linux: Window Scaling on the Internet“. So wie es aussieht, sind “kaputte” Router zwischen Client und Server das Problem, ausgelöst durch eine Änderung im Linux-Kernel (siehe Kerneltrap-Artikel).

Wer testen möchte, ob er betroffen ist, kann versuchen auf http://www.everymac.com zuzugreifen. Sollte dies nicht klappen, kann man folgenden Workaround probieren:

# sysctl -w net.ipv4.tcp_window_scaling=0

Sollte der Zugriff auf oben genannte Seite nun möglich sein, so lässt sich der Workaround mit

# echo net.ipv4.tcp_window_scaling=0 >> /etc/sysctl.conf

beim Systemstart ausführen.

Dank gebührt Jörn für diesen Tip.

Migration von MySQL 4.0 auf MySQL 4.1 ohne Downtime

Heute haben wir auf Arbeit eine Frontend- (MySQL-Slave) und eine Backend-Datenbank (MySQL-Master) jeweis von Version 4.0.x auf 4.1 migriert. Ebenfalls nötig war die Auslagerung des Master-MySQL-Servers auf einen eigenen physischen Server, da sich unser Backend und die Backend-Datenbank in letzter Zeit spürbar gegenseitig behinderten.

Das ich mir letzte Woche viel Zeit genommen hatte, um die Migration bis ins kleinste Detail zu planen, zahlte sich heute aus: Die Migration lief perfekt, ohne größere Komplikationen und die für die Öffentlichkeit sichtbare Downtime der Frontend-Datenbank beschränkte sich auf ein paar Sekunden.
Zuerst wurde die Replikation auf dem Slave, auf den unser Webserver-Cluster zugreift, ausgeschaltet. Anschließend wurde vom alten Backend-Server ein 9.6 GB großer SQL-Dump über das Netzwerk auf den neuen Server gespielt, importiert und getestet.

Der komplette Frontend-DB-Server wurde geklont, das Netzwerk-Interface des “Originals” heruntergefahren & das Interface des “Klons” mit der selben IP hochgefahren. Somit konnten die Webserver weiterhin auf den Datenbank-Klon zugreifen, ohne in unzähligen Scripten auf den Webservern die IP des Datenbank-Servers ändern zu müssen.

Nun noch MySQL 4.1 in Ruhe auf den Original-Server (Slave) aufspielen, einmal den Master anhalten um die benötigten Files aus /var/lib/mysql auf den Slave zu kopieren, testen ob alles funktioniert und anschliessend wieder das Spielchen mit den Netzwerk-Interfaces.

Dann noch kurz ein slave start auf der Frontend-DB und die Sache war geritzt.

head2desk

Kollege: locate geht auf meinem Development Server nicht. emerge locate klappt auch nicht.

Ich: emerge slocate

Kollege: Wie aktualisiere ich die Datenbank?

Ich: updatedb

Kollege: Wie startet man den Apache?

Ich: /etc/init.d/apache2 start

Kollege: Geht nicht.

Gehe zu seinem Rechner und sehe auf seiner Konsole:

root@foobar:/etc/init.d>apache2 start
Usage: apache2 [-D name] [-d directory] [-f file]
[-C “directive”] [-c “directive”]

Nach dem Hinweis, daß man in solchen Fällen ./ voranstellt und der Erläuterung der Hintergründe dieser Notwendigkeit, frage ich ihn eben noch, wozu er eigentlich locate brauche.

Antwort: Um /etc/init.d zu finden

*kreisch*

Manchmal nervt sogar Gentoo

Ja, richtig. Manchmal geht mir sogar Gentoo auf den Sack die Nerven, obwohl ich sonst eigentlich sehr viel von Gentoo halte.

Da will man die Nacht über ein

emerge -uDN world

laufen lassen um OpenOffice.org, Firefox und hundert andere Pakete zu aktualisieren/compilieren und dann stellt man am Morgen darauf fest, daß emerge bereits nach ein paar Minuten, beim Versuch Postfix zu aktualisieren, seinen Dienst eingestellt hat:

* You are upgrading from a incompatible version.
* You MUST stop postfix BEFORE install it to your system.
* If you want a minimal downtime, emerge postfix with:
* `FORCE_UPGRADE=1 emerge –buildpkgonly postfix`; then
* `/etc/init.d/postfix stop && emerge –usepkgonly postfix`
* run etc-update or dispatch-conf and merge the configuration files.
* Next /etc/init.d/postfix start

Eigentlich bin ich ja froh, daß emerge nicht einfach ohne Rückfrage meinen MTA runterfährt und Postfix aktualisiert – auf der anderen Seite würde so ein Hinweis direkt nach dem Starten des emerge Befehls den einen oder anderen Wutanfall verhindern ;)

Netzwerksicherheit

Wie ihr sicher schon gelesen habt, drücke ich im Moment noch ein- bis zweimal die Woche die Schulbank.

Die Berufsschule hat als Zugriffskontrolle zum Internet einen Microsoft ISA Server im Einsatz, über den die Lehrer individuell Schüler oder ganze Klassen für den Zugriff aufs Internet freischalten können. Der Schüler meldet sich dann mit seinen Zugangsdaten am Proxy an und surft fortan protokolliert und zensiert durchs Netz.

Soweit nicht weiter problematisch – wenn es denn keinen anderen Weg ins Internet gäbe…