Skip to content

Instantly share code, notes, and snippets.

@sandys
Last active February 17, 2017 07:06
Show Gist options
  • Save sandys/0d336091490dacc5e1f1 to your computer and use it in GitHub Desktop.
Save sandys/0d336091490dacc5e1f1 to your computer and use it in GitHub Desktop.
[default]
region = ap-southeast-1
s3 =
max_concurrent_requests = 20
max_queue_size = 10000
multipart_threshold = 64MB
multipart_chunksize = 16MB
use_accelerate_endpoint = true
#aws configure
#aws s3 sync s3://bucket-name dest
#check partitions
cat /proc/partitions
apt update
apt install parted xfsprogs
create a xfs disk as a raw disk
add it to the configuration profile
sudo parted -s /dev/xvdb mklabel gpt
sudo parted -s /dev/xvdb mkpart build1 xfs 1M 100%
#parted -s /dev/sdb mklabel gpt mkpart primary ext4 0% 100%
sudo mkfs.xfs -d su=64k,sw=3 /dev/xvdb1
#mkfs.ext4 -L docker /dev/sdb1
#change fstab. most likely the swap NEEDs to be on sdb
#/dev/sda / ext4 noatime,errors=remount-ro 0 1
#/dev/sdc none swap sw
#/dev/xvdb1 /docker xfs rw,relatime,attr2,inode64,noquota 0 1
#move /var to the new partition
#http://unix.stackexchange.com/questions/131311/moving-var-home-to-separate-partition
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt-get update
sudo apt-get install docker-engine
cd /var
cp -ax * /data
cd /
mv var var.old
umount /dev/sdb1
mkdir /var
mount /dev/sdb1 /var
#edit fstab
### DIRECT LVM
apt-get install lvm2
parted -s /dev/sdb mklabel gpt
parted -s /dev/sdb mklabel gpt mkpart primary ext4 0% 100%
pvcreate /dev/sdb1
vgcreate direct-lvm /dev/sdb1
lvcreate --wipesignatures y -n homedata direct-lvm -l 50%VG
#lvcreate --wipesignatures y -n data direct-lvm -l 45%VG
sudo lvcreate --wipesignatures y -l 45%VG --thinpool data direct-lvm
#lvcreate --wipesignatures y -n metadata direct-lvm -l 5%VG
lvreduce --size 12G direct-lvm/metadata
dd if=/dev/zero of=/dev/direct-lvm/metadata bs=1M count=10
#install docker normally
#systemctl status docker to get location of docker.service
ExecStart=/usr/bin/docker daemon -H fd:// \
--storage-opt dm.fs=ext4 \
--storage-opt dm.datadev=/dev/direct-lvm/data \
--storage-opt dm.metadatadev=/dev/direct-lvm/metadata
systemctl stop docker.service
systemctl daemon-reload
systemctl start docker
#/etc/systemd/system/docker.service.d/override.conf
[Service]
EnvironmentFile=-/etc/default/docker
ExecStart=/usr/bin/docker -d $DOCKER_OPTS -H fd://
MountFlags=slave
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
DOCKER_OPTS="--storage-driver=overlay" in /etc/default/docker
sudo iptables -t filter -F DOCKER-ISOLATION
ExecStart=/usr/bin/docker daemon -l debug -H fd:// --storage-driver=devicemapper --storage-opt dm.fs=xfs --storage-opt dm.thinpooldev=direct--lvm-data-tpool --userland-proxy=false
#the name of the pool is under ls /dev/mapper
#/lib/systemd/system/docker.service
# sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
ExecStart=/usr/bin/dockerd -H fd:// --storage-driver=overlay --graph="/docker"
#reboot
@sandys
Copy link
Author

sandys commented Apr 11, 2016

[Service]
Type=notify
ExecStart=/usr/bin/docker daemon -l debug -H fd:// --storage-driver=devicemapper --storage-opt dm.fs=ext4 --storage-opt dm.datadev=/dev/direct-lvm/data --storage-opt dm.metadatadev=/dev/direct-lvm/metadata --userland-proxy=false
MountFlags=slave
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0

@sandys
Copy link
Author

sandys commented Apr 11, 2016

sudo mkdir /var/run/sshd
sudo mkdir /var/log/nginx
sudo mkdir /var/run/stunnel4
sudo chown -R stunnel4:stunnel4 /var/run/stunnel4
sudo rm /var/run/rsyslogd.pid

sudo mkdir /var/run/app
sudo chown -R deployer:deployer /var/run/app

@sandys
Copy link
Author

sandys commented May 11, 2016

recover from errors like

Error starting daemon: error initializing graphdriver: devmapper: Unable to take ownership of thin-pool (direct--lvm-data-tpool) that already has used data blocks

"devmapper: Unknown device"

etc. and creating a proper thinpool

sudo apt-get remove docker-engine
sudo rm -rf /var/lib/docker
sudo lvremove -f direct-lvm/data
sudo lvcreate --wipesignatures y -n data direct-lvm -l 45%VG
sudo lvcreate --wipesignatures y -n metadata direct-lvm -L 12G #limited to 16GB
sudo lvconvert --type thin-pool --poolmetadata direct-lvm/metadata direct-lvm/data
admin@ip-172-31-22-199:~/docker-setup$ sudo dmsetup status
direct--lvm-data-tpool: 0 483172352 thin-pool 1 435/3145728 179/3774784 - rw no_discard_passdown queue_if_no_space
direct--lvm-data_tdata: 0 483172352 linear
direct--lvm-data_tmeta: 0 25165824 linear
direct--lvm-data: 0 483172352 linear
direct--lvm-homedata: 0 536862720 linear

direct--lvm-data-tpool is your thinpool

sudo apt-get install docker-engine
change your service file

@sandys
Copy link
Author

sandys commented May 13, 2016

when moving from one aws to another.

sudo dmsetup ls
sudo lvscan
ACTIVE '/dev/direct-lvm/homedata' [256.00 GiB] inherit
inactive '/dev/direct-lvm/data' [230.39 GiB] inherit

sudo vgchange -ay direct-lvm

sudo lvchange -a y /dev/direct-lvm/data
sudo lvconvert --repair direct-lvm/data

@sandys
Copy link
Author

sandys commented May 19, 2016

[Service]
Type=notify
ExecStart=/usr/bin/docker daemon -l debug -H fd:// --storage-driver=devicemapper --storage-opt dm.fs=xfs --storage-opt dm.thinpooldev=/dev/mapper/direct--lvm-data-tpool --userland-proxy=false
MountFlags=slave
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0

@sandys
Copy link
Author

sandys commented May 19, 2016

sudo mkdir /homedata
sudo mount /dev/direct-lvm/homedata /homedata

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment