GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie ändere ich ein physisches Partitionssystem auf LVM?

Lösung 1:

Kurzes Update von meiner Seite. Kontext:Heute habe ich online einen dedizierten Server mit physischem Partitionsschema anstelle von LVM installiert. Es gab 3 Partitionen:

/boot (ext4) - 512M/ (ext4) - 730Gswap - 8G

Aufgrund der Tatsache, keinen Konsolenzugriff zu haben, bestand das endgültige Ziel darin, die vorhandene Root-Partition in LVM zu konvertieren.

In Anbetracht der Tatsache, dass ext4 nicht verkleinert werden kann, bestand die einzige Möglichkeit darin, die Swap-Partition als temporäres Root wiederzuverwenden. Ich habe mich auch entschieden, das temporäre Root mit LVM einzurichten, um sicherzustellen, dass der Prozess richtig funktioniert.

Als erstes stellte sich der Tausch heraus:

swapoff -a

Dann die Größe der Partition über parted geändert (ursprünglich wurde sie von 742 auf 750 gestartet):

parted
resize 3 742 744

und eine Partition für den LVM erstellt:

mkpart primary ext2 744 750
set 4 lvm on

PV/VG/LV/Dateisystem-Erstellung für den temporären Stamm:

pvcreate /dev/sda4
vgcreate VolGroup00 /dev/sda4
lvcreate -L 5.73G -n tmproot VolGroup00
mkfs.ext4 /dev/VolGroup00/tmproot

Der nächste Schritt war, die Wurzel an den temporären Ort zu kopieren:

mount /dev/VolGroup00/tmproot /media
rsync -ravzxq / /media/

Als alles da war, musste auch der Eintrag für das Root-Dateisystem in /media/etc/fstab geändert werden:

/dev/VolGroup00/tmproot /                       ext4    defaults        1 1

Fast geschafft, war der letzte und, sagen wir, der unerwünschteste Teil ohne Konsolenzugriff, die /boot/grub/grub.conf zu ändern:

Originaleintrag:

