1. #!/bin/sh 
  2. #Author:jacky.lee 
  3. #date:2010/4/17 
  4. #This scripts create soft raid 0,1,5,6,10 
  5. #The test platform on redhat linux.                                                                          
  6. #define main function 
  7. main () { 
  8.     clear 
  9.     echo '          ------------------------------------------------------          ' 
  10.     echo '          1.Create a software raid array          ' 
  11.     echo '          2.View raid array sync status           ' 
  12.     echo '          3.View raid array detail            ' 
  13.     echo '          4.Create mdadm.conf file            ' 
  14.     echo '          5.Add hotspare device on raid array     ' 
  15.     echo '          6.Replace a fault device on raid array      ' 
  16.     echo '          7.Delete a software raid array          ' 
  17.     echo '          8.Renaming a raid array             ' 
  18.     echo '          9.Resync raid array             ' 
  19.     echo '          q,exit                      ' 
  20.     echo '          ------------------------------------------------------          '    
  21.     while true 
  22.         do 
  23.         echo -n "   Please choice [1-q]:" 
  24.         read choice 
  25.         case $choice in 
  26.             1) 
  27.             create_raid 
  28.             sleep 10 
  29.             clear 
  30.             main 
  31.             ;; 
  32.             2) 
  33.             view_sync 
  34.             clear 
  35.             main 
  36.             ;; 
  37.             3) 
  38.             view_detail 
  39.             sleep 10 
  40.             clear 
  41.             main 
  42.             ;; 
  43.             4) 
  44.             create_configure_file 
  45.             sleep 3 
  46.             clear 
  47.             main 
  48.             ;; 
  49.             5) 
  50.             add_hot 
  51.             sleep 10 
  52.             clear 
  53.             main 
  54.             ;; 
  55.             6) 
  56.             view_detail 
  57.             sleep 5 
  58.             rep_dev 
  59.             clear 
  60.             main 
  61.             ;; 
  62.             7) 
  63.             del_rd 
  64.             clear 
  65.             main 
  66.             ;; 
  67.             8) 
  68.             ren_rd 
  69.             view_detail 
  70.             sleep 5 
  71.             clear 
  72.             main 
  73.             ;; 
  74.             9) 
  75.             res_rd 
  76.             clear 
  77.             view_sync 
  78.             clear 
  79.             main 
  80.             ;; 
  81.             q) 
  82.             exit 
  83.             ;; 
  84.         esac 
  85.         done 
  86.  
  87. #create raid 
  88. create_raid (){ 
  89.     if [ -e /sbin/mdadm ]&&[ -x /sbin/mdadm ];then 
  90.         echo 
  91.         echo "Please input the name:[like:md0,md1....]" 
  92.         read name 
  93.         echo 
  94.         echo "which level do you want to create it?[0,1,5,6]" 
  95.         echo "The level 0 and 1 at least 2 device,The level 5 at least 3 device,level 6 at least 4." 
  96.         read level 
  97.         echo 
  98.         echo "How many device for use?" 
  99.         read num 
  100.         echo "The device name like:/dev/sda,/dev/sda1,/dev/sd[abcd],/dev/sd[abcd]1" 
  101.         echo "Please input the device name:" 
  102.         read input 
  103.         mdadm -C /dev/$name -l$level -n$num $input 
  104.     fi 
  105.     } 
  106.  
  107. #view sync status 
  108. view_sync () { 
  109.     if [ -e /proc/mdstat ]&&[ -r /proc/mdstat ];then 
  110.         watch -n .2  'cat /proc/mdstat' 
  111.     fi 
  112.     } 
  113.  
  114. #view detail of md information 
  115. view_detail () { 
  116.     if [ -e /sbin/mdadm ]&&[ -x /sbin/mdadm ];then 
  117.         echo "which md device you want to view detail:" 
  118.         read input 
  119.         if [ $input=`grep $input /proc/mdstat |awk '{print $1}'` ];then 
  120.             mdadm --detail /dev/$input 
  121.         else 
  122.             sleep 5 
  123.         fi 
  124.     fi 
  125.     } 
  126.  
  127. #create mdadm configure file 
  128. create_configure_file () { 
  129.     if [ -e /sbin/mdadm ]&&[ -x /sbin/mdadm ];then 
  130.         echo "The mdadm.conf file default location is /etc." 
  131.         mdadm --examine --scan >/etc/mdadm.conf 
  132.         echo "The mdadm.conf file content by follow:" 
  133.             cat /etc/mdadm.conf 
  134.     fi 
  135.     } 
  136.  
  137. #add hotspare device 
  138. add_hot () { 
  139.     if [ -e /sbin/mdadm ]&&[ -x /sbin/mdadm ];then 
  140.         echo "which md do you for add a hotspare device?"    
  141.         read name 
  142.         echo "which device you want set a hotspare?" 
  143.         read device 
  144.         mdadm /dev/$name -a $device 
  145.         mdadm --detail /dev/$name 
  146.     fi 
  147.     } 
  148.  
  149. #remove a fault device 
  150. rep_dev () { 
  151.     if [ -e /sbin/mdadm ]&&[ -x /sbin/mdadm ];then 
  152.         echo "Which device you want to remove?" 
  153.         read device1 
  154.         echo "Which device you want to add?" 
  155.         read device2 
  156.         mdadm -r $device1 -a $device2 
  157.     fi 
  158.     } 
  159.      
  160.  
  161. #delete a raid 
  162. del_rd () { 
  163.     echo "First,stop all I/O access on md devices." 
  164.     if [ -e /sbin/mdadm ]&&[ -x /sbin/mdadm ];then 
  165.         echo "Which md do you want to delete?" 
  166.         read md 
  167.         mdadm -S /dev/$md 
  168.         echo "Please input the device name:" 
  169.         read name 
  170.         mdadm --misc --zero-superblock $name 
  171.     fi 
  172.     }    
  173. #renaming a raid array 
  174. ren_rd () { 
  175.     echo "First,you must stop the raid array!" 
  176.     if [ -e /sbin/mdadm ]&&[ -x /sbin/mdadm ];then 
  177.         echo "Which md do you want stop?" 
  178.         read md 
  179.         mdadm -S /dev/$md 
  180.         echo "What's the new md name?" 
  181.         read name 
  182.         echo "What's the device name on the old md?" 
  183.         read device 
  184.         mdadm --assemble /dev/$name  --super-minor=0 --update=super-minor $device 
  185.     fi 
  186.     } 
  187.  
  188. #resync a raid array 
  189. res_rd  () { 
  190.     echo "Which raid array need resync?" 
  191.     read input 
  192.     if [ -e /sys/block/$input/md/sync_action ]&&[ -f /sys/block/$input/md/sync_action ];then 
  193.     echo check >/sys/block/$input/md/sync_action 
  194.     fi 
  195.     } 
  196. #Calling main function 
  197. main