Короткий опис
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/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 повертає помилку. У цьому випадку настійно рекомендується негайна заміна диска.
Інші можливі рядки стану:
Якщо вказано опцію -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.
Після перерахування всіх змінених файлів представляється зведення змін, згруповане за:
Якщо потрібна sync, код повернення процесу дорівнює 2, замість стандартного 0. Код повернення 1 використовується для загальної умови помилки.
Нічого не змінюється.
sync
Оновлює інформацію парності. Всі змінені файли у дисковому масиві зчитуються, і відповідні дані парності оновлюються.
Ви можете зупинити цей процес у будь-який час, натиснувши Ctrl+C, не втрачаючи вже виконану роботу. Під час наступного запуску процес sync відновить роботу з місця, де був перерваний.
Якщо під час процесу виявлено приховані помилки або помилки введення/виведення, відповідні блоки позначаються як погані.
Файли ідентифікуються за шляхом та/або inode та перевіряються за розміром та часовою міткою. Якщо розмір або часова мітка файлу відрізняються, дані парності перераховуються для всього файлу. Якщо файл переміщено або перейменовано на тому ж диску, зберігаючи той самий inode, парність не перераховується. Якщо файл переміщено на інший диск, парність перераховується, але раніше обчислена інформація хешу зберігається.
Файли content та parity змінюються за потреби. Файли в масиві НЕ змінюються.
scrub
Скрабує масив, перевіряючи на наявність прихованих помилок або помилок введення/виведення на дисках даних та парності.
Кожен виклик перевіряє приблизно 8% масиву, виключаючи дані, які вже були скрабовані протягом останніх 10 днів. Це означає, що скрабування раз на тиждень забезпечує перевірку кожного біта даних принаймні раз на три місяці.
Ви можете визначити інший план скрабування або кількість за допомогою опції -p, --plan, яка приймає: bad - Скрабувати блоки, позначені як погані. new - Скрабувати щойно синхронізовані блоки, які ще не були
скрабовані.
Якщо ви вказуєте відсоткове значення, ви також можете використовувати опцію -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 надає наступні опції:
Конфігурація
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/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 (пропуск двох каталогів).
Класи символів із використанням квадратних дужок [] відповідають одному символу з визначеного набору або діапазону. Як і інші односимвольні шаблони, вони не відповідають роздільникам каталогів. Класи підтримують діапазони та заперечення за допомогою знаку оклику.
Фундаментальна відмінність, яку слід пам'ятати, полягає в тому, що *, ? та класи символів усі дотримуються меж каталогів і відповідають лише в межах одного компонента шляху, тоді як ** — єдиний шаблон, який може відповідати через роздільники каталогів.
Існує чотири різні типи шаблонів:
Коли ви вказуєте абсолютний шлях, що починається з /, він застосовується до кореневого каталогу масиву, а не до кореневого каталогу локальної файлової системи.
У 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 повторює глобальну конфігурацію, але прив'язує шаблони до каталогу, в якому знаходиться файл:
На відміну від глобальної конфігурації, файли .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)