<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://support.qbpro.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9D%D0%B5%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D1%84%D0%B8%D1%88%D0%BA%D0%B8_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_RAID_%D0%B2_Linux</id>
	<title>Недокументированные фишки программного RAID в Linux - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://support.qbpro.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9D%D0%B5%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D1%84%D0%B8%D1%88%D0%BA%D0%B8_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_RAID_%D0%B2_Linux"/>
	<link rel="alternate" type="text/html" href="https://support.qbpro.ru/index.php?title=%D0%9D%D0%B5%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D1%84%D0%B8%D1%88%D0%BA%D0%B8_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_RAID_%D0%B2_Linux&amp;action=history"/>
	<updated>2026-04-03T19:04:27Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.38.1</generator>
	<entry>
		<id>https://support.qbpro.ru/index.php?title=%D0%9D%D0%B5%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D1%84%D0%B8%D1%88%D0%BA%D0%B8_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_RAID_%D0%B2_Linux&amp;diff=645&amp;oldid=prev</id>
		<title>imported&gt;Vix: Новая страница: «оригинал статьи: http://linuxshare.ru/docs/admin/ud_sraid.html ----- Наверное не совсем правильно говорить о то…»</title>
		<link rel="alternate" type="text/html" href="https://support.qbpro.ru/index.php?title=%D0%9D%D0%B5%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5_%D1%84%D0%B8%D1%88%D0%BA%D0%B8_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_RAID_%D0%B2_Linux&amp;diff=645&amp;oldid=prev"/>
		<updated>2013-08-26T18:47:51Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «оригинал статьи: http://linuxshare.ru/docs/admin/ud_sraid.html ----- Наверное не совсем правильно говорить о то…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;оригинал статьи: http://linuxshare.ru/docs/admin/ud_sraid.html&lt;br /&gt;
