-ENOTTY

Szef kuchni poleca: Beefy Miracle t-shirts O mnie Planeta !apcoh Social

systemd: Jolu, pokaż Panom cel (08 marca 2012, 11:16:38)

Jak pisałem dwa lata temu, systemd pozbywa się pojęcia runleveli, dając w zamian cele. Cel jest swego rodzaju punktem synchronizacji, w którym system zapewnia określoną funkcjonalność. Zależności między celami, tak jak między innymi jednostkami, nie są liniowe:

Otwórzmy powyższy obrazek i zastanówmy, co ja pacze?

Na początek legenda. Czarna strzałka oznacza, że wskazywany cel jest wymagany przez wskazujący (Requires=). Zielona wskazuje na kolejność, wskazywany musi się aktywować do końca, zanim systemd przejdzie do wskazywanego (After=). Czerwona oznacza konflikt (Conflicts=). Jak widać shutdown.target konfliktuje ze wszystkich, czyli aktywacja shutdownu powoduje zwinięcie wszystkich innych celi.

Jak widać w górnej-lewej części obrazka: nss-lookup.target nie wymaga network.target. Jeśli jednak z jakiegoś powodu network.target zostanie aktywowany, to nss-lookup.target wykona się po nim — zielona strzałka.

Przy systemd nie można za bardzo powiedzieć o kolejności przy starcie systemu. Tutaj wybiera się docelowy stan systemu i osiąga go poprzez przywołanie wszystkich zależności. Analizę co się dzieje łatwiej jednak prowadzić od końca.

Załóżmy więc, że system ma działać w trybie graficznym. Celem jest więc graphical.target, który z grubsza można porównać z runlevelem 2. w debianowatych. 4. w Slackware, 5. w starych redhatowych, SUSE i Archu — umożliwia logowanie użytkowników w trybie graficznym.

Jako pierwsze aktywowane zostaną wymagania sysinit.target (A special target unit covering early boot-up scripts). Ten zaciąga przestrzenie wymiany (swap.target), lokalne systemy plików (local-fs.target), w tym również szyfrowane z pytaniem o hasło, jeśli potrzeba (cryptsetup.target). Aktywacje tej trójki odbywają się równolegle. Kiedy zakończą się aktywacje i wystartowane zostaną usługi dla tego celu, sysinit.target zostaje osiągnięty.

Umożliwia to przejście do basic.target. Zadaniem tego jest dodatkowo uruchomienie wszystkich gniazd, na których słucha systemd (sockets.target). System w tym stanie może przejść do trybu ratunkowego (rescue.target) który daje powłokę odzyskiwania systemu. Przypominając: mamy zamountowane lokalne systemy plików, włączony swap i zainicjowane podstawowe mechanizmy dystrybucji. Taki runlevel 1.
Tu warto wspomnieć o trybie awaryjnym emergency.target. Jest to absolutnie minimalny stan, w którym można próbować naprawić całkowicie zepsuty system. Odpowiada niemal uruchomieniu jądra z parametrem init=/bin/sh, daje jednak możliwość kontynuacji normalnego uruchamiania po naprawie.

Stąd system może przejść również multi-user.target. Jest to podstawowy stan linuksa — działają prawie wszystkie demony, użytkownicy moga logować się na konsolach (dzięki zaciągnięciu getty.target). Pachnie jak runlevel 3. multi-user.target nie wymaga trybu ratunkowego, ale jeśli takowy był uruchomiony, to musi skończyć się wykonywać przed przejściem w m-u.target — zielona strzałka.

Z aktywnego multi-user.target już tylko krok do uruchomienia graficznego zarządcy logowania i osiągnięcia zadanego graphical.target.

Większość z tych etapów opisana jest na stronie manuala systemd.special.

Skąd brany jest cel przy starcie systemu? Zazwyczaj wskazuje go łącze symboliczne: /usr/lib/systemd/system/default.target -> graphical.target. Administrator może je przesłonić podając w linii poleceń jądra frazę systemd.unit=.

Cele są punktami, do których przypisujemy usługi do uruchomienia w obecnym stanie. Weźmy np. wiszące luzem na obrazku cele po prawej stronie. Taki bluetooth.target aktywowany jest przez pojawienie się urządzenia obsługującego BT:

/usr/lib/udev/rules.d/99-systemd.rules:SUBSYSTEM=="bluetooth", TAG+="systemd", ENV{SYSTEMD_WANTS}="bluetooth.target"

