I had to rename a bunch of logical volumes and filesystems.

This script is based on the lvrename command.

It will go line by line of the fs file formated

cat fs

In my case the lvname and fs were were similar except for the last three characters.

It will umount the fs , rename the lv , rename the mount, rename the /etc/fstab and mount the directory.

Use with caution. Use my tips at your own risk !!


DATE=`date '+%Y.%m.%d_%H.%M.%S'`

cp /etc/hosts /etc/hosts.${DATE}

cat fs | while read line

oldfs=`echo ${line} | awk -F: '{print $1}'`
newfs=`echo ${line} | awk -F: '{print $2}'`

mapperinfo=`df -h /var/cache/${oldfs} | grep mapper`

oldlv=`lvs ${mapperinfo} | grep -v LV | awk '{print $1}'`
vgname=`lvs ${mapperinfo} | grep -v LV | awk '{print $2}'`

newlv=`echo ${oldlv} | sed -e "s/${oldfs}/${newfs}/g"`

echo "rename ${oldfs} -> ${newfs}"
sleep 7
df -h /var/cache/${oldfs}

umount /var/cache/${oldfs}

lvrename ${vgname} ${oldlv} ${newlv}

sed -ie "s/${oldfs}/${newfs}/g" /etc/fstab

mv /var/cache/${oldfs} /var/cache/${newfs}

mount /var/cache/${newfs}

df -h /var/cache/${newfs}
echo ""
echo ""