Объём жёсткого диска
Объём жёсткого диска (также используются термины размер, ёмкость) — максимальное количество информации, которое способен вместить жёсткий магнитный диск.
Ограничения ёмкости
[править | править код]По мере развития жёстких дисков их максимальная ёмкость стремительно увеличивалась. На пути этого увеличения время от времени возникали препятствия — ограничения широко используемых программных и аппаратных интерфейсов, используемых способов адресации, а также характеристики ПО. В этом списке приводятся ограничения (большей частью исторические) существующие или существовавшие в персональных компьютерах на размер жёстких дисков, разделов и/или файловых систем.
Ограничение | Описание |
---|---|
8 Мб |
Ограничение на диск в ОС CP/M (при общем числе не более 16 дисков). |
10,4 Мб |
Фиксированный размер диска в PC/XT: 312 цилиндров, 4 головки, 17 секторов на трек.[1] |
15 Mб | |
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 Тб | |
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 способно адресовать до байт, что составляет 256 ТиБ. К концу 2011 года на рынке имелись внутренние жёсткие диски объёмом не более 4 Тб. |
512 Тб |
Рекомендуемый максимальный размер файловой системы exFAT.[12] |
4 Пб | |
8 Пб | |
137 Пб |
Лимит адресации секторов ATA-6 (48-bit LBA). |
1 Эб | |
8 Эб | |
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 бит), что позволяет адресовать 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 бита. Это позволяет адресовать 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 бит. Это позволяет адресовать 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, доступ к дискам объёмом больше 8 257 536 секторов был под вопросом. При размере сектора в 512 байт это даёт 4 227 858 432 байт (4032 МБ, 3,94 ГБ).
Примечания
[править | править код]- ↑ 1 2 3 4 Hard Disk Size Barriers The PC Guide
- ↑ MS-DOS Partitioning Summary Microsoft
- ↑ Максимальный размер раздела на диске с файловой системой FAT16 Microsoft
- ↑ 1 2 3 4 5 6 Properties of partition tables Win.tue.nl
- ↑ Boot Partition Created During Setup Limited to 4 Gigabytes Microsoft
- ↑ Windows NT 4.0 не поддерживает системных разделов размером более 7,8 Гб Microsoft
- ↑ 1 2 3 4 NTFS.com NTFS vs FAT32 FAT64 exFAT FAT. Comparing. Performance
- ↑ 1 2 Ограничения файловой системы FAT32 в Windows XP Microsoft
- ↑ Does Not Support Hard Disks Larger Than 32 GB Microsoft
- ↑ 1 2 3 4 File system guide. File system guide Архивная копия от 17 сентября 2011 на Wayback Machine Linuxreviews.org
- ↑ 1 2 Reviewing Storage Limits Microsoft Technet
- ↑ 1 2 Description of the exFAT file system driver update package Microsoft
- ↑ Migrating to ext4 IBM
- ↑ The 1,024 Cylinder (504 MiB / 528 MB) Barrier The PC Guide
- ↑ 1 2 3 Нумерация секторов начинается с единицы, поэтому всего секторов , а не для BIOS и 255, а не 256 для IDE.
- ↑ 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 на Wayback Machine
- ↑ KB305098: Поддержка 48-разрядной логической адресации блоков для дисководов ATAPI в Windows 2000 . Microsoft Knowledge Base (13 апреля 2006). Дата обращения: 13 января 2010. Архивировано 23 марта 2012 года.