Wie kann die Größe von VM-Images einfach geändert werden?


0

Festplatten-Images von virtuellen Maschinen enthalten normalerweise eine Partitionstabelle, die ein oder mehrere Dateisysteme enthält. Das Ändern der Größe ist etwas schmerzhaft, da Sie die Partitionstabelle sorgfältig neu schreiben müssen, bevor Sie die Größe der Partition ändern können. In einer Linux-VM kann die geänderte Partitionstabelle nicht sofort eingelesen werden, sodass Sie einen weiteren Neustart der VM durchführen müssen.

Ich würde es begrüßen, wenn das Disk-Image das Dateisystem direkt und ohne Partitionen enthält. Dies würde eine einfache Größenänderung sowohl innerhalb als auch außerhalb der VM ermöglichen. Bei einer solchen Installation ist der Grub-Bootloader jedoch nicht mehr so ​​zuverlässig, da er über eine fest codierte Blockposition auf seine Stage2 zeigen muss, wodurch die VM alle paar Monate nicht mehr bootfähig ist, wenn das Dateisystem Daten verschiebt. (Bei einer DOS-Partitionstabelle wird der nicht zuordenbare Speicherplatz zwischen MBR und der ersten Partition verwendet, um Stage2 zu speichern. Bei anderen Partitionstabellen erstellen Sie eine separate Bootloader-Partition für diese Partition.)

Gibt es einen Weg, dies zu umgehen?

Wie sollte ich ein VM-Image organisieren, damit die Größe so einfach wie möglich geändert werden kann?

Erste Ideen sind:

  • Verwenden Sie zwei Festplatten-Images pro VM, eine Festplatte mit fester Größe nur für den Bootloader (MBR + Stufe 2) und eine zweite Festplatte, die direkt das Dateisystem enthält.

  • Verwenden eines anderen Bootloaders. Aber haben LILO und Syslinux nicht das gleiche Problem? Die ersten 512 Bytes einer Festplatte sind einfach zu klein, um einen Dateisystemtreiber aufzunehmen.

Gibt es einen anderen, vielleicht einfacheren Weg, dies zu erreichen?

Antworten:


-1

Stellen Sie zunächst fest, dass es sich um eine Trennung zwischen Hardware und Software handelt. Sie passen nicht dynamisch zueinander, weil sie radikal verschiedene Dinge sind.

Ich würde es begrüßen, wenn das Disk-Image das Dateisystem direkt und ohne Partitionen enthält.

Die Partitionstabelle gibt an, wie das Betriebssystem weiß, welche Hardware für die Datenspeicherung offiziell verwendet wird. Ein typisches Betriebssystem ermittelt die Größe einer Festplatte NICHT dynamisch. Wenn Sie die zugrunde liegende Festplattengröße auf "kleiner" ändern, müssen Sie die Partitionstabelle entsprechend ändern. auch wenn Sie die Extents des Laufwerks für die Partition verwenden.

Außerdem sind dem Hypersvisor die Betriebssystemdetails und deren Partitionen von Natur aus nicht bekannt, da Partitionen von Natur aus Software sind und der Hypervisor NUR Hardware simuliert.

Dies bedeutet, dass Sie eine integrierte Software- / Hardwarelösung benötigen, bei der jeder den anderen kennt und den anderen kontrolliert. Mir ist so etwas nicht bewusst.

Dies würde eine einfache Größenänderung sowohl innerhalb als auch außerhalb der VM ermöglichen.

Stellen Sie sich eine VM in Bezug auf Hardware vor. Sie möchten im Wesentlichen die Größe einer echten Festplatte im laufenden Betrieb ändern und das Betriebssystem dynamisch anpassen. So werden die Dinge nicht eingerichtet. Das Ändern der Größe einer virtuellen Festplatte im Vergleich zu einer realen Hardware-Festplatte unterscheidet sich nicht vom Betriebssystem. Nur weil es virtuell ist, heißt das nicht, dass sie sich in irgendeiner Weise "integrieren".

Wie sollte ich ein VM-Image organisieren, damit die Größe so einfach wie möglich geändert werden kann?

Sie können Ihr Betriebssystem von allen anderen Dateien trennen .; Das heißt, Sie haben eine separate virtuelle Festplatte (VD) für Ihr Betriebssystem, die genügend Speicherplatz für Änderungen und Aktualisierungen bietet. Dann installiere das "andere Zeug" auf einem anderen VD. Dadurch können Sie eine Partition des Nicht-Root-Laufwerks ändern, was von Natur aus einfacher ist als das Ändern der Partition eines Root-Laufwerks. Die meisten meiner VMs verfügen zu diesem Zweck über mindestens 2 virtuelle Festplatten.

LVM ist auch eine andere Sache, die dazu beitragen soll, aber mir sind alle Optionen dort unbekannt.


Vielen Dank, dass Sie sich die Zeit genommen haben, eine so lange Antwort zu schreiben, aber für mich ergibt das keinen Sinn. Beispiel: "Die Partitionstabelle gibt an, wie das Betriebssystem weiß, welche Hardware für die Datenspeicherung offiziell verwendet wird." ... Das ist schlicht falsch. Ich kann eine virtuelle Festplatte anhängen, die keinerlei Patitionstabelle hat (z. B. den MBR auf Null gesetzt), und das Betriebssystem auf der virtuellen Festplatte kennt immer noch die genaue Größe.
Vog

"Sie können Ihr Betriebssystem von allen anderen Dateien trennen. Dies ist eine separate virtuelle Festplatte (VD) für Ihr Betriebssystem, die genügend Speicherplatz für Änderungen und Aktualisierungen bietet." " Liste. Ich habe nach Optionen gefragt, die sich von dieser funktionierenden, etwas umständlichen Lösung unterscheiden.
Vog

Ja, Sie können eine Festplatte anhängen, und die Festplatte kann ihre Größe zurückmelden, aber bis die Festplatte zugewiesen (partitioniert) ist, kann das Betriebssystem sie nicht im typischen Sinne "verwenden". Das Betriebssystem kann die Festplattengröße aus demselben Grund nicht ändern, aus dem der Hypervisor die Partitionsgröße nicht ändern kann. Auf einem Laufwerk ist eine Partition erforderlich, damit ein Betriebssystem sie für seine eigenen Dateien verwenden kann. Diese Antwort sollte vor allem zeigen, wie der Hypervisor und der OS-Server zwei SEHR UNTERSCHIEDLICHE Funktionen haben, die Sie nicht mischen können.
Damon

Mein Vorschlag war, die Host-Betriebssystemdateien von der installierten Software zu trennen. Dies unterscheidet sich stark von der Trennung von GRUB vom Host-Betriebssystem.
Damon

So viel halbes Wissen sowie einfach falsche Aussagen in so wenigen Sätzen. Ich weiß ehrlich gesagt nicht, wie ich damit richtig umgehen soll, außer die Antwort runter zu stimmen. Nur um ein einzelnes Beispiel zu nennen: "Und eine Partition auf einem Laufwerk ist erforderlich, damit ein Betriebssystem sie für seine eigenen Dateien verwenden kann" ... Nein, Sie brauchen überhaupt keine Partitionen. Es ist sicher ratsam, aber nicht erforderlich. Ich habe in der Vergangenheit viele VMs eingerichtet, bei denen sich das Dateisystem direkt auf dem Festplatten-Image befand, ohne Partitionstabelle. Es hatte Nachteile, aber es hat funktioniert.
Vog
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.