Резервное копирование SnapRAID для дисковых массивов(1)

NAME
snapraid - Резервное копирование SnapRAID для дисковых массивов

SYNOPSIS
snapraid [-c, --conf CONFIG]
    [-f, --filter PATTERN] [-d, --filter-disk NAME]
    [-m, --filter-missing] [-e, --filter-error]
    [-a, --audit-only] [-h, --pre-hash] [-i, --import DIR]
    [-p, --plan PERC|bad|new|full]
    [-o, --older-than DAYS] [-l, --log FILE]
    [-s, --spin-down-on-error] [-w, --bw-limit RATE]
    [-t, --tail]
    [-Z, --force-zero] [-E, --force-empty]
    [-U, --force-uuid] [-D, --force-device]
    [-N, --force-nocopy] [-F, --force-full]
    [-R, --force-realloc] [-W, --force-realloc-tail]
    [-S, --start BLKSTART] [-B, --count BLKCOUNT]
    [-L, --error-limit NUMBER]
    [-A, --stats]
    [-v, --verbose] [-q, --quiet]
    status|smart|probe|up|down|diff|sync|scrub|fix|check
    |list|dup|pool|devices|touch|rehash|locate

snapraid [-V, --version] [-H, --help] [-C, --gen-conf CONTENT]

DESCRIPTION
SnapRAID — это программа резервного копирования, разработанная для дисковых массивов, хранящая информацию четности для восстановления данных в случае сбоя до шести дисков.

В первую очередь предназначенная для домашних медиацентров с большими, редко меняющимися файлами, SnapRAID предлагает несколько функций:
•   Вы можете использовать диски, уже заполненные файлами, без необходимости их переформатирования, получая к ним доступ как обычно.
•   Все ваши данные хэшируются для обеспечения целостности данных и предотвращения скрытого повреждения.
•   Когда число отказавших дисков превышает количество дисков четности, потеря данных ограничивается затронутыми дисками; данные на других дисках остаются доступными.
•   Если вы случайно удалите файлы на диске, возможно их восстановление.
•   Диски могут иметь разные размеры.
•   Вы можете добавлять диски в любое время.
•   SnapRAID не блокирует ваши данные; вы можете прекратить его использование в любое время без переформатирования или перемещения данных.
•   Для доступа к файлу должен раскручиваться только один диск, что экономит энергию и снижает шум.

Для получения дополнительной информации, пожалуйста, посетите официальный сайт SnapRAID:

    https://www.snapraid.it/

LIMITATIONS
SnapRAID — это гибрид программы RAID и программы резервного копирования, стремящийся объединить лучшие преимущества обеих. Однако у него есть некоторые ограничения, которые следует учитывать перед использованием.

Основное ограничение заключается в том, что если диск выходит из строя, а вы недавно не выполняли синхронизацию, вы можете не восстановить данные полностью. В частности, вы можете не восстановить данные в объеме, равном размеру измененных или удаленных файлов с момента последней операции синхронизации. Это происходит, даже если измененные или удаленные файлы не находятся на отказавшем диске. Вот почему SnapRAID лучше подходит для данных, которые редко меняются.

С другой стороны, недавно добавленные файлы не препятствуют восстановлению уже существующих файлов. Вы потеряете только недавно добавленные файлы, если они находятся на отказавшем диске.

Другие ограничения SnapRAID:
•   Со SnapRAID у вас все еще отдельные файловые системы для каждого диска. С RAID вы получаете единую большую файловую систему.
•   SnapRAID не выполняет чередование данных. С RAID вы получаете прирост скорости благодаря чередованию.
•   SnapRAID не поддерживает восстановление в реальном времени. С RAID вам не нужно прекращать работу при сбое диска.
•   SnapRAID может восстановить данные только при ограниченном числе сбоев дисков. С резервным копированием вы можете восстановиться после полного сбоя всего дискового массива.
•   Сохраняются только имена файлов, метки времени, символические ссылки и жесткие ссылки. Разрешения, права владения и расширенные атрибуты не сохраняются.

GETTING STARTED
Чтобы использовать SnapRAID, вам нужно сначала выбрать один диск в вашем дисковом массиве для выделения под информацию `четности` (parity). С одним диском для четности, вы сможете восстановиться после одного сбоя диска, подобно RAID5.

Если вы хотите восстановиться после большего числа сбоев дисков, подобно RAID6, вы должны зарезервировать дополнительные диски для четности. Каждый дополнительный диск четности позволяет восстановиться после еще одного сбоя диска.

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

Эти диски будут выделены для хранения файлов `четности`. Вы не должны хранить на них свои данные.

Затем вы должны определить диски `данных`, которые вы хотите защитить с помощью SnapRAID. Защита более эффективна, если эти диски содержат данные, которые редко меняются. По этой причине лучше НЕ включать диск Windows C:\ или каталоги Unix /home, /var и /tmp.

Список файлов сохраняется в файлах `content`, обычно хранящихся на дисках данных, четности или загрузочных дисках. Этот файл содержит детали вашего резервного копирования, включая все контрольные суммы для проверки его целостности. Файл `content` хранится в нескольких копиях, и каждая копия должна находиться на отдельном диске, чтобы гарантировать, что даже в случае множественных сбоев дисков, хотя бы одна копия будет доступна.

Например, предположим, что вы заинтересованы только в одном уровне защиты четности, и ваши диски расположены по адресам:

    /mnt/diskp <- выбранный диск для четности
    /mnt/disk1 <- первый диск для защиты
    /mnt/disk2 <- второй диск для защиты
    /mnt/disk3 <- третий диск для защиты

Вы должны создать файл конфигурации /etc/snapraid.conf со следующими опциями:

    parity /mnt/diskp/snapraid.parity
    content /var/lib/snapraid/snapraid.content
    content /mnt/disk1/snapraid.content
    content /mnt/disk2/snapraid.content
    data d1 /mnt/disk1/
    data d2 /mnt/disk2/
    data d3 /mnt/disk3/

Если вы используете Windows, вам следует использовать формат пути Windows, с буквами дисков и обратными слешами вместо прямых.

    parity E:\snapraid.parity
    content C:\snapraid\snapraid.content
    content F:\array\snapraid.content
    content G:\array\snapraid.content
    data d1 F:\array\
    data d2 G:\array\
    data d3 H:\array\

Если у вас много дисков и заканчиваются буквы дисков, вы можете монтировать диски непосредственно в подпапки. См.:

    https://www.google.com/search?q=Windows+mount+point

На этом этапе вы готовы запустить команду `sync` для создания информации четности.

    snapraid sync

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

Вы можете остановить его в любое время, нажав Ctrl+C, и при следующем запуске он возобновит работу с того места, где был прерван.

Когда эта команда завершится, ваши данные ЗАЩИЩЕНЫ.

Теперь вы можете начать использовать свой массив, как вам угодно, и периодически обновлять информацию четности, запуская команду `sync`.

  Scrubbing
Для периодической проверки данных и четности на наличие ошибок, вы можете запустить команду `scrub`.

    snapraid scrub

Эта команда сравнивает данные в вашем массиве с хэшем, вычисленным во время команды `sync`, для проверки целостности.

Каждый запуск команды проверяет примерно 8% массива, исключая данные, уже проверенные за предыдущие 10 дней. Вы можете использовать опцию -p, --plan, чтобы указать другое количество, и опцию -o, --older-than, чтобы указать другой возраст в днях. Например, для проверки 5% массива на наличие блоков старше 20 дней, используйте:

    snapraid -p 5 -o 20 scrub

