wtorek, 23 kwietnia 2013

Sygnaturka - nieświadomy spam

Jakiś czas temu jeden z moich klientów rozsmakował się w generowaniu super kolorowo-migająco-świecących sygnaturek dla swoich pracowników. I wszystko byłoby ok, gdyby nie to że podpis w 90% przypadkach jest dłuższy niż sama treść listu. Już wtedy zafascynowała mnie idea posiadania stopki-eseju. Ale zacznijmy od początku.

Samo posiadanie podpisu jest dość znacznym ułatwieniem jeżeli ktoś wysyła listy częściej niż raz na rok z życzeniami do rodziny. A przecież człowiek zawsze stara się ułatwiać wszystko co tylko można ułatwić, czyż nie? No niby tak, ale trzeba pamiętać o jednej ważnej rzeczy... o umiarze.

Gdy otrzymałem zlecenie na ustawienie stopki graficzno-tekstowej o wielkości powyżej 300K w firmie która posiada ponad 20 pracowników oraz każdy z nich wysyła przynajmniej 150 listów dziennie. Zacząłem to podliczać...

Po przejrzeniu logów z serwera poczty, okazało się że średnia wielkość listu wysyłanego w HTML bez załącznika to ok 410K!!!

Szybka zabawa z kalkulatorem :
20 pracowników x 150 listów dziennie x 410K list średnio = 1230000K/1024 = 1201M dziennie!!!
Ponad 1,2G transferu/przestrzeni dyskowej dziennie zmarnowanej na przechowywanie powielonego kolorowego spamu.

Doszedłem do wniosku że skoro już tyle zasobów marnujemy na coś takiego, dobrze by było sprawdzić... czy ktoś to w ogóle czyta.

21.03.2013 utworzyliśmy stopkę o następującej treści :
Wiadomość ta oraz wszelkie załączone do niej pliki są tajemnica nadawcy i są prawnie chronione. Jeżeli nie jest Pani/Pan zamierzonym adresatem niniejszej wiadomości, nie może Pani/Pan jej ujawniać, kopiować, dystrybuować ani też w żaden inny sposób udostępniać lub wykorzystywać. Co prawda wydaje nam się że nikt nie czyta takich informacji,jeżeli jednak się mylimy pierwsze trzy osoby które odpowiedzą na tego maila przesyłając tą sygnaturkę otrzymają upominek. O błędnym zaadresowaniu wiadomości prosimy niezwłocznie poinformować nadawcę i usunąć wiadomość. W przypadku świadomego ich wykorzystania bez zgody nadawcy i-Pi sp. z o.o. może dochodzić zadość uczynienia za poniesione z tego tytułu straty na drodze sądowej zgodnie z obowiązującymi przepisami prawa.
Proszę, nie drukuj tej wiadomości, wydrukuj ją tylko wtedy gdy potrzebujesz kopii papierowej.  
W której umieściliśmy taką oto wstawkę :
Co prawda wydaje nam się że nikt nie czyta takich informacji,jeżeli jednak się mylimy pierwsze trzy osoby które odpowiedzą na tego maila przesyłając tą sygnaturkę otrzymają upominek.
Ustawiliśmy tą sygnaturkę u osoby która nigdy nie korzystała z takich dobrodziejstw, więc każdy mail odbiegający od zwykłego zakończenia podpisem powinien tym bardziej zwrócić uwagę odbiorcy.

Od dnia 21.03.2013 do 21.04.2013 maile z tym podpisem były wysyłane ponad 500 razy. W tym czasie otrzymaliśmy 0 słownie zero maili zwrotnych.

Taki wynik można interpretować na różne sposoby np.
  • Nikt tych sygnaturek nie przeczytał ;) 
  • Ludzie do których pisaliśmy nie mają poczucia humoru , lub po prostu mają w nosie nasze upominki.
Oczywiście zabawa którą z bardzo wielkim przymrużeniem oka można nazwać eksperymentem tak naprawdę nie daje nam jakichś specjalnie miarodajnych wyników, ale potwierdza moje przypuszczenia:

Że jeżeli nawet ktoś rzuci okiem na tekst dumnie wpisany pod mailem, to raczej i tak go całego nie przeczyta. Więc po co marnować łącze/dyski na coś co jest tak naprawdę zbędne?

A więc pamiętajcie za każdy mail wysłany z niepotrzebnym bzdurnym podpisem gdzieś tam ... na świecie ginie jednorożec.

Aaaa byłbym zapomniał, tutaj macie garść interpretacji "poważnych" sygnatur, to tak na wszelki wypadek gdybyście mieli gdzieś jednorożce.

sobota, 13 kwietnia 2013

Migracja ZFS

Kilka dni temu jeden z moich produkcyjnych serwerów odmówił posłuszeństwa. Właściwie to wypiął się na mnie całkowicie w tak paskudny sposób, że przestał działać nie informując właściwie dlaczego.

Objawy były takie "byle jakie". System działał, nie rzucał żadnymi błędami aż w pewnym momencie łapał kilkudziesięcio sekundowe zwiechy. Wydajność dysków przy zapisie spadała z ~80M/s do 0,5M/s lub mniej.


