zurück zum Artikel

Kernel-Log – Was 3.3 bringt (2): Dateisysteme und Storage

| Thorsten Leemhuis

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.

Mehr Infos

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.

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).

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].

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]).

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.

Mehr Infos

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 folgenden Links führen zu einigen kleineren, aber keineswegs unbedeutende Änderungen:

Dateisysteme

Storage

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