Если во время процесса обнаруживаются скрытые ошибки или ошибки ввода/вывода, соответствующие блоки помечаются как плохие в файле `content` и перечисляются в команде `status`.

    snapraid status

Чтобы исправить их, вы можете использовать команду `fix`, фильтруя плохие блоки с помощью опции -e, --filter-error:

    snapraid -e fix

При следующем `scrub` ошибки исчезнут из отчета `status`, если они действительно исправлены. Чтобы ускорить процесс, вы можете использовать -p bad для проверки только блоков, помеченных как плохие.

    snapraid -p bad scrub

Запуск `scrub` на несинхронизированном массиве может сообщить об ошибках, вызванных удаленными или измененными файлами. Эти ошибки сообщаются в выводе `scrub`, но соответствующие блоки не помечаются как плохие.

  Pooling
Примечание: Функция объединения (pooling), описанная ниже, была заменена инструментом mergerfs, который теперь является рекомендуемым вариантом для пользователей Linux в сообществе SnapRAID. Mergefs предоставляет более гибкий и эффективный способ объединения нескольких дисков в единую точку монтирования, обеспечивая беспрепятственный доступ к файлам по всему массиву без опоры на символические ссылки. Он хорошо интегрируется со SnapRAID для защиты четности и обычно используется в установках, таких как OpenMediaVault (OMV) или пользовательских конфигурациях NAS.

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

Вы можете настроить каталог `pooling` в файле конфигурации с помощью:

    pool /pool

или, если вы используете Windows, с помощью:

    pool C:\pool

а затем запустить команду `pool` для создания или обновления виртуального представления.

    snapraid pool

Если вы используете платформу Unix и хотите предоставить общий доступ к этому каталогу по сети как для машин Windows, так и для Unix, вы должны добавить следующие опции в ваш /etc/samba/smb.conf:

    # В глобальном разделе smb.conf
    unix extensions = no

    # В разделе общего ресурса smb.conf
    [pool]
    comment = Pool
    path = /pool
    read only = yes
    guest ok = yes
    wide links = yes
    follow symlinks = yes

В Windows совместное использование символических ссылок по сети требует, чтобы клиенты разрешали их удаленно. Чтобы включить это, помимо предоставления общего доступа к каталогу pool, вы также должны предоставить общий доступ ко всем дискам независимо, используя имена дисков, определенные в файле конфигурации, в качестве точек общего доступа. Вы также должны указать в опции `share` файла конфигурации путь UNC Windows, который удаленные клиенты должны использовать для доступа к этим общим дискам.

Например, работая с сервера с именем `darkstar`, вы можете использовать опции:

    data d1 F:\array\
    data d2 G:\array\
    data d3 H:\array\
    pool C:\pool
    share \\darkstar

и предоставить общий доступ к следующим каталогам по сети:

    \\darkstar\pool -> C:\pool
    \\darkstar\d1 -> F:\array
    \\darkstar\d2 -> G:\array
    \\darkstar\d3 -> H:\array

чтобы разрешить удаленным клиентам доступ ко всем файлам по адресу \\darkstar\pool.

Вам также может потребоваться настроить удаленные клиенты для включения доступа к удаленным символическим ссылкам с помощью команды:

    fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1

  Undeleting
SnapRAID функционирует скорее как программа резервного копирования, чем как система RAID, и может использоваться для восстановления или отмены удаления файлов до их предыдущего состояния с помощью опции -f, --filter:

    snapraid fix -f FILE

или для каталога:

    snapraid fix -f DIR/

Вы также можете использовать его для восстановления только случайно удаленных файлов внутри каталога с помощью опции -m, --filter-missing, которая восстанавливает только отсутствующие файлы, оставляя все остальные нетронутыми.

    snapraid fix -m -f DIR/

Или для восстановления всех удаленных файлов на всех дисках с помощью:

    snapraid fix -m

  Recovering
Случилось худшее, и вы потеряли один или несколько дисков!

НЕ ПАНИКУЙТЕ! Вы сможете их восстановить!

Первое, что вы должны сделать, это избегать дальнейших изменений в вашем дисковом массиве. Отключите любые удаленные подключения к нему и любые запланированные процессы, включая любое запланированное ночное sync или scrub SnapRAID.

Затем приступайте к следующим шагам.

  STEP 1 -> Reconfigure
Вам нужно место для восстановления, в идеале на дополнительных запасных дисках, но внешнего USB-диска или удаленного диска будет достаточно.

Измените файл конфигурации SnapRAID, чтобы опция `data` или `parity` отказавшего диска указывала на место с достаточным пустым пространством для восстановления файлов.

Например, если диск `d1` вышел из строя, измените с:

    data d1 /mnt/disk1/

на:

    data d1 /mnt/new_spare_disk/

Если восстанавливаемый диск является диском четности, обновите соответствующую опцию `parity`. Если у вас несколько отказавших дисков, обновите все их опции конфигурации.

  STEP 2 -> Fix
Запустите команду fix, сохраняя журнал во внешнем файле с помощью:

    snapraid -d NAME -l fix.log fix

Где NAME — это имя диска, например `d1` в нашем предыдущем примере. Если восстанавливаемый диск является диском четности, используйте имена `parity`, `2-parity` и т. д. Если у вас несколько отказавших дисков, используйте несколько опций -d, чтобы указать их все.

Эта команда займет много времени.

Убедитесь, что у вас есть несколько гигабайт свободного места для хранения файла fix.log. Запустите ее с диска с достаточным свободным местом.

Теперь вы восстановили все, что можно было восстановить. Если некоторые файлы частично или полностью невосстановимы, они будут переименованы с добавлением расширения `.unrecoverable`.

Вы можете найти подробный список всех невосстановимых блоков в файле fix.log, проверяя все строки, начинающиеся с `unrecoverable:`.

Если вы не удовлетворены восстановлением, вы можете повторять его столько раз, сколько пожелаете.

Например, если вы удалили файлы из массива после последнего `sync`, это может привести к тому, что некоторые файлы не будут восстановлены. В этом случае вы можете повторить `fix`, используя опцию -i, --import, указав, где эти файлы находятся сейчас, чтобы снова включить их в процесс восстановления.

Если вы удовлетворены восстановлением, вы можете продолжить, но учтите, что после синхронизации вы больше не сможете повторить команду `fix`!

  STEP 3 -> Check
В качестве осторожной проверки, вы можете теперь запустить команду `check`, чтобы убедиться, что все в порядке на восстановленном диске.

    snapraid -d NAME -a check

Где NAME — это имя диска, например `d1` в нашем предыдущем примере.

Опции -d и -a говорят SnapRAID проверить только указанный диск и игнорировать все данные четности.

Эта команда займет много времени, но если вы не чрезмерно осторожны, вы можете ее пропустить.

  STEP 4 -> Sync
Запустите команду `sync`, чтобы ресинхронизировать массив с новым диском.

    snapraid sync

Если все восстановлено, эта команда выполняется немедленно.

COMMANDS
SnapRAID предоставляет несколько простых команд, которые позволяют:
•   Печатать статус массива -> `status`
•   Управлять дисками -> `smart`, `probe`, `up`, `down`
•   Сделать резервную копию/снимок -> `sync`
•   Периодически проверять данные -> `scrub`
•   Восстановить последнюю резервную копию/снимок -> `fix`.

Команды должны быть написаны строчными буквами.

  status
Печатает сводку состояния дискового массива.

Она включает информацию о фрагментации четности, о том, насколько старые блоки без проверки, и все записанные скрытые ошибки, возникшие во время scrubbing.

Представленная информация относится к последнему времени, когда вы запускали `sync`. Более поздние изменения не учитываются.

