Artykuł ma na celu wprowadzenie czytelnika do dwóch gównych funkcji, które pojawiają się w Service Pack 1 dla Windows Server 2008 R2 i Windows 7, a są to RemoteFX i Dynamic Memory.
Słowo komentarza odnośnie procesu instalacji Service Pack 1 beta
Na wstępie chciałbym poruszyć kwestię instalacji Service Pack 1 beta w systemie serwerowym Windows Server 2008 R2. Aby instalacja SP1 została poprawnie przeprowadzona, muszą zostać spełnione nfastępujące wymagania:
- System operacyjny Windows 7 oraz Windows Server 2008 R2 (build 7600) muszą być w wersji Release to Manufacturing (RTM).
- Jeśli posiadamy oprogramowanie Microsoft Security Essentials lub Microsoft Forefront Client Security, musimy je odinstalować na czas instalacji SP1 (zobacz komentarz poniżej).
Komentarz autora: podczas instalacji wystąpił problem, po czym pojawił się komunikat o niepowodzeniu instalacji. Winowajcą, jak stwierdził Microsoft, był pakiet antywirusowy Microsoft Forefront Client Security (zainstalowany w laboratorium testowym) lub Microsoft Security Essentials, który może utudniać proces instalacji Service Pack 1. W celu poprawnego przeprowadzenia instalacji wymagane jest odinstalowanie pakietu antywirusowego, a po zakończeniu instalacji SP1 reinstalacja programu chroniącego stację przed zagrożeniami. Rozwiązanie problemu zostało opisane w artykule na stronie Microsoft.
Co dostaniemy w Service Pack 1 beta?
Service Pack 1 Beta dla Windows Server 2008 R2 i Windows 7 dostarcza przede wszystkim kompletnego zestawu poprawek dla systemów operacyjnych, które były do tej pory wydawane w postaci wtorkowych biuletynów zabezpieczeń, opisanych przez Microsoft Security Responce Center .
SP1 to również kilka innych ulepszeń, takich jak: dodanie wsparcia dla 6to4 i adresu ISATAP podczas używania DirectAccess w scenariuszach z NLB oraz dla Managed Service Accounts (MSA) do scenariusza z branch office w bezpiecznej lokalizacji (DMZ lub extranet), ulepszone wsparcie dla macierzy dyskowych w Failover Clustering.
Jednak do najważniejszych zmian, które pojawiają się wraz z SP1, możemy zaliczyć dwie nowe funkcje w obszarze wirtualizacji na Windows Server 2008 R2 i Virtual Desktop Infrastucture(VDI). Mowa tutaj oczywiście o Dynamic Memory oraz RemoteFX.
Dynamic Memory
Problemem w dużych środowiskach wirtualnych jest ograniczenie przydziału pamięci fizycznej do maszyn gości. Do tej pory odbywało się to statycznie i niekiedy prowadziło do strat „niewykorzystanej pamięci", zaalokowanej dla maszyn wirtualnych. Dzięki wprowadzeniu w Service Pack 1 beta funkcji Dynamic Memory dla roli Hyper-V, administratorzy zyskali możliwość dynamicznego alokowania pamięci fizycznej dla maszyn wirtualnych, poprzez ustalenie rozmiaru początkowego i maksymalnego wykorzystywanej przez system gościa pamięci. Działa to na zasadzie zbliżonej do pracy procesora: jeśli maszyna potrzebuje dodatkowej pamięci, prosi o nią i ta zostaje jej przydzielona z ograniczeniem do zdefiniowanej wartości maksymalnej. W Dynamic Memory dostępny jest algorytm, który sprawdza obciążenie maszyny wirtualnej i w momencie, kiedy maszyna nie potrzebuje wcześniej wykorzystywanej (dodatkowej) pamięci, usuwa ją. Realizowane jest to bez przerwy w świadczeniu usług.
Nie jest możliwe przekonfigurowanie alokacji pamięci dla maszyny wirtualnej, kiedy jest ona włączona (up and running). Jeśli chcemy zmienić opcje Dynamic Memory, wymagane jest wyłącznie systemu gościa.
Maszyna wirtualna działająca na Hyper-V z SP1, używając architektury (VSP/VSC/VMBus), komunikuje się z systemem operacyjnym, aby określić obecny stan pamięci i potrzeby systemu gościa. W tym celu wymagany jest odpowiedni system operacyjny (patrz: wymagania), który posiada wsparcie w kernelu dla Dynamic Memory. W momencie, w którym obciążenie maszyny wirtualnej rośnie, zaimplementowany mechanizm decyduje o dynamicznym przydzieleniu dodatkowej pamięci. Kiedy obciążenie zmniejsza się lub maszyny z większym priorytetem pamięci wysyłają żądanie o przydział dodatkowego RAMu, zostanie on zabrany i udostępniony maszynie z większym priorytetem. Dla systemu gościa w sekcji Memory dostępna jest opcja konfiguracyjna Memory Priority, gdzie administrator definiuje wartość priorytetu (Low - High).

