Archiv der Kategorie: PC-Kram

Meine Lieblingsbeschäftigung :)

Auf der Suche nach den inodes

So ein Linux-Server mit ext4 ist nicht so schnell klein zu bekommen – ich schaffs aber natürlich trotzdem. Auf einem meiner App-Server verabschiedete sich übers Wochenende der Datenbankserver. Diagnose eindeutig: Platte voll, 0 Bype frei. Der Auslöser ist auch schnell ausgemacht – mangels logrotate haben sich über 8GB in /var/log angesammelt. Klare Sache – Logs löschen, Dienste neustarten undnichts. Platte voll. Dafuq? Am Platz liegts nicht – dort sind die 8GB nun frei – ich vermute Böses…

# df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/root 23G 14G 8.2G 62% /
# df -i /
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/root 1474560 1474560 0 100% /

Treffer versenkt – die Inodes sind voll. Aber warum? Nach kurzem Gegoogle gehe ich davon aus, dass meist eine Datei = ein Inode ist, also wird die Bash-Keule ausgepackt:

(for i in `find / -xdev -type d 2>/dev/null` ;do (echo -n `ls -1a "$i" | grep -vP "^(.|..)$" |wc -l` && echo " - $i") ;done) | sort -n

Dieser Code erzeugt eine Liste aller Ordner auf dem Device der Root-Partition – aufsteigend nach der Anzahl der Dateien sortiert. In meinem Fall ist der Schuldige relativ eindeutig:

[...]
1460 - /usr/share/man/man1
1620 - /usr/portage/metadata/cache/dev-perl
1620 - /usr/portage/metadata/md5-cache/dev-perl
1692 - /usr/portage/metadata/glsa
4554 - /usr/share/man/man3
972513 - /var/nagios/home/.maildir/new

Ich sollte mal ein paar Mails löschen -Oder auch nicht, denn…

rm *
-bash: /bin/rm: Argument list too long

also muss auch hier getrickst werden:
find ./ -exec rm {} +

PHP Google+ Library – und es postet doch…

Google+ dümpelt weiter vor sich hin – zwar hält mich die mangelhafte Clientauswahl weiterhin davon ab dort mehr im „Tagesgeschäft“ zu machen, allerdings sind Features wie die Hangouts Gold wert. Meine erste Anforderung für regelmäßige Nutzung bin ich nun einmal angegangen: Ich möchte posten. Nicht über einen vorgegebenen Client, meine Rechner sammeln ohnehin schon eine Menge Informationen zusammen und die sind vermutlich nicht nur für mich interessant. Gut, dass es eine API gibt. Nicht. Googe stellt zwar bereits eine API mit OAuth & Co zur Verfügung, aber die ist derzeit nur lesend zu benutzen.

Zum Glück bin ich nicht der einzige mit diesem Wunsch, so hat Luka Pusic bereits einen Google+-Bot in PHP geschrieben und praktischerweise auf GitHub veröffentlicht. Statt mit einer API zu kämfen emuliert sein Script schlichtweg einen (Handy)Browser und liefert so die Daten bei Google ab. Zwar ist das Ganze nicht unbedingt für Webapplikationen brauchbar, für lokale Single-User-Scripte wie meine aber perfekt. Auf Basis seines Codes habe ich nun eine kleine Google+-Library gebastelt – neben etwas Codeputz gibt es auch eine Funktion um einen Status mit Bilddatei zu veröffentlichen. Leider ist das Mobilinterface recht eingeschränkt, sodass bisher keine (schönen) Links oder Verknüpfungen zu anderen Personen auf G+ möglich sind. Also kein allumfassender G+-Zugriff, aber genug um z.B. einen Twitter2G+-Bot zu realisieren, wie er sich derzeit auf meinem Account austobt. Die Post sind momentan auf den Kreis „Öffentlich“ hardcoded, sollte sich aber bei Bedarf recht leicht anpassen lassen.

Den Code der G+-Lib gibt’s auf GitHub, der Twitter-Bot ist noch nicht so komplex, als das sich das lohnen würde. Und wenn ich schon mit den neuen Netzen rumspiele kann man das Projekt dann auch Flattrn.

BitBastelei #17 – Solarmonitoring mit dem Volkszähler

BitBastelei #17 - Solarmonitoring mit dem Volkszähler

(77 MB) 00:05:29

2012-07-22 19:46 🛈

Software:

Hardware:

BitBastelei #16 – Kurzreview Münzzählautomat

BitBastelei #16 - Kurzreview Münzzählautomat

(96 MB) 00:07:29

2012-07-14 14:57 🛈

Während mein Solarsystem noch nicht so ganz will etwas Zwischenunterhaltung: Funktionsweise eines billigen Münzzählers

…und da YT ein paar Sekunden verschluckt hat: Preisklasse ist 10-20€, wenn man ab und an Münzansammlungen zählen muss ist es aber ganz praktisch

Abstraktionswahnsinn

