Подходит ли размер физического сектора по умолчанию 512 байт для дисков SSD под Linux?

11

GSmartControl и любой инструмент другой командной строки (например fdisk, smartctl, cat /sys/block/sd*/queue/hw_sector_size, cat /sys/block/sd*/queue/physical_block_size) я использовал отчет об одинаковой для обоих моих дисков:

Sector Size: 512 bytes logical/physical

Это стандартная установка Ubuntu 18.10 (позже обновленная до 19.04). Однако stat -fкоманда на обоих дисках сообщает:

Block size: 4096       Fundamental block size: 4096

Оба моих диска являются твердотельными дисками, а AFAIK SSD диски требуют сектора размером 4K . Это нормально или я что-то упустил? Гарантирует ли информация, возвращаемая stat(= 4K), что ОС всегда будет отправлять ввод-вывод на диск кратными 4K, и эти блоки никогда не будут пересекать границы 4K (блоки IO всегда будут выровнены по 4K)?

Обратите внимание на следующий вывод ( sdb2мой корневой раздел , sdaмой /homeдиск):

# fdisk -l /dev/sd?
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Disk model: SanDisk SDSSDH35
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdb: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Disk model: ADATA SU800NS38 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: xxxx....

Device       Start       End   Sectors  Size Type
/dev/sdb1     2048   1050623   1048576  512M EFI System
/dev/sdb2  1050624 500117503 499066880  238G Linux filesystem

# df / /home
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sdb2      244568380  17799136 214276188   8% /
/dev/sda       479670976 129685112 325550152  29% /home
FedonKadifeli
источник
Да. Он содержит полезную информацию. Но я не нашел авторитетного ответа на вопрос: гарантирует ли информация, возвращаемая stat (4K), что ОС будет всегда отправлять ввод-вывод на диск кратными 4K, и эти блоки никогда не будут пересекать границы 4K (блоки IO всегда будут выровнять до 4К)?
ФедонКадифели
Я не знаю, что такое "stat (4K)". Но большинство современных ОС знают, как работать с собственными 4K-операциями ввода-вывода. И нет, это не означает, что блоки никогда не будут пересекать границы 4K на диске, если разделы не будут правильно выровнены. Используйте fdisk -lдля проверки проблем с выравниванием. И, видимо, работа SSD немного отличается из-за их физической конструкции, но я не эксперт в этой области.
Хейннема

Ответы:

7

В старые времена 512-байтовые сектора были нормой для дисков. Система использовала для чтения / записи секторов только один сектор за раз, и это было лучшее, что могли сделать старые жесткие диски.

Теперь, когда современные накопители настолько плотные, быстрые и интеллектуальные, чтение / запись секторов только по одному сектору за раз действительно замедляет общую пропускную способность.

Хитрость была в том, как ... ускорить общую пропускную способность, но при этом поддерживать совместимость со старыми / стандартными дисковыми подсистемами? Вы создаете блок размером 4096, который состоит из восьми физических секторов по 512 байт. Теперь 4096 является минимальным переносом чтения / записи на / с диска, но он передается в совместимых 512-байтовых блоках в ОС.

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

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

heynnema
источник
+1, но 4096/512 = 8, поэтому я думаю, что должно быть 8 (логических) секторов по 512 б в одном физическом секторе из 4096 б. Я использую, partedчтобы показать как логический, так и физический размер сектора.
Судодус
@sudodus Хороший улов. Редактирование выполнено.
Хейннема
Вот почему важно выровнять ваши разделы по границе 4К, в противном случае каждая загрузка / хранение блока 4К фактически затрагивает два аппаратных сектора. (Файловые системы внутри разделов часто используют блоки 4k, выровненные по началу раздела). Некоторые инструменты форматирования выравнивают первый раздел на 1 МБ, оставляя целый MiB неиспользованным, за исключением таблицы разделов. Современные диски действительно сообщают их размер физического сектора , как 4k, отдельно от их размера логического сектора , который до сих пор 512B.
Питер Кордес
@PeterCordes, не только загрузочный сектор и таблица разделов (в первых 512 байтах) хранятся в первом Мибибайте. В таблице разделов MSDOS grubпомещает дополнительный код в первый Mibibyte для загрузки в режиме BIOS. (В GPT grubтребуется небольшой раздел с bios_grubфлагом для загрузки этого кода в режиме BIOS).
Судодус
4