Podczas usuwania pamięci fizycznej z maszyny wirtualnej, która już jej nie potrzebuje, odbywa się proces zwany „balloning'iem". Wymaga on zaakceptowania przez dwie strony, że niektóre strony pamięci nie będą już wykorzystywane przez system gościa. Niestety Task Manager w systemie gościa nie wykazuje żadnej zmiany podczas zmniejszania dostępnej pamięci. Powód takiego zachowania związany jest z „balloning'iem - unballoning'iem". Jeżeli maszyna wirtualna będzie w późniejszym czasie żądała przydzielenia dodatkowej pamięci od gospodarza, to strony pamięci, które były wcześniej „balloned", staną się „unballoned" , a po przydzieleniu pamięci ponownie zmienią się na „balloned".
Funkcja Dynamic Memory dostępna w SP1 posiada wsparcie dla Windows Server 2008 R2 z zainstalowaną rolą Hyper-V lub dla Microsoft Hyper-V Server 2008 R2 jako systemów gospodarza.
W przypadku systemu gościa wpierane są systemy operacyjne (x64 oraz x86):
- Windows® 7 Enterprise Edition
- Windows 7 Ultimate Edition
- Windows Vista® Enterprise Edition SP2
- Windows Vista Ultimate Edition SP2
- Windows Server 2008 R2 Standard Edition SP1*
- Windows Server 2008 R2 Enterprise Edition SP1
- Windows Server 2008 R2 Datacenter Edition SP1
- Windows Server 2008 R2 Web Edition SP1*
- Windows Server 2008 Standard Edition SP2*
- Windows Server 2008 Enterprise Edition SP2
- Windows Server 2008 Datacenter Edition SP2
- Windows Server 2008 Web Edition SP2*
- Windows Server 2003 R2 Standard Edition SP2 or higher*
- Windows Server 2003 R2 Enterprise Edition SP2 or higher
- Windows Server 2003 R2 Datacenter Edition SP2 or higher
- Windows Server 2003 R2 Web Edition SP2 or higher*
- Windows Server 2003 Standard Edition SP2 or higher*
- Windows Server 2003 Enterprise Edition SP2 or higher
- Windows Server 2003 Datacenter Edition SP2 or higher
- Windows Server 2003 Web Edition SP2 or higher*
* Systemy te nie są wspierane przez Dynamic Memory.
Konfiguracja Dynamic Memory
Po uruchomieniu Hyper-V Manager w sekcji Memory dla systemu gościa, dostępne są opcje konfiguracyjne pamięci dynamicznej (Dynamic Memory).

Pierwszą z wartości do skonfigurowania po włączeniu Dynamic Memory jest parametr Startup RAM, będący dolną granicą przydzielonej pamięci (nigdy nie zostanie przydzielone mniej, niż zdefiniowano w Startup RAM). Microsoft rekomenduje ustawienie tej wartości na 512 MB dla większości systemów (Windows 7, Windows Vista, Windows Server 2008, Windows Server 2008 R2), a w przypadku systemów Windows Server 2003 i Windows Server 2003 R2 wartość powinna wynosić 128 MB.
Drugim parametrem, który należy określić, jest Maximum RAM, definiujący górną wartość przydzielonej pamięci. Więcej o rekomendacjach przydzielania pamięci można znaleźć w dokumencie „Best Practices for Implementing Dynamic Memory".

