čtvrtek 18. července 2013

Obnovení bitové kopie Windows 7 z disku zašifrovaného Bitlocker To Go



Bitlocker není asi nutné představovat, tuto docela pěkně implementovanou technologii šifrování, zde máme již od Windows Vista a s každou novou verzí Windows se dostává níže do běžnějších edic. Navíc pokud máme procesor s funkcí AES-NI, můžeme si šifrování dovolit bez ztráty výkonu a výdrže na baterii.

U notebooků má šifrování asi největší význam, v případě odcizení zařízení hrozí i odcizení identity, viz XKCD :-)

Pokud disk šifrujeme, pak se logicky zmnohonásobuje nutnost pravidelně zálohovat. Pokud jdou data z poškozeného pevného disku z pravidla vydolovat, ta dostat data z poškozeného šifrovaného disku je nemožné.


Jenže, má smysl zálohovat data ze šifrovaného disku například na nešifrovaný externí USB HDD? V případě odcizení jsme na tom stejně - data jsou zálohována nezašifrovaně. A obnovit bitovou kopii na jiný hardware je díky Windows Backup práce na deset minut.

Naštěstí Windows 7 umí zálohovat na oddíly šifrované Bitlockerem (nevýměnné disky) a Bitockerem To Go (výměnné disky) Obnovovat soubory ze zálohy pak také logicky jde.

Problém nastává při potřebě obnovit celou bitovou kopii diskového oddílu. Nástroj pro obnovení umí odemknout zašifrovaný systémový disk s Windows, ale zašifrovaný disk se zálohou už nevidí.
V tomto případě nás dokumentace Microsoftu nechává na holičkách a radí nám dešifrovat si disk se zálohou v jiném počítači. Ale ukážeme si, že to není nutné.


Berme v úvahu modelovou situaci:
Máme Windows 7 Enterprise/Ultimate se zapnutým Bitlockerem pro disk C. Pomocí Windows Backup provádíme zálohu obsahující bitovou kopii disku na externí USB HDD. Externí disk je zašifrován pomocí Bitlocker To Go.

Připravíme si:
Obnovovací klíč na jednotku flash nebo do souboru. POZOR, tyto možnosti se liší.
Obnovovací klíč pro oddíl se zálohou, ideálně také na flashku.


Po nabootování z WIN 7 DVD zvolíme opravu a obnovu ze zálohy. Windows vyhledají instalaci Windows a nabídnou nám odemknutí cílové jednotky.


Použijeme dlouhý restore key nebo připravený obnovovací klíč na flashce.

Pokud budeme chtít pokračovat v obnově dál, Wbackup nám sdělí, že nenalezl žádné zálohy:












My se ovšem ošálit nedáme, pomocí  kombinace SHIFT + F10 si spustíme příkazovou řádku ( tato kombinace funguje již od Windows XP)

Spustíme si diskpart abych mohli odhalit pod jakým číslem se skrývá náš svazky se zálohou:

DISKPART

Vypíšeme si svazky

LIST VOLUME

Ze seznamu pravděpodobně podle velikosti budeme muset vybrat náš zálohovací disk, nápovědou nám může být, že nebude mít písmeno.

Zvolíme tedy zálohovací svazek (místo x zadejte číslo svazku)

SELECT VOLUME x

A přiřadíme mu písmeno, vyhnete se již obsazeným jako například C nebo X

ASSIGN LETTER=L

Klávesovou zkratkou CTRL +C zavřeme diskpart a pokračujeme k připojení BITLOCKER jednotky. Pro informaci o jednotkách si můžeme vypsat připojené Bitlocker svazky - jeden z nich by měl být váš systémový disk, druhý zálohovací disk, již s písmenem.

MANAGE-BDE.EXE -STATUS

A nyní samotné obnovení. Pustíme si notepad a otevřeme si txt s obnovovacím klíčem pro zálohovací jednotku:

NOTEPAD

Notepad si necháme otevřený a zkopírujeme si dlouhý recovery key. A do CMD opět zadáváme:


manage-bde.exe -unlock L: -rp ----douhý recovery klíč------

Místo L dejte své nastavené písmeno jednotky, za rp je mezera a pak vložte dlouhý reovery key. Dostane se nám hlášení, že jednotka byla úspěšně odemčena.


Když znovu zkusíme spustit System Image Recovery, záloha je nyní nalezena a můžeme postoupit k obnovení. Po obnovení budou data na disku opět v nezašifrovaném stavu.






sobota 4. května 2013

Pomalost Intel RAID 5 způsobená vyprazdňováním cache pro zápis - aneb proč flushovat

Tento článek by se také mohl jmenovat: Máte UPS? Zdvojnásobte si výkon svého diskového pole....


Anotace ve zkratce:
Tento článek pojednává o kombinaci Intel Rapid Storage Technology RAID 5 pole na chipsetu H77 s technologií Hyper-V. A konkrétním problému s pomalostí mysql databáze ve webové aplikaci Tiny Tiny RSS, běžící ve virtuálním počítači. Problém způsobuje bezpečností disková funkce Windows :  write-cache buffer flushing. Také se zabývá řešením. 




http://www.intel.com/content/www/us/en/chipsets/mainstream-chipsets/chipset-h77.html
Asi půl roku využívám Intel raid na chipsetu H77. Kombinace RAID 5 a tří spolehlivých disků Samsung HD154UI  je prozatím bezproblémová. Výkon pole nijak neoslní, mělo by jít o odolné řešení pro případ výpadku jednoho z disků. V případě závady základní desky stačí pole zapojit do jakékoliv jiné se stejnou nebo novější verzí RTS(Intel Rapid Storage Technology) option ROM.

Problém ovšem nastal když jsem v Hyper-V nasadil virtál obsahující mysql server pro Tiny Tiny RSS (viz předchozí článek http://blog.mj12.eu/2013/05/nasazeni-tiny-tiny-rss-v-ubuntu-serveru.html )

Kupodivu Tiny RSS bylo nezávisle na OS neuvěřitelně pomalé. Načtení složky trvalo až stránky trvalo cca 5 sec, načtení složky 10 sec). Běžná rychlost načítání je maximálně do 0,5sec. Po delší diagnostice a ladění SQL databází jsem našel původ problému. Je jím "Windows write-cache buffer flushing". Tato funkce je ve Windows ve výchozím stavu zapnutá (pokud vůbec cache používáte) a stará se o pravidelné vyprazdňování cache na disk - tím snižuje riziko ztráty dat v případě výpadku napájení nebo chyby STOP.


Návod jak vypnout vyprazdňování cache naleznete zde http://support.microsoft.com/kb/324805/en-us
Nevím zda to je problém čistně RTS a mysql či RTS a Hyper-V. Ale reálný rozdíl jak uvidíte na obrázcích níže je velice zajímavý.

Virtuální počítač (ať už win nebo linux) má tendenci provádět nonstop zápisy do svého vdh, jde asi jen o 9 - 400KB/s. Ale jak vidíte stačí to k vytížení disku na maximum. Latence se pak podle taskmanageru pohybuje kolem stovek ms až sekund. Délka diskové fronty je 1,5-3.

Stav se zapnutým virtuálním počítačem obsahujíc mysql databázi. Flushování ve vychozím stavu zapnuté.

A zde je stejná situace s vypnutou funkcí "Windows write-cache buffer flushing"

Další příklad propadu výkonu můžeme vidět na programu HD Tune. Jako první opět ve výchozím stavu se zapnutým flushováním.

A bez této bezpečností funkce:
Jak je vidět, rychlost je téměř dvojnásobná, v případě latence je to až pětinásobně lepší.
A ještě file benchmark test měřený přímo v Hyper-V hostu. 

Zde již je to zajímavější, ovšem stále to nevysvětluje proč s flushingem mysql pracuje desetinásobně pomaleji. 
Ještě dva údaje pro porovnání:
Access Time           : 0.568 ms
Burst Rate            : 197.9 MB/s