Abstrahieren – das Zauberwort für jede Tätigkeit, das Erste, was man an weiterführenden Schulen lernt. Warum muss ich als Softwareentwickler wissen wie ein Computer funktioniert? Warum als Käufer wo T-Shirt und Kartoffel her kommen? Warum als Autofahrer aus welchen Teilen ein Motor besteht? Heute ist diese Denkweise offenbar die ideale Methode um Lern- und Entscheidungsprozesse zu vereinfachen. Der Strom kommt aus der Steckdose, die Nudeln aus der Dose und die Blutkonserve aus der Kühlkammer.  Wenn etwas schief geht oder sich herausstellt, dass die Herstellung ethisch nicht ganz so sauber ist kann man ohne Gewissensbisse den Zulieferer verantwortlich machen – man hat sich ja schließlich nur am Markt oder sonstigen verfügbaren Ressourcen bedient. Trotzdem schaut man in diesem Fall erst mal in die Röhre: Bis die Zulieferprobleme behoben sind kann man seine Tätigkeiten pausieren. Ob das auf Dauer gut geht wage ich zu bezweifeln – ich für meinen Fall möchte wissen wie meine Geräte funktionieren, wo und wie die Produkte wie hergestellt werden und was an diesem Prozess mir in nächster Zeit um die Ohren fliegen könnte/wird (Gruß an unsere Banken). Die Hersteller einiger Branchen versuchen natürlich diese Informationen nicht an die Öffentlichkeit dringen zu lassen – mit diesen könnte man schließlich ihr Geschäft schaden. Als Endanwender hat man dafür dann die Entscheidungshoheit, die möglichkeit selbst bei Problemen zu improvisieren oder – wie bei einigen Lebensmitteln oder Geräten – Teile der Herstellung selbst zu übernehmen. Ich such dann mal weiter nach Informationen…

Virtualisierung ist keine Redundanz…

In letzter Zeit wird mir immer wieder vorgetragen wie toll doch Virtualisierung ist. Kostenersparnisse, einfache Backups, und obendrein gibt’s Hochverfügbarkeit. Nun wer die aktuellen Lizenzpreise des Marktführers VMWare kennt weiß, dass man zum Kosten sparen leider immer tiefer in die Tasche greifen muss – auch das Backup-Argument ist durch die Macken von VCB mit einem unübersehbaren Sternchen zu lesen. Was mich aber am meisten auf die Palme bringt ist die Annahme, das Virtualisierung eine nahezu unfehlbare Hochverfügbarkeit biete. Ja, die meisten Virtualisierungssysteme können per shared Storage oder Storage Replication  VMs bei Ausfall eines Hosts oder Wartungsarbeiten auf einem anderen Hypervisor starten und so die Verfügbarkeit erhöhen – das deckt aber nur einen einzigen Bereich ab: Hardwarefehler. Schaut man sich aktuelle Server mit ECC, redundanten Komponenten und RAID an sollte klar sein, dass diese Problematik bereits seit langem bekannt ist und die Hersteller an der Verfügbarkeit gearbeitet haben. Die letzten größeren Ausfälle, welche ich bei mir verzeichnen konnte, waren mit einer einzigen Ausnahme Softwarefehler – solche, die Virtualisierung nicht abdecken. Wenn das Windows in einen Bluescreen rennt, die Datenbank entscheidet sämtliche Tabellen zu löschen oder ein Update bei der Entfernung der Sicherheitsdateien etwas zu gründlich ist muss man weiterhin auf Backups zurückgreifen und mit Ausfallzeiten rechnen. Man könnte jetzt mit Snapshots argumentieren, aber  meist sind nur einzelne Softwarekomponenten betroffen und ein Rollback des gesamten Servers unerwünscht. Selbst den erwähnten Hardwarefehler hätten viele Virtualisierungsumgebungen nicht abgefangen: Ein amoklaufender RAID-Controller, welcher frisch eingesetzte, leere Platten eines RAID1 auf die Vollen spiegelt, kann auch in einer SAN/NAS auftreten, welche als VM-Speicher dient. Also: Virtualisierung kann Sinn machen um Ressourcen besser zu nutzen oder die Verwaltung zu vereinfachen, aber wenn es um Verfügbarkeit geht kann es bestenfalls eine kleine Komponente darstellen. In diesen Fällen würde ich weiter auf Clustering – vorzugsweise mit integrierter Möglichkeit auf vorherige Zustände zurückzukehren – setzen und entsprechende Watchdogs oder Monitoringsysteme bereithalten. Die Hersteller von Virtualisierungssoftware arbeiten zwar daran ähnliche Funktionen in ihre Produkte zu integrieren, vom Funktionsumfang der „abgehangenen“ Lösungen sind sie jedoch noch weit entfernt.

NVidia X.Org Video-RAM information leak

