Größe einer Festplatte

konstantin

Well-Known Member
Hallo!

Ich möchte gerne eine Image erzeugen, in das ich FreeBSD per qemu installieren kann und anschließend auf eine andere Fesplatte per dd übertragen kann.

Dieses Image muss dann doch genauso groß wie die Festplatte sein, oder? Wie finde ich dann die genaue größe der Festplatte raus?

Die Platte ist ca. 10 GB groß. Mit irgendso einer Rescue-CD kann ich mir mit cat /proc/partitions die Blocks anzeigen lassen: 9873360
Wenn jetzt ein Block 512 Byte groß sind, dann kann das irgendwie nicht stimmen. Sind das dann vielleicht 1024 Bytes?

Würde das Image dann so anlegen: dd if=/dev/zero of=image.img bs=1024 count=9873360

Wie krieg ich nun wirklich heraus, wie groß die Platte ist oder wie groß die Blockgröße ist?

Konstantin
 
Dieses Image muss dann doch genauso groß wie die Festplatte sein, oder? Wie finde ich dann die genaue größe der Festplatte raus?

Ich denke, dass

# dd bs=1k if=/dev/random of=/**/name.img

es auch tut.

Nachtrag:
Natürlich nicht gerade elegant, da Du die genaue Größe trotzdem nicht errechnet hast und Du 2x hin und her kopieren müsstest, wenn ich Dich richtig verstanden habe. dd bricht jedenfalls den Vorgang ab, wenn deine Platte voll mit dem Image ist und das war ja dein Ziel.

(wegen /**/ bin zsh-user, /**/ == /.../.../... egal wo auf der angesprochenen Platte)

Falls nicht, schlagt mich!
 
Last edited:
keine ahnung was disklabel und fdisk unter freebsd tun, aber ein einfaches


Code:
% disklabel /dev/wd0c
# Inside MBR partition 3: type A6 start 63 size 976768002
# /dev/wd0c:
type: ESDI
disk: ESDI/IDE disk
label: Maxtor 6H500F0
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 16
sectors/cylinder: 1008
cylinders: 16383
total sectors: 976773168


% fdisk /dev/rwd0c
Disk: /dev/rwd0c        geometry: 60801/255/63 [976768065 Sectors]
Offset: 0       Signature: 0xAA55
         Starting       Ending       LBA Info:
 #: id    C   H  S -    C   H  S [       start:      size   ]
------------------------------------------------------------------------
 0: 00    0   0  0 -    0   0  0 [           0:           0 ] unused
 1: 00    0   0  0 -    0   0  0 [           0:           0 ] unused
 2: 00    0   0  0 -    0   0  0 [           0:           0 ] unused
*3: A6    0   1  1 - 60800 254 63 [          63:   976768002 ] OpenBSD

spuckt bei mir alles an daten aus, was man braucht.

probier mal die beiden proggies bei dir aus!
normalerweise ist zylinderzahl*koepfe*sektoren*512 immer die groesse der platte.
 
Das Image kann natürlich auch kleiner als die Platte sein, darf aber logischerweise niemals größer sein. Aber eine ganz andere Frage: Wenn du ein "dummes" Image von Platte A anlegst und dies auf Platte B spielst, macht das nicht fast unter Garantie Ärger aufgrund unterschiedlicher physikalischer Einteilungen?
 
@ooze - da hast du nicht ganz unrecht. Habe schon erlebt dass sich diese 'physikalisch anderen Einteilungen' erst nach 2 reboots bemerkbar gemacht haben.

Wie wäre es wenn man das image mit 'truncate -s n' erzeugt?
Dort hinein installiert man sein System, und ein späteres dd auf die reale HDD sollte auch klappen.

Andererseits kann man sich die Sache leichter machen wenn man auf dem Zielsystem einfach nur Partitionierung, Formatierung und Bootblock/Loader schreibt - sowie anschließend mit dump/restore die Partitionen betankt. So ist man nicht in Verlegenheit wenn man mit verschieden großen hdds hantiert.
 