-----&lt;br /&gt;
Наверное не совсем правильно говорить о том что вышеизложенное &amp;quot;недокументировано&amp;quot;. Однако, из данной ниже информации вы ничего не найдёте ни в Software-RAID-HOWTO, ни на страницах руководства man по команде mdadm. В статье рассматриваются возможности управления программным RAID, а также получения информации о программных RAID в системе с помощью псевдо-файловой системы /sys, которые описаны только в документации к ядру.&lt;br /&gt;
&lt;br /&gt;
Итак. Если у вас есть программный RAID (устройства /dev/md*), то в файловой системе /sys есть каталоги, которые могут нам очень пригодиться. Называются они: /sys/block/mdN, где N - это номер вашего программного RAID.&lt;br /&gt;
Каждый каталог /sys/block/mdN содержит следующие каталоги и файлы:&lt;br /&gt;
:md - каталог, содержащий следующие файлы:&lt;br /&gt;
::*level - текстовый файл, содержащий уровень (тип) RAID. Т.е. одно из значений: level0 - страйп(stripe), level1 - зеркало(mirror), и т.д.&lt;br /&gt;
::*raid_disks - текстовый файл, содержащий количество дисков в RAID&lt;br /&gt;
::*chunk_size - текстовый файл, содержащий размер в байтах блока страйпа RAID. Имеет смысл только для RAID, которые обеспечивают страйпы 0,4,5,6,10. Обычно начиная с 4k. Данный параметр можно изменять только при сборке RAID.&lt;br /&gt;
::*layout - текстовый файл, содержащий &amp;quot;планировку&amp;quot; RAID-массива. Это номер, который по разному интерпретируется системой в зависимости от типа RAID. Можно изменить только при сборке массива.&lt;br /&gt;
::*reshape_position - текстовый файл, содержащий либо &amp;quot;none&amp;quot; либо номер сектора RAID массива при операциях перекомпановки RAID-массива. Если в этом файле есть номер сектора, то три вышеописанных файла могут иметь два значения в виде новое(старое)&lt;br /&gt;
::*component_size - для RAID-массивов с избыточностью данных (т.е. не raid0, linear, faulty, multipath), все компоненты должны иметь один и тот же размер или по крайней мере не меньший чем нужно. Это один из параметров геометрии RAID-массива, который измеряется в секторах. Запись другого значения в этот файл может изменить размер RAID-массива, если он поддерживает это (raid1, raid5, raid6) и если на компонентах массива есть достаточно места.&lt;br /&gt;
::*metadata_version - содержит версию формата, в котором записываются метаданные в RAID-массиве.&lt;br /&gt;
::*resync_start - точка, с которой должна начинаться ресинхронизация данных. Если ресинхронизация не нужна, то это должно быть очень большим числом. При создании RAID-массива там 0.&lt;br /&gt;
::*new_dev - в данный файл можно только писать. Записываемое значение должно быть парой major:minor номера устройства (например, 8:0), которое будет подключено к RAID-массиву, если оно доступно, что приведёт к появлению md/dev-XXX (в зависимости от имени устройства) для дальнейшей его настройки.&lt;br /&gt;
::*safe_mode_delay - когда RAID-массив не видит обращений на чтение в течение какого-то промежутка времени, он помечается как 'clean' (все данные сохранены, ошибок нет). Когда приходит запрос на запись, RAID-массив помечается как 'dirty' (есть несохранённые данные) до момента их записи на диск. Такое поведение называется safe_mode, а промежуток времени регулируется этим параметром, который задаётся в секундах.&lt;br /&gt;
::*array_state - текстовый файл, хранящий состояние массива. Записывая в этот файл определённые слова, можно управлять состоянием RAID-массива. Однако, не все состояния можно задать явно.&lt;br /&gt;
::*clear - запись этой команды эквивалентна вызову STOP_ARRAY ioctl, т.е. останову RAID-массива&lt;br /&gt;
::*inactive - в этом состоянии допустимы некоторые настройки, но любые операции ввода/выводы приводят к ошибке. При записи этой команды массив просто останавливается без выполнения корректного останова.&lt;br /&gt;
::*readonly - нельзя выполнять синхронизацию, нельзя перезаписать суперблок, операции записи приводят к ошибке.&lt;br /&gt;
::*read-auto - как и в readonly, но при запросах записи ведёт себя как 'clean'.&lt;br /&gt;
::*clean - не ожидаются операции записи, но в остальном всё работает. Если команда была записана после inactive, то RAID-массив запускается без пересинхронизации. При появлении запроса на запись при наличии метаданных, RAID-массив переводится в состояние dirty, а затем в active, в противном случае блокируется и переводится в состояние write-pending. Запись данной команды при активном RAID-массиве, который находится в состоянии write-pending приводит к ошибке&lt;br /&gt;
::*active - полностью активный RAID-массив. Возможны операции ресинхронизации и ввода/вывода. Если записать эту команду для inactive массива, начнётся ресинхронизация.&lt;br /&gt;
::*write-pending - аналогично clean, но запись данных блокируется до записи команды active.&lt;br /&gt;
::*active-idle - как и active, но нет ожидания операций записи (safe_mode_delay)&lt;br /&gt;
&lt;br /&gt;
:dev-XXX - каталоги устройств, входящих в состав RAID-массива (Например dev-sda1). Содержат следующую информацию:&lt;br /&gt;
::*block - символьная ссылка на данное блочное устройство в /sys/block, например:&lt;br /&gt;
 /sys/block/md0/md/dev-hdb1/block -&amp;gt; ../../../../block/hdb/hdb1&lt;br /&gt;
