使用LVM在vmware中增大linux的根分区

时间:2021-02-08 17:19:47

 

近日在 vmware 中虚拟的 cent os 上安装 xen 时,安装过程进行了一个多小时后, make 说磁盘空间不够,异常退出了,令人深感郁闷。这个时候,只想到了两个解决方法:一,看看 vmware 能不能改变硬盘大小;二,用 vmware 给虚拟机操作系统添加一块硬盘。这两种方法都能增大硬盘容量,等增大硬盘容量后,再考虑如何改变分区大小。
vmware 的图形界面上不能改变 guest 操作系统的硬盘大小。在命令行中进到 vmware 的安装目录,发现一个程序 vmware-vdiskmanager.exe ,它的 help 说明它可以做么这一点。在网上搜索了一下,真有使用这个工具更改磁盘容量的。于是:
D:/Program Files/VMware/VMware Workstation>vmware-vdiskmanager.exe -x 10GB "e:/C
ent OS/Cent OS.vmdk "
  Grow: 100% done.
Disk expansion completed successfully.
 
WARNING: If the virtual disk is partitioned, you must use a third-party
         utility in the virtual machine to expand the size of the
         partitions . For more information, see:
         http://www.vmware.com/support/kb/enduser/std_adp.php?p_faqid=1647
然后开始在网上找如何更改 linux 下分区的大小。边看网上的文档边实践,在这个过程持续了好几个小时,找到了不少关于 LVM 的文档,但同时也郁闷地发现,增加的硬盘容量在 guest 操作系统中根本看不到,连看都看不到,自然无法动手。
只好用第二种方法,反正网上介绍 LVM 的文档也都是在新增一块硬盘的情况下扩展分区容量的。先用 vmware-vdiskmanager.exe 把增加的硬盘容量 shrink 回去。
D:/Program Files/VMware/VMware Workstation>vmware-vdiskmanager.exe -k "e:/Cent O
S/Cent OS.vmdk "
 
现在,关闭 guest 操作系统。在 vmware 中, edit 虚拟机的设置,点击 add ,新增一块 SCSI 硬盘。重启。
[root@jcwkyl ~]# cd /dev
[root@jcwkyl dev]# ls sd *
sda   sda1   sda2  sdb
这个 sdb 就是新增的那块 SCSI 硬盘了。然后:
[root@jcwkyl dev]# lvm
lvm > pvcreate /dev/sdb
lvm > vgdisplay
  --- Volume group ---
  VG Name               VolGroup00
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                 0
  Cur PV                2
  Act PV                2
……
查看卷组的信息。然后:
lvm > vgextend VolGroup00 /dev/sdb                  
lvm > vgdisplay
这个时候已经可以看到 VolGroup00 的容量变成了 10.84G
lvm > pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               VolGroup00
  PV Size               5.90 GB / not usable 24.06 MB
  Allocatable            yes (but full)
  PE Size (KByte )       32768
  Total PE              188
  Free PE               0
  Allocated PE          188
  PV UUID               pCjs4H-Xygt-K332-rwkQ-sXwN-2LhC-MJkcw3
 
  --- Physical volume ---
  PV Name                /dev/sdb
  VG Name               VolGroup00
  PV Size               5.00 GB / not usable 32.00 MB
  Allocatable            yes
  PE Size (KByte )       32768
  Total PE              159
  Free PE               15
  Allocated PE          144
  PV UUID               5L1QpE-KO2j-2MYz-qN09-zXxR-1Pwj-SC5dlR
lvm > lvdisplay
  --- Logical volume ---
  LV Name                /dev/VolGroup00/LogVol00
  VG Name                VolGroup00
  LV UUID                2rLJVW-zMFE-dAQ9-eRiE-oRZE-gvhW-AkzpsJ
  LV Write Access        read/write
  LV Status              available
  # open                  1
  LV Size                4.88 GB
  Current LE             300
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
 
  --- Logical volume ---
  LV Name                /dev/VolGroup00/LogVol01
  VG Name                VolGroup00
  LV UUID                Nx0PK2-Vb7Y-7YXe-Skd6-FCRD-xPI7-YJLjfZ
  LV Write Access        read/write
  LV Status              available
  # open                  1
  LV Size                1.00 GB
  Current LE             32
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1
 
lvm > lvextend -L +4.5G /dev/VolGroup00/LogVol00
一开始是 +5G 的,但是说空间不够,所以改成了 4.5G
lvm > quit
[root@jcwkyl dev]#e2fsck -f /dev/VolGroup00/LogVol00
[root@jcwkyl dev]#resize2fs /dev/VolGroup00/LogVol00
现在:
[root@jcwkyl dev]# df -h
Filesystem              Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      9.1G  2.8G   5.9G  33% /
/dev/sda1              99M   12M   82M  13 % /boot
tmpfs                  189M     0  189M   0% /dev/shm
上面输出冗长,因为第一次使用 LVM 比较新鲜,都贴上了。总的来说,用到的命令就是:
为了使用 LVM 先初始化一块 physical volumn
pvcreate /dev/sdb
然后把它加到卷组 (volumn group) 里去:
vgextend vgextend VolGroup00 /dev/sdb
其中卷组名是通过 vgdisplay 看到的。这些命令非常有用: fdisk , parted, mkfs.ext3, df , mount ,另外还有 /etc/fstab 文件。
上面加入卷组成功后,扩展逻辑卷的容量,这个逻辑卷就是挂载到 / 上的分区,可以通过 mount 来看到:
lvextend -L +4.5G /dev/VolGroup00/LogVol00
最后是两条命令:
e2fsck -f /dev/VolGroup00/LogVol00
resize2fs /dev/VolGroup00/LogVol00