Поддержка больших файлов
Поддержка больших файлов - это свойство операционных или файловых систем , позволяющее открывать и редактировать очень большие файлы. Часто используемая система не превышает этого предела, например, некоторые (более старые) версии Linux . Б. 2 ГиБ или с FAT32 4 ГиБ. Большие базы данных на серверах, редактирование изображений или видео, но часто требуются большие файлы (англ. Large files ), которые значительно больше, поэтому на такое приложение не должно влиять ограничение на небольшой размер файлов.
описание
Проблема 32-битных операционных систем , которые были широко распространены на протяжении десятилетий, заключается в ограничении размера целых чисел . 32-битные целые числа только до 2 ГиБ (со знаком ) или 4 ГиБ (без знака). Поэтому для поддержки очень больших файлов в 32-разрядных программах необходимо ввести новый тип данных и связанные с ним функции операционной системы, что требует перезаписи старых программ. Поэтому более старые версии и особенно программы, которые больше не поддерживаются, могут обрабатывать только файлы с максимальным размером 2 или 4 ГиБ, даже если существует поддержка больших файлов .
Разработка API с 64-битными свойствами произошла в результате разработки жестких дисков , которые в начале 1990-х годов превысили гигабайтный лимит. Впоследствии к нему адаптировались разработанные файловые системы - среди них FreeBSD UFS2 , Linux ext2 (1993) и Windows NTFS (1993). Функциональные возможности ядра операционной системы передавались приложениям различными способами, пока общий API не был согласован в среде Unix на независимом от производителя "Саммите по большим файлам" в 1996 году. Это было установлено с помощью единой спецификации UNIX версии 2 (UNIX 98).
Арифметика в связанных компиляторах C была добавлена как новый 64-битный тип данных long long в C со стандартизацией для C99 (с 1995 г.). Это стало результатом разработки операционных систем для 32-битных архитектур с использованием модели программирования ILP32, в которой традиционные типы данных «int», «long», «pointer» имеют длину 32 бита каждый. Таким образом, традиционные функции «ftell» и «fseek» были ограничены 32 битами. Для Posix «ftello» / «fseeko» и Windows «_ftelli64» / «_fseeki64» производители ввели 64-битный тип данных - изначально с разными именами.
выполнение
Внедрение LFS API в 32-битных программах долгое время оставалось незавершенным. Исследование 2002 года показало, что даже базовые библиотеки операционной системы по-прежнему поставлялись без поддержки LFS, что косвенно ограничивало работу множества приложений. Широко используемая библиотека zlib не поддерживала 64-битное дополнение на 32-битных платформах до 2006 года.
В области ПК / рабочих станций проблема была в конечном итоге решена, поскольку использовались только 64-битные архитектуры . Microsoft Windows Server 2008 была последней 32-разрядной версией сервера. Redhat Enterprise Linux 7 был предоставлен только как 64-разрядная операционная система, когда он был впервые выпущен в 2014 году. Ubuntu Linux прекратил поставки как 32-разрядная операционная система в 2019 году. Nvidia прекратила разработку 32-разрядных драйверов в 2018 году и не предоставляет никаких обновлений с января 2019 года. Mac OS от Apple прекратила разработку 32-разрядной версии в 2018 году, поэтому macOS Mojave доступен только как 64-разрядная операционная система. В Microsoft Windows 10 поддержка 32-битной версии на рабочем столе будет сохраняться до 2025 года, поскольку в начале 2020 года она заменила только последние старые версии (Windows 7, Windows 8), некоторые из которых все еще использовались на архитектурах i386. Однако Microsoft Windows 11 была представлена только как 64-разрядная операционная система с момента ее первоначального выпуска в 2021 году.
В области мобильных устройств Google с августа 2019 года требует встроенной поддержки 64-разрядных приложений приложениями, поэтому 32-разрядная поддержка в Android прекращается . Переход на 64-битный процесс начался в 2014 году, когда все новые процессоры были объявлены только в 64-битном исполнении, а подходящая операционная система стала доступной в этом году с Android 5 («Lollipop»). Apple уже начала переход с 64-битного Apple A7 , который был представлен в 2013 году. С 2015 года Google поставляла рабочую станцию разработчика только под Linux для 64-разрядной версии. В мае 2019 года распространенность версий Android ниже 5 все еще составляла около десяти процентов. Для магазина приложений Google Play было оговорено, что с августа 2019 года всегда должны предоставляться 64-разрядные версии приложений, за исключением игр, к которым это требование применяется с августа 2021 года. Поскольку разработчики приложений концентрируются на одной компиляции , многие производители установили версию 5 как минимальную версию с середины 2019 года, например Niantic. Тогда было трудно получить 32-битную версию. Предварительные версии Android 12 от 2020 года больше не предлагали разработчикам 32-разрядный эмулятор. Android 12 будет выпущен в сентябре 2021 года, рыночная доля версий Android до версии 4 упала до менее 2% к апрелю 2021 года.
За исключением встроенных платформ с их специализированными программами, внимание к поддержке больших файлов в программном коде с 2020 года ослабнет.
Связанные проблемы
Проблема 2038 года, в частности, показывает, что традиционное представление меток времени как 32-битных «длинных» может привести к проблемам. Они также будут обгонять друг друга с переходом на чистые 64-битные системы. Между тем, 64-битная отметка времени также стала доступной в 32-битных системах. В Win32 API это означало, что новые функции с 64-битными отметками времени получали суффикс «64», а длины 64-битных файлов были отмечены добавленным суффиксом «i64» - конечно, во всех четырех комбинациях (findfirst32, findfirst64, findfirst32i64, findfirst64i32). API UNIX98, с другой стороны, вводит дополнительные функции с суффиксом «64» и «_LARGEFILE64_SOURCE».
Счетчики блоков для запоминающих устройств связаны с API больших файлов. Из-за обычного размера блоков данных в 512 байт 32-битные числа были ограничены только позже. Когда жесткие диски достигли размера 2 терабайта (около 2010), то основных загрузочной записи должны была быть заменена в качестве таблицы разделов по GUID таблицы разделов , которая затем определила 64-битовые счетчики для LBA ( линейный блок - адрес ). Счетчики inode, используемые в системах Unix , также должны быть расширены, как и другие счетчики файлов (например, с помощью функций stat64 / setrlimit64). Пересмотр ядра Linux до версии 2.4 произошел примерно в 2001 году вместе с введением поддержки LFS, которую затем переняла glibc. Поскольку переключение произошло одновременно с активацией 64-битной LFS в 32-битных архитектурах в библиотеке GNU-C для Linux, счетчики блоков inode и связанные функции также были переведены на 64-битные.
Затем файловая система ext3 с 2001 года приняла некоторые 64-битные значения в драйвере, но оставалась ограниченной 32-битными счетчиками блоков на запоминающем устройстве. Поскольку вы в основном работаете с расширенным форматом блоков размером 4 килобайта, максимум здесь обычно составляет 8 или 16 терабайт. Более крупные запоминающие устройства размером в несколько десятков терабайт должны были быть отформатированы с помощью XFS , которая также поддерживает 64-битные inodes в формате данных, и, таким образом, выходила за пределы эксабайтового диапазона. Первые жесткие диски объемом 16 терабайт были отгружены с середины 2019 года. В качестве твердотельных накопителей запоминающие устройства емкостью 32 ТиБ были доступны уже с 2016 года, а в 2020 году они были объявлены сверх 100 ТиБ.
Смотри тоже
- RF64 как 64-битное расширение аудиофайлов RIFF WAVE
- FAT32 + как обратно совместимое расширение файловой системы FAT (до 256 ГиБ)
- ext4 как 48-битное расширение файловой системы ext3 (> 16 ТиБ из e2fsprogs версии 1.42)
веб ссылки
Индивидуальные доказательства
- ^ Добавление поддержки больших файлов в единую спецификацию UNIX® . Открытая группа. 14 августа 1996 г.
- ↑ http://ac-archive.sourceforge.net/largefile/distros.html
- ↑ https://www.zlib.net/ChangeLog.txt
- ↑ Панайотис Колокитас: Windows Server 2008: последняя 32-разрядная операционная система Microsoft для серверов . Мир ПК. 28 мая 2007 г.
- ↑ Поддерживаются ли 32-битные приложения в RHEL 7 или более поздних версиях? . Красная шляпа. Февраль 2014 года.
- ↑ Уилл Кук: 32-битные пакеты Intel в Ubuntu начиная с 19.10 . Канонический. 2 июня 2019 г.
- ↑ Мэтью Аддамс: Nvidia прекращает поддержку 32-битных платформ Windows . Отчет Windows. 12 апреля 2018.
- ↑ Стивен Сильвер: Mojave - последняя версия macOS от Apple, поддерживающая 32-разрядные приложения . Apple Insider. 5 июня 2018 г.
- ↑ Поддержка Windows 7 истекает 14 января 2020 года . Microsoft. Проверено 9 февраля 2020 года.
- ↑ Флориан Мюссиг: Системные требования для Windows 11: когда это происходит, что может дать сбой . Горячий. 25 июня 2021 г.
- ↑ Андреас Себаянг: На пути к чистым 64-битным приложениям для Android . Голем. 17 января 2019.
- ↑ a b mw: Google объявляет об окончании 32-битных приложений для Android в 2021 году . IT-журнал. 17 января 2019.
- ↑ 64-битный Android: эти процессоры есть, эти изменения грядут . Пользователь Android. 26 августа 2014 г.
- ↑ Platform-tools 23.1.0 Linux изменен на 64-битный без предварительного уведомления. . Общедоступный трекер Android. 11 декабря 2015 г .: «Оказывается, содержимое android-sdk-linux / platform-tools - это 32-битный ELF в 23.0.1, но 64-битный ELF в 23.1_rc1 и 23.1.0. [..] Я установил ANDROID_EMULATOR_FORCE_32BIT = true [..] 23.0.1 - последняя 32-разрядная сборка Linux ».
- ↑ F. Тензер: Доля различных версий Android на всех устройствах с ОС Android во всем мире в период с 1 мая по 7 мая 2019 года . Statista. 14 ноября 2019.
- ↑ Google объявляет об окончании 32-битных приложений для Android в 2021 году . Журнал IT. 17 января 2019.
- ↑ Элиа Дель Фаверо: Ingress и Pokémon Go скоро потребуется как минимум Android 5 . 10 июня 2019.
- ↑ Почему 32-битная версия apk 0.159.0 до сих пор недоступна? . Reddit TheSilphRoad /. Декабрь 2019.
- ↑ Получите Android 12 . Google.: "Обратите внимание, что образы системы 32-битного эмулятора Android не поддерживаются в Android 12."
- ↑ Доля различных версий Android в использовании Интернета устройствами с ОС Android по всему миру в апреле 2021 года . Statista. 3 мая 2021 года.
- ↑ Ссылка на функцию CTF findfirst . Microsoft. Проверено 202002 г. 10.
- ↑ a b c Андреас Джагер: Поддержка больших файлов в Linux . SUSE GmbH. 15 февраля 2015 года.
- ↑ linux / bits / stat.h: / * Обратите внимание, что stat64 имеет ту же форму, что и stat для x86-64. * /
- ↑ MJ Rutter: Проблема с 64-битным inode . Проверено 10 февраля 2020 года.
- ↑ а б Ext4 Howto . kernel.org. 11 февраля 2019 г .: «Хотя очень большие файловые системы входят в список возможностей ext4, текущие e2fsprogs в настоящее время по-прежнему ограничивают размер файловой системы до 2 ^ 32 блоков (16 ТиБ для блочной файловой системы 4 КиБ). Разрешение файловых систем размером более 16T - одна из следующих высокоприоритетных функций, которые необходимо завершить для ext4 ».
- ↑ Томас Шерер: SSD Samsung на 32 ТБ: начало конца жесткого диска . Курфюрст. 15 августа 2016 г.