Если были обнаружены плохие блоки, перечисляются их номера. Чтобы исправить их, вы можете использовать команду `fix -e`.

Он также показывает график, представляющий последнее время, когда каждый блок был проверен (`scrubbed`) или синхронизирован (`synced`). Проверенные блоки обозначены символом `*`, блоки, синхронизированные, но еще не проверенные, символом `o`.

Ничего не изменяется.

  smart
Печатает отчет SMART всех дисков в системе.

Он включает оценку вероятности сбоя в следующем году, позволяя планировать плановую замену дисков, которые показывают подозрительные атрибуты.

Эта оценка вероятности получена путем корреляции атрибутов SMART дисков с данными Backblaze, доступными по адресу:

    https://www.backblaze.com/hard-drive-test-data.html

Если SMART сообщает, что диск выходит из строя, для этого диска выводится `FAIL` или `PREFAIL`, и SnapRAID возвращает ошибку. В этом случае немедленная замена диска настоятельно рекомендуется.

Другие возможные строки статуса:
    logfail В прошлом некоторые атрибуты были ниже порогового значения.
    logerr Журнал ошибок устройства содержит ошибки.
    selferr Журнал самотестирования устройства содержит ошибки.

Если указана опция -v, --verbose, предоставляется более глубокий статистический анализ. Этот анализ может помочь вам решить, нужно ли вам больше или меньше четности.

Эта команда использует инструмент `smartctl` и эквивалентна запуску `smartctl -a` на всех устройствах.

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

Ничего не изменяется.

  probe
Печатает состояние POWER всех дисков в системе.

`Standby` означает, что диск не вращается. `Active` означает, что диск вращается.

Эта команда использует инструмент `smartctl` и эквивалентна запуску `smartctl -n standby -i` на всех устройствах.

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

Ничего не изменяется.

  up
Раскручивает все диски массива.

Вы можете раскрутить только определенные диски, используя опцию -d, --filter-disk.

Раскручивание всех дисков одновременно требует много энергии. Убедитесь, что ваш блок питания может это выдержать.

Ничего не изменяется.

  down
Останавливает вращение всех дисков массива.

Эта команда использует инструмент `smartctl` и эквивалентна запуску `smartctl -s standby,now` на всех устройствах.

Вы можете остановить вращение только определенных дисков, используя опцию -d, --filter-disk.

Чтобы автоматически остановить вращение при ошибке, вы можете использовать опцию -s, --spin-down-on-error с любой другой командой, что эквивалентно ручному запуску `down` при возникновении ошибки.

Ничего не изменяется.

  diff
Перечисляет все файлы, измененные с момента последнего `sync`, для которых требуется пересчитать данные четности.

Эта команда не проверяет данные файла, а только метку времени файла, размер и inode.

После перечисления всех измененных файлов представляется сводка изменений, сгруппированных по:
    equal Файлы, не измененные по сравнению с предыдущим состоянием.
    added Добавленные файлы, которых не было раньше.
    removed Удаленные файлы.
    updated Файлы с другим размером или меткой времени, что означает, что они были изменены.
    moved Файлы, перемещенные в другой каталог на том же диске. Они идентифицируются как имеющие то же имя, размер, метку времени и inode, но другой каталог.
    copied файлы, скопированные на тот же или другой диск, где исходный файл все еще существует. Они идентифицируются по совпадению имени, размера и метки времени. Если дробная часть метки времени равна нулю, для идентификации должен совпадать полный путь, а не только имя.
    relocated файлы, перемещенные на тот же или другой диск, где оригинал исчез. Они идентифицируются по совпадению имени, размера и метки времени. Если дробная часть метки времени равна нулю, для идентификации должен совпадать полный путь. В отличие от файлов 'moved' на том же диске, перемещенные файлы имеют другой inode.
    restored файлы с другим inode, но совпадающим каталогом, именем, размером и меткой времени. Обычно это файлы, восстановленные после удаления.

Если требуется `sync`, код возврата процесса равен 2, а не по умолчанию 0. Код возврата 1 используется для общего условия ошибки.

Ничего не изменяется.

  sync
Обновляет информацию четности. Все измененные файлы в дисковом массиве считываются, и соответствующие данные четности обновляются.

Вы можете остановить этот процесс в любое время, нажав Ctrl+C, не теряя уже проделанной работы. При следующем запуске процесс `sync` возобновится с того места, где был прерван.

Если во время процесса обнаруживаются скрытые ошибки или ошибки ввода/вывода, соответствующие блоки помечаются как плохие.

Файлы идентифицируются по пути и/или inode и проверяются по размеру и метке времени. Если размер файла или метка времени отличаются, данные четности пересчитываются для всего файла. Если файл перемещен или переименован на том же диске, сохраняя тот же inode, четность не пересчитывается. Если файл перемещен на другой диск, четность пересчитывается, но ранее вычисленная информация хэша сохраняется.

Файлы `content` и `parity` изменяются при необходимости. Файлы в массиве НЕ изменяются.

  scrub
Проверяет массив, проверяя на наличие скрытых ошибок или ошибок ввода/вывода на дисках данных и четности.

Каждый вызов проверяет примерно 8% массива, исключая данные, уже проверенные за последние 10 дней. Это означает, что проверка раз в неделю гарантирует, что каждый бит данных проверяется хотя бы раз в три месяца.

Вы можете определить другой план или объем проверки, используя опцию -p, --plan, которая принимает: bad - Проверить блоки, помеченные как плохие. new - Проверить только что синхронизированные блоки, которые еще не были проверены. full - Проверить все. 0-100 - Проверить указанный процент блоков.

Если вы указываете процентное значение, вы также можете использовать опцию -o, --older-than, чтобы определить, насколько старым должен быть блок. Сначала проверяются самые старые блоки, обеспечивая оптимальную проверку. Если вы хотите проверить только что синхронизированные блоки, которые еще не были проверены, используйте опцию `-p new`.

Чтобы получить подробности о статусе проверки, используйте команду `status`.

При обнаружении любой скрытой ошибки или ошибки ввода/вывода соответствующие блоки помечаются как плохие в файле `content`. Эти плохие блоки перечисляются в `status` и могут быть исправлены с помощью `fix -e`. После исправления при следующем scrub они будут перепроверены, и если обнаружатся исправленными, плохая метка будет удалена. Чтобы проверить только плохие блоки, вы можете использовать команду `scrub -p bad`.

Рекомендуется запускать `scrub` только на синхронизированном массиве, чтобы избежать сообщений об ошибках, вызванных несинхронизированными данными. Эти ошибки распознаются как не являющиеся скрытыми ошибками, и блоки не помечаются как плохие, но такие ошибки сообщаются в выводе команды.

Файл `content` изменяется для обновления времени последней проверки для каждого блока и для пометки плохих блоков. Файлы `parity` НЕ изменяются. Файлы в массиве НЕ изменяются.

  fix
Исправляет все файлы и данные четности.

Все файлы и данные четности сравниваются с состоянием снимка, сохраненным при последнем `sync`. Если обнаружено различие, оно возвращается к сохраненному снимку.

ВНИМАНИЕ! Команда `fix` не различает ошибки и преднамеренные изменения. Она безусловно возвращает состояние файла к последнему `sync`.

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

Чтобы исправить только блоки, помеченные как плохие во время `sync` и `scrub`, используйте опцию -e, --filter-error. В отличие от других опций фильтрации, эта применяет исправления только к файлам, которые не были изменены с момента последнего `sync`.

SnapRAID переименовывает все файлы, которые не могут быть исправлены, добавляя расширение `.unrecoverable`.

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

