zurück zum Artikel

Kernel-Log – Was 3.6 bringt (1): Dateisysteme und Storage

| Thorsten Leemhuis

Linux 3.6 bringt Sicherheitsverbesserungen für das Temp-Verzeichnis sowie Quota- und Backup-Funktionen für Btrfs. Über neue Schnittstellen kann der Kernel im Betrieb von Kapazitätsänderungen verwendeter Partitionen erfahren.

Am Freitag vergangener Woche hat Linus Torvalds die zweite Vorabversion von Linux 3.6 veröffentlicht [1]. Aufgrund seines Urlaubs erschien diese nicht wie gewohnt eine, sondern erst zwei Wochen nach der Freigabe der ersten Vorabversion [2]. Die Menge der seitdem in den Hauptentwicklungszweig [3] einfließenden Änderungen ist auf einem normalen Niveau.

Alle größeren Neuerungen für Linux 3.6 haben Torvalds und seine Mitstreiter wie üblich zu Beginn der Entwicklung [4] aufgenommen; es ist selten, dass die Kernel-Entwickler in der jetzt laufenden Stabilisierungsphase noch größere Änderungen integrieren oder Neuerungen wieder entfernen.

Das Kernel-Log [5] kann daher bereits jetzt einen umfassenden Überblick über die wichtigsten Neuerungen von Linux 3.6 geben. Der erfolgt wie gewohnt in einer Artikelserie, die nacheinander die verschiedenen Bereiche von Linux behandelt. Den Anfang macht die folgende Beschreibung der wichtigsten Neuerungen rund um Dateisysteme und die Unterstützung für Storage-Hardware; die später folgenden Artikel werden sich mit Grafiktreibern, Netzwerk-Unterstützung, Architektur-Code und Treibern für andere Hardware beschäftigen.

Das weiterhin experimentelle Btrfs-Dateisystem unterstützt nun Quotas für Subvolumes [6]; für diese separierten Bereiche innerhalb des Dateisystems wird sich so reglementieren lassen, wie viel Platz sie maximal belegen dürfen (u. a. 1 [7], 2 [8]). Eine weitere Btrfs-Neuerung ist "send/receive" (u. a. 1 [9]). Über diese Schnittstellen können Userspace-Programme die Unterschiede zwischen zwei Snapshots bestimmen und in einer Datei sichern beziehungsweise solche Sicherungen bei Bedarf zurückspielen; das ist vor allem für inkrementelle, atomare Backups interessant. Einige weitere Erläuterungen zu dieser auch von ZFS gebotenen Funktion [10] liefert ein LWN.net-Artikel [11]. Die Userspace-Werkzeuge [12] zur Verwendung des Ganzen finden sich derzeit noch im Entwicklerzweig der Btrfs-Dateisystemtools [13]; diesen und einige weitere Hinweise zu den Änderungen an Btrfs erläutert [14] Btrfs-Maintainer Chris Mason in seinem Haupt-Git-Pull-Request [15].

Der Ext4-Code speichert Quota-Informationen laut Commit-Kommentar [16] nicht mehr in sichtbaren Dateien, sondern als versteckte Inodes bei den Metadaten; dadurch werde der Quota-Support eine Funktion erster Klasse ("first class supported feature"). Eine andere Änderung [17] am Ext4-Code kann die Performance beim Überschreiben von Dateien steigern, wie Theodore Ts'o erläutert [18].

Schon aus 1996 stammt die Grundidee zu einer mit Linux 3.6 umgesetzten Funktion [19], keinen Hard- und Softlinks in Verzeichnissen mit Sticky-Bit (etwa /tmp/) zu folgen, die in übergeordnete Verzeichnisse führen. Wie LWN.net in einem Artikel [20] erläutert, unterbindet diese via Sysctl einschaltbare Funktion einen Trick, den Angreifer häufig einsetzen, um sich über als Root laufende Hintergrunddienste höhere Rechte zu verschaffen.

Über eine neue Schnittstelle [21] können Userspace-Programme dem Kernel mitteilen [22], wenn sich die Größe einer verwendeten Partition ändert; dadurch kann der Kernel nun auch bei eingehängten oder anderweitig verwendeten Partitionen zur Laufzeit von Größenänderungen erfahren und die neuen Gegebenheiten fortan nutzen. Das Programm Resizepart wird die neue Kernel-Schnittstelle nutzen; es wurde in die zweite Vorabversion von Util-Linux 2.22-rc2 integriert [23], die kürzlich erschien [24].

Änderungen [25] am Software-RAID-Code des MD-Subsystems sollen die Performance von RAIDs verbessern, bei denen einige oder alle Datenträger SSDs sind.

