Large File Support
Large File Support (englisch fĂŒr âUnterstĂŒtzung groĂer Dateienâ) ist eine Eigenschaft von Betriebssystemen oder Dateisystemen, sehr groĂe Dateien öffnen und bearbeiten zu können. HĂ€ufig gibt das verwendete System diesen Grenzwert vor, bei einigen (Ă€lteren) Linux-Versionen sind dies z. B. 2 GiB oder bei FAT32 4 GiB. GroĂe Datenbanken auf Servern, Bildbearbeitung oder Videoschnitt benötigen aber hĂ€ufig groĂe Dateien (engl. Large Files), die deutlich umfangreicher sind, so dass eine solche Anwendung von einer kleinen GröĂenbeschrĂ€nkung fĂŒr Dateien nicht betroffen sein darf.
Beschreibung
[Bearbeiten | Quelltext bearbeiten]Das Problem liegt bei den ĂŒber Jahrzehnte sehr verbreiteten 32-Bit-Betriebssystemen in der GröĂenbeschrĂ€nkung von Integer-Zahlen. Eine 32-Bit-Integer-Zahl kann nur Werte bis 2 GiB (mit Vorzeichen) oder 4 GiB (ohne Vorzeichen) darstellen. Zur UnterstĂŒtzung sehr groĂer Dateien muss daher in 32-Bit-Programmen ein neuer Datentyp und zugehörige Betriebssystemfunktionen eingefĂŒhrt werden, was ein Umschreiben alter Programme erforderlich macht. Ăltere Versionen und insbesondere nicht mehr gewartete Programme können daher selbst bei Existenz eines Large File Support nur Dateien mit einer maximalen GröĂe von 2 oder 4 GiB verarbeiten.
Die Entwicklung einer API mit 64-Bit Eigenschaften kam durch die Entwicklung der Festplatten zustande, die Anfang der 1990er Jahre die Gigabyte-Grenze durchbrachen. AnschlieĂend entwickelte Dateisysteme stellten sich darauf ein â darunter das FreeBSD UFS2, das Linux ext2 (1993) und Windows NTFS (1993). Die FunktionalitĂ€t des Betriebssystemkerns wurde dabei in verschiedener Art an die Applikationen durchgereicht, bis man sich im Unix-Umfeld beim herstellerĂŒbergreifenden âLarge File Summitâ von 1996 auf eine gemeinsame API einigte.[1] Diese wurde mit Single UNIX Specification Version 2 (UNIX 98) festgeschrieben.
Die Arithmetik in den zugehörigen C Compilern wurde als neuer 64-Bit âlong longâ Datentyp in C mit der Standardisierung fĂŒr C99 (ab 1995) hinzugefĂŒgt. Dies folgte aus der Entwicklung der Betriebssysteme fĂŒr 32-Bit-Architekturen zur Nutzung eines ILP32-Programmiermodells, bei der die traditionellen Datentypen âintâ, âlongâ, âpointerâ jeweils 32-Bit lang sind. Die traditionellen Funktionen âftellâ und âfseekâ waren damit auf 32 Bit beschrĂ€nkt. FĂŒr Posix âftelloâ / âfseekoâ sowie Windows â_ftelli64â / â_fseeki64â fĂŒhrten die Hersteller einen 64-Bit-Datentyp ein â anfangs mit unterschiedlicher Benennung.
Umsetzung
[Bearbeiten | Quelltext bearbeiten]Die Ăbernahme der LFS API in 32-Bit Programme blieb lange unvollstĂ€ndig. Eine Untersuchung aus dem Jahre 2002 zeigte, dass auch Basisbibliotheken des Betriebssystems noch ohne LFS UnterstĂŒtzung ausgeliefert wurden, und damit indirekt zahlreiche Anwendungen beschrĂ€nkten.[2] Die vielgenutzte zlib Bibliothek unterstĂŒtzte den 64-Bit Zusatz auf 32-Bit Plattformen erst ab 2006.[3]
Im Bereich der PC/Workstations erledigte sich das Problem letztlich dadurch, dass nur noch 64-Bit-Architekturen eingesetzt wurden. Microsoft Windows Server 2008 war die letzte Server-Version, die in 32 Bit ausgeliefert wurde.[4] Redhat Enterprise Linux 7 wurde bei der Erstveröffentlichung 2014 nur noch als 64-Bit Betriebssystem bereitgestellt.[5] Das Ubuntu Linux stoppte 2019 die Auslieferung als 32-Bit Betriebssystem.[6] Nvidia stoppte die Entwicklung von 32-Bit Treibern 2018 und liefert seit Januar 2019 auch keine Updates mehr.[7] Mac OS von Apple stoppte 2018 die Entwicklung von 32-Bit, sodass macOS Mojave nur noch als 64-Bit Betriebssystem zur VerfĂŒgung steht.[8] Mit Microsoft Windows 10 wird die 32-Bit UnterstĂŒtzung auf dem Desktop noch bis 2025 gepflegt, da es Anfang 2020 ĂŒberhaupt erst die letzten Altversionen (Windows-7, Windows-8) ersetzt hat, die teils noch auf i386 Architekturen eingesetzt wurden.[9] Microsoft Windows 11 wird jedoch seit der Erstveröffentlichung 2021 nur als 64-Bit Betriebssystem bereitgestellt.[10]
Im Bereich der mobilen GerĂ€te fordert Google die native UnterstĂŒtzung von 64-Bit durch Applikationen seit August 2019,[11] sodass eine AbkĂŒndigung der 32-Bit UnterstĂŒtzung in Android vorbereitet wird.[12] Die Umstellung auf 64-Bit begann 2014, als alle neueren Prozessoren nur noch in 64-Bit angekĂŒndigt wurden, und mit Android 5 (âLollipopâ) ein passendes Betriebssystem in diesem Jahr bereitgestellt wurde.[13][12] Apple hatte die Umstellung schon vorher mit dem 64-Bit Apple A7 begonnen, der 2013 vorgestellt wurde. Google lieferte den Entwicklerarbeitsplatz unter Linux dann ab 2015 nur noch fĂŒr 64-Bit aus.[14] Im Mai 2019 lag die Verbreitung von Android-Versionen unterhalb 5 noch bei etwa zehn Prozent.[15] FĂŒr den Google Play App Store wurde verfĂŒgt, dass ab August 2019 immer auch 64-Bit Versionen der Apps bereitgestellt werden mĂŒssen, ausgenommen davon waren Spiele, fĂŒr die diese Anforderung ab August 2021 gilt.[16] Da App-Entwickler sich auf ein Kompilat konzentrieren, haben viele Hersteller ab Mitte 2019 die Version 5 als Mindestversion angesetzt, beispielsweise Niantic.[17] Eine 32-Bit Version war anschlieĂend nur noch schwer erhĂ€ltlich.[18] Die Vorabversionen von Android 12 ab 2020 boten keinen 32-bit Emulator fĂŒr Entwickler mehr an.[19] Android 12 wurde im Oktober 2021 veröffentlicht, der Marktanteil von Android-Versionen bis Version 4 war bis April 2021 auf unter 2 % gefallen.[20]
AuĂer fĂŒr Embedded-Plattformen mit ihren spezialisierten Programmen, schwindet die Beachtung des Large File Support im Programmcode damit ab 2020.
Verwandte Probleme
[Bearbeiten | Quelltext bearbeiten]Insbesondere das Jahr-2038-Problem zeigt auf, dass die traditionelle Darstellung von Zeitstempeln als 32-Bit âlongâ zu Problemen fĂŒhren kann. Diese werden sich mit dem Ăbergang zu reinen 64-Bit Systemen ebenfalls ĂŒberholen. Zwischenzeitlich wurde begonnen, auch auf 32-Bit Systemen einen 64-Bit Zeitstempel verfĂŒgbar zu machen. In der Win32 API fĂŒhrte das dazu, dass neue Funktionen mit 64-Bit Zeitstempel das Suffix â64â bekamen, und entsprechend die 64-Bit DateilĂ€ngen durch ein angehĂ€ngtes Suffix âi64â markiert wurden â durchaus auch in allen vier Kombinationen (findfirst32, findfirst64, findfirst32i64, findfirst64i32).[21] Die UNIX98 API dagegen fĂŒhrt mit â_LARGEFILE64_SOURCEâ zusĂ€tzliche Funktionen mit dem Suffix â64â ein.
Mit der large-file API verwandt sind BlockzĂ€hler fĂŒr Massenspeicher, die durch eine ĂŒbliche GröĂe der Datenblöcke von 512 Bytes erst spĂ€ter an die Begrenzung der 32-Bit Zahlen fĂŒhrte. Als Festplatten die GröĂe von 2 Terabyte erreichten (um 2010) musste daher der Master Boot Record als Partitionstabelle durch die GUID Partition Table ersetzt werden, der fĂŒr die LBA (linear block address) dann 64-Bit ZĂ€hler definierte. Die in unixoiden System verwendeten inode-ZĂ€hler mussten ebenfalls aufgeweitet werden, ebenso wie andere DateizĂ€hler (beispielsweise mit den Funktionen stat64 / setrlimit64). Die Ăberarbeitung des Linux Kernels erfolgte um 2001 zur Version 2.4, zusammen mit der EinfĂŒhrung der LFS UnterstĂŒtzung, die dann von der glibc ĂŒbernommen wurde.[22] Da die Umstellung zeitgleich erfolgte, werden bei der GNU-C-Bibliothek fĂŒr Linux mit der Aktivierung von 64-Bit LFS in 32-Bit-Architekturen auch die inode-BlockzĂ€hler und verwandte Funktionen auf 64-Bit umgestellt.[23]
Das Dateisystem ext3 von 2001 ĂŒbernahm dann im Treiber einige 64-Bit Werte, blieb aber auf dem Massenspeicher weiter auf 32-Bit BlockzĂ€hler begrenzt.[22] Da man hier meist im Advanced Format von 4 Kilobyte Blöcken arbeitet, liegt das Maximum hier typisch bei 8 oder 16 Terabyte.[22] GröĂere Massenspeicher im Bereich dutzender Terabyte mussten dann mit XFS formatiert werden, die 64-Bit inodes auch im Datenformat unterstĂŒtzen, und somit bis in den Exabyte-Bereich vordringen.[24][25] Die ersten 16-Terabyte-Festplatten wurden ab Mitte 2019 ausgeliefert. Als Solid-State-Drive gab es Massenspeicher mit 32 TiB schon ab 2016, und fĂŒr 2020 wurden diese jenseits 100 TiB angekĂŒndigt.[26] Mit ext4 wurden die BlockzĂ€hler auf 48-Bit Werte aufgeweitet, allerdings bleiben Dateien auf maximal 16 Terabyte (32-Bit mal 4-KiB) beschrĂ€nkt.
Siehe auch
[Bearbeiten | Quelltext bearbeiten]Weblinks
[Bearbeiten | Quelltext bearbeiten]Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- â Adding Large File Support to the Single UNIXÂź Specification. The Open Group, 14. August 1996 (englisch).
- â Guido U. Draheim: Distro Makers. In: Largefile âș Systems. 13. Januar 2002. Auf Sourceforge.net, abgerufen am 16. Juni 2026 (englisch).
- â https://www.zlib.net/ChangeLog.txt
- â Panagiotis Kolokythas: Windows Server 2008: Microsofts letztes 32-Bit-Betriebssystem fĂŒr Server. PC Welt, 28. Mai 2007.
- â Are 32-bit applications supported in RHEL 7 or later releases? Red Hat, Februar 2014 (englisch).
- â Will Cooke: Intel 32bit packages on Ubuntu from 19.10 onwards. Canonical, 2. Juni 2019 (englisch).
- â Matthew Addams: Nvidia discontinues support for 32-bit Windows platforms. Windows Report, 12. April 2018 (englisch).
- â Steven Silver: Mojave is Apple's last version of macOS to support 32-bit apps. Apple Insider, 5. Juni 2018 (englisch).
- â Der Support fĂŒr Windows 7 endet am 14. Januar 2020. Microsoft, abgerufen am 9. Februar 2020.
- â Florian MĂŒssig: Systemvoraussetzungen fĂŒr Windows 11: Wann lĂ€uft es, woran kann es scheitern. Heise, 25. Juni 2021.
- â Andreas Sebayang: Auf dem Weg zu reinen 64-Bit-Android-Apps. Golem, 17. Januar 2019.
- 1 2 mw: Google kĂŒndigt Ende von 32-Bit-Android-Apps per 2021 an. IT Magazin, 17. Januar 2019.
- â 64-Bit-Android: Diese Prozessoren gibt es, diese VerĂ€nderungen kommen. Android User, 26. August 2014.
- â Platform-tools 23.1.0 Linux changed to 64-bit without notice. Android Public Tracker, 11. Dezember 2015 (englisch): âIt turns out the android-sdk-linux/platform-tools content is 32-bit ELF in 23.0.1 but 64-bit ELF in 23.1_rc1 and 23.1.0. [âŠ] I set ANDROID_EMULATOR_FORCE_32BIT=true [âŠ] 23.0.1 is the last 32-bit Linux build.â
- â F. Tenzer: Anteile der verschiedenen Android-Versionen an allen GerĂ€ten mit Android OS weltweit im Zeitraum 01. bis 07. Mai 2019. Statista, 14. November 2019.
- â Google kĂŒndigt Ende von 32-Bit-Android-Apps per 2021 an. IT Magazine, 17. Januar 2019.
- â Elia Del Favero: Ingress und PokĂ©mon Go brauchen bald mindestens Android 5. 10. Juni 2019.
- â Why is 32bit 0.159.0 version apk still not available? Reddit TheSilphRoad/, Dezember 2019 (englisch).
- â Get Android 12. Google (englisch): âNote that 32-bit Android emulator system images are not supported in Android 12.â
- â Anteile der verschiedenen Android-Versionen an der Internetnutzung von GerĂ€ten mit Android OS weltweit im April 2021. Statista, 3. Mai 2021.
- â CTF Funktionsreferenz findfirst. Microsoft, abgerufen am 10. Februar 2020.
- 1 2 3 Andreas Jaeger: Large File Support in Linux. SUSE GmbH, 15. Februar 2015 (englisch).
- â linux/bits/stat.h: /* Note stat64 has the same shape as stat for x86-64. */
- â MJ Rutter: The 64 bit inode problem. Abgerufen am 10. Februar 2020 (englisch).
- 1 2 Ext4 Howto. kernel.org, 11. Februar 2019 (englisch): âAlthough very large fileystems are on ext4's feature list, current e2fsprogs currently still limits the filesystem size to 2^32 blocks (16TiB for a 4KiB block filesystem). Allowing filesystems larger than 16T is one of the very next high-priority features to complete for ext4.â
- â Thomas Scherer: Samsungs 32-TB-SSD: Der Anfang vom Ende der Festplatte. Elektor, 15. August 2016.