::*super - файл, содержащий образ суперблока, который может быть прочитан с данного устройства или записан на него.&lt;br /&gt;
::*state - файл, содержащий текущее состояние данного устройства в RAID-массиве. Состояние может быть списком из разделённых запятыми следующих значений:&lt;br /&gt;
:::*faulty - устройство было исключено из активного использования вследствие обнаруженной на нём ошибки. Запись этого состояния приводит к симуляции ошибки данного устройства.&lt;br /&gt;
:::*in_sync - устройство полностью синхронизированный член RAID-массива&lt;br /&gt;
:::*writemostly - устройство допускает только чтение, если не заданы другие состояния. Применимо только к raid1. Запись этого состояния приводит к установке состояния writemostly, запись -writemostly, к сбросу этого состояния.&lt;br /&gt;
:::*blocked - устройство считается ошибочным, метаданные являются external (внешними), система не знает, что делать в этой ситуации. Запросы на запись к такому устройству, (если оно при этом не в состоянии faulty) блокируются. Запись этого состояния приводит к установке состояния blocked, запись -blocked к сбросу этого состояния и позволяет операциям записи доделать свою работу.&lt;br /&gt;
:::*spare - устройство рабочее, но не является полноценным членом RAID-массива, например находится в процессе восстановления (синхронизации).&lt;br /&gt;
:::*запись remove - удаляет данное устройство из RAID-массива.&lt;br /&gt;
:::*errors - приблизительное количество ошибок чтения, обнаруженное на этом устройстве, но не вызвавшее отключение устройства от RAID-массива (например, потому что они были скорректированы, или потому что в это время RAID-массив находился в состоянии read-only). При использовании версии 1 метаданных, данное число может привести к перезапуску массива. Также данное количество может использоваться внешними программами обслуживания метаданных.&lt;br /&gt;
:::*slot - показывает роль устройства в RAID-массиве. Или 'none' для неактивного устройства, или целое число меньше чем raid_disks, показывающее позицию устройства в RAID-массиве. Позиция может быть изменена только при сборке массива.&lt;br /&gt;
:::*offset - показывает то место на устройстве (в секторах от начала) в которое будут сохраняться данные RAID-массива. Часть устройства до offset не трогается, потому что используется для хранения метаданных.&lt;br /&gt;
:::*size - размер устройства после offset, используемый для хранения данных. В обычном случае такой же как component_size. Данное значение записывается при сборке RAID-массива. Если оно меньше component_size, устройство будет удалёно из RAID-массива.&lt;br /&gt;
&lt;br /&gt;
Для каждого активного устройства в RAID-массиве также есть символьные ссылки на каталоги dev-XXX, с именем rdNN, где NN-номер позиции устройства в RAID-массиве, начиная с 0, т.е. rd0, rd1... и т.д.&lt;br /&gt;
&lt;br /&gt;
У активных md RAID-массивов, поддерживающих избыточность данных (RAID0,1,5,6,10) в каталоге /sys/block/mdN/md также есть файлы:&lt;br /&gt;
*sync_action - файл для мониторинга и управления процессом перестроения массива. Он может содержать одно или несколько слов:&lt;br /&gt;
*resync - осуществляется восстановление избыточности данных после некорректного останова RAID-массива или при его создании.&lt;br /&gt;
*recover - происходит замена ошибочного диска на hotspare (резервный) диск.&lt;br /&gt;
*idle - ничего не происходит.&lt;br /&gt;
*check - запрошена и выполняется полная проверка избыточных данных RAID-массива. Читает все блоки и проверяет их. Для некоторых уровней RAID может также потребоваться repair&lt;br /&gt;
*repair - выполняется полная проверка и восстановление. Это похоже на resync, но только выполняемый по запросу пользователя.&lt;br /&gt;
В данный файл можно писать. idle приводит к остановке ресинхронизации или восстановления. Однако, нет гарантии, что эти операции не будут запущены снова самой системой. resync и recovery запускают соответствующие операции, которые могут быть остановлены с помощью idle. check и repair запускают соответствующие операции, по окончанию которых устанавливается состояние idle.&lt;br /&gt;
*degraded - содержит количество устройств из-за которых массив находится в состоянии degraded. Полностью рабочий RAID-массив показывает 0, при выходе одного диска из строя 1 и т.д.&lt;br /&gt;
*mismatch_cnt - при выполнении check, repair и иногда rsync, показывает количество найденных несовпадений, т.е. число перезаписанных секторов, или (для check) число секторов которое должно быть перезаписано. Большинство RAID работает не с секторами, а с элементами страниц, поэтому число несовпадений может быть больше, чем число фактических ошибок из-за фактора наличия нескольких секторов в странице.&lt;br /&gt;
*sync_speed_min и sync_speed_max аналогичны /proc/sys/dev/raid/speed_limit_{min,max}, однако они применимы только к конкретному массиву. Если значения в них не заданы или указано 'system', то используются системные настройки. Также в файлы можно записать минимальную и максимальную скорость синхронизации RAID-массива в килобайтах в секунду и тогда настройки будут считаться локальными (local).&lt;br /&gt;
*sync_completed - количество секторов, которое прошло синхронизацию во время текущей операции ресинхронизации, косая черта, общее количество секторов.&lt;br /&gt;
*sync_max - количество секторов, по достижению которого операции resync/recovery приостановятся. При запущенных операциях данное количество может быть только увеличено, но не уменьшено. Значение max снимает ограничение.&lt;br /&gt;
*sync_speed - показывает текущую актуальную скорость синхронизации.&lt;br /&gt;
*suspend_lo и suspend_hi - два номер секторов, между которыми операции ввода/вывода RAID-массива будут заблокированы. В настоящий момент поддерживается только для raid4/5/6.&lt;br /&gt;
&lt;br /&gt;
Каждый тип RAID может иметь дополнительные файлы, реализующие специфическую функциональность:&lt;br /&gt;
*stripe_cache_size - размер страйп-кэша (только для RAID5). Можно писать значения от 32768 до 16. По умолчанию 128&lt;br /&gt;
*strip_cache_active - количество активных элементов страйп-кэша (только для RAID5).&lt;br /&gt;
*preread_bypass_threshold - (только для RAID5). Количество раз, которое будет запрошен страйп на чтение перед тем как он будет помещён в страйп-кэш. Можно писать от 0 до stripe_cache_size.&lt;br /&gt;
&lt;br /&gt;
Примеры&lt;br /&gt;
&lt;br /&gt;
1. Как посмотреть состояние всех RAID-массивов, запущенных в системе:&lt;br /&gt;
 cat /proc/mdstat&lt;br /&gt;