System FreeBSD 9.0-STABLE , 6GB RAM, 2 x 64GB SAS wpięte w Smart Array E200i. Pierwsze podejrzenia padły na pamięć RAM, niestety po przetestowaniu jej Memtestem okazało się że to nie ona. W drugiej kolejności na warsztat poszły dyski oraz kontroler. Przy okazji wyszło że używając ZFS'a dobrze jest zawsze zostawić troszkę zapasu wolnego miejsca**. W tym przypadku przestrzeń była wykorzystana w 97%, więc ZFS rył po napędach w poszukiwaniu wolnych sektorów, co było widoczne w ciągłej pracy dysków (gstat pokazywał ~100% użycie). Okazało się również że sam kontroler zwariował, prawdopodobnie przez  wcześniejszą próbę uruchomienia na nim 4K sektorowych dysków które zostały spięte w MIRROR a potem wyciągnięte. Ale przynajmniej już wiem że Smart Array E200i nijak sobie nie radzi z takimi dyskami.Tak czy inaczej doszedłem do wniosku że bez wymiany kontrolera się nie obejdzie.

Ktoś na forum FreeBSD podrzucił mi listę kontrolerów SAS/SATA dla FreeBSD .
Po przeszukaniu portali aukcyjnych trafiłem na IBM ServerRAID M1015  na chipsecie LSI SAS2008 nie dość że był w dobrej cenie to dodatkowo sprzedawca był z Wrocławia, więc mogliśmy sprawę załatwić od ręki. Po przeflashowaniu kontrolera do "IT Firmware"*** zostałem posiadaczem 8 portowego kontrolera SAS/SATA nadającego się idealnie pod ZFS.

Ostatnią rzeczą jaka została to było przeniesienie całego działającego systemu ze Smart Array E200i+64SAS na LSI SAS2008+750SATA. Po wpięciu do drugiej maszyny LSI z dyskami i instalacji na nich FreeBSD 9.1-STABLE (odpada zabawa z zpool.cache i vfs.root.mountfrom) przyszedł czas na kopiowanie.
sprawę załatwiło :
zfs snapshot -r zroot@MOVE
zfs send -Rv zroot@MOVE | ssh root@LSI 'zfs recv -vF sys/ROOT/zroot'
61G danych kopiował  jakieś ~60 minut. Po wszystkim zostałem z nowym kontrolerem , nowymi dyskami i całkiem nowiutkim datasetem sys/ROOT/zroot ;)
Teraz już tylko trzeba było uruchomić to wszystko na produkcyjnym serwerze i mogłem iść spać...
Niestety, zapomniałem żeby "zawsze spodziewać się niespodziewanego", i tak było tym razem.
Dzięki wykorzystaniu ZFSowego Boot Environment wystarczyło :
zfs set mountpoint=legacy sys/ROOT/zroot
zpool set bootfs=sys/ROOT/zroot sys
zfs set canmount=on sys/ROOT/zroot
Restart i...
 mouting from zfs:sys/ROOT/zroot failed with error 2
Po kilku wyrazach których nie powinienem tu przytaczać, zapytałam Pana Google co o tym sądzi. Okazało się że ma do coś do powiedzenia, i to nawet sporo. Przecież chciałem wystartować system który de facto nie był już 9.1-STABLE tylko 9.0 a więc zpool.cache oraz vfs.root.mounfrom były jednak wskazane. A więc kolejny szybki boot LiveCD i
zpool import -o cachefile=/tmp/zpool.cache -o altroot=/mnt sys
mount -t zfs sys/ROOT/zroot /mnt
cp /tmp/zpool.cache /mnt/boot/zfs/zpool.cach
 Restart i...
mouting from zfs:sys/ROOT/zroot failed with error 2
Pomyślałem... Ok, zanim pójdę po kanister i obleję benzyną ten cały złom i podpalę a klientom powiem że właśnie robię grilla na ich danych może jednak wszystko prześledzę jeszcze raz po kolei. Tak też zrobiłem, niestety po 20 minutach i kilku rebootach zakończonych "failed with error 2" uśmiechającym się do mnie z ekranu, zacząłem się na poważnie zastanawiać gdzie mam zapałki.  Aż tu nagle, olśnienie. Wymagałem od systemu żeby zamontował file system z dysków których.... nie widział. Kolejny reboot do LiveCD, kolejny import, montowanie, edycja /boot/loader.conf z
mps_load="YES"
Restart i ...
login : ....
:D System wstał, wszystkie usługi wystartowały! Szybki test, zapis/odczyt dysków 130M/s, zero przycięć, wolna przestrzeń 660G. Czyli wszystko tak jak być powinno. Kontroler pracuje już kilka dni i na razie nie ma z nim żadnych problemów. Zostało jeszcze 6 wolnych portów, więc chyba pomyślę nad kolejną porcją dysków, w końcu "miejsca nigdy dość", prawda ?

Na koniec chciałem podziękować chłopakom z forum FreeBSD a w szczególności vermadenowi bez pomocy których, wylałbym chyba tą benzynę i znalazł zapałki...

** To trochę to przynajmniej 20% wolnego miejsca.

*** W razie otrzymania błędu "Failed to initialize PAL" trzeba zreflashować kartę na innej płycie głównej