Linux上通过dd命令低格硬盘
- 背景
- 格式化脚本以及查询进度的方法
背景
手里有几台租借的服务器需要归还,为了保护数据不被泄露,需要对服务器数据盘(除系统盘外其他所有硬盘)进行低级格式化。
格式化脚本以及查询进度的方法
#!/bin/bash
boot_dev=`df | grep "/$" | awk '{print $1}' | grep -o "/dev/sd[a-z]"` #确定系统所在硬盘
for disk in /dev/sd[a-z];doif [ "$disk" != "$boot_dev" ];thennohup dd if=/dev/zero of=$disk bs=100M >/dev/null 2>&1 & # dd中添加bs=100M可以提升格式化速率,默认是512bytefi
done
执行该脚本后,通过iostat -x 1
可以查看硬盘的读写情况,可以看到除sda(系统盘)外,其他硬盘都在高速写入。
avg-cpu: %user %nice %system %iowait %steal %idle0.00 0.00 8.47 43.81 0.00 47.73Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 17.00 0.00 3.00 0.00 80.00 0.00 53.33 0.00 0.67 0.67 0.00 0.67 0.20
sdc 0.00 115597.00 0.00 1851.00 0.00 59264.00 64.03 144.41 82.42 0.00 82.42 0.54 100.10
sdb 0.00 110880.00 0.00 1752.00 0.00 56064.00 64.00 142.64 78.71 0.00 78.71 0.57 100.10
sdg 0.00 141120.00 0.00 2240.00 0.00 71680.00 64.00 142.68 63.72 0.00 63.72 0.45 100.10
sdh 0.00 141435.00 0.00 2243.00 0.00 71744.00 63.97 143.04 64.33 0.00 64.33 0.45 100.10
sdf 0.00 133056.00 0.00 2097.00 0.00 67104.00 64.00
硬盘开始格式化后,默认不容易查看进度,可以通过xxd以一个取巧的方法大概查询格盘进度。xxd -s 100000000000 /dev/sdb | more
其中-s设置起始的偏移量,单位是字节。此命令查看第100G的位置的情况,根据输出可以看出此处已经完成格式化(全0)。利用二分法,结合自己硬盘的大小,可以通过执行几次带不同-s的xxd命令查询大概进度。
[root@server_name ~]# xxd -s 100000000000 /dev/sdb | more
174876e800000 0000 0000 0000 0000 0000 0000 0000 ................
174876e810000 0000 0000 0000 0000 0000 0000 0000 ................
174876e820000 0000 0000 0000 0000 0000 0000 0000 ................
174876e830000 0000 0000 0000 0000 0000 0000 0000 ................
174876e840000 0000 0000 0000 0000 0000 0000 0000 ................
174876e850000 0000 0000 0000 0000 0000 0000 0000 ................
174876e860000 0000 0000 0000 0000 0000 0000 0000 ................
174876e870000 0000 0000 0000 0000 0000 0000 0000 ................
174876e880000 0000 0000 0000 0000 0000 0000 0000 ................
174876e890000 0000 0000 0000 0000 0000 0000 0000 ................
174876e8a0000 0000 0000 0000 0000 0000 0000 0000 ................
以下输出表明2000G的位置还未格式化。
[root@server_name ~]# xxd -s 2000000000000 /dev/sdb | more
1d1a94a200000 00a3 c900 0000 a300 0000 0000 0000 ................
1d1a94a200000 0000 0000 0000 0000 0000 0000 0000 ................
1d1a94a200000 0000 3840 9b61 8f80 dc1f ba45 0000 ....8@.a.....E..
1d1a94a200000 0000 3a35 ffe1 f792 4b3a a493 91d3 ....:5....K:....
1d1a94a2067d8 89cb 2fb9 483b 0000 0010 6900 0000 g.../.H;....i...
1d1a94a200000 0000 0000 0000 0005 9790 6147 fff0 ............aG..
1d1a94a202fb9 483b 0000 0000 6902 0000 ffff ffff /.H;....i.......
1d1a94a20ffff ffff ffff ffff ffff ffff ffff ffff ................
1d1a94a20ffff ffff ffff ffff ffff ffff ffff ffff ................
1d1a94a20ffff ffff ffff ffff ffff ffff ffff ffff ................
1d1a94a20ffff ffff ffff ffff ffff ffff ffff ffff ................
1d1a94a20ffff ffff ffff ffff ffff ffff ffff ffff ................
1d1a94a20ffff ffff ffff ffff ffff ffff ffff ffff ................
1d1a94a20ffff ffff ffff ffff ffff ffff ffff ffff ................
1d1a94a20ffff ffff ffff ffff ffff ffff ffff ffff ................
1d1a94a20ffff ffff ffff ffff ffff ffff ffff ffff ................
1d1a94a21ffff ffff ffff ffff ffff ffff ffff ffff ................
1d1a94a21ffff ffff ffff ffff ffff ffff ffff ffff ................
1d1a94a21ffff ffff ffff ffff ffff ffff ffff ffff ................
1d1a94a21ffff ffff ffff ffff ffff ffff 3a35 ffe1 ............:5..
1d1a94a21f792 4b3a a493 91d3 67d8 89cb b58c 40d2 ..K:....g.....@.
1d1a94a210000 0000 0000 00a2 003a 225a 0000 0000 .........:"Z....
1d1a94a210000 0000 0000 0000 0000 0000 0000 0000 ................
1d1a94a210000 0000 0000 0000 0000 0000 0000 0000 ................
1d1a94a210000 0000 0000 0000 0000 0000 0000 0000 ................
1d1a94a210000 0000 ef31 d6b0 0000 0018 6900 0000 .....1......i...