&lt;br /&gt;
2. Как посмотреть процент выполнения (состояние выполнения) процесса сборки/синхронизации/проверки программного RAID-массива:&lt;br /&gt;
 cat /proc/mdstat&lt;br /&gt;
&lt;br /&gt;
3. Как выполнить проверку целостности программного RAID-массива md0:&lt;br /&gt;
 echo 'check' &amp;gt;/sys/block/md0/md/sync_action&lt;br /&gt;
&lt;br /&gt;
4. Как выполнить пересинхронизацию программного RAID-массива md0:&lt;br /&gt;
 echo 'repair' &amp;gt;/sys/block/md0/md/sync_action&lt;br /&gt;
&lt;br /&gt;
5. Как снизить скорость синхронизации программного RAID-массива md0 в процессе восстановления (система и так слишком нагружена):&lt;br /&gt;
 echo скорость &amp;gt;/sys/block/md0/md/sync_speed_max&lt;br /&gt;
где скорость задаётся в кбайт/сек&lt;br /&gt;
&lt;br /&gt;
6. Как посмотреть нашлись ли какие-то ошибки в процессе проверки программного RAID-массива по команде check или repair:&lt;br /&gt;
 cat /sys/block/md0/md/mismatch_cnt&lt;/div&gt;</summary>
		<author><name>imported&gt;Vix</name></author>
	</entry>
</feed>