扩展虚拟机VM的磁盘空间(LVM)

该技术文档下载: http://down.51cto.com/data/450985
 
我在做服务器虚拟化的时候,经常碰到有人要将虚拟机的磁盘空间扩大,如果是新添加一块磁盘的话,在服务器中是比较好看到的。但如果是在虚拟机原有的磁盘上继续扩大,这又怎么让虚拟机识别出来并挂在到根目录下了?
 
使用的虚拟化软件:VMWare ESXi 5.0 (任何一个平台的虚拟机都可使用该方法扩展硬盘空间)
ESXi上新建了一个虚拟机,安装CentOS5.5系统时低估了它能占用的磁盘空间, 现在空间不够使用了,需要给它扩展。我们最常见的就是新添加一块硬盘然后挂载到根目录下就OK了,这种方法很常见,网上也有很多文档,我这就不多说了。但是我这写的这个是在原来的一块硬盘上直接扩大磁盘空间。玩虚拟化的都知道编辑下虚拟机,然后把虚拟机的磁盘改大空间就好了,问题是这样怎么在系统里显示出来了。
我们都知道,要是新添加一块硬盘的话,通过fdisk  -l 就能看到第二块磁盘了,然后对第二块磁盘进行分区格式化就OK了。但是在只有一块磁盘的情况下,怎么让它扩大空间在系统里显示出来了?下面我们详细说明:
第一步,先编辑虚拟机,扩大磁盘;
看图,我原虚拟机的磁盘是300G,现在要扩大到800G
扩展虚拟机VM的磁盘空间(LVM)_第1张图片
1.右击该虚拟机—>编辑设置—>硬盘1—>扩大磁盘
 
扩展虚拟机VM的磁盘空间(LVM)_第2张图片
2.现在在虚拟机CentOS系统里看不到刚加入的磁盘空间;
 
扩展虚拟机VM的磁盘空间(LVM)_第3张图片
我们使用命令查看到,改虚拟机CentOS系统里只有一个磁盘sda,有两个分区sda1sda2,在根目录下挂载了286G
OK,现在我们来把刚新扩展的500G磁盘空间让它显示在系统中。
         3.使用fdisk命令,新建分区sda3n命令建个P类型的磁盘,然后用t命令更改ID8eLVM类别)。
[root@*****~]# fdisk /dev/sda
 
The number of cylinders for this disk is set to 39162.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
 
# 输入 n ,新建分区
Command (m for help): n
# 输入 P ,主分区
Command action
   e   extended
   p   primary partition (1-4)
p
# 目前是 sda 第三个分区输入 3
Partition number (1-4): 3
# 敲回车,默认就行了(如果要分多个分区,这儿就制定数值)
First cylinder (39163-110960, default 39163):
Using default value 39163
Last cylinder or +size or +sizeM or +sizeK (39163-110960, default 110960):
Using default value 110960
# 这里输入 t
Command (m for help): t
# 这里选择第三个分区
Partition number (1-4): 3
# 指定分区的格式为8e (LVM)
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Linux LVM)
# 输入 p 查看一下
Command (m for help): p
Disk /dev/sda: 912.6 GB, 912680550400 bytes
255 heads, 63 sectors/track, 110960 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14       39162   314464342+  8e  Linux LVM
/dev/sda3           39163      110960   576717435   8e  Linux LVM
# 这里输入w,保存退出
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: ( 这里有个小报错,不用管它 ).
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
# 重启使其生效
[root@***** ~]# reboot
Broadcast message from root (pts/1) (Tue May 15 12:12:27 2012):
The system is going down for reboot NOW!
[root@***** ~]#
 
 
第二步,加入LVM,挂载到根目录下;
在这步有两种方法扩容“/”根目录,一种是把/var/usr、等迁移到sda3,然后做ln  -s 连接,但这种方法如果sda3挂掉的话,那就只能哭了。
本文使用的是另一种方法:
1. 查看卷组情况,可以看到只有一个卷组 VolGroup00 (此名称因系统而异)
[root@*****~]# vgs
  /dev/hdc: open failed: 找不到介质
  VG         #PV #LV #SN  Attr    VSize    VFree
  VolGroup00   1   2   0  wz--n-  299.88G    0
2. 创建物理卷( LVM 分区),并将物理卷加入到组里( VolGroup00 );
[root@*****~]# lvm
lvm>pvcreate /dev/sda3 ## 创建一个 LVM 硬分区
  Physical volume "/dev/sda3" successfully created
lvm> vgextend VolGroup00 /dev/sda3 ##
加入与 / 目录同一个 LVM
  Volume group "VolGroup00" successfully extended
(如果没有格式化就会报如下错误:
lvm> pvcreate /dev/sda3
  Can't open /dev/sda3 exclusively.  Mounted filesystem?
[root@*****~]# mkfs.ext3 /dev/sda3 ## 没有成功是因为没有格式化,要与 / 目录格式一样。)
查看一下:可以看到 sda3 500G 的空间可以扩充使用;
扩展虚拟机VM的磁盘空间(LVM)_第4张图片
 
2. 挂载到“ / ”根目录下, 将卷组下的卷 LogVol00 扩容 500G (增加容量的关键);
 
3. 重新识别磁盘容量;
[root@*****~]# resize2fs /dev/VolGroup00/LogVol00
扩展虚拟机VM的磁盘空间(LVM)_第5张图片
 
4. 查看最终结果:
 
扩展虚拟机VM的磁盘空间(LVM)_第6张图片
扩展虚拟机VM的磁盘空间(LVM)_第7张图片
好了,我们可以在虚拟机CentOS系统中看到磁盘空间已经扩容为800GB,到此完成!
 
LVM管理磁盘不需要在/etc/fstab中加载,增加减少容量也不会对文件造成损失。)
 
该技术文档下载:http://down.51cto.com/data/450985
(包含相关的报错信息)