Linux kameleon

Nie ma takiego zastosowania, takiej aplikacji, takiej firmy, w której Linux by się nie sprawdził. Dzięki elastyczności, możliwości kształtowania go niemal tak, jak kształtuje się plastelinę, Linux pasuje dosłownie wszędzie.

Nie ma takiego zastosowania, takiej aplikacji, takiej firmy, w której Linux by się nie sprawdził. Dzięki elastyczności, możliwości kształtowania go niemal tak, jak kształtuje się plastelinę, Linux pasuje dosłownie wszędzie.

Gdy wcale nie tak dawno Microsoft zaoferował swój pierwszy system operacyjny z rodziny NT, kąśliwym komentarzom nie było końca. Patrząc na swój większościowy udział w rynku Novell nie miał specjalnych powodów do obaw, zaś producenci systemów Unix w ogóle nie czuli się zagrożeni. Jednak ci, którzy kazali Microsoftowi wracać do jego DOS-u już wkrótce mieli się mieć z pyszna. Nie zauważyli znaku czasu. Nie pojęli w porę, że, jak mówią Amerykanie, "świat już nigdy nie będzie taki sam".

Kiedy Linux zaczął przenikać do firm jako hobby administratorów, a wkrótce później stał się domyślną platformą dla serwera Apache, reakcje były podobne. Tyle, że tym razem głównym "oficjalnie niedowierzającym" był Microsoft. Producenci systemów Unix, nauczeni przykładem Windows NT, nie popełnili jednak błędu po raz drugi. Początkowo niezdecydowani, stosunkowo szybko doszli do wniosku, że Linux jako system wywodzący się z tradycji uniksowych może być ich sprzymierzeńcem w walce z Microsoftem.

Dzięki wysiłkowi tysięcy pasjonatów, którzy w wolnych chwilach dodawali do systemu nowe funkcje, potrzebne zresztą często przede wszystkim im samym, zrazu ograniczony funkcjonalnie Linux szybko zyskał funkcjonalność zbliżoną do komercyjnych odmian systemów Unix. Dostawcom tych ostatnich nie pozostało więc nic innego, jak wspierać jego rozwój, licząc się z tym, że kiedyś, w przyszłości, zastąpi on ich własne systemy.

Faszerowany przez kilka ostatnich lat kodem wywodzącym się z produktów komercyjnych Linux jest dziś systemem w dużej mierze dojrzałym, a przy tym otwartym i znacznie bardziej elastycznym niż jakikolwiek inny system operacyjny. Stabilność, dostępność, wydajność, skalowalność i bezpieczeństwo - oto czego biznes oczekuje od informatyki. Wszystko to - i wiele więcej - można znaleźć w Linuksie.

Wydajność

Jedną z cech Linuksa, która niewątpliwie przyczyniła się do jego popularyzacji jest jego wyjątkowa wydajność. Dobre osiągi Linuksa mają wiele źródeł. Pierwszym i najważniejszym jest możliwość optymalizacji systemu do konkretnego modelu i wersji procesora i chipsetu - nie tylko jądra, lecz także bibliotek systemowych i aplikacji.

Aby zrozumieć, dlaczego kompilacja z odpowiednimi parametrami ma znaczenie dla wydajności wystarczy rzut oka na procesory Intela. Kolejne modele nawet w ramach tej samej linii różnią się wielkością pamięci buforowej (od 128 KB w Celeronie do 2 MB w Xeonach), zestawem obsługiwanych instrukcji (multimedia, HyperThreading), obsługą kolejkowania strumieni danych i instrukcji (pipelining) itd. Każda z tych cech zestawiona z pozostałymi daje łącznie inne możliwości i wymaga innego współdziałania poszczególnych elementów systemu.

Tak dalece posuniętych możliwości optymalizacji nie oferuje żaden inny system. Użytkownik Linuxa nie jest przy tym skazany na samodzielne kompilowanie kodu źródłowego - wszystkie popularniejsze dystrybucje dostępne są w formie już skompilowanych binariów dla poszczególnych wersji CPU - oczywiście nie tylko Intela.

Drugim ważnym czynnikiem wpływającym na wydajność Linuksa jest możliwość dobrania odpowiedniego systemu plików do aplikacji. Standardowo dołączany do dystrybucji system plików z księgowaniem ext3 jest wydajny w większości zastosowań. Ten uniwersalny system plików można jednak, w zależności od potrzeb zastąpić systemem wydajniejszym z punktu widzenia określonych zastosowań.

