10.02.2017

Yum Version Lock

Manchmal kommt es vor dass man verhindern will das automatisch Pakete upgedatet werden.
zB macht es manchmal Sinn das automatische Update des check-mk-agent auf Centos 7 zu verhindern wenn man das epel Repository eingebunden hat.
Dies erreicht man einfach mit dem YUM Plugin versionlock

yum install yum-plugin-versionlock
yum versionlock check-mk-agent

Das kann man dann noch relativ einfach nachprüfen indem man in das lockfile schaut. 

cat /etc/yum/pluginconf.d/versionlock.list
# Added locks on Fri Feb 10 13:50:57 2017
0:check-mk-agent-1.2.6p12-1.*

Danach macht ein yum update kein automatisches Update des check-mk-agent mehr.

Kategorie: Linux, CentOS


21.03.2014

Netzwerk trace nach prozess id

wenn man zB ein bestimmtes Email netzwerkseitig debuggen möchte, ist es auf einem Mailserver mit sehr viel Traffic oft sehr schwierig da das abhören des Port 25 sehr viel anderen Traffic der nicht relevant ist ebenfalls aufzeichnet.
Besser ist es da, den Netzwerktraffic des expliziten Prozesses mitzuschneiden. Der Output ist leider kein pcap kompatibles Format, aber für den kurzen Check reicht es allemal. 

Hier wurde zB.: nachgesehen welche Spamlists der sendmail verwendet und ob diese auch schnell antworten. Hinter dass -p gehört dann natürlich die entsprechende Prozess-ID

strace -p 3636 -f -e trace=network -s 10000

send(8, "\331\314\1\0\0\1\0\0\0\0\0\0\3icb\2at\0\0\1\0\1"..., 24, MSG_NOSIGNAL) = 24
recvfrom(8, "\331\314\205\200\0\1\0\1\0\2\0\2\3icb\2at\0\0\1\0\1\300\f\0\1\0\1\0\1Q\200\0\4\303\346\250X\300\ f\0\2\0\1\0\1Q\200\0\21\7goliath\3icb\2co\300\20\300\f\0\2\0\1\0\1Q\200\0\7\4puck\300socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 8
connect(8, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("195.230.xx.xx")}, 28) = 0
send(8, "jB\1\0\0\1\0\0\0\0\0\0\00231\003160\003230\003195\2ix\5dnsbl\6manitu\3net\0\0\1\0\1"..., 52, MSG_NOS IGNAL) = 52
recvfrom(8, "jB\201\203\0\1\0\0\0\1\0\0\00231\003160\003230\003195\2ix\5dnsbl\6manitu\3net\0\0\1\0\1\300\33\0 \6\0\1\0\0\0connect(8, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("195.230.xx.xx")}, 28) = 0
send(8, "\377\375\1\0\0\1\0\0\0\0\0\0\00231\003160\003230\003195\3zen\10spamhaus\3org\0\0\1\0\1"..., 49, MSG_ NOSIGNAL) = 49
recvfrom(8, "\377\375\201\203\0\1\0\0\0\1\0\0\00231\003160\003230\003195\3zen\10spamhaus\3org\0\0\1\0\1\300\3 3\0\6\0\1\0\0\0\226\0004\4need\2to\4know\4only\0\nhostmaster\300\37S\243M\204\0\0\16\20\0\0\2X\0\6\227\200\0\ 0\0\226"..., 1024, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("195.230.xx.xx")}, [16]) = 113

Kategorie: Linux, CentOS


31.01.2014

Centos 6 add disk space with LVM on Server without reboot

Überarbeitet Variante des Artikels für CentOS6!

Des öfteren kommt es vor, dass man bei einem virtuellen Server eine Partition vergrößern muss. Dank Virtualisierung und LVM2 ist das kein Problem.

Als Erstes erstellen wir einen Snapshot der virtuellen Maschine. Sicher ist sicher...

Als Nächstes vergrößern wir die physische Festplatte der virtuellen Maschine. Nach einem Vergößern der "physischen" Festplatte einer virtuellen Maschine (zB Vmware) kann es vorkommen dass der Linux Server immernoch die alte Blockgröße kennt. So erscheint die gerade vergrößerte Festplatte immer noch als kleine Platte. Nun kann man warten bis das Linux System das selbst erkennt, den Server rebooten oder dem Linux-Kernel einen kleinen Tip geben ;)

Mit dem Befehl:

echo 1 > /sys/class/scsi_device//device/rescan

 kann ein Neuscan des SCSI devices veranlasst werden. Danach sollte die Festplatte die neue größe haben.

Als nächstes sollte man die entsprechen Paritition unmounten. (Dies kann beim vergrößern auch übersprungen werden, ist aber nicht 100% Risiko frei)

umount /var/tmp/

Nun legt man am besten eine neue Partition mit cfdisk an. Diese sollte wieder vom Typ "Linux LVM 8e" sein. Danach muss die Partition Table neu eingelesen werden, da dies CentOS6 per default nicht mehr macht. Mit dem Befehl:

