设为首页 收藏本站
查看: 880|回复: 0

vmvm分配SAN shell

[复制链接]

尚未签到

发表于 2018-8-23 10:06:07 | 显示全部楼层 |阅读模式
  #!/bin/bash
  logFile=/var/tmp/vxvm_`date "+%Y%m%d"`.txt
  tmpLogFile=/tmp/vxvmtmp.$$
  usage()
  {
  cat  /var/tmp/df-h_`date "+%Y%m%d"`.txt
  [[ ! -e /var/tmp/inq_`date "+%Y%m%d"`.txt ]]         && inq > /var/tmp/inq_`date "+%Y%m%d"`.txt
  [[ ! -e /var/tmp/vxdisk_list_`date "+%Y%m%d"`.txt ]] && vxdisk -o alldgs list > /var/tmp/vxdisk_list_`date "+%Y%m%d"`.txt
  [[ ! -e /var/tmp/vxprint-ht_`date "+%Y%m%d"`.txt ]]  && vxprint -ht > /var/tmp/vxprint-ht_`date "+%Y%m%d"`.txt
  }
  scanDisks() {
  echo "Scanning disk, please wait.. (to skip this part, you may use $0 -n)"
  if [[ $Linux ]] ; then
  lun_scan.sh
  else
  cfgadm -c configure `cfgadm -l 2> /dev/null | $AWK '$2 == "fc-fabric" {print $1}'`
  devfsadm -Cc disk
  devfsadm
  fi
  vxdctl enable
  vxddladm set namingscheme=osn
  }
  displaySummary() {
  [[ ! $scanned ]] && scanDisks
  echo "Generating disk summary, please wait.."
  disklist=`vxdisk -o alldgs list | $AWK '$3 == "-" && $4 == "-" {print length($1),$1 | "sort -n"}' | awk '{print $2}' | sed 's/s2$//'`
  inqmsg=`inq 2>/dev/null `
  inqmsg=`inq 2>/dev/null `
  diskmsg=`for i in $disklist ; do echo -e "$inqmsg" | grep -v rdmp | $AWK '$1 == "/dev/'"$rdsk$i$s2"'" {print $1"\t"int($NF/1024/1024+0.5)"g"}'; done`
  echo -e "$diskmsg"
  }
  diskAction() {
  echo "###############################################"
  cat $tmpLogFile
  echo "###############################################"
  echo "Confirm to do so (y/n) ?"
  local confirm="" ; while [[ (("$confirm" != "y")) && (("$confirm" != "n")) ]] ; do read -n 1 confirm ; echo ; done
  [[ "$confirm" == "y" ]] && bash -x $tmpLogFile 2>&1 | tee -a $logFile
  cat /dev/null > $tmpLogFile
  }
  diskAllocation() {
  cat /dev/null > $tmpLogFile
  for i in $disklist; do
  diskInfo=`echo -e "$diskmsg" | awk '$1 == "/dev/'"$rdsk$i$s2"'"' | sed 's/ / (/'`")"
  echo "**************** $diskInfo ****************"
  echo "Allocation for $i (y/n) ?"
  ans="" ; while [[ (("$ans" != "y")) && (("$ans" != "n")) ]] ; do read -n 1 ans ; echo ; done
  [[ "$ans" == "n" ]] && continue
  echo "Format $i (y/n) ?"
  ans="" ; while [[ (("$ans" != "y")) && (("$ans" != "n")) ]] ; do read -n 1 ans ; echo ; done
  if [[ "$ans" == "y" ]] ; then
  [[ $Linux ]] && echo "echo w | fdisk /dev/`vxdisk list $i | awk '/type=primary/ {print $1}'`" >> $tmpLogFile
  [[ `uname -p` == "sparc" ]] && echo "printf \"label\ny\nquit\n\" | format -d `vxdisk list $i | awk '/type=primary/ {print $1}' | sed 's/s2$//'`" >> $tmpLogFile
  echo "/usr/lib/vxvm/bin/vxdisksetup -if $i" >> $tmpLogFile
  fi
  echo "Please enter Disk Group Name for $i" ; read vxvmDiskGrp
  diskName="${vxvmDiskGrp}01"
  if [[ `vxdisk -o alldgs list | grep $vxvmDiskGrp | wc -l` -gt 0 ]]; then
  let lastNum=`vxdisk -o alldgs list | $AWK '$4 == "'"$vxvmDiskGrp"'" {print substr($3, length($3)-1)}' | sort -n | tail -1`+1
  diskName=`printf "%s%02d" $vxvmDiskGrp $lastNum`
  echo "vxdg -g $vxvmDiskGrp adddisk $diskName=$i" >> $tmpLogFile
  else
  echo "vxdg init $vxvmDiskGrp $diskName=$i" >> $tmpLogFile
  fi
  echo "Allocate volume now (y/n) ?"
  ans="" ; while [[ (("$ans" != "y")) && (("$ans" != "n")) ]] ; do read -n 1 ans ; echo ; done
  [[ "$ans" == "n" ]] && diskAction
  while [[ "$ans" == "y" ]] ; do
  echo "Please enter Volume Name for Disk Group $vxvmDiskGrp" ; read vxvmVolName

  echo "Please enter>  echo "Raw device (y/n) ?"
  rawDeivce="" ; while [[ (("$rawDeivce" != "y")) && (("$rawDeivce" != "n")) ]] ; do read -n 1 rawDeivce ; echo ; done
  if [[ "$rawDeivce" == "y" ]] ; then
  echo "Please enter username for the volume" ; read vxvmUser
  echo "Please enter group for the volume" ; read vxvmGrp
  echo "vxassist -g $vxvmDiskGrp make $vxvmVolName ${vxvmSize}m" >> $tmpLogFile
  echo "vxedit -g $vxvmDiskGrp set user=$vxvmUser group=$vxvmGrp $vxvmVolName" >> $tmpLogFile
  else
  echo "Please enter mount point" ; read vxvmMountPoint
  if [[ `mount | $AWK '$'"$mntLocation"' == "'"$vxvmMountPoint"'"' | wc -l` -ne 0 ]] ; then

  echo "Mount point $vxvmMountPoint already exists! Will resize the volume, current>  df -h $vxvmMountPoint
  echo "/usr/lib/vxvm/bin/vxresize -F vxfs -g $vxvmDiskGrp $vxvmVolName +${vxvmSize}m" >> $tmpLogFile
  else
  echo "New Mount point $vxvmMountPoint will be created"
  echo "vxassist -g $vxvmDiskGrp make $vxvmVolName ${vxvmSize}m" >> $tmpLogFile
  if [[ $Linux ]] ; then
  echo "echo \"/dev/vx/dsk/$vxvmDiskGrp/$vxvmVolName  $vxvmMountPoint vxfs       _netdev,suid          0 0\" >> /etc/fstab" >> $tmpLogFile
  echo "mkfs.vxfs -o largefiles /dev/vx/rdsk/$vxvmDiskGrp/$vxvmVolName" >> $tmpLogFile
  else
  echo "echo \"/dev/vx/dsk/$vxvmDiskGrp/$vxvmVolName /dev/vx/rdsk/$vxvmDiskGrp/$vxvmVolName $vxvmMountPoint vxfs 1 yes largefiles,suid\" >> /etc/vfstab" >> $tmpLogFile
  echo "mkfs -F vxfs -o largefiles /dev/vx/rdsk/$vxvmDiskGrp/$vxvmVolName" >> $tmpLogFile
  fi
  echo "mkdir -p $vxvmMountPoint" >> $tmpLogFile
  echo "mount $vxvmMountPoint" >> $tmpLogFile
  echo "df -h $vxvmMountPoint" >> $tmpLogFile
  fi
  fi
  diskAction
  echo "Anymore volume in this disk group (y/n)?" ; read -n 1 ans ; echo
  done
  done
  rm -f $tmpLogFile
  }
  main () {
  determineOS
  captureOldConfig
  displaySummary
  diskAllocation
  }
  while getopts ":hn" option
  do
  case $option in
  h     ) usage ; exit 0 ; shift;;
  n     ) scanned=1 ; shift;;
  *     ) echo "Invaild option chosen."; shift ;;
  esac
  done
  main


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-555417-1-1.html 上篇帖子: shell运算方法 下篇帖子: Hbase shell操作总结
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表