Istnieją systemy plików do Linuksa, które są algorytmicznie przystosowane do obsługi struktur z tysiącami katalogów (np. na potrzeby serwera pocztowego). Są też systemy przeznaczone do szybkiego wyszukiwania informacji w dużych plikach (bazy danych). Oczywiście, są także systemy plików, gdzie priorytetem nie jest szybkość, lecz przede wszystkim bezpieczeństwo (JFS, ReiserFS). To właśnie dzięki szybkim i bezpiecznym systemom plików Linux skutecznie zastępuje Windows NT/2000 jako serwer plików w sieciach LAN (pakiet Samba). O wydajności implementacji protokołu TCP/IP w Linuxie napisano już opasłe tomy. To właśnie sprawność obsługi wywołań sieciowych systemu sprawia, że zestaw Linux-Apache-MySQL od dawna jest najchętniej wybieraną platformą dla aplikacji WWW. Wydajność Linuksa ma także związek z odziedziczonym z Uniksa efektywnym zarządzaniem pamięcią, w szczególności zaś z buforowaniem możliwie jak największej porcji danych w pamięci RAM.

Bezpieczeństwo

Jednym z powodów dla których Linux jest uważany za system bezpieczniejszy od innych jest kolaboracyjny model rozwoju zarówno samego systemu, jak i większości oprogramowania działającego w jego środowisku. Można mieć do twórców otwartego kodu pretensje o bardzo umowne traktowanie terminów udostępniania nowych wersji, nie można im jednak zarzucić zaniedbań w dziedzinie przeglądania kodu. Im więcej oczu przejrzy kod tym większe jest prawdopodobieństwo wykrycia istotnego błędu bądź luki. Poza tym, z punktu widzenia jakości kodu źródłowego, która przekłada się na bezpieczeństwo, dyscyplinujący jest już sam fakt upublicznienia efektów pracy programisty. Pisać niedbale zwyczajnie nie wypada - kto nie przestrzega ustalonych reguł naraża się na ostracyzm.

Bezpieczeństwo Linuksa wynika wprost z jego modularności. Chcąc wykorzystać Linuksa jako platformę dla serwera pocztowego instaluje się jądro systemu, niezbędne biblioteki i wybrane komponenty aplikacji pocztowej. Nic ponadto, co najwyżej skaner antywirusowy czy antyspamowy lub filtr pakietów (firewall). Podobnie będzie z systemem plików, serwerem WWW itd. Im mniej usług działa na serwerze, tym mniejsze jest prawdopodobieństwo powstania wyłomu w bezpieczeństwie środowiska sieciowego, np. na skutek wykrycia luki w jakimś module. Zamiast instalować i wyłączać łatwiej jest nie instalować w ogóle. Linux umożliwia precyzyjne określenie tego, co znajdzie się w systemie i jak będzie działać i to zdecydowanie odróżnia go od większości systemów komercyjnych.

Klarowny podział systemu na warstwy logiczne (powłoki) ułatwia także precyzyjne definiowanie uprawnień użytkowników i procesów, co w efekcie utrudnia przejęcie kontroli nad systemem przez nieuprawnionego użytkownika bądź program. Linuksa można ponadto doposażyć w funkcje szyfrowania systemu plików, a nawet kontrolę uprawnień na poziomie komunikacji między wątkami (NSA Linux).

Na każdym systemie Linuks można uruchomić zaawansowany filtr pakietów. Darmowe rozwiązanie o niepozornie brzmiącej nazwie iptables to w rzeczywistości potężne narzędzie, którego funkcjonalność i wydajność dorównuje wiodącym produktom komercyjnym, jak np. Firewall-1 firmy Check Point.

Stabilność i dostępność

O stabilności Linuksa najłatwiej przekonać się, instalując na nim jeden z popularnych serwerów poczty elektronicznej, np. Qmail. Na świecie działa wiele instalacji, które działają kilka lat bez jednej choćby awarii. O tym, że Linux jest systemem stabilnym przekonany jest Bank Spółdzielczy w Gryficach, informatycy warszawskiej firmy Egis Polska oraz wydawnictwo Edipresse wykorzystujące system SAP R/3 na platformie Linux. System ten służy tam nie tylko jako operacyjny dla terminali użytkowników, ale także jako platforma dla centralnego systemu transakcyjnego. Od wdrożenia minęło już ponad 8 miesięcy i w tym czasie system ani razu nie odmówił posłuszeństwa.

Lepszych referencji nie trzeba.

