Obczajamy idraca

Serwery Della, w tym mój R710, mają w obudowie miejsce na mały komputerek o nazwie iDRAC, czyli integrated Dell Remote Access Controller. Cóż to jest? Jest to działająca nieprzerwanie płytka elektroniki, podłączona do wszelkich możliwych sensorów wewnątrz urządzenia. Ma nawet własny interfejs sieciowy, dzięki czemu przeżyje wszystkie omyłkowe ifdowny, iptables -Fy, czy shutdowny. Potrafi mierzyć wszystko, co da się zmierzyć i zapisuje kilka przydatnych logów, w tym ostrzeżenia o nieautoryzowanym dostępie (na przykład ktoś wyjął i włożył dysk, kiedy komputer był wyłączony), próbach uruchomienia komputera z otwartą obudową, notatki serwisowe, czy informacje o poborze prądu.

Jestem pod dużym wrażeniem możliwości tego urządzenia, ale też zdaję sobie sprawę, że jest to system całkowicie zamknięty i właściwy tylko jednemu producentowi. Nie wątpię, że konkurencja nie ma… konkurencyjnych rozwiązań, ale dla mnie nic nie zastąpi standardowego lm_sensors, czy powertop. iDRAC jest jednak, że się tak wyrażę, bliżej metalu, niż czysto programowe rozwiązania, odwołujące się gdzieś poniżej do kernela.

Strona logowania idraca
Główna strona Idraca
Co tam ostatnio się działo?
Jakby się przez pomyłkę wyłączyło serwer…
Co ile węgla potrzebuje?
Wykres zużycia prądu.
Sprawdzenie wentylacji.

Test raida na PowerEdgu

Poweredge 710 w mojej wersji ma cztery klasyczne dyski po 450 gigabajtów każdy. Jako, że nie planuję używać go jako serwera plików, rozkład partycji zaplanowałem w taki sposób:

  • /dev/sda1 – boot
  • /dev/sda5 – /
  • /dev/sda6 – home
  • /dev/sdb1 – /var
  • /dev/sdb2 – /mnt/smietki

Co zostawia mnie z dwoma dyskami, na których będą się rodziły eksperymenty, oparte między innymi na TensorFlow, który zaczyna coraz bardziej mi się podobać. Dwa dyski dają już małe pole manewru z macierzą: RAID0 dający prędkość oraz RAID1 dający bezpieczeństwo danych. Bezpieczeństwem zajmie się mój zdalny serwer, więc sprawdźmy jaką prędkość możemy uzyskać.

Zacznę od utworzenia dwóch partycji: /dev/sdc1 oraz /dev/sdd1. Format nie jest bardzo istotny. Istotne za to jest, żeby miały dokładnie tę samą pojemność, więc w obydwu przypadkach pozostawiłem kilka wolnych megabajtów na końcu dysku. Dlaczego? Dyski, nawet tego samego  producenta, mogą się bardzo nieznacznie różnić ilością sektorów, ale z pewnością nie jest to więcej niż 1 megabajt. Potem wyczarujemy macierz dyskową:

mdadm -C /dev/md0 -l raid0 -n 2 /dev/sdc1 /dev/sdd1

Po kolei:

  • -C to create, po którym mamy nazwę nowego urządzenia jako plik w /dev,
  • -l to typ raida, w tym przypadku raid0 dzielący dane na dostępne partycje,
  • -n oznacza ilość partycji, jakie mamy do dyspozycji (u mnie są dwie),
  • na koniec wpisujemy partycje, które chcemy poświęcić na macierz.

Mamy już nasz plik /dev/md0, ale do macierzy pozostało jeszcze kilka komend. Przede wszystkim musimy sprawić, żeby zmiany przetrwały ponowne uruchomienie maszyny:

mdadm --detail --scan --verbose > /etc/mdadm.conf

sformatować md0:

mkfs -t ext4 /dev/md0

oraz umożliwić jej wygodne montowanie, dopisując nową linijkę do /etc/fstab:

# macierz raid0
/dev/md0 /mnt/labolatorium ext4 defaults 0 2

Pozostało utworzenie katalogu zwanego punktem montowania oraz katalogu do zapisu moich rzeczy:

