Разметка SSD с помощью sfdisk

4086
hamstar

Я уже некоторое время пытаюсь красиво разделить этот SSD (Samsung 840). Я хочу убедиться, что страницы совпадают со страницами SSD, чтобы ограничить количество записей. Я нашел этот сайт, который рекомендует использовать 224 головы и 56 секторов.

У меня уже есть дамп sfdisk, который я хочу скопировать, но немного переместить начальный раздел (я думаю). Он измеряется в секторах, и я смущаюсь, перемещаясь между секторами, головками, цилиндрами и всем остальным (мой товарищ дал мне стартовый номер 2048):

# partition table of /dev/sdb unit: sectors  /dev/sdb1 : start= 2048, size= 995329, Id=83, bootable /dev/sdb2 : start= 997377, size= 10242047, Id=83 /dev/sdb3 : start= 11239424, size= 24611328, Id=83 /dev/sdb4 : start= 35850752, size= 67223296, Id= 5 /dev/sdb5 : start= 35850808, size= 10235848, Id=83 /dev/sdb6 : start= 46086712, size= 56987336, Id=83 

Так что я бросил эту раскладку на диск, используя sudo sfdisk -H224 -S56 /dev/sdb < sfdisk.dump. Но в вышеупомянутой ссылке парень говорит, что он следит за тем, чтобы его перегородка начиналась на цилиндре 2, чтобы он находился на границе цилиндра.

Я попытался проверить мой стартовый цилиндр, и он на 0 :(

$ sudo sfdisk -l -uC /dev/sdb   Disk /dev/sdb: 18689 cylinders, 224 heads, 56 sectors/track Units = cylinders of 6422528 bytes, blocks of 1024 bytes, counting from 0  Device Boot Start End #cyls #blocks Id System /dev/sdb1 * 0+ 79- 80- 497664+ 83 Linux /dev/sdb2 79+ 895 817- 5121023+ 83 Linux /dev/sdb3 896 2857 1962 12305664 83 Linux /dev/sdb4 2858 8216 5359 33611648 5 Extended /dev/sdb5 2858+ 3673 816- 5117924 83 Linux /dev/sdb6 3674+ 8216 4543- 28493668 83 Linux 

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

Я также попробовал другой способ настроить sfdisk:

echo "2,512,83,* ,5000,83 ,10000,83 ,,5 ,6000,83 ,6000,83 "|sudo sfdisk -uM -H224 -S56 /dev/sdb 

И попытался увеличить мегабайты для - и проверить - начальную позицию цилиндра, но может получить только до 6 мегабайт, прежде чем у него будет дерьмо ( Warning: given size (5005) exceeds max allowable size (6)), и я все еще на нулевом цилиндре.

Геометрия диска человек! Как это работает!?

Есть ли более простой способ? У кого-нибудь есть какие-нибудь формулы для расчета между типами геометрии? Кто-нибудь знает хороший учебник, чтобы связать меня? Кто-нибудь делал это раньше для своих SSD?

С уважением

0

1 ответ на вопрос

2
Rod Smith

На MBR-диске значения секторов хранятся двумя способами:

  • В формате CHS - формат цилиндра / головки / сектора (CHS) использует странное 24-битное кодирование для хранения значений сектора. Делая немного математики, 2 ^ 24 * 512 байт = 8 ГБ. (На самом деле, истинное ограничение CHS немного ниже, чем это, потому что не все значения CHS являются допустимыми.) Обратите внимание, что это 8 ГиБ, что значительно ниже общей емкости большинства современных дисков (даже SSD), что означает, что кодировка CHS бесполезна и поэтому игнорируется для большинства целей сегодня. Поэтому сосредоточение внимания на значениях CHS и геометрии CHS (которые определяют максимальные значения цилиндра, головки и сектора для диска) является пустой тратой времени.
  • В формате LBA - Формат линейной (или логической) блочной адресации (LBA) использует одно 32-битное значение для указания секторов. 2 ^ 32 * 512 байт = 2 ТБ, следовательно, ограничение 2 ТБ для MBR. Этого достаточно для всех современных твердотельных накопителей и даже многих современных вращающихся дисков; но для больших современных дисков требуется более новая система разбиения GPT, в которой используются 64-разрядные значения LBA, а не значения CHS.

В прошлом разделы выравнивались по значениям цилиндров, потому что это могло улучшить производительность дисков той эпохи (в 1980-х и, возможно, в начале 1990-х). С тех пор выравнивание цилиндров было обычным делом просто по привычке и для обратной совместимости, но на самом деле оно не служило какой-либо цели. Сегодня выравнивание цилиндров вредно, потому что новые технологии (твердотельные накопители, определенные типы RAID-массивов и диски Advanced Format) лучше работают с выравниванием на некотором множестве секторов степени 2 (8, 512, 2048 и т. Д.), Но детали отличаются от одного типа диска к другому. Большинство современных инструментов создания разделов по умолчанию выравнивают по крайней мере первый раздел на нескольких секторах из 2048, потому что это хорошо работает для большинства современных дисков; однако для некоторых твердотельных накопителей требуются еще большие значения, например 4096 или даже 8192. Если вы можете получить техническую информацию о вашем твердотельном накопителе, Вы можете узнать, каковы его требования. Если нет, попробуйте использовать значение выравнивания по умолчанию 2048, 4096 или 8192.

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

Оба partedи gdiskделают больше для обеспечения выравнивания разделов, чем делает fdisk(и я подозреваю sfdisk). Таким образом, вы можете рассмотреть возможность использования одного из этих инструментов - но он gdiskработает только на GPT-дисках, поэтому вы должны использовать его, только если вы хотите переключиться на GPT с MBR.

Какая потрясающая поломка, большое спасибо! Один вопрос, однако, значение выравнивания, которое я использую для деления, будет количеством секторов (например, 56 в моем примере выше)? hamstar 10 лет назад 0
При использовании устаревших режимов CHS обычно * первый * раздел начинается со значения сектора *, а последующие разделы начинаются со значения * заголовков сектора. Идея состоит в том, чтобы начать большинство разделов в первом секторе первого диска, за исключением того, что это первый раздел, который начинается раньше, чтобы минимизировать потерю места в начале диска. Однако все это довольно запутанно, и поскольку CHS теперь практически бесполезен, лучше всего использовать инструменты, которые используют адреса LBA изначально и игнорируют значения CHS. Rod Smith 10 лет назад 0

Похожие вопросы