Или, на языке оригинала - integrity check. Из личного опыта. Партиция на HDD с 2015 года - закриптована dm-crypt type=luks. В контейнере, как в матрёшке, файловая система btrfs с subvolumes /home, /root и /var. Как легко догадаться, работает без единого сбоя на протяжении 3 последних лет. И будет дальше работать. Code: blitz@inode /etc % sudo cat crypttab :( [sudo] password for blitz: # Configuration for encrypted block devices. # See crypttab(5) for details. home PARTUUID=7e0a016b-6006-4b0b-88ec-82fb876c5f4a none luks,cipher=aes-xts-plain64:sha512,size=512,timeout=180 Code: blitz@inode /etc % cat fstab # Static information about the filesystems. # See fstab(5) for details. # <file system> <dir> <type> <options> <dump> <pass> # /dev/sda5 LABEL=Linux PARTUUID=ххх-ххх-ххх-ххх / f2fs rw,noatime,lazytime,background_gc=on,no_heap,inline_xattr,inline_data,inline_dentry,flush_merge,extent_cache,mode=adaptive,active_logs=6 0 0 # /dev/sda2 PARTUUID=ххх-ххх-ххх-ххх /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 2 # /dev/mapper/home LABEL=Root UUID=ххх-ххх-ххх-ххх /root btrfs rw,relatime,autodefrag,space_cache,subvol=root 0 0 # /dev/mapper/home LABEL=Home UUID=ххх-ххх-ххх-ххх /home/blitz btrfs rw,relatime,autodefrag,space_cache,subvol=home 0 0 # /dev/mapper/home LABEL=Var UUID=ххх-ххх-ххх-ххх /var btrfs rw,relatime,autodefrag,space_cache,subvol=var 0 0 # Windows Users PARTUUID=ххх-ххх-ххх-ххх /home/blitz/Users ntfs-3g rw,nosuid,nodev,noatime,nodiratime,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096,async,big_writes 0 0 В декабре 2017, вышла версия LUKS2. Важное и главное в новой версии: Поддержка размера логических секторов 4096 байт. Прежнее, 512 байт снижало скорость с современными носителями от 1 Терабайт и более. Поддержка integrity check - целостности данных, с использование journal операций записи на девайсе, HDD или SDD. Реализовано с алгоритмом hmac-sha512, одним из самых криптоустойчивых на сегодня. Итак, спустя добрых полгода после выхода кардинально новой версии, делаем backup HDD. С размером сектора 4096 байт и проверкой on-the-fly целостности данных. Code: blitz@inode ~ % sudo cryptsetup -v --cipher aes-xts-plain64 --key-size 512 --hash sha512 --use-random --verify-passphrase --type luks2 --integrity hmac-sha512 --sector-size 4096 --label Backup --pbkdf argon2id --pbkdf-force-iterations 16 --pbkdf-memory 1048576 --pbkdf-parallel 1 --timeout 60 luksFormat /dev/sdd1 WARNING! ======== This will overwrite data on /dev/sdd1 irrevocably. Are you sure? (Type uppercase yes): YES Enter passphrase for /dev/sdd1: Verify passphrase: Wiping device to initialize integrity checksum. You can interrupt this by pressing CTRL+c (rest of not wiped device will contain invalid checksum). Progress: 24.3%, ETA 1049:00, 911681 MiB written, speed 45.2 MiB/s Process длительный. HDD 4TB - сутки. --type luks2 - выбирается новый luks2 формат --integrity hmac-sha512 - инициализируется check-sum всего HDD, поэтому длительный процесс --sector-size 4096 - размер сектора для объёмных носителей инфо Завтра, форматирование закончится и начнётся rsync на криптованный LUKS2 HDD контейнер. С btrfs sub-volumes, для ясности и удобства поддержания архива в должном порядке. Итак, снова к нашим баранам. Проверка 24-часового форматирования LUKS2 с data integrity. Code: blitz@inode ~ % sudo cryptsetup luksDump /dev/sdd1 :( [sudo] password for blitz: LUKS header information Version: 2 Epoch: 3 Metadata area: 12288 bytes UUID: xxx-xxx-xxx-xxx-xxx Label: Backup Subsystem: (no subsystem) Flags: (no flags) Data segments: 0: crypt offset: 4194304 [bytes] length: (whole device) cipher: aes-xts-plain64 sector: 4096 [bytes] integrity: hmac(sha512) Keyslots: 0: luks2 Key: 1024 bits Priority: normal Cipher: aes-xts-plain64 PBKDF: argon2id Time cost: 16 Memory: 1048576 Threads: 1 Salt: 7f 5a 64 50 c5 6a 13 51 24 10 a2 a7 10 c6 5b 05 e4 87 09 aa c2 80 40 42 39 41 ef 23 b3 e7 92 5d AF stripes: 4000 Area offset:32768 [bytes] Area length:512000 [bytes] Digest ID: 0 Tokens: Digests: 0: pbkdf2 Hash: sha256 Iterations: 1000 Salt: b7 41 69 4f 2b 72 1b 63 93 86 81 34 bb 8b 78 75 04 bc da 06 6e f2 3b a2 d6 ce 78 77 00 5d d8 69 Digest: 42 b5 1a b2 7a 38 e7 e2 44 3e ec 1b 93 ae 36 fb 71 e4 28 f6 ed e1 a3 f9 62 ec 2d 52 56 15 0e e7 Нра. Просто и безукоризненно, арийский стандарт качества. Теперь, открываем криптованный /dev/sdd1 и форматируем его в btrfs. С sub-volumes. Интересный момент. Kлавиша Enter на самой клавиатуре и клавиша Enter на цифровом со стрелками справа - суть совсем разные коды для cryptsetup. Code: blitz@inode ~ % sudo cryptsetup open /dev/sdd1 backup [sudo] password for blitz: Enter passphrase for /dev/sdd1: No key available with this passphrase. Enter passphrase for /dev/sdd1: sudo cryptsetup open /dev/sdd1 backup 47.34s user 0.62s system 49% cpu 1:36.44 total blitz@inode ~ % lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 ntfs Recovery 12DC681DDC67F97D ├─sda2 vfat xxx-xxx-xxx-xxx /boot ├─sda3 ├─sda4 ntfs xxx-xxx-xxx-xxx └─sda5 f2fs Linux xxx-xxx-xxx-xxx / sdb ├─sdb1 ntfs Users B4069F43069F0610 /home/blitz/Users └─sdb2 crypto_LUKS xxx-xxx-xxx-xxx └─home btrfs Home xxx-xxx-xxx-xxx /home/blitz/backup sdd └─sdd1 crypto_LUKS Backup xxx-xxx-xxx-xxx └─backup_dif └─backup Дальше - проще и быстрей. монтируется /dev/mapper/backup и форматируется btrfs. Созданная btrfs партиция монтируется. С опцией nodatacow. Многие, по опыту предпочитают именно эту опцию. Code: blitz@inode /tmp % mkdir /tmp/backup blitz@inode /tmp % sudo mount -o nodatacow /dev/mapper/backup /tmp/backup И создаются sub-volumes для архивации данных. Code: blitz@inode /tmp % sudo btrfs subvolume create /tmp/backup/data :( Create subvolume '/tmp/backup/data' blitz@inode /tmp % sudo btrfs subvolume create /tmp/backup/documents Create subvolume '/tmp/backup/documents' blitz@inode /tmp % sudo btrfs subvolume create /tmp/backup/music Create subvolume '/tmp/backup/music' blitz@inode /tmp % sudo btrfs subvolume create /tmp/backup/pictures Create subvolume '/tmp/backup/pictures' blitz@inode /tmp % sudo btrfs subvolume create /tmp/backup/videos Create subvolume '/tmp/backup/videos' ВСЁ! сделано.
Злободневно - как сегодня, так и завтра. Рекомендуется. Требуется даже - сделать компиляцию, для личного использования, программы dm-crypt с CPU поддержкой HW/hardware реализации ЦПУ алгоритма AES. CPU intel/amd aes-ni instructions поддерживают следующие процессоры: https://en.wikipedia.org/wiki/AES_instruction_set#Intel