Какой смысл в жестких дисках сообщать размер физического сектора?


13

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

Вариант 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 Б).


1
4096 байт - это расширенный формат. Жесткие диски в расширенном формате могут работать в зависимости от операционной системы, если жесткий диск будет эмулировать 512 Кб
Моав,

2
Интерфейсы хранения являются сокровищницей унаследованных решений ... «Размер физического сектора 4 КБ» также не соответствует действительности. Флэш-память имеет размеры физических секторов, которые обычно превышают 256 кБ. Все сообщаемые размеры секторов (ил) логичны.
MSalters

Ответы:


16

Эмуляция 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-байтовые собственные сектора, не накладывает это ограничение. В то время как более новые операционные системы обычно пытаются читать или записывать данные в единицах 4К, когда это возможно (делая эту информацию неактуальной), приложениям, которые выполняют низкоуровневый ввод-вывод, может потребоваться знать размер физического сектора, чтобы они могли соответствующим образом корректироваться и избегать неправильного выравнивания или записи с частичным сектором, которые вызывают медленные циклы RMW.

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

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

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

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


Ирония заключается в том, что ОС, которые не знают, как правильно настроить, также не сможет запрашивать жесткий диск на предмет «размера физического сектора». Операционные системы, которые знают, как правильно выполнить выравнивание, не должны запрашивать на жестком диске «физический размер сектора», потому что по умолчанию они правильно выравниваются. Например, Windows выравнивается до 1 МБ.
misha256

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

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

3
Этот ответ не имеет отношения к жестким дискам, но не относится к твердотельным накопителям. Размеры блоков записи / стирания твердотельных накопителей составляют несколько мегабайт, поэтому даже «физический» 4K не близок к реальному размеру физического сектора.
qasdfdsaq

1
Размер записи @qasdfdsaq не обязательно совпадает с размером стирания. 4K будет гранулярность блока "в использовании" отслеживания. Между тем я теперь убежден, что последняя часть этого ответа о ZFS является правильной: utcc.utoronto.ca/~cks/space/blog/tech/…
pjc50

5

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

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

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

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

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

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

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

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

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


Это может быть правильный ответ ... но я все еще не убежден. Современные ОС работают с файловыми системами и блоками ввода / вывода размером 4K и кратными 4K. Они уже оптимизированы для использования с жесткими дисками с физическими секторами 4K. Кроме того, используемые размеры блоков ввода-вывода по- прежнему составляют 4 КБ и кратны 4 КБ даже на физическом жестком диске емкостью 512 байт. Что дает?!
misha256

Бинго! sector countПараметр вы говорите ... даже древний Windows XP читает / пишет в I / O блока размером 8секторов или их упаковке. Это уже полностью оптимизировано! Вот почему XP работает очень хорошо с твердотельными накопителями, если раздел выровнен. Это очень удобно для 4K. Так что вопрос до сих пор остается без ответа. Что еще может сделать ОС, зная, что размер физического сектора составляет 4K. Помните, ОС уже оптимизирована для ввода / вывода 4K.
misha256

1
«Они уже оптимизированы ...» - не обязательно. «Стартовый» сектор должен быть всегда согласован с физическим сектором. Это не гарантируется, когда ОС не знает физических и логических секторов, а просто пытается повысить эффективность, используя многоотраслевые операции.
опилки

2
@ misha256 Нет, не все так просто. «Windows XP, Windows Server 2003 и Windows Server 2003 R2 не поддерживают носители 512e или 4Kn. Хотя система может загружаться и работать минимально, возможны неизвестные сценарии проблем с функциональностью, потери данных или неоптимальный Таким образом, Microsoft настоятельно рекомендует не использовать носитель 512e с Windows XP ... " msdn.microsoft.com/en-us/library/windows/desktop/…
Росс Ридж

2
@ misha256 - Ты выбираешь условия, а затем заявляешь, что при любых обстоятельствах эта информация бесполезна. Не каждый собирается использовать такой SSD с кластерами Windows и NTFS и> 4k. «NTFS даже не поддерживает менее 4K ввода-вывода» - не соответствует действительности. Размеры кластера 512, 1024 и 2048 байт все еще являются вариантами в моей (современной) копии Win7 для NTFS. , ,
опилки

3

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


