如何减少raw虚拟磁盘raw 怎么修复文件实际占用的存储空间

KVM之raw和qcow2格式虚拟磁盘创建
时间: 23:41:08
&&&& 阅读:286
&&&& 评论:
&&&& 收藏:0
标签:在创建虚拟机之前,首先添加一个虚拟机磁盘,在KVM中用image来表示虚拟磁盘,在添加虚拟机磁盘之前首先需要知道如何制作一个imageqemu-img是QEMU的磁盘管理工具一、raw格式的image创建1、创建一个raw格式的image,容量为20gqemu-img create -f raw ubuntu14.04.raw 20G2、查看image信息:/datapool/image# qemu-img info ubuntu14.04.raw image: ubuntu14.04.rawfile format: rawvirtual size: 20G ( bytes)disk size: 0二、创建一个qcow2格式的image1、创建一个20g的qcow2格式的imageqemu-img create -f qcow2 -o cluster_size=2M,backing_file=ubuntu14.04.raw ubuntu-nova.qcow2 40G三、相关说明:1、使用派生镜像刚刚我们创建了ubuntu14.04.raw镜像,比如使用这个镜像的虚拟机安装了一个系统。然后我们可以通过创建派生镜像来使用这个系统,避免每创建一个虚拟机就安一个系统的情况。2、这里使用backing_file方式来创建qcow2格式image,这里的40G并不会真正占用40G,只是限制了ubuntu-nova.qcow2文件的最大大小。3、当raw格式文件中安装的系统是windows系列的时候,创建qcow2格式最后文件大小需要比raw格式大2-3倍,例如创建一个大小为30G的win7.raw格式文件,创建qcow2格式磁盘命令如下:qemu-img create -f qcow2 -o cluster_size=2M,backing_file=win7.raw windows-7.qcow2 60G4、这里的ubuntu-nova.qcow2文件并不是一个独立的image,在使用时需要与ubuntu14.04.raw磁盘一起使用需要保持backing_file绝对路径不变,qcow2文件可以移动。虚拟机是直接与qcow2格式image交互,raw格式image作为backing_file对虚拟机而言完全是透明的。实际上qcow2文件才是的是写时复制策略,qcow2格式image只是保存了所有的更改数据,raw格式的image中的数据不会发生丝毫变动。5、读操作:如果虚拟机并未更改数据,那么虚拟机会直接读取raw格式磁盘,否则读取qcow2磁盘上的数据6、写操作:写操作时如果与raw虚拟磁盘上的数据并不相同,则将此部分数据保存至qcow2格式磁盘7、性能方面,qcow2格式磁盘与直接使用raw格式磁盘相比,读写性能略有下降,但损失不明显,磁盘IO要求较低的虚拟机建议使用raw格式虚拟机磁盘8、这么做的好处是?第一点:raw格式创建后就会占用掉大量空间,比如创建一个20G的rawge格式image,那么就会立占用20G,那么qcow2格式image则是动态增长9、qcow2是一种当下比较主流的虚拟化磁盘格式,具有占用空间小,支持加密,支持压缩,支持快照的特点四、qcow2格式image也可以不使用backing_file(此时:qcow2格式和raw格式的唯一却别是qcow2是动态增长,其他基本无太大区别)qemu-img create -f qcow2 ubuntu14.04.qcow2 20G本文出自 “” 博客,请务必保留此出处标签:
&&国之画&&&& &&
版权所有 京ICP备号-2
迷上了代码!地区:凉山
头衔:项目副经理
浏览数:23
广联达软件的备份文件占用磁盘空间太大,如何解决这个问题
广联达软件的备份文件占用磁盘空间太大(一般都是几十个G的占用),如何解决这个问题
地区:河北
等级:10 级
头衔:副总★
可以把没有用的备份删掉
提问者对最佳答案的评价:1星
请填写消息,提交后将发送给用户
操作执行中...
无满意答案
  及时举报违规行为,共同维护良好环境
举报原因:
问题与专业无关
没有实用价值
问题描述不清晰
同IP自问自答,恶意刷分
完全复制他人答案
部分复制他人答案
无实际价值
同IP自问自答,恶意刷分
    
