Kernel-Log – Was 3.3 bringt (2): Dateisysteme und Storage
Der Btrfs- und MD-Code bietet neue Möglichkeiten, ein RAID unter Erhalt der Daten umzubauen. Ext4-Dateisysteme lassen sich nun schneller vergrößern.
Die Kernel-Entwickler haben für Linux 3.3 eine Reihe von Umbauten und Erweiterungen am Balancing- und Restriping-Code von Btrfs vorgenommen, der für das Umverteilen von Daten innerhalb von Btrfs-Laufwerken zuständig ist (1 [1], 2 [2], 3 [3], 4 [4], 5 [5], 6 [6]). Durch diese Änderungen [7] lassen sich mit Btrfs erzeugte RAIDs umbauen – etwa von einem RAID 1 in ein RAID 10. Solch eine Migration lässt sich durch den neuen Code nun auch pausieren, abbrechen oder nach einem Absturz fortsetzen.
Neu sind auch einige optional einkompilierbare Btrfs-Funktionen, durch die das weiterhin experimentelle Dateisystem Integritätsprüfungen im Betrieb durchführt (1 [8], 2 [9]). Das kann bei der Analyse von Situationen helfen, die zu inkonsistenten Dateisystemen führen. Der Hilfetext [10] der zugehörigen Kernel-Konfigurations-Option betont, dieser Funktion sei "gefährlich" und man sollte sie im Normalbetrieb nicht verwenden.
Entwicklungsstand
Die Entwicklung von Linux 3.3 schreitet mit der Freigabe des vierten RCs [11] weiter voran. Nachdem die dritte Vorabversion keine sonderlichen Überraschungen gebracht hatte [12], erschien die vierte leicht verspätet: Torvalds und einige andere Entwickler haben einem Fehler nachgespürt, das sich unter anderem in Übertragungsfehler beim Einsatz von WPA2 zeigte. Das mit dem RC4 behobene Problem trat allerdings nur auf, wenn ein 32-Bit-Kernel auf einem x86-Prozessor mit AES-NI-Unterstützung lief, weil ältere Kernel dort den Zustand der FPU (Floating-Point Unit) in bestimmten Situationen nicht korrekt wiederhergestellt haben.
Vergrößern
Der Ext4-Code erhielt einen neuen Mechanismus zum Anpassen der Größe von Ext4-Dateisystemen (u. a. 1 [13]). Bei ihm kümmert sich nicht vornehmlich ein Userspace-Programm um die Größenanpassung, sondern der Kernel selbst. Laut Messungen [14], die ein Entwickler mit einer frühen Version des Codes [15] durchgeführt hat, benötigte der neue Mechanismus lediglich 3,5 Sekunden, um ein 20 GByte großes Laufwerk auf 230 GByte aufzuziehen; der bisher verwendete Ansatz brauchte über 5 Minuten. Die neue Technik unterstützt aber einige der neueren Ext4-Techniken bislang nicht – darunter die bei Linux 3.2 eingeführten [16] Big Allocations (Bigalloc).
Ausmisten
Die XFS-Entwickler haben die Mount-Option "nodelaylog" entfernt [17]. Mit ihr ließ sich eine ältere Arbeitsweise beim Schreiben von Log-Daten aktivieren, die der Kernel seit einiger Zeit nicht mehr standardmäßig nutzt. Der neuere Ansatz hat nach Aussage von XFS-Entwicklern ein Performance-Problem rund um das Schreiben von Metadaten beseitigt. Einige Hintergründe dazu finden sich in der Video-Aufzeichnung des Vortrags "XFS: Recent and Future Adventures in Filesystem Scalability [18]", den Red-Hat-Entwickler Dave Chinner auf der diesjährigen linux.conf.au gehalten hat; LWN.net hat diesen Vortrag zusammengefasst [19].
Empfohlener redaktioneller Inhalt
Mit Ihrer Zustimmmung wird hier ein externes YouTube-Video (Google Ireland Limited) geladen.
Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit können personenbezogene Daten an Drittplattformen (Google Ireland Limited) übermittelt werden. Mehr dazu in unserer Datenschutzerklärung [20].
Hot-Replace-Raid, Storage, kleine Perlen
Umverteilen: Mdadm
Der für Software-RAIDs zuständige MD-Code erhielt Funktionen (u. a. 1 [21], 2 [22]), um Daten im Betrieb von einem Datenträger auf einen zweiten zu verschieben, um den ersten anschließend entfernen zu können. Dieser "Hot Replace" genannte Ansatz reduziert die Gefahr von Datenverlust beim Datenträgerwechsel, da es den bislang beim Austausch nötigten Rebuild vermeidet, bei dem die redundanten Daten auf einem neuen Datenträger frisch erzeugt werden. Dieser Rebuild ist nicht ohne Risiko, da dazu die Daten von den verbliebenen Datenträgern gelesen werden müssen, auf denen möglicherweise unbemerkt bereits beschädigte Bereiche entstanden sind; zudem besteht während des Rebuilds keine Redundanz, wenn es sich nicht um ein RAID 6 handelt. Der Kernel beherrscht "Hot Replace" bei den RAID-Level 1, 4, 5, 6 und 10. Aktuelle Mdadm-Versionen unterstützten die Technik noch nicht; einige Hinweise, wie man sie verwenden kann, finden sich zusammen mit Hintergrundinformationen zur Technik in zwei älteren Mails des MD- und Mdadm-Betreuers (1 [23], 2 [24]).
Storage-Treiber
Die Linux-Entwickler haben den Treiber ib_srpt integriert [25], durch die der Kernel nun auch über das SCSI RDMA Protocol [26] (SRP [27]) als Storage-Host agieren kann; der Code dahinter setzt auf das bei 2.6.38 [28] integrierte Target-Framework LIO (Linux-Iscsi.Org [29]) auf.
Dem Kernel liegt nun ein Treiber [30] für NVM (Non-Volatile Memory) Express (NVMe [31]) bei (u. a. 1 [32], 2 [33]). Dabei handelt es sich um eine vor einem Jahr [34] definierte Standardschnittstelle zum Zugriff auf SSDs, die via PCI oder PCIe angebunden sind; auch der designierte SATA-6G-Nachfolger SATA Express soll Konzepte [35] von NVMe nutzen.
Zum Block-Layer stieß ferner ein Treiber [36] für Microns PCIe-Flash-Karten RealSSD. Der Emulex-LightPulse-Fibre-Channel-SCSI-Treiber lpfc bietet nun [37] Loopback-Unterstützung.
Verschiedenes
- Einige Patches haben Grundfunktionen für Techniken gelegt, mit deren Hilfe man Prozesse auf einem Rechner einfrieren kann, um sie nach dem Transport auf ein anderes System fortzusetzen ("Checkpoint and Restart"; kurz "C/R"). Dazu gehören die Proc-Verzeichnisse [38] /proc/<pid>/map_files/, über die sich alle Dateien und deren Bereiche auslesen lassen, die in den Speicher gemapt wurden.
- Über die neuen [39] Procfs-Mount-Optionen "hidepid=" und "gid=" kann der Systemadministrator den Zugriff auf bestimmte /proc/<PID>/-Verzeichnisse einschränken – "hidepid=1" etwa verhindert, dass ein Prozess Informationen von fremden Prozessen abgreift.
- Änderungen am SCSI- und Device-Mapper-Code beseitigen eine Sicherheitslücke [40], über die KVM-Gastsysteme unter gewissen Umständen auf Datenträger des Wirts zugreifen konnten (u. a. 1 [41], 2 [42]).
- Über einen neuen Ioctl können Anwendungen abfragen [43], ob es sich um einen Datenträger mit rotierenden Bauteilen handelt; die schon länger mögliche Abfrage über Sysfs funktioniert weiter.
Die "Was Linux 3.3 bringt"-Serie
Das Kernel-Log [44] kann bereits jetzt einen Überblick über die wichtigsten Neuerungen der Mitte März erwarteten Linux-Version 3.3 geben, da alle größeren Neuerungen bereits in den ersten zwei Entwicklungswochen integriert wurden. Kernel 3.3 befindet sich daher jetzt in der Stabilisierungsphase [45], in der es normalerweise keine größeren Änderungen mehr gibt.
Die Artikel zu den Neuerungen nehmen sich nach und nach den unterschiedlichen Funktionsbereichen des Kernels an:
In den kommenden Wochen folgen noch Artikel zu Architektur-Code, Infrastruktur sowie zu Treibern für sonstige Hardware.
Die kleinen Perlen
Die folgenden Links führen zu einigen kleineren, aber keineswegs unbedeutende Änderungen:
Dateisysteme
- [
2
] audit: dynamically allocate audit_names when not enough space is in the names array [47] - [
- [
N
] Btrfs: generic data structure to build unique lists [49] - [
- [
D
] ceph: enable/disable dentry complete flags via mount option [51] - [
C
] [CIFS] ACL and FSCACHE support no longer EXPERIMENTAL [52] - [
D
] configfs: convert to umode_t [53] - [
1
] epoll: limit paths [54] - [
- [
- [
- [
4
] GFS2: dlm based recovery coordination [58] - [
C
] move fs/partitions to block/ [59] - [
C N
] NFSD: Added fault injection [60] - [
DN
] NFSD: Added fault injection documentation [61] - [
- [
D
] NFSv4: Change the default setting of the nfs4_disable_idmapping parameter [63] - [
- [
- [
1
] reiserfs: Properly display mount options in /proc/mounts [66] - [
D
] Squashfs: Update documentation to include xattrs [67] - [
D 3
] switch ->create() to umode_t [68] - [
D 2
] switch debugfs to umode_t [69] - [
D 2
] switch ->mknod() to umode_t [70] - [
D 3
] switch vfs_mkdir() and ->mkdir() to umode_t [71] - [
D
] sysfs: propagate umode_t [72] - [
D 2
] vfs: switch ->show_options() to struct dentry * [73] - [
Storage
- [
1
] mlx4_core: Added FW commands and their wrappers for supporting SRIOV [75] - [
2
] mlx4_core: initial header-file changes for SRIOV support [76] - [
1
] mlx4_core: mtt modifications for SRIOV [77] - [
- [
- [
1
] SCSI: isci, firmware: Remove isci fallback parameter blob and generator [80] - [
- [
- [
C
] SCSI: isci: update version to 1.1 [83] - [
1
] SCSI: lpfc 8.3.28: Add support for ABTS failure handling [84] - [
3
] SCSI: lpfc 8.3.28: Critical Miscellaneous fixes [85] - [
3
] SCSI: lpfc 8.3.28: Miscellaneous fixes in sysfs and mgmt interfaces [86] - [
2
] SCSI: lpfc 8.3.28: SLI fixes and added SLI4 support [87] - [
- [
- [
D
] SCSI: megaraid_sas: Version and Changelog update [90] - [
- [
- [
- [
- [
- [
3
] SCSI: qla2xxx: Update to dynamic logging. [96] - [
- [
- [
- [
Ein "C" im Bereich "[ ]" kennzeichnet Commits mit Änderungen an Kconfig-Dateien, welche die Konfigurationsoptionen samt der zugehörigen Hilfetexte enthalten. Mit "D" ausgezeichneten Patches verändern die dem Kernel beiliegende Dokumentation; Commits mit "N" legen neue Dateien an. Die Zahl vermittelt einen groben Eindruck zur Größe des Patches: eine "1" kennzeichnet Patches, die inklusive Kommentar zwischen 10 und 20 KByte groß sind; Änderungen ohne Zahl sind kleiner als 10 KByte, Patches mit einer "9" hingegen 90 KByte oder größer.
Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich in den vorangegangenen Kernel-Logs [101] auf heise open [102]. Neue Ausgaben des Kernel-Logs [103] werden auf den Identi.ca [104]- und Twitter [105]-Konten "@kernellog" erwähnt; die englischen, bei den Kollegen von "The H [106]" erscheinenden Übersetzungen auf den Identi.ca [107]- und Twitter [108]-Konten "@kernellog2". Gelegentlich zwitschert der Autor des Kernel-Logs unabhängig davon über einige Kernel-Log-Themen bei Identi.ca [109] und Twitter [110] als "@kernellogauthor". (thl [111]) (thl [112])
URL dieses Artikels:
https://www.heise.de/-1437805
Links in diesem Artikel:
[1] http://git.kernel.org/linus/f43ffb60fd94e98be02780944e182ade6653b916
[2] http://git.kernel.org/linus/0940ebf6b92ea10a6f30ae5ac3993a3b75745da6
[3] http://git.kernel.org/linus/596410151ed71819b9e8a8018c6c9992796b256d
[4] http://git.kernel.org/linus/9555c6c180600b40f6e86bd4dc53bf47e06ed663
[5] http://git.kernel.org/linus/19a39dce3b9bf0244d19a446718ad6f7605ff099
[6] http://git.kernel.org/linus/c9e9f97bdfb64d06e9520f8e4f37674ac21cc9bc
[7] http://thread.gmane.org/gmane.linux.kernel/1240436
[8] http://git.kernel.org/linus/21adbd5cbb5344a3fca6bb7ddb2ab6cb03c44546
[9] http://git.kernel.org/linus/5db0276014b80484689eb6c1bf7b94af1c7d5b1a
[10] http://git.kernel.org/linus/c975dd469d748ce619c510050d4fb407c2398591
[11] http://thread.gmane.org/gmane.linux.kernel/1255125
[12] http://thread.gmane.org/gmane.linux.kernel/1250814
[13] http://git.kernel.org/linus/19c5246d251640ac76daa4d34165af78c64b1454
[14] http://thread.gmane.org/gmane.comp.file-systems.ext4/29916
[15] http://thread.gmane.org/gmane.comp.file-systems.ext4/30024
[16] https://www.heise.de/hintergrund/Kernel-Log-Was-3-2-bringt-2-Dateisysteme-1386865.html
[17] http://git.kernel.org/linus/93b8a5854f247138e401471a9c3b82ccb62ff608
[18] http://www.youtube.com/watch?v=FegjLbCnoBw&feature=plcp&context=C354f653UPOEgsToPDskJhioS9toUYMrSq2HTgo1Pf
[19] http://lwn.net/Articles/476263/
[20] https://www.heise.de/Datenschutzerklaerung-der-Heise-Medien-GmbH-Co-KG-4860.html
[21] http://git.kernel.org/linus/2d78f8c451785f030ac1676a18691896b59c69d8
[22] http://git.kernel.org/linus/671488cc25f7c194c7c7a9f258bab1df17a6ff69
[23] http://thread.gmane.org/gmane.linux.raid/35899
[24] http://thread.gmane.org/gmane.linux.raid/36067
[25] http://git.kernel.org/linus/a42d985bd5b234da8b61347a78dc3057bf7bb94d
[26] http://linux-iscsi.org/wiki/SCSI_RDMA_Protocol
[27] http://en.wikipedia.org/wiki/SCSI_RDMA_Protocol
[28] https://www.heise.de/hintergrund/Kernel-Log-Was-2-6-38-bringt-4-Storage-1199339.html
[29] http://linux-iscsi.org/
[30] http://thread.gmane.org/gmane.linux.kernel/1240831
[31] http://www.nvmexpress.org/
[32] http://git.kernel.org/linus/b60503ba432b16fc84442a84e29a7aad2c0c363d
[33] http://git.kernel.org/linus/366e8217e5ec6ce9f73aec19c46d983110fb4a98
[34] https://www.heise.de/news/Standard-fuer-PCI-Express-SSDs-verabschiedet-1202793.html
[35] https://www.heise.de/news/IDF-Mehr-Details-zum-SATA-6G-Nachfolger-SATA-Express-1342763.html
[36] http://git.kernel.org/linus/88523a61558a040546bf7d8b079ae0755d8e7005
[37] http://git.kernel.org/linus/1b51197d0fd0c06877c6df1bba84ac4008a7fc60
[38] http://git.kernel.org/linus/640708a2cff7f81e246243b0073c66e6ece7e53e
[39] http://git.kernel.org/linus/0499680a42141d86417a8fbaa8c8db806bea1201
[40] https://www.heise.de/news/Host-Datentraeger-unter-Linux-Virtualisierungsloesung-KVM-angreifbar-1401283.html
[41] http://git.kernel.org/linus/0bfc96cb77224736dfa35c3c555d37b3646ef35e
[42] http://git.kernel.org/linus/ec8013beddd717d1740cfefb1a9b900deef85462
[43] http://git.kernel.org/linus/ef00f59c95fe6e002e7c6e3663cdea65e253f4cc
[44] http://www.heise.de/glossar/entry/Kernel-Log-397909.html
[45] https://www.heise.de/glossar/entry/Entwicklungszyklus-des-Linux-Kernels-397915.html
[46] https://www.heise.de/hintergrund/Kernel-Log-Was-3-3-bringt-1-Netzwerk-1421300.html
[47] http://git.kernel.org/linus/5195d8e217a78697152d64fc09a16e063a022465
[48] http://git.kernel.org/linus/3f7de037fb3727b20bc27332cdcf2488b702394c
[49] http://git.kernel.org/linus/da5c81356426c476112f2b59fe64bdb1b37f079d
[50] http://git.kernel.org/linus/1bb91902dc90e25449893e693ad45605cb08fbe5
[51] http://git.kernel.org/linus/a40dc6cc2e121abcbd1b22583ef5447763df510c
[52] http://git.kernel.org/linus/c56001879bc091eee0c7a8e6e94ea0bea63c3012
[53] http://git.kernel.org/linus/439475140bed762c04567c325d48409862341ae4
[54] http://git.kernel.org/linus/28d82dc1c4edbc352129f97f4ca22624d1fe61de
[55] http://git.kernel.org/linus/8c48f7e88e293b9dd422bd8884842aea85d30b22
[56] http://git.kernel.org/linus/b18da0c56e9ff43a007b6c8e302c62e720964151
[57] http://git.kernel.org/linus/dfe4d34b39b80faff52489f950a18523da7581bf
[58] http://git.kernel.org/linus/e0c2a9aa1e68455dc3439e95d85cabcaff073666
[59] http://git.kernel.org/linus/9be96f3fd10187f185d84cf878cf032465bcced3
[60] http://git.kernel.org/linus/65178db42a02c7984f711614546e97e9952d8e01
[61] http://git.kernel.org/linus/114a0a08d46cfb0eefb1a882f7866b7f57bfc5ba
[62] http://git.kernel.org/linus/43717c7daebf10b43f12e68512484b3095bb1ba5
[63] http://git.kernel.org/linus/074b1d12fe2500d7d453902f9266e6674b30d84c
[64] http://git.kernel.org/linus/e268337dfe26dfc7efd422a804dbb27977a3cccc
[65] http://git.kernel.org/linus/97412950b10e64f347aec4a9b759395c2465adf6
[66] http://git.kernel.org/linus/c3aa077648e147783a7a53b409578234647db853
[67] http://git.kernel.org/linus/89cab5b5727d3139adc247e3a3d4ee5b10e3eda5
[68] http://git.kernel.org/linus/4acdaf27ebe2034c342f3be57ef49aed1ad885ef
[69] http://git.kernel.org/linus/f4ae40a6a50a98ac23d4b285f739455e926a473e
[70] http://git.kernel.org/linus/1a67aafb5f72a436ca044293309fa7e6351d6a35
[71] http://git.kernel.org/linus/18bb1db3e7607e4a997d50991a6f9fa5b0f8722c
[72] http://git.kernel.org/linus/faef2b6c9960b5ae288899f461a2218ec6bb7928
[73] http://git.kernel.org/linus/34c80b1d93e6e20ca9dea0baf583a5b5510d92d4
[74] http://git.kernel.org/linus/474fce067521a40dbacc722e8ba119e81c2d31bf
[75] http://git.kernel.org/linus/5cc914f10851d2dc17005c7d26cdd70adcbecbcd
[76] http://git.kernel.org/linus/623ed84b1f9553bc962c2aca92f488aa6f27ecd1
[77] http://git.kernel.org/linus/ea51b377abcdf0f3fab0119879be373bda69afb1
[78] http://git.kernel.org/linus/5b7db7af522d9f281ff8bf540d2b5cbea2206b27
[79] http://git.kernel.org/linus/7e629841b8f8f7bc84d74de994d748b0a3282225
[80] http://git.kernel.org/linus/7d99b3abaf8412932269a2a2e561138326d61f8b
[81] http://git.kernel.org/linus/9fee607f0b29adabd72265a847b8e421dff10d66
[82] http://git.kernel.org/linus/6024d38b86ecc7943e398ef01b0dc2765870d444
[83] http://git.kernel.org/linus/d3fd2e2bc29b1f0979352994f9035359003461c3
[84] http://git.kernel.org/linus/cb69f7decc3777822b240c46890a209df288c7bb
[85] http://git.kernel.org/linus/2e90f4b5a2a0ce5ab72c0c81c74269bd0a62522b
[86] http://git.kernel.org/linus/026abb87a5586c838a47aca7198d78e356b6351e
[87] http://git.kernel.org/linus/ff78d8f97c85a568c0799b06137a4171db45b923
[88] http://git.kernel.org/linus/5c41dc3a79150e93e5d050871a10b761be8281a1
[89] http://git.kernel.org/linus/f2d7e40e8069f0d6b4958dbda4383f412f53c7d1
[90] http://git.kernel.org/linus/798edaadba97612224c250d50f880405d75a3af1
[91] http://git.kernel.org/linus/7509d6bb955d08c4125bcf44650b2df839470bf8
[92] http://git.kernel.org/linus/9ac49d3a510c2686545d4e0520fdc79b341b5794
[93] http://git.kernel.org/linus/ba96bd0b1d4a4e11f23671e1f375a5c8f46b0fe7
[94] http://git.kernel.org/linus/85d37226fb5faaf7bec55df50c2cd029bd6bb3cd
[95] http://git.kernel.org/linus/a00f6296aaf92ebe89c72eb98c440410992a33c4
[96] http://git.kernel.org/linus/cfb0919c12a33132f75fb91971bbd8bdd44ebb90
[97] http://git.kernel.org/linus/7b12859ae4776d868ea732424a452826d9ee03df
[98] http://git.kernel.org/linus/3a19cbf530648a63fb3f73630046c561f70c6b71
[99] http://git.kernel.org/linus/19b628dfc60eda4459b65e4b6b7a748932d28929
[100] http://git.kernel.org/linus/90c161b643d9531d271110876a14e68b49172d8a
[101] http://www.heise.de/open/kernel-log-3007.html
[102] http://www.heise.de/open/
[103] http://www.heise.de/glossar/entry/Kernel-Log-397909.html
[104] http://identi.ca/kernellog
[105] http://twitter.com/kernellog
[106] http://www.h-online.com
[107] http://identi.ca/kernellog2
[108] http://twitter.com/kernellog2
[109] http://identi.ca/kernellogauthor
[110] http://twitter.com/kernellogauthor
[111] mailto:thl@ct.de
[112] mailto:thl@ct.de
Copyright © 2012 Heise Medien