Bereits seit etwa einem Jahr ist mir beim Start von X.Org – oder eher gesagt beim laden von Gnome – ein seltsames Flackern auf mehreren Rechnern aufgefallen. Meist trat es nach abstürzen oder Neustarts auf, nicht jedoch wenn der PC vollständig abgeschaltet war. Da mir einige der Muster im Flackern bekannt vor kamen griff ich Heute mal zur Digitalkamera und zeichnete es auf. Das Ergebnis: Es ist tatsächlich kein wildes Flackern, sondern Bildausschnitte diverser vor dem Neustart verwendeten Programme! Hierbei ist es nicht das letzte Bild, sondern z.B. auch Programme, welche im Hintergrund aktiv waren (also z.B. auch Ausschnitte des Browsers wenn der Bildschirmschoner zuletzt aktiv war). Im heutigen Fall hatte ich den Rechner sogar kurz (~500mA) vom Strom genommen (Stecker gezogen), da sich der Kernel aufgehangen hatte und der PC keinen Reset-Knopf besitzt – dennoch konnte man Bildausschnitte erkennen. Bisher ist mir das Phänomen auf meinem Privat-PC (ArchLinux, GeForce 8600GT, X.org 1.12.2-1, nvidia 295.53-1, Xinerama Multihead) und meinem Arbeits-PC (GeForce 9600GT, X.Org 1.11.2-r2, NVidia 295.20-r1, NVidia TwinView) begegnet. Könnte mir durchaus vorstellen, dass ein Angreifer über diese Methode die „Sicherheit“ des Bildschirmschoners umgehen und so an Informationen über die verwendeten Programme gelangen könnte. Da hierzu offenbar nur ein gewisser Zustand der Grafikkarte erreicht werden muss könnte dies auch per OS auf einem Stick erfolgen und so die Informationen trotz Festplattenverschlüsselung preis geben. Im Gegensatz zu den bekannten Cold-Boot-Attacks muss hierzu nichts an der Hardware geschraubt werden.

—EN—
About a year ago i noticed a strange flickering while loading X.Org/GNOME on several of my PCs. It appeared mostly after crashed and restarts, not if the PC was turned off for some time. Since i noticed several patterns inside this flicker i grabed my camera today and recorded the process. The result: its not a random flicker but image-parts of programs that ran before the reboot! They where not limited to the last shown picture before the boot – also programs that where running but not shown (like a browser when a screensaver was active) appeared. In today’s case i even cut the power (~500ms via power cord, Kernel crashed and the pc has no reset-button) – still i was able to recover image-parts. I could observe the behaviour an my home-PC (ArchLinux, GeForce 8600GT, X.org 1.12.2-1, nvidia 295.53-1, Xinerama Multihead) and my PC at work (GeForce 9600GT, X.Org 1.11.2-r2, NVidia 295.20-r1, NVidia TwinView). I could imagine that attackers could use this to bypass a screensaver and get information about running programs. Since you only need to reach a certain state of the GPU it should be possible to use an USB-based OS and grep this info even if the local harddisk is encrypted. Contrary to known Cold-Boot-Attacks there is no need to open the case.

Bild: https://www.adlerweb.info/blog/wp-content/uploads/2012/06/capture-clean-300×226.jpgBild: https://www.adlerweb.info/blog/wp-content/uploads/2012/06/capture-cap-300×226.jpg

http://www.youtube.com/watch?v=fuHcbQxl6d0

Kurzer Report von der Bastelfront

Festivals schön und gut, aber die freie Zeit muss natürlich auch etwas produktiv genutzt werden. Momentan heißt das hauptsächlich Housekeeping – Systeme reparieren und allerhand Basteleien, welche auf die Schnelle erfolgten, halbwegs vernünftig verpacken und fest einbauen. Trotzem sind einige neue Projekte dabei, zu denen ich in Kürze noch mehr schreiben werde, unter anderem hat meine Solaranlage eine neue Überwachungselektronik und viele neue Abnehmer erhalten. Zudem haben einige Webprojekte Updates erhalten, unter anderem kann mein Archivsystem, welches ich für die Bildarchivierung des Geschichtsvereins Saffig entwickelt hatte, inzwischen einige wichtige DMS-Funktionen wie Kontaktverwaltung und ORC erfüllen und sammelt nun in einer lokalen Installation meine Papierkorrespondenz in nerdgerechter Form. Auch einige Haushaltsgeräte sind inzwischen soweit, dass sie theoretisch Meldungen an meinen Steuerrechner übermitteln könnten – wenn denn ein Kabel da wäre. Da die Geräte weit entfernt von jeder Infrastruktur stehen und auf Grund baulicher Gegebenheiten das verlegen neuer Kabel für eine solche „Spielerei“ zu aufwändig wäre habe ich mir einige NRF24l01+ organisiert, ein Funkmodul welches mit integrierter Transportschicht glänzt und mit <3€ preislich sehr ansprechend ist. Leider konnte ich den Sample-Code nicht zum laufen bewegen, daher suchte ich nach Debug-Möglichkeiten. Zum Glück fiel mir mein guter, alter BusPirate wieder in die Hände, welcher sich direkt mal als simpler Logic-Analyzer versuchen durfte und – zu meiner Überraschung – gemessen an Preis und Ausstattung sehr gute Ergebnisse liefert, so konnte ich z.B. ermitteln, dass der Sendebefehl definitiv korrekt ans Sende-Modul übermittelt wird. Also wird gleich die Empfängerseite dran glauben müssen.
Bild: https://www.adlerweb.info/blog/wp-content/uploads/2012/06/test2-300×38.png