现在的位置: 首页 > 综合 > 正文

linux dd命令实战

2012年07月18日 ⁄ 综合 ⁄ 共 2698字 ⁄ 字号 评论关闭

1. linux dd读取写入磁盘速度

time有计时作用,dd用于复制,从if读出,写到of。if=/dev/zero不产生IO,因此可以用来测试纯写速度。同理of=/dev/null不产生IO,可以用来测试纯读速度。bs是每次读或写

  的大小,即一个块的大小,count是读写块的数量。

  指定出读取,写入文件到硬盘的速度

  1.测/目录所在磁盘的纯写速度:

  [root@base-dmz1 /]# time dd if=/dev/zero bs=1024 count=1000000 of=/1Gb.file

  1000000+0 records in

  1000000+0 records out

  1024000000 bytes (1.0 GB) copied, 2.57314 seconds, 398 MB/s

  real    0m2.787s

  user    0m0.920s

  sys     0m1.867s

  以上是因为使用了time才显示的,linux5中不需要使用,在linux4中是不会有(1024000000 bytes (1.0 GB) copied, 2.57314 seconds, 398 MB/s)部分,因此需要time命令来计

  算复制的时间。

  2.测/目录所在磁盘的纯读速度:

  dd if=/kvm/ftp/other/1Gb.file bs=64k |dd of=/dev/null

  382860+0 records in

  382860+0 records out

  3136389120 bytes (3.1 GB) copied, 68.38 seconds, 45.9 MB/s

  real    1m8.406s

  user    0m0.039s

  sys     0m4.573s

  3.测读写速度(这是什么):

  dd if=/vat/test of=/oradata/test1 bs=64k

  dd: writing `/oradata/test1': No space left on device

  5025+0 records in

  5024+0 records out

  329261056 bytes (329 MB) copied, 23.8813 seconds, 13.8 MB/s

  注:理论上复制量越大测试越准确。

2. 使用Linux dd命令作硬盘克隆

源盘:IBM 20G 5400RPM FAT16分区1;Linux native分区1;FreeBSD分区1,内又分为一个主Sillice和一个Swap Sillice;扩展分区1,4个逻辑分区,其中最后一个是Linux Swap分区。IDE1 Master 
目标盘:西部数据30G 7200RPM,空白盘。IDE2 Master 
进入Linux,运行: dd if=/dev/hda of=/dev/hdc 
dd就是Linux/Unix下通用的克隆、镜像程序,if=输入的文件 of=输出的文件。由于在Linux下所有的硬件都表示为文件,所以可以进行任何复制、克隆。比如还可以把/dev/hda克隆到MO、磁带以及映像文件中,当然,目标“文件”必须比原“文件”大,不然就会溢出。 
20G的硬盘复制了大约不到2个小时,在整个过程中,使用K6-2 500CPU,UDMA2打开的情况下,CPU占用率只有18%-19%,从来没有超过20%。在此期间还可以玩玩扫雷、国际象棋等游戏,也可以看看文档、帮助什么的,但是最好不要作写操作。当然你可以估计时间,在复制进程还没有到Linux分区,或者已经过了Linux分区的时候,也可以进行写操作,但是要当心! 
最后,dd会报告一共复制了多少字节,这就是源盘的实际大小。完成以后,30G的西部数据硬盘就跟原来的IBM硬盘“一模一样”了,只不过是后面有10G的空空间,你可以在份一个分区(我的硬盘不能在分主分区了,因为4个Primray分区已满,只能在芬逻辑分区),或者用PQ、Fips扩大原有的分区。如果你什么都不做,那么从新启动Win98以后,跟原来是一模一样的。如果启动Linux,就有了一些问题,因为对于新硬盘来说,相当于运行完了dd程序就切断了电源,因此文件系统处于un
clean状态,在启动的时候会报错,不要怕,输入root密码,然后运行:fsck / 这就启动了文件系统检测程序,相当于Windows下的磁盘检测,对于所有的问题都回答“y”,大部分都是/tmp的问题,无关紧要的。修复完毕,输入:reboot就可以安全的启动Linux了! 


总的来说,Linux下的dd相对于Ghost各有所长。dd的复制是完全基于二进制的物理复制,从硬盘的第一个字节道最后一个字节,完全一样的克隆了一边,所以是最保险、最准确的。而且由于dd是物理复制,所以只要是硬盘上存在的分区,无论Linux是否认识,甚至是Linux认不出是什么的一段数据,都可以原原本本的复制,例如FreeBSD分区、其他操作系统的分区,甚至加密扇区什么的,就连逻辑坏块也原样复制!因此除非出现物理问题,不然dd是绝对不会出错的!而Ghost则比较“高级”一些,可以在复制的时候改变分区大小(他认识的分区格式),压缩映像文件(dd本身不具有压缩功能,但是可以用gzip、bzip2等工具压缩生成的文件),在Windows下还有explore软件可以单独提取文件出来,还有网络功能,而且速度也要比dd快一些(好像Ghost使用了较大的缓存)。另外一点dd的优势在于,在克隆的同时还可以干些别的事情,不像Ghost那样只能干等。因此从这方面来看,dd的速度又要比Ghost快,因为它完全占用系统的时间是零! 
其它Unix下的dd操作跟Linux下的雷同,只不过是/dev/hda的称谓变化一下。我 

在FreeBSD4.2下试验过,效果跟Linux下完全相同,时间稍微长一点点,但是在FreeBSD下,dd的CPU占用率有时会达到30%以上。 
如果你的源盘是IDE,而目标盘是SCSI的,这时要注意了,虽然对于硬件来说是没有什么问题,因为现在的Linux还是FreeBSD都支持即插即用;但是,/etc/fstab文件需要修改,在dd之前要把所有的hda改成sda,然后再改回来^_^


来源:

http://news.newhua.com/news1/Skills_System/2010/76/1076143929KD4FCHE9CDKAK2GEH64F1109GA213EDA8EHH0BE44K90J.html

http://blog.21ic.com/user1/3108/archives/2008/46201.html

抱歉!评论已关闭.