Automatyzacja instalacji komputerów

Daniel Rychcik
muflon@mat.uni.torun.pl
26-11-2000

1. Wstęp

Opisane zostaną metody automatyzacji zarządzania sieciami komputerów PC w oparciu o odzyskiwanie partycji. Są one niezwykle przydatne wszędzie tam, gdzie mamy wiele komputerów o podobnej (najczęściej identycznej) konfiguracji i chcemy w jakiś sposób ułatwić sobie administrację.

Sytuacja taka występuje przykładowo w pracowniach komputerowych na wydziałach (w szkołach), gdzie komputery są z reguły identyczne w obrębie pracowni, jednak system operacyjny typu Windows pozwala użytkownikom na dokonywanie zmian w konfiguracji. Z reguły kończy się to tym, że co kilka dni jakiś komputer wymaga ręcznej interwencji administratora.

Inny problem występuje w klastrach obliczeniowych opartych o komputery PC - tam co prawda system jest (a przynajmniej powinien być) zabezpieczony przed nieuprawnionymi użytkownikami, jednak ewentualne awarie oprogramowania / sprzętu powinny dać się usunąć w jak najkrótszym czasie.

Klastry obliczeniowe są również często używane do innych celów, przykładowo pracownia Lab2 na WMiI jest używana na potrzeby narmalnych zajęć - możliwe są rozwiązania, w których "przeinstalowanie" maszyn z trybu klastra do trybu normalnej pracowni komputerowej trwa kilka minut.

Opiszę tu kilka metod radzenia sobie z tymi problemami, na podstawie własnych doświadczeń oraz dokumentacji do istniejących systemów, którą udało mi się znaleźć w sieci.

2. Idea

Podstawowa koncepcja jest bardzo prosta: w sieci stawiamy serwer obrazów (nie musi to być szybka maszyna - wystarczy, jeśli będzie miała szybkie dyski i interfejs sieciowy). Definiujemy ponadto procedurę reinstalacji: przez "dyskietkę ratunkową", bootowanie z sieci, lub w inny sposób. System powinien pracować całkowicie w pamięci RAM, gdyż w czasie odzyskiwania partycji dysk nie jest dostępny.

Po załadowaniu systemu konfiguruje on sieć (np. DHCP), łączy się z serwerem obrazów i rozpoczyna odtwarzanie. Polega ono na zapisaniu obrazu partycji na dysk fizyczny w komputerze lokalnym (Inna metoda to odtwarzanie systemu plików - nie będę się nią tutaj zajmował). Obrazy partycji mogą być skompresowane - klient musi je rozpakować "w locie". Nie jest to dużym problemem, gdyż komputery klienckie są z regułu dość mocnymi maszynami.

Po odtworzeniu partycji następuje część procesu zależna od systemu - należy skonfigurować ustawienia lokalne dla danego klienta typu adres IP, hostname, nazwa NETBIOS. W zależności od sytuacji może ona być wykonywana jeszcze w programie "ratunkowym", bądź przy pierwszym starcie odtworzonego systemu.

3. Sposoby odzyskiwania partycji

3.1. Typy obrazów

W zależności od potrzeb możemy stosować trzy typy obrazów. Każdy z nich może występować dodatkowo w postaci skompresowanej

3.2. Tworzenie obrazów

Ten etap jest w dużym stopniu uzależniony od docelowego systemu operacyjnego klienta, jak i sposobu realizacji systemu "ratunkowego". Generalnie sprowadza się on do:

Możliwa (choć nie wymagana) jest pewna automatyzacja tego procesu. Rozsądnym rozwiązaniem może byc na przykład stworzenie dyskietki, która automatycznie wykonuje etap trzeci (tworzenie obrazu), natomiast pozostałe mogą być wykonywane ręcznie. Bądź co bądź, jest to procedura wykonywana stosunkowo rzadko.

3.3. Startowanie systemu odtwarzania

W zależności od dostępnych środków start systemu możemy realizować w różny sposób. Jeżeli mamy stabilną, rzadko zmieniającą się konfigurację klientów, to możemy obraz dysku zgrać wręcz na płytę CD i cały proces wykonać bez uzycia sieci. Dobrze sprawdza się to w sytuacji, gdzi komputer pełni rolę pomocniczą i jest przeznaczony do ściśle określonych zadań, np. w bibliotece. Możemy wtedy opiekę nad maszynami pozostawić w rękach personelu, który nie musi mieć żadnych specjalnych kwalifikacji

Jeżeli jednak zdecydujemy się na obrazy umieszczone na serwerze musimy zdecydować się, w jaki sposób będziemy startować system odtwarzający. Najprostszym rozwiązaniem jest "dyskietka ratunkowa". Po wystartowaniu z niej komputera system określa swoje położenie (np. na podstawie adresu IP, lub MAC) i nawiązuje połączenie z serwerem. Podstawową wadą jest jednak konieczność ręcznego uruchomienia całego procesu, co w przypadku większej ilości komputerów, lub utrudnionego fizycznego do nich dostępu (klastry) może być pewnym utrudnieniem.

