not a bootable Disk VM MS Server 2016

Also die Partitionstabelle schaut nicht richtig aus:
  • Keine Partition als Boot markiert
  • Typen unbekannt
  • Alle kleiner als 2 GiB
  • nicht in Disk-Reihenfolge
  • überlappend
Ist noch bekannt, ob da mehr als eine Partition drauf war?
Wenn nur eine, dann einfach mal ne Partition mit Startsektor 2048 und maximaler Größe anlegen und erstmal nur schauen, ob ntfsinfo -m (aus dem Paket ntfs-3g) da was mit anfangen kann.
 
Bei der Boot Disk ist genau der erste Sektor (512 Byte) korrupt, danach kommen nur noch Nullen, was zu erwartet ist. Wir werden versuchen, Logging einzubauen, um die Ursache für den Fehler endlich finden zu können.
Bei einem Nullpointer auf RAM hagelt es halt beim Zugriffsversuch sofort SEGVs, aber auf Platte eben nicht, und dann passiert sowas hier.
Jemand muß mal einen Build mit nem assert(writeaddress!=0) bauen. (Klappt natürlich nur mit bereits eingerichteten VM-Containern.)
 
Schon mal versucht ne Windows iso zu booten und in der Reparaturkonsole ein bootrec /fixboot und bootrec / fixmbr auszuführen?
 
Schon mal versucht ne Windows iso zu booten und in der Reparaturkonsole ein bootrec /fixboot und bootrec / fixmbr auszuführen?
Das hilft nur, wenn der Bootloader Stage 1 oder 2 beschädigt ist, aber nicht, wenn die Partitionstabelle komplett weg ist.
 
Hi,
Bei einem Nullpointer auf RAM hagelt es halt beim Zugriffsversuch sofort SEGVs, aber auf Platte eben nicht, und dann passiert sowas hier.
Jemand muß mal einen Build mit nem assert(writeaddress!=0) bauen. (Klappt natürlich nur mit bereits eingerichteten VM-Containern.)
das Problem ist, dass es viele gültige Write-Szenarien nach Sektor 0 gibt. Z.B. bei einer Disk die ext4 formatiert ist (ohne Partitionen), beim Mounten/Unmounten. Oder bei jeder validen Änderung einer Partitionstabelle. Ein Build, wo solche Writes und relevante Infos geloggt werden (nicht assert) könnten wir zur Verfügung stellen, aber wäre auch zu viel Lärm für alle die nicht betroffen sind. Leider scheint es jetzt auch bei den Betroffenen nicht wirklich häufiger aufzutreten, also ist eher fraglich ob so ein on-demand-Build einen Treffer landen würde.

Wenn wir die Kriterien weiter einschränken, nur bei SATA, nur wenn nach Sektor 0 und nur ein Sektor geschrieben wird (in den wenigen bisherigen Dumps, die wir bekommen haben, war wirklich nur der erste Sektor korrupt) und Heuristiken einbauen, um valide Writes zu erkennen, dann könnten wir uns überlegen das Logging generell im Standard-Build einzubauen und die Wahrscheinlichkeit einen Treffer zu landen wesentlich erhöhen.
 
Hi,

das Problem ist, dass es viele gültige Write-Szenarien nach Sektor 0 gibt. Z.B. bei einer Disk die ext4 formatiert ist (ohne Partitionen), beim Mounten/Unmounten.
Ist das Problem denn überhaupt schon einmal mit einem Filesystem direkt auf dem Device aufgetreten? In den Threads die mir bisher aufgefallen sind stand immer was von Windows und MBR ...
Oder repariert fsck -a das automatisch, und es fällt daher niemandem auf?
Oder bei jeder validen Änderung einer Partitionstabelle.
Was allerdings nicht so häufig vorkommt und schon gar nicht ohne manuellen Eingriff. Da könnte man die VM dann auch mal kurz ungepatcht starten.
Früher gab das ja mal häufig eine Option im BIOS, wo man den MBR-Zugriff einschränken konnte. Hat sich natürlich mit GPT weitgehend erledigt, das hat seine Daten ja woanders.
Ein Build, wo solche Writes und relevante Infos geloggt werden (nicht assert) könnten wir zur Verfügung stellen, aber wäre auch zu viel Lärm für alle die nicht betroffen sind.
So oft tritt das ja nicht auf. Ich hätte eher Bedenken, daß das die Schreibgeschwindigkeit spürbar verschlechtert.
 
Ist das Problem denn überhaupt schon einmal mit einem Filesystem direkt auf dem Device aufgetreten?
Nicht dass ich wüsste. Aber das ist ja nicht der Punkt. Wenn wir Logging machen, müssen wir valide Writes detektieren, um nicht allen Leuten ihre Logs vollzuspammen. Und das mit dem Filesystem ist halt ein Beispiel, wo solche Writes valide sind.

In den Threads die mir bisher aufgefallen sind stand immer was von Windows und MBR ...
Im Bug-Report gibt's auch Fälle mit Linux, und sogar einen mit FreeBSD, aber leider haben wir da keine Dumps. Die wären sehr interessant, um zu sehen, ob es die Korruption bei verschiedenen Gästen das gleiche Muster hat oder eben nicht.

