From: Arno Wagner <arno@wagner.name>
To: dm-crypt@saout.de
Subject: Re: [dm-crypt] Filesystem corruption with LVM's pvmove onto an encrypted volume with LUKS2 and a sector size of 4096
Date: Thu, 21 Feb 2019 14:02:16 +0100 [thread overview]
Message-ID: <20190221130216.GA20021@tansi.org> (raw)
In-Reply-To: <39009205-57b3-b009-d256-0c1db64e9d80@linux.ibm.com>
Hi,
LUKS should still be using 512 Byte sectors. Any mismatch
there should just impact performance,
I suspect you have an offset problem and the sector-numbers
(used as initialization for each secor's encryption) are
shifted, expecially if this happens in plain mode as well.
Regards,
Arno
On Thu, Feb 21, 2019 at 13:03:51 CET, Ingo Franzki wrote:
> Hi,
>
> we just encountered an error when using LVM's pvmove command to move the data from an un-encrypted LVM physical volume onto an encrypted volume.
> After the pvmove has completed, the file system on the logical volume that resides on the moved physical volumes is corrupted.
>
> It seems to be related to a sector size of 4096 used with LUKS2. Once I use the default sector size (512) then the problem does not happen.
> It happens with LUKS2 and even plain mode, as soon as a sector size of 4096 is used. LUKS1 and the default sector size does not show the problem.
>
> Not sure if this is a problem in dm-crypt or LVM, or a combination of both.
>
> Here is how to reproduce (note the error messages on the very last command):
>
> # sudo dd if=/dev/zero of=loopbackfile1.img bs=500M count=1
> 1+0 records in
> 1+0 records out
> 524288000 bytes (524 MB, 500 MiB) copied, 2.32777 s, 225 MB/s
>
> # sudo dd if=/dev/zero of=loopbackfile2.img bs=500M count=1
> 1+0 records in
> 1+0 records out
> 524288000 bytes (524 MB, 500 MiB) copied, 1.89992 s, 276 MB/s
>
> # losetup -fP /root/loopbackfile1.img
>
> # losetup -fP /root/loopbackfile2.img
>
> # pvcreate /dev/loop0
> Physical volume "/dev/loop0" successfully created.
>
> # vgcreate LOOP_VG /dev/loop0
> Volume group "LOOP_VG" successfully created
>
> # lvcreate -L 300MB LOOP_VG -n LV /dev/loop0
> Logical volume "LV" created.
>
> # mkfs.ext4 /dev/mapper/LOOP_VG-LV
> mke2fs 1.44.1 (24-Mar-2018)
> Discarding device blocks: done
> Creating filesystem with 307200 1k blocks and 76912 inodes
> Filesystem UUID: 344289a3-e251-4d88-b03d-a71a4be2a8ec
> Superblock backups stored on blocks:
> 8193, 24577, 40961, 57345, 73729, 204801, 221185
>
> Allocating group tables: done
> Writing inode tables: done
> Creating journal (8192 blocks): done
> Writing superblocks and filesystem accounting information: done
>
> # mount /dev/mapper/LOOP_VG-LV /mnt
>
> # cryptsetup luksFormat --type luks2 --sector-size 4096 /dev/loop1
>
> WARNING!
> ========
> This will overwrite data on /dev/loop1 irrevocably.
>
> Are you sure? (Type uppercase yes): YES
> Enter passphrase for /dev/loop1: loop
> Verify passphrase: loop
>
> # cryptsetup luksOpen /dev/loop1 enc-loop
> Enter passphrase for /dev/loop1: loop
>
> # pvcreate /dev/mapper/enc-loop
> Physical volume "/dev/mapper/enc-loop" successfully created.
>
> # vgextend LOOP_VG /dev/mapper/enc-loop
> Volume group "LOOP_VG" successfully extended
>
> # pvs
> PV VG Fmt Attr PSize PFree
> /dev/loop0 LOOP_VG lvm2 a-- 496.00m 196.00m
> /dev/mapper/enc-loop LOOP_VG lvm2 a-- 492.00m 492.00m
>
> # pvmove /dev/loop0 /dev/mapper/enc-loop
> /dev/loop0: Moved: 30.67%
> /dev/loop0: Moved: 100.00%
>
> # pvs
> /dev/LOOP_VG/LV: read failed after 0 of 1024 at 0: Invalid argument
> /dev/LOOP_VG/LV: read failed after 0 of 1024 at 314507264: Invalid argument
> /dev/LOOP_VG/LV: read failed after 0 of 1024 at 314564608: Invalid argument
> /dev/LOOP_VG/LV: read failed after 0 of 1024 at 4096: Invalid argument
> PV VG Fmt Attr PSize PFree
> /dev/loop0 LOOP_VG lvm2 a-- 496.00m 496.00m
> /dev/mapper/enc-loop LOOP_VG lvm2 a-- 492.00m 192.00m
>
> In case the filesystem of the logical volume is not mounted at the time of pvmove, it gets corrupted anyway, but you only see errors when trying to mount it.
>
> --
> Ingo Franzki
> eMail: ifranzki@linux.ibm.com
> Tel: ++49 (0)7031-16-4648
> Fax: ++49 (0)7031-16-3456
> Linux on IBM Z Development, Schoenaicher Str. 220, 71032 Boeblingen, Germany
>
> IBM Deutschland Research & Development GmbH / Vorsitzender des Aufsichtsrats: Matthias Hartmann
> Geschäftsführung: Dirk Wittkopp
> Sitz der Gesellschaft: Böblingen / Registergericht: Amtsgericht Stuttgart, HRB 243294
> IBM DATA Privacy Statement: https://www.ibm.com/privacy/us/en/
>
> _______________________________________________
> dm-crypt mailing list
> dm-crypt@saout.de
> https://www.saout.de/mailman/listinfo/dm-crypt
--
Arno Wagner, Dr. sc. techn., Dipl. Inform., Email: arno@wagner.name
GnuPG: ID: CB5D9718 FP: 12D6 C03B 1B30 33BB 13CF B774 E35C 5FA1 CB5D 9718
----
A good decision is based on knowledge and not on numbers. -- Plato
If it's in the news, don't worry about it. The very definition of
"news" is "something that hardly ever happens." -- Bruce Schneier
next prev parent reply other threads:[~2019-02-21 13:02 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-21 12:03 [dm-crypt] Filesystem corruption with LVM's pvmove onto an encrypted volume with LUKS2 and a sector size of 4096 Ingo Franzki
2019-02-21 13:02 ` Arno Wagner [this message]
2019-02-21 13:33 ` Ingo Franzki
2019-02-21 14:04 ` Ondrej Kozina
2019-02-21 15:45 ` Ingo Franzki
2019-02-21 17:21 ` Arno Wagner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190221130216.GA20021@tansi.org \
--to=arno@wagner.name \
--cc=dm-crypt@saout.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.