Für das schrittweise Abarbeiten der Kommandos wurde das untenstehende Skript verwendet. Vor der Verwendung des Skriptes bitte einen kurzen Blick in den Sourcecode werfen.
Das Exit-Kommando wurde eingebaut, damit Linux-Einsteiger sich nicht versehentlich die Festplatte(n) löschen.
#!/bin/bash
# shellscript to execute a list of shell commands # with the chance to interfere with own commands
VERSION="0.1 Tue May 29 10:36:22 CEST 2007"
# Copyright (C) 2005 Ronald Woelfel <
Diese E-Mail Adresse ist gegen Spam Bots geschützt, Sie müssen Javascript aktivieren, damit Sie sie sehen können
> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # -----------------------------------------------------------------
# comment out, if there are problems with ansi-code sequences esc=`echo -en "\033"` red="$esc[1;31m" blue="$esc[1;34m" norm="$esc[m"
Comment out if your are know what your doing exit
# Shellcommands stored in a array named cmd
cmd=( '# Demonstriert werden nun einige LVM Features unter Debian Lenny' '# in einer VMWare' '# Voraussetzungen:' '# /dev/sda für das Wurzelverzeichnis' '# /dev/sdb, /dev/sdc und /dev/sdd jew. mindestens 1 GB groß' '# Das CD-ROM deaktivieren, sonst gibt Warnungen bez. /dev/cdrom'
'apt-get install lvm2' 'dpkg -l lvm2' '# Achtung: Zwei Festplatten werden jetzt vollständig gelöscht!!!' '# Achtung: Drücken Sie nun STRG-C zum Abbrechen!!!' '# Letzte Möglichkeit zum Wegklicken' 'echo "0,,8e" |sfdisk -L /dev/sdb' 'echo "0,,8e" |sfdisk -L /dev/sdc' '# Die neue Partitionierung sieht so aus:' 'fdisk -l /dev/sdb /dev/sdc' '# Kennzeichnen der Partitionen als Physical Volume (PV)' 'pvcreate /dev/sdb1' 'pvcreate /dev/sdc1' 'pvdisplay' '# Einrichten einer Volume Group, die aus diesen PV besteht:' 'vgcreate volg1 /dev/sdb1 /dev/sdc1' 'vgdisplay' '# Genauere Infos erhält man mit vgdisplay -v' 'vgdisplay -v' '# Aus dem Speichervorratsbecken volg1 kann man sich nun bedienen.' '# Ein logisches Volume von 500 MB wird wie folgt angelegt:' 'lvcreate -n logv1 -L 500M volg1 ' '# Infos zum logischen Volume (LV) mit lvdisplay' 'lvdisplay' 'mkfs.ext3 /dev/volg1/logv1' 'mkdir /platz' 'mount /dev/volg1/logv1 /platz' 'df -h' 'cd /platz' '# 100MB Beispiel-Nutzdaten anlegen:' 'dd if=/dev/urandom of=test.datei bs=1M count=100' 'ls -al'
'# Vergrößern des Logischen Volumes auf 1 GB:' 'lvextend -L 1000M /dev/volg1/logv1' 'lvdisplay' '# Ein Aushängen ist nur beim Verkleinern notwendig:' 'df -h' 'resize2fs /dev/volg1/logv1' 'df -h' '# Verkleinern des Logischen Volumes auf 400 MB:' '# Hier muss zwingend mit dem Dateisystem begonnen werden, ' '# ansonsten droht Datenverlust!' 'cd /' 'umount /platz' 'e2fsck -f /dev/volg1/logv1' 'resize2fs /dev/volg1/logv1 400000' 'lvreduce -L 400M /dev/volg1/logv1' 'mount /dev/volg1/logv1 /platz/' 'df -h'
'# Volume Group um ein PV (/dev/sdd1) erweitern:' '# Achtung: /dev/sdd wird jetzt vollständig gelöscht!!!' '# Achtung: Drücken Sie nun STRG-C zum Abbrechen!!!' '# Letzte Möglichkeit zum Wegklicken'
'echo "0,,8e" |sfdisk -L /dev/sdd' 'pvcreate /dev/sdd1' 'vgextend /dev/volg1 /dev/sdd1' 'vgdisplay /dev/volg1' '# Physical Volume /dev/sdc1 aus der VG entfernen' '# Wird das Gerät überhaupt verwendet?' 'pvdisplay -v /dev/sdc1' '# /dev/sdc1 freiräumen und auf andere PV verteilen::' 'pvmove /dev/sdc1' '# Alternativ gezieltes Freiräumen: pvmove /dev/sdc1 /dev/sdd1' 'vgreduce volg1 /dev/sdc1' '# Snapshot erstellen (Puffer 300M)' 'lvcreate -s -L 300M -n mybackup /dev/volg1/logv1' '# lvdisplay (oder lvs) verrät die Pufferbelegung' 'lvdisplay' '# Bei Veränderungen der Quelle wird der Puffer kleiner:' 'cd /platz ; cp test.datei test.datei2 &' 'lvdisplay' 'lvdisplay' '# Mounten des Snapshots' 'mkdir /backup/' 'mount /dev/volg1/mybackup /backup' 'ls -alh /backup' '# Im Snapshot fehlt natürlich die Kopie von test.datei' '# Das Löschen des Snapshots gibt den Pufferplatz wieder frei' 'umount /backup/' 'lvremove /dev/volg1/mybackup'
'# Die VG kann erst gelöscht werden, wenn alle LV gelöscht sind:' 'cd / ; umount /platz' 'lvremove /dev/volg1/logv1' 'vgremove /dev/volg1' '# Die Kennzeichnungen der Partitionen als PV entfernen:' 'pvremove -v /dev/sdb1' 'pvremove -v /dev/sdc1' 'pvremove -v /dev/sdd1' )
# dont change anything below, unless you know what your are doing
number=${#cmd[*]} zl=0
# execute shell commands step by step while [ $zl -lt $number ] do echo -n "${blue}Next: ${norm}" echo "$red ${cmd[$zl]} ${norm}" echo -n "${blue}Execute? (y)/n: ${norm} " read key test -z $key && key="y"
if [ $key == "n" ] then echo "Give alternativ command or just ENTER to do nothing" read usercommand eval $usercommand else eval ${cmd[$zl]} fi zl=`expr $zl + 1` done
Letzte Aktualisierung ( Donnerstag, 10 September 2009 )