Was für "physikalische Einteilungen" sind denn gemeint?

Wie kann man denn mit "truncate -s n" ein Image erzeugen? Den Schalter -s mit dem Paramter n habe ich übrigens in den Manpages nicht gefunden. :-/

Da ich von der Rescue-System die BSD-Partitionen nicht mounten kann, fällt dump/restore leider flach. :-(


Edit:
Wie wäre es denn, mit dem Rescue-System per dd die Festplatte zu "nullen" und diese anschließend (gezippt) über SSH mit dd if=/dev/hda auf meinen Rechner in eine Datei zu übertragen? Dann dürfte ich doch ein Image haben, welches wirklich genauso groß ist, wie die Festplatte. Dann kann ich in deises Image per qemu ein Basissystem installieren und dieses dann mit dd zurückspielen.
 
Last edited:
Ich hab das jetzt genauso gemacht, wie oben beschrieben. Der hat das ganze Image auch zurück übertragen (ohne Fehler).

fdisk unter dem Linux-Rescue-System sagt jetzt:
rescuecd:~# fdisk /dev/hda

The number of cylinders for this disk is set to 1306.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/hda: 240 heads, 63 sectors, 1306 cylinders
Units = cylinders of 15120 * 512 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 1306 9872824+ a5 FreeBSD
Partition 1 does not end on cylinder boundary:
phys=(1023, 15, 63) should be (1023, 239, 63)

Command (m for help): v
Partition 1 does not end on cylinder boundary:
phys=(1023, 15, 63) should be (1023, 239, 63)
1070 unallocated sectors

Command (m for help): b
Reading disklabel of /dev/hda1 at sector 64.

BSD disklabel command (m for help): p

8 partitions:
# start end size fstype [fsize bsize cpg]
a: 1* 610* 609* 4.2BSD 2048 16384 38408
b: 19183* 19589 406* swap
c: 1* 19589 19588* unused 0 0
d: 610* 1626* 1015* 4.2BSD 2048 16384 64008
e: 1626* 19183* 17557* 4.2BSD 2048 16384 28536

Was kann ich da jetzt machen?

Ich habe die SWAP-Partition ans Ende gelegt. Das letzt mal hatte ich Probleme mit der /usr-Partition, welche am Ende lag. Ich denke, die SWAP-Partition kann man zu Not recht einfach am laufenden System ersetzen.

Bekomm ich da jetzt Probleme oder kann ich das obige Ignorieren? Wie krieg ich sonst FreeBSD auf die Platte?

Ich hoffe, ihr habt vielleicht den ein oder anderen Tipp für mich.

Danke im Voraus.
 
Also konstantin...

Erstmal... mach keinen Thread für das gleiche Problem auf, welches Du immer noch hast und in einem anderen Thread schon besprochen wurde.

Zweitens, die Ausgaben von Linux-Tools versteht hier kein Mensch. Weiß Gott was die Tools da anstellen, wenn Du sie auf Linux benutzt.

Drittens, Du hattest keine Probleme mit "der /usr-Partition die am Ende lag", sondern Du hast mit dd ein größeres Dateisystem hineingeschrieben, als das Label es erlaubt hat. Das ist PEBKAC und da braucht man die Partitionen nicht umzuschmeißen.

Viertens, wir haben Dir schon in dem anderen Thread diesbezüglich geholfen.

Fünftens... nochmal: mach die /usr-Partition mindestens genauso groß wie Deine Abbildung und am besten mach keine Abbilldungen mit dd, sondern mit dump(8). Da hättest Du all diese Probleme hier nicht.
 
Ich habe die SWAP-Partition ans Ende gelegt. Das letzt mal hatte ich Probleme mit der /usr-Partition, welche am Ende lag. Ich denke, die SWAP-Partition kann man zu Not recht einfach am laufenden System ersetzen.
Ich würde dazu als (übeln) Hack am Ende der Platte 10MB frei lassen, um dies Problem zu umgehen. Keine Ahnung warum, aber die letzten Spuren machen ab und an mal Probleme. Mache dafür /usr lieber größer und lege die Swap in eine Datei. Das mag nicht optimal sein, sollte es hier aber tun und ausreichend sein. Dann kannst du die Größe im betrieb auch ohne viel Ärger ändern.
 
nakal said:
Also konstantin...

Erstmal... mach keinen Thread für das gleiche Problem auf, welches Du immer noch hast und in einem anderen Thread schon besprochen wurde.

Als ich diesen Thread hier eröffnet hatte, ging es mir lediglich darum, wie ich die Größe der Festplatte herausfinde. In dem anderen Thread ging es mir dann eigentlich um die Partitionenmanipulation, die anscheinend nicht möglich ist (zumindest konnte mir dazu hier keiner etwas sagen). Ich dachte, man könnte das inhaltlich trennen. Dafür, dass das dann so zusammengedrifftet ist, möchte ich mich entschludigen. Vielleicht kann man das andere Thema ja mit einem enstprechenden Kommentar schließen?!

nakal said:
Zweitens, die Ausgaben von Linux-Tools versteht hier kein Mensch. Weiß Gott was die Tools da anstellen, wenn Du sie auf Linux benutzt.

Ich wusste nicht, dass man zum Interpretieren von (Fehler-)Meldungen wissen muss, was die Tools da "anstellen" ...

nakal said:
Drittens, Du hattest keine Probleme mit "der /usr-Partition die am Ende lag", sondern Du hast mit dd ein größeres Dateisystem hineingeschrieben, als das Label es erlaubt hat. Das ist PEBKAC und da braucht man die Partitionen nicht umzuschmeißen.

Da hab ich mich wohl ein bisschen missverständlich ausgedrückt. Ich meinte nicht, dass die /usr-Partition am Ende Probleme gemacht hat, sondern die Partition die am Ende lag, welche da "zufällig" die /usr-Partition war. Das Problem war, dass ich die /usr-Partition nicht im laufenden Betrieb unmounten konnte (und somit nicht sonderlich manipulieren kann), da sonst die SSH-Verbindung abgebrochen wäre. Ich hoffe/denke aber, dass ich die SWAP-Partition im laufenden Betrieb löschen könnte, wenn es da Probleme geben sollte.

Was das zu große Dateisystem angeht: Wie oben beschreiben habe ich jetzt ein Image der (leeren) Platte gemacht. Dieses sollte doch nicht größer sein als die Platte selber, oder? Das vorherige Image war genauso groß. Also kann es da dann doch eigentlich nicht dran gelegen haben, oder? dd ist auch nicht mit einem Fehler abgebrochen.

nakal said:
Viertens, wir haben Dir schon in dem anderen Thread diesbezüglich geholfen.

Fünftens... nochmal: mach die /usr-Partition mindestens genauso groß wie Deine Abbildung

Hier verstehe ich nicht, wie du das meinst. Was genau meinst du mit "Abbildung"?

nakal said:
und am besten mach keine Abbilldungen mit dd, sondern mit dump(8). Da hättest Du all diese Probleme hier nicht.

Dessen bin ich mir zwar bewusst, mir fehlt allerdings die kreative Idee, wie ich das verwirklichen soll. Ich habe auf das System lediglich zugriff über eine "Rescue-CD", welche die FreeBSD-Partitionen nicht mounten will. So weiß ich nicht, wie ich dump/restore einsetzten soll. Wenn ich du (oder jemand anderes) eine Idee hat, so wäre ich ihm sehr dankbar, wenn er sie hier schreiben würde.



PS: Was den PEBCAK-Vorwurf angeht, möchte ich den hiermit zurückweisen. Natürlich liegt der Fehler in meiner Vorgehensweise (wo sonst?). Ich suche den Fehler ja auch nicht bei anderen. Ich versuche hier lediglich nach Lösungen für dieses schwierige Unterfangen zu finden und hoffe auf Unterstützung. Danke an alle, die mir geantwortet haben.
 
Was mich hier am meisten beeindruckt ist, das jemand zu wissen scheint was ein PEBCAK ist.
 
konstantin said:
Vielleicht kann man das andere Thema ja mit einem enstprechenden Kommentar schließen?!

Wieso? Vielleicht schreibt ja jemand in 100 Jahren ein Lösung? :)

