MUST
dwie sceny, którymi opisałbym ten serial:
eN.
nie zrobiłem screenshota /: więc tak pół-informacyjnie: po instalacji UR5 do SCVMM zaczął sypać błędami podczas zakładania maszyny wirtualnej. coś w stylu:
„method get_protectionProvider in type hardwareConfigSettingsAdapter from assembly microsoft.systemcenter.virtualmachinemanager does not have an implementation”
kombinowaliśmy z poprawkami do .NET framework, których ostatnio trochę się pojawiło, ale dopiero cofnięcie UR5 pomogło. sądząc po braq wyników w googlu chyba mieliśmy odosobniony przypadek…
eN.
chciałem zrobić szybką wrzutę na temat odczytywania zdarzeń z logu 'applications and services logs’… i okazuje się, że to całe małe universum XMLowe…
najważniejsze informacje: logi systemowe można czytać łatwo i przyjemnie przy pomocy 'get-EventLog’. jednak kiedy chce się odczytać coś z logów aplikacji zaczynają się schody. jest polecenie 'Get-WinEvent’, jednak mechanizm za nim się kryjący jest okrutnie nieprzyjemny. cała architektura oparta jest na XMLu, w związq z czym jakiekolwiek przeszukiwanie albo jest pop(*^@#!@ne albo niewydajne. przykłady filtrów XML – standardowy i xPath ze strony technet:
# Use FilterXML PS C:\>Get-WinEvent -FilterXML "<QueryList><Query><Select Path='Windows PowerShell'>*[System[Level=3 and TimeCreated[timediff(@SystemTime)<= 86400000]]]</Select></Query></QueryList>" # Use FilterXPath PS C:\>Get-WinEvent -LogName "Windows Powershell" -FilterXPath "*[System[Level=3 and TimeCreated[timediff(@SystemTime) <= 86400000]]]"
w dużym skrócie – jest to zupełnie nieprzydatne w zastosowaniu codziennej administracji ponieważ:
a przecież XML można przedstawić za pomocą obiektu… czemu ten wynalazek nie zwraca normalnego, ludzkiego obiektu z atrybutami?
polecam art, w którym można poczytać jak się przez to przegryźć.
a na szybko, bez developerki, może niewydajnie, ale działa:
scenariusz: znaleźć logi hyper-v, w których są wpisy dotyczące maszyny o nazwie 'VMNAME’
Get-WinEvent -ComputerName HYPERVSRVo1 -LogName 'Microsoft-Windows-Hyper-V-VMMS-admin' |? message -like '*VMNAME*'|select timecreated,id,message|fl *
inne pomocnicze polecenia na początek to 'get-WinEvent -listProvider *’ oraz 'get-WinEvent -listLog *’. trzeba jakiś list otwarty do scripting guy’a napisać, żeby ponaciskał na uczłowieczenie dostępu do logów aplikacyjnych… ahhh.. żeby tak czas pozwolił to można własny moduł napisać… /:
eN.
nie widziałeś tyle jeszcze,
popatrz.. o popatrz…”
dzisiejszy dzień mianuję swoim 'dniem archeologa’. podstawowe założenia – cuda nie istnieją. ale kategoria i tak do w-files. a wszystko zaczęło się od zupełnie zwykłego taska administracyjnego opisywanego w poprzednim wpisie: trzeba usunąć CSV i stworzyć nowy. czyli musi być jakiś pośredni – temp, i maszynki trzeba przenieść najpierw na tempa, dokonać odpowiednich modyfikacji na macierzy, stworzyć nowe CSV i na nie poprzenosić już docelowo maszyny. no i się zaczęło…
podczas przenoszenia maszyn, wszystko idzie sprawnie, aż na koniec informacja, że migracja nie powiodła się. efekty różne łącznie z takim, że maszyna po prostu znika! (SIC!) ale żeby jeszcze zupełnie znikęła, a to nie – niby jest a jej nie ma. niby jej nie ma, a jest… no po prostu burdel na kółkach. ale udało się dużą część wyjaśnić…
finalnie okazało się, że są dwa powody nieudanych migracji: jeden to snapshoty DPM a drugi to jakiś wewnętrzny błąd SCVMM, którego póki co nie umiem wyjaśnić.
przypadek ciekawszy, ponieważ po wykonaniu migracji maszyna jest, ale jej nie ma. błąd migracji:
Error (2901)
The operation did not complete successfully because of a parameter or call sequence that is not valid.
The parameter is incorrect (0x80070057)Recommended Action
Ensure that the parameters are valid, and then try the operation again.
maszyna pozostaje w VMM z informacją 'incomplete VM Configuration’. jest również widoczna w klastrze, ale zasób konfiguracji jest niedostępny. natomiast, żeby było ciekawie, zostaje wyrejestrowana z samego hosta Hv. po analizie logów na hoście Hv, na którym maszyna była zarejestrowana pojawiają się na koniec migracji trzy wpisy:
owy plik, który cannot be found to snapshot zrobiony przez DPM. okazuje się, że w wyniq utraty komunikacji w trakcie robienia backupu, DPM zostawia informację o snapshocie. specjalnie napisałem 'informację’ ponieważ okazuje się, że jest xml z informacją, widać go w interfejsie tudzież używając get-vmsnapshot, ale sam katalog, gdzie powinny znajdować się pliki snapshota (vsv i bin), jest pusty. sam proces 'storage migration’ działa jako: export VM -> delete VM-> import VM, wywala się na ostatnim kroq. maszyna zostaje usunięta z Hv, a durny VMM nie zapewnia atomowości. nie dość, że migracja się nie udaje, zostają pełne zapisy w clustrze i VMM, sama maszyna znika.
po fakcie jest tylko jeden sposób:
a żeby zapobiec, najlepiej zrobić hurtowe zapytanie o snapshoty typu recovery i je pousuwać. łatwo odróżnić te, które są 'w trakcie’ do tych, które wiszą, ponieważ w nazwie mają daty:
VMName Name SnapshotType CreationTime ------ ---- ------------ ----------- VMo1 VMo1 - Backup - (2014-11-19 - 23:19:08)Recovery 2014-11-... VMo2 VMo2 - Backup - (2014-11-19 - 23:44:42)Recovery 2014-11-...
widać, że to są jakieś snapy z przed wielu dni, więc na pewno do wywalenia. po upewnieniu się, że wszystkie są stare i żaden backup teraz się nie wykonuje:
Get-ClusterNode -Cluster <CLUSTER>|%{$h=$_.name;get-vm -VMHost $h|%{Get-VMSnapshot -ComputerName $h -VMName $_.name|? snapshotType -eq 'recovery'|Remove-VMSnapshot}}
następnie warto odświeżyć VMM, ponieważ ma stare informacje. można np. hurtem wszystkie maszyny: get-scVirtualMachine|read-scVirtualMachine|out-null
drugi przypadek jest dziwny i wygląda na wewnętrzny błąd VMM. migracja wywala się w ostatnim etapie z błędem o niedostępności zasobu. po weryfikacji okazuje się, że maszyna jest jednak zmigrowana i dyski wskazują na nowy CSV. jeśli jednak spojrzy się do konsoli klastra okazuje się, że maszyna ma w zależnościach wpisy dotyczące i starego i nowego CSV. to dokładnie efekt opisywany ostatnio.
analiza polega na spostrzegawczości. błąd migracji jest następujący:
Error (12711)
VMM cannot complete the WMI operation on the server (<HOSTNAME.FQDN>) because of an error: [MSCluster_Resource.Name="SCVMM VMNAME Configuration"] Element not found.Element not found (0x490)
Recommended Action
Resolve the issue and then try the operation again.
natomiast po przyjrzeniu się wynikom czy to z PS czy w interfejsie widać, że maszyna nazywa się po prostu 'VMNAME’ a nie 'SCVMM VMNAME’ /:
VMM jest głupi.
post factum można to zrobić tak, jak we wspomnianym wpisie – czyli przez WMI usunąć z privateparts zależność do dysq. można to też zrobić prościej – i metoda powinna dać efekt post factum et pro eo – odświeżyć konfigurację maszyny na klastrze:
Update-ClusterVirtualMachineConfiguration -Cluster <CLUSTER> -name 'Virtual Machine Configuration <VMNAME>'
a bo inne ciekawe przypadłości podczas całej operacji wyszły, mniej-lub-bardziej wyjaśnialne. ot np. taki niuans:
jedna maszyna ma w VMM status 'incomplete VM configuration’ a VMM pokazuje, że maszyna jest na hoście HOSTo3. w klastrze ta sama maszyna działa i ma się dobrze, i działa na hoście HOSTo5. póki co nijak nie udało mi się odświeżyć tej maszyny. prawdopodobnie trzeba to będzie zrobić via SQL. ale jeszcze fajniejsza rzecz:
PS C:\scriptz> get-vm -VMHost HOSTo3|select name Name ---- VMo1 VMo2 VMo3
załóżmy, że ta VMo2 to ta, której nie ma. to samo polecenie dla hosta, na którym ta maszyna działa, nie pokazuje jej. ale przecież Hv manager jej nie pokazuje, i jej tam nie ma! o co c’mon? otwieram drugą konsolę, kopiuję polecenie i…
PS C:\Users\nz.adm> get-vm -VMHost HOSTo3|select name Get-VM : A parameter cannot be found that matches parameter name 'VMHost'. At line:1 char:8 + get-vm -VMHost HOSTo3|select name + ~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Get-VM], ParameterBindingException + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.HyperV.PowerShell.Commands.GetVMCommand
eeeee.. ale że o co c’mon? i znów na spostrzegawczość: przecież get-VM nie ma parametru 'VMHost’ tylko 'ComputerName’ – co zresztą podpowiada tab. zatem muszą to być dwa różne polecenia… oto odpowiedź:
konsola A
PS C:\scriptz> Get-Command get-vm CommandType Name ModuleName ----------- ---- ---------- Alias Get-VM PS C:\scriptz> man get-vm NAME Get-SCVirtualMachine SYNTAX Get-SCVirtualMachine [[-Name] <string>] [-VMMServer <ServerConnection>] [-All] [ fOfUserRole <UserRole>] [<CommonParameters>]
konsola B
PS C:\scriptz> Get-Command get-vm CommandType Name ModuleName ----------- ---- ---------- Cmdlet Get-VM Hyper-V PS C:\scriptz> man get-vm NAME Get-VM SYNTAX Get-VM [[-Name] <string[]>] [-ComputerName <string[]>] [<CommonParameters>]
VMM jest nie tylko głupi, ale również wredny.
eN.
w-files combo.
scenariusz: serwery Hv w kilq wersjach [2k8R2, w2k12, w2k12R2, clustry i standalone] zarządzane System Center Virtual Machine Manager 2o12 SP1. w pewnym momencie nie da się założyć nowej maszyny wirtualnej, ponieważ 'rating’ pokazuje wszystkie maszyny jako niedostępne, nie da się zrobić Live Migration. w 'Fabric’ status agentów opisany jest jako 'Access Denied’.
pierwsza próba – 'sprawdź o co chodzi’ – czyli wywalenie agenta z maszyny i ponowne dodanie. wpis w logu:
Error (2927) A Hardware Management error has occurred trying to contact server SCVMM04.hosting.netwise.pl . WinRM: URL: [http://<hostFQDN>:5985], Verb: [INVOKE], Method: [AddPeerCertificate], Resource: [http://schemas.microsoft.com/wbem/wsman/1/wmi/root/scvmm/AgentManagement] Unknown error (0x80338113) Recommended Action Check that WinRM is installed and running on server <hostFQDN>. For more information use the command "winrm helpmsg hresult" and http://support.microsoft.com/kb/2742275
przeszukałem net i najwięcej artów dotyczyło konfiguracji winRM. [how to troubleshoot winrm] ale testy winrm bez problemy przebiegały – zarówno lokalnie, jak zdalnie, winrm id -r:<remoteHost>, bez zająknięcia czy opóźnień ślicznie odpowiada. w logach biało jak w staropolskiej zimie na ziemiach wschodnich. ktoś sugeruje, że wystarczy uruchomić agenty SCVMM. lame /: gdzieś indziej znajduję poprawki dla w2k8R2 żeby obsługiwała nowe serwery ale dawno zainstalowane. w ogólnym ’how to troubleshoot’ na stronach technet też nic ciekawego. wszystkie testy sieciowe przebiegają pomyślnie, FW na wszelki wypad wyłączyłem, żeby mieć pewność. w końcu trafiam na roqjący pozytywnie wpis dotyczący różnic w wersji winRM… ale wszędzie mam v3 jak trzeba.
czas leci, godziny są palone, a VMM odmawia współpracy. stawiam nowego VMM – 2o12R2 – upgrade i tak był wpisany w kalendarz, więc zamiast ślęczeć nad debugowaniem po prostu stawiam od nowa.
jak nie ciężko się domyśleć – nadal nie działa – tym razem, tak dla odróżnienia, już nie na wszystkich maszynach. w końcu się wkurzyłem i zmieniłem dwa ustawienia w polisie GPO:
Turn On Compatibility HTTP Listener Disabled -> Enabled
Turn On Compatibility HTTPS Listener Disabled -> Enabled
w zasadzie nie ma to sensu bo compatibility listeners są dla winRM1.1 w w2k3 a takich wynalazków szczęśliwie nie ma. gpupdate na wszystkich maszynach. i działa /:
to była ciekawostka #1 a teraz ciekawostka #2. tak bardzo nie rozumiem dla czego to się tak zachowało [ i wszystkie commandlineowe testy przebiegają poprawnie i część funkcjonalności działa i PSremoting działa…] że postanowiłem te polisy z powrotem wyłączyć.
Turn On Compatibility HTTP Listener Enable-> Disabled
Turn On Compatibility HTTPS Listener Enabled -> Disabled
gpupdate na wszystkich hostach… i dalej działa @_@ w każdym razie póki co. restartów nie robiłem i minęło kilka h. teoretycznie jakby miało przestać to już by nie działało. nie potrafię tego wyjaśnić.
eN.
konfiguracja synchronizacji z Exchange online na android
po ugradzie do lollipopa [5.o.2] smartfon niemal umarł. nie obyło się bez przywrócenia do ustawień fabrycznych i instalacji od nowa. przy okazji okazało się, że jest nowa wersja wbudowanej wersji aplikacji do poczty elektronicznej. teraz jest „łatwiej” (;
w ten sposób wszystko działa, można w aplikacji pocztowej wybrać konkretne podkatalogi do synchronizacji bieżącej, jest kalendarz i kontakty.
a outlook na andka cały czas nie potrafi uwierzytelnić przy logowaniu sfederowanym O.o
do tej pory używam androida bo lubię się systemem pobawić, coś sobie w nim pogrzebać, wymienić, zcustomizować itd… ale mam wrażenie, że andek przeżywa kryzys podobny do tego, jaki przeżywał windows XP – wszystkiego jest za dużo, a sam system, choć ogólnie dobry, po prostu niewyrabia. za mała jest kontrola nad aplikacjami. niby lollipop miał być zoptymalizowany i działać wydajniej niż kitkat, a tuż po przywróceniu do ustawień fabrycznych, bez żadnych rootów ani nawet własnych zamienników launchera, telefonu czy kontaktów – po instalacji kilq apek telefon zaczyna mulić. w widocznym stopniu spada responsywność /:
eN.