Kernel-Log – Was 3.2 bringt (4): Infrastruktur

Seite 2: Storage, Verschiedenes

Inhaltsverzeichnis

Bei dem mit Mdadm administrierten MD-Code für Software-RAIDs gab es diesmal keine erwähnenswerten Neuerungen. MD-Maintainer Neil Brown konzentriert sich offenbar auf der Arbeit am Code zum Austauschen von Geräten im Betrieb ("Hot Replace") bei den RAID-Level 4, 5 und 6 sowie den Leveln 1 und 10 – dies sei wohl die Verbesserung, die von den Anwendern am meisten gewünscht wird. Brown hofft, den neuen Code zur Aufnahme für Linux 3.3 einzusenden.

Über das SCSI-Subsystem stieß im Merge Window ein Patch zum Kernel, der Datenträgern zu Alias-Namen verhalf, die sich auch durch einen Neustart nicht veränderten; Hintergründe erläutert ein LWN.net-Artikel. Die Änderungen wurde aber wenige Wochen später wieder entfernt, nachdem sich eine Reihe wichtiger Kernel-Entwickler gegen diesen Ansatz ausgesprochen hatten. Sie waren genau wie mittlerweile auch der der Entwickler der Änderung der Auffassung, dass eine Userspace-Lösung der bessere Ansatz sei; eine solche will der Entwickler der Änderung jetzt vorantreiben.

Userspace-Werkzeuge können mit Hilfe des für Loop-Devices zuständigen Kernel-Code nun eigenständig dafür sorgen, dass Gerätedateien für Partitionen erzeugt werden, wenn das per Loop eingebundene Image eine Partitionstabelle enthält. Der Loop-Code erhielt außerdem Discard-Unterstützung, wodurch sich ungenutzter Speicherplatz in Images freigeben lassen.

  • Mit Hilfe des neuen "CFS bandwidth controller" und der Infrastuktur für Control Croups (cgroups) lässt sich die CPU-Zeit von Prozess-Gruppen limitieren, damit beispielsweise Nutzer von Rechenzeit in der Cloud nicht mehr CPU-Ressourcen nutzen können, als sie bezahlt haben (u. a. 1, Dokumentation).
  • Der Kernel markiert sich jetzt mit TAINT_OOT_MODULE (Kurzform für "tainted: out of tree module"), wenn er Module lädt, deren Code nicht Bestandteil des offiziellen Linux-Kernels ist. Dadurch sollen Entwickler, die Fehlerberichte durchsehen, solche Umgebungsbedingungen schnell erkennen. Solche Module haben in Kernel-Kreisen einen schlechten Ruf und lösen gelegentlich Fehler in Bereichen aus, die auf den ersten Blick nichts mit dem Modul zu tun haben. Entstanden ist der Patch nach einer Diskussion, den Kernel beim Laden der Treiber für VirtualBox als "tainted" zu markieren (1, 2)
  • Die Perf-Kommandos Top und Report erhielten eine überarbeitete Oberfläche (u. a. 1).
  • Zusammen mit einem TPM soll das für Linux 3.2 aufgenommene Extended Verification Module (EVM) Manipulationen an Systemdateien aufdecken und so sicherstellen, dass nicht schon beim Systemstart Schadcode geladen wird.
  • Ob es sich bei einem System um einen Desktop-PC, ein Notebook, einen Server oder eine andere von fünf weiteren Geräteklassen handelt, lässt sich jetzt via Sysfs auslesen, sofern diese Angabe korrekt in den ACPI-Tabellen hinterlegt wurde.
  • Über den Verwalter des Codes für Power-Management stieß das im Embedded-Umfeld entstandene DVFS (Dynamic Voltage and Frequency Scaling) zum Kernel. Ähnlich wie Cpufreq reguliert das Devfreq genannte Framework die Frequenz und Spannungsversorgung von Bausteinen des Systems, um idealerweise die Leistungsaufnahme der Chips niedrig zu halten, ohne die Performance allzu negativ zu beeinflussen; Cpufreq erledigt das allerdings für Prozessoren und Devfreq für andere Bausteine. Neu ist auch ein API zum Konfigurieren von Quality of Service bei Geräte-spezifischem Power-Management (Device PM QoS). Hintergründe zu diesen Neuerungen erläutert LWN.net im Artikel "Better device power management for 3.2"
  • Der Code, der den Arbeitsspeicherinhalt beim Ruhezustand (Hibernate/Software Suspend) auf einem nicht nicht-flüchtigen Datenträger sichert, arbeitet jetzt mit Threads. Laut Commit-Kommentar hat das die Lese- und Schreibgeschwindigkeit beim Entwickler und den Faktor zwei verbessert.
  • Durch eine Änderung kann der Kernel nun auch bei PCIe-Geräten regelmäßig abfragen, ob ein Power Management Event (PME) aufgetreten ist. Das ist gelegentlich nötig, um Fehler in der Hardware zu umschiffen. Die Ursachen dafür sind vielfältig und werden im Commit-Kommentar angerissen, der mit den Worten "The land of PCI power management is a land of sorrow and ugliness, especially in the area of signaling events by devices" beginnt und anschließend einige Hardware-Probleme in diesem Bereich erläutert.
  • Der PCI-Code bietet nun Unterstützung für Process Address Space Identifiers (PASIDs). Durch diese auf eine IOMMU (Input/Output Memory Management Unit) angewiesene Technik können PCI-Geräte auf mehrere I/O-Adressbereiche gleichzeitig zugreifen.
  • Das Security-Framework TOMOYO kann nun Umgebungsvariablen prüfen und bestimmte Socket-Operationen unterbinden.
  • Das Krypto-Subsystem bietet ein neues Konfigurations-API, um Krypto-Algorithmen mit Userspace-Programmen zu konfigurieren (u. a. 1); das gelingt etwa mit dem parallel zum neuen Interface entwickelte Crconf.
  • Im Skript-Verzeichnis des Kernel liegt am Version 3.2 ein Skript, um ein mit Bzip2 komprimiertes Kernel-Image zu extrahieren.
  • Dateien im Sysctl-Verzeichnis (/proc/sys/) lassen sich jetzt über die Poll-Funktion auf Änderungen überwachen.
  • Der Init-Code versteht fortan auch Angaben zum einzubindenden Root-Device in der Form "root=PARTUUID=UUID/PARTNROFF=%d", um eine Parition ("PARTNROFF=%d") auf einem bestimmten Datenträger (PARTUUID=UUID) zu spezifizieren.