Файлы идентифицируются только по пути, а не по inode.

Файл `content` НЕ изменяется. Файлы `parity` изменяются при необходимости. Файлы в массиве изменяются при необходимости.

  check
Проверяет все файлы и данные четности.

Он работает как `fix`, но только имитирует восстановление, и никакие изменения не записываются в массив.

Эта команда в основном предназначена для ручной проверки, например, после процесса восстановления или в других особых условиях. Для периодических и запланированных проверок используйте `scrub`.

Если вы используете опцию -a, --audit-only, проверяются только данные файла, а данные четности игнорируются для более быстрого выполнения.

Файлы идентифицируются только по пути, а не по inode.

Ничего не изменяется.

  list
Перечисляет все файлы, содержащиеся в массиве на момент последнего `sync`.

С -v или --verbose также отображается время с точностью до доли секунды.

Ничего не изменяется.

  dup
Перечисляет все дублирующиеся файлы. Два файла считаются равными, если их хэши совпадают. Данные файла не считываются; используются только предварительно вычисленные хэши.

Ничего не изменяется.

  pool
Создает или обновляет виртуальное представление всех файлов в вашем дисковом массиве в каталоге `pooling`.

Файлы не копируются, а связываются с помощью символических ссылок.

При обновлении все существующие символические ссылки и пустые подкаталоги удаляются и заменяются новым представлением массива. Любые другие обычные файлы остаются на месте.

Ничего не изменяется за пределами каталога pool.

  devices
Печатает низкоуровневые устройства, используемые массивом.

Эта команда отображает ассоциации устройств в массиве и в основном предназначена как интерфейс для скриптов.

Первые два столбца — это низкоуровневый идентификатор устройства и путь. Следующие два столбца — это высокоуровневый идентификатор устройства и путь. Последний столбец — это имя диска в массиве.

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

Ничего не изменяется.

  touch
Устанавливает произвольную метку времени с точностью до доли секунды для всех файлов, у которых она установлена в ноль.

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

Более конкретно, если метка времени с точностью до доли секунды не равна нулю, перемещенный или скопированный файл идентифицируется как таковой, если он совпадает по имени, размеру и метке времени. Если метка времени с точностью до доли секунды равна нулю, он считается копией только в том случае, если полностью совпадают полный путь, размер и метка времени.

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

  rehash
Планирует перехэширование всего массива.

Эта команда изменяет используемый тип хэша, обычно при обновлении с 32-разрядной системы на 64-разрядную, для переключения с MurmurHash3 на более быстрый SpookyHash.

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

Перехэширование не выполняется немедленно, а происходит постепенно во время `sync` и `scrub`.

Вы можете проверить состояние перехэширования с помощью `status`.

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

  locate
Находит файлы, хранящиеся на дисках четности. Для каждого найденного файла выводится его расположение внутри файла четности и количество занимаемых им фрагментов.

Вы можете использовать параметр -t, --tail, чтобы ограничить операцию файлами, занимающими указанную хвостовую часть четности.

Если вы хотите перераспределить эти файлы, вы можете использовать параметр -W, --force-realloc-tail. Имейте в виду, что такие файлы не будут защищены четностью во время процесса перераспределения.

OPTIONS
SnapRAID предоставляет следующие опции:

-c, --conf CONFIG
    Выбирает файл конфигурации для использования. Если не указан, в Unix используется файл `/usr/local/etc/snapraid.conf`, если он существует, в противном случае `/etc/snapraid.conf`. В Windows используется файл `snapraid.conf` в том же каталоге, что и `snapraid.exe`.

-f, --filter PATTERN
    Фильтрует файлы для обработки в `check` и `fix`. Обрабатываются только файлы, соответствующие указанному шаблону. Эту опцию можно использовать несколько раз. Подробнее о спецификациях шаблонов см. в разделе PATTERN. В Unix убедитесь, что символы глоббинга заключены в кавычки, если используются. Эту опцию можно использовать только с `check` и `fix`. Ее нельзя использовать с `sync` и `scrub`, так как они всегда обрабатывают весь массив.

-d, --filter-disk NAME
    Фильтрует диски для обработки в `check`, `fix`, `up` и `down`. Вы должны указать имя диска, определенное в файле конфигурации. Вы также можете указать диски четности с именами: `parity`, `2-parity`, `3-parity` и т. д., чтобы ограничить операции конкретным диском четности. Если вы комбинируете несколько опций --filter, --filter-disk и --filter-missing, выбираются только файлы, соответствующие всем фильтрам. Эту опцию можно использовать несколько раз. Эту опцию можно использовать только с `check`, `fix`, `up` и `down`. Ее нельзя использовать с `sync` и `scrub`, так как они всегда обрабатывают весь массив.

-m, --filter-missing
    Фильтрует файлы для обработки в `check` и `fix`. Обрабатываются только файлы, отсутствующие или удаленные из массива. При использовании с `fix`, это действует как команда `undelete`. Если вы комбинируете несколько опций --filter, --filter-disk и --filter-missing, выбираются только файлы, соответствующие всем фильтрам. Эту опцию можно использовать только с `check` и `fix`. Ее нельзя использовать с `sync` и `scrub`, так как они всегда обрабатывают весь массив.

-e, --filter-error
    Обрабатывает файлы с ошибками в `check` и `fix`. Он обрабатывает только файлы, блоки которых помечены скрытыми ошибками или ошибками ввода/вывода во время `sync` и `scrub`, как перечислено в `status`. Эту опцию можно использовать только с `check` и `fix`.

-p, --plan PERC|bad|new|full
    Выбирает план проверки (`scrub`). Если PERC — это числовое значение от 0 до 100, оно интерпретируется как процент блоков для проверки. Вместо процента вы можете указать план: `bad` проверяет плохие блоки, `new` проверяет блоки, которые еще не были проверены, и `full` проверяет все. Эту опцию можно использовать только с `scrub`.

-o, --older-than DAYS
    Выбирает самую старую часть массива для обработки в `scrub`. DAYS — это минимальный возраст в днях для блока, который будет проверен; по умолчанию — 10. Блоки, помеченные как плохие, всегда проверяются независимо от этой опции. Эту опцию можно использовать только с `scrub`.

-a, --audit-only
    В `check`, проверяет хэш файлов без проверки данных четности. Если вы заинтересованы только в проверке данных файла, эта опция может значительно ускорить процесс проверки. Эту опцию можно использовать только с `check`.

-h, --pre-hash
    В `sync`, запускает предварительную фазу хэширования всех новых данных для дополнительной проверки перед вычислением четности. Обычно в `sync` предварительное хэширование не выполняется, и новые данные хэшируются непосредственно перед вычислением четности, когда они считываются в первый раз. Этот процесс происходит, когда система находится под тяжелой нагрузкой, со всеми вращающимися дисками и занятым процессором. Это экстремальное условие для машины, и если у нее есть скрытая аппаратная проблема, скрытые ошибки могут остаться незамеченными, потому что данные еще не хэшированы. Чтобы избежать этого риска, вы можете включить режим `pre-hash`, чтобы все данные считывались дважды для обеспечения их целостности. Эта опция также проверяет файлы, перемещенные внутри массива, чтобы убедиться, что операция перемещения прошла успешно, и, при необходимости, позволяет запустить операцию исправления (`fix`) перед продолжением. Эту опцию можно использовать только с `sync`.

