Выравнивание разделов

Вступление

Под выравниванием разделов мы подразумеваем правильное выравнивание разделов по границам физического сектора устройства хранения данных (например, жесткого диска, SSD, тома RAID). Правильное выравнивание разделов обеспечивает оптимальную производительность для доступа к данным. Неправильное выравнивание разделов может привести к снижению производительности, особенно для твердотельных накопителей (например, с размером внутренней страницы 4096 или 8192 байта), жестких дисков с секторами по 4 КБ (4096 байтов) и томов RAID.

Основная информация

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

Для установки без посторонней помощи через удаленную консоль (KVM Console) или через VNC (например, CentOS 6.X) выравнивание необходимо настроить вручную. Грубо говоря, чем более свежая операционная система будет установлена, тем выше вероятность того, что разделы будут правильно выровнены программой установки. Выравнивание можно проверить с помощью следующей команды:

sfdisk -uS -l
fdisk -u -l /dev/sdX

Загрузочный сектор для каждого раздела должен делиться не менее чем на 8 (8 * 512 байт = 4 КБ), а в идеале — на 2048 (2048 * 512 байт = 1 МБ).

Справочная информация: разметка

Типичные диски работают с размером физического сектора 512 байт. Первый раздел начинается в последнем секторе первой дорожки с (логическим) адресом блока 63. Размер такого (логического) сектора также составляет 512 байтов. Поскольку логический и физический секторы имеют одинаковый размер, проблем нет. Новые диски в расширенном формате работают с размером физического сектора 4096 байт (4 КБ). Однако внешне они имитируют размер сектора 512 байт (Advanced Format 512e). SSD также работают с размером страницы 4 КБ или 8 КБ. Использование «классического» разбиения, которое начинается с адреса LBA 63, больше не рекомендуется для этих новых дисков или твердотельных накопителей.

Текущие файловые системы, такие как ext4 или ntfs, например, используют размер блока 4 КБ. Блоки файловой системы по 4 КБ не помещаются непосредственно в сектора жесткого диска по 4 КБ или страницы SSD размером 4/8 КБ. При записи одного блока файловой системы размером 4 КБ необходимо изменить два сектора или страницы по 4 КБ. Это еще больше усложняется необходимостью сохранить соответствующие блоки по 512 байт, что приводит к чтению / изменению / записи . Это приводит к значительному снижению производительности.

Правильное разбиение

Чтобы избежать этой проблемы, рекомендуемое выравнивание составляет 1 МБ — на всякий случай в долгосрочной перспективе. Текущая адресация в логических секторах размером 512 байт составляет 2048 секторов.

Linux

fdisk (старые версии)

Для более старых версий FDisk, выравнивание может быть достигнуто вручную с помощью -Sи -Hпараметров. Существуют различные варианты для конкретного числа секторов на дорожку (S) и числа головок (H). При -S 32 -H 64этом разделы выровнены по 1 MB(32 сектора на дорожку * 64 заголовка * 512 байтов = 1 048 576 байтов = 1 МБ). Создавая первый раздел, вы начинаете со второго цилиндра. Отсутствие специальных параметров приводит к несовпадению с fdisk.

fdisk в системе спасения Hetzner

Версия fdisk, содержащаяся в Hetzner Rescue System, использует выравнивание 1 МБ при условии, что режим совместимости с DOS отключен.

Для более новых версий fdisk рекомендуется:

  • используйте fdisk из util-linux-ng> = 2.17.2
  • обратите внимание на предупреждения fdisk
  • деактивировать режим совместимости с DOS (опция -c)
  • использовать секторы как единицы отображения (опция -u)
  • используйте + size {M, G}, чтобы показать конец раздела

Пример неправильной центровки

В следующем примере показано неправильное выравнивание после установки CentOS 5.6 с помощью VNC:

[root@static ~]# fdisk -v
fdisk (util-linux 2.13-pre7)
[root@static ~]# fdisk -u /dev/hda

The number of cylinders for this disk is set to 10443.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/hda: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders, total 167772160 sectors
Units = sectors of 1 * 512 = 512 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *          63      208844      104391   83  Linux
/dev/hda2          208845   167766794    83778975   8e  Linux LVM

Пример правильного выравнивания

root@rescue ~ # fdisk -c -u /dev/sda

Command (m for help): p

Disk /dev/sda: 1500.3 GB, 1500301910016 bytes
255 heads, 63 sectors/track, 182401 cylinders, total 2930277168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x0004dc67

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048     4196351     2097152   fd  Linux raid autodetect
/dev/sda2         4196352     5244927      524288   fd  Linux raid autodetect
/dev/sda3         5244928  1465149167   729952120   fd  Linux raid autodetect

LVM и программный RAID

Хотя здесь также необходимо обратить внимание на правильное выравнивание, это не является явно необходимым, поскольку используются блоки размером не менее 64 КБ. Более новые версии включают исправления, которые выполняют дополнительное выравнивание на границах 1 МБ.

Windows

Все версии Windows, начиная с Windows Vista, автоматически выполняют выравнивание по границе 1 МБ на всех устройствах хранения данных размером более 4 ГБ. Более старые версии, такие как Windows XP, требуют ручного выравнивания.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *