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

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

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

Ограничения ёмкости[править | править исходный текст]

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

Ограничение Описание
8 Мб

Ограничение на диск в ОС CP/M (при общем числе не более 16 дисков).

10,4 Мб

Фиксированный размер диска в PC/XT: 312 цилиндров, 4 головки, 17 секторов на трек.[1]

15 Mб

Максимальный размер раздела для MS-DOS 1 и 2.[2]

16 Мб

Предельный размер для FAT12.[1]

32 Мб

Ограничение на размер раздела для MS-DOS 3 для файловой системы FAT16: размер кластера 2 кб, не более 16 384 кластеров.[1]

128 Мб

Ограничение на размер FAT16 в MS-DOS 4: число кластеров до 65 526, размер кластера 2 кб.[1]

504 Мб Ограничение схемы адресации CHS (см. ниже).
2 Гб

Максимальный размер файловой системы FAT16 при 32-кб кластере. Для Windows NT это величина за счёт 64-кб кластеров равна 4 Гб.[3]

2,1 Гб

Некоторые материнские платы выделяли 12 бит на хранение числа цилиндров (4095*16*63 — 2,1 Гб).[4]

3,2 Гб

Ошибка некоторых биосов Phoenix (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), число цилиндров получается больше, чем 65535, что приводит к зависанию некоторых биосов. Именно из-за этой проблемы на многих дисков того времени присутствовали джамперы ограничения ёмкости до 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 (в силу ограничений MBR).
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-bit LBA способно адресовать до 2^{48}=256*2^{40} байт, что составляет 256 ТиБ. К концу 2011 года на рынке имелись внутренние жёсткие диски объёмом не более 4 Тб.

512 Тб

Рекомендуемый максимальный размер файловой системы exFAT.[12]

4 Пб

Лимит JFS при 4-кб блоке.[10]

8 Пб

Лимит NFS.[10]

137 Пб

Лимит адресации секторов ATA-6 (48-bit LBA).

1 Эб

Максимальный размер ext4.[13]

8 Эб

Лимит XFS.[10]

16 Эб

Лимит HFS+.

64 Эб

Теоретический максимальный размер файловой системы exFAT.[12]

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 бит), что позволяет адресовать 2^{10}*2^4*(2^6-1)=1024*16*63=1 032 192[15] секторов. При размере сектора в 512 байт это даёт 528 482 304 байт (504 МБ).

Максимум BIOS IDE Общее ограничение
Секторов/трек 63 255 63
Поверхностей (головок) 256 16 16
Треков 1024 65536 1024
Объём 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 Гб такие BIOS зависали, так как число головок обязано быть меньше 256.[4]

В интерфейсе Int 13h для номера цилиндра отведено 10 бит, для номера головки — 8, для номера сектора — 6, всего 24 бита. Это позволяет адресовать 2^{10}*2^8*(2^6-1)=1024*256*63=16 515 072[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 бит. Это позволяет адресовать 2^{16}*2^4*(2^8-1)=65536*16*255=267 386 880[15] секторов, что при размере сектора в 512 байт даёт 136 902 082 560 байт (127,5 Гб).

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

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

Другие ограничения[править | править исходный текст]

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

Например, DOS не поддерживает работу с количеством головок больше 255, поэтому в этой операционной системе не приемлема геометрия, в которой количество головок равно 256. Это означает, что в компьютерах, где в BIOS не поддерживалась трансляция с заменой количества головок 256 на 255, доступ к дискам объёмом больше 2^{10}*2^7*(2^6-1)=1024*128*63=8 257 536 секторов был под вопросом. При размере сектора в 512 байт это даёт 4 227 858 432 байт (4032 МБ, 3,94 ГБ).

Примечания[править | править исходный текст]

  1. 1 2 3 4 Hard Disk Size Barriers The PC Guide
  2. MS-DOS Partitioning Summary Microsoft
  3. Максимальный размер раздела на диске с файловой системой FAT16 Microsoft
  4. 1 2 3 4 5 6 Properties of partition tables Win.tue.nl
  5. Boot Partition Created During Setup Limited to 4 Gigabytes Microsoft
  6. Windows NT 4.0 не поддерживает системных разделов размером более 7,8 Гб Microsoft
  7. 1 2 3 4 NTFS.com NTFS vs FAT32 FAT64 exFAT FAT. Comparing. Performance
  8. 1 2 Ограничения файловой системы FAT32 в Microsoft Windows XP Microsoft
  9. Does Not Support Hard Disks Larger Than 32 GB Microsoft
  10. 1 2 3 4 File system guide. File system guide Linuxreviews.org
  11. 1 2 Reviewing Storage Limits Microsoft Technet
  12. 1 2 Description of the exFAT file system driver update package Microsoft
  13. Migrating to ext4 IBM
  14. The 1,024 Cylinder (504 MiB / 528 MB) Barrier The PC Guide
  15. 1 2 3 Нумерация секторов начинается с единицы, поэтому всего секторов 2^6-1=63, а не 2^6=64 для 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.
  17. KB305098: Поддержка 48-разрядной логической адресации блоков для дисководов ATAPI в Windows 2000. Microsoft Knowledge Base (16 апреля 2006). Проверено 13 января 2010. Архивировано из первоисточника 23 марта 2012.