1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-10-29 16:23:49 +03:00

dm-integrity support

dm-integrity stores checksums of the data written to an
LV, and returns an error if data read from the LV does
not match the previously saved checksum.

Create a linear LV with a dm-integrity layer above it:

lvcreate --type integrity --integrity String [options]

Create a raid1 LV with a dm-integrity layer over each
raid image:

lvcreate --type raid1 --integrity y [options]

Add a dm-integrity layer to an existing linear LV,
or to each image of an existing raid1 LV:

lvconvert --integrity y LV

Remove the dm-integrity layer from a linear LV, or
from the images of a raid1 LV:

lvconvert --integrity n LV

Integrity metadata:

The --integrity String specifies if the dm-integrity
metadata (checksums) should be interleaved with data
blocks, or written to a separate external LV.

  --integrity external (default)
  Use integrity with metadata on a separate LV.
  Allows removing integrity from the LV later.

  --integrity y
  Same as integrity external.

  --integrity n
  Remove integrity (external metadata only.)

  --integrity internal
  Use integrity with metadata interleaved with
  data on the same LV.
  Only allowed with new linear LVs.
  Internal integrity cannot be removed from an LV.
  Around 1% of the LV size is used for integrity metadata.

Command variations:

lvcreate --type integrity -n Name -L Size VG
  [Uses integrity external, the default.]

lvcreate --integrity y|external -n Name -L Size VG
  [Uses type integrity, which is implied.]

lvcreate --integrity internal -n Name -L Size VG
  [Uses type integrity, which is implied.]

lvcreate --type raid1 --integrity y -m Num -n Name -L Size VG
  [Uses type integrity for each raid image.]

lvconvert --type integrity LV
  [Converts linear LV to type integrity.]

lvconvert --integrity y|external LV
  [Converts linear LV to type integrity, or each
   image to type integrity in a raid1 LV.]

Options:

  --integritymetadata LV
  Use the specified LV for external metadata.
  Allows specific device placement of metadata.
  Without this option, the command creates a
  hidden LV (with an _imeta suffix) to hold the
  metadata.  (Not usable with raid1+integrity.)

  --integritysettings String
  set dm-integrity parameters, e.g. to use a journal
  instead of bitmap, --integritysettings "mode=J".

Example:

$ lvcreate --integrity external -n lvex -L1G vg
$ lvs -a vg
  LV           VG Attr       LSize  Origin
  lvex         vg gwi-a-----  1.00g [lvex_iorig]
  [lvex_imeta] vg ewi-ao---- 12.00m
  [lvex_iorig] vg -wi-ao----  1.00g

$ lvcreate --integrity internal -n lvin -L1G vg
$ lvs -a vg
  LV           VG Attr       LSize Origin
  lvin         vg gwi-a----- 1.00g [lvin_iorig]
  [lvin_iorig] vg -wi-ao---- 1.00g

$ lvcreate --type raid1 --integrity y -m 1 -n lver -L1G vg
$ lvs -a vg
  LV                    VG Attr       LSize  Origin
  lver                  vg rwi-a-r---  1.00g
  [lver_rimage_0]       vg gwi-aor---  1.00g [lver_rimage_0_iorig]
  [lver_rimage_0_imeta] vg ewi-ao---- 12.00m
  [lver_rimage_0_iorig] vg -wi-ao----  1.00g
  [lver_rimage_1]       vg gwi-aor---  1.00g [lver_rimage_1_iorig]
  [lver_rimage_1_imeta] vg ewi-ao---- 12.00m
  [lver_rimage_1_iorig] vg -wi-ao----  1.00g
  [lver_rmeta_0]        vg ewi-aor---  4.00m
  [lver_rmeta_1]        vg ewi-aor---  4.00m
This commit is contained in:
David Teigland
2019-11-20 16:07:27 -06:00
parent ec71df6fec
commit 01d25f4faf
27 changed files with 2092 additions and 56 deletions

View File

@@ -1362,6 +1362,9 @@ static int _init_segtypes(struct cmd_context *cmd)
return 0;
#endif
if (!init_integrity_segtypes(cmd, &seglib))
return 0;
return 1;
}