dd的作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
dd的主要选项:
dd if=/dev/hda of=disk.mbr bs=512 count=1
几种使用方式的区别:
1、dd bs=1M count=128 if=/dev/zero of=test
dd默认的方式不包括“同步(sync)”命令。也就是说,dd命令完成前并没有让系统真正把文件写到磁盘上。所以以上命令只是单纯地把这128MB的数据读到内存缓冲当中(写缓存[write cache])。所以你得到的将是一个超级快的速度。
2、dd bs=1M count=128 if=/dev/zero of=test; sync
和前面1中的完全一样。分号隔开的只是先后两个独立的命令。当sync命令准备开始往磁盘上真正写入数据的时候,前面dd命令已经把错误的“写入速度”值显示在屏幕上了。所以你还是得不到真正的写入速度。
3、dd bs=1M count=128 if=/dev/zero of=test conv=fdatasync
加入这个参数后,dd命令执行到最后会真正执行一次“同步(sync)”操作,所以这时候你得到的是读取这128M数据到内存并写入到磁盘上所需的时间,这样算出来的时间才是比较符合实际的
4、dd bs=1M count=128 if=/dev/zero of=test oflag=dsync
加入这个参数后,dd在执行时每次都会进行同步写入操作。也就是说,这条命令每次读取1M后就要先把这1M写入磁盘,然后再读取下面这1M,一共重复128次。这可能是最慢的一种方式了,因为基本上没有用到写缓存(write cache)。
the raw format is a plain binary image of the disc image, and is very portable. On filesystems that support sparse files, images in this format only use the space actually used by the data recorded in them. 裸设备,
1. 可以直接挂载到物理机
2. 转换成其它格式的虚拟机镜像(如果其它格式需要转换,有时候还是需要它做为中间格式)
3. 对于空间,使用多少就是多少。可以在原盘追加空间。命令:
dd if=/dev/zero of=zeros.raw bs=1024k count=4096(先创建4G的空间)
cat foresight.img zeros.raw > new-foresight.img(追加到原有的镜像之后)
4. 不支持snapshot(可以使用版本管理软件对raw格式的文件做版本管理从而达到snapshot的能力)
曾经qemu的写时拷贝的镜像格式,目前由于历史遗留原因不支持窗口模式。后来被qcow格式所取代。
一代的qemu的cow格式,刚刚出现的时候有比较好的特性,但其性能和raw格式对比还是有很大的差距,目前已经被新版本的qcow2取代
1. 更小的存储空间,即使是不支持holes的文件系统也可以
2. Copy-on-write support, where the image only represents changes made to an underlying disk image
3. 支持多个snapshot,对历史snapshot进行管理
4. 支持zlib的磁盘压缩和AES加密
qcow2-->raw转换:qemu-img convert -O qcow2 image-raw.raw image-raw-converted.qcow
VMware的格式,从性能和功能上来说,vmdk应该算最出色的,由于vmdk结合了VMware的很多能力,目前来看,KVM和XEN使用这种格式的情况不是太多
qemu-img
命令行工具是 Xen 和 KVM 用来格式化各种文件系统的。可使用 qemu-img
格式化虚拟客户端映像、附加存储设备以及网络存储。qemu-img
选项及用法如下。
# qemu-img create [-6] [-e] [-b base_image] [-f format] filename [size]
[root@jay-linux kvm_demo]# qemu-img create -f qcow2 -o ? temp.qcow Supported options: size Virtual disk size compat Compatibility level (0.10 or 1.1) backing_file File name of a base image backing_fmt Image format of the base image encryption Encrypt the image cluster_size qcow2 cluster size preallocation Preallocation mode (allowed values: off, metadata) [root@jay-linux kvm_demo]# qemu-img create -f qcow2 -b rhel6u3.img rhel6u3.qcow2 Formatting ‘rhel6u3.qcow2′, fmt=qcow2 size=8589934592 backing_file=’rhel6u3.img’ encryption=off cluster_size=65536 [root@jay-linux kvm_demo]# qemu-img create -f qcow2 -o backing_file=rhel6u3.img rhel6u3-1.qcow2 Formatting ‘rhel6u3-1.qcow2′, fmt=qcow2 size=8589934592 backing_file=’rhel6u3.img’ encryption=off cluster_size=65536 [root@jay-linux kvm_demo]# qemu-img create -f qcow2 -o backing_file=rhel6u3.img,size=20G rhel6u3-2.qcow2 Formatting ‘rhel6u3-2.qcow2′, fmt=qcow2 size=21474836480 backing_file=’rhel6u3.img’ encryption=off cluster_size=65536 [root@jay-linux kvm_demo]# qemu-img create -f qcow2 ubuntu.qcow2 10G Formatting ‘ubuntu.qcow2′, fmt=qcow2 size=10737418240 encryption=off cluster_size=65536
# qemu-img convert [-c] [-e] [-f format] filename [-O output_format] output_filename
qcow
或 cow
时,映像转换可帮助您获得较小的映像。在目的映像中可检测并压缩空白字段。info
参数显示磁盘映像信息。info
选项的格式如下:
# qemu-img info [-f format] filename
[root@jay-linux kvm_demo]# qemu-img info rhel6u3.img image: rhel6u3.img file format: raw virtual size: 8.0G (8589934592 bytes) disk size: 8.0G [root@jay-linux kvm_demo]# qemu-img info rhel6u3-a.img image: rhel6u3-a.img file format: qcow2 virtual size: 8.0G (8589934592 bytes) disk size: 6.8G cluster_size: 65536
“-l” 选项是查询并列出镜像文件中的所有快照,“-a snapshot”是让镜像文件使用某个快照,“-c snapshot”是创建一个快照,“-d”是删除一个快照。
改变镜像文件的后端镜像文件,只有qcow2和qed格式支持rebase命令。使用“-b backing_file”中指定的文件作为后端镜像,后端镜像也被转化为“-F backing_fmt”中指定的后端镜像格式。
它可以工作于两种模式之下,一种是安全模式(Safe Mode)也是默认的模式,qemu-img会去比较原来的后端镜像与现在的后端镜像的不同进行合理的处理;另一种是非安全模式(Unsafe Mode),是通过“-u”参数来指定的,这种模式主要用于将后端镜像进行了重命名或者移动了位置之后对前端镜像文件的修复处理,由用户去保证后端镜像的一致性。
改变镜像文件的大小,使其不同于创建之时的大小。“+”和“-”分别表示增加和减少镜像文件的大小,而size也是支持K、M、G、T等单位的使用。缩小镜像的大小之前,需要在客户机中保证里面的文件系统有空余空间,否则会数据丢失,另外,qcow2格式文件不支持缩小镜像的操作。在增加了镜像文件大小后,也需启动客户机到里面去应用“fdisk”、“parted”等分区工具进行相应的操作才能真正让客户机使用到增加后的镜像空间。不过使用resize命令时需要小心(最好做好备份),如果失败的话,可能会导致镜像文件无法正常使用而造成数据丢失。
如下命令行演示了两个镜像的大小改变:将一个8GB的qcow2镜像增加2GB的空间,也将一个8GB大小的raw镜像减少1GB空间。
[root@jay-linux kvm_demo]# qemu-img resize rhel6u3-a.img +2G Image resized. [root@jay-linux kvm_demo]# qemu-img info rhel6u3-a.img image: rhel6u3-a.img file format: qcow2 virtual size: 10G (10737418240 bytes) disk size: 6.8G cluster_size: 65536 [root@jay-linux kvm_demo]# qemu-img resize rhel6u3-b.img -1G Image resized. [root@jay-linux kvm_demo]# qemu-img info rhel6u3-b.img image: rhel6u3-b.img file format: raw virtual size: 7.0G (7516192768 bytes) disk size: 6.5G