-i, --import DIR
    Импортирует из указанного каталога любые файлы, удаленные из массива после последнего `sync`. Если у вас все еще есть такие файлы, они могут использоваться `check` и `fix` для улучшения процесса восстановления. Файлы считываются, включая подкаталоги, и идентифицируются независимо от их имени. Эту опцию можно использовать только с `check` и `fix`.

-s, --spin-down-on-error
    При любой ошибке останавливает вращение всех управляемых дисков перед выходом с ненулевым кодом состояния. Это предотвращает оставление дисков активными и вращающимися после прерванной операции, помогая избежать ненужного нагрева и энергопотребления. Используйте эту опцию, чтобы гарантировать безопасную остановку дисков, даже когда команда завершается неудачей.

-w, --bw-limit RATE
    Применяет глобальное ограничение пропускной способности для всех дисков. RATE — это количество байтов в секунду. Вы можете указать множитель, например K, M или G (например, --bw-limit 1G).

-t, --tail РАЗМЕР
    Ограничивает список файлов теми, которые используют не более указанного размера хвоста дисков четности. Можно использовать множители, такие как K, M, G или T (например, --tail 1G). Этот параметр действителен только при использовании вместе с командой `locate`.

-A, --stats
    Включает расширенный вид статуса, который показывает дополнительную информацию. На экране отображаются два графика: Первый график показывает количество буферизованных полос для каждого диска, а также путь к файлу, к которому в данный момент осуществляется доступ на этом диске. Обычно самый медленный диск не будет иметь доступного буфера, что определяет максимально достижимую пропускную способность. Второй график показывает процент времени, потраченного на ожидание за последние 100 секунд. Ожидается, что самый медленный диск вызовет большую часть времени ожидания, в то время как другие диски должны иметь мало или совсем не иметь времени ожидания, потому что они могут использовать свои буферизованные полосы. Этот график также показывает время, потраченное на ожидание вычислений хэша и вычислений RAID. Все вычисления выполняются параллельно с дисковыми операциями. Следовательно, пока есть измеримое время ожидания для хотя бы одного диска, это указывает на то, что ЦП достаточно быстр, чтобы справляться с рабочей нагрузкой.

-Z, --force-zero
    Форсирует небезопасную операцию синхронизации файла с нулевым размером, который ранее был ненулевым. Если SnapRAID обнаруживает такое условие, он прекращает выполнение, если вы не укажете эту опцию. Это позволяет легко обнаружить, когда после сбоя системы некоторые доступные файлы были усечены. Это возможное условие в Linux с файловыми системами ext3/ext4. Эту опцию можно использовать только с `sync`.

-E, --force-empty
    Форсирует небезопасную операцию синхронизации диска, на котором отсутствуют все исходные файлы. Если SnapRAID обнаруживает, что все файлы, изначально присутствующие на диске, отсутствуют или перезаписаны, он прекращает выполнение, если вы не укажете эту опцию. Это позволяет легко обнаружить, когда файловая система данных не смонтирована. Эту опцию можно использовать только с `sync`.

-U, --force-uuid
    Форсирует небезопасную операцию синхронизации, проверки и исправления с дисками, у которых изменился UUID. Если SnapRAID обнаруживает, что у некоторых дисков изменился UUID, он прекращает выполнение, если вы не укажете эту опцию. Это позволяет обнаружить, когда ваши диски смонтированы в неправильных точках монтирования. Однако допускается однократное изменение UUID с одиночной четностью, и больше с множественной четностью, потому что это нормальный случай при замене дисков после восстановления. Эту опцию можно использовать только с `sync`, `check` или `fix`.

-D, --force-device
    Форсирует небезопасную операцию исправления с недоступными дисками или с дисками на том же физическом устройстве. Например, если вы потеряли два диска данных и у вас есть запасной диск для восстановления только первого, вы можете игнорировать второй недоступный диск. Или, если вы хотите восстановить диск в свободное место, оставшееся на уже используемом диске, совместно использующем то же физическое устройство. Эту опцию можно использовать только с `fix`.

-N, --force-nocopy
    В `sync`, `check` и `fix`, отключает эвристику обнаружения копирования. Без этой опции SnapRAID предполагает, что файлы с одинаковыми атрибутами, такими как имя, размер и метка времени, являются копиями с одинаковыми данными. Это позволяет идентифицировать скопированные или перемещенные файлы с одного диска на другой и повторно использовать уже вычисленную информацию хэша для обнаружения скрытых ошибок или восстановления отсутствующих файлов. В некоторых редких случаях это поведение может привести к ложным срабатываниям или замедлению процесса из-за большого количества проверок хэша, и эта опция позволяет решить такие проблемы. Эту опцию можно использовать только с `sync`, `check` и `fix`.

-F, --force-full
    В `sync`, форсирует полный пересчет четности. Эту опцию можно использовать, когда вы добавляете новый уровень четности или если вы вернулись к старому файлу content, используя более свежие данные четности. Вместо того чтобы воссоздавать четность с нуля, это позволяет повторно использовать хэши, присутствующие в файле content, для проверки данных и поддержания защиты данных во время процесса `sync` с использованием существующих данных четности. Эту опцию можно использовать только с `sync`.

-R, --force-realloc
    В `sync`, форсирует полное перераспределение файлов и перестроение четности. Эту опцию можно использовать для полного перераспределения всех файлов, удаления фрагментации, при этом повторно используя хэши, присутствующие в файле content, для проверки данных. Эту опцию можно использовать только с `sync`. ВНИМАНИЕ! Эта опция предназначена только для экспертов, и настоятельно не рекомендуется ее использовать. У вас НЕТ защиты данных во время операции `sync`.

-W, --force-realloc-tail РАЗМЕР
    Работает как -R, --force-realloc, но ограничивается указанной хвостовой частью (последние РАЗМЕР байт) каждого файла четности. Принудительно перераспределяет (перемещает) любые фрагменты/блоки файлов, хранящиеся в данный момент в этой хвостовой части, позволяя разместить их в любом месте файла(ов) четности, где есть свободное место (включая существующие пустоты). Основная цель этого параметра — уменьшить занимаемый на диске размер файла четности. Если перераспределение успешно очистит всю хвостовую часть (в ней не останется блоков), файл четности будет обрезан, высвобождая неиспользуемое хвостовое пространство. Можно использовать множители, такие как K, M, G или T (например, --force-realloc-tail 1G). Вы можете использовать locate -t, --tail, чтобы заранее узнать затронутые файлы. ВНИМАНИЕ! Этот параметр предназначен только для экспертов, и его настоятельно не рекомендуется использовать. Во время операции `sync` защита данных для затронутых файлов ОТСУТСТВУЕТ.

-l, --log FILE
    Записывает подробный журнал в указанный файл. Если эта опция не указана, непредвиденные ошибки выводятся на экран, что потенциально может привести к чрезмерному выводу в случае множества ошибок. Когда указана -l, --log, на экран выводятся только фатальные ошибки, которые приводят к остановке SnapRAID. Если путь начинается с `>>`, файл открывается в режиме добавления. Вхождения `%D` и `%T` в имени заменяются датой и временем в формате ГГГГММДД и ЧЧММСС. В пакетных файлах Windows вы должны удвоить символ `%`, например, result-%%D.log. Чтобы использовать `>>`, вы должны заключить имя в кавычки, например, `">>result.log"`. Для вывода журнала на стандартный вывод или стандартную ошибку, вы можете использовать `">&1"` и `">&2"` соответственно. Описание тегов журнала см. в файле snapraid_log.txt или man-странице.

