Netzoffice R. Wölfel
LVM in 10 Minuten PDF Drucken E-Mail
Geschrieben von Ronald Woelfel   
Donnerstag, 10 September 2009

Video einer Terminalsitzung das den Umgang mit LVM inkl. Snapshots zeigt.

URL: http://www.vimeo.com/6514676

LVM in 10 Minuten from Ronald Woelfel on Vimeo.

 

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 )
 
< zurück   weiter >