Was allerdings nicht so häufig vorkommt und schon gar nicht ohne manuellen Eingriff. Da könnte man die VM dann auch mal kurz ungepatcht starten.
Für Leute die öfters betroffen sind könnten wir schon eher einen Build mit mehr Logging machen, die würde es vermutlich nicht so stören, wenn false positives in den Log-Messages auftauchen (kann man dann ja gleich sehen welches Device es war).

So oft tritt das ja nicht auf. Ich hätte eher Bedenken, daß das die Schreibgeschwindigkeit spürbar verschlechtert.
Checks ob offset < 512 ist, ist eine CPU-Instruktion. Das wäre vernachlässigbar. Alle anderen Checks und False-Positive-Dedektionen werden dann nur gemacht falls der erste Check getriggert hat.

Genau weil es nicht häufig auftritt und nicht reproduzierbar ist, wäre allgemeines Logging viel besser als ein Spezial-Build, der erst extra installiert werden muss. Sonst haben wir dann im Laufe des nächsten Jahres ~10 neue Reports und bei allen war der Spezial-Build nicht installiert. Aber wie gesagt, allgemein Logging einzubauen, erfordert, dass eben nur unter den ganz bestimmten Kriterien geloggt wird, um nicht aller Leute Logs vollzumüllen. Wie solche Kriterien sein könnten, hab ich ja schon geschrieben:
Wenn wir die Kriterien weiter einschränken, nur bei SATA, nur wenn nach Sektor 0 und nur ein Sektor geschrieben wird (in den wenigen bisherigen Dumps, die wir bekommen haben, war wirklich nur der erste Sektor korrupt) und Heuristiken einbauen, um valide Writes zu erkennen, dann könnten wir uns überlegen das Logging generell im Standard-Build einzubauen und die Wahrscheinlichkeit einen Treffer zu landen wesentlich erhöhen.
 
Nicht dass ich wüsste. Aber das ist ja nicht der Punkt. Wenn wir Logging machen, müssen wir valide Writes detektieren, um nicht allen Leuten ihre Logs vollzuspammen. Und das mit dem Filesystem ist halt ein Beispiel, wo solche Writes valide sind.
Aber mount/umount macht man auch nicht so oft.
Und selbst das sollte daran erkennbar sein, daß sich nicht der ganze Sektor verändert.

Im Bug-Report gibt's auch Fälle mit Linux, und sogar einen mit FreeBSD, aber leider haben wir da keine Dumps. Die wären sehr interessant, um zu sehen, ob es die Korruption bei verschiedenen Gästen das gleiche Muster hat oder eben nicht.
Allerdings.
War das eigentlich immer auf zfs bisher?
Checks ob offset < 512 ist, ist eine CPU-Instruktion. Das wäre vernachlässigbar. Alle anderen Checks und False-Positive-Dedektionen werden dann nur gemacht falls der erste Check getriggert hat.
Genau weil es nicht häufig auftritt und nicht reproduzierbar ist, wäre allgemeines Logging viel besser als ein Spezial-Build, der erst extra installiert werden muss. Sonst haben wir dann im Laufe des nächsten Jahres ~10 neue Reports und bei allen war der Spezial-Build nicht installiert. Aber wie gesagt, allgemein Logging einzubauen, erfordert, dass eben nur unter den ganz bestimmten Kriterien geloggt wird, um nicht aller Leute Logs vollzumüllen. Wie solche Kriterien sein könnten, hab ich ja schon geschrieben:
Zu prüfen ob der Sektor auf 55AA endet oder - für den Fall von fs on raw device - fs magic enthält oder im Fall von Schreibzugriffen auf Sektor 0 mit dem vorigen Inhalt zu vergleichen und kleine Änderungen zu ignorieren sollte eigentlich alle legitimen Zugriffe abdecken.
Ansonsten käme es mal auf nen Versuch an, wieviel Logging denn so auf einem üblichen System auftritt.
 
Aber mount/umount macht man auch nicht so oft.
Und selbst das sollte daran erkennbar sein, daß sich nicht der ganze Sektor verändert.
Bei jedem Reboot des Gastes. Also muss das auf jeden Fall beim Logging gefiltert werden.

Allerdings.
War das eigentlich immer auf zfs bisher?
Nein, komplett unterschiedlich. Siehe den Bug-Report.

Zu prüfen ob der Sektor auf 55AA endet oder - für den Fall von fs on raw device - fs magic enthält oder im Fall von Schreibzugriffen auf Sektor 0 mit dem vorigen Inhalt zu vergleichen und kleine Änderungen zu ignorieren sollte eigentlich alle legitimen Zugriffe abdecken.
Ansonsten käme es mal auf nen Versuch an, wieviel Logging denn so auf einem üblichen System auftritt.
Ja, genau solche Heuristiken zu verwenden wäre ja geplant.
 
Ach Leute, ist ja Wahnsinn, da kann ich euch nicht folgen.

Die Umwandlung von cqow2 zu raw und zurück habe ich mit folgenden Befehlen durchgeführt:
qemu-img convert -f qcow2 -O raw vm-110-disk-0.qcow2 vm-110-disk-0.img
und zurück mit
qemu-img convert -f raw -O qcow2 vm-110-disk-0.img vm-110-disk-0.qcow2

Aber ja, auf die Idee, mit der Installations-DVD den Bootsektor neu zu schreiben, bin ich gekommen und dieser Versuch war nicht erfolgreich.
Vielen Dank
Michael
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!