12

У меня есть твердотельный накопитель, который можно настроить для сообщения о размере физического сектора в ОС двумя различными способами:

Вариант 1: логический = 512 байт, физический = 512 байт

Вариант 2: логический = 512 байт, физический = 4096 байт (4K)

Какую выгоду выигрывает ОС, зная размер физического сектора 4K, учитывая:

  • ОС должна общаться с диском в 512-байтовых секторах независимо

  • Все современные операционные системы поддерживают 4K и используют 4K или несколько 4K I/O независимо

Настройка кажется бессмысленной, потому что современные операционные системы уже оптимизированы для дисков 4K сектора. Современным операционным системам не нужно "спрашивать" диск, имеют ли его сектора 512b или 4K, потому что операционная система по умолчанию делает все с поддержкой 4K.

Например, Windows 7 выравнивает разделы по 1 МБ (кратно 4 КБ), размер кластера NTFS равен 4 КБ или кратно ему, а весь ввод-вывод выполняется в 4 КБ или кратно им. Windows не имеет никакого значения, какой у вас жесткий диск, она будет применять вышеупомянутое поведение во всех случаях.

Во всяком случае ... мой SSD имеет эту настройку "размер физического сектора", и поэтому он должен быть там по какой-то веской причине ... это причина для этого я ищу.

Между прочим , этот накопитель Intel SSD DC S3510. В спецификации диска указано следующее (стр. 27):

Используя команду SCT 0xD801 с State = 0, Option = 1, ID Word 106 можно изменить с 0x6003 на 0x4000 (изменение размера физического сектора 4 КБ на изменение размера физического сектора 512 Б).

7 ответов7

14

Эмуляция 512 байт предназначена для совместимости со старыми системами. Однако запись, включающая только часть физического сектора 4K, может привести к снижению производительности, поскольку сектор должен быть прочитан и изменен до того, как он действительно будет записан.

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

  • Когда считывается только часть физического сектора 4K, данные просто считываются с физического сектора, и производительность не снижается. Однако когда система пытается выполнить запись в часть физического сектора (например, эмулируемый 512-байтовый сектор, а не весь физический сектор), жесткий диск должен прочитать весь физический сектор, изменить измененную часть во внутреннем жестком диске. память, и запишите его обратно на тарелки. Это называется чтение-изменение-запись (RMW), операция, которая требует дополнительного вращения диска и, следовательно, снижает производительность. Seagate объясняет это следующим образом:

[...] жесткий диск должен сначала прочитать весь сектор 4K, содержащий целевое местоположение запроса записи хоста, объединить существующие данные с новыми данными, а затем переписать весь сектор 4K:

Цикл чтения-изменения-записи

В этом случае жесткий диск должен выполнить дополнительные механические действия в форме чтения сектора 4K, изменения содержимого и последующей записи данных. Этот процесс называется циклом чтения-изменения-записи, который нежелателен, поскольку отрицательно влияет на производительность жесткого диска.

Дисковые разделы, которые не выровнены по границе 4K, также могут привести к снижению производительности.

  • Традиционно первый раздел на жестком диске начинается в секторе 63. Windows XP и более старые операционные системы делят диски таким образом. Более новые версии Windows будут создавать разделы на границе 1 МБ, обеспечивая правильное выравнивание по физическим секторам. Это называется выравниванием 0.

  • Поскольку LBA 63 не кратно 8 (восемь устаревших 512-байтовых секторов вписываются в сектор 4K), диск расширенного формата, который отформатирован старым способом, будет иметь кластеры (наименьшая единица выделения данных файловой системы, обычно размером 4K) ), которые не выровнены по физическим секторам на диске 4K, условие называется выравниванием 1. В результате операция ввода-вывода, которая в противном случае включает 4 КБ данных, теперь охватывает два сектора, что приводит к операции чтения-изменения-записи, которая снижает производительность.

Хотя информация о размере физического сектора не требуется, если ОС всегда записывает данные на границе 4 КБ, эта информация может по-прежнему требоваться приложениям, которые выполняют низкоуровневый ввод-вывод.

  • Когда накопитель сообщает, что размер его физического сектора равен 4 КБ, ОС или приложение могут сказать, что это накопитель расширенного формата, и поэтому должны избегать операций ввода-вывода, которые не охватывают полные физические сектора. Диск, который сообщает 512-байтовые собственные сектора, не накладывает это ограничение. В то время как более новые операционные системы обычно пытаются читать или записывать данные в единицах 4K, когда это возможно (делая эту информацию неактуальной), приложениям, которые выполняют низкоуровневый ввод-вывод, может потребоваться знать размер физического сектора, чтобы они могли соответствующим образом корректироваться и избегать неправильного выравнивания или записи с частичным сектором, которые вызывают медленные циклы RMW.

