1.https://www.cnblogs.com/classics/p/11512709.html (详尽)
2.https://www.cnblogs.com/haorong/p/10684613.html (补充)
3.https://blog.csdn.net/xyz846/article/details/7367962?utm_source=blogxgwz7----------新的terminal窗口输入这个命令之后,老的窗口能看见dd进度
举例:
法一,先拷贝到操作系统
dd if=/dev/sda | gzip > /opt/backup.gz
gzip -dc /opt/backup.gz |dd of=/dev/sdb
法二,直接两盘对拷
dd if=/dev/sdb of=/dev/sdc bs=xxM(bs限速)
bs=bytes:同时设置读入/输出的块大小为bytes个字节
新的窗口输入:
watch -n 5 pkill -USR1 ^dd$
用dd擦除磁盘
你可以使用dd让不法分子极难搞到你的旧数据。这个命令将花一些时间在/dev/sda1分区的每个角落上创建数百万个0:
dd if=/dev/zero of=/dev/sda1
但它可以变得更好。使用/dev/urandom文件作为来源,你可以使用随机字符写入到磁盘:
dd if=/dev/urandom of=/dev/sda1
一次lvm扩容失败排查:
场景:
120的磁盘(存在lvm) 使用再生龙制作的镜像iso 安装到 150的磁盘上安装业务 再dd到 240的磁盘上
问题:
在240g的磁盘上扩容会出现这样的情况:创建新分区fdisk /dev/sda 创建出sda4之后刷新分区表partprobe 会自动添加lvm中的/opt/data和/opt/log的空间,而且大小之和为150g
排查:
一 .fdisk -l /dev/sda;
找到最后一个磁柱的位置end
下图中的信息举例:
- sda1大小
(end - start)*512 bytes /1024(K)/1024(M)/1024(G) 约等于 blocks(容量K)/1024/1024
这里的512byte 是每一个磁柱的单位,图上有交代
Units = sectors of 1 * 512 = 512 bytes - ID=System 是一样的
- sda大小
Disk /dev/sda: 120.0 GB, 120034123776 bytes, 234441648 sectors
=>Disk /dev/sda: 120.0 GB, 120034123776 bytes/1024(K)/1024(M)/1024(G)=117.8GiB=120034123776 bytes/1000(K)/1000(M)/1000(G)=120.0GB, 234441648 sectors*512 bytes /1024(K)/1024(M)/1024(G)=117.8GiB
4.磁盘标签类型: dos 适用于mbr ;uefi是gpt
二 .使用dd if=/dev/sda of=sda_end_4M bs=512 count=8192 skip=234371072
ps:
保存最后的磁柱之后的4M空间;
4M =bs * count = 512 bytes * 8192 = 4M(bs和count 可以直接用dd if=/dev/sda of=sda_end_4M bs=1M count=4 skip=234371072 效果一样)
bs: 带单位 bytes / K / M / G
count: 不带单位
skip取 end+1 ,也可以取end自己都取下来看看
skip(针对if): 跳过if的skip个磁柱进行读取if,保存到of中
三 .less sda_end_4M -y 查看里面的内容,发现存在信息,正常应该是空的@@@@
四. 解决办法:
清除磁柱后面的所有的扇区,将其清零(这里清除4M就够了,因为查看sda_end_4M文件后半部分都是@@@,只存在这个4M文件的一小部分中)
dd if=/dev/zero of=/dev/sda bs=512 count=8192 seek =234371072
seek(针对of) :跳过of的seek个磁柱进行写入,保存写入of