Hetzner - DokuWiki

Partition Alignment/ru

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

Если установка операционной системы производится из панели Robot или с помощью installimage в Rescue системе, то корректное выравнивание разделов происходит автоматически.

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

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

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

Inhaltsverzeichnis

Предыстория: Разметка диска

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

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

Part alignment wrong.png

Корректная разметка

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

Part alignment right.png

Linux

fdisk (более старые версии)

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

fdisk в Hetzner Rescue системе

Версия утилиты fdisk, доступная в Rescue системе использует 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, требуется ручное выравнивание.



© 2018. Hetzner Online GmbH. Alle Rechte vorbehalten.