Согласно Википедии «Расширенный формат (AF) - это любой формат сектора диска, используемый для хранения данных на дисках, размер которых превышает 512, 520 или 528 байт на сектор, например, 4096-байтовые сектора диска расширенного формата (AFD)». Расширенный формат (AF) - это формат диска, который изначально использует размер сектора 4096 байт вместо 512 байт. Для обеспечения совместимости с устаревшими системами диски AF эмулируют размер сектора 512 байт.

Я получил те же результаты , как вы получили, запустив stat -fи smartctlна два SSD - накопителях. Оба твердотельных накопителя были автоматически распознаны ОС, когда они были установлены, и им потребовалась нулевая конфигурация, поэтому кажется, что полученные данные являются настройками по умолчанию для размера блока и размера сектора.

Карел
источник
@heynnema Я ничего не могу сделать с «4096-байтовыми секторами», потому что он скопирован из Википедии, поэтому я должен оставить его таким же, как и в Википедии.
Карел
2
@heynnema: Физический размер намного больше. Твердотельные накопители построены из флэш-памяти NAND, "которая физически разделена на так называемые" блоки стирания ". Они могут быть намного больше, 4 МБ определенно возможно.
MSalters
1

Подходит ли размер физического сектора по умолчанию 512 байт для дисков SSD под Linux?

Оба моих диска являются твердотельными дисками, а AFAIK SSD диски требуют сектора размером 4K. Это нормально или я что-то упустил?

Старое оборудование и операционные системы использовали 512-байтовые сектора, с 2011 года (почти) все оборудование хранения имеет 4096 (или более ) байтовых секторов; но некоторые аппаратные средства поддерживают эмуляцию 512-байтовых секторов для устаревших систем. Есть исключения, Samsung 840 EVO SSD имеет блоки размером 2048 КБ .

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

Использование секторов 4K имеет смысл с архитектурной точки зрения, поскольку другие показатели (например, страницы памяти x86 и многие кластеры файловой системы) также используют размер 4 КБ. Расширенный формат позволяет использовать более надежные алгоритмы ECC, что важно в свете постоянно растущих возможностей. Контроллеры используют дополнительные методы помимо исправления ошибок посредством понимания характеристик ошибок флэш-памяти NAND и поведения рабочей нагрузки.

Расширенный формат (AF) - это любой формат сектора диска, используемый для хранения данных на магнитных дисках на жестких дисках (HDD), размер которых превышает 512, 520 или 528 байт на сектор, например 4096, 4112, 4160 и 4224 байта ( 4 КБ) секторов диска расширенного формата (AFD). Более крупные сектора позволяют интегрировать более надежные алгоритмы исправления ошибок, чтобы поддерживать целостность данных при более высокой плотности хранения.

Для дисков SCSI (SAS) размер блока RAID превышает размер блока JBOD из-за стандартизированных полей целостности данных SCSI T10 вместе с логической проверкой неправильных блоков, хранящейся в каждом блоке с данными. RAID-адаптеры SAS поддерживают дисковые блоки на основе 512 байт данных или 4 Кбайт данных. Размер блока RAID для 512 дисков составляет 528 байт на сектор, а размер блока RAID для дисков 4K составляет 4224 байта на сектор.

Поскольку вы выполняете запись в память, а размер физического сектора вращающегося диска не оказывает такого влияния, как обеспечение выравнивания разделов по размеру стираемого блока . Тем не менее, лучше иметь современное программное и аппаратное обеспечение и использовать размер сектора 4K.

Intel рекомендует использовать больший размер сектора - « Повышение оптимальной производительности за счет изменения размера физического сектора SSD ».

обкрадывать
источник