XFS defragmentierung

Linux-Dateisysteme fragmentieren auch. Sie gehen damit zwar besser um, als Windows-Dateisysteme, dennoch ist es etwas, was in normalem Betrieb passiert und auf Festplatten zu langsamen Zugriffszeiten führen kann.

Man kann alle nachfolgenden Kommandos auf einem gemountetem Dateisystem ausführen.

Zuerst schauen wir uns die Fragmentierung an, für Dateien (-f) und Ordner (-d):

xfs_db -r /dev/sda3 -c 'frag -f'
xfs_db -r /dev/sda3 -c 'frag -d'

Die Ausgabe könnte in etwa so aussehen:

actual 231196, ideal 230546, fragmentation factor 0,28%
Note, this number is largely meaningless.
Files on this filesystem average 1,00 extents per file

actual 231199, ideal 230547, fragmentation factor 0,28%
Note, this number is largely meaningless.
Files on this filesystem average 1,00 extents per file

Danach kann man mit folgendem Kommando das Dateisystem defragmentieren (dauert bisschen):

xfs_fsr -p 10 -v /home/

Oder einfach alle Dateisysteme:

xfs_fsr

Danach kann man nochmals den Status überprüfen, der sich dann geändert haben sollte.

Transparenter Squid Proxy

Transparenter Squid Proxy auf Ubuntu 8.04.1 Server

Im Internet kursieren verschiedene Anleitungen, wie man einen transparenten Squid Proxy aufsetzt. Leider sind einige veraltet, beziehen sich auf den alten Squid oder sonst etwas älteres. Ich habe mir vorgenommen eine aktuelle Anleitung zu schreiben, die auf dem Ubuntu Server 8.04.1 (Hardy Heron) basiert.

Der Server braucht mindestens 2 Netzwerkkarten, bevorzugt Inten PRO-1000. Ich nehme an, das lokale Netz ist 192.168.0.0/24, der Router hat die IP 192.168.0.1 und unser Proxy bekommt die IP 192.168.0.2 und die Nameserver haben die IPs 193.101.111.20 sowie 193.101.111.10.

Zuerst ist eine Ubuntu-Installation vorzunehmen. Diese wird normal gemacht, aber am Ende wird nur noch der SSH-Server installiert.

Nach der Installation installieren wir einige Pakete:

# apt-cache search squid | grep -e "^squid " -e "^sqcwa " -e "^squid-prefetch " -e "^bridge-utils "
squid - Internet object cache (WWW proxy cache)
sqcwa - Workaround for Squid not caching some pages
squid-prefetch - Simple page-prefetch for Squid web proxy
bridge-utils - Utilities for configuring the Linux ethernet bridge
# apt-get install squid sqcwa squid-prefetch bridge-utils

In /etc/squid/squid.conf suchen wir die folgende Zeilen:

http_port 3128
#acl our_networks src 192.168.1.0/24 192.168.2.0/24
#http_access allow our_networks

und ändern es in:

http_port 3128 transparent
acl our_networks src 192.168.0.0/24
http_access allow our_networks

Danach ersetzen wir den Inhalt von /etc/network/interfaces durch:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto br0
iface br0 inet static
pre-up brctl addbr br0
pre-up brctl addif br0 eth0
pre-up brctl addif br0 eth1
pre-up ifconfig eth0 0.0.0.0
pre-up ifconfig eth1 0.0.0.0
post-down brctl delbr br0
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.1
bridge_fd 0
bridge_hello 0
bridge_stp off

Dann noch DNS in /etc/resolv.conf:

nameserver 193.101.111.20
nameserver 193.101.111.10

Vor dem Ende kommt noch die magische iptables-Regel in die /etc/rc.local:

/sbin/iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Sollten wir irgendwann einen Paketfilter auf iptables-Basis haben so fügen wir diese Regel dort ein.

Am Ende shutdown. Jetzt stellen wir den Proxy neben dem Router, schliessen eine Netzwerkkarte an den Router direkt und die andere an das Netzwerk. Welche wohin ist vollkommen egal.

Das Ganze ist natürlich beliebig ausbaufähig…

Einschalten, fertig ;)

Tuning des EXT3 Dateisystems

Das unkaputtbare EXT3 Filesystem ist nicht unbedingt das schnellste. Man kann ihm aber einen Schub verpassen.

Mit der Option ‘dir_index’ wird eine zusätzlich Tabelle mit den Positionen der Dateien im Dateisystem angelegt. Es steigert die Geschwindigkeit beim Zugriff auf die Dateien. Einschalten muss auf einem sauberem Dateisystem erfolgen, also am besten GRLM oder Knoppix booten. Angenommen wir möchten uns auf ‘/dev/sda2’ austoben:

tune2fs -O dir_index /dev/sda2
e2fsck -D -f /dev/sda2

Das erste Kommando aktiviert es, danach fird mit fsck die Tabelle neu erzeugt. Das dauert länger, ist aber absolut unschädlich.

Danach kann man das full-journaling aktivieren. Ergibt noch einen Zuwachs an Geschwindigkeit. Ein Nachteil gibt es aber. Das Löschen sehr grosser Dateien dauert bischen länger.

Full Journaling aktiviert man, indem man die ‘data=journal’ Option beim Mounten angibt. Für die Root-Partition muss eine Kernel-Option angegeben werden:

rootflags=data=journal

Das kann auch in die ‘/boot/grub/menu.lst’ eingetragen werden.