xen虚拟机磁盘扩容

    xen虚拟机在创建虚拟磁盘文件后,如果初始大小设置不合理,后期维护时可能会遇到磁盘使用空间不足的情况,所以需要对虚拟磁盘文件进行扩容,以增加磁盘使用空间。
    xen虚拟机的分区方式主要有两种:1.直接在虚拟机磁盘上创建分区表。2.先在虚拟机上创建LVM(Logical Volume Manager )系统,再在LVM上面建立虚拟分区。对于第一种情况,网上相关的资料较多,这里主要讨论的是第二种情况的虚拟机磁盘扩容方法。

操作步骤:
1. 关闭虚拟机
$ xm shutdown myvm1.faladay.cublog.cn
2. 增加虚拟磁盘文件空间(4G)
$ dd if=/dev/zero bs=1024k count=4096 >> /home/myvm/myvm1.faladay.cublog.cn.img
3. 重新创建虚拟磁盘分区表
$ losetup -f
/dev/loop0
$ losetup /dev/loop0 /home/myvm/myvm1.faladay.cublog.cn.img
$ losetup -a
/dev/loop0: [fd01]:10977283 (/home/myvm/myvm1.faladay.cublog.cn.img)
$ fdisk /dev/loop0
下面是fdisk界面的输入和输出信息(摘要):
Command (m for help): p
      Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1   *           1           6       48163+  83  Linux
/dev/loop0p2               7         764     6088635   8e  Linux LVM
Command (m for help): d
Partition number (1-4): 2
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (7-1281, default 7):
Using default value 7
Last cylinder or +size or +sizeM or +sizeK (7-1281, default 1281):
Using default value 1281
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)
Command (m for help): p
/dev/loop0p1   *           1           6       48163+  83  Linux
/dev/loop0p2               7        1281    10241437+  8e  Linux LVM
Command (m for help): w

4. 以root用户登录虚拟机
$ xm create myvm1.faladay.cublog.cn
$ ssh root@myvm1.faladay.cublog.cn

5. 修改LVM物理分卷大小
$ pvscan
  PV /dev/xvda2   VG sys   lvm2 [5.75 GB / 0 GB free]
  Total: 1 [5.75 GB] / in use: 1 [5.75 GB] / in no VG: 0 [0   ]
$ pvresize +4096M /dev/xvda2
$ pvscan
  PV /dev/xvda2   VG sys   lvm2 [9.75 GB / 3.97 GB free]
  Total: 1 [9.75 GB] / in use: 1 [9.75 GB] / in no VG: 0 [0   ]
$ lvscan
  ACTIVE            '/dev/sys/root' [4.00 GB] inherit
  ACTIVE            '/dev/sys/home' [1.28 GB] inherit
  ACTIVE            '/dev/sys/swap' [512.00 MB] inherit
$ lvextend -L +1024M /dev/sys/root 
$ lvextend -L +3072M /dev/sys/home
$ resize2fs -f /dev/sys/root
$ resize2fs -f /dev/sys/home

6. 退出虚拟机,执行下列命令
$ losetup -d /dev/loop0

    至此,虚拟机磁盘扩容完毕,通过df -h命令可以看到虚拟机磁盘空间root已经扩大1G,home已经扩大3G。

参考文献:
LVM : http://en.wikipedia.org/wiki/Logical_Volume_Manager_%28Linux%29

作者: faladay   发布时间: 2010-09-02