partx -a /dev/sda

kann man diesen Vorgang händisch anstoßen.
Nun müssen wir die neue Partition dem LVM zur Verfügung stellen. 

pvcreate /dev/sda5

Jetzt müssen wir noch die gewünschte Volume Group um die hinzugefügte Partition vergrößern.

vgextend vg_webc0101 /dev/sda5

Danach kann das lvm Volume bequem vergrößert werden. In unsrem Falle auf die neue größe von 10Gb. Das richtige logical Volume findet man übrigens ganz einfach mittels df -h heraus. Mit dem Schalter -r resizen wir auch gleich das filesystem mit.

lvextend -r -l+100%FREE /dev/vg_webc0101/lv_root
Extending logical volume lv_root to 12.54 GiB
Logical volume lv_root successfully resized
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg_webc0101-lv_root is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mapper/vg_webc0101-lv_root to 3286016 (4k) blocks.
The filesystem on /dev/mapper/vg_webc0101-lv_root is now 3286016 blocks long.

Danach einfach noch die vergrößerte Partition wieder mounten.

mount /var/tmp/

Nachdem sich versichert hat dass alles funktioniert sollte auch der virtuelle Maschinen Snapshot wieder entfernt werden!

Kategorie: CentOS


12.01.2014

Virtueller Linux Maschine eine Festplatte hinzufügen

Hier kurz ein paar Tips wie man einer virtuellen Linux Maschine eine neue Festplatte hinzufügt.

- fügt ihr die Festplatte in eurer Virtualisierungsplattform euer Wahl der virtuellen Maschine hinzu
- muss man nun einen rescan des scsi Bus initaliesieren damit die neue Platte erkannt wird. Ansonsten müsste man die Maschine neu starten, was man natürlich gerne vermeiden will

echo "- - -" > /sys/class/scsi_host/host#/scan 

danach kann man mittels 

fdisk -l

nachsehen ob die neue Festplatte erkannt wurde. Nachdem die Festplatte nun vom System erkannt wird, kann Sie ganz normal mittels fdisk, cfdisk, etc. partitioniert werden. Zb eine große Partition vom Typ Linux.

fdisk /dev/sdb

Nach dem partitionieren muss man die neue Partition nur noch formatieren und mounten.

mkfs.ext4 /dev/sdb1
mount /dev/sdb1 /mnt

Und schon können wir auf die neue Disk zugreifen. Virtuelle Disken eignen sich übrigens auch hervorragend als "USB-Stick Ersatz" beim kopieren von Daten zwischen virtuellen Maschinen ohne Netzwerkverbindung!

Kategorie: Linux, CentOS


30.01.2013

Postfix Mails aus der queue löschen

Wenn man beim postfix gezielt Mails aus der queue löschen möchte kann man das mit diesem Befehl tun, wobei searchstring durch den string ersetzt werden sollte nachdem man suchen möchte. zB yahoo.com, etc.

find /var/spool/postfix/deferred/ -type f -exec grep -l 'searchstring' '{}' \; | xargs -n1 basename | xargs -n1 postsuper -d

Kategorie: Linux, CentOS


16.08.2012

Debug php mit strace und mod_fcgid

Speziell bei timeout Problemen kann es vorkommen dass der php Prozess einfach nach 30 sec. austimed und bei der Webseite ein HTTP ERROR 500 ausgegeben wird. Jetzt ist es oft schwierig den Fehler zu erkennen man ja den Programmcode nicht kennt.

Die Fehlermeldung dazu im Apache Log sieht oft wie folgt aus:

[info] mod_fcgid: process /etc/apache2/phpconf/xxxxx/php-fcgi-starter(12813) exit(communication error), terminated by calling exit(), return code: 0
www.webseite.at.at 195.230.xxx.xxx - - [16/Aug/2012:11:38:36 +0200] "GET / HTTP/1.1" 500 534 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.75 Safari/537.1"

Ein nützliches tool ist hierbei strace, da es alle Systemaufrufe aufzeichnet die der php Prozess ausführt. Hierbei erkennt man zB wenn ein file nicht gelesen werden kann, oder eine tcp Verbindung steht aber keine connection zustande kommt.

Bei php mittels fcgi hat man aber das Problem dass der php Prozess meist erst gestartet wird mit einer neuen pid und bis man diese weis, ist auch schon der interessante Teil vorbei. Abhilfe schafft hier wenn schon beim starten des php Prozesses den strace mitstarten. Eintragen kann man dies am besten im php-fcgi-starter script. 

#!/bin/sh
PHPRC="/etc/apache2/phpconf/xxx/"
export PHPRC
export TMPDIR=/tmp
# Set desired PHP_FCGI_* environment variables.
# Example:
# PHP FastCGI processes exit after 500 requests by default.
PHP_FCGI_MAX_REQUESTS=500
export PHP_FCGI_MAX_REQUESTS
FcgidMaxRequestsPerProcess=500
export FcgidMaxRequestsPerProcess
FcgidProcessLifeTime=600
export FcgidProcessLifeTime
PHP_FCGI_CHILDREN=0
export PHP_FCGI_CHILDREN
#### PHP Prozess mit strace
exec strace -o /tmp/strace.out /opt/php5/php5standard
#exec /opt/php5/php5standard

