近日在 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
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jcwkyl/archive/2009/07/25/4380290.aspx