У меня есть твердотельный накопитель Samsung EVO емкостью 2 ТБ, который я только что установил для замены на более старую модель меньшего размера. Это общий ресурс для нескольких установок ОС. У меня есть 4 раздела на диске, так как не все разделы используются для каждой ОС, которая разделяет ресурс. Я провел тест bonnie++, и производительность этого диска составляет примерно половину того, что я ожидал.

Вывод fsidk -l:

$ sudo fdisk -l /dev/sdb
Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes, 3907029168 sectors
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 label type: dos
Disk identifier: 0x01033206

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        4096   511991549   255993727    7  HPFS/NTFS/exFAT
/dev/sdb2       511995904   716795903   102400000   83  Linux
/dev/sdb3       716800000  1740799999   512000000   83  Linux
/dev/sdb4      1740804096  3907029167  1083112536   83  Linux

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

Несмотря на то, что размер физического сектора указан как 512, я считаю, что на самом деле это 4096 под капотом. Это означает, что раздел должен начинаться с границы сектора, кратного 4096. Первый раздел (извините, в данном случае это ntfs) начинается с сектора 4096 (2 МБ), так что это выглядит правильно, но я не уверен, где он должно закончиться. Согласно распечатке выше, этот раздел занимает 255993727 блоков. Это значение, деленное на 4096, равно 62 498,4685059, что не является целым числом, поэтому кажется, что конечный сектор не оптимален.

Раздел должен быть ~ 250 ГБ. Я понятия не имею, как рассчитать, где должен быть конечный сектор. Я использовал GParted для создания раздела, и вы можете указать размер раздела только в МБ. Можно выровнять по MiB, цилиндрам или никаким, но я и там не знаю правильного варианта. Я мог бы использовать fdisk для создания раздела, если это имеет смысл.

Если первый раздел выровнен неоптимально, то и другие, вероятно, не будут такими же. Могу ли я исправить это, просто изменив размер раздела sdb1, чтобы он заканчивался в другом секторе? Если да, то сколько МБ должен быть размер раздела?

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

ЛМХмедхим

0
LMHmedchem 27 Фев 2020 в 08:31
Начальное и конечное значения считаются в секторах, поэтому для выравнивания по 4096 размер и начало должны быть кратны 8 (4096/512). Однако я думаю, что блоки внутри SSD довольно большие, поэтому 4096 секторов, вероятно, лучше, чем 8.
 – 
Oskar Skog
27 Фев 2020 в 08:46
Размер раздела не имеет значения, за ним может быть пространство, позволяющее выровнять следующий раздел. Проверьте начальное значение, оно единственное, что имеет значение.
 – 
Oskar Skog
27 Фев 2020 в 08:49

1 ответ

Лучшей практикой является выравнивание разделов по границам 1 МБ. Это обеспечивает наилучшую совместимость с секторами, блоками и другими сегментами (например, рейд, lvm и т. д.)

Основы:

1 sector = 512byte  
1Kib = 1024byte or 2 sectors  
1MiB = 1024 * 1KiB = 1024 *1024byte = 1048576byte or 2048 sectors  
1GiB = 1024 * 1MiB = 1024 * 1024 * 1024byte = 1073741824byte or 2097152 sectors  

Поскольку граница в 1 МБ составляет 1048576 байт, что равно 2048 секторам, ваш первый раздел, начинающийся с сектора 4096, выровнен с границей в 2 МБ.

Если вы хотите 250 ГиБ в первом разделе, его размер должен быть
250GiB = 250 * 1024MiB = 256000MiB
256000MiB * 2048 sectors/MiB =524288000sectors

Тогда последний сектор первого раздела должен быть
(начальный сектор) - 1 + (размер в секторах)
4096 -1 + 524288000 =524292095

Ваш второй раздел может начинаться с сектора 524292096, который выровнен с границей 256002 МиБ
524292096 (sectors) / 2048 (sectors per 1MiB) = 256002MiB (boundary)

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

3
bey0nd 27 Фев 2020 в 10:43