Ця відповідь є комбінацією відповіді @ lechlukasz та @ db48x , а також включає деякі моменти, висловлені в коментарях, а також деякі мої власні думки.
Простий шлях вперед - це комбінована файлова система та підхід окремо-метаданих.
Використовуючи файлову систему, яка виконує хешування даних та перевірку даних, таких як ZFS або Btrfs (зауважте, що хоча великі досягнення досягнуті, Btrfs наразі не вважається готовим до використання у виробництві), ви можете бути розумно переконайтеся, що якщо дані можна зчитувати з диска без помилки операційної системи, то прочитані дані записуються на диск таким чином, як це передбачено файловою системою. Виконуючи періодичні операції "скрабування", всі дані зчитуються та перевіряються відповідно до уявлення файлової системи про те, якими вони повинні бути.
Однак це захищає лише від пошкодження на диску (нечитабельні блоки, відверті помилки запису апаратних засобів, недійсні записи, які пошкоджують частини даних безпосередньо на блочному пристрої тощо). Він не захищає від програмної помилки, неправильної роботи користувача чи шкідливого програмного забезпечення, яке працює через призначені засоби операційної системи для роботи з файлами, припускаючи, що ці засоби не містять таких помилок.
Для захисту від останнього потрібен ще один шар захисту. Перевірка суми даних чи хешування даних з точки зору програми користувача допоможе захистити від багатьох згаданих вище ризиків, але їх потрібно виконувати окремо (як вбудована технологічна дія в програмному забезпеченні, або як повністю окремий процес).
З сучасним обладнанням і тим, що практично для зберігання великої кількості даних (спінінг жорстких дисків на відміну від твердотільних дисків / SSD), навіть складні алгоритми хешування, такі як SHA1, будуть значною мірою пов'язані з входом / виводом - тобто швидкість при якій хешировані дані будуть функціонувати швидкістю зчитування системи зберігання, а не здатністю процесора комп'ютера обчислювати хеш. Я здійснив експеримент із запуском хеширувального простору MD5 у користувальницькому просторі на приблизно 150 ГБ даних про те, що в 2012 році був споживчим ПК середнього рівня, і він закінчився після того, як диск працював в основному без перерви близько 40 хвилин. Масштабуючи ці цифри в 100 разів, ви отримаєте хеші MD5 колекції 15 ТБ приблизно за три дні на цьому ж апараті. Додаючи швидкість передачі читання (що може бути легко досягнуто, наприклад,Наприклад, RAID 0 - це смугастий без надмірності, зазвичай використовується для досягнення більш високої продуктивності читання / запису, можливо, у поєднанні з RAID 1, що утворює RAID 10 ), час на завершення може бути зменшений для тієї ж кількості даних.
Поєднуючи два, ви отримуєте найкраще з обох світів: файлова система дає вам впевненість, що отримане вами при читанні файлу те, що було насправді написано, і окремий процес перевірки коректності може запускати всю колекцію, гарантуючи, що дані зберігається все ще відповідає тому, що потрапило в архів. Будь-яка невідповідність між ними (файлова система говорить про те, що файл у порядку, перевірка коректності говорить, що це не так) вказуватиме на файл, який було змінено за межами призначеного режиму роботи архіву, але з-під можливостей операційної системи, що спонукає до відновлення із вторинного копія (резервне копіювання). Таким чином, перевірка на виправлення може запускатися на більш тривалому часовому інтервалі, що стає важливим для дуже великих архівів, але будь-який доступ до Інтернету все одно гарантовано не може бути пошкоджений на апаратному забезпеченні, якщо читання вдасться. В принципі, програмне забезпечення архіву може розраховувати на файлову систему, щоб повідомити про невідповідності як помилки читання, а також здійснити окрему перевірку на виправлення у фоновому режимі, оскільки користувач працює з файлом та відображає відповідне повідомлення у випадку, якщо файл не відповідає тому, що було введено в архів. Використовуючи файлову систему блокування хешування, така схема мала б мінімальний вплив на сприйману продуктивність, одночасно надаючи впевненість у правильності вмісту.