<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://lorwiki.zhbert.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%92%D1%8B%D1%80%D0%B0%D0%B2%D0%BD%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%BE%D0%B2_%D0%B4%D0%B8%D1%81%D0%BA%D0%B0</id>
	<title>Выравнивание разделов диска - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://lorwiki.zhbert.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%92%D1%8B%D1%80%D0%B0%D0%B2%D0%BD%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%BE%D0%B2_%D0%B4%D0%B8%D1%81%D0%BA%D0%B0"/>
	<link rel="alternate" type="text/html" href="http://lorwiki.zhbert.ru/index.php?title=%D0%92%D1%8B%D1%80%D0%B0%D0%B2%D0%BD%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%BE%D0%B2_%D0%B4%D0%B8%D1%81%D0%BA%D0%B0&amp;action=history"/>
	<updated>2026-10-12T23:47:52Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.39.0</generator>
	<entry>
		<id>http://lorwiki.zhbert.ru/index.php?title=%D0%92%D1%8B%D1%80%D0%B0%D0%B2%D0%BD%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%BE%D0%B2_%D0%B4%D0%B8%D1%81%D0%BA%D0%B0&amp;diff=257&amp;oldid=prev</id>
		<title>Admin: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="http://lorwiki.zhbert.ru/index.php?title=%D0%92%D1%8B%D1%80%D0%B0%D0%B2%D0%BD%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%BE%D0%B2_%D0%B4%D0%B8%D1%81%D0%BA%D0%B0&amp;diff=257&amp;oldid=prev"/>
		<updated>2023-02-27T18:39:17Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 21:39, 27 февраля 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://lorwiki.zhbert.ru/index.php?title=%D0%92%D1%8B%D1%80%D0%B0%D0%B2%D0%BD%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%BE%D0%B2_%D0%B4%D0%B8%D1%81%D0%BA%D0%B0&amp;diff=256&amp;oldid=prev</id>
		<title>lor&gt;Mandala: Откат правок 31.173.240.129 (обсуждение) к версии Cetjs2</title>
		<link rel="alternate" type="text/html" href="http://lorwiki.zhbert.ru/index.php?title=%D0%92%D1%8B%D1%80%D0%B0%D0%B2%D0%BD%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%BE%D0%B2_%D0%B4%D0%B8%D1%81%D0%BA%D0%B0&amp;diff=256&amp;oldid=prev"/>
		<updated>2018-05-09T14:55:00Z</updated>

		<summary type="html">&lt;p&gt;Откат правок &lt;a href=&quot;/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/31.173.240.129&quot; title=&quot;Служебная:Вклад/31.173.240.129&quot;&gt;31.173.240.129&lt;/a&gt; (&lt;a href=&quot;/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:31.173.240.129&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Обсуждение участника:31.173.240.129 (страница не существует)&quot;&gt;обсуждение&lt;/a&gt;) к версии &lt;a href=&quot;/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Cetjs2&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Участник:Cetjs2 (страница не существует)&quot;&gt;Cetjs2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Теория =&lt;br /&gt;
