給Linux虛機擴充硬碟空間 ( by quqi99 )

quqi99發表於2013-06-15

                                                        給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讓它從光碟啟動,然後再用它分割槽。

相關文章