Neuer Blogeintrag: Nextgen Gallery (NGG) mit Lightview | darktree.de/2014/04/nextge… - #Drumherum
-> mehr auf twitter

Lange habe ich das Thema LVM vor mir hergeschoben, dabei ist es so einfach und vor allem praktisch. Durch das Aufschieben sind auch viele aktuelle Server durch mich ohne LVM aufgesetzt wurden, bei denen jetzt nach und nach die Partitionen volllaufen. Nun habe ich mich daran gemacht diese umzustellen. Die ersten Umstellungen waren sehr holperig und haben Tage gedauert. Nachdem ich aber meine Dokumentation soweit vervollständigt habe geht es schnell von der Hand.

Ich habe die Umstellung jeweils auf virtuellen Debian Systemen unter VMWare durchgeführt und werde hier Stichpunktartig die Schritte zusammenfassen, welche für eine Umstellung auf den Logical Volume Manager nötig sind.

Die Ausfallzeiten der Server sind hierbei sehr gering, weil die Vorbereitungen im laufenden Betrieb durchgeführt werden können. Der finale Daten Abgleich sollte dann direkt vor der Umstellung stattfinden. Ich habe die Migration immer auf mehrere Tage aufgeteilt. Die Systeme habe ich dann mit Hilfe eines VMWare Clones vorab ausgiebig getestet, so dass während des Wartungsfensters für den finalen Datenabgleich und die diversen Neustarts des Produktivsystems nichts mehr schief gehen konnte.

Vorbereitungen

  • Zweite Festplatte in die Virtuelle Maschine einbinden, oder zweite Festplatte in ein physikalisches Gerät einbauen, oder eine neue Partition mit ausreichender Größe für das LVM erstellen.
  • Reboot des Systems. Falls eine neue Festplatte in die VM eingebunden wurde. Bei mir hat es leider nicht geklappt die neue HDD im laufenden Betrieb zu erkennen
  • Festplatte mit cfdisk partitionieren und eine neue Linux Partition erstellen:
# cfdisk /dev/sdb
  • LVM-Pakete nachinstallieren, falls diese noch nicht vorhanden sind:
# apt-get update && apt-get install lvm2
  • Festplatte für LVM initialisieren:
# pvcreate /dev/sdb1
  • Volumegroup erstellen:
# vgcreate vg0 /dev/sdb1
  • Volumes anlegen, hier sollte die Größe und der Name je nach Gewünschter Aufteilung angepasst werden:
# lvcreate -L15G -nNAME vg0
  • Falls gewünscht weitere Volumes nach diesem Schema anlegen.
  • Volumes formatieren:
# for i in /dev/mapper/vg0-*; do echo $i; mkfs.ext4 $i; done
  • Mountpoint erstellen:
# mkdir /media/lvm
  • Root-Volume mounten (je nach vergebenen Volume-Namen anpassen):
# mount /dev/mapper/vg0-root /media/lvm
  • Weitere Mountpoints erstellen (je nach Paritionierenung…):
# mkdir /media/lvm/{boot,home,proc,sys,tmp,usr,var} (je nach konfiguration anpassen)
  • Weitere Volumes in die neuen Mountpoints mounen
  • Daten mit Rsync auf die neue Festplatte kopieren (rsync nachinstallieren, falls nötig). Ich habe dazu folgendes Script verwendet:
#!/bin/bash 
rsync -av --exclude=lost+found \
          --exclude=/media/lvm \
          --exclude='/dev/.[isu]*' \
          --exclude='/lib/init/rw/*' \
          --exclude='/lib/modules/*/volatile/*' \
          --exclude='/proc/*' \
          --exclude='/sys/*' \
          --exclude='/var/lock/*' \
          --exclude='/var/run/*' \
    / /media/lvm/
  • Um ein neues initram zu erzeugen, werden die folgenden Dateien aus /proc benötigt:
# cp /proc/cmdline /media/lvm/proc/
# cp /proc/modules /media/lvm/proc/
  • Die Datei /media/lvm/proc/cmdline muss nun editiert werden und sollte dann so aussehen:
BOOT_IMAGE=/vmlinuz-3.2.0-4-686-pae root=/dev/mapper/vg0-root ro quiet
  • Initramfs erzeugen:
# mount -o bind /proc /media/lvm/proc
# chroot /media/lvm
# update-initramfs -u -t -k `uname -r`
# exit
  • Als nächstes muss die Datei /media/lvm/etc/fstab bearbeitet werden und je nach Partitionierung angepasst werden:
proc            /proc           proc    defaults        0       0
 
/dev/mapper/vg0-root     /              ext4    errors=remount-ro  0       1
/dev/mapper/vg0-home     /home           ext4    defaults          0       2
/dev/mapper/vg0-tmp      /tmp            ext4    defaults          0       2
/dev/mapper/vg0-var      /var            ext4    defaults          0       2
/dev/mapper/vg0-boot     /boot           ext4    defaults          0       2
/dev/mapper/vg0-usr      /usr            ext4    defaults          0       2
 
/dev/mapper/vg0-swap     none            swap    sw                0       0

Grub Konfigurieren

  • Die device.map muss neu erstellt werden, sonst kann es bei dem Befehl grub-mkconfig zu dem Fehler “grub-probe: error: no such disk.“ kommen
# rm /boot/grub/device.map
# grub-install –recheck /dev/sdb
# grub-install –recheck /dev/sda
  • Backup der vorhandenen Grub-Konfiguration erstellen:
# mv /boot/grub/grub.cfg /boot/grub/grub.cfg_old
  • Neue Grub-Konfiguration erstellen:
# grub-mkconfig –o /boot/grub/grub.cfg
  • Grub-Konfiguration mit einem Editor öffnen
  • Herunterscrollen bis die LVM-Einträge kommen, diese müssen vermutlich von Hand angepasst werden, weil es warum auch immer zu diesem Zeitpunkt noch nicht richtig erkannt wird.
  • Es sollte dann so ähnlich aussehen (siehe Kommentare im Quelltext):
menuentry 'Debian GNU/Linux, with Linux 3.2.0-4-686-pae' --class debian --class gnu-linux --class gnu --class os {
        load_video
        insmod gzio
        insmod lvm
        insmod part_msdos
        insmod ext2
        set root='(vg0-boot)' # !Prüfen! Hier muss das Boot-Volume eingetragen sein
        search --no-floppy --fs-uuid --set=root 397858c7-ab0d-4ba9-b5e8-b6dde6241363 # !Prüfen! Hier muss die ID des Boot-Volumes eingetragen sein, die IDs können mit dem Befehl blkid ausgelesen werden.
        echo    'Loading Linux 3.2.0-4-686-pae ...'
        linux   /vmlinuz-3.2.0-4-686-pae root=/dev/mapper/vg0-root ro  quiet # !Prüfen! Hier muss das "/boot" vor "/vmlinuz..." entfernt werden und das ROOT-Volume eingetragen sein
        echo    'Loading initial ramdisk ...'
        initrd  /initrd.img-3.2.0-4-686-pae # !Prüfen! Hier muss das "/boot" vor "/initrd.img..." entfernt werden

Testen

  • Wenn mit einer VM gearbeitet wird, am besten einen Clone erstellen um die Konfiguration vorab zu testen und Ausfallzeiten zu minimieren.
  • Bei einem physikalischen System sollte jetzt der Punkt “Finaler Datenabgleich” durchgeführt und dann hier regulär fortgefahren werden.
  • Bei einem Clone vor dem Starten die Netzwerkkarte aus der Konfiguration entfernen, damit es nicht zu Problemen mit doppelten IP-Adressen und zum Ausfall der Services kommt.
  • Clone starten und im Grub Menü den LVM-Eintrag zum Booten auswählen.
  • Nach dem Starten muss die Grub-Konfiguration neu erstellt werden:
# grub-mkconfig –o /boot/grub/grub.cfg
  • Zur Sicherheit sollte die Config noch einmal geprüft werden, es sollte aber jetzt korrekt erkannt worden sein.
  • Grub in den MBR der neuen Festplatte schreiben:
# grub-install /dev/sdb
  • System ausschalten.
  • Alte Festplatte entfernen.
  • Bei meiner VM habe ich die Festplatte erst mal nur entfernt und nicht gelöscht.
  • System wieder starten und LVM im Grub auswählen (sollte jetzt der erste Eintrag sein).
  • device.map neu erstellen, weil die alte Festplatte jetzt entfernt wurde:
# rm /boot/grub/device.map
# grub-install –recheck /dev/sda
  • Grub-Konfiguration erneut erstellen, damit die alten Einträge aus der Config verschwinden:
  • grub-mkconfig –o /boot/grub/grub.cfg
  • System ein letztes Mal neustarten und testen
  • Wenn mit dem Testclone alles funktioniert hat, kann ein Finaler Rsync auf dem Produktiv-System durchgeführt werden.

    Finaler Datenabgleich

  • Für den finalen Datenabgleich habe ich ein weiteres Script, mit ein paar zusätzlichen exludes verwendet – damit unsere Änderungen nicht wieder überschrieben werden:
#!/bin/bash
rsync -av --delete --exclude=lost+found \
                   --exclude=/media/lvm \
                   --exclude=/boot \
                   --exclude=/dev \
                   --exclude=/etc/fstab \
                   --exclude=/etc/mdadm/mdadm.conf \
                   --exclude=/lib/init/rw \
                   --exclude='/lib/modules/*/volatile/*' \
                   --exclude=/proc \
                   --exclude=/sys \
                   --exclude=/var/lib/initramfs-tools/ \
                   --exclude=/var/lock \
                   --exclude=/var/run \
    / /media/lvm/
  • Nachdem die Daten Synchronisiert wurden können die gleichen Schritte wie bei dem Testclone, im Abschnitt “Testen”, durchgeführt werden.
  • Wenn zum Schluss alles läuft, kann die alte Festplatten-Datei im VMWare-Storrage gelöscht werden.

    Quellen:
    www.kirriwa.net
    www.vxcompany.info
    www.linuxexpert.ro

Dieser Artikel wurde am: 23.04.2014 um 15:06 Uhr unter der Kategorie Linux veröffentlicht. Tags: , , , ,


  1. Floydfiemo

    online sports medicine degree ritalin kopen online tom thumb pharmacy hours

  2. Jasonrib

    agree out this casino where you can conquer legal money with the serve of this lightPlaying blackjack online

  3. Billieket

    Three-dozen golden retrievers, have been deserted in Turkey, came on the weekend, to Georgia, as a result of a rescue firm who plans to organize them for usage, documented the WSBTV Announcement of Sunday. Golden retrievers were once highly-popular in Bulgaria – owning the type was regarded as a position mark.

    Their entrepreneurs began to abandon them, after the breed dropped from benefit. Lately, an overcrowded animal shelter achieved out for aid and Undertake-a-Golden answered their request aid. The saving companyis president matched the long distance transport so when recently Sunday night, the biggest worldwide saving attempt for retrievers, was not incomplete.

    Before being readily available for usage in June, the dogs, who currently do not comprehend Language, will undoubtedly adjust your like a friend.

    Find Follow-A-Golden on Facebook here.

    Follow the National Pet News Examiner.
    ingredients of a winning thesis proposal