Я хотел бы создать конфигурацию RAID1 / BTRFS / Luks. На данный момент я обнаружил следующее:
Зашифрованная файловая система Btrfs может быть создана поверх подсистемы шифрования диска dm_crypt и уровня Linux Unified Key Setup (LUKS), который поддерживает множество стандартов шифрования. Однако этот подход лишает некоторых возможностей и преимуществ использования Btrfs на необработанных блочных устройствах, таких как автоматическая поддержка и обнаружение твердотельных дисков.
Как лучше всего реализовать это решение?
/dev/sda1 < 500 Gb
/dev/sdb1 < 500 Gb
/dev/md0 < RAID1 stripe < Luks < BTRFS < snapshots
Будет ли такая установка работать?
Я не вижу другого способа сделать это без потери возможностей моментальных снимков BTRFS. Я мог бы настроить рейд без mdadm с помощью btrfs, например:
mkfs.btrfs -m raid1 -d raid1 /dev/sda /dev/sdb
но затем я получил btrfs прямо наверху, где я могу отбрасывать только зашифрованные изображения luks. Даже если 1 бит изменен внутри изображения, это повлияет на снимки btrfs (иначе будет скопирован весь файл изображения снова).
Важно отметить, что если вы используете md для зеркалирования и создаете btrfs поверх него с помощью «-d single», вы потеряете возможность восстановления после ошибок bitrot (btrfs все равно их обнаружит)
Итак, лучшим решением для вашего случая будет ваш второй пример:
raw device -> LUKS -> btrfs RAID1 с устройств LUKS
кредит уже ответил за вас на часть TRIM / Discard, и мне нечего добавить туда
Однако этот подход лишает некоторых возможностей и преимуществ использования Btrfs на необработанных блочных устройствах, таких как автоматическая поддержка и обнаружение твердотельных дисков.
cryptsetup
поддерживает передачу запросов TRIM; вам просто нужно использовать аргумент --allow-discards
при выполнении cryptsetup open
, или используя discard
как вариант при использовании /etc/crypttab
. Сделайте это перед выполнением mkfs.btrfs
и вы увидите, что он обнаруживает SSD и включает TRIM. Вы также можете убедиться, что используете discard,ssd
как опции при дальнейшем монтировании файловой системы.
Даже если 1 бит изменен внутри изображения, это повлияет на снимки btrfs (иначе будет скопирован весь файл изображения снова).
BTRFS обнаружит любое повреждение битов в блоке данных / метаданных и исправит этот блок, используя другую копию (он не будет копировать файл). Снимки ссылаются на существующие блоки данных / метаданных и обычно не занимают лишнего места. Если впоследствии часть блока (часть файла) изменится, копия будет сделана и на нее будет ссылаться отдельно (файл не будет копироваться, если блок не содержит весь файл). Неизмененный блок не будет скопирован, будет только ссылка.