-L, --error-limit NUMBER
    Устанавливает новый лимит ошибок до остановки выполнения. По умолчанию SnapRAID останавливается, если обнаруживает более 100 ошибок ввода/вывода, что указывает на вероятный сбой диска. Эта опция влияет на `sync` и `scrub`, которым разрешено продолжать работу после первого набора дисковых ошибок, чтобы попытаться завершить свои операции. Однако `check` и `fix` всегда останавливаются при первой ошибке.

-S, --start BLKSTART
    Начинает обработку с указанного номера блока. Это может быть полезно для повторной попытки проверить или исправить конкретные блоки в случае поврежденного диска. Эта опция в основном предназначена для расширенного ручного восстановления.

-B, --count BLKCOUNT
    Обрабатывает только указанное количество блоков. Эта опция в основном предназначена для расширенного ручного восстановления.

-C, --gen-conf CONTENT
    Генерирует фиктивный файл конфигурации из существующего файла content. Файл конфигурации записывается на стандартный вывод и не перезаписывает существующий. Этот файл конфигурации также содержит информацию, необходимую для восстановления точек монтирования дисков в случае, если вы потеряете всю систему.

-v, --verbose
    Печатает больше информации на экран. Если указана один раз, печатает исключенные файлы и дополнительную статистику. Эта опция не влияет на файлы журнала.

-q, --quiet
    Печатает меньше информации на экран. Если указана один раз, удаляет индикатор выполнения; дважды, текущие операции; трижды, информационные сообщения; четырежды, сообщения о статусе. Фатальные ошибки всегда выводятся на экран. Эта опция не влияет на файлы журнала.

-H, --help
    Печатает краткий экран справки.

-V, --version
    Печатает версию программы.

CONFIGURATION
SnapRAID требует файл конфигурации, чтобы знать, где находится ваш дисковый массив и где хранить информацию четности.

В Unix используется файл `/usr/local/etc/snapraid.conf`, если он существует, в противном случае `/etc/snapraid.conf`. В Windows используется файл `snapraid.conf` в том же каталоге, что и `snapraid.exe`.

Он должен содержать следующие опции (чувствительные к регистру):

  parity FILE [,FILE] ...
Определяет файлы для использования для хранения информации четности. Четность обеспечивает защиту от одного сбоя диска, подобно RAID5.

Вы можете указать несколько файлов, которые должны быть на разных дисках. Когда файл больше не может расти, используется следующий. Общее доступное пространство должно быть по крайней мере таким же большим, как самый большой диск данных в массиве.

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

Сохранение дисков четности зарезервированными для четности гарантирует, что они не станут фрагментированными, улучшая производительность.

В Windows 256 МБ остается неиспользованным на каждом диске, чтобы избежать предупреждения о полных дисках.

Эта опция является обязательной и может использоваться только один раз.

  (2,3,4,5,6)-parity FILE [,FILE] ...
Определяет файлы для использования для хранения дополнительной информации четности.

Для каждого указанного уровня четности включается один дополнительный уровень защиты:
•   2-parity включает двойную четность RAID6.
•   3-parity включает тройную четность.
•   4-parity включает четверную четность.
•   5-parity включает пятерную четность.
•   6-parity включает шестерную четность.

Каждый уровень четности требует наличия всех предыдущих уровней четности.

Применяются те же соображения, что и для опции `parity`.

Эти опции являются необязательными и могут использоваться только один раз.

  z-parity FILE [,FILE] ...
Определяет альтернативный файл и формат для хранения тройной четности.

Эта опция является альтернативой `3-parity`, в основном предназначенной для слабых процессоров, таких как ARM или AMD Phenom, Athlon и Opteron, которые не поддерживают набор инструкций SSSE3. В таких случаях она обеспечивает лучшую производительность.

Этот формат похож на тот, который используется ZFS RAIDZ3, но быстрее. Как и ZFS, он не работает за пределами тройной четности.

При использовании `3-parity` вы будете предупреждены, если рекомендуется использовать формат `z-parity` для повышения производительности.

Возможно преобразование из одного формата в другой путем настройки файла конфигурации с желаемым файлом z-parity или 3-parity и использования `fix` для его воссоздания.

  content FILE
Определяет файл для использования для хранения списка и контрольных сумм всех файлов, присутствующих в вашем дисковом массиве.

Он может быть размещен на диске, используемом для данных, четности, или любом другом доступном диске. Если вы используете диск данных, этот файл автоматически исключается из процесса `sync`.

Эта опция является обязательной и может использоваться несколько раз для сохранения нескольких копий одного и того же файла.

Вы должны хранить как минимум одну копию для каждого используемого диска четности плюс одну. Использование дополнительных копий не повредит.

  data NAME DIR
Определяет имя и точку монтирования дисков данных в массиве. NAME используется для идентификации диска и должно быть уникальным. DIR — это точка монтирования диска в файловой системе.

Вы можете изменять точку монтирования по мере необходимости, пока вы сохраняете NAME фиксированным.

Вы должны использовать одну опцию для каждого диска данных в массиве.

Вы можете переименовать диск позже, изменив NAME непосредственно в файле конфигурации, а затем запустив команду `sync`. В случае переименования, ассоциация выполняется с использованием сохраненного UUID дисков.

  extra NAME DIR
Определяет имя и точку монтирования дополнительных дисков для мониторинга с помощью команд `smart` и `probe`.

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

Обратите внимание, что такие диски не затрагиваются командами `up` и `down`, так как предполагается, что они всегда вращаются.

  nohidden
Исключает все скрытые файлы и каталоги. В Unix скрытые файлы — это те, которые начинаются с `.`. В Windows — это те, у которых есть скрытый атрибут.

  exclude/include PATTERN
Определяет шаблоны файлов или каталогов для исключения или включения в процесс синхронизации. Все шаблоны обрабатываются в указанном порядке.

Если первый совпадающий шаблон — это `exclude`, файл исключается. Если это `include`, файл включается. Если ни один шаблон не совпадает, файл исключается, если последний указанный шаблон — это `include`, или включается, если последний шаблон — это `exclude`.

Подробнее о спецификациях шаблонов см. в разделе PATTERN.

Эту опцию можно использовать несколько раз.

  blocksize SIZE_IN_KIBIBYTES
Определяет базовый размер блока в кибибайтах для четности. Один кибибайт — это 1024 байта.

Размер блока по умолчанию — 256, что должно работать в большинстве случаев.

ВНИМАНИЕ! Эта опция предназначена только для экспертов, и настоятельно не рекомендуется изменять это значение. Чтобы изменить это значение в будущем, вам потребуется воссоздать всю четность!

Причина использовать другой размер блока — если у вас много маленьких файлов, порядка миллионов.

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

В качестве приближения вы можете предположить, что половина размера блока теряется для каждого файла. Например, при 100 000 файлов и размере блока 256 КиБ вы потеряете 12,8 ГБ четности, что может привести к уменьшению доступного пространства на диске данных на 12,8 ГБ.

Вы можете проверить количество потерянного пространства на каждом диске с помощью `status`. Это количество пространства, которое вы должны оставить свободным на дисках данных или использовать для файлов, не включенных в массив. Если это значение отрицательное, это означает, что вы близки к заполнению четности, и оно представляет пространство, которое вы все еще можете потерять.

Чтобы избежать этой проблемы, вы можете использовать больший раздел для четности. Например, если раздел четности на 12,8 ГБ больше, чем диски данных, у вас есть достаточно дополнительного пространства для обработки до 100 000 файлов на каждом диске данных без каких-либо потерь пространства.

Хитрость для получения большего раздела четности в Linux — отформатировать его командой:

    mkfs.ext4 -m 0 -T largefile4 DEVICE

