| 1 | #!/bin/sh
 | 
|---|
| 2 | # usage:
 | 
|---|
| 3 | # 作成
 | 
|---|
| 4 | #  # mngstorage create disk1 100M
 | 
|---|
| 5 | #  # mngstorage delete disk1
 | 
|---|
| 6 | #  # mngstorage snap   disk1 disk2
 | 
|---|
| 7 | #
 | 
|---|
| 8 | #
 | 
|---|
| 9 | STORAGE_PATH=/storage/lv
 | 
|---|
| 10 | iqn=iqn.2008-09.com.example
 | 
|---|
| 11 | vgname=vg
 | 
|---|
| 12 | 
 | 
|---|
| 13 | 
 | 
|---|
| 14 | case $1 in
 | 
|---|
| 15 |     create)
 | 
|---|
| 16 |         MESURE=`echo $3|sed -e 's/\([0-9]\+\)\(.\)$/\2/'`
 | 
|---|
| 17 |         SIZE=`echo $3|sed -e 's/\([0-9]\+\)\(.\)$/\1/'`
 | 
|---|
| 18 | 
 | 
|---|
| 19 |         dd of=$STORAGE_PATH/$2.img bs=1$MESURE seek=$SIZE count=0
 | 
|---|
| 20 | echo "<target ${iqn}:${vgname}.$2>
 | 
|---|
| 21 |     backing-store ${STORAGE_PATH}/$2.raw
 | 
|---|
| 22 | </target>
 | 
|---|
| 23 | " >> /etc/tgt/conf.d/${vgname}_$2.conf
 | 
|---|
| 24 |         service tgt reload
 | 
|---|
| 25 |     ;;
 | 
|---|
| 26 | 
 | 
|---|
| 27 |     snap)
 | 
|---|
| 28 |         cp --reflink $STORAGE_PATH/$2.raw $STORAGE_PATH/$3.raw
 | 
|---|
| 29 | echo "<target ${iqn}:${vgname}.$3>
 | 
|---|
| 30 |     backing-store ${STORAGE_PATH}/$3.raw
 | 
|---|
| 31 | </target>
 | 
|---|
| 32 | " >> /etc/tgt/conf.d/${vgname}_$3.conf
 | 
|---|
| 33 |         service tgt reload
 | 
|---|
| 34 |     ;;
 | 
|---|
| 35 | 
 | 
|---|
| 36 |     delete)
 | 
|---|
| 37 |         rm /etc/tgt/conf.d/${vgname}_${2}.conf
 | 
|---|
| 38 |         rm $STORAGE_PATH/$2.raw
 | 
|---|
| 39 |         service tgt reload
 | 
|---|
| 40 |     ;;
 | 
|---|
| 41 | 
 | 
|---|
| 42 |     *)
 | 
|---|
| 43 |         echo "error"
 | 
|---|
| 44 |     ;;
 | 
|---|
| 45 | 
 | 
|---|
| 46 | esac
 | 
|---|