konstantin said:
Ich wusste nicht, dass man zum Interpretieren von (Fehler-)Meldungen wissen muss, was die Tools da "anstellen" ...

Es gibt fdisk und bsdlabel auf FreeBSD. Auf diese Tools kann man sich verlassen und vor allem zeigen sie die Daten, die man gerne sehen möchte.

konstantin said:
Da hab ich mich wohl ein bisschen missverständlich ausgedrückt. [...] Ich hoffe/denke aber, dass ich die SWAP-Partition im laufenden Betrieb löschen könnte, wenn es da Probleme geben sollte.

Du meinst also, Du willst eine Art Vorsorge für die Zukunft treffen? Wenn die letzte Partition am Ende fehlerhaft ist und Du kannst ausschließen, dass es durch PEBKAC entstanden ist, wie z.B. das Einspielen des Dateisystem-Images in eine zu kleine Partition, dann ist

a) Entweder FreeBSD kaputt.
b) Die Platte ist kaputt.
c) Du hast mit Hilfe irgendwelcher Linux-Utils die Platten partitioniert (das wäre allerdings wieder ein Fall von PEBKAC).

Die Probleme, die ich hier sehe, häufen sich. Deswegen ist das ganze was Du tust, irgendwie beunruhigend.

konstantin said:
Was das zu große Dateisystem angeht: Wie oben beschreiben habe ich jetzt ein Image der (leeren) Platte gemacht. Dieses sollte doch nicht größer sein als die Platte selber, oder? Das vorherige Image war genauso groß. Also kann es da dann doch eigentlich nicht dran gelegen haben, oder?

