Вопрос или проблема
Сначала взгляните на этот 300 ГБ SAS-жесткий диск:
=== НАЧАЛО ИНФОРМАЦИОННОГО РАЗДЕЛА ===
Производитель: SEAGATE
Продукт: ST300MM0006
Ревизия: LS0A
Соответствие: SPC-4
Объем для пользователя: 300,000,000,000 байтов [300 ГБ]
Размер логического блока: 512 байтов
Логическое устройство полностью обеспечено
Скорость вращения: 10000 об/мин
Форм-фактор: 2.5 дюйма
Идентификатор логического устройства: 0xxxxxxxxxxxxxxxxx
Серийный номер: xxxxxxxx
Тип устройства: диск
Протокол транспорта: SAS (SPL-3)
Местное время: Суббота, 8 марта 2025 года, 02:17:29 UTC
Поддержка SMART: Доступна - устройство поддерживает SMART.
Поддержка SMART: Включена
Предупреждение о температуре: Отключено или не поддерживается
Этот жесткий диск имеет ровно 300 ГБ доступного пользователю пространства, ни на один байт больше или меньше. Но каждый более крупный жесткий диск, который я использовал до сих пор, имеет небольшое количество дополнительного пространства. Например, похожая модель SAS-диска показывает:
=== НАЧАЛО ИНФОРМАЦИОННОГО РАЗДЕЛА ===
Производитель: SEAGATE
Продукт: ST600MM0006
Ревизия: LS0A
Соответствие: SPC-4
Объем для пользователя: 600,127,266,816 байтов [600 ГБ]
Размер логического блока: 512 байтов
Логическое устройство полностью обеспечено
Скорость вращения: 10000 об/мин
Форм-фактор: 2.5 дюйма
Идентификатор логического устройства: 0xxxxxxxxxxxxxxxxx
Серийный номер: xxxxxxxx
Тип устройства: диск
Протокол транспорта: SAS (SPL-3)
Местное время: Суббота, 8 марта 2025 года, 10:38:58 CST
Поддержка SMART: Доступна - устройство поддерживает SMART.
Поддержка SMART: Включена
Предупреждение о температуре: Отключено или не поддерживается
Эта 600 ГБ модель имеет примерно на 127 МБ больше доступного пространства.
Я собрал эту информацию для нескольких других жестких дисков для сравнения:
Тип подключения | Модель | Указанная емкость | Фактическая емкость |
---|---|---|---|
SAS | IBM-ESXS N 0157 | 146.8 ГБ | 146.814976000 ГБ |
SAS | HUC109030CSS600 | 300 ГБ | 300 ГБ |
SAS | ST300MM0006 | 300 ГБ | 300 ГБ |
SAS | ST600MM0006 | 600 ГБ | 600.127266816 ГБ |
SAS | ST2000NM0023 | 2 ТБ | 2000.398934016 ГБ |
SATA | HTS543216L9A300 | 160 ГБ | 160.041885696 ГБ |
SATA | WD2500AAJS | 250 ГБ | 250 ГБ |
SATA | WD5000AAKX | 500 ГБ | 500.107862016 ГБ |
SATA | WD5000AZLX | 500 ГБ | 500.107862016 ГБ |
SATA | ST500DM002 | 500 ГБ | 500.107862016 ГБ |
SATA | WD10JPVX | 1 ТБ | 1000.204886016 ГБ |
SATA | WD40EFRX | 4 ТБ | 4000.787030016 ГБ |
SATA | MG06ACA10TE | 10 ТБ | 10000.831348736 ГБ |
SATA | WUH721414ALE6L4 | 14 ТБ | 14000.519643136 ГБ |
PATA | ST91350AG | 1350 МБ | 1350.136832 МБ |
PATA | ST625211CF | 2.5 ГБ | 2.500485120 ГБ |
PATA | ST650211CF | 5 ГБ | 5.000970240 ГБ |
PATA | MK3025GAS | 30 ГБ | 30.005821440 ГБ |
PATA | MHV2060ATPL | 60 ГБ | 60.011642880 ГБ |
По моему опыту, только модели на 250 ГБ и 300 ГБ имеют точную емкость, доступную пользователю; большинство моделей имеет небольшое и постоянное превышение емкости, независимо от типа подключения или физического размера сектора (512 против 4096).
Почему так?
Обновление: На основании подсказки, предоставленной Камилем Мациоровским в комментарии, я теперь понимаю, что многие диски следуют формуле IDEMA, чтобы обеспечить предсказуемую фактическую емкость для данной рекламируемой емкости.
Теперь мой вопрос: как именно была создана/выбрана эта формула? Например, жесткий диск, рекламируемый как 1 ТБ, по формуле IDEMA имеет около 0,02% дополнительного объема пространства (итого 1 000 204 886 016 байтов); почему это не 0,01% или 0,03%?
Таким образом, в это входит многое, но давайте немного рассмотрим природу двоичных чисел и то, как они используются в современных компьютерных архитектурах (например, мы предполагаем 8-битные байты).
- байт равно 8-битам [2^8] и имеет диапазон от 0 до 255. если расширить их до 9-битов (2^9), диапазон будет от 0 до 511. Диапазон удваивается с каждым добавленным битом.
- Килобайт равен 1024 [2^10] байтам и имеет диапазон от 0 до 1023.
- Мегабайт равен 1024^2 [2^20] байтам и имеет диапазон от 0 до 1048575.
- Гигабайт равен 1024^3 [2^30] байтам и имеет диапазон от 0 до 1,073,741,823
если килобайт был бы равен 1000 байтам, его биты составили бы 1000 * 8 = 8000, что потребовало бы 2^10 байт для хранения (2^9 байт могут хранить максимум 512 * 8 = 4096 бит, что слишком мало), но не использовало бы полный диапазон 2^10 [1024] байт (8192 или 2^13 бит), так что оставшиеся 24 байта на КБ были бы потрачены впустую (что составило бы 24,000 байт на мегабайт, что немаловажно при увеличении размеров).
Таким образом, 300 ГБ диск = 300 * 1024^30 = 322,122,547,200 байтов.
если ваш 300 ГБ SAS диск на самом деле имеет емкость в 300,000,000,000 байтов, то максимальный объем, на который его можно разбить, составляет фактически 279 ГБ (299,573,968,896 байтов).
так что если вы когда-либо увидите цифру, например 300,000,000,000 байтов, знайте, что кто-то либо не вполне точен, либо откровенно лжет вам.
В конечном итоге, проблема в несовместимости между системами счисления с основанием 2 и основанием 10 и использованием SI-префиксов, таких как Кило/Мега/Гига/Тера/Пета/Экс, которые должны основываться на степенях 10, как и все остальное в метрической системе.
Производители хотят рекламировать диски на основе емкости в системе с основанием 10, но инженерно они всегда будут использовать числа с основанием 2, потому что они могут легко учитывать 8 бит на байт. Если бы байты были 10-битными, это упростило бы некоторые вычисления и уравняло рекламное описание с продуктом, но вызвало бы траты места, так как биты всегда хранятся в пространствах, определенных увеличениями измерения в степени 2.
Поэтому 1ТБ объемы обычно форматируются в 931ГБ. 931 * 1024^3 = 999,653,638,144 байтов, так что это максимум, который диск может хранить, оставаясь ниже 1,000,000,000,000 байтов. если бы производитель был справедлив и произвел диск размером 1024^4 (1,099,511,627,776 байтов), мы могли бы получить все 1000ГБ на ТБ, но тогда мы снова столкнулись бы с этой проблемой, когда выйдут первые петабайтные диски, и мы бы жаловались на то, что он не вмещает 1024 ТБ.
Количество LBA для стандартов жестких дисков (стандарт IDEMA LBA 1-03), также известная как формула IDEMA, пытается сохранить совместимость между дисками с секторами размером 512 и 4096 байт; таким образом, два диска с разным размером секторов, но с одной и той же рекламируемой емкостью, в итоге будут иметь одинаковое количество байтов (фактическая емкость).
Я также заметил, что эта формула старается сделать так, чтобы полученное количество байтов делилось на 63; что интересно, так как это похоже на максимальное количество секторов на дорожку, представимое в BIOS, в традиционной адресации CHS.
В частности, формула для каждого варианта секторов размером 512 и 4096 байт:
Для SATA и SAS жестких дисков с логическим размером блока 512 байт:
Количество LBA = (97,696,368) + (1,953,504 * (рекламируемая емкость в ГБ – 50))
...
Для жестких дисков SATA и SAS с логическим размером блока 4096 байт:
Формула масштабируется путем деления первых двух констант на восемь. Это приводит к консистентной маргинальности емкости относительно основной емкости.
Количество LBA = (12,212,046) + (244,188 * (рекламируемая емкость в ГБ – 50))
Но поскольку эта спецификация также упоминалась, что она предназначена для 2.5-дюймовых и 3.5-дюймовых дисков с емкостью не менее 80 ГБ и 160 ГБ соответственно, которая далеко превосходит традиционный предел адресации CHS (16450560 секторов), я не очень уверен, является ли это намеренным. По какой-то причине спецификация дополнительно требует запас в 0,02%, добавляя к отношению фактической к рекламируемой емкости; что до сих пор не вполне ясно.
По данным этой статьи, существует также новая спецификация, которая определяет другую формулу для дисков больше, чем 8 ТБ. Количество LBA для жестких дисков (SFF-8447) более точно определяет формулы для расчета количества LBA, исходя из рекламируемой емкости. Для дисков объемом до 8 ТБ применяется старая формула IDEMA LBA1-03. Новые формулы применяются к дискам объемом более 8 ТБ; кроме того, эти формулы также применяются к большим дискам с различными вариантами логического размера сектора; по сравнению с IDEMA LBA1-03, которая применялась только к дискам с секторами размером 512 или 4096 байт.
В зависимости от логического размера сектора, новые формулы округляют фактическое количество секторов до наименьшего кратного либо 2^21
, либо 2^18
; что, при преобразовании в число байтов, составляет 1 ГиБ для размеров секторов 512 и 4096 байт. Таким образом, для жестких дисков больше 8 ТБ (в обычной конфигурации 512e или 4096n), фактическая емкость просто округляется до кратного 1 ГиБ.
.
Ответ или решение
Стандартный вопрос о доступной емкости жестких дисков является довольно частым среди пользователей IT-оборудования. Давайте подробно разберем, почему жесткие диски иногда имеют большее фактическое пространство, чем указано на этикетке.
Теория
Прежде всего, важно понять основное различие между производственными и инженерными обозначениями емкости. Производители жестких дисков в основном используют метрическую систему, где 1 ГБ равен 1,000,000,000 байтам. Это связано с тем, что маркетинговые отделы предпочитают круглые и проще воспринимаемые числа. С другой стороны, в компьютерной инженерии повсеместно используется двоичная система счисления, где 1 ГБ равен (2^{30}), или 1,073,741,824 байтам – это показатель, который более точен с технической точки зрения, но меньше по числовой величине.
Приведем пример: При указании емкости в 300 ГБ по системе счисления производителя (десятичное представление) фактическое количество байтов равно 300,000,000,000. Если учесть, что компьютеры работают с двоичной системой счисления, эти 300 миллиардов байт равны примерно 279,4 "двоичным" гигабайтам.
Пример
Рассмотрим конкретные примеры:
- Для жесткого диска с серийным номером ST600MM0006, указанным как 600 ГБ, фактическая емкость составляет 600,127,266,816 байт, что на 127 МБ больше заявленной. Это разница связана с использованием стандарта IDEMA (International Disk Drive Equipment and Materials Association), направленного на предотвращение несоответствий между дисками разного размера сектора.
Пример результатов:
- Диск на 1 ТБ (1,000,000,000,000 байт по десятичной системе) обычно отформатирован так, что его пользователю доступно только около 931 гигабайта в двоичной системе (931 * (2^{30}) = 999,653,638,144 байт).
Применение
IDEMA установила стандарт, согласно которому вычисляется количество указателей (LBA) для различных размеров секторов. Для дисков с емкостью более 8 ТБ применяются дополнительные стандарты, например, SFF-8447, которые предполагают округление до ближайшего гигабайта в двоичном счислении (т.е., до ближайшего кратного 2^30).
Почему выбрана такая формула увеличения емкости? Ответ лежит в аспекте совместимости и обеспечения запаса емкости, что минимизирует возможные ошибки округления и несоответствия между заявленной и фактической емкостью. Разница в возможностях планирования секторов также играет свою роль. Наиболее вероятной причиной выбора определенных числовых параметров является также обеспечение кооперации между устройствами разных архитектур (4096 vs. 512 байт на сектор).
Выбрав точную простую округлённую форму емкости, производители дисков обеспечивают предсказуемое и стандартизированное распределение срабатываний на сектор – таким образом, несмотря на различия в экспериментации, количество доступных байтов остаётся стандартным и предусмотренным, что удобно при масштабных производственных и пользовательских тестах, снижении возможных издержек на сервис и возвраты покупателей из-за несоответствия декларациям.
Таким образом, разница между заявленной и фактической емкостью носит технический и стандартный характер, отвечающий требованиям совместимости и предсказуемости использования в современных IT-системах.