如果您认为这个答案有误,或者有更好的答案,请立即告诉我们!
如果您的“揪”错被采纳,可获得10分积分奖励!
我的答疑任务
图片正在上传...三步释放物理磁盘上VMware虚拟机中删除的文件占用的磁盘空间 - CPC中文印刷社区
◆- 计算机硬件及常用软件 Windows操作系统及其应用,计算机硬件及常用的软件其他软件讨论,网络组建,分享使用经验技巧。
等级: 六袋长老
注册: , 21:00
住址: 东莞
现金: 71 金币
资产: 6171 金币
75个帖子获得143次感谢
三步释放物理磁盘上VMware虚拟机中删除的文件占用的磁盘空间
使用VMware虚拟机时会发现物理机的磁盘空间会越来越少,当删除虚拟机中的文件后,物理机中的磁盘空间也不会自己释放,下面三步可释放VMware虚拟机中删除的文件占用的磁盘空间,废话不多说了看图:
上传的缩略图
下列 3 位会员向 Jason 表示感谢:
&(), &(), &()
等级: 五袋长老
Uid:101381
注册: , 01:57
住址: 深圳
现金: 27 金币
资产: 27 金币
71个帖子获得120次感谢
作者: Jason
使用VMware虚拟机时会发现物理机的磁盘空间会越来越少,当删除虚拟机中的文件后,物理机中的磁盘空间也不会自己释放,下面三步可释放VMware虚拟机中删除的文件占用的磁盘空间,废话不多说了看图:
这样可以释放一些
还有点疑问
在虚拟机里所有占用的空间还不到25G
为什么整个虚拟文件有40多G呢 ?
有遇见过这样的问题么
上传的缩略图
等级: 六袋长老
注册: , 21:00
住址: 东莞
现金: 71 金币
资产: 6171 金币
75个帖子获得143次感谢
作者: lanbushan
这样可以释放一些
还有点疑问
在虚拟机里所有占用的空间还不到25G
为什么整个虚拟文件有40多G呢 ?
有遇见过这样的问题么
有没有生成过系统快照,有的话也占很大的空间
等级: 五袋长老
Uid:101381
注册: , 01:57
住址: 深圳
现金: 27 金币
资产: 27 金币
71个帖子获得120次感谢
没有生成过快照哦.......
等级: 六袋长老
Uid:146372
注册: , 08:55
现金: 54 金币
资产: 54 金币
130个帖子获得170次感谢
作者: lanbushan
没有生成过快照哦.......
2楼的图片已经说了是snapshot,并不是说自己创建了快照才会产生快照文件的。
等级: 五袋长老
Uid:101381
注册: , 01:57
住址: 深圳
现金: 27 金币
资产: 27 金币
71个帖子获得120次感谢
作者: jackap
2楼的图片已经说了是snapshot,并不是说自己创建了快照才会产生快照文件的。
有点不太明白 我理解成只是一种打开方式,就像AI文件也可以用CDR软件方式来打开,当然,能不能打开就是另外一回事了,具体的是怎么回事也不清楚,对这个真是不懂
上传的缩略图
等级: 六袋长老
注册: , 21:00
住址: 东莞
现金: 71 金币
资产: 6171 金币
75个帖子获得143次感谢
到快照管理里去检查了下吧,如果有就删掉吧!
等级: 八袋长老
Uid:81857
注册: , 16:15
现金: -12788 金币
资产: -12788 金币
感谢: 6332
810个帖子获得1668次感谢
有时候虚拟机里面彻底删除的文件还是占用实体内存的,所以有必要清除下虚拟硬盘的
__________________
心道、人道、狼道、王道
等级: 四袋长老
Uid:75888
注册: , 16:40
现金: 7 金币
资产: 7 金币
35个帖子获得48次感谢
我的VMware 8 没有 “Clean Up Disk...” 项
上传的缩略图
等级: 七袋长老
Uid:88349
注册: , 12:42
现金: 764 金币
资产: 764 金币
185个帖子获得256次感谢
 楼主的是VM的哪个版本呀。9?我的8没有这个功能呢?
