fbpx
devstyle.pl - Blog dla każdego programisty
devstyle.pl - Blog dla każdego programisty
5 minut

Wirtualizacja okiem programisty – part 1/3 – Virtual PC


05.08.2010

Jeszcze przed założeniem własnej działalności i przeniesieniem wszelkich operacji związanych z programowaniem na własną maszynę, do własnego gniazda, nieśmiało i powoli badałem przydatność wirtualizacji dla programisty. Z badań owych wyniknął wniosek bardzo jasny – wirtualizacja to dla mnie rozwiązanie IDEALNE i bez niego nie bardzo wyobrażam sobie pracę. Szczególnie jako pseudo-freelancer jakim jestem teraz, gdy zdarza mi się pracować nad więcej niż jednym projektem jednocześnie.

Temat ten poruszałem już niejednokrotnie, napisałem nawet mini-tutorial pokazujący jak używałem Virtual PC do swoich niecnych celów. Od tamtej pory wiele błota upłynęło w Białce i co nieco zmieniło się w mych zwirtualizowanych zwyczajach. Mam zatem zamiar opisać krótką drogę swojej ewolucji, na którą złożą się uwagi o trzech popularnych środowiskach do wirtualizacji: Virtual PC, VirtualBox i VMWare Workstation. Celowo pomijam Hyper-V, ponieważ stworzone ono zostało raczej do bardziej “serwerowych” celów… i go nigdy nie używałem (i pewnie używać nie będę). Dowodem na to jest choćby niemożność jego instalacji na Windows7 – a ja CHCĘ mieć Windows7 jako główny system.

Na początku było…

Virtual PC, by Microsoft

Plusy

Darmowe. Proste w użyciu. Rach-ciach i działa, śpiewa, tańczy, recytuje. To od tego narzędzia rozpocząłem przygodę z wirtualizacją i bardzo dobrze mi się z niego korzystało. Integracja z hostem (Win XP i Win7) – bardzo fajna. Starsza wersja (2007) posiadała nawet drag’n’drop pomiędzy hostem a gościem i ten ficzer na tyle ujął me serce, że nadal używałem tej wersji po wyjściu kolejnej edycji dołączanej do Windows 7.

Dodatkowo w żadnym innym systemie żonglowanie dyskami nie jest tak proste i dowolne. Wszystko można skopiować, przenieść, przemianować (w sensie – zmienić nazwę:) ). Jeden dysk można podłączyć do kilku maszyn, jedna maszyna może korzystać z kilku dysków. Dyski mogą dziedziczyć z siebie nawzajem, a nowa “instancja” tej samej maszyny to po prostu x-copy jej dysków. Ba – utworzenie nowej maszyny wirtualnej to kwestia dosłownie pół minuty – dzięki całkowitej swobodzie w kilka chwil można raz-dwa odpalić nowy “tymczasowy” system, wykonać jakąś czynność, a następnie wyłączyć maszynę kasując zmiany i zapomnieć o całej sprawie. Do dziś korzystam z takiej możliwości jeśli “gdzieś indziej” muszę zaktualizować jakieś biblioteki wymagające instalacji, np. komponenty Telerika. Nie chcę integracji z VS, nie chcę dokumentacji, nie chcę żadnych śmieci – tylko same dllki. Dzięki VPC jest to naprawdę proste – ściągam instalator, instaluję, kopiuję z wirtualki gołe biblioteki… i już.

Niesamowicie podoba mi się również sposób konfiguracji sieci dla poszczególnych maszyn. Każda wirtualka ma swoją własną konfigurację w żaden sposób nie wpływającą na pozostałe maszyny. Strasznie elastyczne i wygodne rozwiązanie.

Minusy

Skoro tak się nad VPC rozpływam to dlaczego dziś używam go tak sporadycznie? Powody są dwa – i niestety oba całkowicie dyskwalifikują to rozwiązanie w moich oczach.

Pierwszym głównym powodem jest brak wsparcia dla 64-bitowych systemów gości. Mam w zwyczaju programować na serwerowych edycjach Windowsa, więc naturalną koleją rzeczy kilka miesięcy temu przeniosłem się z Win2003 na Win2008R2. I w tym momencie… VPC po prostu rozkłada ręce, rozkłada nogi i mówi “slap me baby one more time“. Najzwyczajniej w świecie SIĘ NIE DA, ponieważ system ów nie posiada 32bitowej wersji.

Drugi główny powód to możliwość wykorzystania maksymalnie JEDNEGO (słownie: jednego!) rdzenia procesora hosta. Coś mi świta że kiedyś wszystkie uruchomione maszyny chodziły na jednym rdzeniu, a teraz każda maszyna może dostać swój rdzeń, ale… tak naprawdę nie ma do żadnego znaczenia. Visual Studio + Resharper + Sql Server + IIS + kilka innych rzeczy uruchomione na jednym rdzeniu po prostu nie działają tak jak działać powinny. I nie ma w tym nic dziwnego.

