给Linux虚机扩充硬盘空间 ( by quqi99 )

                                                        给Linux虚机扩充硬盘空间 ( by quqi99 )


作者:张华  发表于:2013-06-15
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明

( http://blog.csdn.net/quqi99 )

基本情况:我用virtualbox创建了一个qcow格式10G的虚机fedora17,上面安装openstack后,由于自动创建了vg_openstack的LVM VG,这样导致根分区/的空间过小。现在目的是想把根分区调大一点。
第一步,将qcow格式转换为raw格式,qemu-img convert -f qcow fedora17_32bit.qcow -O raw fedora17_32bit.raw
      并给这个镜像加点空间,    qemu-img fedora17_32bit.raw +2G
第二步,我们当然用losetup /dev/loop0 fedora17_32bit.raw && mount /dev/loop0 /mnt之类的命令将镜像mount到loop设备中,但是它却无法识别镜像中的分区的偏移量和大小,所以这时候kpartx出场,如下,kpartx命令映镜中的两个分区映射到了两个LVM分区中,位于/dev/mapper目录下。
      [hua@laptop fedora17_32bit]$ sudo kpartx -av ./fedora17_32bit.raw
          add map loop0p1 (253:0): 0 1024000 linear /dev/loop0 2048
          add map loop0p2 (253:1): 0 19945472 linear /dev/loop0 1026048
第三步,可以用gparted来调整分区的大小,一般说来用gparted调整分区时,需要先umount这个分区,所以对在正在使用的根分区显然是无法调大小的,这时候可以先从光盘启动再来用这个工具。不过我们现在因为调整的是虚机通过kpartx暴露出来的分区,就无所谓啦。
      但有一点,要注意,gparted只能识别/dev/目录下的设备,不能识别/dev/mapper/目录下的,所以对于上面用kpartx映射到/dev/mapper/中的分区需做一个链接到/dev/目录下去。
       $ ls -l /dev/mapper/loop0p*
    lrwxrwxrwx 1 root root 7 Jun 15 17:31 /dev/mapper/loop0p1 -> ../dm-0
    lrwxrwxrwx 1 root root 7 Jun 15 17:31 /dev/mapper/loop0p2 -> ../dm-1
    [hua@laptop fedora17_32bit]$ sudo ln -s /dev/dm-0 /dev/loop0p1
    [hua@laptop fedora17_32bit]$ sudo ln -s /dev/dm-1 /dev/loop0p2

    接下来,通过命令sudo gparted /dev/loop0调用gparted图形化工具来调整分区,一看就知道,略。

第四步,上面只是用gparted工具将增加的空间给到第一个分区了,下面用resize2fs命令将增加的空间给这第一个分区上的文件系统。下面resize2fs命令自动将/dev/loop0p1分区的空间分给文件系统。
     sudo resize2fs /dev/loop0p1
     这时候,你启动虚机之后,发现这块新增的空间确实分出来了,但给/boot挂载点了(因为上面的第一个分区/dev/sda1是挂在/boot下的),但是如何将新增的空间分给根分区呢?还未解决。


上面第三四步等同于直接下载gparted live cd,即iso文件,用kvm让它从光盘启动,然后再用它分区。

你可能感兴趣的:(给Linux虚机扩充硬盘空间 ( by quqi99 ))