Skip to content

Instantly share code, notes, and snippets.

@ArseniyShestakov
Last active November 28, 2016 00:31
Show Gist options
  • Save ArseniyShestakov/42b9f76bee0a53a172de07e91e0d2700 to your computer and use it in GitHub Desktop.
Save ArseniyShestakov/42b9f76bee0a53a172de07e91e0d2700 to your computer and use it in GitHub Desktop.
Setup
#!/bin/sh
PREREQ="lvm2"
prereqs()
{
echo "$PREREQ"
}
case $1 in
prereqs)
prereqs
exit 0
;;
esac
if [ ! -x /usr/sbin/cache_check ]; then
exit 0
fi
. /usr/share/initramfs-tools/hook-functions
copy_exec /usr/sbin/cache_check
manual_add_modules dm_cache dm_cache_mq dm_cache_smq dm_persistent_data dm_bufio
#!/bin/sh
PREREQ="lvm2"
prereqs()
{
echo "$PREREQ"
}
case $1 in
prereqs)
prereqs
exit 0
;;
esac
if [ ! -x /usr/sbin/thin_check ]; then
exit 0
fi
. /usr/share/initramfs-tools/hook-functions
copy_exec /usr/sbin/thin_check
manual_add_modules dm_thin_pool
dm_thin_pool
dm_cache
dm_cache_mq
dm_cache_smq
dm_persistent_data
dm_bufio
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
# wiping drive
openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt < /dev/zero | pv -pterb > /dev/sdf1
openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt < /dev/zero | pv -pterb > /dev/sdf2
openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt < /dev/zero | pv -pterb > /dev/sdf3
openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt < /dev/zero | pv -pterb > /dev/sdf4
# initialize raid1 arrays
mdadm --create /dev/md/250gb --name=250gb --level=1 --raid-devices=2 /dev/sdf1 missing
mdadm --create /dev/md/500gb --name=500gb --level=1 --raid-devices=2 /dev/sdf2 missing
mdadm --create /dev/md/160gb --name=160gb --level=1 --raid-devices=2 /dev/sdf3 missing
mdadm --create /dev/md/90gb --name=90gb --level=1 --raid-devices=2 /dev/sdf4 missing
# setting encrypted drives
cryptsetup luksFormat -c aes-xts-plain -s 256 -h sha256 /dev/md/250gb
cryptsetup luksFormat -c aes-xts-plain -s 256 -h sha256 /dev/md/500gb
cryptsetup luksFormat -c aes-xts-plain -s 256 -h sha256 /dev/md/160gb
cryptsetup luksFormat -c aes-xts-plain -s 256 -h sha256 /dev/md/90gb
# open them
cryptsetup luksOpen -c aes-xts-plain -s 256 -h sha256 /dev/md/250gb 250gb_crypt
cryptsetup luksOpen -c aes-xts-plain -s 256 -h sha256 /dev/md/500gb 500gb_crypt
cryptsetup luksOpen -c aes-xts-plain -s 256 -h sha256 /dev/md/160gb 160gb_crypt
cryptsetup luksOpen -c aes-xts-plain -s 256 -h sha256 /dev/md/90gb 90gb_crypt
## build lvm
pvcreate /dev/mapper/250gb_crypt
pvcreate /dev/mapper/500gb_crypt
pvcreate /dev/mapper/160gb_crypt
pvcreate /dev/mapper/90gb_crypt
vgcreate clvmone /dev/mapper/250gb_crypt /dev/mapper/500gb_crypt /dev/mapper/160gb_crypt
vgcreate clvmtwo /dev/mapper/90gb_crypt
lvcreate -i3 -l 100%FREE -n cdatalv clvmone /dev/mapper/250gb_crypt /dev/mapper/500gb_crypt /dev/mapper/160gb_crypt
lvcreate -i2 -l 100%FREE -n crootlv clvmone /dev/mapper/250gb_crypt /dev/mapper/500gb_crypt
lvcreate -l 100%FREE -n cxtra clmone
# Setup filesystems
mkfs.btrfs /dev/clvmone/cdatalv
mkfs.ext4 /dev/clvmone/crootlv
mkfs.ext4 /dev/clvmone/cxtra
# Setup other FS
lvcreate -l 100%FREE -n cbackuplv ctrashvg
mkfs.ext4 /dev/ctrashvg/cbackuplv
# Cache
cryptsetup luksFormat -c aes-xts-plain -s 256 -h sha256 /dev/sdc3
cryptsetup luksOpen --allow-discards -c aes-xts-plain -s 256 -h sha256 /dev/sdc3 cache_crypt
pvcreate /dev/mapper/cache_crypt
vgextend cmainvg /dev/mapper/cache_crypt
# Enable caching
lvcreate --type cache --cachepolicy mq --cachemode writeback -L 10G -n crootlv_cachepool cmainvg/crootlv /dev/mapper/cache_crypt
lvcreate --type cache --cachepolicy mq --cachemode writeback -l 100%FREE -n cdatalv_cachepool cmainvg/cdatalv /dev/mapper/cache_crypt
# set writemostly for 1TB drive
mdadm /dev/md/160gb --grow --bitmap=none
mdadm /dev/md/160gb --grow --bitmap=internal --write-behind=4096
mdadm /dev/md/250gb --grow --bitmap=none
mdadm /dev/md/250gb --grow --bitmap=internal --write-behind=4096
mdadm /dev/md/500gb --grow --bitmap=none
mdadm /dev/md/500gb --grow --bitmap=internal --write-behind=4096
ls -lia /sys/block/md*/md/dev-sdf*/state
echo writemostly >
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment