Wie ändere ich ein physisches Partitionssystem auf LVM?

10

Ich habe einen Server mit Debian, der 3 physische Partitionen hat, die die gesamte Festplatte abdecken: Boot, Root und Swap. Jetzt möchte ich diese Partitionen durch LVM-Partitionen ersetzen. Ich weiß, wie Debian zu Beginn mit LVM installiert wird, aber in diesem Fall kann ich das System zu Beginn nicht installieren, da der Anbieter mir einen Server mit Remotezugriff und das auf diese Weise installierte System zur Verfügung stellt.

Wie kann ich diese Partitionen nur über eine SSH-Verbindung und möglicherweise einen anderen Remote-Server ändern, auf dem einige zeitliche Daten abgelegt werden sollen?

Daniel Hernández
quelle
2
Hinweis für enge Wähler: Dies ist kein Betrug der referenzierten Frage, da es hier eine Wendung gibt: vollständig entfernt.
sysadmin1138

Antworten:

-1

Sie können sie auf einem laufenden Server unmöglich durch nur /, / boot- und <swap> -Partitionen ersetzen. Die einzige Möglichkeit, dies zu tun, besteht darin, die Bereitstellung der Partition / aufzuheben, sie zu verkleinern und am Ende eine neue LVM-Partition zu erstellen. Da Sie jedoch nur über Remote-SSH-Zugriff verfügen, können Sie eine Live-Partition ohne Datenbeschädigung möglicherweise nicht verkleinern.

mricon
quelle
3
Es ist möglich, die Größe eines ext3-Dateisystems zu ändern, während es gemountet ist: linux.die.net/man/8/ext2online .
200_erfolg
6
Sag niemals nie ...
the-wabbit
21

Ein kurzes Update von meiner Seite. Kontext: Heute habe ich einen dedizierten Server online gestellt, der anstelle von LVM mit einem physischen Partitionsschema installiert wurde. Es gab 3 Partitionen:

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

Aufgrund des fehlenden Konsolenzugriffs bestand das Endziel darin, die vorhandene Root-Partition in LVM zu konvertieren.

Da ext4 nicht verkleinert werden kann, bestand die einzige Möglichkeit darin, die Swap-Partition als temporären Root wiederzuverwenden. Ich habe mich auch entschlossen, das temporäre Stammverzeichnis mit LVM einzurichten, um sicherzustellen, dass der Prozess ordnungsgemäß funktioniert.

Zuerst stellte sich der Tausch heraus:

swapoff -a

Ändern Sie dann die Größe der Partition über parted (ursprünglich wurde sie von 742 auf 750 gestartet):

parted
resize 3 742 744

und erstellte eine Partition für das LVM:

mkpart primary ext2 744 750
set 4 lvm on

PV / VG / LV / Dateisystemerstellung für das temporäre Stammverzeichnis:

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

Der nächste Schritt bestand darin, den Stamm an den temporären Ort zu kopieren:

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

Sobald 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 dort war der letzte und am meisten unerwünschte Teil ohne Konsolenzugriff das Ändern der Datei /boot/grub/grub.conf:

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

Um auf der sicheren Seite zu sein: insmod lvm wurde zusammen mit dem dolvm-Parameter für den Kernel hinzugefügt und der Root-Pfad wurde ebenfalls in root = / dev / mapper / VolGroup00-tmproot geändert. Es ist wichtig, zu diesem Zeitpunkt den Pfad / dev / mapper / zu verwenden. Als sichere Einzahlung habe ich auch den Parameter panic = 10 hinzugefügt und den Standard-Starteintrag im Header nicht geändert. Stattdessen habe ich versucht, dem Grub nur einmal zu sagen, dass er mit der neuen Einstellung booten soll, und im Fehlerfall könnte der ursprüngliche Eintrag funktionieren:

grub
savedefault --default=1 --once

Und schlussendlich:

reboot

Zum 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 bekam schließlich mit LVM den Root an der richtigen Stelle.

Hoffe das hilft.

uha
quelle
1
Dies funktionierte sehr gut für mich, als ich mein 2-Disk-Raid-1-Setup auf Raid 1 vollständig entfernt auf LVM konvertierte (einige Ersatzdisketten waren vorinstalliert). In grub2 besteht die neue Möglichkeit, einen Menüeintrag nur einmal neu zu starten, darin, zuerst Ihre Datei / etc / default / grub zu bearbeiten, um sicherzustellen, dass GRUB_DEFAULT = gespeichert ist. Dann update-grub. Anschließend führen Sie aus grub-reboot #, um den Menüpunkt festzulegen, der nur für den nächsten Neustart verwendet werden soll. Dann können Sie neu starten.
Casey
Ubuntu (und Debian) haben ein eigenes System zum Ändern der Grub-Konfiguration. Das Aktualisieren der Root-Partition kann auf die hier angegebene Weise sauberer erfolgen: unix.stackexchange.com/a/5318/192211
EFraim
3

Unter Linux ist nichts unmöglich, aber Sie müssten entschlossen und verrückt sein, um zu versuchen, was Sie beschreiben. Beachten Sie, dass bei einem SSH-Zugriff die Wahrscheinlichkeit groß ist, dass Sie bei einem Fehler den Zugriff auf den Server verlieren. Wenn Sie eine "serielle" Remote-Konsole und einen virtuellen Netzschalter haben, kann dies hilfreich sein. 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 remote in RAID1 zu konvertieren . Die Schritte, die Sie für LVM versuchen würden, wären analog.

Betrachten wir zunächst die Notwendigkeit eines temporären Speicherplatzes. Angenommen, Sie haben keine zweite Festplatte auf dem Server, können Sie die vorhandenen Partitionen mithilfe von verkleinernparted . Dies erfordert natürlich, dass Ihre Boot- und Root-Partitionen weniger als die Hälfte der Festplatte belegen und ein verkleinerbares Dateisystem verwenden. (XFS und JFS können beispielsweise nicht verkleinert werden.)

Nachdem Sie Ihre vorhandenen Partitionen verkleinert haben, können Sie ein physisches LVM-Volume im freigegebenen Speicherplatz, eine Volume-Gruppe und logische Volumes darin erstellen. Replizieren Sie Ihre Dateisysteme. (Wenn Sie Ihr Root-Dateisystem replizieren, sollten Sie alles außer sshdbeenden und sich idealerweise im Einzelbenutzermodus befinden. Sie müssen wahrscheinlich ein bereitgestelltes Dateisystem verwenden, rsyncanstatt ddes zu replizieren.)

Anschließend würden Sie eine Initiale mit LVM-Unterstützung vorbereiten und GRUB anweisen, das neue System zu starten, wie in Warren Togamis Tutorial beschrieben. Sobald Sie dies getan haben, ist es einfach, die alten Dateisysteme mithilfe partedder LVM-Volumes zu löschen und zu vergrößern.

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

200_Erfolg
quelle
3

Ich habe zuvor meine Root-Partition "/", die auf eine Festplattenpartition "/ dev / sda2" mit 10G auf Centos 6 zeigte, auf eine LV-Partition migriert. Folgende Schritte wurden ausgeführt:

  • Fügen Sie auf VMware von 10G eine Festplatte hinzu.
  • Erkennen Sie die Festplatte, ohne das System neu zu starten.
ls / sys / class / scsi_host / | während x lesen; Echo "- - -"> / sys / class / scsi_host / $ {x} / scan; erledigt
  • 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" -Schnittstelle befinden, können Sie eine Partition mit dem Schlüssel "n" erstellen, der + 9G Kapazität zuweist. Ändern Sie dann die Partitionsart mit dem Schlüssel "t", der "8e" (lvm-Partition) zuweist, und schließlich den Schlüssel "w", 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 ist, können Sie 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
  • Nachdem die LV-Einheiten erstellt wurden, können Sie einen FS zuweisen und ihn an das aktuelle System anschließen.
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, wie hoch der FS Ihrer aktuellen Partition ist, können Sie dies mit folgenden Befehlen herausfinden:
df -lhT
cat / etc / fstab
blkid
  • Wenn der neue LV gemountet ist, können wir alle Dateien des Systems kopieren.
