Будьте осторожны с такими предположениями относительно Linux. Linux был оптимизирован для создания впечатления скорости в отношении файловых систем вместо оптимизации реальной скорости.
Причина создания впечатления высокой скорости в том, что данные файла (во многих случаях) не находятся на диске, когда программа записи завершает работу. Другими словами, вы не можете сказать, что вы измерили своим тестом, поскольку вы не знаете состояния файловой системы после завершения работы dd.
Если вы хотите получить сопоставимые результаты, вам нужно создать тест производительности, который будет защищен от названной проблемы, поэтому вам нужно будет записать файл, размер которого по крайней мере вдвое превышает размер локальной оперативной памяти машины.
Из часто задаваемых вопросов LUKShttps://gitlab.com/cryptsetup/cryptsetup/wikis/FrequentlyAskedQuestions#2-setup
2.5 Can I encrypt an already existing, non-empty partition to use LUKS?
There is no converter, and it is not really needed. The way to do
this is to make a backup of the device in question, securely wipe the device (as LUKS device initialization does not clear away old data),
do a luksFormat, optionally overwrite the encrypted device, create a
new filesystem and restore your backup on the now encrypted device.
Also refer to sections "Security Aspects" and "Backup and Data
Recovery".For backup, plain GNU tar works well and backs up anything likely to be in a filesystem.*
Однако вы можете изучитьhttps://johndoe31415.github.io/luksipc/usage.html#plain-to-luks-conversion"Преобразование простого в LUKS", которое может удовлетворить ваши требования. Отказ от ответственности :Я никогда не пробовал это, я не знаю, работает ли это, и, похоже, проект не обновлялся с 2015 года.
Да, есть способ. Утилита LUKS cryptsetup
содержит команду reencrypt , которую вы также можете использовать для шифрования существующего незашифрованного корневого раздела, то есть без разрушения существующей файловой системы.
Тем не менее, перед выполнением такого преобразования вы все равно должны сделать резервную копию своих данных. Конечно, всегда следует выполнять резервное копирование по регулярному расписанию из-за возможного сбоя оборудования и т. д. Таким образом, это своего рода избыточный совет.
Для переключения существующей корневой файловой системы с незашифрованной на зашифрованную требуется несколько шагов:
df /
,найдите UUID файловой системы с помощью blkid
и сохраните его где-нибудь blkid
и найдите UUID)e2fsck -f /dev/sdXY
resize2fs /dev/sdXY $smallersizeinGiB_G
(, вам нужно уменьшить ее как минимум на 32 МБ)cryptsetup reencrypt --encrypt /dev/sdXY --reduce-device-size 32M
cryptsetup open /dev/sdXY root
resize2fs /dev/mapper/root
/mnt/root
/mnt/root
и связать -смонтировать псевдо файловые системы /dev
, /sys
, /proc
в /mnt/root
. chroot /mnt/root /bin/bash
/etc/default/grub
или другом эквивалентном месте, например. когда ваш дистрибутив использует dracut (, что, скорее всего, ), вам нужно добавитьrd.luks.uuid=$UUID_OF_LUKS_DEVICE
(cf. blkid
, обратите внимание, что этот UUID отличается от корневой файловой системы ), если у вас установлен selinux, вы должны добавить enforcing=0
(, а затем удалить его )из-за всех правок touch /mnt/root/.autorelabel
grub2-mkconfig -o /boot/.../grub...cfg
dracut -f /boot/initramfs....img kernelversion
cryptsetup close root
Как видите, шагов много, т. е. есть некоторый потенциал для внесения ошибок. Таким образом, возможно, было бы проще просто переустановить и восстановить резервную копию (, например. конфигурационные файлы и $HOME
).
Кроме того, по моему опыту на 2020 год, cryptsetup reencrypt
работает относительно медленно, поэтому может быть быстрее просто cryptsetup luksFormat
устройство и восстановление резервной копии.
Если у вас есть файловая система XFS, вы не можете просто сжать ее,потому что XFS не поддерживает это с 2020 года. Таким образом, вам нужно fstransform
его, прежде чем вы сможете сжать его. С преобразованной файловой системой у вас есть еще один uuid, о котором нужно позаботиться. Это означает либо изменить UUID новой файловой системы на UUID старой. Или обновите UUID файловой системы в /mnt/root/etc/fstab
.
С дистрибутивом на основе dracut вам не нужно создавать /etc/crypttab
, другой дистрибутив может потребовать его (также перед обновлением initramfs, потому что его может потребоваться включить туда ).