目录
备份磁盘并恢复
备份时进行压缩
备份磁盘的 MBR
使用 /dev/zero 和 /dev/null 来测试磁盘
利用 /dev/urandom 进行格式化
制作U盘启动盘
dd,是 device driver 的缩写,它可以称得上是“Linux 世界中的搬运工”,它用来读取设备、文件中的内容,并原封不动地复制到指定位置。
好记性不如烂笔头,好硬盘不如常备份。硬盘的损坏虽然是个小概率事件,但是一旦发生却会带来灾难性的后果。对重要数据进行备份,不仅是一个好习惯,更体现了对别人对自己负责的态度。
早期的硬盘基本都是使用 hda、hdb 这种 IDE 接口的硬盘,现在的主流硬盘已经是 SATA 接口的了,下面我们把当前的linux系统盘备份到移动硬盘中。
[root@zyq images]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/rhel-root 366976000 273496108 93479892 75% /
devtmpfs 16243772 0 16243772 0% /dev
tmpfs 16260392 24 16260368 1% /dev/shm
tmpfs 16260392 59016 16201376 1% /run
tmpfs 16260392 0 16260392 0% /sys/fs/cgroup
/dev/loop0 3963760 3963760 0 100% /var/ftp/pub/rhel74
/dev/loop1 6935944 6935944 0 100% /var/ftp/pub/rhel8
/dev/sda2 1038336 178112 860224 18% /boot
/dev/loop2 8086368 8086368 0 100% /var/ftp/pub/centos75
/dev/sda1 204580 9960 194620 5% /boot/efi
/dev/mapper/rhel-home 104806400 84696140 20110260 81% /home
tmpfs 3252080 44 3252036 1% /run/user/1000
/dev/sdb1 976760828 491666928 485093900 51% /run/media/zyq/Extreme SSD
[root@zyq images]# cd /run/media/zyq/Extreme\ SSD/
[root@zyq Extreme SSD]$ dd if=/dev/sda of=./sda.img
这个命令用到了如下两个选项:
通过上面的 dd 命令,我们得到了 sda.img 文件,它就是已经备份好了的磁盘映像文件,里面存储着 /dev/sda 整块硬盘的内容。
在未来的某天,假如 /dev/sda 硬盘真的出现了故障,我们就可以将曾经备份的 sda.img 复制到另块磁盘上,然后将还原后的磁盘替换掉坏了的硬盘。
[root@zyq ~]# dd if=/root/sda.img of=/dev/sdb
dd 操作就是简单的按字节复制,与文件系统没有任何关系。
其实我们在使用 dd 做备份时,可以使用 gzip 或者 bzip2 压缩算法进行数据压缩处理,这样可以大大减少我们的磁盘空间用量,也就降低了备份成本。
下面就使用 gzip 压缩算法配合 dd 命令来备份 /dev/sda 盘:
[root@zyq Extreme SSD]$ dd if=/dev/sda | gzip > of=./sda.img.gz
下面我们更换 bzip2 压缩算法配合 dd 命令再来实现一遍上面示例的效果:
[root@zyq ~]# dd if=/dev/sda | bzip2 > disk.img.bz2
[root@zyq ~]# bzip2 -dc /root/sda.img.gz | dd of=/dev/sdb
我们之前备份的磁盘是RAW格式的,原来的磁盘是多大,备份后的文件就多大,为了进一步节省磁盘空间我们可以对备份完的RAW文件进行格式转换(转换为别的磁盘格式,绝大部分磁盘格式都比RAW格式占据的空间小),再进行压缩处理。
对于 dd 命令来说,除了 if、of 两个选项之外,还应该掌握下面这两个重要选项:
MBR,是 Master Boot Record,即硬盘的主引导记录,MBR 一旦损坏,分区表也就被破坏,数据大量丢失,系统就再也无法正常引导了,真是不堪设想啊!所以,对 MBR 的定期备份是十分必要的,在紧急关头,把它比喻成一颗救死扶伤的速效救心丸,也绝不为过。
一块磁盘的第一个扇区的 512 个字节所存储的正是这块磁盘的 MBR 信息,我们尝试用 dd 命令备份 MBR:
[root@zyq ~]# dd if=/dev/sda of=/root/sda_mbr.img count=1 bs=512
如果未来遇到分区表损坏的情况,我们用曾经备份的 MBR 信息写回磁盘,就能起到立竿见影的效果。下面来一起看看如何将 MBR 写回硬盘:
[root@zyq ~]# dd if=/root/sda_mbr.img of=/dev/sda
本段落开始前,我们要为大家介绍两位新朋友:
我们可以观察下面两个命令的执行时间,来计算出硬盘的读、写性能:
#向磁盘上写一个大文件, 来看写性能
[root@zyq ~]# dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
#从磁盘上读取一个大文件, 来看读性能
[root@zyq ~]# dd if=/root/1Gb.file bs=64k | dd of=/dev/null
上面命令生成了一个 1GB 的文件 1Gb.file,下面我们配合 time 命令,可以看出不同的块大小数据的写入时间,从而可以测算出到底块大小为多少时可以实现最佳的写入性能。
[root@zyq ~]# time dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
[root@zyq ~]# time dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
[root@zyq ~]# time dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
[root@zyq ~]# time dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
除了 /dev/null 和 /dev/zero 之外,还有一个很重要的文件,即 /dev/urandom,它是“随机数设备”,它的本领就是可以生成理论意义上的随机数。
[root@zyq ~]# dd if=/dev/urandom of=/dev/sda
还在用乱七八糟的各类工具制作启动盘吗,快试试dd这个命令
[root@zyq ~]# dd if=mycentos.iso of=/dev/sdb
if后面添加镜像文件,of后面添加U盘被识别到的设备名