wie wir schön sehen landet der output nun im /tmp Verzeichnis. So sieht das ganze dann zB aus wenn ein Zugriff auf einen externen Webserver ein timeout verursacht.

socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 6
fcntl(6, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(6, F_SETFL, O_RDWR|O_NONBLOCK) = 0
connect(6, {sa_family=AF_INET, sin_port=htons(1080), sin_addr=inet_addr("195.202.xxx.xxx")}, 16) = -1 EINPROGRESS (Operation now in progress)
poll([{fd=6, events=POLLIN|POLLOUT|POLLERR|POLLHUP}], 1, 5000) = 1 ([{fd=6, revents=POLLOUT}])
getsockopt(6, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
fcntl(6, F_SETFL, O_RDWR) = 0
sendto(6, "GET 69.171.xxx.xxx/feeds/p"..., 82, MSG_DONTWAIT, NULL, 0) = 82
sendto(6, "Host: 69.171.xxx.xxx\r\n", 21, MSG_DONTWAIT, NULL, 0) = 21
sendto(6, "User-Agent: Mozilla/5.0 (Windows"..., 104, MSG_DONTWAIT, NULL, 0) = 104
sendto(6, "\r\n", 2, MSG_DONTWAIT, NULL, 0) = 2
poll([{fd=6, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 1, 0) = 0 (Timeout)
poll([{fd=6, events=POLLIN|POLLERR|POLLHUP}], 1, 5000) = 0 (Timeout)
poll([{fd=6, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 1, 0) = 0 (Timeout)
poll([{fd=6, events=POLLIN|POLLERR|POLLHUP}], 1, 5000) = 0 (Timeout)
close(6) = 0

Nachdem man nun festgestellt hat dass der Zugriff auf 69.171.xxx.xxx anscheinend ein Timeout Problem hat muss man diesen Code Teil nur noch ausfindig machen und fixen ;)

Kategorie: Linux, CentOS, PHP


07.08.2012

Resize ext3 mit LVM2 / Neuscannen der SCSI Festplatten

Des öfteren kommt es vor, dass man bei einem virtuellen Server eine Partition vergrößern muss. Dank Virtualisierung und LVM2 ist das kein Problem.

Als Erstes erstellen wir einen Snapshot der virtuellen Maschine. Sicher ist sicher...

Als Nächstes vergrößern wir die physische Festplatte der virtuellen Maschine. Nach einem Vergößern der "physischen" Festplatte einer virtuellen Maschine (zB Vmware) kann es vorkommen dass der Linux Server immernoch die alte Blockgröße kennt. So erscheint die gerade vergrößerte Festplatte immer noch als kleine Platte. Nun kann man warten bis das Linux System das selbst erkennt, den Server rebooten oder dem Linux-Kernel einen kleinen Tip geben ;)

Mit dem Befehl:

echo 1 > /sys/class/scsi_device/<device>/device/rescan

 kann ein Neuscan des SCSI devices veranlasst werden. Danach sollte die Festplatte die neue größe haben.

Als nächstes sollte man die entsprechen Paritition unmounten. (Dies kann beim vergrößern auch übersprungen werden, ist aber nicht 100% Risiko frei)

umount /var/tmp/

Danach kann das lvm Volume bequem vergrößert werden. In unsrem Falle auf die neue größe von 10Gb. Das richtige logical Volume findet man übrigens ganz einfach mittels df -h heraus.

lvresize -L 10G /dev/mapper/VolGroup00-LogVol05
Extending logical volume LogVol05 to 10.00 GB Logical volume LogVol05 successfully resized

Um ganz sicher zu gehen machen wir vor dem vergrößern des ext Filesystems einen Filesystem Check.

e2fsck -f /dev/mapper/VolGroup00-LogVol05
e2fsck 1.39 (29-May-2006)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information /dev/mapper/VolGroup00-LogVol05: 11/1048576 files (9.1% non-contiguous), 67697/1048576 blocks

Nun kann das Filesystem vergößert werden.

resize2fs /dev/mapper/VolGroup00-LogVol05 10G
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on /dev/mapper/VolGroup00-LogVol05 to 2621440 (4k) blocks.
The filesystem on /dev/mapper/VolGroup00-LogVol05 is now 2621440 blocks long.

Danach einfach noch die vergrößerte Partition wieder mounten.

mount /var/tmp/

Nachdem sich versichert hat dass alles funktioniert sollte auch der virtuelle Maschinen Snapshot wieder entfernt werden!

Kategorie: Linux, CentOS


 
Telefon:
E-Mail:
Fax:
Web:

+43 2682 24080
office(at)epb.at
+43 2682 205 7700 9963
zum Kontaktformular