DFS - sprawdzanie statusu replikacji

Ostatnio zbyt dużo grzebię przy “windach” - ale cóż, czasem trzeba. Ostatnio ustawiałem DFS’a z replikacją dla dwóch sporych zasobów i jedna z rzeczy, o którą się rozbiłem to brak jakiegokolwiek podglądu tej synchronizacji z GUI. Ale znalazłem jedno polecenie, które działa w shellu (choć to się chyba batch tutaj nazywa) od Windows Server 2008 R2: dfsrdiag ReplicationState /member:nazwaservera Polecenie co prawda nie podaje postępu procentowego ale można zobaczyć “czy coś jeszcze się synchronizuje” i czy nie ma żadnych błędów. Jeżeli to polecenie to za mało to można spróbować bardziej gadatliwej wersji: ...

2013-09-04 · 1 min · timor

logrotate: kompresja logów xz

Narzędzia xz-utils dostępne w nowszych systemach korzystają z mocniejszych algorytmów kompresji (jakaś odmiana LZMA, coś w stylu 7zip’a) przy zachowaniu kompatybilności składni poleceń z gzip’em/bzip’em - da się je zatem łatwo zintegrować w obecnych systemach. Ja chciałem wykorzystać xz do kompresji logów, które bywają przydatne ale przez większość czasy tylko zajmują miejsce :simple_smile: W /etc/logrotate.conf dopisujemy: compresscmd /usr/bin/xz uncompresscmd /usr/bin/unxz compressext .xz compressoptions -9T2 compressoptions można nie ustawiać bo domyślnie ma wartość -9 (czyli kompresuj na maxa), mój dodatek (czyli -T2) użyje dwóch wątków procesora gdy już ten mechanizm zostanie zimplementowany (bo na razie nie jest) :simple_smile:

2013-07-29 · 1 min · timor

Bezstratna konwersja MKV z DTS do AC3 lub AAC

Na jednym z urządzeń miałem problem z odtworzeniem plików (głównie MKV) z dźwiękiem zakodowanym w DTS. Pomijając że np. na tablecie 6-cio kanały DTS jest mi “niezbędny inaczej” to konwertując go do AAC stereo plik jest po prostu sporo mniejszy. Oczywiście nie zamierzam transkodować ścieżki video i na moje potrzeby mogłem sobie odpuścić zmianę częstotliwości próbkowania. Najprościej wykorzystać pakiet ffmpeg (po nowemu avconv) lub mencoder (choć ten miewał niegdyś problem z poprawnym zapisywaniem wynikowych plików mkv, więc potrzebny jest dodatkowo mkvmerge z pakietu mkvtoolnix). mencoder transkoduje szybciej wykorzystując więcej rdzeniu CPU, ale później potrzebny był drugi przebieg z mkvmerge. ffmpeg jechał na jednym procku nawet z opcją threads ale za to wszystko mogę zrobić jednym poleceniem. ...

2013-07-17 · 1 min · timor

Dodawanie urządzeń SCSI/FC bez restartu serwera

Raz na jakiś czas gdy grzebię przy maciorach muszę “odkryć” nowy volumen FC (lub rzadziej SCSI), który właśnie utworzyłem a restart serwera nie wchodzi w rachubę (zresztą na części systemów nic on nie da). By to zrobić są dwie możliwości: Ręczne wydanie poleceń odkrywających volumeny (na jajkach od 2.6.x) Sprawdzamy jakie mamy karty: ls /sys/class/fc_host/ (wypisze się coś w stylu: host1, host2) Wydajemy do wybranej przez nas karty żądanie wykonania LIP (to się chyba tłumaczy jako loopback initialization) co skutkuje przeskanowaniem szyny FC: ...

2013-07-17 · 1 min · timor

Tworzenie patch’y z poleceniami diff i patch

Jest kilka powodów dla których tworzenie patchy jest przydatne - jeśli tu jesteś to pewnie masz jakiś własny… Tworzenie patch’a diff -crB old new > from-old-to-new.patch W powyższym poleceniu założyłem że old i new to katalogi z wieloma podkatalogami i plikami - stąd opcja -r. -c dodaje kilka linijek “kontekstu” przez co łatwiej rozeznać się w patch’u. Opcja -B ignoruje puste linie, których patchowanie mnie nie interesuje. Patchowanie Na początek zawsze warto wywołać polecenie z opcją -dry-run by zobaczyć czy patch wykona się poprawnie: ...

2013-04-01 · 1 min · timor

Rozsynchronizowane serwery NTP