Oprócz wymienionych wad znalazłoby się jeszcze kilka mniejszych baboli. Szczególnie irytujące było “niedziałanie” niektórych klawiszy w wirtualce w pewnych – moim zdaniem losowych – cyrkumstancjach. Na przykład nie działał klawisz TAB, albo nie działał ESC, a ALT+TAB owszem, wykonywał się – ale na hoście. Co prawda restart całego środowiska naprawia tą przykrą niedogodność, ale niesmak… pozostaje.

Z innych uwag: VPC gryzie się z Virtual Boxem – nie potrafią działać jednocześnie na jednym hoście.

Podsumowując…

Uważam Virtual PC za całkiem udany produkt. Niektóre rozwiązania są wręcz genialne i jeśli zastanawiasz się nad “zabawą” z wirtualizacją na systemach 32bitowych niewymagających specjalnie mocy obliczeniowej rozdzielonej na kilka rdzeni – to polecam. Niestety wymienione wady absolutnie wykluczają VPC jeśli chodzi o bardziej “profesjonalne” programistyczne zastosowania. Jest to – jak podkreślone wyżej – po prostu raczej zabawka. A szkoda.

0 0 votes
Article Rating
28 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Tomasz Wisniewski
13 years ago

Hehe, jako glowny system "musisz" miec Windows 7, ale programujesz na 2008 R2. Hmm… jesli piszesz aplikacji serwerowe to rozumiem, ale jesli klienckie to chyba lepiej programowac na takiej maszynie na jakiej klient bedzie odpalal dany soft?

procent
13 years ago

@Tomasz Wisniewski:
Chcę mieć Win7 bo jest fajne. A programuje na Server bo… bo tak – nie mam żadnego "silnego" argumentu za takim a nie innym postępowaniem. Jeśli klient ma odpalać aplikację u siebie lokalnie na Windows (czyli nie piszę stronki lub innej logiki server-side) to i tak nie ma znaczenia na czym programuję, bo do przetestowania jest więcej niż jedna wersja systemu.

Artur
Artur
13 years ago

Czekam co będzie dalej (następny wpis), bo ok. tygodnia temu zakończyłem paromiesięczną przygodę z VPC/VB. VPC – działa w o l n o. Edycja w VS "jak cie mogę", ale kompilacja kilka razy dłużej niż na host. Kombinowałem z jedną wirtulką, z oddzielną na MSSQL i poddałem się. No to przesiadłem się na VB. Normalnie rakieta przy VPC. Ale stabilnośc do d… Wywala się wirtualka, czasem razem z hostem. Rzadko przepracowałem dzień bez ku… nia. Potem wróciłem do VPC, a teraz rzuciłem to w cholerę. No i w VPC czasem nie widzi sieci, rzadko, ale akurat jak mam ważny commit i spieszy mi się. Reboot wirtualki często pomagał, ale czasem musiałem hosta przekręcić.

jakubmal
jakubmal
13 years ago

+1 za moje ulubione słowo – cyrkumstancje

klm_
13 years ago

dla mnie jedyna apceptowalna opcja jest VMWare, reszta do kosza :)

Wojtek
13 years ago

A propos Hyper-V. Ja swój komputer traktuję jako terminal dostępowy do wirtualnych maszyn odpalonych na serwerze (który jest fizycznie drugim komputerem). Wszystko stoi na Hyper-V standalone. Supportuje x64 i wielordzeniowość. Na dzień dzisiejszy mam na nim Ubuntu, 2008 i 2008R2 Web. Polecam wypróbować – dzięki temu moja osobista maszyna może być trochę bardziej multimedialna i śmieciowata.

Jedyne wymaganie do takiego Hyper-V to 2 (słownie 2) fizyczne karty sieciowe na maszynie serwera.

procent
13 years ago

@Wojtek:
Nie mam fizycznie "drugiego" komputera – tylko "main" PC, laptop poboczny jako 3 ekran i drugi laptop…domowy. PC może być również "śmieciowaty" ponieważ wszystko co ważne mam na wirtualkach, a wszelkie projekty i dokumenty dodatkowo backupowane online.

Wojtek
13 years ago

@Procent:
I masz całkiem fajne rozwiązanie. Wiadomo każdy dostosowuje narzędzia do swoich potrzeb. W poście napisałeś, że nie miałeś doświadczeń z Hyper-V, więc chciałem się tylko podzielić krótko jak można wykorzystać Hyper-V do celów deweloperskich.

Gdzie backupujesz dane? Jakiś serwis?

procent
13 years ago

@Wojtek:
DropBox. Wcześniej korzystałem z Mozy, potem próbowałem z LiveMesh, ale… DB je po prostu zmiata.

dennar
dennar
13 years ago

A co z licencjami na systemy, które stawiasz na wirtualkach???

Gutek
13 years ago

@denner

licencja MSDN zalatwia wszystko w tej kwestii. To tworzenia oprogramowania masz X licencji z czego jak wykasujesz wirtualke to licencja Ci sie zwraca.

Podobnie jest z TechNetem z ta roznica iz do testowania architektury systemow.

W obudwoch przypadkach nie mozesz postawic rozwiazania komercyjnego na zarowno na MSDN jak i na TechNET.

dennar
dennar
13 years ago

@Gutek
No dobra, ale skoro piszesz, że nie można postawić rozwiązania komercyjnego na tych Twoich sposobach to trochę mija się z celem prawda? Jako freelancer pewnie byś chciał jednak zarabiać jakąś kasę ;)

Wojtek
13 years ago

@dennar
Bycie freelancerem nie równa się byciem hostem serwerów wirtualnych gdzie o wiele droższy od samych licencji (Win2008 Web kosztuje box 2500zł) jest SPRZĘT serwerowy. Kolega Procent stawia wszystko na 1 komputerze – jak sobie wyobrażasz sprzęt nie nadaje się do hostowania rozwiązań biznesowych (web, b2b, p2p whatever) ale do testów, developerki, czyli przygotowania softu do oddania komuś innemu aby sobie sam zadbał o serwery.

dennar
dennar
13 years ago

@Wojtek
Czy testy, developerka, czli przygotowanie softu do oddania komuś to nie jest też częściowo praca komercyjna?

Wojtek
13 years ago

Komercja deweloperska jest w ramach MSDN – Microsoft Developer Network – sama nazwa coś podpowiada ;)
Jest jeszcze tańsza wersja MSDN jak ktoś uważa że ten jest drogi (troche kosztuje) – Microsoft Action Pack Subscription: Design and Development.

dennar
dennar
13 years ago

@Wojtek
Aha to nie wiedziałem. Sugerowałem się MSDN AA ;)

Wojtek
13 years ago

@dennar
Ja używam MAPS:D&D na firme bo to bodaj 150 euro kosztuje – warto. Jest dużo licencji. MSDN AA jest do nauki i ewaluacji only.

Gutek
13 years ago

@dennar

@Wojtek powiedzial wszystko chyba co trzeba :) Warto jednak dodac, ze istnieje program BizSpark i WebsiteSpark, oba programy daja baaardzo tanio lub za darmo (do zorientowania sie) MSDNa dla firm poczatkujacych (lub maloosobowych):
http://www.microsoft.com/bizspark/
http://www.microsoft.com/web/websitespark/default.aspx

dennar
dennar
13 years ago

@Wojtek
A cóż to jest to MAPS:D&D? Możesz rozwinąć skrót?

Wojtek
13 years ago

@denar tak jak pisalem: Microsoft Action Pack Subscription: Design and Development.

dennar
dennar
13 years ago

@Wojtek, @Gutek
A nie orientujecie się może jak to jest jak mam licencję na Windowsa na swoim kompie to czy mogę postawić na tym samym kompie nieograniczoną ilość wirtualek tego właśnie systemu??

procent
13 years ago

@dennar:
Z tego co mi wiadomo to nie – licencja to licencja, obejmuje jedna maszyne, niezaleznie od tego czy na fizycznej maszynie czy na wirtualce.

wojtek
wojtek
13 years ago

Zastanawiam sie jakiego sprzetu uzywacie do hostowania wirtualek. Interesuja mnie rozwiazania typowo desktopowe. Z wirtualizacja zetknalem sie pare dni temu i jest to milosc od pierwszego wejrzenia. Problem w tym, ze musze zmienic sprzet, i nie wiem jak daleko musze sie posunac (bez skojarzen), zeby dalo sie na tym pracowac bez rzucania miesem na lewo i prawo. Domowy pc (Intel E2180, 4GB RAM) znakomicie radzi sobie z rozbudowanym srodowiskiem developerskim, ale jak przychodzi mu hostowac takie samo srodowiko wirtualnie, to swiat przestaje sie krecic. Moze ktos ma namiary na dobre "how to" zwiazane z wydajnoscia na VMWare? Ciekawe czy dalo by sie mobilnie np. Sony Vaio?

Wirtualizacje cenie sobie za odseparowanie warsztatu od placu zabaw oraz za mozliwosc skonfigurowania srodowiska pod konkretny projekt/testy. ‘Zawieszenie’ roboty w dowolnym momencie tez ciekawy bajer.

Pozdrawiam
Ania, lat 12

procent
13 years ago

@wojtek:
Naważniejszy jest RAM – praktycznie musisz mieć 8GB, 4 to zdecydowanie za mało. Co za tym idzie: 64-bitowy system hosta. Procesor min. 2 rdzenie (najlepiej 4), WSZYSTKIE oddane wirtualce.

Gutek
13 years ago

@wojtek, @procent

min 8GB :) ja bym juz teraz szedl w 12/16GB. i 2 rdzeniach dla plynnej pracy bym zapomnial, min 4 przydaje sie takze HT z intela (z najnowszych to procek i7 – i3/i5 tego nie zawieraja) nie wiem czy AMD ma cos podobnego.

Zreszta sprzet od Hanselman ( http://www.hanselman.com/blog/UltimateDeveloperPC20Part2UPDATEAndPODCASTOnBuildingAWEI79AndRFCForBuildingAGOMGodsOwnMachine.aspx ) powinien wystarczyc dla plynnej pracy kilku wirtualek na raz.

Kurs Gita

Zaawansowany frontend

Szkolenie z Testów

Szkolenie z baz danych

Książka

Zobacz również