Russian manual for SnapRAID.

1 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]
    [-Z, --force-zero] [-E, --force-empty]
    [-U, --force-uuid] [-D, --force-device]
    [-N, --force-nocopy] [-F, --force-full]
    [-R, --force-realloc]
    [-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
snapraid [-V, --version] [-H, --help] [-C, --gen-conf CONTENT]

2 Description

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

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

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

https://www.snapraid.it/

3 Limitations

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

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

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

Другие ограничения SnapRAID:

4 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/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`.

4.1 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`, но соответствующие блоки не помечаются как плохие.

4.2 Pooling

Примечание: Функция объединения (pooling), описанная ниже, была заменена инструментом mergefs, который теперь является рекомендуемым вариантом для пользователей 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

4.3 Undeleting

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

snapraid fix -f FILE

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

snapraid fix -f DIR/

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

snapraid fix -m -f DIR/

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

snapraid fix -m

4.4 Recovering

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

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

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

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

4.4.1 STEP 1 -> Reconfigure

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

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

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

data d1 /mnt/disk1/

на:

data d1 /mnt/new_spare_disk/

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

4.4.2 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`!

4.4.3 STEP 3 -> Check

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

snapraid -d NAME -a check

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

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

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

4.4.4 STEP 4 -> Sync

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

snapraid sync

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

5 Commands

SnapRAID предоставляет несколько простых команд, которые позволяют:

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

5.1 status

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

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

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

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

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

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

5.2 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` в файле конфигурации.

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

5.3 probe

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

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

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

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

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

5.4 up

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

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

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

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

5.5 down

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

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

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

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

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

5.6 diff

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

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

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

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

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

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

5.7 sync

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

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

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

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

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

5.8 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` НЕ изменяются. Файлы в массиве НЕ изменяются.

5.9 fix

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

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

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

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

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

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

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

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

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

5.10 check

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

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

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

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

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

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

5.11 list

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

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

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

5.12 dup

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

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

5.13 pool

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

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

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

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

5.14 devices

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

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

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

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

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

5.15 touch

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

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

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

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

5.16 rehash

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

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

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

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

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

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

6 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).
-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`.
-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
Печатает версию программы.

7 Configuration

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

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

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

7.1 parity FILE [,FILE] ...

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

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

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

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

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

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

7.2 (2,3,4,5,6)-parity FILE [,FILE] ...

Определяет файлы для использования для хранения дополнительной информации четности.

Для каждого указанного уровня четности включается один дополнительный уровень защиты:

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

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

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

7.3 z-parity FILE [,FILE] ...

Определяет альтернативный файл и формат для хранения тройной четности.

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

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

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

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

7.4 content FILE

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

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

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

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

7.5 data NAME DIR

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

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

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

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

7.6 nohidden

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

7.7 exclude/include PATTERN

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

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

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

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

7.8 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 файлов на каждом диске данных без каких-либо потерь пространства.

7.9 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

7.10 autosave SIZE_IN_GIGABYTES

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

7.11 temp_limit TEMPERATURE_CELSIUS

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

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

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

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

7.12 temp_sleep TIME_IN_MINUTES

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

7.13 pool DIR

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

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

7.14 share UNC_DIR

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

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

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

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

7.15 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

7.16 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

7.17 Examples

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

parity /mnt/diskp/snapraid.parity
content /mnt/diskp/snapraid.content
content /var/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

8 Pattern

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

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

FILE
Выбирает любой файл с именем FILE. Вы можете использовать любые символы глоббинга, такие как * и ?, и классы символов, такие как [a-z]. Этот шаблон применяется только к файлам, а не к каталогам.
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 при использовании символов глоббинга в командной строке вы должны заключить их в кавычки, чтобы предотвратить их расширение оболочкой.

9 Content

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

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

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

10 Parity

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

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

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

11 Encoding

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

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

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