Ваш SSD позволяет изменять размер физического сектора, о котором сообщается, потому что это необходимо для совместимости с определенными массивами хранения.

  • Центры обработки данных часто имеют массивы хранения, состоящие из устаревших дисков 512n. Диски 4K, даже те, которые эмулируют 512-байтовые сектора, могут быть несовместимы с такими массивами, поэтому эта функция необходима для обеспечения совместимости. Смотрите эту ветку форума:

    Мы не можем просто вставить 4K диск в массив, отформатированный с 512b дисками. Многие массивы (особенно хранилище на основе ZFS, которое становится все более популярным, поскольку программно-определяемое хранилище порождает волны) не принимают заменяющий диск с другим форматом физического сектора.

    Обратите внимание, что лучшая производительность будет достигнута в современных системах, если диск настроен на использование секторов 4K.

5

Какую выгоду выигрывает ОС, зная о размере физического сектора, когда, независимо от того, ОС должна общаться с диском в 512-байтовых секторах.

Логический размер - это минимальный размер для передачи данных. Поскольку это блочное устройство, любая передача данных между хост-компьютером и диском будет кратна этому размеру логического блока.

Физический размер является оптимальным для передачи данных и отражает размер фактических операций чтения и записи на уровне контроллера / накопителя.

Когда хост-компьютер запрашивает чтение логического сектора, контроллер / накопитель выполняет операцию чтения физического сектора, который содержит логический сектор.
Когда размер логического сектора равен размеру физического сектора, операция проста. Когда размер логического сектора меньше размера физического сектора, контроллер должен извлечь логический сектор из физического сектора для передачи на хост-компьютер.

Когда главный компьютер запрашивает запись в логический сектор, размер физического сектора имеет значение.
Когда размер логического сектора равен размеру физического сектора, операция записи проста и может выполняться напрямую. Состояние предыдущего содержимого сектора не повлияет на операцию записи.

Когда размер логического сектора меньше размера физического сектора, контроллер должен сначала выполнить операцию чтения физического сектора, который содержит логический сектор.
Если чтение прошло успешно, то логический сектор вставляется в физический сектор, а физический сектор записывается целиком.
Если чтение не было успешным (даже после повторных попыток), операция записи не может быть завершена.

Если ОС выполняет операции чтения и записи с размером физического сектора (используя многосекторные операции, доступные в наборе команд ATAPI), операции записи будут выполняться более эффективно (и без ненужной вероятности незавершенности).

Размер сектора LOGICAL полностью определяет, как ОС может взаимодействовать с диском. Без исключений. Какая польза от знания размера физического сектора, когда вам разрешено общаться только в размере логического сектора?

Ваше утверждение "без исключений" неверно.
Набор команд ATAPI, который был представлен вместе с жестким диском IDE, всегда имел возможность выполнять операции чтения и записи с параметром sector count . Это всего лишь расширение существующих интерфейсов дисков и контроллеров гибких дисков, которые также были способны к многосекторным операциям чтения / записи (при условии, что сектора находились на одной дорожке).

3

Если ОС знает размер базового физического сектора, она может оптимизировать свои запросы, чтобы потребовать как можно меньше физических операций. В частности, для твердотельных накопителей предел физической работы (предел IOPS 4 КБ) часто является предельным пределом скорости устройства, поэтому важно максимально эффективно использовать эту емкость.

1

Существует два разных способа доступа к местоположению на диске: один - схема CHS, а другой - схема LBA.

CHS означает «Цилиндр, Головка, Сектор» и является наиболее низкоуровневым методом определения места чтения или записи с накопителя. Вы говорите ему использовать цилиндр x, головку y и сектор z и читать или записывать содержимое этого местоположения в адрес или из адреса в памяти (в буфер). Он получен из реальных физических компонентов жесткого диска (традиционная вращающаяся ржавчина), где у вас есть физические цилиндры и считывающие головки. Сектор является наименьшей адресуемой единицей, и он традиционно был установлен в 512 байт.

LBA - это логическая байтовая адресация, при которой привод считывает и записывает адрес сектора по его смещению, например, читает 123837-й сектор на диске или записывает его в 123734-й сектор на диске (начиная с нуля).

Эта проблема? Каждое из этих значений ограничено в диапазоне. Фактически, из-за того, насколько сильно был ограничен CHS, пришлось ввести LBA. Для CHS возможные значения C (цилиндр) - 1023, в то время как H (головки) могут быть максимум 255, а S (сектор) - только до 63, что означает, что вы можете иметь максимум 1024 цилиндра x 255 голов x 64 секторы x 512 байт, отображенные в традиционном формате CHS, что дает в общей сложности менее 8 ГиБ! Используя CHS, просто невозможно получить доступ к диску размером более 8 ГиБ!

Таким образом, LBA была введена с 32-разрядным ограничением, дающим вам 2 ^ 32 x 512 байт или ограничение 2 ТБ на размер диска - по этой причине размер MBR-диска не может превышать 2 ТБ, поскольку он использует CHS и LBA для указания размеров раздела, и ни один из них не может поддерживать что-либо более 2TiB.

