Thank you.
On Tue, Jun 24, 2014 at 11:27 PM, Milan Broz <gmazyland@xxxxxxxxx> wrote:
On 06/24/2014 06:53 PM, Abhrajyoti Kirtania wrote:Sigh. Mkfs definitely cannot fix anything. too late here.
> HI Ondrej/ Milan, I have used gparted to resize the partition and
> able to create a new LUKS enabled partition with --new option using
> reencrypt tool. Though i had used reencrypt tool, after enabling the
> encryption, formatting (i.e mkfs.ext4) is needed to mount that
> volume. So i loss all the data present onto the partition.
> *I am wondering, Is there any way to enable encryption (in-place)
> without losing data from the partition with the help of> cryptsetup-reencrypt or any other option?*
Yes, there is a way. But you should really understand what you are doing
before blindly trying various parameters. All the tools are low level
tools and mistake means complete data loss.
So simple example how to enable encryption without data copy:
- the only requirement is to have fs which is able to shrink
for at least 4MB to create space for LUKS header.
1) Shrink fs. You can use trick to shrink to minimum.
2) reencrypt with reduce size
3) luksOpen device
4) resize fs to maximum
5) profit :)
Here is the example I just run on my VM. The test file is random
file just to prove data are intact (example is for ext4 fs):
1) Check test file checksum:
# mount /dev/sdb1 /mnt/tst
# sha256sum /mnt/tst/test
ccc803eaf55d9fee5ec4bba9f1ae56c88951ce506124ee25f6d938cc2dd22c7c /mnt/tst/test
# umount /mnt/tst
2) Reduce fs to minimum (I know it will provide at least 4M space I need for LUKS)
# resize2fs -M /dev/sdb1
resize2fs 1.42.7 (21-Jan-2013)
Resizing the filesystem on /dev/sdb1 to 137435 (1k) blocks.
The filesystem on /dev/sdb1 is now 137435 blocks long.
3) Reencrypt with data shift (4M is enough)
# cryptsetup-reencrypt --new --reduce-device-size 4M /dev/sdb1
WARNING: this is experimental code, it can completely break your data.Enter new passphrase:
Progress: 100.0%, ETA 00:00, 199 MiB written, speed 83.6 MiB/s
4) Mount new LUKS device
# cryptsetup luksOpen /dev/sdb1 sdb1_crypt
Enter passphrase for /dev/sdb1:
5) Resize fs to maximal size
# resize2fs /dev/mapper/sdb1_crypt
resize2fs 1.42.7 (21-Jan-2013)
Resizing the filesystem on /dev/mapper/sdb1_crypt to 203776 (1k) blocks.
The filesystem on /dev/mapper/sdb1_crypt is now 203776 blocks long.
6) Check that data is still there
# mount /dev/mapper/sdb1_crypt /mnt/tst
# sha256sum /mnt/tst/test
ccc803eaf55d9fee5ec4bba9f1ae56c88951ce506124ee25f6d938cc2dd22c7c /mnt/tst/test
If you use exact resize argument in step 2) and 3) you do not need step 5).
See man page for resize tool.
Milan
_______________________________________________ dm-crypt mailing list dm-crypt@xxxxxxxx http://www.saout.de/mailman/listinfo/dm-crypt