Najlepszym rozwiązaniem jest zatem start z sieci z użyciem takich technik jak:

Przy jednoczesnym startowaniu większej ilości klientów pojawiają się pewne problemy związane z obciążeniem boot-serwera. Objawiają się one tym, że niektóre komputery mają kłopoty ze ściągnięciem obrazu startowego. Wynika to z fakty, że protokoły typu BOOTP/TFTP są nastawione na maksymalną prostotę procesu startu i nie zawierają żadnych zaawansowanych mechanizmów radzenia sobie w sytuacjach wyjątkowych. Mogą wystąpić również problemy innego rodzaju, gdyż serwery NFS/SMB są często domyślnie konfigurowane tak, że traktują jednoczesne podłączenie się większej ilości klientów jako próbę ataku DOS (ang. Denial Of Service) i w takiej sytuacji się wyłączają. Można temu próbować przeciwdziałać przez uruchamianie maszyn klienckich w pewnych odstępach czasowych (typowo kilka sekund) i późniejszą synchronizację procesu odtwarzania.

Automatyczne odtwarzanie klastrów obliczeniowych wiąże się jeszcze z jednym problemem. Często zachodzi konieczność rozbudowania sprzętu o możliwość zdalnego zrebootowania maszyny. Nie chodzi tu jednak o reboot w znaczeniu "telnetuj się na maszynę X i wykonaj polecenie reboot", ale o możliwość sprzętowego uruchomienia maszyny nie reagującej na polecenia. Jest to konieczne, jeśli chcemy zautomatyzować system tak, aby odtwarzał komputery nie odpowiadające na połączenia np. w nocy bez interwencji administratora. Typowo realizuje się to przez powiązanie mechanizmu Wake-On-LAN z sygnałem Reset dostępnym na płycie głównej.

3.5. Realizacje systemu odtwarzającego

Kiedy już wiemy jak obraz ratunkowy dostaje się na maszynę klienta, należy zadecydować, co w tym obrazie się znajduje. Zasadniczo mamy dwie możliwości: DOS i Linux. Różnice są głównie techniczne, w wersji Linuxowej nieco trudniejsze jest przygotowanie początkowych etapów (start, ładowanie obrazu), jednak właściwy system jest z reguły prostszy, gdyż możemy korzystać ze wszystkich narzędzi sieciowych typowych dla Unixa, a pisanie ewentualnych programów wspomagających to proste zadania programistyczne.

Najczęściej nie udaje nam się zmieścić wszystkich niezbędnych programów w obrazie startowym przesyłanym przez sieć, lub umieszczonym na dyskietce. Rozwiązaniem jest wtedy montowanie z serwera NFS katalogu, w którym umieszczamy dodatkowe rzeczy. Często w ten sposób realizuje się bootowanie Linuxa z sieci: obraz startowy zawiera tylko programy niezbędne do wystartowania systemu i połączenia z siecią, a zaraz potem montowany jest katalog /usr zawierający właściwą część systemu.

3.6. Metody przesyłania obrazów

Przesyłanie i ewentualną dekompresję obrazów w Unixie można zrealizować używając standardowych narzędzi, przykładowa komenda mogłaby wyglądać następująco:

gzip -d -c /nfs/obrazy/hda1.gz | dd of=/dev/hda1

Jednak w przypadku bardziej zaawansowanych systemów (oraz obrazów opartych na DOS) konieczne jest oprogramowanie dystrybucji danych we własnym zakresie. Umożliwia to wykorzystanie zaawansowanych technik dystrybucji takich jak drzewa binarne, w których komputery klienckie są jednocześnie przekaźnikami danych dla innych maszyn - zmniejsza to obciążenie głównego serwera i umożliwia znaczne skrócenie czasu działania.

3.6.1. Metody najprostsze

Narzucającym się rozwiązaniem jest użycie któregoś z systemów udostępniania plików (najczęściej używa się NFS, jednak można sobie wyobrazić rozwiązania oparte o SMB, lub NetWare). Zaletą jest oczywiście duża prostota oprogramowania klienta i administracji serwera, jednak wydajność takiego rozwiązania pozostawia wiele do życzenia. Pojawiają się poza tym problemy z dostępem opisane w p.3.3. Przykładowo system używany na WMiI działający na maszynie Sun SparcStation 10 pozwala na podłączenie 4-5 klientów jednocześnie - pozostałe dostają już "NFS Timeout". Nawet na odpowiednio szybkiej maszynie ograniczenia interfejsu sieciowego nie pozwolą na uzyskanie dużej wydajności procesu.

Niemniej jednak, tego typu metody są jedynymi, których użycie nie wymaga pisania dodatkowych aplikacji wspomagających przesyłanie

3.6.2. Metody oparte o multicasting

Dysponując niezbyt szybką siecią lokalną możemy przesyłanie obrazów oprogramować w oparciu o multicasting (lub, w prostszej wersji, o broadcast). Pozwala to na odciążenie serwera, gdyż wysyła on obraz jednokrotnie i każdy z klientów odbiera go jednocześnie. Wadą jest datagramowa natura komunikacji w protokołach multicastowych - należy zadbać o korekcję błędów i o to, żeby ewentualne utracone pakiety były wysyłane ponownie.

