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

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

Короткий опис
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]

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

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

Для отримання додаткової інформації відвідайте офіційний сайт SnapRAID:

    https://www.snapraid.it/

Обмеження
SnapRAID є гібридом між RAID та програмою резервного копіювання, прагнучи поєднати найкращі переваги обох. Однак, він має деякі обмеження, які слід врахувати перед його використанням.

Основне обмеження полягає в тому, що якщо диск виходить з ладу, а ви нещодавно не виконували синхронізацію, ви можете не змогти повністю відновити дані. Конкретніше, ви можете втратити можливість відновлення даних обсягом до розміру змінених або видалених файлів з моменту останньої операції синхронізації. Це відбувається, навіть якщо змінені або видалені файли не знаходяться на диску, що вийшов з ладу. Ось чому SnapRAID краще підходить для даних, які рідко змінюються.

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

Інші обмеження SnapRAID:
•   З SnapRAID у вас все ще є окремі файлові системи для кожного диска. З RAID ви отримуєте одну велику файлову систему.
•   SnapRAID не використовує чергування (striping) даних. З RAID ви отримуєте прискорення завдяки чергуванню.
•   SnapRAID не підтримує відновлення в реальному часі. З RAID вам не потрібно припиняти роботу, коли диск виходить з ладу.
•   SnapRAID може відновлювати дані лише з обмеженої кількості дисків, що вийшли з ладу. З резервним копіюванням ви можете відновити дані навіть після повної відмови всього дискового масиву.
•   Зберігаються лише імена файлів, часові мітки, символічні та жорсткі посилання. Права доступу, власність та розширені атрибути не зберігаються.

Початок роботи
Щоб використовувати SnapRAID, спершу потрібно вибрати один диск у вашому дисковому масиві, щоб присвятити його інформації `парності`. З одним диском для парності ви зможете відновити дані після відмови одного диска, подібно до 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)
Примітка: Функція об'єднання, описана нижче, була замінена інструментом 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` конфігураційного файлу шлях Windows UNC, який потрібен віддаленим клієнтам для доступу до цих спільних дисків.

Наприклад, працюючи з сервера з іменем `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)
Сталося найгірше, і ви втратили один або кілька дисків!

НЕ ПАНІКУЙТЕ! Ви зможете їх відновити!

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

Потім виконайте наступні кроки.

  КРОК 1 -> Переналаштування
Вам потрібен деякий простір для відновлення, в ідеалі на додаткових запасних дисках, але зовнішній USB-диск або віддалений диск підійде.

Змініть конфігураційний файл SnapRAID, щоб опція `data` або `parity` диска, що вийшов з ладу, вказувала на місце розташування з достатньою кількістю вільного місця для відновлення файлів.

Наприклад, якщо диск `d1` вийшов з ладу, змініть з:

    data d1 /mnt/disk1/

на:

    data d1 /mnt/new_spare_disk/

Якщо диск, який потрібно відновити, є диском парності, оновіть відповідну опцію `parity`. Якщо у вас кілька дисків, що вийшли з ладу, оновіть усі їхні конфігураційні опції.

  КРОК 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`!

  КРОК 3 -> Перевірка (Check)
Як обережну перевірку, ви можете тепер запустити команду `check`, щоб переконатися, що на відновленому диску все правильно.

    snapraid -d NAME -a check

Де NAME — це ім'я диска, наприклад `d1` у нашому попередньому прикладі.

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

Ця команда займе багато часу, але якщо ви не надто обережні, ви можете її пропустити.

  КРОК 4 -> Синхронізація (Sync)
Запустіть команду `sync`, щоб повторно синхронізувати масив з новим диском.

    snapraid sync

Якщо все відновлено, ця команда виконується миттєво.

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

Команди повинні бути написані малими літерами.

  status
Виводить зведення стану дискового масиву.

Включає інформацію про фрагментацію парності, вік блоків без перевірки та всі записані приховані помилки, виявлені під час скрабування.

Представлена інформація стосується останнього часу, коли ви запустили `sync`. Пізніші модифікації не враховуються.

Якщо виявлено погані блоки, перераховуються їхні номери блоків. Щоб їх виправити, ви можете використовувати команду `fix -e`.

Також показує графік, що представляє останній час, коли кожен блок був скрабований або синхронізований. Скрабовані блоки позначаються символом `*`, блоки, синхронізовані, але ще не скрабовані, - `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
Виводить стан ЖИВЛЕННЯ всіх дисків у системі.

`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 -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. Майте на увазі, що такі файли не будуть захищені парністю під час процесу перерозподілу.