Eine wichtige Sache ist die Plattengeometrie. Du kannst nicht einfach ein Image der kompletten Platte machen und auf eine andere einspielen. Slices können z.B. nur an Zylindergrenzen anfangen. Wenn die Zylinder unterschiedlich groß sind, hast Du Mist auf der Platte. Die Tatsache, dass es bootet, kann trügen. Es sind zu viele Faktoren die hier eine Rolle spielen, ob es funktioniert oder nicht. Lass es einfach und nutze dump(8) in der Zukunft. Ich weiß nicht warum sich die Leute so gegen das einzige vernünftige Tool sträuben. Oder meint irgendjemand, dass dd irgendwie gründlicher sei? Das ist ein Irrglaube.

konstantin said:
dd ist auch nicht mit einem Fehler abgebrochen.

dd ist manchmal seltsam und wird Dir die letzten Daten nicht sichern/einspielen, wenn die Größe des Images durch xx in "bs=xx" teilbar ist. Vorsicht!

Du siehst, es ist ein weiterer Faktor in Deinem Vorgehen. Die Kombinationen aller fehlerhafter Vorgehen sind hier unzählbar.

konstantin said:
Hier verstehe ich nicht, wie du das meinst. Was genau meinst du mit "Abbildung"?

"Abbildung" wie "Abbild" oder "Image".

konstantin said:
Dessen bin ich mir zwar bewusst, mir fehlt allerdings die kreative Idee, wie ich das verwirklichen soll. Ich habe auf das System lediglich zugriff über eine "Rescue-CD", welche die FreeBSD-Partitionen nicht mounten will.

Anhand dieses Problems kann man schon feststellen, dass da was nicht in Ordnung ist, oder?

konstantin said:
So weiß ich nicht, wie ich dump/restore einsetzten soll. Wenn ich du (oder jemand anderes) eine Idee hat, so wäre ich ihm sehr dankbar, wenn er sie hier schreiben würde.

