Encrypted LVM and systemd unit file to mount a file system - HaymonEdmur/DockerConfiguration GitHub Wiki

Encrypt device

dd if=/dev/urandom of=/dev/sdb bs=512 count=20480
cryptsetup luksFormat --hash=sha512 --key-size=512 --cipher=aes-xts-plain64 --verify-passphrase /dev/sdb

Open device for LVM physical volume initialization

cryptsetup luksOpen /dev/sdb sdb_crypt

Above command will create a device file which can be used for pvcreate command

ls -l /dev/mapper/sdb_crypt
pvcreate /dev/mapper/sdb_crypt
vgcreate database_vg /dev/mapper/sdb_crypt
lvcreate -n mysql -L10G database_vg
mkfs.ext4 /dev/database_vg/mysql 

Systemd Unit file to standard mounting

mkdir /database/mysql
mount /dev/database_vg/mysql  /database/mysql 

Add unit file in /etc/systemd/system

The mount dirs must be in file name ( /database/mysql = database-mysql.mount )

cat database-mysql.mount
[Unit]
Description=MySQL File System

[Mount]
What=/dev/database_vg/mysql
Where=/database/mysql
Type=ext4

[Install]
WantedBy=multi-user.target