В поисках (несколько) лучших объяснений о поддержке жестких дисков объемом более 2 ТБ

1051
irrational John

Сегодня, пока Гуглил, я наткнулся на посты, в которых утверждалось, что Seagate планирует выпустить диск объемом 3 ТБ чуть позже в 2010 году. К сожалению, все, что я посмотрел, казалось, содержало кусочки информации, которые, по моему мнению, не подходили друг другу должным образом. (Я бы дал ссылку на некоторые примеры, но в данный момент мне разрешено только 1 ссылку на пост).

Теперь у меня действительно нет никакой «потребности», чтобы лучше понять основные нудные детали этого. Мне просто интересно. И в замешательстве.

Итак ... некоторые вопросы, я надеюсь, кто-то лучше информирован, чем я мог бы ответить.

  1. Разговор о потенциальной проблеме с аппаратным и программным обеспечением меня смутил. Утверждение заключается в том, что то, что называется так называемым Long LBA addressing (LLBA), необходимо Command Descriptor Blockдля того, чтобы обойти текущие ограничения для доступа к жесткому диску размером более 2 ТБ (1 ТБ = 2⁴⁰ B).

    Хорошо. Но я думал, что в последний раз, когда эта проблема возникла, она была решена путем увеличения длины поля LBA с 28 до 48 бит. (Помните этот веб-сайт? Www.48bitlba.com ) 6-байтовый LBA явно достаточно большой, так что с этим LLBA? Я думал, что это все исправлено Win XP SP2, если не раньше? И, конечно же, все оборудование должно соответствовать поставленной задаче, не так ли?

  2. Насколько я понимаю, настоящая проблема с дисками, размер которых превышает 2 ТБ, - это 4-байтовые поля LBA в основной загрузочной записи (MBR), используемые в настоящее время для разделения практически всех жестких дисков. Наиболее вероятным решением является переход на таблицу разделов GUID Intel (GPT). GPT использует 8-байтовые поля для LBA.

    В этом контексте я не понимаю, в чем заключается проблема с загрузкой Windows, скажем, с диска объемом 3 ТБ, использующего GPT. Конечно, текущий BIOS ПК не знает, как распознавать или работать с GPT. Но каждый GPT поставляется с так называемым «безопасным» или «защитным» MBR в секторе 0.

    Apple уже использует гибридную версию MBR, чтобы позволить им загружать Windows на своих Intel Mac (aka Boot Camp). Разве нельзя сделать что-то подобное, чтобы позволить BIOS компьютера распознавать и загружаться из раздела, скажем, в первые 2 ТБ диска емкостью 3 ТБ или более?

У меня есть еще вопросы, например, где сектора 4K вписываются во все это. Но, наверное, пришло время просто заткнуться и опубликовать это. ;-)

иррациональный Джон

9

3 ответа на вопрос

6
Ken

Заявления о «Long LBA», похоже, происходят от одного менеджера по продуктам Seagate. Вероятно, она имела в виду, что хотя 48-битный LBA является стандартом аппаратного обеспечения, 32-битные операционные системы и драйверы могут не поддерживать все 48 бит, поскольку (а) они 32-битные и это более хлопотно, и (б) В любом случае MBR поддерживает только 32 бита для разделов, так что зачем?

Когда барьер 128 ГБ был преодолен путем принятия 48-битного LBA, это было как на стороне аппаратного обеспечения, в спецификации ATA, поднявшись с 28 бит; а также со стороны ОС / драйверов, чтобы убедиться, что они не жестко запрограммировали этот старый 28-битный лимит. Вы, вероятно, можете сказать, что современные хорошо написанные драйверы действительно соответствуют действительному 48-битному пределу, но легко увидеть, как где-то в цепочке кто-то выбрал легкий путь и поддерживает только 32-битные в своих 32-битных драйверах. В любом случае, учитывая, что 32-разрядные ОС находятся в стадии выхода, возможно, не стоит пытаться убедиться, что все это работает.

Как вы сказали, реальная проблема (по крайней мере для Windows) - это загрузка GPT-диска с компьютера на базе BIOS (не EFI). Защитная MBR предназначена для того, чтобы весь диск выглядел как один неизвестный раздел, так что компьютер с поддержкой BIOS / MBR даже не коснется его. Вы можете создать Гибридный диск, чтобы MBR также содержал другие записи для разделов ниже барьера 2 ТБ. Но такие гибридные диски являются хрупкими (их легко можно использовать с помощью инструментов разделов MBR или GPT), и они официально не являются дисками GPT. Вы также не загружаете какие-либо GPT-разделы, вы загружаете MBR-разделы. Это может быть хорошо, если вы просто хотите использовать раздел GPT в качестве диска данных.

И почему BIOS не может загрузить GPT? Короткий ответ: они этого не сделали, и для того, чтобы добавить эту возможность, вам понадобится более умный BIOS. И для этого EFI.

Секторы 4 КБ дадут вам диски по 16 ТБ с 32-разрядным LBA. (И меньшее количество более крупных секторов означает потенциально меньшие накладные расходы ввода-вывода.) Но все операционные системы и драйверы и даже некоторые приложения должны были бы быть написаны для поддержки секторов переменного размера. Все, что вам нужно, это одно место, где размер сектора жестко запрограммирован на 512, чтобы сломаться. Таким образом, сектора 4KB также не являются «легким» решением, потому что это потребовало бы большой работы от многих сторон. Но если вы собираетесь писать будущее программное обеспечение для поддержки GPT (который не зависит от размера сектора) и секторов переменного размера, в какой-то момент оно может быть принято в качестве обычной практики.

3
Milind R

Конечно, вы можете загружаться с GPT-диска на компьютере с BIOS. Только что Windows утверждает, что не может.

Даже это не совсем верно; Вы можете загрузить Windows с компьютера BIOS на GPT-диске: вам нужен только один крошечный дополнительный MBR-диск для хранения загрузочных файлов. Жесткий диск, используемый для некоторых других ОС с запасным (небольшим) разделом, дискетой, USB-накопителем (предполагается) ...

Загрузитесь с установочного / ремонтного диска Windows. Создайте системный диск на флешке и используйте, bcdbootчтобы поместить свои загрузочные файлы на флешку. Добавьте загрузочный сектор с bootsect. Изменение deviceв boot. Загрузиться с флешки.

Шаги подробно здесь .

0
plugwash

В этом контексте я не понимаю, в чем заключается проблема с загрузкой Windows, скажем, с диска объемом 3 ТБ, использующего GPT.

В традиционной системе BIOS BIOS загружает загрузочный сектор с диска и запускает его в 16-битном реальном режиме. Код, загруженный из загрузочного сектора, должен найти и загрузить операционную систему должным образом.

MS никогда не реализовывал поддержку GPT в своем загрузчике реального режима. Поэтому он не может прочитать таблицу разделов GPT и загрузить остальную часть ОС. Поэтому для загрузки Windows с GPT-диска вы должны либо использовать uEFI вместо традиционного BIOS (что хорошо, если ваша материнская плата поддерживает его, а версия для Windows достаточно новая), либо использовать какой-либо способ обхода, например сторонний загрузчик, тип гибридного раздела или отдельный диск для загрузки.