Вступление
Под выравниванием разделов мы подразумеваем правильное выравнивание разделов по границам физического сектора устройства хранения данных (например, жесткого диска, 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, требуют ручного выравнивания.