title CentOS (2.6.32-279.22.1.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-279.22.1.el6.x86_64 ro root=UUID=e769af21-d9e1-455f-a6a7-7a9c84d8cbea rd_NO_LUKS LANG=en_US.UTF-8  KEYBOARDTYPE=pc KEYTABLE=hu rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-279.22.1.el6.x86_64.img

geänderter Eintrag:

title CentOS (2.6.32-279.22.1.el6.x86_64) LVM
insmod lvm
kernel /vmlinuz-2.6.32-279.22.1.el6.x86_64 ro LANG=en_US.UTF-8  KEYBOARDTYPE=pc KEYTABLE=hu SYSFONT=latarcyrheb-sun16 crashkernel=auto dolvm root=/dev/mapper/VolGroup00-tmproot panic=10 
#rd_NO_DM rd_NO_MD rd_NO_LUKS
initrd /initramfs-2.6.32-279.22.1.el6.x86_64.img

Nur um auf der sicheren Seite zu sein:Insmod lvm wurde zusammen mit dem dolvm-Parameter für den Kernel hinzugefügt und auch der Root-Pfad wurde auf root=/dev/mapper/VolGroup00-tmproot geändert. Es ist wichtig, zu diesem Zeitpunkt den Pfad /dev/mapper/ zu verwenden. Zur Sicherheit habe ich auch noch den Parameter panic=10 hinzugefügt und den Default-Boot-Eintrag im Header nicht verändert. Stattdessen habe ich versucht, dem Grub zu sagen, dass er nur einmal mit den neuen Einstellungen booten soll und im Fehlerfall der ursprüngliche Eintrag funktionieren könnte:

grub
savedefault --default=1 --once

Und schließlich:

reboot

Beim ersten Mal war es für mich in Ordnung, also wiederholte ich den gesamten Vorgang mit dem Erstellen einer neuen Volume-Gruppe über der ursprünglichen Root-Partition und schließlich bekam ich das Root-Verzeichnis mit LVM an der richtigen Stelle.

Hoffe das hilft.

Lösung 2:

Unter Linux ist nichts unmöglich, aber Sie müssten entschlossen und verrückt sein, um das zu versuchen, was Sie beschreiben. Denken Sie daran, dass, wenn Sie nur SSH-Zugriff haben, die Wahrscheinlichkeit groß ist, dass Sie den Zugriff auf den Server verlieren, wenn Sie einen Fehler machen. Wenn Sie eine entfernte "serielle" Konsole und einen virtuellen Netzschalter haben, könnte das ein wenig helfen. Das heißt, wenn Sie eine brandneue Installation ohne Datenverlust haben, warum versuchen Sie es nicht? Ich habe ein Tutorial gefunden, um ein Linux-System aus der Ferne in RAID1 zu konvertieren. Die Schritte, die Sie für LVM versuchen würden, wären analog.

Betrachten wir zunächst die Notwendigkeit von temporärem Speicherplatz. Angenommen, Sie haben keine zweite Festplatte auf dem Server, könnten Sie die vorhandenen Partitionen mit parted verkleinern . Dies erfordert natürlich, dass Ihre Boot- und Root-Partitionen weniger als die Hälfte der Festplatte belegen, und sie müssen ein schrumpfbares Dateisystem verwenden. (XFS und JFS sind beispielsweise nicht verkleinerbar.)

Nachdem Sie Ihre vorhandenen Partitionen verkleinert haben, können Sie im freigegebenen Speicherplatz ein physisches LVM-Volume, eine Volume-Gruppe und darin enthaltene logische Volumes erstellen. Replizieren Sie Ihre Dateisysteme. (Wenn Sie Ihr Root-Dateisystem replizieren, sollten Sie alles außer sshd beenden , und idealerweise im Einzelbenutzermodus sein. Sie müssen wahrscheinlich rsync verwenden statt dd da Sie ein gemountetes Dateisystem replizieren.)

Dann würden Sie eine initrd mit LVM-Unterstützung vorbereiten und GRUB anweisen, in das neue System zu booten, wie in Warren Togamis Tutorial beschrieben. Sobald Sie das getan haben, ist es eine einfache Sache, die alten Dateisysteme mit parted zu löschen und Erhöhen der LVM-Volumes.

Viel Glück! Lassen Sie uns wissen, ob es funktioniert hat!

Lösung 3:

Ich habe zuvor meine Root-Partition „/“, die auf eine Festplattenpartition „/dev/sda2“ mit 10 GB auf Centos 6 verwies, auf eine LV-Partition migriert. Die durchgeführten Schritte waren die folgenden:

  • Fügen Sie eine Festplatte auf VMware von 10G hinzu.
  • Festplatte erkennen, ohne das System neu zu starten.
ls /sys/class/scsi_host/| while read x ; do echo "- - -" > /sys/class/scsi_host/${x}/scan ; done
  • Erstellen Sie eine Partition auf der neuen Festplatte, nehmen wir an, meine neue Festplatte ist /dev/sdb
  • Arbeiten mit:
fdisk /dev/sdb
  • Wenn Sie sich in der "fdisk"-Oberfläche befinden, können Sie eine Partition mit dem Schlüssel "n" erstellen, der +9 GB Kapazität zuweist, dann den Partitionstyp mit dem Schlüssel "t" ändern, indem Sie "8e" (lvm-Partition) und schließlich den Schlüssel "w" zuweisen. Um Änderungen zu übernehmen, wenn Sie sehen möchten, wie die Partitionstabelle aussieht, können Sie die Taste "p" drücken.
  • Sobald die Partition erstellt wurde, können wir mit dem folgenden Befehl überprüfen, ob das Gerät erstellt wurde (der Befehl funktioniert, wenn die Festplatte nicht verwendet wird):
partprobe /dev/sdb
  • Sobald das Gerät physisch beendet wird, können wir die LVM-Objekte in der folgenden Reihenfolge erstellen:
pvcreate /dev/sdb1
vgcreate vg_root /dev/sdb1
lvcreate -v -n lv_root vg_root -L 9G
  • Sobald die LV-Einheiten erstellt wurden, können wir einen FS zuweisen und ihn in das aktuelle System einhängen.
mkfs -t ext4 /dev/vg_root/lv_root
mkdir /mnt/new_root/
mount -t ext4 /dev/vg_root/lv_root /mnt/new_root/
  • Wenn Sie nicht wissen, was der FS Ihrer aktuellen Partition ist, können Sie ihn mit Befehlen wie :
  • herausfinden
df -lhT
cat /etc/fstab
blkid
  • Wenn das neue LV gemountet ist, können wir damit fortfahren, alle Dateien des Systems zu kopieren.
find / -xdev | cpio -pmvd /mnt/new_root/
  • Sobald die Dateien kopiert sind, können wir damit fortfahren, die "Chroot" zu ändern, aber vorher wollen wir einige Partitionen mounten:
cd /mnt/new_root/
mount -t proc /proc proc
mount -t sysfs /sys sys/
mount --rbind /dev dev/
  • Lasst uns jetzt die Chroot ändern
chroot /mnt/new_root/
  • Sobald wir im neuen Stammverzeichnis sind, ändern Sie die Datei:
vi /etc/fstab
  • Belassen der Datei fast ähnlich wie:
#UUID=98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa /                       ext4    defaults        1 1
/dev/mapper/vg_root-lv_root /           ext4    defaults        1 1
  • Sobald die Datei ordnungsgemäß geändert wurde, erstellen wir eine Datei im Stammverzeichnis mit dem Namen "./autorelabel", nur für den Fall, dass Sie mit SELINUX "enforcing" oder "permissive" arbeiten.
touch ./autorelabel
  • Verlassen wir jetzt die Chroot-Umgebung von /mnt/new-root
exit
  • Wenn Änderungen basierend auf Ihrem Szenario vorgenommen wurden, können Sie eine der letzten Änderungen vornehmen, nämlich die Grub-Datei "/boot/grub/grub.conf" ändern und ein neues Menü hinzufügen (ändern Sie nicht Ihre aktuelle Boot-Option bis das neu hinzugefügte korrekt funktioniert).
# before
title CentOS 6 (2.6.32-573.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root=UUID=98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-573.el6.x86_64.img

# now
title CentOS 6 (2.6.32-573.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root=UUID=98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-573.el6.x86_64.img

title CentOS 6 (2.6.32-573.el6.x86_64-lvroot)
        root (hd0,0)
        insmod lvm
        kernel /vmlinuz-2.6.32-573.el6.x86_64 ro dolvm root=/dev/mapper/vg_root-lv_root rd.lvm.lv=vg_root/lv_root LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet
        initrd /initramfs-2.6.32-573.el6.x86_64.img

# the line added was 
title CentOS 6 (2.6.32-573.el6.x86_64-lvroot)
        root (hd0,0)
        insmod lvm
        kernel /vmlinuz-2.6.32-573.el6.x86_64 ro dolvm root=/dev/mapper/vg_root-lv_root rd.lvm.lv=vg_root/lv_root LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet
        initrd /initramfs-2.6.32-573.el6.x86_64.img
  • Sobald die Änderungen an der Grub-Datei vorgenommen wurden, beenden wir die Neugenerierung einer neuen initrd-ISO-Datei:
cd /boot
cp -av initramfs-$(uname -r).img initramfs-$(uname -r).img.old
dracut -f
  • endlich ein Neustart :
init 6
# or
reboot
  • Sobald das Grub-Menü erscheint, wählen Sie das neu hinzugefügte „CentOS 6 (2.6.32-573.el6.x86_64-lvroot)“ und überprüfen Sie, ob es ordnungsgemäß funktioniert.
  • Wenn das System ordnungsgemäß funktioniert und "/dev/sda" nicht verwendet, kann es entfernt und von Ihrer VM oder Ihrem physischen Server getrennt werden.
dd if=/dev/zero of=/dev/sda bs=1
  • Letztes Steep-Set als Standardeintrag das neue Element, das im Grub-Menü "/boot/grub/grub.conf" hinzugefügt wurde:
#default=0
default=1

Ich hoffe, die zuvor bereitgestellten Informationen werden für jemanden hilfreich sein.

Vielen Dank im Voraus,

Manuel Lazo


Linux
  1. So ändern Sie die Identität eines Linux-Systems

  2. Wie ändern wir das Root-Passwort?

  3. So erweitern Sie eine LVM-Swap-Partition unter Linux

  4. So ändern Sie das MySQL-Root-Passwort

  5. Wie erstelle ich eine EFI-Systempartition?

So setzen Sie das Root-Passwort in Linux zurück oder ändern es

So ändern Sie die UUID der Partition im Linux-Dateisystem

So erweitern Sie die XFS-Root-Partition ohne LVM in Linux

So legen Sie den Hostnamen unter Linux fest oder ändern ihn

So ändern Sie das Root-Passwort unter Linux

So ändern Sie das Root-Passwort in Kali Linux