资源管理-dd命令
文章目录
-
- 一、为什么运维要用 `dd`?—— 核心价值
- 二、高频运维场景实战
-
- 场景 1:磁盘/分区全量备份与恢复(灾备必备)
- 场景 2:制作启动盘/U盘(安装系统必备)
- 场景 3:创建空文件/稀疏文件(测试存储或初始化资源)
- 场景 4:磁盘性能测试(评估存储 I/O 能力)
- 场景 5:清理磁盘坏块或释放“空洞”(数据修复)
- 三、风险规避与最佳实践
- 四、总结:运维必会的 `dd` 命令速查表
在 Linux 运维工作中,
dd
命令是一个功能强大但需要谨慎使用的底层工具,主要用于
磁盘/分区备份、数据恢复、性能测试、镜像制作 等关键场景。以下是结合实际运维工作的详细使用指南,涵盖
高频场景、操作技巧、风险规避 三大方向。
一、为什么运维要用 dd
?—— 核心价值
dd
的本质是 按块(block)直接读写设备或文件,不经过文件系统层解析,因此能处理:
- 原始设备(如
/dev/sda
整个磁盘,含分区表、MBR) - 特殊设备(如
/dev/zero
生成空字节、/dev/random
生成随机数) - 底层数据流(如备份、克隆、测试)
相比图形化工具(如 Clonezilla),dd
更轻量、更灵活,适合自动化脚本和紧急救援场景。
二、高频运维场景实战
场景 1:磁盘/分区全量备份与恢复(灾备必备)
需求背景
- 物理服务器磁盘故障前需备份整个系统盘(如
/dev/sda
)。 - 迁移物理机到虚拟机(P2V)时,直接克隆原始磁盘数据。
操作示例
① 备份整块磁盘到镜像文件(含分区表、引导扇区)
# 将 /dev/sda(系统盘)备份为 /backup/sda_full.img(建议存放到外部存储或 NFS)
sudo dd if=/dev/sda of=/backup/sda_full.img bs=4M status=progress
- 关键参数:
bs=4M
:每次读写 4MB 块(平衡速度与内存占用,默认 512B 太小,效率低)。status=progress
:实时显示传输速率和进度(GNU dd 特有,旧版本需用pv
替代)。
② 从镜像恢复磁盘(例如磁盘损坏后还原)
# 将备份的 sda_full.img 恢复到 /dev/sdb(目标磁盘容量需 ≥ 源磁盘)
sudo dd if=/backup/sda_full.img of=/dev/sdb bs=4M status=progress
- 注意:恢复后会完全覆盖目标磁盘的所有数据(包括分区表),操作前需确认目标设备(如
/dev/sdb
)是否正确!
③ 优化:压缩备份节省空间
# 备份时直接压缩(牺牲速度换存储空间)
sudo dd if