mkdir /mnt/labolatorium
mount /mnt/labolatorium
mkdir /mnt/labolatorium/piwnica
chown -R lukasz:lukasz /mnt/labolatorium/piwnica

Mamy już naszego raida, ale jak sprawdzić, czy cokolwiek daje? Z pomocą przychodzi nam dd oraz /dev/zero, dzięki którym utworzymy plik zawierający bardzo, bardzo dużo zer:

sudo dd if=/dev/zero of=/var/pamietnik.img bs=1024k count=256k
.262144+0 records in
262144+0 records out
274877906944 bytes (275 GB) copied, 1452.91 s, 189 MB/s

A teraz to samo na naszej macierzy:

sudo dd if=/dev/zero of=/mnt/labolatorium/piwnica/pamietnik.img bs=1024k count=256k
262144+0 records in
262144+0 records out
274877906944 bytes (275 GB) copied, 756.533 s, 363 MB/s

Nie jest to może zawrotna prędkość, biorąc pod uwagę możliwości dysków SSD, ale nie wydając ani złotówki prawie podwoiłem prędkość zapisu. Mi pasuje. Teraz możecie zwrócić uwagę, że PowerEdge ma sprzętowy RAID, który potencjalnie mógłby dawać lepsze wyniki. Ano ma, ale w przypadku padu serwera (o ile nie kupię tego samego) stracę te dane. Macierz programową utworzoną przez mdadm mogę odtworzyć na jakimkolwiek innym sprzęcie.

Walka z DSU #3

Wydaje mi się, że serwer został oficjalnie zaktualizowany, przynajmniej dopóki nie znajdę w miarę nowej wersji BIOS,  na której to ustrojstwo będzie działać. Dostałem przy okazji kolejną lekcję pod tytułem „Nie włączaj UEFI, gdyż prawie na pewno jest spaprane”. Nie inaczej jest tym razem. Wszystkie narzędzia, jakie proponuje ładny, klikalny UEFI, są dostępne z poziomu skrótów klawiaturowych podczas uruchamiania komputera i są na nich lepsze. Potrzebuję zrobić RAID? crtl+s w odpowiednim momencie i uruchamia się program tylko i wyłącznie dla raida. Działa lepiej, szybciej i ma funkcję (poważnie) usuwania macierzy, której to brakuje w UEFI. Na dobrą sprawę jedynymi przydanymi opcjami są ustawienia BIOSu, które można tam ustawić w formie klikalnych okienek oraz program diagnostyczny, który jednak wygląda jak aplikacja dla Windows 3.11 i dubluje się nieco z iDRACiem.

Nie mówiąc o tym, że sam UEFI nie uruchamia się w ogóle po zaktualizowaniu wszystkiego (oprócz jeszcze BIOSu) ze stosownej płytki DVD. Tęsknić nie będę. Poświęciłem sporo czasu na zlokalizowanie problemu i może to być niezgodna wersja BIOSu, może być flara na Słońcu. Doszedłem do wniosku, że działa i nie ruszam. Trochę mnie kusi sprzętowa macierz dyskowa, ale programowa nie będzie bardzo odstawać i procesory nawet nie poczją różnicy.

Walka z DSU #2

Martwiłem się trochę kilkoma nieudanymi aktualizacjami i pomocna okazała się płyta DVD. Cały ich zestaw znajduje się na stronie pomocy technicznej Della i są naprawde poręczne. Uruchamiamy z jednej z nich serwer, ukazuje się linuksowy wiersz poleceń i bashowy skrypt próbuje zainstalować ponad setkę zmieszczonych na płycie aktualizacji… z różnym skutkiem, bo nie wszystkie są przeznaczone akurat dla naszej płyty głównej, czy zainstalowanych w komputerze kart rozszerzeń. Całość jest w 100% automatyczna.

Niestety, sprawa BIOSu utknęła w martwym punkcie. Z niepodanych w dokumentacji powodów skrypt wyświetla błąd o zbyt małej ilości pamięci ram. No przepraszam, że jest tylko 64 giga, postaram się dokupić tak do 192. Żart. Tak naprawdę doczytałem na różnych forach, że aktualizacja o cztery wersje jednocześnie się nie udaje i powinienem aktualizować stopniowo: do wersji trzeciej, czwartej, piętej i szóstej. Mam nadzieję, że będzie mi się chciało i nowsza wersja będzie tego warta. Aktualizacja ta jest oznaczona tylko jako zalecana, więc może spokojnie poczekać.