Der Device Mapper kann nun [26] die RAID-10-Funktionen des MD-Subsystems verwenden.

Nach jahrelanger Entwicklung zog eine größere Patchsammlung [27] in den Memory-Management- und Dateisystem-Code von Linux 3.6 ein, durch den das Ablegen von Swap-Dateien auf NFS-Freigaben nun zuverlässig funktionieren soll (u. a. 1 [28]); das ist etwa für Thin Clients ohne lokale Datenträger interessant.

Der seit Linux 3.4 [29] zum Kernel gehörende Treiber virtio-scsi unterstützt nun [30] Hotplug, wodurch sich Datenträger bei virtualisierten Systemen nun zur Laufzeit hinzufügen oder entfernen lassen.

Mehr als eine Woche nach Ende des Merge Windows [31] hat Linus Torvalds noch den als Staging-Code markierten Fabric-Treiber tcm_vhost integriert [32], mit dem sich SCSI-Geräte eines Wirtssystems ohne viel Overhead in mit KVM virtualisierten Gastsystemen nutzen lassen [33]; Nicholas A. Bellinger hat einige Messergebnisse zur Technik veröffentlicht [34].

Der Treiber aacraid, der unter anderem Storage-Adapter von Adaptec anspricht, unterstützt nun [35] den "Async. (performance)"-Modus, den die Modelle der Serie 7 bieten.

Durch einige Umbauten am VFS (Virtual File System) und dem darauf aufbauenden Dateisystemcode konnten die Entwickler den Kernel-Daemon pdflush entfernen [36], der bislang [37] alle fünf Sekunden das Schreiben der Superblocks ausgelöst hat, wenn es Änderungen [38] an den dort gespeicherten Daten gab. Dieses regelmäßige Aufwachen war unter Stromsparaspekten ungeschickt.

Das "XFS status update for July 2012 [39]" erwähnt einige der in Linux 3.6 eingeflossenen Änderungen [40] an XFS; darunter Performance-Verbesserungen für den Inode Allocator.

Einige weitere Neuerungen finden sich in der folgenden Liste mit den englischen Commit [41]-Überschriften der jeweiligen Änderung. Die Einträge verlinken genau wie viele Verweise im vorangegangenen Text auf das Webfrontend [42] des von Linus Torvalds gepflegten Git-Zweigs auf Kernel.org [43]. Der über diese Links angezeigte Commit-Kommentar und der darunter ausgegebene Patch [44] liefern zahlreiche weitere Informationen zur jeweiligen Änderung.

Btrfs

File systems

Storage

Ein "C" im Bereich zwischen den eckigen Klammern kennzeichnet Commits mit Änderungen an Kconfig-Dateien, welche die Konfigurationsoptionen samt der zugehörigen Hilfetexte enthalten. Mit "I" ausgezeichneten Patches rüsten neue PCI- oder USB-IDs nach; jene mit "D" 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; Patches mit einer "9" sind 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 [137] auf heise open [138]. Neue Ausgaben des Kernel-Logs [139] werden auf den Identi.ca [140]- und Twitter [141]-Konten "@kernellog" erwähnt; die englischen, bei den Kollegen von "The H [142]" erscheinenden Übersetzungen auf den Identi.ca [143]- und Twitter [144]-Konten "@kernellog2". Gelegentlich zwitschert der Autor des Kernel-Logs unabhängig davon über einige Kernel-Log-Themen bei Identi.ca [145] und Twitter [146] als "@kernellogauthor".

(thl [147])

(thl [148])


URL dieses Artikels:
https://www.heise.de/-1671225