find / -xdev | cpio -pmvd / mnt / new_root /
  • Sobald die Dateien kopiert wurden, können wir die "chroot" ändern, aber bevor wir einige Partitionen mounten:
cd / mnt / new_root /
mount -t proc / proc proc
mount -t sysfs / sys sys /
mount --rbind / dev dev /
  • Lassen Sie uns jetzt die Chroot ändern
chroot / mnt / new_root /
  • Sobald wir im neuen Stammverzeichnis sind, ändern Sie die Datei:
vi / etc / fstab
  • Verlassen der Datei fast ähnlich wie:
# UUID = 98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa / ext4 Standard 1 1
/ dev / mapper / vg_root-lv_root / ext4 Standard 1 1
  • Sobald die Datei ordnungsgemäß geändert wurde, können Sie im Stammverzeichnis eine Datei mit dem Namen "./autorelabel" erstellen, nur für den Fall, dass Sie mit SELINUX "erzwingen" oder "zulassen" arbeiten.
Berühren Sie ./autorelabel
  • Verlassen wir jetzt die Chroot-Umgebung von / mnt / new-root
Ausfahrt
  • Wenn Änderungen basierend auf Ihrem Szenario vorgenommen wurden, können Sie eine der letzten Änderungen vornehmen, dh die Grub-Datei "/boot/grub/grub.conf" ändern und ein neues Menü hinzufügen (ändern Sie Ihre aktuelle Startoption nicht bis zur neuen eine hinzugefügte Funktion funktioniert korrekt).
# Vor
Titel 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 rd_NO_DM rhgb leise
        initrd /initramfs-2.6.32-573.el6.x86_64.img

# jetzt
Titel 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 rd_NO_DM rhgb leise
        initrd /initramfs-2.6.32-573.el6.x86_64.img

Titel 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 = pc KEYTABLE = us rhgb quiet
        initrd /initramfs-2.6.32-573.el6.x86_64.img

# Die hinzugefügte Zeile war 
Titel 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 = pc KEYTABLE = us rhgb quiet
        initrd /initramfs-2.6.32-573.el6.x86_64.img
  • Sobald die Änderungen an der Grub-Datei vorgenommen wurden, können Sie die Regenerierung einer neuen initrd-ISO-Datei beenden:
CD / Boot
cp -av initramfs - $ (uname -r) .img initramfs - $ (uname -r) .img.old
dracut -f
  • Endlich ein Neustart:
init 6
# oder
Neustart
  • Sobald das Grub-Menü angezeigt wird, 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 von = / dev / sda bs = 1
  • Letzter steiler Satz als Standardeintrag das neue Element, das im Grub-Menü "/boot/grub/grub.conf" hinzugefügt wurde:
# default = 0
Standard = 1

Hoffe, dass die zuvor bereitgestellten Informationen für jemanden hilfreich sind.

Danke im Voraus,

Manuel Lazo

Manuel Lazo
quelle
1

Er könnte ein Zwischenrettungssystem in der (zuvor deaktivierten) Swap-Partition einrichten (nervenaufreibende Arbeit, wenn Sie keinen RAC in der Maschine haben) und von dort aus arbeiten. Außerdem gibt es für bestimmte Dateisysteme Online-Tools zur Größenänderung. Anschließend wird die Partition verkleinert und neu gestartet. Dies ist bei KWYD zwar möglich, aber möglich.

Rackandboneman
quelle
Um zwei noch verrücktere Ideen zu beschreiben, die sogar mit buchstäblich nur einer Partition auf der Festplatte funktionieren würden: a) Erstellen Sie eine große leere Datei auf der Root-Partition, stellen Sie sicher, dass sie zusammenhängend zugewiesen ist, und bearbeiten Sie sie über den Loopback-Treiber ... und dann munge Die Partitionstabelle, damit die Partition am physischen ersten Block dieser Datei beginnt. b) chroot (oder sogar pivot_root, wenn noch möglich) selbst in eine Ramdisk und richte dort eine Basis und ein Backup ein ... nuke das eigentliche Root-Dateisystem unter dir.
Rackandboneman