containerd/snapshots/devmapper
Maksym Pavlenko 95f0a4903c
devmapper: rollback thin devices on error
Signed-off-by: Maksym Pavlenko <makpav@amazon.com>
2019-02-21 17:40:10 -08:00
..
dmsetup devmapper: add linux tags, fix build 2019-02-21 16:26:46 -08:00
losetup devmapper: add linux tags, fix build 2019-02-21 16:26:46 -08:00
config_test.go devmapper: don't create or reload thin-pool from snapshotter 2019-02-21 16:26:46 -08:00
config.go devmapper: don't create or reload thin-pool from snapshotter 2019-02-21 16:26:46 -08:00
device_info.go devmapper: add linux tags, fix build 2019-02-21 16:26:46 -08:00
metadata_test.go devmapper: add linux tags, fix build 2019-02-21 16:26:46 -08:00
metadata.go devmapper: add linux tags, fix build 2019-02-21 16:26:46 -08:00
pool_device_test.go devmapper: don't create or reload thin-pool from snapshotter 2019-02-21 16:26:46 -08:00
pool_device.go devmapper: rollback thin devices on error 2019-02-21 17:40:10 -08:00
README.md devmapper: add README and minor fixes 2019-02-21 16:25:55 -08:00
snapshotter_test.go devmapper: don't create or reload thin-pool from snapshotter 2019-02-21 16:26:46 -08:00
snapshotter.go devmapper: rollback thin devices on error 2019-02-21 17:40:10 -08:00

Devmapper snapshotter

Devmapper is a containerd snapshotter plugin that stores snapshots in ext4-formatted filesystem images in a devicemapper thin pool.

Setup

To make it work you need to prepare thin-pool in advance and update containerd's configuration file. This file is typically located at /etc/containerd/config.toml.

Here's minimal sample entry that can be made in the configuration file:

[plugins]
  ...
  [plugins.devmapper]
    pool_name = "containerd-pool"
    base_image_size = "128MB"
  ...

The following configuration flags are supported:

  • root_path - a directory where the metadata will be available (if empty default location for containerd plugins will be used)
  • pool_name - a name to use for the devicemapper thin pool. Pool name should be the same as in /dev/mapper/ directory
  • data_device - path to the data volume that should be used by the thin pool
  • meta_device - path to the metadata volume that should be used by the thin-pool
  • data_block_size - the size of allocation chunks in data file, between 128 sectors (64KB) and and 2097152 sectors (1GB) and a multiple of 128 sectors (64KB)
  • base_image_size - defines how much space to allocate when creating the base device

Pool name and base image size are required snapshotter parameters.

Run

Give it a try with the following commands:

ctr images pull --snapshotter devmapper docker.io/library/hello-world:latest
ctr run --snapshotter devmapper docker.io/library/hello-world:latest test

Requirements

The devicemapper snapshotter requires dmsetup command line tool to be installed and available on your computer. On Ubuntu, it can be installed with apt-get install dmsetup command.