Trzeci z parametrów to opcja Memory Buffer, czyli bufor pamięci, który Hyper-V powinien zarezerwować dla procentowego określenia wymaganej pamięci, dokonanego na podstawie informacji o obciążeniu maszyny wirtualnej. Możliwy zakres tej wartości to od 5% do 95%, a jako wartość domyślną przyjęto 20%.
Przykładowo, jeśli maszyna ma przydzielone 1200 MB pamięci i Memory Buffer jest ustawiony na 20%, to Hyper-V będzie próbował przydzielić dodatkowe 20%, czyli wykona operację:
20%/(100%-20%) x 1200 MB = 300 MB
W rezultacie maszyna będzie wykorzystywała 1500 MB pamięci fizycznej.

Monitorowanie Dynamic Memory
Po skonfigurowaniu dynamicznej alokacji pamięci możemy skorzystać z następujących mechanizmów monitorowania przydzielania RAM:
- Używając dwóch nowych kolumn (Current Memory i Memory Available) dostępnych w panelu Hyper-V Manager,

- Używając liczników wydajności zawartych w SP1 dla Windows Server 2008 R2. Pojawiły się dwie nowe grupy liczników wydajności:
- Hyper-V Dynamic Memory Balancer
- Hyper-V Dynamic Memory VM.

Podsumowując opis funkcji Dynamic Memory warto podkreślić, że poprzez realokowanie pamięci, oparte na obciążeniu maszyn, umożliwia ona lepsze zarządzanie i wykorzystanie zasobów pamięciowych na hostach Hyper-V. Drugim czynnikiem, który przemawia za Hyper-V z Dynamic Memory, jest zwiększenie liczby wirtualnych desktopów dzięki lepszemu wykorzystaniu pamięci.
Zobacz wywiad wideo z Vijay Twari (Principal Program Manager Window Server), który prezentuje Dynamic Memory na TechNet Edge: Dynamic Memory na TechNet Edge.
Więcej informacji na temat Dynamic Memory w Hyper-V R2 SP1 można znaleźć na Windows Virtualization Team Blog.
RemoteFX
W Service Pack 1 pojawił się także drugi kluczowy element związany z usługami zdalnego dostępu, a mianowicie zestaw technologii RemoteFX, które umożliwiają współdzielenie sprzętowej akceleracji 3D z karty graficznej, co w efekcie jest porównywalne z pracą na fizycznej maszynie z systemem Windows 7. Dzięki temu usprawnione zostanie korzystanie ze zdalnych i wirtualnych pulpitów, które będą w stanie obsłużyć interfejs Windows Aero, pozwolą na oglądanie filmów nawet w rozdzielczości HD, umożliwią uruchomienie aplikacji Silverlight czy Flash.
RemoteFX dodaje również obsługę urządzeń USB dla maszyn wirtualnych, co da możliwość pracy z dyskami USB, aparatami czy też urządzeniami PDA, podłączonymi do urządzenia klienta.
W celu rozpoczęcia pracy z RemoteFX musimy posiadać serwer pod kontrolą Windows Server 2008 R2 z SP1 oraz maszyny wirtualne, bazujące na Windows 7 Enterprise z SP1 lub Windows 7 Ultimate z SP1. Na stacjach, które będą się łączyły z maszyną wirtualną, wymagana jest zaktualizowana wersja Remote Desktop Services (zawarta w service packu dla Windows 7).
Jak przygotować Windows Server 2008 R2 SP1 do pracy z RemoteFX?
Założenia wstępne: serwer posiada kartę graficzną z akceleracją 3D, która będzie wykorzystywana przez systemy wirtualne.
Po zainstalowaniu roli Hyper-V ( jest to opisane w przewodniku Hyper-V Planning and Deployment Guide) należy dodać rolę Remote Desktop Services z następującymi usługami:
- Remote Desktop Virtualization Host
- Core Services
- RemoteFX

