How to shrink disk for KVM

如何expand虚拟机磁盘分区相对于shrink比较简单:

1.  创建一个要扩展size大小的目标img文件

2.  选择要扩展的分区

3.  virt-resize --expand /dev/sda1 source.img target.img

要保证target比source的文件大。

shrink稍微复杂一些,因为考虑到内部文件系统的使用量,如果过度缩小会破坏文件系统。

首先要查看确定文件系统的使用量,和将要缩小的size

1.  virt-df source.img

使用guestfish 读取source.img (不要加-i 自动挂载,对文件系统做操作,不要保持这个设备在使用)

2.  guestfish -a source.img

输入run,正式加载磁盘文件

3.  run

下面和bash下的操作类似,扫描分区

4.  e2fsck-f /dev/vda1

调整分区大小,一定要保证调整后的大小要比内部文件系统的使用量大,否则会出错。

5.  resize2fs-size /dev/vda1 5G

调整完成,退出

6.  exit

创建shrink的目标文件,因为缩小了分区,但是磁盘的大小还是原先的,占用量并没有变化。

7.  qemu-img create -f raw target.img 5G

使用guestfish的工具virt-resize 缩减磁盘文件的大小,原理相当于同时挂载两个镜像,然后将一个磁盘文件的全部内容和修改的部分拷贝到另一个磁盘中。(不过此方法不适用与直接缩减分区,如果有进展会将新的进度更新)

8.  virt-resize --shrink /dev/sda1 source.img target.img

查看新的磁盘文件的状态。

9.  qemu-img info target.img

查看调整后的磁盘内部文件系统的使用量。

10.  virt-df target.img

posted @ 2013-09-25 23:26  风刃  阅读(988)  评论(0编辑  收藏  举报