i powoduje wystartowanie odpowiedniej usługi:

/etc/systemd/system/bluetooth.target.wants/bluetooth.service.

Podobnie można np. przywiesić usługi do wystartowanie w związku z kartą dźwiękową do sound.target.

Nie należy zapominać, że start to tylko jeden z etapów życia systemu. Wdzięczny do omówienia, gdyż powoduje kaskadę aktywacji różnych celi. W normalnym użytkowaniu jest to jednak bardzo specyficzna sytuacja i nie należy się na niej skupiać w celach innych niż akademickie.

Obrazek wygenerowany grepem z systemctl dot.

Dodaj komentarz | Trackback

Haczyki przy upgrade do 64 bitów (09 lutego 2012, 10:29:07)

Dekadę po wprowadzeniu architektury AMD64 przerobiłem w końcu ostatnią z moich maszyn na dystrybucję 64-bitową. Sprzęt był capable od dawna, ale jego wymiana odbyła się metodą transplantacji dysków ze starego komputera i nie było kiedy zmienić softu.

Procedura jest prosta. Instalujemy kernel 64 bitowy, uruchamiany z niego system z 32-bitowym userlandem i reinstalujemy wszystkie pakiety po kolei w wersjach x86_64. Userland 32 na jądrze 64 działa sprawnie nawet na x86, ale trzeba mieć na uwadze trzy drobiazgi:

Automount ma rozbieżne wielkości strukturki danych między 32 a 64 bity. Owocuje to zawieszeniem w czasie uruchamiania systemu 32 bit na jądrze 64 bit. Pamiętać należy o wyłączeniu automountów przed takim bootem.

RRD nie lubi baz stworzonych na innej architekturze. Tu warto zrobić rrdtool dump do xml na 32 bitach, a po upgradzie rrdtool restore.

PostgreSQL też nie lubi plików baz danych utworzonych na innej architekturze. Podobnie jak z RRD, najpierw pg_dumpall, a po upgradzie initdb i psql -f dump.sql.

Inny soft na razie problemów nie wykazuje. Zapomnienie o zrzutach może zawocować drapaniem się w głowę podczas poszukiwania jakieś jeszcze działającej 32 bitowej instalacji, żeby dokonać ich post factum. Ale na szczęście wystarcza pendrive USB z zainstalowaną 32 bitową instalacją i katalogi baz danych wyeksportowane przez NFS.

6 komentarzy | Trackback

W którą stronę ewoluuje konfigurowanie Linuksa... (16 stycznia 2012, 21:41:36)

Ostatnio przemigrowałem z tgt na nowy, lepszy, wbudowany w jądro LIO. Chodzi o cel SCSI. Po robocie odsunąłem się od monitorów, spojrzałem na stary config, spojrzałem na nowy i naszła mnie refleksja.

Czy przejście z takiego sposobu konfigurowania:

vendor_id UTC FS Support
product_id Linux iSCSI

# Set the driver. If not specified, defaults to "iscsi".

default-driver iscsi

<target iqn.2010-08.com.fs.utc:dvdtmp>
        backing-store /dev/mapper/sabretoothvg-iscsi.dvdtmp
</target>

<target iqn.2010-08.com.utc.fs:winxppp45client-stor1>
        backing-store /dev/sabretoothvg/iscsi.winxppp45client-stor1
</target>

<target iqn.2011-02.com.utc.fs:esxi.local-space0>
        backing-store /dev/sabretoothvg/iscsi.esxi.local-space0
</target>

<target iqn.2011-02.com.utc.fs:fcoe.test0>
       backing-store /dev/mapper/sabretoothvg-fcoe.test0
       allow-in-use yes