Access Time           : 0.377 ms
Burst Rate            : 518.2 MB/s

Ovšem stojí tento rozdíl za vypnutí vyprazdňování cache? Bez automatiky Windows cache vyprazdňují pouze při každém vypnutí.....A u RAID může neplánované vypnutí způsobit až kolaps pole, nemluvě o poškození otevřených dat.

Možná řešení problému:


  1. Jasným kandidátem na řešení je tedy UPS komunikující s PC která by informovala o výpadku a sepnula bezpečné vypnutí. Bohužel o není levná legrace. 
  2. Nic neměnit a používat bezpečné vyprazdňování. Bohužel tato alternativa by mi znemožnila používat TT-RSS na RAID 5. Musel bych použít nějaký jiný samostatný disk, iSCSI... či RAM disk? :-)
  3. Snížit riziko. Microsoft v rámci Sysnternals nabízí program Sync 2.0. Ten slouží k ručnímu vyprázdnění diskové cache. 

Program Sync 2.0 aneb snad to bude fungovat....

Microsoft dělá výborný software - tato věta není jen fráze. Prográmek Sync z roku 2006 bez problému funguje na Windows 8 x64. A dělá to co má:


Je až k nevíře že program z roku 2006 bude fungovat v roce 2013. Na obrázku níže je červeně označený moment kdy byl sync spuštěn, přenosová rychlost klesla a cache se vyprázdnila.


Nic tedy nebrání vytvoření naplánované úlohy která bude Sync spouštět. Jenže jak často? Jak často Windows ve výchozím stavu flushují cache? Jednou za hodinu? Každou minutu? Každých 5 vteřin? Vteřinu? 0.1 vteřiny? 0.001 vteřiny? Po každém zápisu či při iddle? Bohužel se mi tuto informaci nepodařilo získat pro Windows, ale ani pro Linux. 

Pravděpodobně každých 15-30 minut bude rozumné rozmezí pro iddle běh. 


PS: Pokud prodáváte nějakou starší UPS, mám zájem :-) 

Nasazení Tiny Tiny RSS v Ubuntu serveru (v Hyper-V)

Vzhledem k ukončení Google Readeru je na čase hledat vhodné alternativy. Pokud vás láká myšlenka hostovat si vlastní RSS čtečku, či jste dokonale zvyklí na Android čtečku gReader, (podpora je v beta verzi zde) nabízí se Tiny RSS.

Na živo si TT-RSS můžete vyzkoušet na veřejné instalaci jednoho dobrodince na http://rss.cicolina.org/

Pokud zvažujete vlastní nasazení, je to docela snadné. Pro linux existují desítky návodů. Kupodivu ale pro Windows jich moc není. Pokud máte k dispozici Windows server, asi ideální řešení je vytvoření dedikovaného VM v Hyper-V. Výhodou je přenositelnost a snadná zálohovatelnost. V případě reinstalace hostitele si stačí zálohovat několika gigabajtový vhd a později opět připojit. Již žádné reinstalace a rekonfigurace.....Hyper-V se také na rozdíl od virtualboxu postará o uložení stavu při restartu hostitele a opětovné obnovení po nastartování.

Pro TT-RSS v Hyper-V se vybízejí dvě varianty:


  1. Windows host s nějakým druhem LAMP serveru, například XAMPP. Výhodou je velice snadná instalace a konfigurace. Také můžete využít dynamickou paměť - VM pak neujídá paměť kterou nevyužívá. Licencovat můžete například z MSDN (AA ), Windows 8 za pár stovek... Takový server 2003 se vejde do 3GB a vystačí s 200-300MB RAM. Aktualizaci feedů je pak možné provádět pomocí naplánovaných úloh, což je zábavná alternativa vůči linux daemonům.  
  2. Hyper-V oficiálně podporuje pouze CentOS a RedHAT. Naštěstí Nové verze Ubuntu mají již integrované integrační služby pro Hyper-V. Není tedy problém s ovladači ani s vypínáním. Bohužel není reálném používat GUI verzi Ubuntu - rozhraní je nepoužitelně pomalé, a to i po zakázání framebufferu. Další varianta je Debian. Pro něj můžete doinstalovat integrační služby velice snadno v podobě deb balíčku (zde). S GUI rozhraním problém není, pouze je někdy nutné ručně provést ifup eth0

