Вопрос или проблема
У меня есть один жесткий диск. Я хочу использовать файловую систему, которая даст мне меньше пространства для хранения, но, как компромисс, обеспечит контрольные суммы или любой другой метод для сохранения целостности данных.
Я понимаю, что такие файловые системы, как ext4 или xfs, этого не сделают, и, следовательно, вы можете столкнуться с тихим повреждением данных, известным как битрот.
ZFS выглядит отличным выбором, но все, что я прочитал, говорит о том, что вам нужно больше одного диска, чтобы его использовать. Почему это так? Я понимаю, что наличие только одного диска не позволит справиться с отказом одного диска, но именно для этого и существуют различные схемы резервного копирования. То, что резервные копии не помогут, так это что-то вроде битрота.
Могу ли я использовать zfs на одном жестком диске с единственной целью предотвращения битрота? Если нет, что вы рекомендуете?
Вы можете использовать как ZFS, так и btrfs.
Обе из них являются файловыми системами с копированием при записи с обнаружением ошибок и корректировкой (если имеется достаточная избыточность для восстановления оригинальных данных – например, зеркальные диски или RAID-Z), прозрачной компрессией, снимками и т. д.
ZFS позволяет вам установить атрибут copies
в наборе данных для сохранения более одной копии файла – например, в ZFS вы можете выполнить zfs set copies=2 pool/dataset
, чтобы сказать ZFS хранить две копии всего в этом конкретном наборе данных – смотрите man zfsprops
и ищите copies=
. Я думаю, что btrfs имеет похожую функцию, но прошло много времени с тех пор, как я использовал btrfs, и я не могу найти это в документации.
Эти дополнительные копии обеспечивают избыточность для исправления ошибок (в случае битрота), но не защитят вас от сбоя диска. Для этого вам потребуется, по меньшей мере, зеркало vdev (т.е. RAID-1), или вам нужно делать регулярные резервные копии (но вы все равно должны это делать – RAID или технологии, подобные RAID, такие как ZFS или btrfs, НЕ являются заменой резервным копиям).
Резервное копирование может быть таким же простым, как использование zfs snapshot
и zfs send
/zfs receive
для отправки первоначальной, а затем инкрементной резервной копии в однодисковый пул zfs, подключенный по USB. Или на пул на другом компьютере через сеть. Даже использование zfs send
для хранения резервной копии в файлах на не-ZFS файловой системе лучше, чем ничего.
Если в вашем компьютере есть физическое пространство и оборудование для поддержки второго диска, вам следует его добавить. Вы можете сделать это, когда впервые создаете пул, или вы можете добавить зеркальный диск к любому однодисковому или зеркальному vdev в любое время с помощью zpool attach pool device new-device
.
ПРИМЕЧАНИЕ: важно использовать zpool attach
, а не zpool add
для этого. attach
добавляет зеркало к существующему диску в vdev, тогда как add
добавляет другой vdev к существующему пулу. Добавление однодискового vdev в существующий пул фактически создаст RAID-0 с другими vdev в пуле, подвергая риску ALL данные. Это довольно распространенная ошибка, и (если пул содержит любые RAID-Z vdev), единственное решение – создать резервную копию всего пула, уничтожить его, перезагрузить с нуля и восстановить. Если пул имеет только зеркальные или однодисковые vdev (т.е. без RAID-Z vdev), можно использовать zpool remove
, чтобы удалить случайно добавленный одиночный диск.
Я бы добавил к ответу @cas, что контрольные суммы также могут быть выполнены на уровне блоков с помощью dm-integrity, а затем вы можете использовать любую файловую систему поверх этого. Подобно контрольным суммам в btrfs, dm-integrity обеспечивает только обнаружение ошибок, поэтому вам нужен RAID, чтобы действительно исправлять ошибки. Вы можете сделать это вручную, поместив устройство целостности под каждую ногу RAID 1, используя integritysetup и mdadm, но это может быть немного сложно; новые версии LVM поддерживают создание LVM RAID с целостностью просто используя
lvcreate --type raidN --raidintegrity y
Как я уже сказал, вы можете затем поместить любую файловую систему поверх логического объема RAID, и LVM позаботится об обнаружении ошибок и их исправлении при чтении.
Я не думаю, что контрольные суммы файловой системы сильно помогают на современном диске. Старые IDE-диски могут отправлять поврежденные данные, но современные диски имеют контрольные суммы в аппаратном обеспечении диска и в передачах SCSI/SATA/SAS. Современные диски будут пытаться выполнить операции «повторного поиска» несколько раз, а затем пометят блок как поврежденный и отправят код ошибки. Таким образом, контрольная сумма файловой системы может обнаруживать ошибки памяти в блоках памяти, куда вы помещаете читаемые данные, но на этом все.
Ответ или решение
Файловая система с контрольными суммами: Обзор и Рекомендации
Когда вы выбираете файловую систему для одного жесткого диска с целью минимизации потерь хранилища при сохранении целостности данных, важно учитывать несколько ключевых моментов. Проблема "тихой коррупции данных" (или "битрота") становится особенно актуальной, и в этом контексте файловые системы, которые обеспечивают контрольные суммы, могут стать вашим спасением.
Основные Файловые Системы с Контрольными Суммами
-
ZFS:
- Преимущества: ZFS является мощной системой, которая использует контрольные суммы для каждого блока данных. Это позволяет не только обнаруживать, но и исправлять ошибки, если у вас есть достаточная избыточность (например, в режиме RAID-Z или зеркалировании).
- Использование на одном жестком диске: Хотя ZFS часто ассоциируется с конфигурациями на нескольких дисках, он может быть установлен и на одном диске. Важным моментом является то, что все преимущества, которые предоставляет ZFS (например, контрольные суммы и сжатие), будут доступны и при использовании одной дисковой системы. Однако, необходимо помнить, что потеря жесткого диска приведет к утрате данных. Лучший способ минимизировать риск – это регулярные резервные копии.
- Копирование данных: Вы можете использовать команду
zfs set copies=2 pool/dataset
, чтобы сохранять несколько копий файлов, что повысит защиту от битрота, но не убережет от механических сбоев диска.
-
Btrfs:
- Преимущества: Как и ZFS, Btrfs поддерживает контрольные суммы на уровне блоков и обеспечивает защиту от битрота. Эта файловая система также включает функции, такие как сжатие и моментальные снимки.
- Поддержка избыточности: В Btrfs также можно настроить количество копий при помощи
btrfs subvolume set-default
, аналогично ZFS. Однако, для полноценной защиты от ошибок требуются дополнительные дисковые массивы для коррекции ошибок.
Альтернативы: dm-integrity
Если вы ищете более специализированные решения, вы можете рассмотреть использование dm-integrity в комбинации с любой файловой системой. Эта технология предоставляет уровень контроля целостности на уровне блоков и может помочь в обнаружении ошибок. Однако, важно отметить, что dm-integrity предоставляет только обнаружение ошибок, поэтому для их исправления вам понадобятся массивы RAID.
- Настройка: Установка dm-integrity требует более сложной конфигурации, но она дает возможность создать соединение с RAID при помощи инструментов вроде
mdadm
. Это может вызывать сложности для пользователей, не знакомых с командной строкой, но тем не менее дает дополнительный уровень защиты.
Заключение
Использование файловой системы с контрольными суммами, таких как ZFS или Btrfs, является эффективным способом защиты от битрота на одном жестком диске. Оба варианта предоставляют множество функций, которые помогут вам поддерживать целостность данных. Однако, даже при использовании таких файловых систем, вы все равно должны делать регулярные резервные копии данных.
Нельзя забывать — никакое решение не может заменить резервное копирование данных. Поэтому наряду с использованием файловой системы с контрольными суммами, убедитесь, что у вас есть надежная стратегия резервного копирования. Это позволит вам избежать потерь данных в случае механических сбоев или других непредвиденных обстоятельств.