#!/bin/sh # We have no metadata nor instance parameters yet! # We built on top of tiny-cloud . /lib/tiny-cloud/common # archive orig /var, mount new var on top and restore orig var copy_and_mount() { local dev=$1 tar cf /tmp/var.tar /var 2>/dev/null mount -t xfs -o noatime "$dev" /var tar xf /tmp/var.tar -C / && rm -f /tmp/var.tar } setup_var() { local _devices="$(find /dev/xvd[a-z] /dev/sd[a-z] -maxdepth 0 2>/dev/null || true)" for d in $_devices; do # resolve to a valid block device dev="$(realpath "$d")" [ -b "$dev" ] || continue # already mounted mount | grep -q "$d" && continue case "$CLOUD" in aws) # on AWS look for sdx/xvdx if [ "$d" = "/dev/sdx" -o "$d" = "/dev/xvdx" ]; then # check volume for existing filesystem type=$(file -Lbs $d) if [[ "$type" =~ "XFS filesystem" ]]; then xfs_repair $d >/dev/null 2>&1 mount -t xfs -o noatime "$d" /var else mkfs.xfs -qf $d >/dev/null copy_and_mount "$d" fi add_once /etc/fstab "$d /var xfs defaults,noatime,nofail 0 2" log -i -t early info "mounted $d at /var" fi ;; nocloud) # Todo: should we try to mount a special tagged block device as /var ? return 0 ;; *) ewarn "Unsupported cloud: $CLOUD" return 1 ;; esac done }