Объём жёсткого диска (KQa~b '~vmtkik ;nvtg)
Эту статью предлагается удалить. |
Объём жёсткого диска (также используются термины «размер», «ёмкость») — максимальное количество информации, которое способен вместить жёсткий магнитный диск.
Ограничения ёмкости
[править | править код]По мере развития жёстких дисков их максимальная ёмкость стремительно увеличивалась. На пути этого увеличения время от времени возникали препятствия — ограничения широко используемых программных и аппаратных интерфейсов, используемых способов адресации, а также характеристики ПО. В этом списке приводятся существующие или существовавшие лимиты (большей частью исторические) в персональных компьютерах на размер жёстких дисков, разделов и/или файловых систем.
Ограничение | Описание |
---|---|
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 Мбайта).
Максимум | 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 Гбайт компьютер зависал, так как число головок обязано быть меньше 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 Гбайт).
Примечания
[править | править код]- ↑ MS-DOS Partitioning Summary Архивная копия от 31 января 2017 на Wayback Machine. Microsoft.
- ↑ 1 2 3 Hard Disk Size Barriers Архивная копия от 30 ноября 2011 на Wayback Machine. The PC Guide.
- ↑ Максимальный размер раздела на диске с файловой системой FAT16 Архивная копия от 14 декабря 2011 на Wayback Machine. Microsoft.
- ↑ 1 2 3 4 5 6 Properties of partition tables Архивная копия от 23 апреля 2019 на Wayback Machine. Win.tue.nl.
- ↑ Boot Partition Created During Setup Limited to 4 Gigabytes. Microsoft.
- ↑ Windows NT 4.0 не поддерживает системных разделов размером более 7,8 Гбайт Архивная копия от 25 февраля 2012 на Wayback Machine. Microsoft
- ↑ 1 2 3 4 NTFS.com NTFS vs FAT32 FAT64 exFAT FAT. Comparing. Performance Архивная копия от 9 марта 2015 на Wayback Machine.
- ↑ 1 2 Ограничения файловой системы FAT32 в Windows XP Архивная копия от 31 января 2017 на Wayback Machine. 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 Архивная копия от 20 декабря 2011 на Wayback Machine. Microsoft Technet.
- ↑ 1 2 Description of the exFAT file system driver update package Архивная копия от 24 мая 2011 на Wayback Machine. Microsoft.
- ↑ Migrating to ext4 Архивная копия от 1 декабря 2008 на Wayback Machine. IBM.
- ↑ The 1,024 Cylinder (504 MiB / 528 MB) Barrier Архивная копия от 2 января 2012 на Wayback Machine. 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 года. Архивированная копия . Дата обращения: 19 июня 2009. Архивировано из оригинала 28 июля 2011 года..
- ↑ KB305098: Поддержка 48-разрядной логической адресации блоков для дисководов ATAPI в Windows 2000 . Microsoft Knowledge Base (13 апреля 2006). Дата обращения: 13 января 2010. Архивировано 1 мая 2012 года.