[pve-devel] [PATCH v4 manager] add wipe_disk option when destroying ceph disk

David Limbeck d.limbeck at proxmox.com
Wed Oct 24 11:45:44 CEST 2018


this allows the disk to be reused as ceph disk by zeroing the first 200M
of the destroyed disk. disks are iterated separately from partitions to
prevent duplicate wipes.

Signed-off-by: David Limbeck <d.limbeck at proxmox.com>
---
since v3:
    $disks_to_wipe is captured in $remove_partition instead of being
    passed 

 PVE/API2/Ceph.pm | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/PVE/API2/Ceph.pm b/PVE/API2/Ceph.pm
index 69489a70..ac277fdf 100644
--- a/PVE/API2/Ceph.pm
+++ b/PVE/API2/Ceph.pm
@@ -397,6 +397,7 @@ __PACKAGE__->register_method ({
 	    # try to unmount from standard mount point
 	    my $mountpoint = "/var/lib/ceph/osd/ceph-$osdid";
 
+	    my $disks_to_wipe = {};
 	    my $remove_partition = sub {
 		my ($part) = @_;
 
@@ -407,6 +408,8 @@ __PACKAGE__->register_method ({
 		print "remove partition $part (disk '${devpath}', partnum $partnum)\n";
 		eval { run_command(['/sbin/sgdisk', '-d', $partnum, "${devpath}"]); };
 		warn $@ if $@;
+
+		$disks_to_wipe->{$devpath} = 1;
 	    };
 
 	    my $partitions_to_remove = [];
@@ -434,6 +437,7 @@ __PACKAGE__->register_method ({
 		}
 	    }
 
+
 	    print "Unmount OSD $osdsection from  $mountpoint\n";
 	    eval { run_command(['/bin/umount', $mountpoint]); };
 	    if (my $err = $@) {
@@ -443,6 +447,11 @@ __PACKAGE__->register_method ({
 		foreach my $part (@$partitions_to_remove) {
 		    $remove_partition->($part);
 		}
+		foreach my $devpath (keys %$disks_to_wipe) {
+		    print "wipe disk: $devpath\n";
+		    eval { run_command(['/bin/dd', 'if=/dev/zero', "of=${devpath}", 'bs=1M', 'count=200', 'conv=fdatasync']); };
+		    warn $@ if $@;
+		}
 	    }
 	};
 
-- 
2.11.0





More information about the pve-devel mailing list