Du kannst ja einen dump(8) machen, wenn das System läuft. Ist ja ein Backup-Tool und keine Frickelei. Mach den auf einen Remote-Rechner per ssh. Dann bootest Du Deine Live-CD, machst alles Platt, partitionierst ordentlich und spielst Deine Daten mit restore(8) wieder ein.

konstantin said:
PS: Was den PEBCAK-Vorwurf angeht, möchte ich den hiermit zurückweisen. Natürlich liegt der Fehler in meiner Vorgehensweise (wo sonst?). Ich suche den Fehler ja auch nicht bei anderen. Ich versuche hier lediglich nach Lösungen für dieses schwierige Unterfangen zu finden und hoffe auf Unterstützung. Danke an alle, die mir geantwortet haben.

Wenn Du sowas Exotisches wie dd zum kopieren einer ganzen Platte nimmst, dann lass wenigstens danach sofort fsck über alles laufen. Die Daten sind Dir doch wichtig, oder nicht?
 
nakal said:
Du kannst ja einen dump(8) machen, wenn das System läuft. Ist ja ein Backup-Tool und keine Frickelei. Mach den auf einen Remote-Rechner per ssh. Dann bootest Du Deine Live-CD, machst alles Platt, partitionierst ordentlich und spielst Deine Daten mit restore(8) wieder ein.
Letztens hatte ich ein Problem mit restore aus dem FreeBSD 5.4 Rescue-System (von der 1. CD). Damit konnte ich /usr nicht wieder herstellen. Ich erhielt sehr sonderbare Fehlermeldungen.

Ich habe mir beholfen (physische Nähe kann ein Segen sein) indem ich dann einfach FreeBSD 5.4 installiert habe und damit dann die Sicherung wieder hergestellt habe. Das hat mich gut 2 Stunden gekostet und ich befürchtete zwischendurch schon, dass das Backup sinnlos war.

An den OP: kannst du eigentlich das dd-Image mounten (gerne auch auf einem anderen Rechner) und daraus dann eine Sicherung per dump ziehen? Oder hatten wir den Punkt schon?

Ciao.
Markus Mann
];-)
 
max93 said:
Letztens hatte ich ein Problem mit restore aus dem FreeBSD 5.4 Rescue-System (von der 1. CD). Damit konnte ich /usr nicht wieder herstellen. Ich erhielt sehr sonderbare Fehlermeldungen.

So wie es sich anhört, war der Dump mit dem restore nicht ganz kompatibel. Solche Situation kenne ich allerdings noch nicht.

max93 said:
An den OP: kannst du eigentlich das dd-Image mounten (gerne auch auf einem anderen Rechner) und daraus dann eine Sicherung per dump ziehen? Oder hatten wir den Punkt schon?

Jetzt geht es nämlich los und Du kannst, wie alle anderen in dem anderen Thread rumkramen, um zu gucken, ob es schon vorgeschlagen wurde. Und ja, es wurde...
 
Ich glaube, dass mein eigentliches Vorhaben nicht ganz deutlich geworden ist. Das hätte ich wohl von Anfang an deutlich schildern sollen, um Missverständnisse zu vermeiden. Na ja, ich lerne ja auch dazu ... ;-)


Ich möchte gerne auf einen Rechner, auf dem ich lediglich Zugriff per Linux-Rescue-CD über SSH habe, ein FreeBSD-System installieren.

Um dieses zu realisieren habe ich mich im Netz erkundigt. Dort habe ich folgende Möglichkeiten gefunden:

1.) Depinguinator: Der hat mich nicht so überzeugt. Habe mir das Skirpt angeguckt. Außderm hatte ich Probleme das auf FreeBSD 6.0 zu übertragen.

2.) Installation eines Image mit qemu und Übertragen des selbigen auf den Rechner. Nach dieser Quelle wurde aber auch nur eine Partition übertragen.

