关于dd工具磁盘块读取起始位置及中断后重启行为的技术问询
关于dd工具磁盘块读取起始位置及中断后重启行为的技术问询
嘿,你的两个问题都问到点子上了,我来给你掰扯清楚:
首先,你对
sudo dd if=/dev/nvme2n1 of=/dev/null bs=1M的理解完全正确。默认情况下,dd会从输入设备(这里是/dev/nvme2n1这个NVMe磁盘设备)的起始位置开始,按照你指定的bs=1M块大小,顺序读取磁盘块——也就是从块0开始,依次读取块1、2、3……直到整个磁盘读完或者被中断。这是因为/dev下的磁盘设备文件是按线性地址映射整个磁盘的,顺序读取就对应磁盘块号的递增顺序。其次,如果你用
Ctrl+C中断了这个dd进程,之后再重新运行同样的命令,它会再次从块0开始读取。原因很简单:dd本身没有内置的“断点续读”功能,每次启动时都会默认从输入的起始偏移位置开始读取,不会记录上次中断时读到了哪里。如果想要接着上次的位置继续读,你得手动记录之前已经读取的字节数(可以看中断时dd输出的统计信息,比如X+Y records in,换算成字节数后),然后用skip参数指定跳过的块数,比如假设上次读了100M,那可以用sudo dd if=/dev/nvme2n1 of=/dev/null bs=1M skip=100来接着读。
备注:内容来源于stack exchange,提问作者cifer
相关产品推荐
相关产品推荐

