Download: SysadminBacula

Transkrypt

Download: SysadminBacula
Bacula
SYSADMIN
Tworzenie kopii zapasowych za pomocą systemu Bacula
MOC BACKUPÓW
Kiedy zadania związane z tworzeniem kopii zapasowych
stają się zbyt skomplikowane, aby można było wykonywać je za pomocą skryptu,
rozwiązaniem może okazać się program Bacula
– bezpłatne narzędzie oparte na demonach.
JENS-CHRISTOPH BRENDEL
I
stnieją przeróżne strategie dotyczące tworzenia kopii zapasowych. Najtańsze i najprostsze rozwiązania opierają się na
skryptach, a w najgorszych przypadkach używają narzędzi systemu operacyjnego (tar, dd,
cpio). Podejście to sprawdza się przy tworzeniu lokalnych kopii zapasowych niewielkich
ilości danych i w środowiskach o niewielu
klientach.
Droższe strategie tworzenia kopii zapasowych wykorzystują bardziej wyrafinowane
techniki. Narzędzia takie jak rsync i Amanda
działają skutecznie w wielu środowiskach,
wymagają jednak często zaawansowanych
umiejętności pisania skryptów i mają pewne
ukryte ograniczenia dotyczące czasu, ilości
danych i obsługiwanego sprzętu.
Ograniczenia te nie dotyczą narzędzi przeznaczonych dla przedsiębiorstw; wadą takich
rozwiązań jest jednak najczęściej wysoki
koszt. Wyjątkiem od tej zasady jest program
Bacula [1], bezpłatne narzędzie do tworzenia
kopii zapasowych, wyposażone w zestaw
funkcji oferowanych zwykle przez produkty
komercyjne.
Bacula nie jest monolitem, ale zestawem
różnych demonów ze wspólnym interfejsem
użytkownika. Każdy z demonów ma określone zadania i komunikuje się z pozostałymi przez sieć. Takie rozwiązanie umożliwia
rozdzielenie zadań: sterowanie działaniem
całego systemu z komputera administratora
i obsługę kont przez serwer baz danych.
Najtrudniejsze zadania – odczyt i zapisywanie danych – wykonywane są przez zespół
demonów działających po stronie klienta
oraz demony odpowiedzialne za zapisywanie na serwerach kopii zapasowych. Funkcje te mogą oczywiście być realizowane na
jednym komputerze – architektura tego rozwiązania jest elastyczna i łatwo skalowalna
(Rysunek 1).
Rysunek 1: Dziel i rządź – program Bacula rozdziela zadania związane z tworzeniem kopii zapasowych między różne komputery w sieci, przechowywanie danych jest jednak realizowane centralnie.
WWW.LINUX-MAGAZINE.PL
NUMER 19 SIERPIEŃ - WRZESIEŃ 2005
73
SYSADMIN
Bacula
Centralne zarządzanie
Za kierowanie zespołem demonów odpowiedzialny jest demon zarządzający (director).
Wie on, co należy gdzie przechowywać
i gdzie znaleźć odpowiednie pliki, jeśli konieczne będzie odzyskanie utraconych danych. Zna również harmonogramy, nazwy
klientów, miejsca magazynowania danych
i szczegóły dotyczące zaplanowanych zadań,
choć samo tworzenie kopii zapasowych realizowane jest przez podlegające mu demony.
Demon zarządzający wyróżnia się także tym,
że jako jedyny należący do systemu Bacula
ma możliwość komunikowania się z użytkownikiem.
Szczegółowe informacje dotyczące konfiguracji zapisane są w pliku w formacie
ASCII (bacula-dir.conf) w postaci hierarchicznie ułożonych opisów zasobów. Na samej górze hierarchii znajduje się zasób zawierający
ustawienia dotyczące poszczególnych zadań.
Obejmują one typ zadania (tworzenie kopii
zapasowej, odzyskiwanie danych, weryfikacja lub zadanie administracyjne), czas jego
wykonania lub rodzaj (w przypadku kopii zapasowej: pełny, przyrostowy, różnicowy).
Dla ułatwienia większość szczegółowych
informacji pogrupowana jest w podzasoby,
tzw. dyrektywy. Wspólne funkcje podobnych
zadań można zgrupować jako definicje zadań
(JobDefs), aby utworzyć klasę zadań, do której będą się potem odnosić inne opisy. Plik
konfiguracyjny jest dzięki temu nieduży; pozwala to również uniknąć wpisywania powtarzających się informacji.
Na przykład w zasobie typu Schedule (harmonogram) zdefiniowane są harmonogramy
uruchamiania zadań w określonych odstępach czasu. Obsługiwane są w zasadzie
wszystkie rodzaje harmonogramów. W zasobie FileSet (zbiór plików) wymienione są katalogi i pliki, z których mają zostać utworzone kopie zapasowe. Katalogi obsługiwane są
rekurencyjnie – oznacza to, że wpisanie znaku / uruchomi najprostszą, pełną archiwiza-
Rysunek 2: JBacula, niezależnie rozwijany projekt, ułatwia konfigurację demona katalogów.
74
cję. Można, rzecz jasna, wyłączyć z niej niektóre katalogi, np. /tmp, lub pliki ukryte, takie jak .journal czy .fsck.
Proces tworzenia kopii zapasowych przekroczy granice wyznaczane przez system plików tylko wtedy, jeśli określi się to za pomocą odpowiednich ustawień. Zgodnie z ustawieniami domyślnymi program działa tylko
w obrębie bieżącego systemu plików – pozwala to uniknąć nieskończonych pętli lub
nieumyślnego tworzenia kopii serwerów plików. Aby zachować to służące zwiększeniu
bezpieczeństwa ustawienie, przed utworzeniem pełnej kopii zapasowej należy wpisać
wszystkie lokalne systemy plików podłączane przez klienta.
Program Bacula obsługuje oczywiście również bardziej skomplikowane zadania. Można na przykład odwołać się do zewnętrznej listy plików, wyrażeń powłoki lub skryptów,
tworzących listy kopii zapasowych w czasie
wykonywania. Należy pamiętać, że przy
wprowadzaniu poleceń powłoki bezpośrednio trzeba zwrócić szczególną uwagę na wpisywanie znaków specjalnych i spacji (np. poprzedzać je znakiem lewego ukośnika).
Wyobraźmy sobie, że chcemy sporządzić
kopie zapasowe wszystkich plików konfiguracyjnych znajdujących się w katalogu /etc
i wszystkich ukrytych plików i katalogów
z katalogu domowego użytkownika jcb. Wykona to następujący skrypt:
#!/bin/sh
find /home/jcb §§
-maxdepth 1 -name „.*”
find /etc -name „*.conf”
Odpowiedni zasób FileSet wyglądać będzie następująco:
FileSet {
name = „ConfigSet”
include {
Options {
signature = MD5
}
File = §§
„|/etc/bacula/confbackup.sh”
}
}
Jako źródła danych, oprócz plików, list
i skryptów, można także wskazać urządzenia
(muszą one jednak być podłączone w trybie
przeznaczonym tylko do odczytu). Proces
tworzenia kopii zapasowych może nawet odczytywać dane z kolejek FIFO, łączących
NUMER 19 SIERPIEŃ - WRZESIEŃ 2005
WWW.LINUX-MAGAZINE.PL
działającą aplikację z jej kopią zapasową. Ten
wyjątkowy poziom elastyczności związany ze
źródłami danych ma jednak swoją cenę: wybieranie źródeł jest znacznie mniej intuicyjne, niż po prostu wybieranie plików poprzez
interfejs graficzny. Idealnym rozwiązaniem
byłoby połączenie obu tych metod.
Korzystanie z puli
Inna dyrektywa konfiguracyjna określa pule
nośników; rozwiązanie to nie należy zatem do
najprostszych. Pula grupuje logicznie pewną
liczbę taśm, umożliwiając w ten sposób zapisanie kopii zasobu o rozmiarach przekraczających pojemność jednego nośnika. Kiedy zadanie tworzenia kopii dotrze do końca taśmy,
program zapisuje jej dalszy ciąg na następnej
dostępnej taśmie, należącej do tej samej puli.
Umożliwia to ponowne wykorzystywanie
starszych taśm po upływie pewnego ustalonego okresu ich przechowywania.
Zasoby puli konfigurować można za pomocą różnych ustawień – na przykład okresu, po którym nośnik może zostać ponownie
wykorzystany lub maksymalnej liczby cykli
jego życia. Ustawienia te dotyczą wszystkich
taśm w puli; jest to dobre rozwiązanie, administrator nie musi bowiem dzięki temu ustalać osobnych preferencji dla każdego nośnika (taka opcja jest jednak również dostępna).
Przydzielanie taśm do różnych pul ułatwia
także podzielenie ich w zależności od zastosowania i pozwala uniknąć pomieszania lub
co gorsza, nadpisania taśm przeznaczonych
do tworzenia kopii przyrostowych i pełnych.
Można także określać pule dla poszczególnych klientów, dni tygodnia itp.
Automatyczna zmiana taśm opiera się na
założeniu, że do dyspozycji jest cała biblioteka taśm. Program Bacula obsługuje wiele robotów, zwanych także automatycznymi
zmieniarkami lub ładowarkami taśm, współpracujących z napędami typu DAT, VXA2,
DLT, LTO oraz AIT.
Narzędzie Mtx [2], wykorzystywane przez
program Bacula do zarządzania bibliotekami
taśm, umożliwia nawet drukowanie etykiet
z kodami kreskowymi – dzięki nim robot
może zidentyfikować taśmę bez ładowania
jej do napędu. W niektórych przypadkach –
na przykład po ręcznej zmianie porządku
taśm w bibliotece – trzeba ponownie przypisać je do ich poprzednich miejsc. Kody kreskowe bardzo się wówczas przydają.
Katalogi
Kiedy program Bacula zachowuje plik na taśmie, zapisuje także informacje takie jak roz-
Bacula
miar pliku, jego atrybuty, sygnaturę, datę
ostatniej zmiany oraz czas utworzenia i położenie kopii zapasowej w bazie danych, zwanej katalogiem. Katalog ten jest trzecią główną zaletą, odróżniającą program Bacula od
amatorskich skryptów, umożliwia bowiem
odzyskiwanie pojedynczych plików bez odczytywania całego archiwum. Potrzebne dane można po prostu wybrać przez odwołanie
się do metadanych, zawierających informacje o położeniu danych plików na taśmie. Nie
ma potrzeby odczytywania po kolei zawartości całej taśmy – program może ustawić taśmę w odpowiednim położeniu (a przynajmniej na początku danego zadania). W katalogu przechowywana jest ponadto historia
wszystkich wykonanych archiwizacji.
Do zarządzania zadaniami wykorzystać
można dowolną popularną bazę SQL. Pakiet
zawiera skrypty konfiguracyjne dla PostgreSQL, MySQL i SQLite. Obsługa tych najpopularniejszych wariantów SQL umożliwia
tworzenie kopii zapasowych bazy danych i –
w razie gdyby doszło do najgorszego – pozwala na uzyskanie do nich ręcznego dostępu. Jednym z najpoważniejszych problemów
dotyczących zbiorów kopii zapasowych jest
utracony lub niespójny katalog. Aby złagodzić tego skutki, program zawiera skrypty,
które podczas wykonywania zadania zapisują
dany katalog w pliku ASCII. Jeżeli coś pójdzie nie tak, można przynajmniej łatwo odzyskać jego poprzednią wersję.
Katalog zapisanych plików można także
wykorzystać do prostego wykrywania obcej
ingerencji w stylu programów Tripwire czy
Aide. Dwie połączone funkcje, które można
uruchomić niezależnie od zadań zapisywania
lub odzyskiwania danych, służą do zbierania
metadanych, porównywanych potem z systemem plików. Pozwala to na wykrycie zmian
wprowadzonych przez nieupoważnione osoby lub programy.
Praca zespołowa
Oczywiście – kierownik bez personelu jest
nikim. W programie Bacula demon zarządzający kieruje dwiema grupami podwładnych: jednym lub więcej demonem magazynowania i wieloma demonami plików. Te
ostatnie działają po stronie klienta i wykorzystują sieć do dostarczania danych do ser-
SYSADMIN
wera magazynowania. Tam właśnie działa
demon magazynowania, obsługujący napęd
lub bibliotekę taśm. W razie potrzeby może
on także zapisywać kopie zapasowe na dysku
– przydaje się to w przypadku rozwiązań
krótko- i średniookresowych, zwłaszcza jeśli
wziąć pod uwagę gwałtownie spadające ceny
dysków twardych.
Demony plików dostępne są dla Linuksa,
większości uniksopodobnych systemów operacyjnych (np. Solaris, AIX, HPUX, FreeBSD, a nawet MacOS X) i wszystkich wersji
Windows. Likwiduje to w zasadzie konieczność wykorzystywania Samby czy NFS (oba
te systemy są jednak obsługiwane).
Wstecz marsz!
Odzyskiwanie danych jest odwróceniem procesu tworzenia kopii zapasowych. Po otrzymaniu wskazówek od demona zarządzającego, demon magazynowania wysyła odpowiednie pliki do demona plików, który następnie zapisuje je na komputerze klienta.
Pliki nie są zapisywane w miejscu, w którym
pierwotnie się znajdowały – w specjalnym
katalogu odtwarzane jest pełne drzewo syste-
Co dalej
Wśród służących do tworzenia kopii zapasowych systemów Open Source Bacula jest
zdecydowanie najbliżej profesjonalnych wymogów dużych systemów komputerowych.
W wielu przypadkach narzędzie sprawdza się
niewątpliwie w zastosowaniach profesjonalnych, lista życzeń dotycząca przyszłych wersji
zawiera jednak parę istotnych elementów:
■ Bezpieczeństwo Demon nie umożliwia
obecnie zapisywania kopii zapasowych w postaci zaszyfrowanej. Inaczej mówiąc, atakujący mógłby podsłuchiwać ruch w sieci lokalnej, aby uzyskać dostęp do archiwizowanych
danych. Stanowi to poważny problem w systemach, w których znajdują się informacje
o szczególnym znaczeniu, lub w przypadkach
świadczenia usług archiwizacyjnych przez
dostawców zewnętrznych. Problem ten
obejść można przez zestawienie połączenia
tunelowego SSH, służącego do szyfrowania
komunikacji między demonami plików i demonami magazynowania oraz między demonem plików a demonem zarządzającym.
W środowisku Windows warto byłoby również
dołączyć do programu moduł wykrywający
wirusy. Zagadnienia te znajdują się obecnie
w fazie planów.
■ Duże biblioteki Można wprawdzie uruchamiać jednocześnie wiele zadań tworzenia kopii zapasowych, nadal istnieje jednak potrze-
ba wydajniejszego przetwarzania równoległego. Demon plików nie może na przykład wykorzystywać zwielokrotnienia (multipleksingu)
do przekazywania danych do wielu demonów
magazynowania, choć znacznie zwiększyłoby
to szybkość przetwarzania dużych ilości danych. Program nie obsługuje obecnie pul napędów, które mogłyby statycznie przydzielać
określoną liczbę napędów do określonego zadania i umożliwiać temu zadaniu wybór dowolnego wolnego napędu z puli. Nie ma także możliwości dynamicznego przydzielania
nieaktywnych napędów do oczekujących zadań. Utrudnia to optymalne wykorzystanie bibliotek zawierających wiele napędów taśm.
■ GUI W chwili obecnej program praktycznie nie ma interfejsu graficznego. Są wprawdzie pewne jego zaczątki, nie wykraczają jednak poza proste menu tekstowe. Przydatne
byłyby na przykład przeglądarka plików,
umożliwiająca wybór plików poprzez interfejs
graficzny, albo kalendarz, ułatwiający ustalanie harmonogramów. Brak również asystenta konfiguracji, ułatwiającego pracę administratorom. Nie przeszkadza to doświadczonym guru uniksowym, ale dzisiejsi użytkownicy, mający problemy z korzystaniem z wiersza poleceń, wolą używać programów obsługiwanych w całości za pomocą myszy i wyposażonych w system pomocy.
WWW.LINUX-MAGAZINE.PL
■
Tworzenie kopii zapasowych online
Brak modułów umożliwiających archiwizowanie baz danych podczas pracy. Brak również narzędzi umożliwiających tworzenie kopii zapasowych aplikacji, korzystających
z otwartych plików i blokujących te pliki
przed dostępem innych programów lub
użytkowników. Częściowo rozwiązuje to demon zarządzający, pozwalając na uruchamianie – przed lub po wykonaniu zadania –
skryptów działających po stronie klienta
i serwera, co z kolei umożliwia zatrzymanie
i ponowne uruchomienie danej aplikacji.
Ponieważ zarówno zadania zapisu, jak i odzyskiwania mogą wykorzystywać jako źródło
lub miejsce docelowe zapisu danych kolejki
FIFO, da się obsługiwać dane pochodzące
z działających aplikacji bez konieczności
wykorzystywania obejścia w postaci pliku.
Jest to interesująca alternatywa, nie może
jednak zastąpić pełnego wykonania kopii
zapasowej online.
■ Dodatki Komercyjne oprogramowanie do
tworzenia kopii zapasowych oferuje użytkownikom wiele użytecznych dodatków, nieobecnych w programie Bacula. Umożliwiają one
na przykład klonowanie nośników w celu
zminimalizowania efektu błędów odczytu,
a także zawierają narzędzia służące do zarządzania wznawianiem przerwanych sesji.
NUMER 19 SIERPIEŃ - WRZESIEŃ 2005
75
SYSADMIN
Bacula
Bacula – zastosowania
praktyczne
Na początku 2004 r. działająca w Stuttgarcie
w Niemczech firma, zajmująca się dostarczaniem usług internetowych, poszukiwała zamiennika dla swojego dość przestarzałego
systemu tworzenia kopii zapasowych. Jednym
z głównych kandydatów był właśnie program
Bacula, konkurujący z kilkoma rozwiązaniami
komercyjnymi.
Tym, co przekonało firmę, oprócz oczywiście
znacznych oszczędności na opłatach licencyjnych, był fakt, że Bacula działa niezależnie od
strategii produktowych wszystkich producentów. Szukano także rozwiązania umożliwiającego odwoływanie się do wewnętrznego systemu rozliczeniowego i konfigurowanego
w sposób centralny.
Aby przekonać się w praktyce, jakie są możliwości programu, firma zdecydowała się na instalację pilotażową. W fazie tej przez trzy miesiące wykorzystywano program Bacula do sporządzania kopii zapasowych 32 systemów produkcyjnych; równolegle używano istniejących
rozwiązań służących do archiwizacji.
Po zakończeniu z sukcesem wstępnych testów z robotem taśmowym, jako nośnik kopii
zapasowych wybrano na połączenie napędu
LTO 1 i wielu twardych dysków. Ustalono
siedmiodniowy cykl tworzenia kopii zapasowych (jedna pełna archiwizacja i sześć archiwizacji przyrostowych) i czterotygodniowy
okres retencji (przechowywania zarchiwizowanych plików); po późniejszej ocenie bazy
danych katalogu administratorzy dostosowali
długość cyklu do potrzeb systemu.
Systemy wykorzystane w teście tworzyły kopie
zapasowe w sposób zwielokrotniony, korzystając z od 10 do 20 równoległych strumieni danych. W tym celu należało zwiększyć parametr
konfiguracyjny Maximum Concurrent Jobs
(maksymalna liczba równoległych zadań).
Wywarło to pozytywny wpływ na czas wykonywania różnicowych i przyrostowych kopii zapasowych; pozwoliło też zmniejszyć obciążenie
poszczególnych systemów. Wykonanie pełnej
kopii zapasowej (około 450 gigabajtów danych) zajmowało przeciętnie 19 godzin, zaś
wykonanie kopii różnicowej trwało 90, a przyrostowej – tylko 40 minut.
Pierwotnie wykorzystywana baza danych MySQL zdradzała podczas długich testów z dużą
ilością danych oznaki problemów z wydajnością – została więc później zastąpiona przez
PostgreSQL, co znacząco zwiększyło szybkość
odzyskiwania danych i możliwości ponownego wykorzystywania taśm.
Po paru tygodniach sprawdzono w praktyce
optymalną konfigurację. Wnioski z końcowych testów wykazały, że program Bacula
z łatwością spełnia stawiane mu wymagania
i że nic nie stoi na przeszkodzie, aby firma zainstalowała go w swoim centrum danych.
76
mu plików. Nazwę tego katalogu określić
można w konfiguracji zadania odzyskiwania
danych; system plików musi oczywiście dysponować wystarczającą ilością miejsca na
odzyskiwane zasoby. Domyślny katalog to
/tmp/bacula-restores>.
Można to ustawienie zmienić, wskazując jako miejsce zapisu odzyskiwanych plików katalog główny. Odzyskiwane pliki są wówczas zapisywane w katalogach, w których znajdowały
się pierwotnie. Uwaga: w programie Bacula
nie zaimplementowano żadnej strategii obsługiwania konfliktów. Jeżeli w docelowym katalogu istnieje już dany plik, nie zostanie on zabezpieczony lub zapisany pod inną nazwą, ale
po prostu nadpisany – może to być niezgodne
z zamiarami użytkownika.
Pliki do odzyskania wybierać można na
kilka sposobów. Wszystkie prowadzą do wirtualnego drzewa katalogów, w którym znajdują się wszystkie pliki zapisane na danej taśmie. Po drzewie poruszać się można za pomocą poleceń typowych dla systemów uniksowych (cd, ls, pwd itd.). Odpowiednie polecenia służą również do zaznaczania plików
i katalogów przeznaczonych do odzyskania
(tu znów przydałaby się możliwość wybierania ich poprzez interfejs graficzny).
Specjalną usługą jest możliwość połączenia w jednym widoku ostatniej pełnej kopii
zapasowej dla danego klienta z jej wszystkimi kopiami przyrostowymi. Można również
zawęzić zakres wyboru do wszystkich plików, których kopie utworzono przed określonym momentem lub po nim.
Najnowsze wersje systemu Knoppix [3]
zawierają już demona plików i konsolę systemu Bacula – program ten sprawdza się dzięki temu jako proste narzędzie służące do odzyskiwania danych w sytuacjach awaryjnych,
jeżeli tylko zapisujesz informacje o tablicach
partycji archiwizowanych dysków i przechowujesz na innym nośniku pliki ładowania
początkowego (bootstrap) programu Bacula.
Płyta odzyskiwania programu Bacula, w założeniu służąca do reanimowania systemu po
totalnej awarii, nie działa niestety z nowszymi jądrami Linuksa (2.6.x), mówi się jednak
o utworzeniu jej nowej wersji.
Przydzielanie zadań
Dostęp do konsoli programu Bacula zależy
od uprawnień do wykonywania; aplikacja
nie wymaga od użytkowników uwierzytelniania, nie obsługuje więc różnych poziomów
uprawnień. Można jednak skonfigurować
różne warianty konsoli, umożliwiając obsługę tylko określonych zadań, poleceń, zbio-
NUMER 19 SIERPIEŃ - WRZESIEŃ 2005
WWW.LINUX-MAGAZINE.PL
Rysunek 3: GConsole nie ma graficznego interfejsu użytkownika, ale oferuje przynajmniej
konsolę graficzną, która zawiera menu i nie
wymaga uruchamiania w oknie terminala.
rów plików (FileSets), pul nośników lub
urządzeń. Rozwiązanie to stanowi pewną formę zarządzania kontami użytkowników. Jego
funkcje nie są wprawdzie wystarczająco
szczegółowe, aby pozwolić użytkownikom na
odzyskiwanie swoich plików bez zgody administratora, możliwe jest jednak przydzielanie
zadań w ramach grupy administracyjnej.
W wielu przypadkach zezwolenie użytkownikom na odzyskiwanie danych okazałoby się
zbyt wielkim problemem, programu Bacula
nie da się bowiem obsługiwać za pomocą myszy. Narzędzia takie jak Wxconsole czy Gconsole mają kilka pozycji menu, dzięki czemu
nie trzeba zapamiętywać i wpisywać komend;
instrukcje, których nie da się wykonać w inny
sposób, można jednak nadal wpisywać w wierszu poleceń. Napisane w Javie narzędzie JBacula [4], będące odrębnym projektem, oferuje
szablony i podpowiedzi, ułatwiające konfigurację demona katalogów (Rysunek 2).
Podsumowanie
Administrator, który nie boi się korzystać
z wiersza poleceń, uzna najprawdopodobniej
program Bacula za bardzo użyteczny, wyjątkowo elastyczny i wyposażony w wiele profesjonalnych funkcji system służący do tworzenia kopii zapasowych. Program jest również
dobrze udokumentowany i łatwo go zintegrować z różnymi środowiskami. ■
INFO
[1] Strona programu Bacula:
http://www.bacula.org
[2] Program Mtx służący do zarządzania bibliotekami nośników: http://mtx.badtux.net
[3] Knoppix z programem Bacula:
http://www.knopper.net/knoppix/index-en.html
[4] JBacula: http://jbacula.sourceforge.net