#!/bin/bash # Script for LVM-resize. Version 0.1 # Usage: ./resize.sh LV-Partition-name Size(GB) VolumeGroupName LOG_FILE_NAME if [ -z "${1}" ]; then LV_NAME="tmp" else LV_NAME="${1}" fi if [ -z "${2}" ]; then SIZE="2" else SIZE="${2}" fi if [ -z "${3}" ]; then VG_NAME="system" else VG_NAME="${3}" fi if [ -z "${4}" ]; then LOG_FILE="~/log-resize.log" else LOG_FILE="${4}" fi echo "We would extend ${VG_NAME}-${LV_NAME} for ${SIZE} GiB." echo "Note: If you have any problem - check ${LOG_FILE}" echo "[y/n]" read AGREE if [ "${AGREE}" = "y" ]; then vgscan echo "Umounting ${VG_NAME}-${LV_NAME}" > ${LOG_FILE} umount /dev/mapper/${VG_NAME}-${LV_NAME} >> ${LOG_FILE} 2>&1 || echo "[Failed]: Cannot umount ${VG_NAME}-${LV_NAME}" echo >> ${LOG_FILE} echo "Resizing LV-partition" >> ${LOG_FILE} lvresize -L +${SIZE}G -v /dev//${VG_NAME}/${LV_NAME} >> ${LOG_FILE} 2>&1 || echo "[Failed]: Cannot resize ${VG_NAME}-${LV_NAME}" echo >> ${LOG_FILE} echo "Turning off journal" >> ${LOG_FILE} tune2fs -O ^has_journal /dev/${VG_NAME}/${LV_NAME} >> ${LOG_FILE} 2>&1 || echo "[Failed]: Cannot turn off journal" echo >> ${LOG_FILE} echo "Checking filesystem:" >> ${LOG_FILE} e2fsck -f /dev/mapper/${VG_NAME}-${LV_NAME} echo >> ${LOG_FILE} echo "Resizing fs" >> ${LOG_FILE} resize2fs -p /dev/${VG_NAME}/${LV_NAME} >> ${LOG_FILE} 2>&1 || echo "[Failed]: resize2fs failed" echo >> ${LOG_FILE} echo "Turning on journal" >> ${LOG_FILE} tune2fs -O has_journal /dev/${VG_NAME}/${LV_NAME} >> ${LOG_FILE} 2>&1 || echo "[Failed]: Cannot turn on journal" echo >> ${LOG_FILE} echo "Mounting fs back" >> ${LOG_FILE} mount /dev/mapper/${VG_NAME}-${LV_NAME} >> ${LOG_FILE} 2>&1 || echo "[Failed]: Cannot mount ${VG_NAME}-${LV_NAME}" else echo "canceled" fi