Statistiques
| Révision :

root / bin / create-filesystem

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

1 1 kreverch
#!/bin/bash
2 39 ltaulell
# $Id$
3 51 ltaulell
# Copyright (C) 2013 Kevin Reverchon, Loïs Taulelle
4 51 ltaulell
# This file/program is part of gZFS free software
5 51 ltaulell
# See COPYING file for details
6 51 ltaulell
#
7 1 kreverch
8 49 kreverch
BINZFS="/sbin/zfs"
9 49 kreverch
BINZPOOL="/sbin/zpool"
10 49 kreverch
11 1 kreverch
function usage {
12 1 kreverch
echo "Syntax :" 1>&2
13 1 kreverch
echo "$0 [options]" 1>&2
14 1 kreverch
echo " -n : filesystem name" 1>&2
15 1 kreverch
echo " -p : pool name" 1>&2
16 41 kreverch
echo " -o : set property list for a  zfs volume. Separate such property by a ','." 1>&2
17 41 kreverch
echo "      Example : -o compression=off,snapdev=visble." 1>&2
18 41 kreverch
echo "      Read the man zfs to get the list of the valid properties" 1>&2
19 41 kreverch
echo " -i : interactive mode" 1>&2
20 41 kreverch
21 1 kreverch
}
22 1 kreverch
23 1 kreverch
function nointeractive {
24 1 kreverch
25 49 kreverch
$BINZFS create -o $FS_OPTION $NAME_POOL/$NAME
26 1 kreverch
27 1 kreverch
}
28 1 kreverch
29 1 kreverch
30 1 kreverch
function interactive {
31 49 kreverch
$BINZFS list
32 46 kreverch
echo "*** Select the parent zpool : ***"
33 1 kreverch
34 1 kreverch
while read inputline
35 1 kreverch
do
36 1 kreverch
   if [ "$inputline" != "" ]
37 1 kreverch
   then
38 49 kreverch
      $BINZFS list |grep -i $inputline
39 1 kreverch
      if [ $? -eq 1 ]
40 1 kreverch
      then
41 46 kreverch
         echo "*** Select the parent zpool : ***"
42 1 kreverch
      else
43 1 kreverch
44 40 ltaulell
         echo "*** Are you sure: $inputline ? (y/n) ***"
45 1 kreverch
         while read inputConfirm
46 1 kreverch
         do
47 1 kreverch
            if [ "$inputConfirm" = "y" ]||[ "$inputConfirm" = "n" ]
48 1 kreverch
            then
49 1 kreverch
              break
50 1 kreverch
            fi
51 40 ltaulell
            echo "*** Are you sure: $inputline ? (y/n) ***"
52 1 kreverch
         done
53 1 kreverch
54 1 kreverch
          if [ "$inputConfirm" = "y" ]
55 1 kreverch
          then
56 1 kreverch
             NAME_POOL=$inputline
57 40 ltaulell
             echo "filesystem name: "
58 1 kreverch
             while read inputFS
59 1 kreverch
             do
60 1 kreverch
                if [ "$inputFS" != "" ]
61 1 kreverch
                then
62 49 kreverch
                   $BINZFS list |grep -i "$inputFS "
63 1 kreverch
                   if [ $? -eq 0 ]
64 1 kreverch
                   then
65 37 kreverch
                         echo "Filesystem name already exists"
66 1 kreverch
                         FS_OK=1
67 1 kreverch
                   else
68 1 kreverch
                      FS_OK=0
69 1 kreverch
                   fi
70 1 kreverch
                   if [ $FS_OK -eq 1 ]
71 1 kreverch
                   then
72 40 ltaulell
                      echo "filesystem name: "
73 1 kreverch
                   else
74 1 kreverch
                      NAME_FS=$inputFS
75 49 kreverch
                           $BINZFS create $NAME_POOL/$inputFS
76 1 kreverch
                           if [ $? -eq 0 ]
77 1 kreverch
                           then
78 37 kreverch
                              echo "*** ZFS filesystem Creation [OK] ***"
79 49 kreverch
                              $BINZFS list
80 1 kreverch
                              break
81 1 kreverch
                           else
82 37 kreverch
                              echo "/!\\ ZFS filesystem Creation [ERROR] /!\\"
83 1 kreverch
                           fi
84 1 kreverch
                    fi
85 1 kreverch
                else
86 40 ltaulell
                  echo "filesystem name: "
87 1 kreverch
                fi
88 1 kreverch
             done
89 1 kreverch
             break
90 1 kreverch
          fi
91 1 kreverch
          break
92 1 kreverch
      fi
93 1 kreverch
   else
94 46 kreverch
      echo "*** Select the parent zpool : ***"
95 1 kreverch
   fi
96 1 kreverch
done
97 1 kreverch
}
98 1 kreverch
99 1 kreverch
while getopts "in:p:b:s:o:h" OPTION
100 1 kreverch
do
101 1 kreverch
     case $OPTION in
102 1 kreverch
         h)
103 1 kreverch
             usage
104 1 kreverch
             exit 1
105 1 kreverch
             ;;
106 1 kreverch
         i)
107 1 kreverch
            interactive
108 1 kreverch
            exit 0
109 1 kreverch
            ;;
110 1 kreverch
         n)
111 1 kreverch
           NAME=$OPTARG
112 1 kreverch
           ;;
113 1 kreverch
         p)
114 1 kreverch
           NAME_POOL=$OPTARG
115 1 kreverch
           ;;
116 1 kreverch
         o)
117 1 kreverch
           FS_OPTION=$OPTARG
118 1 kreverch
           FS_OPTION=$(echo $FS_OPTION|sed -e 's/,/ -o /g')
119 1 kreverch
           echo "$FS_OPTION"
120 1 kreverch
           ;;
121 1 kreverch
    esac
122 1 kreverch
done
123 1 kreverch
if [[ -z $NAME_POOL ]] || [[ -z $NAME ]]
124 1 kreverch
then
125 1 kreverch
     usage
126 1 kreverch
     exit 1
127 1 kreverch
fi
128 1 kreverch
129 1 kreverch
nointeractive