Ich wollte also jetzt dieses selbsterstellte Image übertragen. Diese Linux-Rescue-System schränkt mich in so fern ein, da sich ufs anscheinend nicht mounten lasst. Deshalb musste ich zu dd greifen. Generell mache ich meine Backups schon mit dump/restore.

Es geht also auch nicht darum, an irgendwelche Daten/Dateien zu kommen.



Was für Ideen habt ihr denn nun, wie ich das realisieren kann? Das Übertragen der Partitionen klappt dann ja wohl so nicht, wenn es da auf die Plattengeometrie (Zylindergrenzen etc ...; Danke an nakal für die Infos) ankommt.

Ist es vielleicht möglich, auf dem System mit sysinstall die Installation zu wiederholen? Oder müssten dazu auch die Partitionen ungemountet werden? Wann bricht die SSH-Verbindung ab? Wird die wieder hergestellt? (Rebooten könnte ich auch ohne SSH)
Oder sollte ich vielleicht nur eine Partition anlegen oder später nachpartitioniern (oder zur Not ganz drauf verzichten)? Ob da die Chancen besser aussehen?

Bin auf eure Meinungen und Ideen gespannt.

Danke nochmal für eure Bemühungen.
 
Kannst Du vielleicht temporär die wichtigsten /usr-Verzeichnisse, also alles ohne /usr/local und /usr/X11R6, nicht auf eine andere Partition kopieren (in /usr.neu z.B.). Dann mv /usr /usr.old und ln -s /usr.neu /usr machen? Dann könntest Du /usr evtl. unmounten, wenn Du nur sshd in Benutzung hast.
 
nakal said:
So wie es sich anhört, war der Dump mit dem restore nicht ganz kompatibel. Solche Situation kenne ich allerdings noch nicht.
Hm. Erstellt wurde der dump auf dem betroffenen System selbst, da war es FreeBSD 5.4-p9 (oder 10, oder 11). restore war vom Rescue System der 5.4-RELEASE CD 1. Wenn die nicht kompatibel sind, welche sind es dann? Das wäre ja fast wie bei Java und würde so aus dump das sinnloseste Backup-Tool überhaupt machen.

Also das kann ich mir nun wirklich nicht vorstellen, zumal der restore vom installierten FreeBSD 5.4-RELEASE ja hervorragend funktioniert hat. Ich muß mal schauen, ob ich da einen Test-Case erzeugen kann um dann einen pr abzugeben.

Ciao.
Markus Mann
];-)
 
Der beste Weg ist, dies zu reproduzieren. Ich hatte noch nie Probleme mit dump(8). Da würde ich eher einen Hardwaredefekt oder ein kaputtes FS (fsck laufen lassen) dahinter vermuten.
Ab 5.4 hatte ich persönlich nur Probleme mit Datenträgerzugriffen. Ich bin ziemlich zügig auf -6-CURRENT umgestiegen und diese waren dann auch weg.
 
nakal said:
Der beste Weg ist, dies zu reproduzieren. Ich hatte noch nie Probleme mit dump(8).
Ich vorher auch nicht. Für alles gibt es ein erstes Mal. ];-)

nakal said:
Da würde ich eher einen Hardwaredefekt oder ein kaputtes FS (fsck laufen lassen) dahinter vermuten.
Definitv ausgeschlossen. Der gleiche Dump von der Platte auf (unter anderem) die gleiche Platte (diesmal im HW-RAID) ließ sich nach der Installation ja einwandfrei zurückspielen. Die Maschine freut sich seither bester Gesundheit.

nakal said:
Ab 5.4 hatte ich persönlich nur Probleme mit Datenträgerzugriffen.
Das habe dafür ich noch nie gesehen, auf inzwischen mindestens 6 unterschiedlichen Rechnern, die seit längerem mit FreeBSD 5.4 laufen. Da ist mir die Merkwürdigkeit mit diesem speziellen restore dann doch lieber.

Ciao.
Markus Mann
];-)
 
Back
Top