</target>
na taki (uwaga, ściana tekstu):
#### Parameters for TCM subsystem plugin storage object reference
python /usr/lib/python2.6/site-packages/rtsadmin/tcm_node.py --establishdev iblock_0/iblock0 /dev/sabretoothvg/fcoe.test0
python /usr/lib/python2.6/site-packages/rtsadmin/tcm_node.py --setunitserialwithmd iblock_0/iblock0 72ad13f0-c8d2-4d96-bffe-30f9cfc46f2f
#### Parameters for TCM subsystem plugin storage object reference
python /usr/lib/python2.6/site-packages/rtsadmin/tcm_node.py --establishdev iblock_1/gilbertus.swap /dev/sabretoothvg/iscsi.gilbertus.swap
python /usr/lib/python2.6/site-packages/rtsadmin/tcm_node.py --setunitserialwithmd iblock_1/gilbertus.swap 7e05140f-6536-4813-a1a0-d9fdc3b7bca8
#### Parameters for TCM subsystem plugin storage object reference
python /usr/lib/python2.6/site-packages/rtsadmin/tcm_node.py --establishdev iblock_3/esxi.local-space0 /dev/sabretoothvg/iscsi.esxi.local-space0
python /usr/lib/python2.6/site-packages/rtsadmin/tcm_node.py --setunitserialwithmd iblock_3/esxi.local-space0 5bcaffac-6da0-42b0-ad07-fe130609674
#### iSCSI Target Ports
mkdir -p /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.sabretooth.x8664:sn.aeee2b8d6fdd/tpgt_1/lun/lun_0
ln -s /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.sabretooth.x8664:sn.aeee2b8d6fdd/tpgt_1/lun/lun_0/../../../../../../target/core/iblock_0/iblock0 /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.sabretooth.x8664:sn.aeee2b8d6fdd/tpgt_1/lun/lun_0/6efd3cb027
lio_node --aluasecmd iqn.2003-01.org.linux-iscsi.sabretooth.x8664:sn.aeee2b8d6fdd 1 0
mkdir -p /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.sabretooth.x8664:sn.aeee2b8d6fdd/tpgt_1/lun/lun_1
ln -s /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.sabretooth.x8664:sn.aeee2b8d6fdd/tpgt_1/lun/lun_1/../../../../../../target/core/iblock_4/winxppp45client-stor1 /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.sabretooth.x8664:sn.aeee2b8d6fdd/tpgt_1/lun/lun_1/1d6312ea35
lio_node --aluasecmd iqn.2003-01.org.linux-iscsi.sabretooth.x8664:sn.aeee2b8d6fdd 1 1
#### iSCSI Initiator ACLs for iSCSI Target Portal Group
mkdir -p /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.sabretooth.x8664:sn.aeee2b8d6fdd/tpgt_1/acls/iqn.1994-05.com.fedora:5f21153a55f
echo 16 > /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.sabretooth.x8664:sn.aeee2b8d6fdd/tpgt_1/acls/iqn.1994-05.com.fedora:5f21153a55f/cmdsn_depth
mkdir /sys/kernel/config/target/fc
#### fc Target Ports
mkdir -p /sys/kernel/config/target/fc/20:00:00:23:ae:b2:f4:3b/tpgt_1/lun/lun_0
ln -s /sys/kernel/config/target/fc/20:00:00:23:ae:b2:f4:3b/tpgt_1/lun/lun_0/../../../../../../target/core/iblock_0/iblock0 /sys/kernel/config/target/fc/20:00:00:23:ae:b2:f4:3b/tpgt_1/lun/lun_0/b522dc7322
to naprawdę jakiś postęp? Powyżej to drobny fragment, całość ,,nowości'' ma prawie pół tysiąca linii i postać skryptu, który odtwarza ustawienia przez wykonanie wszystkich katalogów i dowiązań symbolicznych.

Do LIO dostępny jest targetcli, będący tak naprawdę kolorową nakładką na mkdir, ln i touch. Ja rozumiem, że wszystko jest plikiem, ale naprawdę zajęło mi pół godziny wpadnięcie na intuicyjny sposób określenia IP, na który jądro ma słuchać. (Tym sposobem jest utworzenie katalogu, dokładniej mkdir -p /sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.sabretooth.x8664:sn.aeee2b8d6fdd/tpgt_1/np/192.168.6.9:3260).

Plik konfiguracyjny jest dla mnie czymś solidnym. Skrypt zastępujący go setkami poleceniem powłoki sprawia wrażenie sznurka i taśmy klejącej.

UPDATE: Ktoś jednak stwierdził, że lepsze będzie trzymanie konfiguracji w JSON. No cóż, ma szansę sprawdzić się lepiej niż skrypt shellowy.

4 komentarze | Trackback

systemd: stadko zamieniających Uniksa demonów (04 sierpnia 2011, 15:54:24)

Czytając o systemd można czasem przeoczyć większą wizję. Celem nie jest jedynie napisanie kolejnego zastępcy inita. To tylko element całości, którą jest zdefiniowanie (również poprzez stworzenie) platformy Linuksowej. Ostatecznie będzie można powiedzieć, że ,,w Linuksie''

  • jest ustawiona nazwa hosta
  • listę zalogowanych użytkowników uzyskujemy przez systemd-loginctl list-sessions
  • startujemy usługi na żądanie tworząc definicje .socket
  • usługi potrzebujące haseł korzystają ze zdefiniowanej metody pytania
  • unikalny identyfikator systemu można odczytać z /etc/machine-id
  • itp.
I to zawsze. Dostawca oprogramowania nie będzie musiał tworzyć zawiłych skryptów sprawdzających czy używamy xinetd, inetd czy jeszcze czegoś innego. Osuszanie bagienka różnic między dystrybucjami powinno ułatwić dostarczanie oprogramowania firmom trzecim.

Aby osiągnać ten cel, systemd dostarczany jest wraz z garścią pomocniczych programików pojedynczego zastosowania. Część ujednolica czynności wykonywane we wszystkich dystrybucjach, część implementuje nowe mechanizmy mające stać się API Linuksa. Najprostsze (ograniczające się do pojedyńczych syscalli) wbudowane są w samą binarkę systemd.

Do czego zacząć się przyzwyczajać?

  • hostname1 — dostępna przez D-Bus usługa zarządzająca krótką oraz opisową nazwą komputera; konfigurowana w /etc/hostname
  • systemd-localed — dostępne przez D-Bus ustawianie języka systemu; konfigurowane w /etc/locale.conf
  • systemd-timedated — D-Bus; ustawianie czasu, daty, strefy czasowej; konfiguracja w /etc/adjtime, /etc/timezone, /etc/locatime
  • systemd-vconsole-setup — ustawienie układu klawiatury i fontu na konsoli tekstowej; konfiguracja w /etc/vconsole.conf
  • systemd-binfmt — konfiguracja jak traktować różne pliki wykonywalne; katalog z konfiguracją: /etc/bindfmt.d
  • systemd-tmpfiles — tworzenie plików, katalogów i gniazd przy starcie systemu; również kasowanie starych, nie używanych plików; konfiguracja z /usr/lib/tmpfiles.d i /etc/tmpfiles.d
  • systemd-sysctl — ustawienie zmiennych jądra; konfiguracje z katalogów {/usr/lib,/etc,/run}/sysctl.d i pliku /etc/sysctl.conf
  • systemd-modules-load — ładowanie modułów jądra; pliki konfiguracyjne w /etc/modules-load.d
  • systemd-kmsg-syslogd — minimalny demon zapamiętujący informacje przed uruchomieniem właściwego syslogd
  • systemd-random-seed — inicjacja puli entropii generatora pseudolosowego; również zapisanie stanu przy wyłączaniu komputera

Wydzielenie tych drobiazgów ze skryptow startowych umożliwia:

  1. ujednolicenie zachowania wszystkich dystrybucji Linuksa
  2. ujednolicenie sposobów np. zmiany nazwy komputera na wszystkich dystrybucjach
  3. uruchamianie powyższych czynności jednocześnie
  4. uruchamianie w razie potrzeby w trakcie działania komputera (np. pojawienie się nowego pliku w /etc/binfmt.d)

Ważnym nowością jest systemd-loginctl i skojarzony /etc/systemd/systemd-logind.conf zarządzajacy sesjami użytkownika. Odpowiada m. in. za automatycznie uruchamianie getty na konsolach, na które przełącza się użytkownik. Login manager daje informacje o zalogowanych użytkownikach, aktywnych sesjach i także pilnuje sprzątania procesów po użytkownikach wylogowanych. Poleceniem systemd-loginctl enable-linger można zażyczyć sobie uruchamiania sesji dla zwykłych użytkowników przy starcie systemu.

systemd-logind zarządza również wszystkimi zestawami klawiatura+mysz+monitor+inne urządzenia, ułatwiając pracę wielu użytkowników jednocześnie. Jest to efekt zapowiadanego pozbycia się ConsoleKit.

6 komentarzy | Trackback

systemd: modyfikacja jednostek (20 czerwca 2011, 15:27:37)

W życiu zachodzi czasem potrzeba modyfikacji skryptów startowych (jednostek systemd). Co jeśli mamy jakiś niepełnosprawny program i chcemy opóźnić jego uruchomienie, a nie możemy tego wyrazić poprawnymi zależnościami?

Systemowe (dostarczane przez dystrybucję) skrypty startowe znajdują się w /lib/systemd/system. Administrator nie powinienen ich ruszać, za to może przesłonić skrypt systemowy swoim, umieszczając go w /etc/systemd/system. Skrypt z /lib wygląda następująco:

[Unit]
Description=uses CDP / LLDP frames to inform switches about connected hosts
Requires=network.target

[Service]
EnvironmentFile=/etc/sysconfig/ladvd
ExecStart=/usr/sbin/ladvd -f $LADVD_OPTIONS
PIDFile=/var/run/ladvd.pid
StandardOutput=syslog

[Install]
WantedBy=multi-user.target

Przepisywanie całości jest niezdrowe, dużo roboty i możliwe rozjechanie gdy aktualizacja zmieni systemową jednostkę. W takich sytucjach najlepiej posłużyć się dyrektywą .include:

.include /lib/systemd/system/ladvd.service

[Service]
ExecStartPre=/bin/sleep 20s

[Install]
WantedBy=multi-user.target

Pierwsza linijka zaciąga całą treść oryginalnej jednostki. Sekcja [Service] wprowadza interesującą nas zmianę. Końcowka jest potrzebna do korzystania z systemctl enable/disable.

Inny przykład: dodanie zależności, wpływa na kolejność startu. Tworzymy /etc/systemd/system/radvd.service z zawartością:

.include /lib/systemd/system/radvd.service

[Unit]
After=aiccu.service

Dodaj komentarz | Trackback

3.0 zalicza czy psuje (07 czerwca 2011, 10:40:09)

Wraz ze zmianą numeracji jądra pojawiło się kilka problemów z programami spodziewających się numeracji x.y.z. Brak trzeciego numerka odczuły jak dotąd:

  • lvm2 — efektem jest problem z bootowaniem, naprawiony już w najnowszej wersji
  • mdadm też krztusi się z dwucyfrowym numerkiem
  • distributed.net client nie startuje, wysypuje się na inicjalizacji timerów
  • aktualizacji wymagały module-init-tools w Fedorze

3.0 udostępnia też katalog /sys/fs/selinux. Biblioteki SELinuksa korzystają z niego w pierwszej kolejności przed /selinux. Zmiana punktu mountowania zaskoczyła systemd, co kończy się pętlą komunikatów loading policy przy uruchomieniu. Poprawka już jest, w międzyczasie zbootować można dodając selinux=0 do linii poleceń jądra.

A czy Twój kod radzi sobie z nowym numerkiem? I w ogóle po co mu ta informacja, powinien sprawdzać obecność wymaganych ficzerów, a nie numer wersji.

4 komentarze | Trackback

/run Forest, /run (30 marca 2011, 18:36:14)

Linuksowi administratorzy w nadchodzących wydaniach swoich ulubionych dystrybucji natkną się na nowy wpis w katalogu głównym. Będzie to /run.

Katalog /run jest dostępny zaraz po zamountowaniu głównego /, przed pojawieniem się /var, który może być na osobnym wolumenie. Zawiera rzeczy odnoszące się do aktualnie działających program‎ów i usług (nie przechowuje wpisów przy reboocie). Są to:

  • pliki blokad (/run/lock, dostępne również jako /var/lock)
  • różne pliki uruchomieniowe, dotąd w /var/run
  • zbiór rzeczy do tej pory ukrywanych w .katalogach w /dev:
    • dane udev z /dev/.udev
    • informacje przekazane przez programy z initramfs, działające przed zamountowaniem /, dotąd w /dev/.initramfs
    • informacje z systemach plików z /dev/.mount/utab (wszystko to, co nie jest zawarte w /proc/self/mounts)
    • pliki kontrolne w /dev/.systemd
    • pliki tymczasowe z /dev/.mdadm
  • pamięć podręczną z /etc/lvm2/cache
A także inne pliki tworzone przez dracut, plymouth, bootchart i wszystkie programy, które do tej pory potrzebowały takiego miejsca. Użycie /dev było podyktowane obecnością tego katalogu od samego początku uruchamiania systemu. Nie do końca prawidłowe jest jednak przechywanie w /dev wpisów nie będących urządzeniami, a zwłaszcza ukrywanie ich kropką w nazwach.

Poza nadużywaniem /dev, dystrybucje do problemu podchodziły różnie. Debian daje /lib/init/rw, który z kolei narusza przestrzeń /lib dla bibliotek. Ubuntu udostępnia /var/run i /var/lock przy starcie, a przy mountowaniu właściwego /var dokonuje przypięcia (bindmount). Jest to jednak rozwiązanie podatne na wyścigi.

