dd克隆前必须确认源盘和目标盘设备路径正确,错将/dev/sda当目标会覆盖系统;需用lsblk -f或fdisk -l核对容量、分区表类型及设备名,u盘或nvme盘命名不可经验套用。

dd 克隆前必须确认源盘和目标盘设备路径是否正确
错把 /dev/sda 当成目标盘写入,会直接覆盖原系统——这是 dd 最常见的灾难性误操作。用 lsblk -f 或 sudo fdisk -l 对比两块盘的容量、分区表类型(MBR/GPT)、已用空间,再核对设备名(注意热插拔可能导致 sdb/sdc 顺序变化)。U 盘或 NVMe 盘可能显示为 /dev/nvme0n1,不能凭经验硬套 sdx。
用 if=of=bs=conv=noerror,sync 完成基础扇区克隆
dd 默认不校验、不跳过坏扇区,直接失败退出。实际克隆老硬盘或有坏道的盘时,必须加 conv=noerror,sync:前者让读错误时填零继续,后者保证每个块都写满(避免因部分写入导致后续扇区偏移)。bs=4M 是较优值(太大可能被内核 buffer 限制,太小效率低),不要用 bs=512 模拟扇区粒度——那只会拖慢速度且无实际意义。
典型命令:sudo dd if=/dev/sda of=/dev/sdb bs=4M conv=noerror,sync status=progress
-
status=progress是 GNU coreutils 8.24+ 才支持的实时进度,旧系统可用pv替代(sudo pv /dev/sda | sudo dd of=/dev/sdb bs=4M conv=noerror,sync) - 目标盘容量必须 ≥ 源盘,否则末尾数据会被截断;即使目标盘更大,
dd也不会自动扩展分区,需后续用parted或gparted手动调整 - 克隆过程禁止休眠、关机或强制断电,中断后目标盘可能处于中间状态,无法直接使用
克隆后验证 MD5 或 sha256sum 是否一致
扇区级克隆要求“字节完全相同”,但 dd 不提供内置校验。必须单独计算源盘和目标盘的哈希值比对:
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
sudo dd if=/dev/sda bs=4M | sha256sumsudo dd if=/dev/sdb bs=4M | sha256sum
- 若两值不同,说明克隆过程出错(如目标盘写入缓存未刷盘、中途断电、设备名写反)
- 不要用
md5sum /dev/sda直接算——大磁盘会耗尽内存,且没指定bs时默认 512 字节块,极慢 - 如果源盘有坏道,
noerror会让对应位置填零,此时哈希必然不同;这时应改用ddrescue工具,它专为容错克隆设计
SSD 和 NVMe 盘要注意 TRIM 和写入放大
对 SSD 或 NVMe 盘执行 dd 克隆,会绕过固件的磨损均衡和垃圾回收机制,导致写入放大加剧、寿命缩短。更重要的是:克隆后的 SSD 不会自动启用 TRIM,即使源盘已开启,目标盘仍需手动配置:
- 检查是否启用:
sudo lsblk -D查看DISC-GRAN和DISC-MAX是否非零 - 临时开启:
sudo fstrim -v /(对已挂载文件系统) - 长期启用:在
/etc/fstab对应挂载项添加discard参数(但生产环境更推荐定时fstrim,避免实时 trim 影响性能)
另外,NVMe 盘的命名(如 /dev/nvme0n1)和分区(/dev/nvme0n1p1)与 SATA 盘不同,dd 时若误写成 /dev/nvme0n1p1 只会克隆第一个分区,而非整盘扇区结构。