您不可以发表新主题
您不可以回复主题
您不可以上传附件
您不可以编辑您的帖子
论坛禁用 HTML 代码 are 禁用
所有时间均为北京时间。现在的时间是 。
律师声明:本站内容,均具有版权,未经书面授权,禁止转载,严禁镜像,违者承担一切后果!
&nbsp 广告联系: &nbsp 站务管理:
Powered by vBulletin& Version 3.6.8Copyright &2004 - 2017, 中印网
Page generated in 0. seconds (74.46% PHP - 25.54% MySQL) with 13 queries
Please enable / Bitte aktiviere JavaScript!Veuillez activer / Por favor activa el Javascript!使用VMware Converter调整虚拟磁盘文件大小
虚拟化技术带来的很大一个好处就是可以轻松地对虚拟硬件做出修改,在需要的时候关闭虚拟机或者改变虚拟机的设置,就可以轻易地添加或者移除CPU、内存磁盘和网卡(NIC:Network Interface Card)。但是如何增加或者减少已有磁盘的大小呢?在本文中我们将会介绍若干个可以调整虚拟硬盘大小的方法。
  虚拟化技术带来的很大一个好处就是可以轻松地对虚拟硬件做出修改,在需要的时候关闭虚拟机或者改变虚拟机的设置,就可以轻易地添加或者移除CPU、内存磁盘和网卡(NIC:Network Interface Card)。但是如何增加或者减少已有磁盘的大小呢?在本文中我们将会介绍若干个可以调整虚拟硬盘大小的方法。
  VMware Converter:类似于重新分区
  发现最初为虚拟机所创建虚拟机磁盘空间不足,这是一个非常常见的问题。通常情况下通过新增虚拟硬盘就可以获得更多的磁盘空间,但往往需要大量新添加的磁盘分区名和驱动器名(并且这些命名并没有实际用处)。同时也有可能出现这样的情况,最初为虚拟机创建的磁盘文件过大。这种情况就需要缩减该虚拟机磁盘文件,节省更多的空间供宿主服务器上面的其它虚拟机使用。
  扩大或者缩减一个现有虚拟磁盘最简单的方法就是使用VMware Converter工具。运行这个工具之后,就可以看到重新分配已有磁盘容量的选项,可以把初始磁盘大小扩大或者缩小。Converter并不改动初始磁盘文件,而是根据特定的磁盘大小创建带有该容量虚拟磁盘的新虚拟机,然后把数据从原来的虚拟机拷贝到新创建的虚拟机中。在验证新虚拟机正常运行之后,删除原来的虚拟机。
  使用VMware Converter重新规划磁盘大小时遵循以下步骤:
  下载并在希望更改容量的虚拟机上安装Converter,当然如果拥有企业版的话,也可以远程运行C
  选择源类型:如果直接运行在虚拟机、ESX Server上,选择&物理机&;如果远程运行,选择VirtualCenter虚拟机;
  在源登录界面,如果是直接运行在虚拟机上的话,选择&本地机&;如果是远程运行的话,选择ESX/VC服务器登录;另外如果远程运行的话还需要选择源虚拟机;
  在源数据完全显示之后,可以看到指定给虚拟机的所有磁盘。在这个界面上可以给磁盘重新分配大小,选择&选择卷和重新分配大小&,然后选择其中的一个选项(如以GB为单位输入大小),再输入新的容量大小。如果是需要缩减磁盘容量的话,就必须输入一个比当前磁盘被占用磁盘空间总量大的值。例如如果在初始服务器上有一个24GB的磁盘,其上面有8GB的数据,则输入的数值就必须比8GB大;
  然后,选择&指定ESX主机&,通常情况下该主机就是源虚拟机的宿主主机。对虚拟机命名(名字必须与源虚拟机不同,只有在删除源虚拟机之后,其名字才可以重新使用),选择数据存储的虚拟机、虚拟机使用的网络,最后点击&完成&开始这个流程;
  完成这个流程所耗费的时间基于源服务器上存储的数据量而各不相同。在这些完成之后就可以关闭源虚拟机,启动新创建的虚拟机,验证虚拟机是否正常工作。在删除源虚拟机之后,重新以源虚拟机的名字命名新虚拟机;
  使用vmkfstool修改磁盘容量
  使用第二个方法只能增大虚拟机容量,这个方法使用命令行工具,即vmkfstool。然而如果使用的工作平台是ESX3.5,也可以使用VI客户端。在ESX2.x的早期版本中允许使用vmkfstool命令行缩小磁盘文件的容量,但是在ESX3.x中把这项功能去掉了。
  使用vmkfstool增大虚拟磁盘容量的步骤如下:
  关闭虚拟机;
  登录到ESX服务控制台;
  转到存放磁盘文件的虚拟机工作目录;
  输入&vmkfstool&,然后输入虚拟磁盘文件名以及参数-X,最后输入希望更改的磁盘容量大小(以G为单位),例如&vmkfstools myvm1.vmdk &X 12G&。当然也可以以K(Kilobytes)或者M(Megabytes)为单位更改磁盘容量的大小。
  使用ESX3.5VI客户端增加容量的步骤如下:
  关闭虚拟机;
  使用VI客户端编辑虚拟机的设置;
  选择要扩大容量的磁盘,在总容量的约束以内输入新容量大小;
  点击&完成&;
  在扩充磁盘容量以后,启动虚拟机;进入磁盘管理工具,确定新的磁盘对于操作系统是可见的。新增的空间将会在已有磁盘上以未分配空间的形式出现。
  这样就成功地扩充了虚拟磁盘容量,可以通过改变已有的磁盘分区容量来把新增空间包括进来。这篇文章的第二部分将会介绍如果扩充操作系统分区,可以把新增的未分配空间包括进来,并且我们将会介绍完成这项工作的两种不同方法。