Wynik międzydystrybucyjnych uzgodnień ogłosił Kay Sievers, jednocześnie odpowiedzialny za wdrożenie tego rozwiązania w SUSE. Zawtórował mu Scott James Remnant, opiekun upstart i członek rady technicznej Ubuntu. Rozwiązanie wdrożyła Fedora, poddane zostało również pod dyskusję w Debianie.

Nasuwać się może pytanie, co z File Hierarchy Standard? Wersja 2.3 nie zakazuje, jednak wymaga rozwagi:

Distributions should not create new directories in the root hierarchy without extremely careful consideration of the consequences including for application portability.
Twórcy najważniejszych dystrybucji porozumieli się między sobą i stosowna poprawka do FHS została zgłoszona. Ostatecznie będziemy mieli: /var do rzeczy zmiennych, dostępnych pomiędzy restartami i /run dla tych mających sens jedynie w działającym systemie (wskazane więc użycie tmpfs). Coraz bliżej jest do umożliwienia funkcjonowania systemu z kluczowymi katalogami (/usr, /etc itp.) zamountowanymi w trybie tylko-do-odczytu.

4 komentarze | Trackback

Bye bye, suid (31 grudnia 2010, 16:14:25)

Wychodząc naprzeciw trendowi „jeden komputer — jeden użytkownik”, od następnej wersji Fedory będzie w systemie tylko konto root. Dzięki temu możliwe stanie się wyeliminowanie programów z suidami.

A tak na poważnie, eliminacja polega na zastąpieniu suid-rootów odpowiednimi capabilities. Program, który wymaga tylko uprawnień do zmiany czasu lub używania portów sieciowych poniżej 1024, dostanie uprawnienia tylko do tego. Do tej pory wszystkie możliwości roota były przyznawane.

Wcześniej temu wyzwaniu podołał OpenWall Linux. Przez przerobienie niektórych mechanizmów pozbyto się konieczności uruchamiania przez użytkownika programów jako root. Przykładowo, zmiana powłoki, opisu, hasła czy innych pól w bazie użytkowników /etc/passwd wymagała uprawnień do modyfikacji tego pliku, a więc superużytkownika. W OWL każdy użytkownik ma swój plik w /etc/tcb, którego jest właścicielem i którego edycja nie wymaga superusera.

W Fedorze wysiłki zmierzają do konkretnego nadawania uprawnień. W sieci można znaleźć przykłady użycia setpcap. Jest to proces dość żmudny i niekoniecznie zakończy się powodzeniem, już w tej chwili idzie dość opornie. Rozwiązanie z OWL wygląda lepiej i bardziej przypadło mi do gustu.

Tak jak wcześniej ACL'e rozszerzyły uprawnienia plikowe rwx, tak teraz capabilities rozszerzają ideę rootowego suida. Admini, którzy do tej pory zwlekali z uzupełnieniem swojej wiedzy mają kolejną szansę na pobudkę z ręką w nocniku.

4 komentarze | Trackback

Pożegnanie z eth0 (21 grudnia 2010, 12:59:31)

Osoby instalujące Fedorę 15 i późniejsze może zaskoczyć drobna zmiana w nazewnictwie interfejsów sieciowych. Zamiast niemal losowo przyznawanych ethX, nazwa będzie zgadzała się z położeniem karty sieciowej w komputerze i opisem producenta. Mianowicie:

  • karty wbudowane w płytę główną: emX, czyli em1, em2 itd.
  • karty dołożone: pciX#Y lub pciX#Y_Z (X – numer slotu, Y– numer portu na karcie, Z – numer funkcji) , co daje przykładowe pci3#1 lub pci2#2_15. Druga wersja wyróżnia funkcje wirtualne w ramach SRV-IO.

Przyznawanie nazw dotyczy oczywiście tylko kart pojawiających się w systemie po raz pierwszy. Raz nazwana, karta zawsze dostanie tę samą etykietkę na podstawie adresu MAC i 70-persistent-net.rules. Aktualizacja:. Nazwy nadawane są przy każdym uruchomieniu. Zamiana karty w slocie PCI na inną spowoduje, że nowy interfejs przejmie nazwę starego. Nie zmienią się nazwy w systemach aktualizowanych i tam, gdzie administrator wymusił przypisania w 70-persistent-net.rules. Dane o położeniu fizycznym brane są z ACPI, DMI i tablicy przerwań PCI.

