Recently in Servers Category
ysischer Festplatten eines Computers zu einem logischen Laufwerk, das eine höhere Datenverfügbarkeit bei Ausfall einzelner Festplatten und/oder einen größeren Datendurchsatz erlaubt als ein einzelnes physisches Laufwerk. (... mehr siehe Wikipedia).


Mit folgendem kleinen Bash-Skript lassen sich per Cron angetriggert tägliche ZFS-Snapshots erstellen. Natürlich sollte man die Snapshots zusätzlich noch auf einem externen Datenträger (wie wärs mit einem Smartdrive? ;) sichern und am besten noch verschlüsslet.
#!/usr/local/bin/bash
# Do ZFS Snapshots (c) Paul Buetow
for snapshot in "$(zfs list -t snapshot | egrep 'before[0-9]+days')"; do
echo "$snapshot" | while read name used avail refer mountpoint; do
case $name in
*@before7days)
zfs destroy $name
;;
*)
basename=$(echo $name | cut -d @ -f 1)
snapname=$(echo $name | cut -d @ -f 2)
now=$(echo $snapname | sed -E 's/.*([0-9]+).*/\1/')
next=$((now + 1))
zfs rename $name $basename@before${next}days
;;
esac
done
done
for tank in $(zfs list | cut -d ' ' -f 1 \
| egrep '^tank/(storage|usr/jail/serv|backup/ufs)'); do
zfs snapshot $tank@before0days
done
[root@saturn /usr/scripts]# zfs list -t snapshot | grep storage00
tank/storage00@before7days 9.98M - 10.9G -
tank/storage00@before6days 9.68M - 10.9G -
tank/storage00@before5days 7.45M - 35.9G -
tank/storage00@before4days 2.56M - 35.9G -
tank/storage00@before3days 98.5K - 3.09G -
tank/storage00@before1days 57K - 3.09G -
tank/storage00@before0days 57K - 3.09G -
Wenn man sein Passwort vergessen hat oder wenn das alte Passwort wegen geändertem Hash-Algorithmus nicht mehr funktioniert und Shell-Zugriff auf den Server hat, so kann man sein RequestTracker Passwort unter FreeBSD wie folgt recovern:
[root@hyperion /usr/local/rt3]# perl -I /usr/local/rt3/lib/ -MRT -MRT::User -e 'RT::LoadConfig();RT::Init(); my $u = RT::User->new($RT::SystemUser); $u->Load("username"); $u->SetPassword("secret")'
Kann man u.A. so herausfinden:
[root@saturn /usr/scripts]# cat kldmem.sh
#!/bin/sh -
TEXT=`kldstat | awk 'BEGIN {print "16i 0";} NR>1 {print toupper($4) "+"} END {print "p"}' | dc`
DATA=`vmstat -m | sed -Ee '1s/.*/0/;s/.* ([0-9]+)K.*/\1+/;$s/$/1024*p/' | dc`
TOTAL=$((DATA + TEXT))
echo TEXT=$TEXT, `echo $TEXT | awk '{print $1/1048576 " MB"}'`
echo DATA=$DATA, `echo $DATA | awk '{print $1/1048576 " MB"}'`
echo TOTAL=$TOTAL, `echo $TOTAL | awk '{print $1/1048576 " MB"}'`
[root@saturn /usr/scripts]# ./kldmem.sh
TEXT=15866644, 15.1316 MB
DATA=491325440, 468.564 MB
TOTAL=507192084, 483.696 MB
Bis auf wenige unwichtige habe ich bis gestern alle möglichen Core Services (Mailserver, Webmailer, PHPMyAdmin, Mailman, MovableType) auf einen anderen Server zwecks Verkleinerung (ein Server wurde gekündigt) umgezogen. Somit laufen die Core Services nicht mehr in einem Debian GNU/Linux Lenny Xen DomU sondern in einer FreeBSD 8.2 Jail und ZFS als Dateisystem.
Als Nebeneffekt sind die Core-Services nun in der aktuellsten Softwareversion installiert, da die FreeBSD Ports hier aktueller als das bereits auslaufende Lenny sind.
Es fehlt allerdings noch das Feintuning. Aber die wichtigsten Komponenten laufen bereits. Bis auf den RequestTracker. Den werde ich heute oder morgen wieder zum Laufen bekommen.
Seit heute unterstützt mein Shell-Server saturn.buetow.org (FreeBSD) inklusive seiner Jails (u.A. titan.buetow.org) natives IPv6. Jeder Kunde kann bei Bedarf sein eigenes /16 IPv6 Subnetz kostenlos bekommen.
Seit etwas längerer Zeit hat bereits jupiter.buetow.org (Linux Dom0) nativen IPv6 Support. Die DomUs müssen allerdings noch dafür konfiguriert werden.
Ping6 von jupiter.buetow.org auf titan.buetow.org:
pb@jupiter:~$ ping6 2a01:4f8:100:7263:bad:dead:beef:babe PING 2a01:4f8:100:7263:bad:dead:beef:babe (2a01:4f8:100:7263:bad:dead:beef:babe) 56 data bytes 64 bytes from 2a01:4f8:100:7263:bad:dead:beef:babe: icmp_seq=1 ttl=62 time=0.172 ms 64 bytes from 2a01:4f8:100:7263:bad:dead:beef:babe: icmp_seq=2 ttl=62 time=0.156 ms 64 bytes from 2a01:4f8:100:7263:bad:dead:beef:babe: icmp_seq=3 ttl=62 time=0.163 ms ^C --- 2a01:4f8:100:7263:bad:dead:beef:babe ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 1999ms rtt min/avg/max/m
LVS (Linux Virtual Server) works.
The Linux Virtual Server is a highly scalable and highly available server built on a cluster of real servers, with the load balancer running on the Linux operating system. The architecture of the server cluster is fully transparent to end users, and the users interact as if it were a single high-performance virtual server.
Also, ruhig mal angucken!
#!/usr/local/bin/bash
# check_ftp_df.sh
# Free FTP disk space nagios check
# (c) Paul Buetow 2010
set -e
WARN=$1
CRITICAL=$2
FTPSPACE=$3
USERNAME=$4
PASSWORD=$5
BACKUPSERVER=$6
if [ -z $BACKUPSERVER ]; then
echo "UNKNOWN: Could not execute the check"
exit 3
fi
du=`echo du -s . | lftp -u $USERNAME,$PASSWORD $BACKUPSERVER | \
sed 's/\.//'`
eval df=$(( $FTPSPACE - $du ))
if [ $? -ne 0 ]; then
echo "UNKNOWN: Wrong credentials?"
exit 3
fi
if [ $df -lt $CRITICAL ]; then
echo "CRITICAL: Free disk space: $df KBytes"
exit 2
elif [ $df -lt $WARN ]; then
echo "WARNING: Free disk space: $df KBytes"
exit 1
fi
echo "OK: Free disk space: $df KBytes"
exit 0