文章评论 以下网友留言只代表其个人观点,不代表本网站的观点和立场。developerWorks 社区
本文介绍了 qcow2 和 raw,它们都是 QEMU(KVM)虚拟机使用的磁盘文件格式,本文将从其实现原理,支持特性,以及读写效率等进行对比和分析,最后还要介绍这两种格式的磁盘文件如何转化。
, 软件工程师, IBM
乔立勇,软件工程师,目前在 IBM 中国系统与科技研发中心从事开源项目 KVM,以及 rhevh-blue 项目的研发工作。
qcow2 的基本原理qcow2 镜像格式是 QEMU 模拟器支持的一种磁盘镜像。它也是可以用一个文件的形式来表示一块固定大小的块设备磁盘。与普通的 raw 格式的镜像相比,有以下特性:更小的空间占用,即使文件系统不支持空洞(holes);支持写时拷贝(COW, copy-on-write),镜像文件只反映底层磁盘的变化;支持快照(snapshot),镜像文件能够包含多个快照的历史;可选择基于 zlib 的压缩方式可以选择 AES 加密qcow2 镜像文件格式头部信息每一个 qcow2 文件都以一个大端(big-endian)格式的头开始,结构如下:清单 1. qcow2 Header typedef struct QCowHeader {
uint64_t backing_file_
uint32_t backing_file_
uint32_t cluster_
uint64_ /* in bytes */
uint32_t crypt_
uint32_t l1_
uint64_t l1_table_
uint64_t refcount_table_
uint32_t refcount_table_
uint32_t nb_
uint64_t snapshots_
} QcowH下面以一个 10G 的 qcow2 文件为例来分析各字段的含义。清单 2. qcow2 文件的 16 进制表示# file 1.cow2
1.cow2: QEMU QCOW Image (v2),
46 49fb 00 00
QFI.............
00 10 00 0000
................
00 14 03 0000
................
00 00 00 0000
................
00 00 00 0000
................
00 00 00 0000
................
00 68 00 0000
.......h........
00 00 00 0000
................
......前 4 个比特包含了字符 Q,F,I,然后是 0xfb,实例中的 5146 49fb 是 magic 字段。接下来的 4 个比特包含了该镜像文件的版本号,实例中的
是 version 字段,代表使用的是 qcow2 版本。
backing_file_offset 占用 8 个字节,实例中 00 0000,给出一个从某个文件开始偏移量。backing_file_size 给出了一个不以 null 结尾的字符串的长度,实例中为 。如果这个镜像文件是一个写时拷贝的,那么它是原始文件的路径。cluster_bits,32 位(),描述了如何映射一个镜像的地址到一个本地文件,它决定了在一个 cluster 中,偏移地址的低位是如何作为索引的。因为 L2 表占用了一个单独的 cluster 并且包含 8 字节的表项(entry),所以 cluster_bits 只有不足 3 个位,作为 L2 表的索引。接下来的 size ,8 字节代表了该镜像文件所表示的块设备的大小,实例中为 00 0000 字节,也就是 10G 的空间。crypt_method 如果为 1 代表使用 AES 加密。l1_size()和 l1_table_offset(03 0000::)分别给出了 L1 表大小和偏移量。refcount_table_offset 给出 refcount 表的偏移量(01 0000)而 refcount_table_clusters 描述了以 cluster 为单位的 refcount 表的大小()。nb_snapshots 给出了该镜像包含的快照数量(), snapshots_offset 给出每个快照到 QCowSnapshotHeader 的偏移量(00 0000)。
一个典型的 qcow2 镜像文件包含一下几部分:上文中提到的头部信息L1 表refcount 表一个或者多个 refcount 块快照头L2 表数据 cluster2 级查找在 qcow2 中,磁盘的内容是保存在 cluster 中(每个 cluster 包含一些大小为 512 字节的扇区)。为了找到给定地址所在的 cluster,我们需要查找两张表,L1-&L2。L1 表保存一组到 L2 表的偏移量,L2 表保存一组到 cluster 的偏移量;所以一个地址要根据 cluster_bits(64 位)的设置分成 3 部分,比如说 cluster_bits=12;低 12 位是一个 4Kb cluster 的偏移(2 的 12 次方=4Kb);接下来 9 位是包含 512 个表项目的 L2 表;剩下 43 位的代表 L1 表偏移量。为了获取一个给定地址(64 位)的偏移位置:从 Head 域中的 l1_table_offset 取得 L1 表的地址用前(64-l2_bits-cluster_bits)位地址去索引 L1 表在 L1 表中的偏移量获得 L2 表的地址用地址中的接下来的 l2_bits 去索引 L2 表,获得一个 64 位的表项用 L2 表中的偏移量获得 cluster 的地址用地址中剩下的 cluster_bits 位去索引该 cluster,获得该数据块如果 L1 表和 L2 表中的偏移量都是空,这块区域就尚未被镜像文件分配。注意 L1 表和 L2 表中的偏移量的前两位被保留,用做表示'copied' 或'compressed'。Copy-on-Write 镜像文件qcow2 镜像可以用来保存另一个镜像文件的变化,它并不去修改原始镜像文件,只记录与原始镜像文件的不同即可,这种镜像文件就叫做 copy-on-write 镜像。虽然是一个单独的文件,但它的大部分的数据都来自原始镜像,只有跟原始镜像文件相比有变化的 cluster 才会被记录下来。这很容易去实现,在头部信息中记录原始文件路径即可。当需要从一个 copy-on-write 镜像文件中读取一个 cluster 的时候,首先检查这块区域是否已经在该镜像文件中被分配,如果没有就从原始文件读取。快照快照有些类似 Copy-On-Write 文件,但区别是快照是一个可写的。快照就是原始文件本身(内部快照)。它既包含做快照之前的原始文件部分,它本身也包含可写的部分。每一个快照都包含如下的头部结构:清单 3. qcow2 快照 Header
typedef struct QCowSnapshotHeader {
/* header is 8 byte aligned */
uint64_t l1_table_
uint32_t l1_
uint16_t id_str_
uint16_t name_
uint32_t date_
uint32_t date_
uint64_t vm_clock_
uint32_t vm_state_
uint32_t extra_data_ /* for extension */
/* extra data follows */
/* id_str follows */
/* name follows
} QcowSnapshotHqcow2 的其他特性qcow2 支持压缩,它允许每个簇(cluster)单独使用 zlib 压缩。它也支持使用 128 位的 AES 密钥进行加密。创建 qcow2 和 raw 文件以及两种镜像的对比使用 QEMU 软件包自带的 qemu-img 软件创建 qcow2 文件。清单 4. 创建 qcow2 和 raw 文件$ qemu-img create -f qcow2 test.qcow2 10G
Formatting 'test.qcow2', fmt=qcow2 size= encryption=off cluster_size=65536 lazy_refcounts=off
$ qemu-img create -f raw test.raw 10G
Formatting 'test.raw', fmt=raw size=对比两种格式的文件的实际大小以及占用空间大小如下:清单 5. qcow2 和 raw 文件占用空间情况对比$ ll -sh test.*
200K -rw-r--r-- 1 qiaoliyong qiaoliyong 193K 5 月
6 10:29 test.qcow2
0 -rw-r--r-- 1 qiaoliyong qiaoliyong
6 10:28 test.raw
[qiaoliyong@localhost ]$ stat test.raw
文件:"test.raw"
大小: 块:0
IO 块:4096
[qiaoliyong@localhost ]$ stat test.qcow2
文件:"test.qcow2"
大小:197120
IO 块:4096
普通文件从对比中可以看出 qcow 格式的镜像文件大小位 197120 字节,占用空间为 200K,占用了 200 块磁盘空间。而 raw 格式的文件则没有占用磁盘空间,它是一个空洞文件。Raw 格式与 qcow2 转化QEMU 软件包里面提供的 qemu-img 工具可用于 image 镜像一些常用操作。将 raw 格式转化为 qcow2 格式的文件命令如下:qemu-img convert -f raw -O qcow2 test.raw test.raw.qcow2
[qiaoliyong@localhost kimchi]$ ll -sh test.*
200K -rw-r--r-- 1 qiaoliyong qiaoliyong 193K 5 月
6 10:29 test.qcow2
0 -rw-r--r-- 1 qiaoliyong qiaoliyong
6 10:28 test.raw
200K -rw-r--r-- 1 qiaoliyong qiaoliyong 193K 5 月
6 10:44 test.raw.qcow2两种格式文件的性能比较表 1. 使用 ide 作为虚拟磁盘的驱动的三种镜像格式性能对比
writethrough
Old qcow2 (0.10.5)
New qcow2 (0.11.0-rc1)
表 2. 使用 virtio 作为虚拟磁盘的驱动的三种镜像格式性能对比
Old qcow2 (0.10.5)
New qcow2 (0.11.0-rc1)
小结本文着重介绍了 QEMU 虚拟机使用的镜像文件 qcow2 的格式以及特性,并与 raw 格式镜像做了对比。qcow2 格式的文件虽然在性能上比rRaw
格式的有一些损失(主要体现在对于文件增量上,qcow2 格式的文件为了分配 cluster 多花费了一些时间),但是 qcow2 格式的镜像比 Raw 格式文件更小,只有在虚拟机实际占用了磁盘空间时,其文件才会增长,能方便的减少迁移花费的流量,更适用于云计算系统,同时,它还具有加密,压缩,以及快照等 raw 格式不具有的功能。
参考资料 参考 关于 qcow2 镜像格式的介绍参考
关于 Qemu 使用 qcow2 的方法参考
关于 qcow2 的新特性参考 qcow2 的性能在 寻找为 Linux 开发人员(包括 )准备的更多参考资料。加入 。查看开发人员推动的博客、论坛、组和维基,并与其他 developerWorks 用户交流。
developerWorks: 登录
标有星(*)号的字段是必填字段。
保持登录。
单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件。
在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。
所有提交的信息确保安全。
选择您的昵称
当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。
您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。
标有星(*)号的字段是必填字段。
(昵称长度在 3 至 31 个字符之间)
单击提交则表示您同意developerWorks 的条款和条件。 .
所有提交的信息确保安全。
文章、教程、演示,帮助您构建、部署和管理云应用。
立即加入来自 IBM 的专业 IT 社交网络。
免费下载、试用软件产品,构建应用并提升技能。
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=Linux, Cloud computingArticleID=983928ArticleTitle=QEMU 使用的镜像文件:qcow2 与 rawpublish-date=

我要回帖

更多关于 磁盘raw格式解决方法 的文章

 

随机推荐