Это приводит к примерно 1,5% дополнительного пространства, приблизительно 60 ГБ для диска 4 ТБ, что позволяет разместить около 460 000 файлов на каждом диске данных без каких-либо потерь пространства.

  hashsize SIZE_IN_BYTES
Определяет размер хэша в байтах для сохраненных блоков.

Размер хэша по умолчанию — 16 байт (128 бит), что должно работать в большинстве случаев.

ВНИМАНИЕ! Эта опция предназначена только для экспертов, и настоятельно не рекомендуется изменять это значение. Чтобы изменить это значение в будущем, вам потребуется воссоздать всю четность!

Причина использовать другой размер хэша — если ваша система имеет ограниченную память. Как правило, SnapRAID обычно требует 1 ГиБ ОЗУ на каждые 16 ТБ данных в массиве.

В частности, для хранения хэшей данных SnapRAID требует приблизительно TS*(1+HS)/BS байт ОЗУ, где TS — это общий размер в байтах вашего дискового массива, BS — размер блока в байтах, и HS — размер хэша в байтах.

Например, при 8 дисках по 4 ТБ, размере блока 256 КиБ (1 КиБ = 1024 байта) и размере хэша 16, вы получаете:

RAM = (8 * 4 * 10^12) * (1+16) / (256 * 2^10) = 1.93 GiB

Переключение на размер хэша 8, вы получаете:

RAM = (8 * 4 * 10^12) * (1+8) / (256 * 2^10) = 1.02 GiB

Переключение на размер блока 512, вы получаете:

RAM = (8 * 4 * 10^12) * (1+16) / (512 * 2^10) = 0.96 GiB

Переключение как на размер хэша 8, так и на размер блока 512, вы получаете:

RAM = (8 * 4 * 10^12) * (1+8) / (512 * 2^10) = 0.51 GiB

  autosave SIZE_IN_GIGABYTES
Автоматически сохраняет состояние при синхронизации или проверке после обработки указанного количества ГБ. Эта опция полезна, чтобы избежать перезапуска длительных команд `sync` с нуля, если они были прерваны сбоем машины или любым другим событием.

  temp_limit TEMPERATURE_CELSIUS
Устанавливает максимально допустимую температуру диска в Цельсиях. Если указано, SnapRAID периодически проверяет температуру всех дисков с помощью инструмента smartctl. Текущие температуры дисков отображаются во время работы SnapRAID. Если какой-либо диск превышает этот лимит, все операции останавливаются, и диски останавливают вращение (переходят в режим ожидания) на время, определенное опцией `temp_sleep`. После периода ожидания операции возобновляются, потенциально снова приостанавливаясь, если лимит температуры достигается еще раз.

Во время работы SnapRAID также анализирует кривую нагрева каждого диска и оценивает долгосрочную установившуюся температуру, которую они, как ожидается, достигнут, если активность продолжится. Оценка выполняется только после того, как температура диска увеличилась четыре раза, что гарантирует наличие достаточного количества данных для установления надежной тенденции. Эта прогнозируемая установившаяся температура показывается в скобках рядом с текущим значением и помогает оценить, достаточно ли охлаждение системы. Эта оценочная температура предназначена только для информации и не влияет на поведение SnapRAID. Действия программы основываются исключительно на фактических измеренных температурах дисков.

Для выполнения этого анализа SnapRAID требуется эталон для температуры системы. Сначала он пытается прочитать его из доступных аппаратных датчиков. Если ни один системный датчик не может быть доступен, он использует самую низкую температуру диска, измеренную в начале выполнения, в качестве резервного эталона.

Обычно SnapRAID показывает только температуру самого горячего диска. Чтобы отобразить температуру всех дисков, используйте опцию -A или --stats.

  temp_sleep TIME_IN_MINUTES
Устанавливает время ожидания, в минутах, когда достигается предел температуры. В течение этого периода диски остаются остановленными. По умолчанию — 5 минут.

  pool DIR
Определяет каталог объединения (pooling), где создается виртуальное представление дискового массива с помощью команды `pool`.

Каталог должен уже существовать.

  share UNC_DIR
Определяет путь UNC Windows, необходимый для удаленного доступа к дискам.

Если указана эта опция, символические ссылки, созданные в каталоге pool, используют этот путь UNC для доступа к дискам. Без этой опции сгенерированные символические ссылки используют только локальные пути, что не позволяет предоставлять общий доступ к каталогу pool по сети.

Символические ссылки формируются с использованием указанного пути UNC, добавлением имени диска, как указано в опции `data`, и, наконец, добавлением каталога и имени файла.

Эта опция требуется только для Windows.

  smartctl DISK/PARITY OPTIONS...
Определяет пользовательские опции smartctl для получения атрибутов SMART для каждого диска. Это может потребоваться для контроллеров RAID и некоторых USB-дисков, которые не могут быть обнаружены автоматически. Заполнитель %s заменяется именем устройства, но он необязателен для фиксированных устройств, таких как контроллеры RAID.

DISK — это то же имя диска, указанное в опции `data`. PARITY — это одно из имен четности: `parity`, `2-parity`, `3-parity`, `4-parity`, `5-parity`, `6-parity` или `z-parity`.

В указанных OPTIONS строка `%s` заменяется именем устройства. Для контроллеров RAID устройство, вероятно, фиксировано, и вам может не потребоваться использовать `%s`.

Возможные опции см. в документации smartmontools:

    https://www.smartmontools.org/wiki/Supported_RAID-Controllers
    https://www.smartmontools.org/wiki/Supported_USB-Devices

Например:

    smartctl parity -d sat %s

  smartignore DISK/PARITY ATTR [ATTR...]
Игнорирует указанный атрибут SMART при вычислении вероятности сбоя диска. Эта опция полезна, если диск сообщает необычные или вводящие в заблуждение значения для конкретного атрибута.

DISK — это то же имя диска, указанное в опции `data`. PARITY — это одно из имен четности: `parity`, `2-parity`, `3-parity`, `4-parity`, `5-parity`, `6-parity` или `z-parity`. Специальное значение * может использоваться для игнорирования атрибута на всех дисках.

Например, чтобы игнорировать атрибут `Current Pending Sector Count` на всех дисках:

    smartignore * 197

Чтобы игнорировать его только на первом диске четности:

    smartignore parity 197

  Examples
Пример типичной конфигурации для Unix:

    parity /mnt/diskp/snapraid.parity
    content /mnt/diskp/snapraid.content
    content /var/lib/snapraid/snapraid.content
    data d1 /mnt/disk1/
    data d2 /mnt/disk2/
    data d3 /mnt/disk3/
    exclude /lost+found/
    exclude /tmp/
    smartctl d1 -d sat %s
    smartctl d2 -d usbjmicron %s
    smartctl parity -d areca,1/1 /dev/sg0
    smartctl 2-parity -d areca,2/1 /dev/sg0

Пример типичной конфигурации для Windows:

    parity E:\snapraid.parity
    content E:\snapraid.content
    content C:\snapraid\snapraid.content
    data d1 G:\array\
    data d2 H:\array\
    data d3 I:\array\
    exclude Thumbs.db
    exclude \$RECYCLE.BIN
    exclude \System Volume Information
    smartctl d1 -d sat %s
    smartctl d2 -d usbjmicron %s
    smartctl parity -d areca,1/1 /dev/arcmsr0
    smartctl 2-parity -d areca,2/1 /dev/arcmsr0

PATTERN
Шаблоны обеспечивают гибкий способ фильтрации файлов для включения или исключения. Используя символы подстановки (globbing), вы можете определить правила, которые соответствуют конкретным именам файлов или целым структурам каталогов без ручного перечисления каждого пути.