Ах, это не может быть правдой. Современные ОС по своей сути оптимизированы. Все они используют файловые системы с размерами «блоков» (или кластерами), которые составляют 2 ^ n байтов, начиная с 2 ^ 12 (т. Е. 4K, думаю, NTFS по умолчанию). Исходя из этого, все операции ввода-вывода заканчиваются кратным 4К. Независимо от того, является ли диск физически 512-байтовым или 4K, не должно иметь значения. Вы не можете оптимизировать дальше, конечно?
misha256

Что если ОС не получает правильного выравнивания и операция ввода-вывода завершается на двух физических секторах? Вы получите ухудшенную производительность.
bwDraco

1
@ misha256 Нет несовместимости между тем, что ты сказал, и тем, что я сказал. Это правда, что помимо правильного выравнивания, большинство файловых систем не получают большой выгоды от знания размера физического сектора. Некоторые базы данных делают.
Дэвид Шварц

@DavidSchwartz Правильно, хорошо, так что все это может быть в пользу некоторых эзотерических ОС или файловых систем, используемых в центрах обработки данных или тому подобное? Может быть, какие-нибудь модные RAID-массивы?
misha256

Похоже, речь идет о не Windows ("эзотерических") ОС и контроллерах RAID.
pjc50

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 ГБ данных.)


2
Это действительно не отвечает на вопрос. Объяснение CHS и LBT не имеет значения. Это звучит как мозговая утечка того, что вы знаете о «секторах». «С первого дня было 512 байт ...» - это верно только для IBM PC.
опилки

1
@sawdust Я не согласен - Даже игнорируя (imho важный) фон о CHS и LBA, краткий ответ на ваш вопрос находится во втором последнем абзаце «Но современные ОС, поддерживающие 4k, могут использовать все это, чтобы использовать эту магию для читай и пиши в 4096 байтовых чанках и вуаля! - то есть допущение в вопросе - что операционная система должна говорить в 512 байтах - неверно.
Давидго

@davidgo На уровне драйвера ОС взаимодействует с накопителем nкусками по 512 байт. Это nчисло, которое в Windows XP НИКОГДА не меньше 8 и всегда кратно 8. Это означает, что каждая ОС начиная с XP и далее, и я считаю, что все современные дистрибутивы Linux уже оптимизированы для дисков 4K. Наименьший размер ввода-вывода составляет 4 КБ, а все остальные размеры ввода-вывода кратны этому.
misha256

Я думаю, я очень четко даю понять, что даже если вы сгруппируете n секторов в одну операцию, вы все равно говорите диску, чтобы он искал куски по 512 байт, что означает, что вы ограничены в том, сколько вы можете искать. 4096 секторов решают проблему поиска. Я также уточнил, что знание ОС о размере блока является обязательным, иначе 512 байт будут сохранены в 4096 кусках!
Махмуд Аль-Кудси

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

1

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

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

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


Пожалуйста, процитируйте основные части ответа по ссылочной ссылке (ссылкам), так как ответ может стать недействительным, если связанные страницы изменятся.
DavidPostill

0

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

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

Джим


3
Я не совсем уверен, что это отвечает на предложенный вопрос, он отвечает на вопрос, но не тот, который задал автор.
Ramhound

Это очень интересная информация, но, похоже, это ответ на несколько иной вопрос. Когда у вас будет достаточно репутации, вы сможете комментировать везде. Для ознакомления с нашим сайтом, посмотрите тур .
Бен Н

-3

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

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

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

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

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

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


1
Но почему ОС должна знать размер физического сектора и что она будет делать по-другому, учитывая, что она все равно должна взаимодействовать с диском в логических секторах? Похоже, абсолютно бесполезная информация для ОС.
misha256

«почему ОС должна знать ...» - логический размер - это минимальный размер для передачи данных. Физический размер является оптимальным размером для передачи данных и отражает размер фактической операции чтения / записи на уровне накопителя. «Это кажется абсолютно бесполезной информацией ...» - возможно, это кажется «бесполезным» для вас, потому что вы не разрабатываете или не участвуете в операционной системе?
опилки

1
@sawdust Но ОС не может использовать оптимальный размер передачи, о котором вы говорите, потому что диск жестко привязан к логическим секторам размером 512 байт. Нативные диски 4K отличаются, они имеют логические сектора 4K, а поддерживающая ОС (например, Win 8.1) вынуждена читать и записывать в логических секторах 4K. Но мой диск не является логическим диском 4K. Это 512-байтовый логический диск.
misha256

@ misha256 - я отправил свой ответ.
опилки

Смешение физических / логических дисков с размерами физического / логического сектора.
MSalters
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.