Объём жёсткого диска

Перейти к навигацииПерейти к поиску
Динамика роста ёмкости жёстких дисков с 1980 года. Ось Y в логарифмическом масштабе, поэтому аппроксимирующая линия соответствует экспоненциальному росту

Объём жёсткого диска (также используются термины «размер», «ёмкость») — максимальное количество информации, которое способен вместить жёсткий магнитный диск.

Ограничения ёмкости

По мере развития жёстких дисков их максимальная ёмкость стремительно увеличивалась. На пути этого увеличения время от времени возникали препятствия — ограничения широко используемых программных и аппаратных интерфейсов, используемых способов адресации, а также характеристики ПО. В этом списке приводятся существующие или существовавшие лимиты (большей частью исторические) в персональных компьютерах на размер жёстких дисков, разделов и/или файловых систем.

ОграничениеОписание
8 МбайтОграничение на диск в ОС CP/M (при общем числе не более 16 дисков)
10,4 Мбайта Фиксированный размер диска в PC/XT: 306 цилиндров, 4 головки, 17 секторов на дорожку
15 Mбайт Максимальный размер раздела для MS-DOS 1 и 2 при стандартном размере сектора[1]
16 Мбайт Предельный размер для FAT12[2]
32 Мбайт Ограничение на размер раздела для MS-DOS 3 для файловой системы FAT16: размер кластера 2 Кбайта, не более 16 384 кластеров[2]
128 Мбайт Ограничение на размер FAT16 в MS-DOS 4: число кластеров до 65 526, размер кластера 2 Кбайта[2]
504 Мбайта Ограничение схемы адресации CHS (см. ниже)
2 ГбайтМаксимальный размер файловой системы FAT16 при 32-килобайтном кластере. Для Windows NT это величина за счёт 64-килобайтных кластеров равна 4 Гбайтам[3]
2,1 Гбайта Некоторые материнские платы выделяли 12 бит на хранение числа цилиндров (4095 × 16б × 63 → 2,1 Гбайт)[4]
3,2 Гбайт Ошибка некоторых Phoenix BIOS (4.03 и 4.04), приводящая к зависанию CMOS Setup, если диск превышает в размере 3277 Мбайт[4]
4 Гбайт Лимит на размер раздела FAT16 в Windows NT
Лимит раздела, создаваемого Windows NT 3.51/4.0 Workstation при установке[5] (связано с тем, что при установке создаётся раздел FAT16, который затем конвертируется в NTFS)
4,2 Гбайт Прямая трансляция числа секторов/головок методом последовательного уменьшения числа цилиндров в 2 раза и удвоения числа головок (т. н. Large или ECHS (Extended CHS)) приводила к лимиту в 1024 головки: 1024 × 128 × 63 × 512 → 4,2 ГБ[4]
7,8 Гбайт Лимит на размер системного диска Windows NT 4.0[6]
7,9 Гбайт При уменьшении числа головок до 15 режим ECHS (revised ECHS) позволял получить конфигурацию методом удвоения с 15 × 2 × 2 × 2 = 240 головками, что давало предел в 7,9 Гбайт
8,4 Гбайта Ограничение BIOS (см. ниже)
32 Гбайта Искусственное ограничение на размер раздела FAT32 в Windows 2000, XP. Разделы большего размера система отказывалась форматировать[7][8]. Причиной является рациональное использование ресурсов: FAT32 при большем размере раздела теряет производительность, а NTFS, напротив, при малом размере раздела (~10 GiB) слишком расточительна.
Максимальный поддерживаемый размер диска Windows 95[9]
33,8 Гбайт Большие диски содержат информацию о 16 головках, 63 секторах и 16 383 цилиндрах. При использовании реального числа цилиндров для вычисления (деления ёмкости на 16 × 63) оно получается больше, чем 65 535, что приводит к зависанию некоторых BIOS. Именно из-за этой проблемы на многих дисках того времени присутствовали джамперы, ограничивающие ёмкость до 32 Гбайт.
128 Гбайт
137 Гбайт[4]
Ограничение стандартов с ATA-1 по ATA/ATAPI-5 (см. ниже)
Лимит в Windows XP SP1 на размер раздела NTFS (исправлено в SP2)
Максимальный размер FAT32, создаваемый Windows 98[7]
Максимальный размер SFS в ОС семейства Amiga
2 ТбайтаМаксимальный размер всего диска (без учёта разделов), поддерживаемый MBR. Ограничения MBR: размер раздела, а также расстояние от начала раздела до контейнера (до начала диска в случае первичного раздела; до начала расширенного раздела в случае логических томов) — 32-битное число секторов, то есть оба параметра не могут быть больше 2 Тбайт
Максимальный размер файловой системы ext3 на 32-битной архитектуре
Максимальный размер раздела для загрузки Windows XP, Windows Vista, Windows 7 (в силу ограничений MBR)
4 Тбайта Максимальный размер элемента массива mdraid при использовании формата метаданных 0.9 (2^32-1 сектора)
8 Тбайт Предел FAT32[8]
16 Тбайт Максимальный размер ext3 на 64-битной архитектуре (4-КБ блок), на Alpha при 8-КБ блоке может быть до 32 ТБ
Максимальный размер NTFS при 4-килобайтном кластере
Максимальный размер файловой системы ReiserFS 3.6[10]
Максимальный размер файловой системы ISO 9660, используемой на оптических дисках
64 Тбайта Лимит на размер spanned-массива дисков в Windows 2003[11]
256 Тбайт Максимальный размер файловой системы NTFS (при 64-килобайтном кластере) в существующих 32-битных реализациях[7][11]. 48-битное LBA способно адресовать до байт, что составляет 256 ТиБ. К концу 2011 года на рынке имелись внутренние жёсткие диски объёмом не более 4 Тбайт
512 Тбайт Рекомендуемый максимальный размер файловой системы exFAT[12]
4 ПбайтаЛимит JFS при 4-килобайтном блоке[10]
8 Пбайт Лимит NFS[10]
137 Пбайт Лимит адресации секторов ATA-6 (48-битное LBA)
1 ЭбайтМаксимальный размер ext4[13]
8 Эбайт Лимит XFS[10]
16 Эбайт Лимит HFS+
64 Эбайта Теоретический максимальный размер файловой системы exFAT[12]
256 ЗиБ Максимальный размер файловой системы ZFS
1 Йбайт Теоретический предел NTFS при 64-КБ блоках и 64-битной адресации (в настоящий момент используется 32-битная)[7]

504 Мбайта

Ограничение MS-DOS на допустимое число головок — 16 (1024 цилиндра, 63 сектора на дорожку, 16 головок, 512 байт на сектор)[4][14].

Программное обеспечение времен начала 1990-х годов, такое как MS-DOS, использовало вызов Int 13h для работы с жёстким диском.

Адресация блоков диска в вызове Int 13h выглядит как номера цилиндра (англ. cylinder), головки (head) и сектора (sector) — C/H/S. При этом на C отводится 10 бит, на H — 8, на S — 6.

Обработчик Int 13h в BIOS вписывает эти номера в управляющие регистры контроллера IDE. В данных регистрах на C отводится 16 бит, на H — 4, на S — 8.

Совокупность обоих значений приводит к общему ограничению C/H/S = 10/4/6 бит (всего 20 бит), что позволяет адресовать секторов[15]. При размере сектора в 512 байт это даёт 528 482 304 байт (504 Мбайта).

Максимум BIOSIDEОбщее ограничение
Секторов на дорожку 6325563
Поверхностей (головок) 2561616
Дорожек 1024655361024
Объём 8 064 Мбайт127,5 Гбайт504 Мбайт

Данное ограничение стало ощутимым в 1994—1995 годах, примерно после появления первых микропроцессоров Pentium. Для его обхода была придумана трансляция значений CHS в коде обработчика Int 13h в BIOS. Среди алгоритмов трансляции был и LBA (англ. Linear Block Addressing), когда CHS-адрес преобразовывается в линейный адрес, который передаётся контроллеру диска.

Теоретически разные методы трансляции должны давать одинаковый результат, однако из-за особенностей некоторых её реализаций, а также организации структур данных (разделов) на дисках, информация, записанная на диск в одной трансляции, могла быть недоступна в других. Для смены режима трансляции диска необходимо было «переразбить» диск (пересоздать таблицу разделов), что приводило к потере всей записанной на него информации.

8,4 Гбайта

Максимально возможная величина для прерывания INT 13 — 1024 цилиндра, 63 сектора, 255 головок. Ограничение многих BIOS того времени (P1-P2): при попытке определить диск с размером больше 8 Гбайт компьютер зависал, так как число головок обязано быть меньше 256[4].

В интерфейсе Int 13h для номера цилиндра отведено 10 бит, для номера головки — 8, для номера сектора — 6, всего 24 бита. Это позволяет адресовать секторов[15], что при размере сектора в 512 байт даёт 8 455 716 864 байт (8064 Мбайта, 7,875 Гбайт).

К тому времени, когда это стало проблемой — примерно 1997—1998 годы, — массово использовались полноценные многозадачные ОС, такие как GNU/Linux, FreeBSD и Windows NT. Так как код Int 13h в BIOS никогда не разрабатывался с учётом многозадачности (в частности, он нагружает процессор бесконечным циклом в ожидании прерывания от контроллера), эти ОС не могли пользоваться Int 13h в своей работе. Вместо этого они — как ранее Novell NetWare — включали драйвер IDE, напрямую обращающийся к контроллеру. Это снимало связанные с Int 13h ограничения при работе уже загруженной ОС, но проблема с загрузкой (запуском загрузчика системы из раздела диска, расположенного за доступной для BIOS границей) оставалась.

