应用场景和已知存在的问题:
考虑点:编程思路:
Shell代码:#!/bin/bash# Usage: Automatic expand lv with LVM managed disk# Setp 1: Add Hard Disk or Storage to Computing unit# Setp 2: Execute this script with root privilege# Setp 3: Mind info of this script execution result# Open the refrigerator door, get the shell script execution environment ready# Put the elephant into the refrigerator, how the shell scripts works# Close the refrigerator door, check out the result of execution# Simetimes, we have to pull new elephant or elephant dung out here, unset variables of shell script function check_execution_result(){ if [[ ! -z $RETVAL ]]; then unset RETVAL fi RETVAL=$? if [[ $RETVAL -ne 0 ]]; then echo execution failed! exit $RETVAL else echo execution successfully! fi unset RETVAL }# lsblk --scsi# lsblk --all# NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT# fd0 2:0 1 4K 0 disk # sda 8:0 0 40G 0 disk # ├─sda1 8:1 0 500M 0 part /boot# └─sda2 8:2 0 39.5G 0 part # ├─centos-swap 253:0 0 3.9G 0 lvm [SWAP]# └─centos-root 253:1 0 35.6G 0 lvm /# sdb 8:16 0 16G 0 disk # sr0 11:0 1 6.6G 0 rom # Show present scsi disk online# Q: Why use "xargs" here?# A: Convert the text from multi-line single-column into single-line multi-column, for sed operationONLINE_SCSI_DISK_PRESENT=$(lsblk --all | grep disk | grep -v fd | awk '{print $1}' | xargs)# TODO# For execution this script beyond twiceONLINE_SCSI_DISK_PRESENT=sda# Find new scsi disk online# TODO figure it out why there is host0? echo "- - -" >/sys/class/scsi_host/host0/scan echo "- - -" >/sys/class/scsi_host/host1/scan echo "- - -" >/sys/class/scsi_host/host2/scan# Show new added scsi disk onlineONLINE_SCSI_DISK_NEWADD=$(lsblk --all | grep disk | grep -v fd | awk '{print $1}' | xargs echo | sed "s/$ONLINE_SCSI_DISK_PRESENT//g")# Construct disk file with full path echo New Added SCSI Disk: $ONLINE_SCSI_DISK_NEWADD# Get VG NameVG_Name=$(vgdisplay | grep 'VG Name' | awk '{print $NF}')VG_PATH_TO_EXTEND=$(lvdisplay | grep 'LV Path' | awk '{print $NF}' | grep root)for BLOCK in $ONLINE_SCSI_DISK_NEWADD; do ONLINE_SCSI_DISK_NEWADD_FILENAME="/dev/"$BLOCK # end-of-file contents and eof mark must start row1 fdisk $ONLINE_SCSI_DISK_NEWADD_FILENAME >/dev/null 2>&1<<eof n p1 t8e w eof check_execution_result LVM_OPERATION_DISK_FILENAME=$ONLINE_SCSI_DISK_NEWADD_FILENAME"1" pvcreate $LVM_OPERATION_DISK_FILENAME >/dev/null 2>&1 check_execution_result vgextend $VG_Name $LVM_OPERATION_DISK_FILENAME >/dev/null 2>&1 check_execution_result lvresize -l +100%FREE $VG_PATH_TO_EXTEND >/dev/null 2>&1 check_execution_result# resize2fs - ext2/ext3/ext4 file system resizer# xfs_growfs, xfs_info - expand an XFS filesystem#[root@hlc7172009 ~]# resize2fs /dev/mapper/centos-root#resize2fs 1.42.9 (28-Dec-2013)#resize2fs: Bad magic number in super-block while trying to open /dev/mapper/centos-root#Couldn't find valid filesystem superblock.#[root@hlc7172009 ~]##[root@hlc7172009 ~]# xfs_growfs $VG_PATH_TO_EXTEND#meta-data=/dev/mapper/centos-root isize=256 agcount=4, agsize=2334208 blks# = sectsz=512 attr=2, projid32bit=1# = crc=0#data = bsize=4096 blocks=9336832, imaxpct=25# = sunit=0 swidth=0 blks#naming =version 2 bsize=4096 ascii-ci=0 ftype=0#log =internal bsize=4096 blocks=4559, version=2# = sectsz=512 sunit=0 blks, lazy-count=1#realtime =none extsz=4096 blocks=0, rtextents=0#data blocks changed from 9336832 to 13530112#[root@hlc7172009 ~]# # Check xfs_info if is installed which xfs_info >/dev/null 2>&1 if [[ $? -ne 0 ]]; then yum install xfsprogs -y >/dev/null 2>&1 fi # end Check xfs_info if is installed # Check VG_PATH_TO_EXTEND if is xfs filesystem xfs_info $VG_PATH_TO_EXTEND >/dev/null 2>&1 if [[ $? -ne 0 ]]; then # is not xfs VG_PATH_TO_EXTEND_IS_NOT_XFS=0 else # is xfs VG_PATH_TO_EXTEND_IS_NOT_XFS=1 fi # end Check VG_PATH_TO_EXTEND if is xfs filesystem # TODO CentOS7 default filesystem is xfs, so we can check it out by OS if is CentOS7 if [[ $VG_PATH_TO_EXTEND_IS_NOT_XFS ]]; then # is xfs xfs_growfs $VG_PATH_TO_EXTEND >/dev/null 2>&1 else # is not xfs resize2fs $VG_PATH_TO_EXTEND >/dev/null 2>&1 fi check_execution_result df -h lsblk --all done 测试结果:(责任编辑:IT) |