Ein LVM-System automatisiert aufsetzen

Aus Bluelupo's Wiki
Wechseln zu: Navigation, Suche


Voraussetzungen

Damit das Script korrekt abgearbeitet werden kann muß eine promaäre oder logische Partition mit dem Typ Linux LVM angelegt sein. Die Textdatei LVMdata.txt muß im selben Verzeichnis wie das Script abgelegt sein. Soll auf einer anderen Disk eine LVM-System erstellt werden ist die Variable LVM_DEV entsprechend anzupassen.


Was macht das Script

Das Script erstellt auf der angegebenen Partition /dev/ssda1 ($LVM_DEV) ein LVM-System mit einer Volumegruppe mit dem Namen VGsys' ($VG_NAME). In dieser Volumegruppe VGsys werden die Logical Volumes, wie in der Datendatei LVMdata.txt bezeichnet, mit Namen, Größe und Disklabel versehen. Ebenso wird eine Swappartition, die unter Kontrolle des LVM läuft, erzeugt.


Shellscript LVMcreate.sh

 1   #!/bin/bash
 2   LVM_DATA="./LVMdata.txt"
 3   LVM_DEV="/dev/sda1"
 4   VG_NAME="VGsys"
 5   
 6   while read ROW
 7    do
 8    ARRAY_LVM[$INDEX_LVM]=$ROW
 9    INDEX_LVM=`expr $INDEX_LVM + 1`
10   done < $LVM_DATA
11   
12   vgscan
13   vgchange -a y
14   pvcreate $LVM_DEV
15   vgcreate -s 32M $VG_NAME $LVM_DEV
16   
17   for ROW in ${ARRAY_LVM[@]}
18    do  
19    lvcreate -n `echo $ROW | cut -d# -f1` -L `echo $ROW | cut -d# -f2` $VG_NAME
20   done
21   
22   for ROW in ${ARRAY_LVM[@]}
23    do  
24    if [ `echo $ROW | cut -d# -f1` = "LVswap" ]
25       then
26       mkswap /dev/$VG_NAME/`echo $ROW | cut -d# -f1`
27    else
28       mkfs.`echo $ROW | cut -d# -f3` /dev/$VG_NAME/`echo $ROW | cut -d# -f1`
29    fi  
30   done
31   
32   for ROW in ${ARRAY_LVM[@]}
33    do  
34    if [ `echo $ROW | cut -d# -f1` = "LVswap" ]
35       then
36       swapon /dev/$VG_NAME/`echo $ROW | cut -d# -f1`
37    else
38       tune2fs -c50 -C0 -m0 -L `echo $ROW | cut -d# -f4` /dev/$VG_NAME/`echo $ROW | cut -d# -f1`
39    fi  
40   done

Datenfile LVMdata.txt

 LVroot#1024M#ext4#DISKroot
 LVboot#252M#ext4#DISKboot
 LVhome#6G#ext4#DISKhome
 LVopt#512M#ext4#DISKopt
 LVtmp#512M#ext4#DISKtmp
 LVusr#4G#ext4#DISKusr
 LVvar#3G#ext4#DISKvar
 LVmisc#50G#ext4#DISKmisc
 LVmusic#40G#ext4#DISKmusic
 LVphoto#20G#ext4#DISKphoto
 LVvm#20G#ext4#DISKvm
 LVswap#2G##DISKswap