Для решения проблемы разработчики BIOS расширили Int 13h новыми подфункциями, принимавшими номер сектора как 64-битное целое число (LBA) без деления на C/H/S. Разработчики ОС внедрили поддержку этого новшества в загрузчики (в Windows, например, это один из пакетов обновления для Windows NT 4.0 1997 года), после чего проблема перестала существовать.

128 Гбайт

Аппаратный интерфейс регистров IDE-контроллера стандартов с ATA-1 по ATA/ATAPI-5 использует 16 бит для номера C, 4 — для H и 8 — для S, всего 28 бит. Это позволяет адресовать секторов[15], что при размере сектора в 512 байт даёт 136 902 082 560 байт (127,5 Гбайт).

Решение проблемы с таким ограничением возможно только на аппаратном уровне (и обновления драйверов для использования новых возможностей). Оно было принято в стандарте ATA/ATAPI-6 в виде отправки адреса в контроллер дважды в определённой последовательности (48-bit LBA)[16].

В семействе Windows поддержка 48-битного LBA была добавлена в SP4 для Windows 2000 и в SP2 для Windows XP. Кроме того, в Windows 2000 также требуется явно активизировать эту поддержку с помощью редактирования реестра[17].

Другие ограничения

Помимо ограничений интерфейсов IDE и BIOS, имелись и другие барьеры — ошибки и лимиты в программах, ОС и коде BIOS.

Например, DOS не поддерживает работу с количеством головок больше 255, поэтому в этой операционной системе не приемлема разметка диска, в которой количество головок равно 256. Это означает, что в компьютерах, где в BIOS не поддерживалась трансляция с заменой количества головок 256 на 255, доступ к дискам объёмом больше секторов был под вопросом. При размере сектора в 512 байт это даёт 4 227 858 432 байт (4032 Мбайт, 3,94 Гбайт).

Примечания

  1. MS-DOS Partitioning Summary Архивная копия от 31 января 2017 на Wayback Machine. Microsoft.
  2. 1 2 3 Hard Disk Size Barriers Архивная копия от 30 ноября 2011 на Wayback Machine. The PC Guide.
  3. Максимальный размер раздела на диске с файловой системой FAT16 Архивная копия от 14 декабря 2011 на Wayback Machine. Microsoft.
  4. 1 2 3 4 5 6 Properties of partition tables Архивная копия от 23 апреля 2019 на Wayback Machine. Win.tue.nl.
  5. Boot Partition Created During Setup Limited to 4 Gigabytes. Microsoft.
  6. Windows NT 4.0 не поддерживает системных разделов размером более 7,8 Гбайт Архивная копия от 25 февраля 2012 на Wayback Machine. Microsoft
  7. 1 2 3 4 NTFS.com NTFS vs FAT32 FAT64 exFAT FAT. Comparing. Performance Архивная копия от 9 марта 2015 на Wayback Machine.
  8. 1 2 Ограничения файловой системы FAT32 в Windows XP Архивная копия от 31 января 2017 на Wayback Machine. Microsoft.
  9. Does Not Support Hard Disks Larger Than 32 GB. Microsoft.
  10. 1 2 3 4 File system guide. File system guide. Архивная копия от 17 сентября 2011 на Wayback Machine. Linuxreviews.org.
  11. 1 2 Reviewing Storage Limits Архивная копия от 20 декабря 2011 на Wayback Machine. Microsoft Technet.
  12. 1 2 Description of the exFAT file system driver update package Архивная копия от 24 мая 2011 на Wayback Machine. Microsoft.
  13. Migrating to ext4 Архивная копия от 1 декабря 2008 на Wayback Machine. IBM.
  14. The 1,024 Cylinder (504 MiB / 528 MB) Barrier Архивная копия от 2 января 2012 на Wayback Machine. The PC Guide.
  15. 1 2 3 Нумерация секторов начинается с единицы, поэтому всего секторов , а не для BIOS и 255, а не 256 для IDE.
  16. 6.20. 48-bit Address feature set // AT Attachment with Packet Interface — 6 (ATA/ATAPI-6). — ANSI, T13 Commitee, 14 декабря 2001. — P. 51. Архивировано 28 июля 2011 года. Архивированная копия. Дата обращения: 19 июня 2009. Архивировано из оригинала 28 июля 2011 года..
  17. KB305098: Поддержка 48-разрядной логической адресации блоков для дисководов ATAPI в Windows 2000. Microsoft Knowledge Base (13 апреля 2006). Дата обращения: 13 января 2010. Архивировано 1 мая 2012 года.