Strony

piątek, 9 listopada 2012

VMWare Workstation - base and differential disk vmdk

Sposób tworzenia (klonowania) wirtualnych maszyn korzystających z jednego dysku bazowego oraz dysków różnicowych dla każdej z maszyn.

Przykład dla Windows XP, lecz można tą technikę zastosować do każdego systemu operacyjnego uwzględniając procedury po klonowaniu OS (np.: NewSID dla Windows: http://technet.microsoft.com/en-us/sysinternals/bb897418.aspx)

Tworzymy maszynę bazową "WindowsXPbase" o ustalonej konfiguracji. Dysk VMDK może być w jednym pliku (Store virtual disk as a single file).







Na "WindowsXPbase" instalujemy system (dobra praktyka mówi, aby jeden dysk VMDK był przeznaczony pod jedną partycję) i wstępnie konfigurujemy nasz bazowy system.

Po instalacji i konfiguracji wyłączamy maszynę "WindowsXPbase" a plik dysku WindowsXPbase.vmdk kopiujemy do katalogu wyżej. Resztę usuwamy.

Odczytujemy nr CID dysku "WindowsXPbase", można to zrobić przy pomocy Total Commandera (F3) - Ta funkcja podglądu nie wczytuje całego pliku, co w przypadku np 6GB plików dysku nie spowoduje wczytania całego pliku do ramu :)

Możemy też użyć narzędzi dsfok-tools ze strony
http://members.ozemail.com.au/%7Enulifetv/freezip/freeware/.

W celu odczytania CID wykonujemy eksport ustawień dysku za pomocą dsfo.exe do pliku WindowsXPbase_config.exe
dsfo.exe WindowsXPbase.vmdk 512 1024 WindowsXPbase_config.txt
Numer dysku WindowsXPbase.vmdk
CID=ef33191c
Tworzymy kolejną maszynę "WindowsXPdifferential" o takich samych parametrach jak poprzednia.


Eksportujemy konfigurację:
dsfo.exe WindowsXPdifferential.vmdk 512 1024 WindowsXPdifferential_config.txt
OK, 1024 bytes, 0.000s, MD5 = 4515b65e9d48cb2a1ba452b183528eb7
Wprowadzamy zmiany w konfiguracji (CID, createType, parentFileNameHint):

Przed
#Disk DescriptorFile
version=1
encoding="windows-1250"
CID=fffffffe
parentCID=ffffffff
isNativeSnapshot="no"
createType="monolithicSparse"
Po
# Disk DescriptorFile
version=1
encoding="windows-1250"
CID=fffffffe
parentCID=ef33191c
isNativeSnapshot="no"
createType="twoGbMaxExtentSparse"
parentFileNameHint="..\WindowsXPbase.vmdk" 
Importujemy konfigurację:
dsfi.exe WindowsXPdifferential.vmdk 512 1024 WindowsXPdifferential_config.txt
OK, written 1024 bytes at offset 512

Gotowe.

Jak odpalimy maszynę, system zostanie załadowany z dysku znajdującego się piętro wyżej "..\WindowsXPbase.vmdk", a wszelkie zmiany będą zapisywane w pliku maszyny wirtualnej "WindowsXPdifferential.vmdk"

wtorek, 6 listopada 2012

fix rrd data


Naprawa błędnych dane w bazie rrd spowodowanych nieprawidłowym odczytem wartości przez skrypt.

1. wykonać eksport danych do xml'a (rrdtool dump)
2. podmienić nieprawidłowe wartości (sed)
3. wykonać import danych (rrdtool restore)

Wykres wygenerowany z pikami - przed naprawą:


Wykres wygenerowany po naprawie pliku rrd


Skrypt automatyzujący pracę:
fix_script_rrd.sh
#!/bin/sh

cp /usr/local/pnp4nagios/var/perfdata/server/SPEED_NET.rrd /root/scripts/rrd_export_testy/SPEED_NET_server.rrd-$(date +%Y-%m-%d-%s)
mv /usr/local/pnp4nagios/var/perfdata/server/SPEED_NET.rrd /root/scripts/rrd_export_testy/SPEED_NET_server.rrd
cp /usr/local/pnp4nagios/var/perfdata/server/SPEED_NET.rrd /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.rrd
rrdtool dump /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.rrd > /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml

sed -i 's/-6.4146433246e+09/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-2.2227638513e+09/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-1.2606894794e+09/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-6.3459103635e+09/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-5.5899984061e+09/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-5.0475658794e+08/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-2.5594901404e+09/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-4.7378915353e+09/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-1.2606858468e+09/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-1.0086951488e+09/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-4.1772191908e+08/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-1.8516738435e+09/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-1.8025172614e+08/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-1.8024471851e+08/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml
sed -i 's/-2.5663505765e+09/0/g' /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml

rrdtool restore /root/scripts/rrd_export_testy/SPEED_NET_server_BEFORE.xml /root/scripts/rrd_export_testy/SPEED_NET_server_AFTER.rrd
rrdtool dump /root/scripts/rrd_export_testy/SPEED_NET_server_AFTER.rrd > /root/scripts/rrd_export_testy/SPEED_NET_server_AFTER.xml

cp -f /root/scripts/rrd_export_testy/SPEED_NET_server_AFTER.rrd /usr/local/pnp4nagios/var/perfdata/server/SPEED_NET.rrd