Links in diesem Artikel:
[1] http://article.gmane.org/gmane.linux.kernel/1344692
[2] https://www.heise.de/news/Erste-Vorabversion-des-Linux-Kernels-3-6-1659349.html
[3] http://www.heise.de/glossar/entry/Hauptentwicklungslinie-397933.html
[4] https://www.heise.de/glossar/entry/Entwicklungszyklus-des-Linux-Kernels-397915.html
[5] http://www.heise.de/glossar/entry/Kernel-Log-397909.html
[6] https://www.heise.de/tests/Das-Dateisystem-Btrfs-221863.html
[7] http://git.kernel.org/linus/8ea05e3a4262b9e6871c349fa3486bcfc72ffd1a
[8] http://git.kernel.org/linus/bcef60f249034f69e89e544461cbfecb68975595
[9] http://git.kernel.org/linus/31db9f7c23fbf7e95026143f79645de6507b583b
[10] http://docs.oracle.com/cd/E19963-01/html/821-1448/gbchx.html
[11] http://lwn.net/Articles/506244/
[12] http://git.kernel.org/?p=linux/kernel/git/mason/btrfs-progs.git;a=commitdiff;h=f1c24cd80dfd037407cdee85181646adca6dd5bb
[13] http://git.kernel.org/?p=linux/kernel/git/mason/btrfs-progs.git;a=summary
[14] http://article.gmane.org/gmane.linux.kernel/1333887
[15] http://www.heise.de/glossar/entry/Git-Pull-Request-397971.html
[16] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=7c319d328505b7781b65238ae9f53293b5ee0ca8
[17] http://git.kernel.org/linus/4bd809dbbf177ad0c450d702466b1da63e1b4b7e
[18] http://article.gmane.org/gmane.comp.file-systems.ext4/33519
[19] http://git.kernel.org/linus/800179c9b8a1e796e441674776d11cd4c05d61d7
[20] http://lwn.net/Articles/503660/
[21] http://git.kernel.org/linus/c83f6bf98dc1f1a194118b3830706cebbebda8c4
[22] http://thread.gmane.org/gmane.linux.kernel/1325114
[23] http://www.kernel.org/pub/linux/utils/util-linux/v2.22/v2.22-rc2-ChangeLog
[24] http://article.gmane.org/gmane.linux.kernel/1343738
[25] http://git.kernel.org/linus/9dedf60313fa4dddfd5b9b226a0ef12a512bf9dc
[26] http://git.kernel.org/linus/63f33b8dda88923487004b20fba825486d009e7b
[27] http://thread.gmane.org/gmane.linux.kernel/1326658
[28] http://git.kernel.org/linus/a564b8f0398636ba30b07c0eaebdef7ff7837249
[29] https://www.heise.de/hintergrund/Kernel-Log-Was-3-4-bringt-1-Infrastruktur-1559677.html
[30] http://git.kernel.org/linus/365a7150094114a0f8ef0b6164e6b04b519039e8
[31] https://www.heise.de/glossar/entry/Entwicklungszyklus-des-Linux-Kernels-397915.html
[32] http://git.kernel.org/linus/057cbf49a1f08297877e46c82f707b1bfea806a8
[33] http://wiki.qemu.org/Features/VirtioSCSI/TCM_Overview
[34] http://thread.gmane.org/gmane.linux.kernel.virtualization/16469
[35] http://git.kernel.org/linus/85d22bbf6787c240921539bba224eb221bfb8ee1
[36] http://git.kernel.org/linus/f0cd2dbb6cf387c11f87265462e370bb5469299e
[37] http://git.kernel.org/linus/6601fac822778aa6003aed37d8ba7acdc9a4f369
[38] http://thread.gmane.org/gmane.linux.kernel/1333054
[39] http://thread.gmane.org/gmane.linux.kernel/1341898
[40] http://thread.gmane.org/gmane.linux.kernel/1335249
[41] http://www.heise.de/glossar/entry/Commit-397925.html
[42] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=tree
[43] http://www.kernel.org/
[44] http://www.heise.de/glossar/entry/Patch-395546.html
[45] http://git.kernel.org/linus/02db0844beffc1c4e99d750be58ffb3ed95d6d62
[46] http://git.kernel.org/linus/6f72c7e20dbaea55f04546de69586c84a3654503
[47] http://git.kernel.org/linus/5d13a37bd5327220e13329943d1228acfbe5934a
[48] http://git.kernel.org/linus/96c3f4331a8c1cd0a58307e4ac7e73e09d7dab23
[49] http://git.kernel.org/linus/67c9684f48ea9cbc5e9b8a1feb3151800e9dcc22
[50] http://git.kernel.org/linus/df57dbe6bf73cc44305d81c24982a11da49b1f79
[51] http://git.kernel.org/linus/bed92eae26ccf280d1a2168b7509447b56675a27
[52] http://git.kernel.org/linus/630dc772ea51bca3ec6fac609f450cbe0cafd1d6
[53] http://git.kernel.org/linus/f4c738c2e7bc6d696b0d60155df7ea01684962b6
[54] http://git.kernel.org/linus/18077bb413687f96bd168efcfb2b8778529e3b74
[55] http://git.kernel.org/linus/47237687d73cbeae1dd7a133c3fc3d7239094568
[56] http://git.kernel.org/linus/b2b5ef5c8e89f19b68c174bf246f3ca212dbf0bc
[57] http://git.kernel.org/linus/ec2e4523fdba88317e06d0c7a88af3a0860447fc
[58] http://git.kernel.org/linus/9094fad1ed90caebd25b1bdec3c8982d079356ee
[59] http://git.kernel.org/linus/5478f9ba9a34d660eb3227dcd16314689c51f946
[60] http://git.kernel.org/linus/28ea5290d78a7fc87a4b4f7cedcaa662f5b8d977
[61] http://git.kernel.org/linus/b8030603d94a231c7fdee4c1ac369537f1fb8fb0
[62] http://git.kernel.org/linus/c95b8eeda3efcb419ea0a3f864cf99e32c038c21
[63] http://git.kernel.org/linus/25e266320caca88a4463385b6f4ef696111d2c9a
[64] http://git.kernel.org/linus/2503a0dba989486c59523a947a1dcb50ad90fee9
[65] http://git.kernel.org/linus/a0e731839dd461eee0fe2dc026e0965e961e2730
[66] http://git.kernel.org/linus/1a500f010fb2d121c58f77ddfde2eca1bde3bfcd
[67] http://git.kernel.org/linus/faaf946a7d5b79194358437150f34ab4c66bfe21
[68] http://git.kernel.org/linus/093b2bdad3221e3fae3c26d89387e7297a157664
[69] http://git.kernel.org/linus/2dc7e1c03316940dec899fa3206a595de000e99b
[70] http://git.kernel.org/linus/ddfbefbd393fb1a935bdf27cba5ad2eb24a76e75
[71] http://git.kernel.org/linus/be4cb9e3d4ef7af1aaf66cebab1391ff91b48beb
[72] http://git.kernel.org/linus/06fd516c1a504828780fcd81dfe21f94dec4c868
[73] http://git.kernel.org/linus/34e5053fbe88800f5c2c6cbc849abb5a9f390974
[74] http://git.kernel.org/linus/ebfc3b49a7ac25920cb5be5445f602e51d2ea559
[75] http://git.kernel.org/linus/8e8ad8a57c75f3bda2d03a4c4396a9a7024ad275
[76] http://git.kernel.org/linus/4d47603d9703e6fff8ff2618bc108d6280e2439d
[77] http://git.kernel.org/linus/eb04c28288bb0098d0e75d81ba2a575239de71d8
[78] http://git.kernel.org/linus/a51d9eaa41866ab6b4b6ecad7b621f8b66ece0dc
[79] http://git.kernel.org/linus/98c350cda2c14a343d34ea01a3d9c24fea5ec66d
[80] http://git.kernel.org/linus/5accdf82ba25cacefd6c1867f1704beb4d244cdd
[81] http://git.kernel.org/linus/9520628e8ceb69fa9a4aee6b57f22675d9e1b709
[82] http://git.kernel.org/linus/d9c95bdd53a8d9116d269c91ce3d151472e6bcd6
[83] http://git.kernel.org/linus/eee458936b52bd3a9ff0ff577313b637905fff08
[84] http://git.kernel.org/linus/a4d05d315a4fdf5ccb0dbf0ce38bac12d522d33e
[85] http://git.kernel.org/linus/9d46be294d12871adf4206f89168b14d27adb8b5
[86] http://git.kernel.org/linus/9e9ad5f408889db6038a59b38ede29ff1ba9ef2f
[87] http://git.kernel.org/linus/8e2e00473598dd5379d8408cb974dade000acafc
[88] http://git.kernel.org/linus/9e6c5829b07c9ba6668807631914efc557fab059
[89] http://git.kernel.org/linus/30d904947459cca2beb69e0110716f5248b31f2a
[90] http://git.kernel.org/linus/bc18f4b1c850ab355e38373fbb60fd28568d84b5
[91] http://git.kernel.org/linus/546f04ef716dd49521774653d8b032a7d64c05d9
[92] http://git.kernel.org/linus/d95852777bc8ba6b3ad3397d495c5f9dd8ca8383
[93] http://git.kernel.org/linus/ddda8e0aa8b955e20cb80908189bfa154ab54837
[94] http://git.kernel.org/linus/1c606fb74c758beafd98cbad9a9133eadeec2371
[95] http://git.kernel.org/linus/89d77c8fa8e6d1cb7e2cce95b428be30ddcc6f23
[96] http://git.kernel.org/linus/a427b9ec4eda8cd6e641ea24541d30b641fc3140
[97] http://git.kernel.org/linus/e3074507d93a0b7f1430dec7c6addb307d4f30da
[98] http://git.kernel.org/linus/bc452b4b65bd589083a7a7ba4f14f85dfc8454fa
[99] http://git.kernel.org/linus/f29e5956aebafe63f81e80f972c44c4a666e5c7f
[100] http://git.kernel.org/linus/060287b8c467bf49a594d8d669e1986c6d8d76b0
[101] http://git.kernel.org/linus/a3f5f075c2e2c52c9c656c54ea77ceff5b2e1e25
[102] http://git.kernel.org/linus/b5d38e9bf1b0c4db19e336b59b38dfb5d28bf1bf
[103] http://git.kernel.org/linus/a694d1b5916a486ce25fb5f2b39f2627f7afd5f3
[104] http://git.kernel.org/linus/958502d836cf18c6f39bdb787b76d53839e4d8aa
[105] http://git.kernel.org/linus/9bb2f334b9b5f2eb6030b7988b7f2302c3115bbb
[106] http://git.kernel.org/linus/0b728e1911cbe6e24020727c3870628b9653f32a
[107] http://git.kernel.org/linus/00cd8dd3bf95f2cc8435b4cac01d9995635c6d0b
[108] http://git.kernel.org/linus/d18e9008c377dc6a6d2166a6840bf3a23a5867fd
[109] http://git.kernel.org/linus/049b3c10eecd0a5f3605fa3cd13f638593213ccb
[110] http://git.kernel.org/linus/d9457dc056249913a7abe8b71dc09e427e590e35
[111] http://git.kernel.org/linus/372cc85ec6820c91b4eeff303880f25cb5a00ab5
[112] http://git.kernel.org/linus/ff0173c1a3ce003e361a8045ded905c285c3f08f
[113] http://git.kernel.org/linus/97b414e119ccc7216e29c3bd62fe1a1797f21404
[114] http://git.kernel.org/linus/a051661ca6d134c18599498b185b667859d4339b
[115] http://git.kernel.org/linus/33d07c0dfab902a7c5420587984497dc05ab5c9c
[116] http://git.kernel.org/linus/eb850de608cc22e0199b3797cd5c0076bae6cda0
[117] http://git.kernel.org/linus/542f90381422676544382d4071ba44a2de90a0c1
[118] http://git.kernel.org/linus/e49e582965b3694f07a106adc83ddb44aa4f0890
[119] http://git.kernel.org/linus/f9a8e0cd261fc05820539b0ea613686a32795406
[120] http://git.kernel.org/linus/55f2b8bdb0c7387eb2dc645b9ecbe5d0faa6b54e
[121] http://git.kernel.org/linus/b1354cbb5bfce28f2e1ed28d77b362dfdfca638d
[122] http://git.kernel.org/linus/166a2967b45ede2e2e56f3ede3cd32053dc17812
[123] http://git.kernel.org/linus/f54a9d0e59c4bea3db733921ca9147612a6f292c
[124] http://git.kernel.org/linus/ed3efc1ccc4421865b64d902cd410f6733c85a49
[125] http://git.kernel.org/linus/4efafee02ff604627234d42a3ff9f331e3605c9d
[126] http://git.kernel.org/linus/b650352dd3df36164e3427bff3f33bc06ac47642
[127] http://git.kernel.org/linus/1471d41a5bdfdf83ed1e5c2148a9763e64b1f53b
[128] http://git.kernel.org/linus/b17459c05000fdbe8d10946570a26510f86ec0f6
[129] http://git.kernel.org/linus/3a8b788f61a5b85f3a3a4630dc5f4c13b91e1bba
[130] http://git.kernel.org/linus/eb47aa2c2145f106a9ba2f95696b16520f1c8119
[131] http://git.kernel.org/linus/173edbb2c326ce4839bae8caa868fe83ce46dda3
[132] http://git.kernel.org/linus/f3d8af9e27c8341222b9cce50b870b87239a1629
[133] http://git.kernel.org/linus/efb6c717b764e77cadc20bc9d9ffdf16bc1eedf5
[134] http://git.kernel.org/linus/6072609d9bb91ff54aee3ef29304bd5b4fc88aae
[135] http://git.kernel.org/linus/2bd37f0fde99cbf8b78fb55f1128e8c3a63cf1da
[136] http://git.kernel.org/linus/54de1f1c44c3522dbdc2201be1f65e733526de51
[137] http://www.heise.de/open/kernel-log-3007.html
[138] http://www.heise.de/open/
[139] http://www.heise.de/glossar/entry/Kernel-Log-397909.html
[140] http://identi.ca/kernellog
[141] http://twitter.com/kernellog
[142] http://www.h-online.com
[143] http://identi.ca/kernellog2
[144] http://twitter.com/kernellog2
[145] http://identi.ca/kernellogauthor
[146] http://twitter.com/kernellogauthor
[147] mailto:thl@ct.de
[148] mailto:thl@ct.de