dd: Ende der Platte löschen

Um z.B. eine (Soft-)RAID-Signatur von einer Festplatte zu entfernen reicht es meist (je nach RAID Typ) die letzten Bytes der Platte zu löschen, da sich die Signatur meist am Ende einer Partition befindet. So erspart man sich ein langwieriges Löschen der kompletten Platte.

Einen Weg der ohne Rechnerei und viel Script auskommt habe ich so schnell nicht gefunden, daher nutze ich diese Methode:

sudo blockdev --getsz /dev/sda
250069680 # anzahl der Blöcke (512Byte)
 
sudo dd if=/dev/zero of=/dev/sda bs=512 seek=250060000

Nicht sonderlich elegant – ich nulle die letzten Bytes der Blockgrösse damit diese übersprungen werden und lasse dann dd bis zum Ende der Platte laufen. dd bricht dann mit „no space on device“ ab – aber die letzten Bytes wurden dabei sauber geleert 😉

dd Fortschritt/progress anzeigen

Mal wieder ein dd angeschmissen und es dauert Stunden? Vergessen das dd durch eine Statistik-Pipe zu schicken?

dd ist empfänglich für das Signal „SIGUSR1“ welches dd veranlasst zwischendurch seinen Status auszugeben. Also zunächst gilt es die pid des dd Prozesses herauszufinden und dann das Signal zu senden. Oder einfach wie hier „killall“ zu verwenden:

killall -SIGUSR1 dd     # sendet das Signal an alle dd Prozesse

Das Terminal mit dem laufenden dd Kommando gibt dann brav seinen Status aus:

1476369209+0 records in
1476369209+0 records out
755901035008 bytes (756 GB) copied, 30066.9 s, 25.1 MB/s

dd over ssh

Libvirt unterstützt leider noch nicht das Migrieren von VM-Images auf andere Speicherformen – z.B. von NAS auf eine lokale Partition. Dieses muss man dann halt selber machen ;).

Folgendes Kommando holt sich vom entfernten Rechner den Inhalt des dort gemounteten iSCSI Targets und packt ihn in ein lokales Volume (in diesem Fall LVM):

ssh root@cloudnode \
"dd if=/dev/disk/by-path/ip-10.10.199.4:3260-iscsi-cloud1-11-lun-0" \
| buffer -S 10m -s 64k | dd of=/dev/vmdata/vm02

Das Tool „buffer“ hat noch den Nebeneffekt, dass es Statistiken zum laufenden Transport ausgibt. Ein ähnliches Tool in dem Zusammenhang ist Pipe-Viewer (pv), welches ich auch immer schon mal erwähnen wollte.