Interfejsy sieciowe
Etykiety na obudowie w końcu będą zgodne z rzeczywistością

Inne uniksowate zazwyczaj nazywają karty sieciowe na podstawie modelu urządzenia i obsługującego go sterownika. Ja od lat staram się nazywać interfejsy od ich funkcji/providera: lan, nsm, storagenet, tpsa, netia, kabel, eter itp. Znacząco ułatwia to np. pisanie reguł filtra pakietów. Wieki temu musiałem łatać iptrafa, który upierał się na działaniu tylko z interfejsami o nazwach ethX. Dzisiaj spokojnie można zakładać, że tak popsutych programów już nie ma. Nazwy interfejsów sieciowych można w Linuksie zmieniać od lat!

Więcej na stronie Features/ConsistentNetworkDeviceNaming.

16 komentarzy | Trackback

Hot, hot data (29 sierpnia 2010, 16:36:35)

Nadal chcesz przyspieszyć serwer dzięki SSD? Budżet nie pozwala na zakup dającego 1,5 miliona IOPS Kaminario K2. Pewnie nie starcza nawet na najmniejszą konfigurację K2 (300 kIOPS, 1TB, $200k), ani na małego RamSan-440.

Pozostaje dopingować (a najlepiej zasponsorować) Bena Chocieja z IBM, który pracuje nad infrastrukturą do śledzenia temperatury danych. Im gorętsze — częściej używane — tym bardziej nadają się do przeniesienia na szybszą pamięć masową. Czyli na dyski 10k, 15k RPM, short-stroked, SSD czy wysokowydajne wolumeny RAID10 na macierzy.

Łatki Bena na początek współdziałają z btrfs. Pojawiły się głosy za umieszczeniem funkcjonalności na poziomie VFS, co daje możliwość korzystanie z niej innym systemom plików. Koncepcja jak najbardziej słuszna.

W stosunku do rozwiązań cache'ujących, pojemność szybkiej pamięci masowej wchodzi w skład dostępnej przestrzeni dyskowej w puli. Stąd już tylko krótki krok do niezłej implementacji hierarchicznego składowania w Linuksie. I do zastąpienia DMAPI, niedawno usuniętego z XFS w jądrze.

4 komentarze | Trackback

Archiwum :: 26.06.03-07.07.03 | 08.07.03-29.07.03 | 29.07.03-01.09.03 | 01.09.03-11.10.03 | 25.10.03-21.12.03 | 30.12.03-11.02.04 | 13.02.04-04.03.04 | 11.03.04-12.04.04 | 19.04.04-21.05.04 | 22.05.04-20.06.04 | 22.06.04-15.07.04 | 17.07.04-19.08.04 | 19.08.04-13.09.04 | 14.09.04-12.11.04 | 13.11.04-07.01.05 | 08.01.05-07.02.05 | 11.02.05-03.03.05 | 06.03.05-17.04.05 | 17.04.05-13.06.05 | 16.06.05-19.07.05 | 25.07.05-30.08.05 | 17.09.05-03.12.05 | 04.12.05-24.01.06 | 01.02.06-29.03.06 | 30.03.06-13.05.06 | 20.05.06-08.06.06 | 09.06.06-13.07.06 | 13.07.06-16.09.06 | 18.09.06-25.10.06 | 26.10.06-28.11.06 | 01.12.06-05.01.07 | 05.01.07-30.01.07 | 02.02.07-22.03.07 | 02.04.07-09.05.07 | 11.05.07-19.07.07 | 01.08.07-22.09.07 | 30.09.07-14.12.07 | 17.12.07-11.03.08 | 20.03.08-07.07.08 | 21.07.08-30.11.08 | 19.12.08-08.04.09 | 17.04.09-07.06.09 | 16.06.09-27.10.09 | 09.11.09-15.04.10 | 03.05.10-08.08.10 | 09.08.10-20.10.10 | 22.11.10-15.03.11 | 24.03.11-20.11.11 | 27.11.11-20.05.12 |
Dodatki :: Nagłówki RSS ATOM
Powered by Jogger. © 2002-2003 Justin Mecham oraz JabberPL Group.
Wszystkie prawa zastrzeżone. Legalność; Informacje
Technorati Profile; ikonki z Tango. Z wyłączeniem komentarzy i zaznaczonych inaczej, autorem tekstów jest zdzichu.