虚拟化存储的学习笔记
来源:互联网 发布:乐股软件官网 编辑:程序博客网 时间:2024/05/01 12:33
1、dd命令
dd的作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
dd的主要选项:
b=512, c=1, k=1024, w=2, xm=number m
if=file
输入文件名,缺省为标准输入。
of=file
输出文件名,缺省为标准输出。
ibs=bytes
一次读入 bytes 个字节(即一个块大小为 bytes 个字节)。
obs=bytes
一次写 bytes 个字节(即一个块大小为 bytes 个字节)。
bs=bytes
同时设置读写块的大小为 bytes ,可代替 ibs 和 obs 。
cbs=bytes
一次转换 bytes 个字节,即转换缓冲区大小。
skip=blocks
从输入文件开头跳过 blocks 个块后再开始复制。
seek=blocks
从输出文件开头跳过 blocks 个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)
count=blocks
仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数。
conv=conversion[,conversion...]
用指定的参数转换文件。
转换参数:
ascii 转换 EBCDIC 为 ASCII。
ebcdic 转换 ASCII 为 EBCDIC。
ibm 转换 ASCII 为 alternate EBCDIC.
block 把每一行转换为长度为 cbs 的记录,不足部分用空格填充。
unblock 使每一行的长度都为 cbs ,不足部分用空格填充。
lcase 把大写字符转换为小写字符。
ucase 把小写字符转换为大写字符。
swab 交换输入的每对字节。
noerror 出错时不停止。
notrunc 不截短输出文件。
sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
由于dd命令允许二进制方式读写,所以特别适合在原始物理设备上进行输入/输出。例如可以用下面的命令为软盘建立镜像文件:
dd if=/dev/fd0 of=disk.img bs=1440k
这个镜像文件能被 HD-Copy ,Winimage 等工具软件读出。再如把第一个硬盘的前 512 个字节存为一个文件:
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)。
2、虚拟化镜像格式
raw
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的能力)
cow
曾经qemu的写时拷贝的镜像格式,目前由于历史遗留原因不支持窗口模式。后来被qcow格式所取代。
qcow
一代的qemu的cow格式,刚刚出现的时候有比较好的特性,但其性能和raw格式对比还是有很大的差距,目前已经被新版本的qcow2取代
qcow2
QEMU copy-on-write format with a range of special features, including the ability to take multiple snapshots, smaller images on filesystems that don’t support sparse files, optional AES encryption, and optional zlib compression. 现在比较主流的一种虚拟化镜像格式,经过一代的优化,目前qcow2的性能上接近raw裸格式的性能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
vmdk
VMware的格式,从性能和功能上来说,vmdk应该算最出色的,由于vmdk结合了VMware的很多能力,目前来看,KVM和XEN使用这种格式的情况不是太多
vdi
3、qemu-img
qemu-img
命令行工具是 Xen 和 KVM 用来格式化各种文件系统的。可使用 qemu-img
格式化虚拟客户端映像、附加存储设备以及网络存储。qemu-img
选项及用法如下。
创建
创建新磁盘映像文件名为 size,格式为 format。# qemu-img create [-6] [-e] [-b base_image] [-f format] filename [size]
使用-o ? 来查询某种格式文件支持那些选项 。一些例子:
[root@jay-linux kvm_demo]# qemu-img create -f qcow2 -o ? temp.qcowSupported options:size Virtual disk sizecompat Compatibility level (0.10 or 1.1)backing_file File name of a base imagebacking_fmt Image format of the base imageencryption Encrypt the imagecluster_size qcow2 cluster sizepreallocation Preallocation mode (allowed values: off, metadata)[root@jay-linux kvm_demo]# qemu-img create -f qcow2 -b rhel6u3.img rhel6u3.qcow2Formatting ‘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.qcow2Formatting ‘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.qcow2Formatting ‘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 10GFormatting ‘ubuntu.qcow2′, fmt=qcow2 size=10737418240 encryption=off cluster_size=65536
提交filename文件中的更改到后端支持镜像文件(创建时通过backing_file指定的)中去。
格式转换
转换选项是将可识别格式转换为另一个映像格式。# qemu-img convert [-c] [-e] [-f format] filename [-O output_format] output_filename
qcow
或 cow
时,映像转换可帮助您获得较小的映像。在目的映像中可检测并压缩空白字段。使用“-o options”来指定各种选项,如:后端镜像、文件大小、是否加密等等。使用backing_file选项来指定后端镜像,让生成的文件是copy-on-write的增量文件,这时必须让转换命令中指定的后端镜像与输入文件的后端镜像的内容是相同的,尽管它们各自后端镜像的目录、格式可能不同。
qemu-img convert -f qcow2 -O raw -s snap1 fed18.qcow2 snap1-fed18.img
提取镜像fed18.qcow2的一个快照,将其格式转换为raw
映像信息
info
参数显示磁盘映像信息。info
选项的格式如下:# qemu-img info [-f format] filename
[root@jay-linux kvm_demo]# qemu-img info rhel6u3.imgimage: rhel6u3.imgfile format: rawvirtual size: 8.0G (8589934592 bytes)disk size: 8.0G[root@jay-linux kvm_demo]# qemu-img info rhel6u3-a.imgimage: rhel6u3-a.imgfile format: qcow2virtual size: 8.0G (8589934592 bytes)disk size: 6.8Gcluster_size: 65536
快照
snapshot [-l | -a snapshot | -c snapshot | -d snapshot] filename“-l” 选项是查询并列出镜像文件中的所有快照,“-a snapshot”是让镜像文件使用某个快照,“-c snapshot”是创建一个快照,“-d”是删除一个快照。
改变后端镜像
rebase [-f fmt] [-t cache] [-p] [-u] -b backing_file [-F backing_fmt] filename改变镜像文件的后端镜像文件,只有qcow2和qed格式支持rebase命令。使用“-b backing_file”中指定的文件作为后端镜像,后端镜像也被转化为“-F backing_fmt”中指定的后端镜像格式。
它可以工作于两种模式之下,一种是安全模式(Safe Mode)也是默认的模式,qemu-img会去比较原来的后端镜像与现在的后端镜像的不同进行合理的处理;另一种是非安全模式(Unsafe Mode),是通过“-u”参数来指定的,这种模式主要用于将后端镜像进行了重命名或者移动了位置之后对前端镜像文件的修复处理,由用户去保证后端镜像的一致性。调整大小
resize filename [+ | -]size改变镜像文件的大小,使其不同于创建之时的大小。“+”和“-”分别表示增加和减少镜像文件的大小,而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 +2GImage resized.[root@jay-linux kvm_demo]# qemu-img info rhel6u3-a.imgimage: rhel6u3-a.imgfile format: qcow2virtual size: 10G (10737418240 bytes)disk size: 6.8Gcluster_size: 65536 [root@jay-linux kvm_demo]# qemu-img resize rhel6u3-b.img -1GImage resized.[root@jay-linux kvm_demo]# qemu-img info rhel6u3-b.imgimage: rhel6u3-b.imgfile format: rawvirtual size: 7.0G (7516192768 bytes)disk size: 6.5G
- 虚拟化存储的学习笔记
- 学习笔记-服务器虚拟化
- 学习笔记-网络虚拟化
- openstack学习笔记----Libvirt的虚拟化平台调度实现
- 大话存储-学习总结-5-虚拟化和存储集群
- 存储虚拟化对于小企业的益处
- 虚拟化环境下的存储
- 存储:数据中心虚拟化的致命弱点
- 虚拟存储的要点
- 操作系统的虚拟存储
- 【学习笔记】虚拟化实现技术架构
- OpenStack学习笔记(-)-虚拟化
- 【docker虚拟化技术】docker学习笔记
- 统一存储和存储虚拟化和IBM的SVC
- 存储虚拟化
- 什么是存储虚拟化
- 虚拟化存储技术
- 存储虚拟化概述
- 为什么除法比乘法难?
- linux不能ping通域名能ping通ip
- 从epoll构建muduo-3 加入第一个类,顺便介绍reactor
- 解决RedHat6/CentOS6系统中“弹出界面eth0:设备似乎不存在”的问题
- 总结一下Python IDLE快捷键
- 虚拟化存储的学习笔记
- 11054 - Wine trading in Gergovia
- cocos2d-x 切换场景动画
- MICROKERNEL-BASED OPERATING SYSTEMS
- LNMP-Linux下Nginx+MySQL+PHP+phpMyAdmin+eAcelerator一键安装包
- 整合apache和tomcat构建Web服务器
- 第三方网络广告平台窘境
- 移植SlidingMenu Android library,和安装example出现的问题解决
- no acceptable C compiler found in $PATH