Опції
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
    Вибирає план скрабування. Якщо 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`, щоб усі дані були зчитані двічі для забезпечення їх цілісності. Ця опція також перевіряє файли, переміщені в межах масиву, щоб переконатися, що операція переміщення була успішною, і, якщо необхідно, дозволяє запустити операцію виправлення перед продовженням. Цю опцію можна використовувати лише з `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
    Вмикає розширений перегляд стану, який показує додаткову інформацію. На екрані відображаються два графіки: Перший графік показує кількість буферизованих смуг (stripes) для кожного диска, разом зі шляхом до файлу, до якого наразі здійснюється доступ на цьому диску. Зазвичай найповільніший диск не матиме доступного буфера, що визначає максимально досяжну пропускну здатність. Другий графік показує відсоток часу, витраченого на очікування, за останні 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` форсує повне переобчислення парності. Цю опцію можна використовувати, коли ви додаєте новий рівень парності або якщо ви повернулися до старого файлу вмісту, використовуючи більш нові дані парності. Замість створення парності з нуля, це дозволяє повторно використовувати хеші, присутні у файлі вмісту, для перевірки даних та підтримки захисту даних під час процесу `sync`, використовуючи існуючі дані парності. Цю опцію можна використовувати лише з `sync`.

-R, --force-realloc
    У `sync` форсує повне перерозподілення файлів та перебудову парності. Цю опцію можна використовувати для повного перерозподілу всіх файлів, усуваючи фрагментацію, повторно використовуючи хеші, присутні у файлі вмісту, для перевірки даних. Цю опцію можна використовувати лише з `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` в імені замінюються датою та часом у форматі YYYYMMDD та HHMMSS. У пакетних файлах 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
    Генерує фіктивний конфігураційний файл з існуючого файлу вмісту. Конфігураційний файл записується на стандартний вивід і не перезаписує існуючий. Цей конфігураційний файл також містить інформацію, необхідну для реконструкції точок монтування диска у випадку втрати всієї системи.

-v, --verbose
    Виводить більше інформації на екран. Якщо вказано один раз, виводить виключені файли та додаткову статистику. Ця опція не впливає на файли журналу.

-q, --quiet
    Виводить менше інформації на екран. Якщо вказано один раз, видаляє індикатор прогресу; двічі — поточні операції; тричі — інформаційні повідомлення; чотири рази — повідомлення про статус. Фатальні помилки завжди виводяться на екран. Ця опція не впливає на файли журналу.

-H, --help
    Виводить короткий довідковий екран.

-V, --version
    Виводить версію програми.

Конфігурація
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 \times (1+HS) / BS$ байтів ОЗП, де TS — загальний розмір вашого дискового масиву у байтах, BS — розмір блоку у байтах, а HS — розмір хешу у байтах.

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

RAM = $(8 \times 4 \times 10^{12}) \times (1+16) / (256 \times 2^{10}) = 1.93$ ГіБ

Перехід до розміру хешу 8, ви отримуєте:

RAM = $(8 \times 4 \times 10^{12}) \times (1+8) / (256 \times 2^{10}) = 1.02$ ГіБ

Перехід до розміру блоку 512, ви отримуєте:

RAM = $(8 \times 4 \times 10^{12}) \times (1+16) / (512 \times 2^{10}) = 0.96$ ГіБ

Перехід до розміру хешу 8 та розміру блоку 512, ви отримуєте:

RAM = $(8 \times 4 \times 10^{12}) \times (1+8) / (512 \times 2^{10}) = 0.51$ ГіБ

  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
Визначає каталог об'єднання, де створюється віртуальне представлення дискового масиву за допомогою команди `pool`.

Каталог повинен вже існувати.

  share UNC_DIR
Визначає шлях Windows UNC, необхідний для віддаленого доступу до дисків.

Якщо ця опція вказана, символічні посилання, створені в каталозі 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

  Приклади
Приклад типової конфігурації для 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 globbing).

Подвійна зірочка `**` є потужнішою, вона відповідає будь-якій послідовності символів, включаючи роздільники каталогів. Це дозволяє шаблонам відповідати кільком рівням каталогів. Коли `**` з'являється безпосередньо в шаблоні, вона може відповідати нулю або більше символам, включаючи косі риски між оточуючим літеральним текстом.

Найважливішим використанням `**` є спеціальна форма `/**/`. Вона відповідає нулю або більше повним рівням каталогів, що дозволяє зіставляти файли на будь-якій глибині в дереві каталогів, не знаючи точної структури шляху. Наприклад, шаблон `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 зберігає список та контрольні суми ваших файлів у файлі вмісту.

Це бінарний файл, який перераховує всі файли, присутні у вашому дисковому масиві, разом з усіма контрольними сумами для перевірки їх цілісності.

Цей файл зчитується та записується командами `sync` та `scrub` та зчитується командами `fix`, `check` та `status`.

Парність (PARITY)
SnapRAID зберігає інформацію парності вашого масиву у файлах парності.

Це бінарні файли, що містять обчислену парність усіх блоків, визначених у файлі `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)