Top 5 Viren

Root Filesystem auf LVM PDF Drucken
Geschrieben von Heiko Heinrich   
Mittwoch, 08. August 2007

Projekt Debian Installation auf einem LVM Volume

Um dieses Projekt zum laufen zu bringen und am Ende auch erfolgreich abschliessen zu künnen müssen allerdings ein paar Vorbereitungen getroffen werden.

Vorbereitungen

1. Benutzung einer bereits verwendeten Debian Installation oder einer Live-CD/DVD
  • ohne einem lauffähigen System ist es nicht möglich LVM zu installieren
  • es können auch keine PVs, VGs oder LVs angelegt werden
  • Empfehlen werde ich hierbei ein bereits installiertes System
2. Eine oder mehrere Festplatten mit ausreichend Speicher
  • ob man nun eine oder 2 verwendet ist jedem selbst überlassen
Wobei ich auch hier empfehlen würde, solange das LVM noch nicht problemlos läft, 2 Festplatten zu verwenden. Da man hier schnell wieder auf das alte System zurück kommt kommt und Fehler beheben kann.
3. Man sollte auch über genügend Linux/Unix Wissen verfügen, da man sein System bei falscher Behandlung auch schnell "abschiessen" kann.

Hardware im Projekt

  • Ultra SPARC III 700MHz
  • 4GB RAM
  • 2 interne SCSI Platten mit 40GB
  • interner SCSI Controller mit Fast Wide SCSI
  • 2 Arena RAIDs mit je 670GB
  • externer SCSI Controller mit Wide Ultra SCSI

Software im Projekt

  • Debian 4.0 / Etch
  • Kernel linux-image-2.6.18-4-sparc-smp
  • LVM2
  • rsync
  • u.a.

Problemstellung

Wieso soll das System auf einem LVM Volume laufen?

Diese Frage stellt sich natürlich, ist aber leicht zu beantworten. Da in dem UltraSPARC SCSI Festplatten verbaut sind und diese bei jedem Neustart oder neueinbinden des SCSI-Controllers einen anderen Devicenamen bekommen, ist das sehr schlecht für das System. Es hat z. B. nach der Installation das Device /dev/sda bekommen und nach dem nächsten Reboot bekommt es /dev/sdx und Debian ist nicht mehr in der Lage zu starten, da es ihm niemand sagt, dass das Device gewechselt hat. Dies ist aber auch nur schwer möglich, daher die Lösung mit dem LVM.

Was tut nun LVM?

1. Erstellen des Physical Volumes (PV). Dieses ist die real existierende Festplatte.

pvcreate /dev/sd*                * = Der Devicename ob nun sda oder sdz kommt auf die Konfiguration an

2. Erstellen einer oder mehreren Volume Groups (VG). Diese sind ein sogenannter "Pool" des gesamten zur Verfügung stehenden Speichers.

vgcreate vg-name pv-name

3. Erstellen der Logischen Volumes (LV). Diese sind Logische Partitionen.

lvcreate -L 1G -ntest vg-name
1G gibt die Grösse an, hier sind es 1GB.

Planung

Da wir unser root Filesystem mit allem was dazu gehört auf ein LVM bringen wollen, muss dies auch geplant werden.

Wir benötigen:
  • Ein Physical Volume mit einer Volume Group
  • 1 sys Volume
  • 1 usr Volume
  • 1 var Volume
  • 1 tmp Volume
  • 1 home Volume
  • 1 Swap
  • Änderungen an der fstab
  • Änderungen an /etc/silo.conf
  • Änderungen an dem Shell Skript zum Starten

Durchführung

FDISK

Mit fdisk werden auf der /dev/sdb 2 Partitionen angelegt. Die eine dient /boot mit 12 Blocks Speicher, was ungef¨hr 100MB sind und die andere ist eine LVM Partition mit dem rest des Speichers und der ID 8e.

fdisk -l /dev/sdb        nachschauen ob auch alles geklappt hat

LVM Befehle

pvcreate /dev/sdb
vgcreate vgsys /dev/sdb
lvcreate -L 1G -nsys vgsys
lvcreate -L 1G -nhome vgsys
lvcreate -L 4G -nusr vgsys
lvcreate -L 4G -ntmp vgsys
lvcreate -L 4G -nvar vgsys
lvcreate -L 4G -nswap vgsys

Filesystem erstellen

mkfs.ext3 /dev/vgsys/sys
mkfs.ext3 /dev/vgsys/home
mkfs.ext3 /dev/vgsys/usr
mkfs.ext3 /dev/vgsys/tmp
mkfs.ext3 /dev/vgsys/var
mkswap /dev/vgsys/swap

Daten kopieren mit rsync

Vor dem kopieren müssen alle LVs nach /mnt gemountet werden.

mount /dev/vgsys/sys
mount /dev/vgsys/home
mount /dev/vgsys/usr
mount /dev/vgsys/tmp
mount /dev/vgsys/var

Es werden Daten kopiert, mit HardLinks, ACLs und die nur zu einem Dateisystem gehören.
1. System
  • rsync -aHAx ./ /dev/vgsys/sys
2. Home Verzeichnisse
  • rsync -aHAx /home /dev/vgsys/home
3. usr
  • rsync -aHAx /usr /dev/vgsys/usr
4. var
  • rsync -aHAx /var /dev/vgsys/var
5. Temp
  • rsync -aHAx /tmp /dev/vgsys/tmp

INITRD / INITRAMFS

Als erstes macht man ein Backup von der derzeitigen Ramdisk. Sie ist zu finden unter /boot/initrd.img-2.6.18-4-sparc64-smp
  • cp initrd.img-2.6.18-4-sparc64 initrd.img.old
Danach wird die derzeitige Ramdisk geupdatet und umbenannt.
  • update-initramfs -ckv initrd.img-2.6.18-4-sparc64-smp
  • cp initrd.img-2.6.18-4-sparc64-smp initrd.img.lvm

Änderungen in dem Shell Start Script

Das Skript ansehen mit:
  • less /usr/share/initramfs-tools/scripts/local-top/lvm
Bearbeiten mit vim, joe, dem mc oder einem anderen Editor oder Tool
  • joe /usr/share/initramfs-tools/scripts/local-top/lvm
  • Eingefügt werden, muss das zwischen dem laden von dm-mod und dem aktivieren von "$ROOT"
  • COUNT=10
    while [ ! -e "$ROOT" ]; do
    if [$COUNT -eq 0 ]; then
    echo "no rootfs ($ROOT) found"
    exit 1
    fi
    COUNT=$((COUNT-1))
    echo "wait for $ROOT"
    sleep 1
    vgchange -an
    modprobe -r dm-mod
    modprobe -q dm-mod
    vgchange -ay vgsys

Die silo.conf

  • Zeilen in der silo.conf

image=/vmlinuz
label=LinuxLVM
root=/dev/mapper/vgsys-sys
initrd=/initrd.img.lvm

Bei Bedarf als default einstellen und Backup oder weitere Einstellungen vornehmen.

Die fstab

# filesystem  mountpoint   type   options  dump  pass
/dev/vgsys/sys   /               ext3     defaults,errors=remount-ro   0        1
LABEL=/boot      /boot           ext3     defaults   0        2
/dev/vgsys/tmp   /tmp            ext3     defaults   0        2
/dev/vgsys/usr   /usr            ext3     defaults   0        2
/dev/vgsys/var   /var            ext3     defaults   0        2
/dev/vgsys/swap  /swap           swap     sw         0        0

Quellen

 
< zurück   weiter >