Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:mdadm [26/07/2012 08:04]
Boris V. Vuks
wiki:mdadm [22/02/2025 06:52] (текущий)
Boris V. Vuks
Строка 45: Строка 45:
 // --level опция указывает тип RAID. Возможный выбор: 0,1,4 and 5 for RAID-0, RAID-1, RAID-4, RAID-5.  // // --level опция указывает тип RAID. Возможный выбор: 0,1,4 and 5 for RAID-0, RAID-1, RAID-4, RAID-5.  //
  
-// Если планируется загрузка с --level=1 необходимо объявить версию супер-блока параметр "-e 0.90//+// Если планируется загрузка с --level=1 необходимо объявить версию супер-блока параметр '-e 0.90//
      
 == Уничтожение массива: ==   == Уничтожение массива: ==  
Строка 63: Строка 63:
   /proc/sys/dev/raid/speed_limit_min    /proc/sys/dev/raid/speed_limit_min 
  
- +== Изменение имени массива: == 
 + 
 +  mdadm --assemble /dev/md/md2 --name={newname} --update=name /dev/sd[gf] 
 + 
 +== Запуск проверки массива == 
 + 
 +  echo 'check' >/sys/block/md0/md/sync_action 
 +   
 +== Запуск пересинхронизации массива == 
 + 
 +  echo 'repair' >/sys/block/md0/md/sync_action 
 + 
 +== Смотрим кол-во найденых несоответсвий == 
 + 
 +  cat /sys/block/md0/md/mismatch_cnt 
 + 
 +---- 
 +   
 +== Файлы /sys/block/mdN == 
 +(спасибо [[https://linuxshare.ru/docs/admin/ud_sraid.html|inuxShare]]. ) 
 + 
 +**level** - текстовый файл, содержащий уровень (тип) RAID. Т.е. одно из значений: level0 - страйп(stripe), level1 - зеркало(mirror), и т.д.\\  
 +**raid_disks** - текстовый файл, содержащий количество дисков в RAID\\  
 +**chunk_size** - текстовый файл, содержащий размер в байтах блока страйпа RAID. Имеет смысл только для RAID, которые обеспечивают страйпы 0,4,5,6,10. Обычно начиная с 4k. Данный параметр можно изменять только при сборке RAID.\\  
 +**layout** - текстовый файл, содержащий "планировку" RAID-массива. Это номер, который по разному интерпретируется системой в зависимости от типа RAID. Можно изменить только при сборке массива.\\  
 +**reshape_position** - текстовый файл, содержащий либо "none" либо номер сектора RAID массива при операциях перекомпановки RAID-массива. Если в этом файле есть номер сектора, то три вышеописанных файла могут иметь два значения в виде новое(старое) 
 +component_size - для RAID-массивов с избыточностью данных (т.е. не raid0, linear, faulty, multipath), все компоненты должны иметь один и тот же размер или по крайней мере не меньший чем нужно. Это один из параметров геометрии RAID-массива, который измеряется в секторах. Запись другого значения в этот файл может изменить размер RAID-массива, если он поддерживает это (raid1, raid5, raid6) и если на компонентах массива есть достаточно места.\\  
 +**metadata_version** - содержит версию формата, в котором записываются метаданные в RAID-массиве.\\  
 +**resync_start** - точка, с которой должна начинаться ресинхронизация данных. Если ресинхронизация не нужна, то это должно быть очень большим числом. При создании RAID-массива там 0.\\  
 +**new_dev** - в данный файл можно только писать. Записываемое значение должно быть парой major:minor номера устройства (например, 8:0), которое будет подключено к RAID-массиву, если оно доступно, что приведёт к появлению md/dev-XXX (в зависимости от имени устройства) для дальнейшей его настройки.\\  
 +**safe_mode_delay** - когда RAID-массив не видит обращений на чтение в течение какого-то промежутка времени, он помечается как 'clean' (все данные сохранены, ошибок нет). Когда приходит запрос на запись, RAID-массив помечается как 'dirty' (есть несохранённые данные) до момента их записи на диск. Такое поведение называется safe_mode, а промежуток времени регулируется этим параметром, который задаётся в секундах.\\  
 +**array_state** - текстовый файл, хранящий состояние массива. Записывая в этот файл определённые слова, можно управлять состоянием RAID-массива. Однако, не все состояния можно задать явно.\\  
 +  * **clear** - запись этой команды эквивалентна вызову STOP_ARRAY ioctl, т.е. останову RAID-массива\\  
 +  * **inactive** - в этом состоянии допустимы некоторые настройки, но любые операции ввода/выводы приводят к ошибке. При записи этой команды массив просто останавливается без выполнения корректного останова.\\  
 +  * **readonly** - нельзя выполнять синхронизацию, нельзя перезаписать суперблок, операции записи приводят к ошибке.\\  
 +  * **read-auto** - как и в readonly, но при запросах записи ведёт себя как 'clean'.\\  
 +  * **clean** - не ожидаются операции записи, но в остальном всё работает. Если команда была записана после inactive, то RAID-массив запускается без пересинхронизации. При появлении запроса на запись при наличии метаданных, RAID-массив переводится в состояние dirty, а затем в active, в противном случае блокируется и переводится в состояние write-pending. Запись данной команды при активном RAID-массиве, который находится в состоянии write-pending приводит к ошибке\\  
 +  * **active** - полностью активный RAID-массив. Возможны операции ресинхронизации и ввода/вывода. Если записать эту команду для inactive массива, начнётся ресинхронизация.\\  
 +  * **write-pending** - аналогично clean, но запись данных блокируется до записи команды active.\\  
 +  * **active-idle** - как и active, но нет ожидания операций записи (safe_mode_delay) 
 + 
 +---- 
 + 
 +**dev-XXX** - каталоги устройств, входящих в состав RAID-массива (Например dev-sda1). Содержат следующую информацию: 
 + 
 +**block** - символьная ссылка на данное блочное устройство в /sys/block,\\  
 + например:\\  
 +  /sys/block/md0/md/dev-hdb1/block -> ../../../../block/hdb/hdb1\\  
 +**super** - файл, содержащий образ суперблока, который может быть прочитан с данного устройства или записан на него.\\  
 +**state** - файл, содержащий текущее состояние данного устройства в RAID-массиве. Состояние может быть списком из разделённых запятыми следующих значений:\\  
 +  * **faulty** - устройство было исключено из активного использования вследствие обнаруженной на нём ошибки. Запись этого состояния приводит к симуляции ошибки данного устройства.\\  
 +  * **in_sync** - устройство полностью синхронизированный член RAID-массива\\  
 +  * **writemostly** - устройство допускает только чтение, если не заданы другие состояния. Применимо только к raid1. Запись этого состояния приводит к установке состояния writemostly, запись -writemostly, к сбросу этого состояния.\\  
 +  * **blocked** - устройство считается ошибочным, метаданные являются external (внешними), система не знает, что делать в этой ситуации. Запросы на запись к такому устройству, (если оно при этом не в состоянии faulty) блокируются. Запись этого состояния приводит к установке состояния blocked, запись -blocked к сбросу этого состояния и позволяет операциям записи доделать свою работу.\\  
 +  * **spare** - устройство рабочее, но не является полноценным членом RAID-массива, например находится в процессе восстановления (синхронизации).\\  
 +  * **remove** - удаляет данное устройство из RAID-массива.\\  
 +**errors** - приблизительное количество ошибок чтения, обнаруженное на этом устройстве, но не вызвавшее отключение устройства от RAID-массива (например, потому что они были скорректированы, или потому что в это время RAID-массив находился в состоянии read-only). При использовании версии 1 метаданных, данное число может привести к перезапуску массива. Также данное количество может использоваться внешними программами обслуживания метаданных.\\  
 +**slot** - показывает роль устройства в RAID-массиве. Или 'none' для неактивного устройства, или целое число меньше чем raid_disks, показывающее позицию устройства в RAID-массиве. Позиция может быть изменена только при сборке массива.\\  
 +**offset** - показывает то место на устройстве (в секторах от начала) в которое будут сохраняться данные RAID-массива. Часть устройства до offset не трогается, потому что используется для хранения метаданных.\\  
 +**size** - размер устройства после offset, используемый для хранения данных. В обычном случае такой же как component_size. Данное значение записывается при сборке RAID-массива. Если оно меньше component_size, устройство будет удалёно из RAID-массива. 
 + 
 +---- 
 + 
 +Для каждого активного устройства в RAID-массиве также есть символьные ссылки на каталоги dev-XXX, с именем rdNN, где NN-номер позиции устройства в RAID-массиве, начиная с 0, т.е. rd0, rd1... и т.д. 
 +У активных md RAID-массивов, поддерживающих избыточность данных (RAID0,1,5,6,10) в каталоге /sys/block/mdN/md также есть файлы: 
 + 
 +**sync_action** - файл для мониторинга и управления процессом перестроения массива. Он может содержать одно или несколько слов:\\  
 +  * **resync** - осуществляется восстановление избыточности данных после некорректного останова RAID-массива или при его создании.\\  
 +  * **recover** - происходит замена ошибочного диска на hotspare (резервный) диск.\\  
 +  * **idle** - ничего не происходит.\\  
 +  * **check** - запрошена и выполняется полная проверка избыточных данных RAID-массива. Читает все блоки и проверяет их. Для некоторых уровней RAID может также потребоваться repair\\  
 +  * **repair** - выполняется полная проверка и восстановление. Это похоже на resync, но только выполняемый по запросу пользователя. 
 +В данный файл можно писать. idle приводит к остановке ресинхронизации или восстановления. Однако, нет гарантии, что эти операции не будут запущены снова самой системой. resync и recovery запускают соответствующие операции, которые могут быть остановлены с помощью idle. check и repair запускают соответствующие операции, по окончанию которых устанавливается состояние idle.\\  
 +**degraded** - содержит количество устройств из-за которых массив находится в состоянии degraded. Полностью рабочий RAID-массив показывает 0, при выходе одного диска из строя 1 и т.д.\\  
 +**mismatch_cnt** - при выполнении check, repair и иногда rsync, показывает количество найденных несовпадений, т.е. число перезаписанных секторов, или (для check) число секторов которое должно быть перезаписано. Большинство RAID работает не с секторами, а с элементами страниц, поэтому число несовпадений может быть больше, чем число фактических ошибок из-за фактора наличия нескольких секторов в странице.\\  
 +**sync_speed_min** и **sync_speed_max** аналогичны /proc/sys/dev/raid/speed_limit_{min,max}, однако они применимы только к конкретному массиву. Если значения в них не заданы или указано 'system', то используются системные настройки. Также в файлы можно записать минимальную и максимальную скорость синхронизации RAID-массива в килобайтах в секунду и тогда настройки будут считаться локальными (local).\\  
 +**sync_completed** - количество секторов, которое прошло синхронизацию во время текущей операции ресинхронизации, косая черта, общее количество секторов.\\  
 +**sync_max** - количество секторов, по достижению которого операции resync/recovery приостановятся. При запущенных операциях данное количество может быть только увеличено, но не уменьшено. Значение max снимает ограничение.\\  
 +**sync_speed** - показывает текущую актуальную скорость синхронизации.\\  
 +**suspend_lo** и **suspend_hi** - два номер секторов, между которыми операции ввода/вывода RAID-массива будут заблокированы. В настоящий момент поддерживается только для raid4/5/6. 
 + 
 +---- 
 + 
 +Каждый тип RAID может иметь дополнительные файлы, реализующие специфическую функциональность: 
 + 
 +**stripe_cache_size** - размер страйп-кэша (только для RAID5). Можно писать значения от 32768 до 16. По умолчанию 128 
 + 
 +**strip_cache_active** - количество активных элементов страйп-кэша (только для RAID5). 
 + 
 +**preread_bypass_threshold** - (только для RAID5). Количество раз, которое будет запрошен страйп на чтение перед тем как он будет помещён в страйп-кэш. Можно писать от 0 до stripe_cache_size. 

QR Code
QR Code wiki:mdadm (generated for current page)