Вопросительный знак `?` соответствует любому одиночному символу, кроме разделителя каталогов. Это делает его полезным для сопоставления имен файлов с переменными символами, при этом шаблон ограничивается одним уровнем каталога.

Одиночная звездочка `*` соответствует любой последовательности символов, но, как и вопросительный знак, она никогда не пересекает границы каталогов. Она останавливается на прямой косой черте, что делает ее подходящей для сопоставления внутри одного компонента пути. Это стандартное поведение подстановочных знаков, знакомое по оболочке (shell).

Двойная звездочка `**` более мощная, она соответствует любой последовательности символов, включая разделители каталогов. Это позволяет шаблонам соответствовать нескольким уровням каталогов. Когда `**` появляется непосредственно в шаблоне, она может соответствовать нулю или более символам, включая косые черты между окружающим буквальным текстом.

Наиболее важным использованием `**` является специальная форма `/**/`. Она соответствует нулю или более полным уровням каталогов, что позволяет сопоставлять файлы на любой глубине в дереве каталогов, не зная точной структуры пути. Например, шаблон `src/**/main.js` соответствует `src/main.js` (пропуск ноля каталогов), `src/ui/main.js` (пропуск одного каталога) и `src/ui/components/main.js` (пропуск двух каталогов).

Классы символов с использованием квадратных скобок `[]` соответствуют одному символу из заданного набора или диапазона. Как и другие односимвольные шаблоны, они не соответствуют разделителям каталогов. Классы поддерживают диапазоны и отрицание с использованием восклицательного знака.

Фундаментальное различие, которое следует помнить, заключается в том, что `*`, `?` и классы символов соблюдают границы каталогов и соответствуют только внутри одного компонента пути, в то время как `**` — единственный шаблон, который может соответствовать через разделители каталогов.

Существует четыре различных типа шаблонов:

FILE
    Выбирает любой файл с именем FILE. Этот шаблон применяется только к файлам, но не к директориям.

DIR/
    Выбирает любую директорию с именем DIR и все, что находится внутри нее. Этот шаблон применяется только к директориям, но не к файлам.

/PATH/FILE
    Выбирает точно указанный путь к файлу. Этот шаблон применяется только к файлам, но не к директориям.

/PATH/DIR/
    Выбирает точно указанный путь к директории и все, что находится внутри нее. Этот шаблон применяется только к директориям, но не к файлам.

Когда вы указываете абсолютный путь, начинающийся с /, он применяется к корневому каталогу массива, а не к корневому каталогу локальной файловой системы.

В Windows вы можете использовать обратную косую черту \ вместо прямой /. Системные каталоги Windows, точки соединения, точки монтирования и другие специальные каталоги Windows рассматриваются как файлы, что означает, что для их исключения вы должны использовать правило файла, а не каталога.

Если имя файла содержит символы `*`, `?`, `[`, или `]`, вы должны экранировать их, чтобы избежать их интерпретации как символов глоббинга. В Unix символом экранирования является `\`; в Windows — `^`. Когда шаблон находится в командной строке, вы должны удвоить символ экранирования, чтобы избежать его интерпретации командной оболочкой.

В файле конфигурации вы можете использовать различные стратегии для фильтрации файлов для обработки. Самый простой подход — использовать только правила `exclude` для удаления всех файлов и каталогов, которые вы не хотите обрабатывать. Например:

    # Исключает любой файл с именем `*.unrecoverable`
    exclude *.unrecoverable
    # Исключает корневой каталог `/lost+found`
    exclude /lost+found/
    # Исключает любой подкаталог с именем `tmp`
    exclude tmp/

Противоположный подход — определить только файлы, которые вы хотите обрабатывать, используя только правила `include`. Например:

    # Включает только некоторые каталоги
    include /movies/
    include /musics/
    include /pictures/

Конечный подход — смешивать правила `exclude` и `include`. В этом случае порядок правил важен. Более ранние правила имеют преимущество над более поздними. Для упрощения вы можете сначала перечислить все правила `exclude`, а затем все правила `include`. Например:

    # Исключает любой файл с именем `*.unrecoverable`
    exclude *.unrecoverable
    # Исключает любой подкаталог с именем `tmp`
    exclude tmp/
    # Включает только некоторые каталоги
    include /movies/
    include /musics/
    include /pictures/

В командной строке, используя опцию -f, вы можете использовать только шаблоны `include`. Например:

    # Проверяет только файлы .mp3.
    # В Unix используйте кавычки, чтобы избежать расширения глоббинга оболочкой.
    snapraid -f "*.mp3" check

В Unix при использовании символов глоббинга в командной строке вы должны заключить их в кавычки, чтобы предотвратить их расширение оболочкой.

IGNORE FILE
В дополнение к глобальным правилам в файле конфигурации, вы можете размещать файлы `.snapraidignore` в любом каталоге внутри массива для определения децентрализованных правил исключения.

Правила, определенные в `.snapraidignore`, применяются после правил в конфигурационном файле. Это означает, что они имеют более высокий приоритет и могут использоваться для исключения файлов, которые ранее были включены глобальной конфигурацией. Фактически, если локальное правило совпадает, файл исключается независимо от глобальных настроек включения.

Логика шаблонов в `.snapraidignore` повторяет глобальную конфигурацию, но привязывает шаблоны к каталогу, в котором находится файл:

FILE
    Выбирает любой файл с именем FILE в этом каталоге или ниже. Здесь действуют те же правила подстановки, что и в глобальном шаблоне.

DIR/
    Выбирает любой каталог с именем DIR и все его содержимое, находящееся в этом каталоге или ниже.

/PATH/FILE
    Выбирает точно указанный файл относительно местоположения файла `.snapraidignore`.

/PATH/DIR/
    Выбирает точно указанный каталог и все его содержимое относительно местоположения файла `.snapraidignore`.

В отличие от глобальной конфигурации, файлы `.snapraidignore` поддерживают только правила исключения; вы не можете использовать шаблоны `include` или отрицание (!).

Например, если у вас есть `.snapraidignore` в `/mnt/disk1/projects/`:

    # Исключает ТОЛЬКО /mnt/disk1/projects/output.bin
    /output.bin
    # Исключает любой каталог с именем `build` внутри projects/
    build/
    # Исключает любой .tmp файл внутри projects/ или его подпапок
    *.tmp

CONTENT
SnapRAID хранит список и контрольные суммы ваших файлов в файле content.

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

Этот файл считывается и записывается командами `sync` и `scrub` и считывается командами `fix`, `check` и `status`.

PARITY
SnapRAID хранит информацию четности вашего массива в файлах parity.

Это бинарные файлы, содержащие вычисленную четность всех блоков, определенных в файле `content`.

Эти файлы считываются и записываются командами `sync` и `fix` и только считываются командами `scrub` и `check`.

ENCODING
SnapRAID в Unix игнорирует любое кодирование. Он считывает и хранит имена файлов с тем же кодированием, которое используется файловой системой.

В Windows все имена, считанные из файловой системы, преобразуются и обрабатываются в формате UTF-8.

Чтобы имена файлов печатались правильно, вы должны установить консоль Windows в режим UTF-8 командой `chcp 65001` и использовать шрифт TrueType, такой как `Lucida Console`, в качестве шрифта консоли. Это влияет только на печатаемые имена файлов; если вы перенаправляете вывод консоли в файл, результирующий файл всегда в формате UTF-8.

COPYRIGHT
Этот файл защищен авторским правом (C) 2025 Andrea Mazzoleni

SEE ALSO
snapraid_log(1), snapraidd(1)