Вопрос или проблема
Я купил жесткий диск Seagate ST3000DM001 объемом 3 ТБ. Он продавался в корпусе. Я отформатировал его в ext4, скопировал на него данные, а затем вынул из корпуса и подключил напрямую к материнской плате. Мои данные не были видны операционной системе (она видела один неизвестный раздел примерно на 300 ГиБ, а остальное как неразмеченное пространство), поэтому я начал читать о Advanced Format и дисках объемом более 2 ТБ.
Я снова подключил диск через USB, скопировал все данные и вновь подключил его к SATA. Я использовал gparted для создания таблицы разделов GPT (утилита дисков Ubuntu не позволяла мне сделать это с Error synchronizing after initial wipe: Timed out waiting for object (udisks-error-quark, 0
), создал один большой раздел Ext4 объемом 3 ТБ, оставил значение Align to
по умолчанию MiB
и отформатировал.
Диск распознается правильно и монтируется корректно. Файлы можно успешно копировать на диск и с него.
Однако:
Gparted показывает, что диск имеет сектора по 512K, что, как я знаю, неверно1
в то время как cat /sys/block/sdb/queue/physical_block_size
сообщает 4096
Я нашел некоторые сообщения о том, что libparted
имеет проблему с несекционными размерами 512K2 и другие3, которые утверждают, что выравнивание по этим единицам достаточно.
Parted сообщает, что диск выровнен, когда я выбираю минимальное:
(parted) align-check
alignment type(min/opt) [optimal]/minimal? min
Partition number? 1
1 aligned
(parted)
Моя конфигурация правильная? Получаю ли я потерю производительности из-за того, что диск отформатирован с размерами секторов 512K, сообщает ли gParted ложные значения, или я неправильно понял всю ситуацию?
Во-первых, большинство дисков с Advanced Format представляют собой логический размер сектора 512 байт, даже если физический размер сектора составляет 4096 байт (4 КиБ). Это достигается про манипуляциями с данными в прошивке диска, и это может привести к проблемам с производительностью, если разделы не выровнены должным образом. Скорее всего, это не источник вашей проблемы, и ваше внимание к выравниванию разделов неправильно. (Для уверенности, выравнивание разделов важно; просто это не источник вашей проблемы.)
Мое предположение (а это только предположение) заключается в том, что ваша проблема возникает из-за переключения между USB-корпусом и прямым подключением диска. Некоторые корпуса преобразуют логические сектора размером 512 байт на диске в логические сектора размером 4096 байт, представляемые компьютеру, то есть противоположно тому, что делает прошивка в диске с Advanced Format. Я не уверен, но предполагаю, что некоторые корпуса делают это только для дисков объемом более 2 ТиБ. Оба схемы разбиения MBR и GPT ссылаются на данные по номерам секторов, поэтому изменение размера сектора недействительно разделы. Таким образом, если вы подготовите диск в USB-корпусе, который переводит данные таким образом, а затем попытаетесь использовать диск непосредственно (или наоборот), вы увидите ошибки, потому что разделы (и даже резервные данные GPT) не будут находиться там, где ожидает их компьютер. Это будет похоже на то, как если бы вы сказали слепому человеку “идти вперед на 2”, где вы имеете в виду 2 фута, но человек думает, что вы имеете в виду 2 метра, и поэтому врезается в стену.
Решение этой проблемы заключается в подготовке и использовании диска одним образом: либо используйте USB-корпус либо использйте прямое подключение, не оба. Если оба необходимы по какой-то причине, вам нужно найти корпус, который работает без применения такого рода преобразования.
Чтобы протестировать мою гипотезу, вы можете использовать утилиту (например, parted
), которая сообщает о логических размерах секторов. Например:
sudo parted /dev/sda print
Model: ATA Hitachi HDP72505 (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B
Я пропустил много информации из этого вывода. Важная деталь в последней строке: логические и физические размеры секторов составляют 512 байт. Если вы выполните этот тест, а затем повторно подключите диск другим способом и выполните его снова, вы сможете сравнить результаты. Если размер логического сектора меняется в зависимости от способа подключения диска, то моя гипотеза верна, и это источник вашей проблемы. Или, по крайней мере, это одна проблема; могут быть и другие. В частности, ошибка Error synchronizing after initial wipe
, которую вы упомянули, может указывать на другую проблему. С другой стороны, это может быть побочным эффектом того, что parted
пытается прочитать резервные данные GPT за пределами конца диска. В любом случае, если вы заметите изменение логического размера сектора, вам следует решить эту проблему прежде, чем разбираться с чем-либо другим. Если вы хотите переработать разметку диска, но у вас возникают проблемы из-за ошибки Error synchronizing
, попробуйте использовать gdisk
или cgdisk
(в пакете gdisk
) вместо parted
или GParted; семья gdisk
более устойчива к ошибкам, чем семья parted
.
Он сообщает 512 байт, потому что это логический размер сектора для обратной совместимости с более старыми ОС (Windows). (g)parted выравнивает разделы по 1 МиБ, что более чем достаточно для нормальной работы с дисками, использующими физические сектора по 4К, поэтому все в порядке, как есть.
Изменения были внесены как в ядро Linux, так и в утилиты для поддержки дисков с Advanced Format. Эти изменения обеспечивают правильное выравнивание всех разделов на дисках с Advanced Format на границах секторов 4К. Поддержка дисков с Advanced Format доступна в версиях ядра 2.6.31 и выше. Поддержка разметки и форматирования дисков с Advanced Format доступна в следующих утилитах Linux:
Fdisk: GNU Fdisk – это утилита командной строки для разметки жестких дисков. Версии 1.2.3 и выше поддерживают диски с Advanced Format.
Parted: GNU Parted – это графическая утилита для разметки жестких дисков. Версии 2.1 и выше поддерживают диски с Advanced Format.
4K нативные (4Kn) диски имеют логический размер сектора 4 КБ. Современные операционные системы могут хранить данные на этих дисках, но они, как правило, не могут загружаться с этих дисков. Эти диски обычно являются внешними накопителями с USB-подключением.
Чтобы создать раздел, используемый как устройство хранения данных, просто нажмите Ctrl+Alt+T на клавиатуре, чтобы открыть терминал. Когда он откроется, выполните команду(ы) ниже:
sudo mkfs.ext4 -m 0 /dev/sdb1
Большинство дисков 4K имеют физический размер сектора 4096 байт, так что 3 ТБ могут поместиться на пластинах, но у них все еще есть логический размер сектора 512B для совместимости с ОС, которые ожидали, что один сектор будет 512B. Поэтому, когда вы используете команду print в parted для вывода подробностей, она говорит размер сектора логический/физический 512B/4096B. Это нормально.
Это “преобразование” выполняется интеллектом на самом диске и нормально. Это то, как это должно работать.
Если вы не видите весь объем 3 ТБ, сначала проверьте в BIOS, что он не ограничивает размер диска. Возможно, вам нужно обновление BIOS для поддержки диска.
Кроме того, использование parted для создания раздела, начиная с 0, – это ошибка. Вам нужно начинать первый раздел на секторе 2048, что эквивалентно 1 МиБ, чтобы разделы на диске были выровнены для оптимальной производительности.
Итак, измените единицу на МиБ, выведите детали диска, что также покажет размер диска в МиБ, и создайте раздел (если вы хотите только один раздел), начиная с 1 МиБ и заканчивая последним МиБ (или одним перед последним).
Например, диск объемом 3 ТБ должен в реальности иметь около 2,861,022 МиБ. Таким образом, создание единственного раздела, охватывающего весь диск на устройстве диска под названием /dev/sdX, выглядело бы так (замените X на правильную букву):
sudo parted /dev/sdX
unit MiB
mklabel gpt
print (чтобы увидеть общий размер в МиБ)
mkpart primary 1 2861022
quit
Если размер диска отличается на несколько МиБ более или менее чем 2861022, отрегулируйте конечное местоположение.
Вот и все. После этого создайте файловую систему, которую вы хотите, на разделе.
Источники и дополнительное чтение
Пока вы выравниваете свои разделы на кратном 4 КБ, все в порядке. Вам не нужно делать что-то особенное для дисков с физическими секторами 4 КБ.
Старое программное обеспечение для разметки выравнивало разделы на кратном 63x512B секторам, что приведет к плохой производительности, если диск имеет 4K физические сектора, потому что это 31,5 КилоБайта, А НЕ кратное 4 КБ.
Практически никакое программное обеспечение для разметки, доступное сейчас в Ubuntu, больше не сделает этого (если вы специально не запросите об этом). Большинство по умолчанию выравнивают по кратному 1 МиБ (2048x512B секторам, что также является 256x4KB секторами).
Что произойдет, если вы не выравните?
Если вы не выровняете разделы на кратные 4 КБ, худшее, что может произойти, – это потеря производительности (довольно значительная для мелких файлов). Диски с 4 КБ секторами, как правило, эмулируют 512B сектора для совместимости с существующими системами. Поэтому они функционируют вполне нормально, если вы просто рассматриваете их как диск с секторами 512B. Но когда вы записываете в одну область 512B, это будет перезаписывать целый сектор 4 КБ.
Поэтому, по причинам производительности, важно обеспечить, чтобы кластеры 4 КБ, которые вы используете в своей файловой системе, выравнивались с 4 КБ секторами на диске, чтобы запись одного кластера не требовала записи двух секторов 4 КБ на диске.
Ответ или решение
Как отформатировать жесткий диск с 4K секторами?
Ваша задача — отформатировать жесткий диск Seagate ST3000DM001 объемом 3 ТБ, который имеет 4K физические сектора. Процесс форматирования и настройки таких дисков может показаться сложным, особенно когда вы сталкиваетесь с проблемами, связанными с отображением данных и совместимостью между различными интерфейсами подключения. В этом руководстве мы подробно рассмотрим, как правильно отформатировать этот диск и устранить возможные проблемы.
1. Определение формата и структуры
Прежде чем приступать к форматированию, важно понять, как ваш диск отображается в операционной системе:
- Логическая размерность сектора обычно составляет 512 байт (для совместимости), тогда как физическая размерность составляет 4096 байт. Это приводит к тому, что данные обрабатываются через вставку в прошивку диска.
Чтобы убедиться в этом, выполните команду:
cat /sys/block/sdb/queue/physical_block_size
Она должна вернуть значение 4096.
- Проблема с отображением. Если GParted показывает 512B сектора, это нормально для дисков с поддержкой Advanced Format. Логическая и физическая размерности сектора могут отличаться из-за встроенной совместимости, но для оптимальной работы важно правильно выставить разметку диска.
2. Подготовка к форматированию
Прежде чем начать процесс форматирования, убедитесь, что диск правильно подключен к материнской плате. Избегайте использования USB-интерфейса для начальной разметки, поскольку это может привести к несогласованности в данных о секторах и партициях.
3. Использование утилиты parted
-
Откройте терминал и запустите утилиту
parted
:sudo parted /dev/sdX
Где
sdX
— это буква, соответствующая вашему жесткому диску. -
Установите единицы измерения на МиБ:
unit MiB
-
Создайте новую таблицу разделов GPT:
mklabel gpt
-
Проверьте размер диска:
print
Обратите внимание на размер в МиБ, чтобы знать, как создать партнерство.
-
Создайте основной раздел. Для создания одного большого раздела от 1MiB до 3TB используйте:
mkpart primary 1 2861022
Необходимо поправить последний размер в зависимости от фактического объема диска, чтобы избежать ошибок при создании раздела.
4. Форматирование и создание файловой системы
После успешного создания раздела вам нужно отформатировать его в формате ext4:
sudo mkfs.ext4 -m 0 /dev/sdX1
Где sdX1
— это ваш созданный раздел.
5. Проверка выравнивания
После форматирования и создания раздела важно проверить, что выравнивание корректно. Запустите следующую команду в parted
:
(parted) align-check
Проверьте, что используется оптимальное выравнивание.
6. Возможные проблемы
-
Отображение неверного размера: Если у вас возникли проблемы с отображением общего объема диска, проверьте настройки BIOS на предмет поддержки дисков большого объема. Возможно, потребуется обновление BIOS для решения данной проблемы.
-
Ошибки синхронизации: Если возникла ошибка, попробуйте использовать инструмент
gdisk
илиcgdisk
для более надежной работы с GPT.
Заключение
Операции с дисками, использующими 4K сектора, требуют внимательности к деталям настройки. Убедившись в правильности всех этапов, вы сможете избежать проблем с производительностью и использованием диска. Следуйте изложенным рекомендациям, чтобы ваш жесткий диск работал с максимальной эффективностью.