Чи підходить за замовчуванням розмір фізичного сектора 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

Обидва мої диски - це SSD, а для SSA- дисків AFAIK потрібен розмір сектора 4K . Це добре чи я щось пропускаю? Чи statгарантує інформація, повернута (= 4K), що ОС завжди буде надсилати IO на диск декількома 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

Так. Він містить корисну інформацію. Але я не знайшов авторитетної відповіді на питання: чи гарантована інформація, що повертається stat (4K), гарантує, що ОС завжди надсилатиме IO на диск декількома 4K, і ці блоки ніколи не будуть перетинати межі 4K (блоки IO завжди вирівняти до 4К)?
ФедонКадіфелі

Я не знаю, що таке "stat (4K)". Але більшість сучасних ОС знають, як поводитися з нативними 4K передачами вводу / виводу. І ні, це не означає, що блоки ніколи не будуть перетинати межі 4K на диску, якщо розділи не будуть вирівняні належним чином. Використовуйте fdisk -lдля перевірки на вирівнювання проблем. І, мабуть, роботи SSD дещо відрізняються через їх фізичну конструкцію, але я не фахівець у цій галузі.
гейннема

Відповіді:


7

У старі часи 512 байтових секторів були нормою для дисків. Система використовувала для читання / запису секторів лише один сектор за один раз, і це було найкраще, що могли зробити старі жорсткі диски.

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

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

Це означає, що навіть якщо для системи потрібен лише один сектор 512 байтів інформації, накопичувач зчитує вісім 512 байтових секторів, щоб отримати її. Якщо ж система потребує наступних семи секторів, вона вже читає їх, тому жодного дискового вводу-виводу не виникає ... отже, збільшення швидкості в загальній пропускній здатності.

Сучасні операційні системи можуть повністю використовувати переваги сучасних розмірів 4K блоків сучасних накопичувачів.


+1, але 4096/512 = 8, тому я думаю, що в одному фізичному секторі 4096 b має бути 8 (логічних) секторів 512 b. Я використовую partedдля відображення логічного та фізичного розміру сектору.
sudodus

@sudodus Хороший улов. Редагування виконано.
гейннема

Ось чому важливо вирівняти свої розділи до межі 4k, інакше кожне завантаження / зберігання блоку 4k насправді стосується двох апаратних секторів. (Файлові системи всередині розділів часто використовують 4k блоки, вирівняні до початку розділу). Деякі інструменти форматування вирівнюють перший розділ на 1MiB, залишаючи весь MiB невикористаним, за винятком таблиці розділів. Сучасні диски дійсно повідомляють їх розмір фізичного сектора , як 4k, окремо від їх розміру логічного сектора , який до цих пір 512B.
Пітер Кордес

@PeterCordes, Не перший завантажувальний сектор та таблиця розділів (у перших 512 байтах) зберігаються в першому Мібібайте. У таблиці розділів MSDOS grubвводить додатковий код у перший Mibibyte для завантаження в режимі BIOS. (У GPT grubпотрібен невеликий розділ з bios_grubпрапором для цього коду для завантаження в режимі BIOS).
sudodus

4

Згідно з Вікіпедією, "Розширений формат (AF) - це будь-який формат дискового сектора, який використовується для зберігання даних на дискових накопичувачах, що перевищує 512, 520 або 528 байт на один сектор, наприклад 4096-байтних секторів накопичувача розширеного формату (AFD)." Розширений формат (AF) - це формат диска, який в основному використовує розмір сектора 4 096 байт замість 512 байт. Щоб підтримувати сумісність із застарілими системами, диски AF імітують розмір сектору розміром 512 байт.

Я отримав ті ж результати , як ви отримали, запустивши stat -fі smartctlна два SSD - накопичувачах. Обидва SSD були автоматично розпізнані ОС, коли вони були встановлені і вимагали нульової конфігурації, тож виявляється, що отримані вами дані є налаштуваннями за замовчуванням для розміру блоку та розміру сектора.


@heynnema Я нічого не можу зробити щодо "4096-байтних секторів", тому що це скопійовано з Вікіпедії, тому я мушу залишити його таким же, як у Вікіпедії.
карел

2
@heynnema: Фізичний розмір набагато більший. SSD побудовані з флеш-пам’яті NAND », яка фізично розділена на так звані« блоки стирання ». Це може бути набагато більше, 4 МБ, безумовно, можливо.
MSalters

1

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

Обидва мої диски - це SSD, а для SSA-дисків AFAIK потрібен розмір сектора 4K. Це добре чи я щось пропускаю?

Старі апаратні та операційні системи використовували 512 байтових секторів, з 2011 року (майже) все обладнання для зберігання має 4096 (або більше ) байтових секторів; але деякі апаратні засоби підтримують емуляцію 512 байтових секторів для застарілих систем. Винятки є, SSD Samsung 840 EVO має блоки розміром 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, а також логічну перевірку блоку, що зберігається на кожному блоці з даними. Адаптери SAS RAID підтримують блоки диска на основі 512 байт даних або 4 К байт даних. Розмір блоку RAID для 512 дисків становить 528 байт на сектор, а розмір блоку RAID для 4K дисків становить 4224 байт на сектор.

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

Більш великий розмір сектору рекомендує Intel - " Отримайте оптимальну продуктивність за рахунок зміни розміру фізичного сектора SSD ".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.