== Термины ==&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/Сектор_диска Сектор] — минимальная адресуемая единица хранения информации на дисковых запоминающих устройствах.&lt;br /&gt;
* Блок — размер данных, установленный для обмена с блочным устройством.&lt;br /&gt;
&lt;br /&gt;
Важно, что размер сектора определяется оборудованием (например, диск сообщает ОС, что размер сектора — 512 байт), а размер блока — операционной системой ( например, размер блока установим в 8 секторов)&lt;br /&gt;
&lt;br /&gt;
* Раздел — как disk volume, так и logical volume и любой контейнер для хранения данных (зашифрованный диск, например). Может быть, кто-нибудь сформулирует точнее.&lt;br /&gt;
&lt;br /&gt;
== Суть проблемы ==&lt;br /&gt;
&lt;br /&gt;
Без выравнивания разделов скорость работы с диском ниже (иногда — намного ниже) ожидаемой.&lt;br /&gt;
&lt;br /&gt;
Например:&lt;br /&gt;
&lt;br /&gt;
* Не используется ни LVM, ни аппаратный рейд, ни какой-либо ещё способ виртуализации дисковой подсистемы, размер блока ext3 — 4K,  WD20EARS (в нем используется advanced format в терминологии WesternDigital).&lt;br /&gt;
&lt;br /&gt;
* Если раздел начинается с сектора 63, скорость записи падает на 30 % по сравнению с разделом, начинающимся с сектора 2048.&lt;br /&gt;
&lt;br /&gt;
== История проблемы ==&lt;br /&gt;
&lt;br /&gt;
Выравнивать разделы начали задолго до того, как эта проблема коснулась домашнего пользователя — аппаратные рейды, виртуализация, SAN-диски требовали грамотной настройки. Но после того, как размер обычного домашнего жёсткого диска дошёл до 2 Тб, выравнивание блоков данных попало в область внимания хомячков.&lt;br /&gt;
&lt;br /&gt;
По сомнительным historical reason (соображениям совместимости со всяким хламом вроде Windows 98), разделы диска до сих пор выравниваются по так называемой границе цилиндра (см. [http://ru.wikipedia.org/wiki/Жёсткий_диск#.D0.93.D0.B5.D0.BE.D0.BC.D0.B5.D1.82.D1.80.D0.B8.D1.8F_.D0.BC.D0.B0.D0.B3.D0.BD.D0.B8.D1.82.D0.BD.D0.BE.D0.B3.D0.BE_.D0.B4.D0.B8.D1.81.D0.BA.D0.B0 геометрия жёсткого диска] (википедия), и число секторов в разделе должно быть кратно 63. Хотя это давно не соответствует реальной геометрии диска, которая прячется от нас электроникой жёсткого диска.&lt;br /&gt;
&lt;br /&gt;
Диски большой ёмкости имеют размер сектора 4096 байт вместо обычных 512, но в целях совместимости со старыми ОС представляются как диски с размером сектора 512 байт. И если размер блока файловой системы больше логического 512-байтного сектора, при записи мы получаем проблему: один блок ФС расположен на двух физических секторах диска. Частично это компенсируется электроникой и буфером жёсткого диска, но производительность всё равно падает.&lt;br /&gt;
&lt;br /&gt;
Это о «домашней» проблеме. То же самое справедливо для выравнивания блоков и страйпов RAID-массива, блоков диска host-системы и т. д.&lt;br /&gt;
&lt;br /&gt;
А в случае использования SSD дисков отсутствие выравнивания ещё и быстрее расходует лимит на запись блока SSD.&lt;br /&gt;
&lt;br /&gt;
В результате, разделы больше нельзя выравнивать по границе цилиндров. Тогда по какой границе?&lt;br /&gt;
&lt;br /&gt;
# Граница разделов должна быть кратной 4 КиБ, из-за дисков с размером сектора 4096.&lt;br /&gt;
# Размер GPT — 33 сектора, поэтому если мы не хотим каждый раз вспоминать, какая же у нас разметка — dos или GPT — нужно начинать первый раздел не ранее 34 сектора.&lt;br /&gt;
# В SSD дисках минимальная стираемая единица информации зависит от производителя, но как правило 128 КиБ, поэтому если мы не хотим каждый раз вспоминать, что у нас за диск … К тому же, программы для разметки диска тем более не обязаны знать все модели&amp;lt;sup&amp;gt;wut?&amp;lt;/sup&amp;gt;.&lt;br /&gt;
# Желательно, чтобы при использовании аппаратного RAID у нас тоже не возникало проблем, а там размер chunk бывает разный, нередко и 512 КиБ.&lt;br /&gt;
&lt;br /&gt;
Откуда взялась цифра 1 МиБ, я так и не нашёл. Есть мнение, что это мнение Microsoft (http://support.microsoft.com/kb/929491), ставшее неофициальным стандартом.&lt;br /&gt;
&lt;br /&gt;
== Производительность ==&lt;br /&gt;
{{Доработка&lt;br /&gt;
|reason=в разделе много текста как жизни на Марсе}}&lt;br /&gt;
&lt;br /&gt;
= Практика: Выравниваем данные =&lt;br /&gt;
&lt;br /&gt;
== Оно мне надо? ==&lt;br /&gt;
&lt;br /&gt;
* Если скорость работы жёсткого диска устраивает, всё бросать и переразбивать диск не стоит.&lt;br /&gt;
* Если диск новый и вы приступили к разметке, обязательно выравнивайте разделы по границе 1 МиБ.&lt;br /&gt;
* Диск новый, а скорость намного ниже ожидаемой. Тогда переразбить стоит, но нужен полный бекап всех данных.&lt;br /&gt;
&lt;br /&gt;
Проверить скорость записи (если диск не Advanced Format) можно так: если подозреваемый раздел смонтирова в /home/, запишем туда 100 Мб файл (лучше больше) и посмотрим скорость&lt;br /&gt;
 dd if=/dev/zero of=/home/test.raw bs=128k count=800 oflag=direct&lt;br /&gt;
&lt;br /&gt;
Если в выводе&lt;br /&gt;
 fdisk -lu /dev/sda | grep '^\/' | while read disk start other; do&lt;br /&gt;
     if [ ! &amp;quot;$((  $start % 2048 ))&amp;quot; -eq &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
         echo &amp;quot;$disk not aligned&amp;quot;;&lt;br /&gt;
     fi;&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Есть строки вида&lt;br /&gt;
&lt;br /&gt;
 /dev/sda1 not aligned&lt;br /&gt;
&lt;br /&gt;
То раздел не выровнен.&lt;br /&gt;
&lt;br /&gt;
Или через parted:&lt;br /&gt;
&lt;br /&gt;
 vasya@motherpc:~# parted /dev/sda align-check opt 1&lt;br /&gt;
 1 aligned&lt;br /&gt;
&lt;br /&gt;
== Выравнивание разделов ==&lt;br /&gt;
&lt;br /&gt;
Итак, разделы нужно выравнивать по границе 1 МиБ, т. е. по границе 2048 секторов.&lt;br /&gt;
Т. е. первый раздел начинается с 2048 сектора.&lt;br /&gt;
&lt;br /&gt;
=== fdisk ===&lt;br /&gt;
Для создания выравненных разделов через fdisk нужно использовать ключи &amp;lt;tt&amp;gt;-c&amp;lt;/tt&amp;gt; и &amp;lt;tt&amp;gt;-u&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 fdisk -c -u /dev/sdc&lt;br /&gt;
&lt;br /&gt;
'''Если дистрибутив старый''' и fdisk не понимает ключ -u, использовать один -c, но число секторов рассчитывать вручную, например, через bash.&lt;br /&gt;
&lt;br /&gt;
Пример ручного расчёта: нужно создать первый раздел размером 100 МиБ&lt;br /&gt;
&lt;br /&gt;
Начало раздела&lt;br /&gt;
 echo $(( 2048 * 1 ))&lt;br /&gt;
&lt;br /&gt;
Конец раздела&lt;br /&gt;
 echo $(( 2048 * ( 1 + 100 ) - 1 ))&lt;br /&gt;
&lt;br /&gt;
=== parted ===&lt;br /&gt;
&lt;br /&gt;
Для создания выравненных разделов через parted нужно использовать параметр &amp;lt;tt&amp;gt;-a optimal&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 parted -a optimal&lt;br /&gt;
&lt;br /&gt;
== Метаданные ФС, LVM и т. п. ==&lt;br /&gt;
&lt;br /&gt;
При использовании LVM, software raid и т. п., на разделе А создаётся раздел Б (меньшего размера) и плюс на разделе А хранятся метаданные. Эти метаданные и способ организации нового раздела также нужно учитывать для выравнивания данных.&lt;br /&gt;
&lt;br /&gt;
Если метаданные расположены в конце раздела А, они не влияют на смещение раздела Б и, соответственно, на выравнивание данных на разделе Б.&lt;br /&gt;
&lt;br /&gt;
=== Software raid ===&lt;br /&gt;
&lt;br /&gt;
* Метаданные: зависит от версии метаданных (определяется при создании рейда)&lt;br /&gt;
&lt;br /&gt;
** 1.0 — в конце диска;&lt;br /&gt;
** 1.1 — в начале диска;&lt;br /&gt;
** 1.2 — в 4 КиБ от начала диска.&lt;br /&gt;
&lt;br /&gt;
{{Доработка&lt;br /&gt;
|reason=нужно уточнить, можно ли явно задать границу выравнивания данных}}&lt;br /&gt;
&lt;br /&gt;
Не нашёл в man mdadm. Проверил на практике&amp;lt;sup&amp;gt;wut?&amp;lt;/sup&amp;gt;.&lt;br /&gt;
md4 — software raid, metadata v1.2, один из дисков рейда — sde.&lt;br /&gt;
&lt;br /&gt;
Ищём что-нибудь уникальное среди данных&lt;br /&gt;
 # hexdump /dev/md4 -C | head -n 5&lt;br /&gt;
 00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|&lt;br /&gt;
 *&lt;br /&gt;
 '''00000200'''  4c 41 42 45 4c 4f 4e 45  01 00 00 00 00 00 00 00  |'''LABELONE'''........|&lt;br /&gt;
&lt;br /&gt;
Теперь то же самое — на одном из дисков массива&lt;br /&gt;
 # dd if=/dev/sde bs=1M count=100 | hexdump -C | grep '''LABELONE'''&lt;br /&gt;
 '''00100200'''  4c 41 42 45 4c 4f 4e 45  01 00 00 00 00 00 00 00  |LABELONE........|&lt;br /&gt;
 100+0 записей считано&lt;br /&gt;
 100+0 записей написано&lt;br /&gt;
  скопировано 104857600 байт (105 MB), 1,49776 c, 70,0 MB/c&lt;br /&gt;
&lt;br /&gt;
Проверяем (для примера — двумя способами :-)&lt;br /&gt;
 # echo $((0x100000))&lt;br /&gt;
 1048576&lt;br /&gt;
 # echo $((512*2048))&lt;br /&gt;
 1048576&lt;br /&gt;
 # echo 'obase=16;512*2048' | bc&lt;br /&gt;
 100000&lt;br /&gt;
&lt;br /&gt;
Данные в software raid c metadata 1.2 начинаются с 1 МиБ, т. е. выровнены.&lt;br /&gt;
&lt;br /&gt;
=== LVM ===&lt;br /&gt;
&lt;br /&gt;
* Метаданные: в начале раздела&lt;br /&gt;
&lt;br /&gt;
Выравнивание данных задаётся ключём &amp;lt;tt&amp;gt;--dataalignment&amp;lt;/tt&amp;gt; при создании PV:&lt;br /&gt;
&lt;br /&gt;
 pvcreate --dataalignment='''1M''' /dev/sdc1&lt;br /&gt;
&lt;br /&gt;
Проверяем через pvs:&lt;br /&gt;
&lt;br /&gt;
  # pvs -o+pe_start /dev/sdc1&lt;br /&gt;
  PV         VG   Fmt  Attr PSize   PFree   1st PE&lt;br /&gt;
  /dev/sdc1       lvm2 a-   100,00m 100,00m   '''1,00m'''&lt;br /&gt;
&lt;br /&gt;
=== LUKS ===&lt;br /&gt;
&lt;br /&gt;
* Метаданные: в начале раздела&lt;br /&gt;
&lt;br /&gt;
При создании LUKS, выравнивание данных относительно начала раздела задаётся в явном виде, через параметр&lt;br /&gt;
* &amp;lt;tt&amp;gt;--align-payload &amp;lt;количество секторов&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
Т. е. при создании раздела&lt;br /&gt;
&lt;br /&gt;
 cryptsetup --align-payload '''2048''' luksFormat /dev/mapper/vgdata-lvcrypt&lt;br /&gt;
&lt;br /&gt;
Данные будут выравниваться по границе 1 МиБ относительно начала &amp;lt;tt&amp;gt;/dev/mapper/vgdata-lvcrypt&amp;lt;/tt&amp;gt;&lt;br /&gt;
Проверять через&lt;br /&gt;
 cryptsetup luksDump /dev/mapper/vgdata-lvcrypt | grep Payload&lt;br /&gt;
&lt;br /&gt;
= Смотрите также =&lt;br /&gt;
* http://www.redhat.com/f/pdf/summit/msnitzer_1120_optimize_storage.pdf&lt;br /&gt;
* man blockdev&lt;br /&gt;
* man mkfs.ext3 (влияние stripe и stride на производительность ext)&lt;br /&gt;
* https://ata.wiki.kernel.org/index.php/ATA_4_KiB_sector_issues&lt;br /&gt;
&lt;br /&gt;
[[Category:Файловые системы]]&lt;br /&gt;
[[Category:Полезные советы]]&lt;/div&gt;</summary>
		<author><name>lor&gt;Mandala</name></author>
	</entry>
</feed>