W praktyce zyski związane z odciążeniem serwera są większe, niż ewentualne straty związane z zawodną komunikacją, jednak programy obsługi są dość skomplikowane. Wynika to z faktu, że protokołu multicastowe zostały zaprojektowane do zupełnie innych zadań - dystrybucja dźwięku, video itp. gdzie nie jest wymagana stuprocentowa dokładność i niezawodność przesyłania.

3.6.3. Użycie klientów jako przekaźników

Wydaje się, że najlepszą metodą, łączącą szybkość multicastingu z prostotą systemów udostępniania plików jest używanie klientów jako stacji pośrednich przekazujących obrazy do innych klientów. Zasadniczym wymaganiem jest w tym wypadku szybka i koniecznie switchowana sieć lokalna.

Idea jest dość prosta i sprowadza się do połączenia (logicznego) klientów w pewną strukturę, na szczycie której jest serwer. Przesyła on dane do pierwszego z klientów, następnie są one dystrybuowane dalej. Typowo używane są dwie topologie:

3.7. Dostosowywanie klientów

Po odtworzeniu partycji pojawia się kolejny problem związany z dostosowaniem "uniwersalnego" obrazu do potrzeb lokalnych klienta. W przypadku systemów Linuxowych jest to względnie proste i sprowadza się do:

Niestety sytuacja dla klientów Windows jest nieco bardziej skomplikowana. Wynika to z faktu, że wszystkie kluczowe informacje systemowe są przechowywane w pliku rejestru, którego ręczne modyfikowanie z poziomu systemu ratunkowego raczej nie wchodzi w grę.

Można trochę uprościć sobie zadanie konfigurując sieć tak, aby adresy IP były uzyskiwane automatycznie z użyciem DHCP, jednak ciągle pozostają dwa problemy:

Komercyjne pakiety (opisane dalej) zawierają narzędzia pozwalające na ominięcie tych niedogodności, jednak nie udało mi się znaleźć żadnego narzędzia OpenSource (albo chociaż freeware) mającego takie funkcje. W chwili obecnej używane są najczęściej pliki .REG poprawiające konfigurację komputera po pierwszym restarcie. Wyglądają one mniej więcej tak:

  REGEDIT4

  [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]
  "ComputerName"="MUFLON"
  "Workgroup"="40"
  "Comment"="VM Win"

  [HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\ComputerName]
  "ComputerName"="MUFLON"

4. Przykładowe systemy

4.1. Systemy darmowe

4.1.1. Projekt Patagonia

Opracowany i rozwijany na Swiss University of Technology w Zurichu. Jego podstawowym zastosowaniem jest zarządzanie dużą ilością komputerów o podwójnym przeznaczeniu: służą one jako maszyny edukacyjne, a w czasie wolnym jako klaster obliczeniowy. Umożliwia używanie wielu systemów operacyjnych na jednej maszynie. Zawiera zaawansowane mechanizmy dystrybucji (topologie gwiazdy i szeregu) - autorzy chwalą się możliwością dystrybucji 2GB partycji NTFS na 15 komputerów w czasie poniżej 5 minut!

Dostępne narzędzia zawierają: program do właściwego kopiowania partycji, oraz interfejs klienta (Linux) napisany z użyciem Tcl/Tk.

Nie jest to jeszcze w tej chwili rozwiązanie gotowe do użytku - jest nakierowane na specyficzne potrzeby, jednak zawiera wiele idei wartych wykorzystania przy ewentualnym zastosowaniu w innych warunkach.

4.1.2. Instalacje typu Kickstart.

...

4.2. Systemy komercyjne

4.2.1. Norton Ghost

Był to pierwszy szeroko dostępny program tego typu. W wersji obecnej umożliwia on tworzenie obrazów partycji FAT, NTFS, ext2, obsługuje nagrywarki CD-R. Możliwe jest przenoszenie systemu między partycjami o różnej wielkości. Umożliwia również stosowanie bezpośredniego połączenia przy pomocy kabla USB/LPT. W wersji najbardziej rozbudowanej zawiera system zarządzania i dystrybucji obrazów przez sieć (używający protokołu typu multicast).

4.2.2. PowerQuest DriveImage

W kwestiach podstawowych program jest podobny do Ghosta, jest nakierowany bardziej na użytkowników indywidualnych (nie obsługuje partycji ext2, nie ma mechanizmów sieciowych).

4.2.3. ImageCast

Przeznaczony typowo do zastosowań sieciowych, obsługuje partycje FAT, NTFS, ext2, może kopiować również inne systemy plików, zawiera serwer obrazów (multicast), serwery pozostałych usług takich jak DHCP, PXE, umożliwia kompresję obrazów, rekonfigurację Windows po restarcie (SID, NetBIOS). Zawiera narzędzia wspomagające automatyczne tworzenie obrazów partycji.

4.2.4. Win95Copy

Mały program przeznaczony do tworzenia obrazów partycji Windowsowych

5. Literatura