Parted: The resulting partition is not properly aligned for best performance

Тем кто сталкивался с разметкой емких дисковых подсистем знакома утилита parted. Для тех кто читает про нее впервые поясню – утилита fdisk или cfdisk не умеют работать с дисковыми подсистемами емкостью >2Tb, о чем честно и пишут:

Соответственно при помощи утилиты parted мы можем сделать 2-е базовые вещи:

  • Изменить тип таблицы разделов с MBR на GPT
  • Разметить дисковую подсистему на нужное количество разделов

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

Но вернемся к сообщению указанному в заголовке заметки. Это сообщение выводится в случае если при разметке parted считает что вы указали неправильные значения для начала и конца раздела, например:

И из-за этого данные, которые будут записываться или читаться с диска, будут размещены не самым оптимальным способом. Данная проблема возникла в связи с переходом производителей жестких дисков на другой размер секторов, а именно с 512B на 4KB, и в связи с этим, если при разметке диск указать неправильный стартовый сектор для раздела, то может получиться ситуация, когда один логический блок данных в 512B будет записан сразу на два 4KB сектора, которые будут прочитаны контроллером жесткого диска при запросе на выборку данных, что в итоге приводит к снижению производительности всей дисковой подсистемы. Более подробно очень детально описана данная ситуация на сайте Seagate.

Так чем же нам может помочь утилита parted для решения описанной проблемы – у ней есть встроенный функционал для расчета оптимального начального смещения для корректного выравнивания границ разделов. Настроить логику работы данного функционала можно при помощи ключа “-a”, более подробно можно прочитать в документации.

Данный функционал работает по следующей логике:

Где указанные параметры – это значения в sysfs привязанные к дисковой подсистеме или конкретному разделу, например:

Поэтому для решения указанной в заголовке проблемы, вы можете посчитать номер стартового сектора в ручном режиме по формуле и указать его в parted:

Либо довериться аналогичному алгоритму встроенному в утилиту:

В случае если ошибка не возникнет и раздел будет размечен можете считать что вы все сделали правильно и у вас правильно произведено выравнивание блоков на дисковой подсистеме.

comments powered by HyperComments
cormorant
2015-01-26 07:25:03
Очень пригодилось, спасибо)
Пётр
2015-02-05 13:40:45
Небольшое уточнение про расчёт: startsector = (optimal_io_size + alignment_offset) / physical_block_size
WTF FTW
2016-03-16 09:51:01
mkpart primary 0% 100% profit
admin
2016-04-02 19:04:21
Yep, check last part of this article. But sometimes this algoritm can fail, so first part of article describe alternative way for same goal.
3appraised
2022-01-13 03:20:17
<strong>1clifton</strong>
chat gay grstis
2022-01-14 15:45:58
<strong>chat-avenue/gay https://bjsgaychatroom.info/</strong>
gay dating apps
2022-01-14 19:23:58
<strong>palm springs ca mature gay bisexual dating https://gaypridee.com/</strong>
anonymous gay chat
2022-01-14 22:19:46
<strong>random gay video chat https://gaytgpost.com/</strong>
gay roulette chat
2022-01-15 01:28:20
<strong>gay webcam and chat https://gay-buddies.com/</strong>
facebook gay dating group
2022-01-15 16:41:54
<strong>gay filipino dating https://speedgaydate.com/</strong>