I dla zdziwionych, że używam płyty. Można uruchomić komputer z pendrajwa, w środku obudowy jest nawet port usb, gdzie można podłączyć pamięć z systemem operacyjnym. Mam słabość do płyt. Instalowałem swoje pierwsze Linuksy z pokaźnych rozmiarów zestawów płyt CD, trudno mi się od nich odzwyczaić i lubię to uczucie, kiedy wkładam do szufladki płytkę z czymś nowym.

Walka z DSU #1

Dzisiaj spróbowałem zaktualizować BIOS na PowerEdge. Dell ma repozytorium dla RHEL, więc po ściągnięciu Bashowego skryptu, który należy uruchomić jako root (tak to się widać robi w branży), który dodaje pliki do /etc/yum.repos.d/ oraz odpowiednie certyfikaty można zainstalować pakiet dell-system-update. Program generalnie działa, ale jest 32-bitowy i wymaga pakietów compat-libstdc++-33.i686 libstdc++.i686 libxml2.i686, których nie ma w zależnościach, więc odpowiedni błąd pojawia się dopiero podczas próby aktualizacji firmware.

Pierwsze, co robimy to sprawdzenie wersji na naszej maszynie i przy okazji mała kontrola, czy program działa prawidłowo:
$ sudo dsu --inventory
[sudo] password for lukasz:
DELL EMC System Update 1.5.2
Copyright (C) 2014 DELL EMC Proprietary.
Verifying catalog installation ...
Installing catalog from repository ...
Fetching dsucatalog ...
Reading the catalog ...
Verifying inventory collector installation ...
Getting System Inventory ...
warning: Inventory collector returned with partial failure.
1. OpenManage Server Administrator ( Version : 9.1.0 )
2. BIOS ( Version : 2.0.13 )
3. Dell Lifecycle Controller ( Version : 1.6.5.12 )
4. Dell 32 Bit Diagnostics, v.5130A0, 5130.1 ( Version : 5130A0 )
5. iDRAC6 ( Version : 1.41 )
6. Firmware for - Disk 1 in Backplane 0 of SAS6IR Controller 0 ( Version : NA02 )
7. SAS6IR Controller 0 Firmware ( Version : 00.25.47.00.06.22.03.00 )
8. SAS/SATA Backplane 0:0 Backplane Firmware ( Version : 1.07 )
9. Inventory Collector ( Version : 17.12.00 )
Exiting DSU!

Jeżeli widzisz taki wynik, jest dobrze. Ja mam leciwe wersje wszystkiego poza samym DSU, ale działa. Jeżeli mamy trochę starszy sprzęt, dostaniemy stosowne Platform not supported. Dell System Update jest bowiem jednym z tych upierdliwych, binarnych blobów na naszym pięknym Linuksie, które trzeba czasami ręcznie przekonać do działania: doinstalować zależności, przeszukiwać niestandardowe pliki z logami, listy dyskusyjne i wszelakie fora, gdyż dokumentacja jest nader skąpa.

Zastanawiam się nawet czy po aktualizacji nie zrezygnować z kilku DELLowych ułatwiaczy, monitoringu i nawet sprzętowego RAIDa. Procesory nawet nie poczują, że mdadm coś ich czasem potrzebuje, a brak bateryjki zabezpieczającej dane w przypadku utraty zasilania jakoś przeboleję. Mamy dstat, top, df, free i inne ciekawe narzędzia ogólnego przeznaczenia, które zawsze bardziej mi odpowiadają, niż binarki obsługujące sprzęt tylko jednego producenta. Tylko iDRACiem się zainteresuję, tak z samej ciekawości. Jest to mały komputerek z tyłu maszyny, ze swoim własnym portem ethernetowym, który wyświetla ładne podsumowanie stanu systemu jako plik html. Napiszę o nim, gdy tylko uda mi się go uruchomić.