Interfejs administracyjny Linuksa i większości jego aplikacji sprowadza się do linii poleceń. Oczywiście są rozwiązania graficzne z interfejsem WWW czy też bardziej interaktywne wykorzystujące Javę, mimo to jednak CLI (Command Line Interface) wciąż trzyma się mocno. Nie jest to kwestia snobizmu administratorów, lecz rezultat zaobserwowanych prawidłowości. Komponenty odpowiedzialne za wyświetlanie grafiki zaburzają stabilność środowiska serwerowego. Na marginesie: wielu administratorów systemów Windows NT i 2000 twierdzi, że są to systemy bardzo stabilne, dopóki nie uruchomią się komponenty odpowiedzialne za grafikę.

Wysoka niezawodność Linuksa sama w sobie stanowi o wysokiej dostępności działających na nim aplikacji. Te możliwości można jeszcze zwiększyć przez budowę klastrów HA, równoważenie obciążenia między serwerami działającymi w farmie oraz wirtualizację. W pierwszym i drugim przypadku użytkownicy mają do dyspozycji co najmniej kilka sprawdzonych rozwiązań komercyjnych przeniesionych do Linuksa z systemów z najwyższej półki (m.in. autorstwa HP, IBM i Oracle), kilka rozwiązań komercyjnych "mniejszego formatu", choć całkiem atrakcyjnych (m.in. Evolocity/ClusterWorks, LifeKeeper, Piranha, TurboCluster) oraz rozwiązania stricte open source (C-JDBC, GNU Queue, Linux Virtual Server). Oddzielną klasę rozwiązań stanowią klastry obliczeniowe (Beowulf, POSIX).

Linux sprawdził się świetnie jako środowisko wirtualne. Po pierwsze, w Linuksie można uruchomić oprogramowanie VMware, w którym równolegle mogą działać niezależnie od siebie różne systemy operacyjne. Po drugie, Linux sam może działać w środowiskach wirtualnych, nie tylko na oprogramowaniu VMware, ale także na najwyższej klasy serwerach. To dzięki temu właśnie dostawcy Internetu są w stanie oferować nie tylko wirtualne serwery WWW, ale wirtualne serwery z prawami administratora!

Skalowalność i przenośność

Skalowalność Linuksa na serwerach SMP nie powinna budzić jakichkolwiek zastrzeżeń. Jądro w wersji 2.4 pozwalało na efektywną pracę systemu na serwerach wyposażonych w 8 procesorów. Najnowsze jądra z serii 2.6 pozwalają na bezpieczne i wydajne (w miarę liniowe) skalowanie Linuksa nawet do 16 procesorów, w tym również działających w architekturze NUMA. W polskich warunkach bezproblemowa skalowalność do 4 procesorów powinna być gwarantem bezpieczeństwa inwestycji - zwłaszcza przy bogactwie opcji związanych z klastrowaniem i równoważeniem obciążenia.

Trudno jest rozpatrywać skalowalność Linuksa w oderwaniu od jego przenośności. Dzięki modularności jądra systemu można go dostosowywać do pracy na dowolnym sprzęcie - od procesorów przemysłowych i sieciowych, przez komputery naręczne i biurkowe z dowolnymi klonami x86, aż po wszystkie platformy RISC i wiele procesorów niestandardowych. Aplikację uruchamianą na jednoprocesorowym serwerze PC można bez zmian w kodzie uruchomić na 16-procesorowym serwerze Sun Microsystems lub Silicon Graphics.

Linux świetnie da sobie radę zarówno na serwerach Xserve firmy Apple Computer wykorzystujących procesory PowerPC jak i najświeższych serwerach z układami AMD. Gdy dodamy do tego skalowalne same z siebie serwery aplikacji Java, wirtualizację, równoważenie obciążenia pomiędzy farmy serwerów, skalowalność Linuksa wydaje się nieograniczona.

Otwartość

Dokumentacji Linuksa nie trzeba wydzierać od dostawcy siłą. To samo dotyczy bardzo często, choć nie zawsze, także aplikacji. Kod źródłowy gwarantuje, że w razie rozstania z utrzymaniem systemu/aplikacji nie będzie większych kłopotów. Z dokumentacją w języku zrozumiałym dla zwykłych śmiertelników również nie ma problemów - środowisko open source dba zwykle, by projekty były dokumentowane - choćby w formie zrozumiałych komentarzy w kodzie źródłowym. Ponieważ Linux wywodzi się z tradycji Uniksa, nie obce są mu otwarte standardy komunikacji i protokoły, otwarte, jawne formaty plików, otwarte interfejsy programistyczne itd.


Zobacz również