.png)
Aus verschiedenen Gründen bin ich nun bei einem einzelnen logischen Linux-Volumen mit 45 TB ohne Partitionstabelle gelandet, das als NTFS formatiert ist und 28 TB Daten enthält (das Dateisystem selbst ist 28 TB groß).
Das Dateisystem wurde unter Linux erstellt und kann von Linux gemountet werden. Das Problem tritt auf, wenn ich versuche, es innerhalb einer KVM-basierten Windows-VM auf derselben Box zu mounten. Windows erkennt kein 28-TB-Dateisystem, sondern eine 1,8-TB-Festplatte mit einigen zufällig dimensionierten, nicht hilfreichen Partitionen.
Ich gehe davon aus, dass dies daran liegt, dass Windows versucht, die ersten paar Bytes der echten NTFS-Dateisystemdaten als Partitionstabelle zu lesen.
Ich sehe einige mögliche Lösungen für dieses Problem, kann mir aber nicht vorstellen, wie ich sie tatsächlich umsetzen kann:
- Hat Windows eine nicht partitionierte Festplatte (einzelnes Volume) als Dateisystem gelesen?
- Irgendwie eine Partitionstabelle auf diesem logischen Datenträger generieren, ohne die im Dateisystem selbst gespeicherten Daten zu zerstören?
- Fälschen Sie auf irgendeine Weise eine Partitionstabelle, die auf das LVM-Volume verweist, und exportieren Sie diese in den KVM-Gast (der in libvirt ausgeführt wird).
Die aktuelle „Partitionstabelle“, wie sie von parted gemeldet wird, ist:
Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/chandos--dh-data: 48.0TB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Number Start End Size File system Flags
1 0.00B 48.0TB 48.0TB ntfs
Antwort1
Ich hatte ein ähnliches Problem, als ich versehentlich ein Image einer Partition statt einer Festplatte erstellte. Die Images wurden über das Netzwerk kopiert und ich hatte keine Zeit, sie erneut zu kopieren. Sie waren jedoch viel kleiner als 28 TB und ich verwendete ein Verfahren, bei dem eine Kopie des Images erstellt werden musste.
Das ursprüngliche Bild wurde mit folgender Methode aufgenommen:
dd if=/dev/sda1 of=/image.bin
Um eine Partitionstabelle hinzuzufügen, ohne alles über das Netzwerk zu kopieren, habe ich nur den MBR in eine Datei kopiert.
dd if=/dev/sda of=/mbr.bin bs=512 count=1
Dann habe ich das MBR vorangestellt und die Daten kopiert.
fdisk -l /mbr.bin
# take the start position * units in bytes (ex start at 256 * units of 512 bytes = 131072 bytes)
truncate -s (disk size in bytes + number of above) /newfile.bin
dd if=/mbr.bin of=/newfile.bin
dd if=/image.bin of=/newfile.bin oflag=seek_bytes seek=(number from above)
Nach Abschluss /newfile.bin
sind die vollständige Partitionstabelle und die Daten vorhanden.
Antwort2
Ich habe dafür eigentlich keine gute Lösung gefunden. Glücklicherweise gibt es ein weiteres Laufwerksregal mit ca. 30 TB Speicherplatz, das ich für die Migration auf ein neu partitioniertes Volume verwenden kann. Es wird lange dauern, aber es sollte funktionieren.
Es gab den Vorschlag, einige clevere Dinge mit demLinux Device Mapper(Erstellen eines virtuellen Geräts, das neben dem logischen LVM-Volume eine gefälschte GPT-Partitionstabelle aus einer Datei zuordnet), aber das überlasse ich jemandem, der schlauer ist.
Bearbeiten:Tatsächlich habe ich am Ende eine Lösung für dieses Problem geschrieben.Hier
Antwort3
Für Festplatten mit mehr als 2 TB muss die GPT-Partitionstabelle verwendet werden. Für Festplatten mit <2 TB ist MBR ausreichend.