Dnes se ovšem podíváme na instalaci Tiny Tiny RSS v ubuntu serveru.


Instalaci Ubuntu server 13.04 v Hyper-V nebudu nijak zvláště popisovat, pouze nezapomeňte nainstalovat SSH. Pro VM stačí bohatě 512 MB paměti - mysql bude moci hodně cachovat. 

Jakmile jsme na SSH začneme instalací mysq:
sudo apt-get install mysql-server mysql-client

Vytvoříme silné heslo a pokračujeme:
sudo aptitude install apache2 mysql-server libapache2-mod-php5 php5-mysql

A nakonec prerekvizity:

sudo aptitude install php5-cli php5-xmlrpc php5-curl

Nyní máme funkční webový server, pokračujeme Nasazením TT-RSS:

wget https://github.com/gothfox/Tiny-Tiny-RSS/archive/1.7.8.tar.gz
tar -xf 1.7.8.tar.gz -C /var/www/
chown -R root.www-data /var/www/
chmod -R g+w,o+ /var/www/



Nyní si ještě nainstalujeme phpMyAdmin pro snadnější práci a budoucí sledování DB. Zadejte silné heslo.
sudo apt-get install phpmyadmin

Na adrese http://VÁŠserver/phpmyadmin vytvořte nového lokálního uživatele (třeba tinyrss) a rovnou i stejnojmennou databázi. Opět použijte silné heslo.

Na adrese http://VÁŠserver/ by měla být k dispozici úvodní konfigurace. Vyplňte údaje, inicializujte databázi a hotovo. Nyní můžete přidat vaše feedy. Také změňte výchozí heslo!

Zbývá ovšem ještě dořešit aktualizaci. TT-RRS ve výchozím stavu feedy automaticky neaktualizuje (chytré?) Stačí ovšem udělat následující - otevřít nanem rc.local a dopsat řádek...
nano /etc/rc.local 

a přidal řádek:
sudo -u www-data php /var/www/update_daemon2.php > /dev/null&
pak znovunačíst konfiguraci:
rc  /etc/init.d/rc.local start



Nyní se rozběhne aktualizace feedů...a jsme hotovi. Může náš potěšit že na rozdíl od Windows, je na Linuxu aktualizace vícevláknová, stejně se ale připravte na hodiny čekání a naplnění čtečky tisíci příspěvků. 
Nakonec zbývá přizpůsobit si TT-RSS. Na fóru projektu lze nalézt spoustu pluginů imitující vzhled greaderu. Plugin pro identické klávesové zkratky je také již integrován. Po aktualizaci feedů vám také TT-RSS zobrazí seznam již nefunkčních adres spolu se seznamem dlouhodobě neaktivních. Můžete tedy pohodlně opravit sledované adresy - například po přesunu blogů..
Pro přiblížení Goodle Readeru doporučuji ještě toto nastavení:


Automatically mark articles as read – No
Combined feed display – Yes
Confirm marking feed as read – No


A pokud budete mít problém, okamžitě zapomeňte že by jste ho zmínili na fóru projektu. Administrátor s tímto příjemným avatarem....
...se okamžitě postará o vaše zesměšnění a pohřbení dobrých nápadů. (A ne, na fórum jsem nic nepsal, stačí s pročíst několik témat).

A několik článků k tématu TT-RSS:
http://the.geekorium.com.au/make-tiny-tiny-rss-look-and-behave-like-google-reader/

http://tt-rss.org/forum/viewtopic.php?f=22&t=1287

http://nathan.chantrell.net/20130317/tiny-tiny-rss-a-replacement-for-google-reader/