Statistiques
| Révision :

root / bin / create-volume @ 30

Historique | Voir | Annoter | Télécharger (3,87 ko)

1
#!/bin/bash
2

    
3
function usage {
4
echo "Syntax :" 1>&2
5
echo "$0 [options]" 1>&2
6
echo " -n : volume name" 1>&2
7
echo " -p : pool name" 1>&2
8
echo " -b : block size. Permit value : 32K, 64K, 128K (recommanded)" 1>&2
9
echo " -s : volume size. Permit unit : T, G, M"  1>&2
10
echo " -o : options zfs volume. Read the man zfs for more details" 1>&2
11

    
12
}
13

    
14

    
15
function nointeractive {
16

    
17
if [[ -z $VOL_OPTION ]]
18
then
19
/sbin/zfs create -s -b $BLOCK_SIZE -V $SIZE $NAME_POOL/$NAME
20
else
21
/sbin/zfs create -s -b $BLOCK_SIZE -o $VOL_OPTION -V $SIZE $NAME_POOL/$NAME
22
fi
23

    
24
}
25

    
26

    
27
function interactive {
28
zfs list
29
echo "*** Choix du pool pour la creation du volume : ***"
30

    
31
while read inputline
32
do
33
   if [ "$inputline" != "" ]
34
   then
35
      zfs list |grep -i $inputline
36
      if [ $? -eq 1 ]
37
      then
38
         echo "*** Choix du pool pour la creation du volume : ***"
39
      else
40

    
41
         echo "*** Etes-vous sur du choix du pool : $inputline ? (y/n) ***"
42
         while read inputConfirm
43
         do
44
            if [ "$inputConfirm" = "y" ]||[ "$inputConfirm" = "n" ]
45
            then
46
              break
47
            fi
48
            echo "*** Etes-vous sur du nom : $inputline ? (y/n) ***"
49
          done
50

    
51
          if [ "$inputConfirm" = "y" ]
52
          then
53
             NAME_POOL=$inputline
54
             echo "Saisir le nom du volume : "
55
             while read inputVolume
56
             do
57
                if [ "$inputVolume" != "" ]
58
                then
59
                   test -d /dev/zvol
60
                   if [ $? -eq 0 ]
61
                   then
62
                      ls -l /dev/zvol/$NAME_POOL/$inputVolume
63
                      if [ $? -eq 0 ]
64
                      then
65
                         echo "Le nom de volume existe deja"
66
                         VOL_OK=1   
67
                      else
68
                         VOL_OK=0
69
                      fi
70
                   else
71
                      VOL_OK=0 
72
                   fi
73
                   if [ $VOL_OK -eq 1 ]
74
                   then
75
                      echo "Saisir le nom du volume : "
76
                   else
77
                      NAME_VOL=$inputVolume
78
                      echo "Saisir la taille du volume"
79
                      while read inputSize
80
                      do
81
                         if [ "$inputSize" != "" ]
82
                         then
83
                           zfs create -s -b 128K -V $inputSize  $NAME_POOL/$inputVolume
84
                           if [ $? -eq 0 ]
85
                           then
86
                              echo "*** Creation du volume ZFS [OK] ***" 
87
                              zfs list
88
                              break
89
                           else
90
                              echo "/!\\ Creation du volume ZFS [ERROR] /!\\"
91
                           fi
92
                        else
93
                           echo "Saisir la taille du volume"   
94
                        fi
95
                      done
96
                      break
97
                    fi
98
                else
99
                  echo "Saisir le nom du volume : "
100
                fi
101
             done
102
             break
103
          fi
104
          break
105
      fi
106
   else
107
      echo "*** Choix du pool pour la creation du volume : ***"
108
   fi
109
done
110
}
111

    
112
while getopts "in:p:b:s:o:h" OPTION
113
do
114
     case $OPTION in
115
         h)
116
             usage
117
             exit 1
118
             ;;
119
         i)
120
            interactive
121
            exit 0
122
            ;;
123
         n)
124
           NAME=$OPTARG
125
           ;;
126
         p)
127
           NAME_POOL=$OPTARG
128
           ;;
129
         b)
130
           BLOCK_SIZE=$OPTARG
131
           ;;
132
         s)
133
           SIZE=$OPTARG
134
           ;;
135
         o)
136
           VOL_OPTION=$OPTARG
137
           VOL_OPTION=$(echo $VOL_OPTION|sed -e 's/,/ -o /g')
138
           echo "$VOL_OPTION"
139
           ;;
140
         *)
141
          usage
142
          exit 1
143
          ;;
144
    esac
145
done
146

    
147

    
148
if [[ -z $NAME ]] || [[ -z $NAME_POOL ]] || [[ -z $BLOCK_SIZE ]] || [[ -z $SIZE ]]
149
then
150
     usage
151
     exit 1
152
fi
153
nointeractive