Więcej informacji na temat instalacji usługi Remote Desktop Virtualization Host można znaleźć w dokumencie "Install the Remote Desktop Virtualization Host Role Service".
Przed uruchomieniem maszyny wirtualnej z Windows 7, która ma włączone wsparcie dla RemoteFX 3D Video Adapter Support, należy zweryfikować, czy karta wideo z akceleracją 3D w serwerze Windows Server 2008 R2 jest poprawnie zainstalowana w systemie.
Kolejnym krokiem jest włączenie wparcia dla USB w RemoteFX na maszynie wirtualnej z Windows 7. Do tego celu możemy wykorzystać Local Group Policy Editor lub Group Policy w sytuacji, kiedy stacje są w domenie. Cała operacja wygląda następująco:
- Uruchamiamy Gpedit.msc
- Przechodzimy do węzła Computer Configuration | Administrative Templates | Windows Components | Remote Desktop Services | Remote Desktop Connection Client | RemoteFX USB Device Redirection.
- Klikamy prawym przyciskiem myszki na Allow RDP redirection of other supported RemoteFX USB devices from this computer i wybieramy polecenie Edit, po czym zaznaczamy Enabled.
- W sekcji Opcje przechodzimy do RemoteFX USB Redirection Access Rights i wybieramy Administrator and Users.

Na następnym etapie wymagane jest odświeżenie polis na stacji i restart maszyny. Należy pamiętać o włączeniu zdalnego pulpitu na maszynie wirtualnej z Windows 7.
Teraz, po stronie Windows Server 2008 R2 SP1, nawigujemy do Hyper-V Manager, aby dodać RemoteFX 3D Video Adapter Support do maszyny wirtualnej z Windows 7. Wymagane jest dodanie karty (Hardware --> Add Hardware) i sprawdzenie, czy jest ona widoczna z poziomu maszyny wirtualnej. Finalnie powinniśmy uzyskać rezultat jak na rysunku poniżej: RemoteFX 3D Video Adapter pojawi się jako nowe urządzenie:

Ostatni etap sprowadza się do ustanowienia połączenia zdalnego ze stacji fizycznej z Windows 7 SP1 do maszyny wirtualnej z Windows 7 SP1. Wymagane jest ustanowienie połączenia do sesji konsolowej, ponieważ w sesji zdalnej akceleracja 3D nie jest wspierana, więc jest to pewnego rodzaju ograniczenie.

Jak można sprawdzić, czy w ustanowionej sesji był używany RemoteFX?
Należy sprawdzić dziennik zdarzeń maszyny wirtualnej i szukać identyfikatora zdarzenia Event ID 2 ze źródła Microsoft-Windows-RemoteDesktopServices-RdpCoreTS/Admin. Zostanie zapisane zdarzenie zawierające następujący tekst: "Remote Desktop Protocol will use RemoteFX module to connect to the client computer. RemoteFX module is being used based on the server configuration, client configuration, and network connection."
Ile GPU jest wpieranych na jednym serwerze z RemoteFX?
Maksymalnie 4 procesory graficzne będą obsłużone na jednym serwerze RemoteFX, jednak z zastrzeżeniem, że muszą być identyczne. Instalacja procesorów graficznych pochodzących od różnych dostawców nie jest wpierana.
RemoteFX ze wsparciem dla USB
W celu współpracy z urządzeniami USB na maszynie wirtualnej wymagane jest włączenie wsparcia w kliencie Remote Desktop Connection. Należy przejść do zakładki Local Resources w opcjach klienta RDP i wybrać More. Pojawi się sekcja Local devices and resources, gdzie po rozwinięciu drzewa Other supported RemoteFX USB devices możemy wybrać dołączone urządzenie USB.

Więcej informacji o konfiguracji RemoteFX można znaleźć w przewodniku „Deploying Microsoft RemoteFX for Virtual Desktop Pools Step-by-Step Guide" dostępnym na stronach Microsoft TechNet. Zachęcam do obejrzenia materiału wideo z konferencji TechEd, gdzie Michael Kleef prezentuje rozwiązanie RemoteFX.
Wszystkie osoby zainteresowane testami Service Pack 1 beta dla Windows Server 2008 R2 i Windows 7 odsyłam do strony http://wss.pl/NewsList/1,18062/asc/Comments.aspx, gdzie znajdują się informacje jak pobrać pakiet aktualizacji.

Autor: Piotr Pawlik (BLACK_RIDER)
Inżynier systemowy zajmujący się rozwiązaniami Unified Communication (Microsoft, Avaya, Cisco) i serwerami Microsoft.