Miałem ostatnio zabawną sytuację gdy kilka serwerów z zainstalowanym NTPD miało rozjazdy rzędu kilkunastu sekund. Wyszło na to że moje serwery synchronizowały się z różnymi zewnętrznymi serwerami NTP pomiędzy, którymi były rozjazdy i te rozjazdy synchronizowały się na moich serwerach. Jeden “z moich” ustanowiłem głównym a wszystkie inne przekierowałem na niego (komentując wszystkie inne serwery NTP w konfiguracji). Wymusiłem synchronizację: ntp -q Sprawdziłem jak duży jest offset i jitter (powinny być bardzo małe): ...

2013-03-31 · 1 min · timor

Nginx - hide server version and name in Server header and error pages

On Debian you have to install nginx-extras package (because it have built in headers_more  external link module). Then you need two options (best in global configuration /etc/nginx/nginx.conf file, http part): server_tokens off; more_set_headers 'Server: BadAss'; And it’s good to setup non standard error pages on every site (500 and 404 at minimum): error_page 403 404 http://mysite.com/areyoulost; error_page 502 503 504 /500.html;

2013-01-24 · 1 min · timor

PHP - max_input_vars

W PHP 5.3 pojawiła się nowa zmienna: max_input_vars, która limituje ilość pól możliwych do przesłania przez formularz, obcinając nadmiarowe. Pozwala to zapobiec atakom DoS na tablice hashujące (przynajmniej w tym jednym miejscu). Domyślna wartość tej zmiennej to 1000 i kreatywnym programistom udaje się tą wartość bez problemu osiągnąć 😃 Warte odnotowania jest to że mając suhosin’a trzeba pamiętać o jeszcze dwóch innych zmiennych: max_input_vars = 3000 suhosin.post.max_vars = 3000 suhosin.request.max_vars = 3000 Zmienne można zmienić od razu w /etc/php5/apache2/php.ini (choć te dla suhosin’a lepiej wrzucić do /etc/php5/conf.d/suhosin.ini). A jeszcze lepszym pomysłem jest ustawienie tych zmiennych bezpośrednio dla danego vhost’a, w Apache’m np. tak: ...

2013-01-22 · 1 min · timor

Piwik: śledzenie asynchroniczne + logowanie ksywy komentującego w WordPress’ie

Korzystam z instancji Piwik’a do monitorowania odwiedzin na stronie i postanowiłem pokombinować czy da się w ten sposób monitorować wejścia konkretnych osób na bazie wpisanego w polu komentarza loginu/ksywki. Jak zacząłem grzebać to przy okazji zmieniłem też sposób ładowania skryptów Piwika na asynchroniczny. A leci to mniej więcej tak: <script type="text/javascript"> var i,x,y,ARRcookies=document.cookie.split(";"); var comment_author = ""; for (i=0;i<ARRcookies.length;i++) { x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); x=x.replace(/^\s+|\s+$/g,""); if (x.indexOf("comment_author") != -1 && x.indexOf("comment_author_email") == -1 && x.indexOf("comment_author_url") == -1) { comment_author = unescape(y); } } var _paq = _paq || []; (function(){ var u=(("https:" == document.location.protocol) ? "https://url.instancji.piwika.pl/" : "http://url.instancji.piwika.pl/"); _paq.push(['setSiteId', 1]); _paq.push(['setTrackerUrl', u+'piwik.php']); _paq.push(['setCustomVariable','1','Author', comment_author]); _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.defer=true; g.async=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s); })(); </script> Źródło http://piwik.org/docs/javascript-tracking/#toc-asynchronous-tracking  external link http://codex.wordpress.org/WordPress_Cookies#Commenters  external link

2012-12-21 · 1 min · timor

Nginx - kompresowanie plików dla gzip_static

Ruski serwer WWW  external link ma przydatną funkcję serwowania wersji plików skompresowanych gzip’em - przez co możemy plik skompresować raz i będzie on serwowany klientom obsługującym kompresję HTTP ale już bez każdorazowego kompresowania go. Jest to bardzo przydatne na stronach z dużym ruchem gdzie można w ten sposób zaoszczędzić takty CPU na właściwą obsługę połączeń a nie kompresję. Drugie miejsce gdzie może to być przydatne to VPS’y i “cienkie” serwery, które na kompresji przy większym obciążeniu spędzają zbyt dużo czasu i daje się to odczuć w działaniu strony. A że obecnie standardem jest ładowanie przez stronki np. jQuery, paru pluginów do niego, jQueryUI, masy CSS’ów, itd - to na prawdę jest co kompresować 😃 ...

2012-12-17 · 3 min · timor