Более новые и лучшие опции были введены, например, схема разбиения GPT, которая расширяет LBA до 64 бит, что дает вам гораздо больше, чем вам когда-либо понадобится, при 2 ^ 64 x 512 байт - но есть одна загвоздка: много наследства аппаратные средства и устаревшие операционные системы, а также устаревшие реализации BIOS и устаревшие драйверы не поддерживают UEFI или GPT, и многие люди хотели бы иметь что-то, что может быть более легко модернизировано, чтобы преодолеть ограничение 2TiB без необходимости переписывать весь стек с нуля. И, наконец, мы достигли размера сектора 4096.

Смотрите, во всех ограничениях, обсужденных выше, одно предположение было фиксированным: размер сектора. С первого дня было 512 байт, и с тех пор так и осталось. Но недавно производители жестких дисков осознали, что есть возможность поработать над магией: взять традиционный CHS или 32-битный LBA и просто заменить размер сектора на 4096 (4 КБ) вместо 512 байт. Когда операционная система говорит "дай мне второй сектор на диске", запрашивая LBA 1 (потому что LBA 0 является первым), мы не собираемся давать ей байты 512–1023, а байты 4096–8191.

Внезапно наш лимит 2TiB увеличивается до 2 ^ 32 x 4096 байт, или 16 TiB, без необходимости отбрасывать MBR, переключаться на UEFI или GPT или что-то еще!

Единственный улов в том, что если ОС не знает, что это волшебный диск, который использует 4096 секторов вместо 512-байтовых секторов, это может привести к несоответствию. Каждый раз, когда операционная система говорит: «Эй, ты, диск, напиши мне эти 512 байтов, чтобы сместить xxx», диск будет использовать 4096 байтов для хранения этих 512 байтов (остальные - нули или ненужные данные, при условии, что вы не получите переполнение памяти), потому что они не общаются в байтах, они общаются в секторах.

Таким образом, BIOS теперь (иногда) включают опцию, позволяющую вам вручную указать, что размер сектора 512 байт должен использоваться вместо собственного размера сектора 4096 байт, который используют более новые диски - с оговоркой, что вы не можете использовать его для доступа к более чем 2TiB диска в системе MBR, как это было в «старые добрые времена». Но современные ОС, поддерживающие 4k, могут использовать все это, чтобы использовать эту магию для чтения и записи в 4096-байтовых чанках и вуаля!

(Дополнительным преимуществом является то, что все происходит намного быстрее, потому что если вы читаете и записываете 4096 байт за раз, это меньше операций чтения или записи, скажем, 4 ГБ данных.)

0

Просто хотел сообщить вам о ситуации, когда секторы 4K являются проблемой для современных операционных систем.

Средство записи VSS от Microsoft (Shadow Copy) плохо работает с секторами 4K. Для резервного копирования общей папки репликации DFS нашему программному обеспечению для резервного копирования "Backup Exec" необходимо сделать теневую копию реплицированной папки DFS. Задание не выполняется, если папка репликации DFS находится на диске с секторами 4 КБ из-за неправильной работы VSS с секторами 4 КБ.

Джим

0

512/4096 = ОС, отвечающая за выравнивание / оптимизацию,

512/512 = Диск, ответственный за это

Смотрите также:http://support.microsoft.com/en-us/kb/2510009

-3

Физический - это фактический диск, а логический - это разделение внутри него. С ПК Mag's Logical vs Physical:

В ПК с Windows один физический жесткий диск - это диск 0; однако он может быть разбит на несколько логических дисков, таких как C:, D: и E:.

Чтобы объяснить это в удобоваримой форме, представьте себе яблоко шириной вашей руки. Это фактический физический размер яблока. Естественно, целое яблоко не поместится у вас во рту, поэтому вы решаете нарезать его на равные кусочки, причем каждый кусочек соответствует ширине вашего пальца. Это логический размер или размер, который будет использовать ваш компьютер.

Это объясняется несколькими причинами: расчетами мощности в реальном времени, отображением и исправлением ошибок, как объяснено в Википедии:

Типичные жесткие диски пытаются "переназначить" данные в физическом секторе, в котором происходит сбой, в резервный физический сектор, предоставленный "пулом резервных секторов" диска (также называемым "резервным пулом"), [41], полагаясь на ECC для восстановить сохраненные данные, пока количество ошибок в поврежденном секторе все еще достаточно мало. Функция SMART (технология самоконтроля, анализа и составления отчетов) подсчитывает общее количество ошибок во всем жестком диске, исправленных ECC (хотя и не на всех жестких дисках, поскольку соответствующие атрибуты SMART "Аппаратное восстановление ECC" и "Мягкая коррекция ECC") не всегда поддерживается), а также общее количество выполненных переназначений секторов, поскольку возникновение множества таких ошибок может предсказать сбой жесткого диска.

Точно так же, как у вас не может быть кусочков яблока без самого яблока, у вас не может быть логики без физического, служащего его основой.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .