Ликург
Заметки | Тех.книги | Худ.книги |

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

Может случиться так, что ваш диск будет выполнять в два раза больше файловых операций, чем необходимо.

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

Дисковая операция имеет несколько уровней:

1. Файловая ситема

2. Страйп рейда

3. Физический блок диска


Рассмотрим операцию записи некоторого количества данных:

1. Файловая система получает команду перезаписи некоторого набора кластеров

2. Контроллер получает команду перезаписи страйпов на которых расположены эти кластера

3. Диски получают команду перезаписи физических блоков, на которых расположены эти страйпы

Если рейда нет, то рассматриваем 2 уровня вместо 3-х, что принципиально не меняет суть проблемы. Проблема возникает, при не совпадении границ между блоками разных уровней. Это может произойти, если размеры блоков между уровнями не кратны друг другу, а также при смещении блоков одного из уровней.

Наиболее распространенная причина не совпадения границ блоков, это смещение раздела диска (partition) относительно границ блоков нижестоящего уровня. Всем известно, что первый сектор 512 байт занят таблицей разделов. Современные ОС делают после него отступ и обычно начинают метить разделы на границе 1Мб, что даже для рейдов с большими страйпами обычно обеспечивает совпадение границ. Средства разбиения разделов в XP и их ровесники, могут разметить диск начиная с второго сектора. Раньше диски имели физический блок 512 байт и это не создавало проблем. Многие современные диски используют физические блоки размером 4Кб, поэтому такое разбиение разделов приведет к тому что на каждый кластер файловой системы будет выполняться операция с двумя физическими блоками вместо одного.

При работе с рейдом необходимо учитывать, что в данном случае его страйп будет являться физическим блоком для файловой системы, поэтому смещение раздела должно быть достаточным для совпадения границ кластеров файловой системы с границами страйпов. Чтобы избежать не совпадения границ блоков, необходимо выставлять достаточное смещение первого раздела при разбиении диска. При использовании современных средств разбиения разделов это как правило не актуально, но проверить не помешает, особенно если вы используете большой рейд с большим страйпом. Также необходимо учитывать, что при разбиении разделов низкоуровневыми средствами. Или иными утилитами не обеспечивающими выравнивание, есть возможность не попасть в границы страйпов или блоков дисков.

Чтобы узнать, правильно ли выравнены ваши разделы по границам, в ОС Windows можно воспользоваться командой:

wmic partition get BLockSize,StartingOffset,Name,Index

Если StartingOffset кратно размеру страйпа и блока диска, то все ОК.

Обычно достаточно проверить первый раздел. Но если вы использовали низкоуровневые средства, то лучше проверить все разделы.