本文目的:
1. 使用ESX3在存储上分配空间给虚拟机
2. 将分配的空间应用到虚拟机上安装的AS4中
准备工作:
1. 在ESX3上安装好的AS4一台
2. 将ESX3的Storage配置好
ESX3操作:
1. 虚拟机上点击右键->Edit Setting
2. Virtual Machine Properties中的Hardware选项卡下,点击Add...
3. Please choose the type of device you wish to add,选Hard Disk->Next
4. 点击Create a new virtual disk -> Next.
如果有先前使用过的虚拟磁盘可以选Use an existing virtual disk.在这篇文档完成之前,曾经因操作不当把系统弄崩了,第二次扩容时就选得这个选项.
5. Disk Size处填上欲添加的容量.Location做过测试无论选择哪个,虚拟磁盘的文件都是做在存储盘柜上的,可能与我系统就做在存储上有关系.如果确定是要使用存储盘柜的空间,建议选择Datastore.
6. 下面的Node与Mode建议用默认值即可.因为要把新分出来的空间加入到AS的VG中,如果使用Independent,尤其是Nonpersistent可能会导致严重的问题.没试过,纯属个人猜测.
7. Next之后就是Finish了,点过Finish又回到了Virtual Machine Properties处,直接点OK就行了,别理那个Adding的提示.因为你等多久都是没用的,它一直显示adding..我曾等了半个多小时,点过OK你会发现在Recent tasks一栏中会出现Reconfigure Virtual Machine一行,等Status变为Completed就硬盘添加完成了.接下来就是AS中的操作了.
RedHat自从Red Hat Enterprise Linux Advance Server 4开始,磁盘管理引入了LVM的概念,如果没有参加过HP-UX的培训,突然出现的LVM确定挺让人挠头的.但如果弄明白了LVM后,就会发现LVM是很实用而且很强大的.
LVM可以自由地扩展或缩减分区大小,在这方面Raid并没有LVM方便.Raid(Raid1,Raid5)的高安全性又是LVM所不具备的.讨论这两者的区别不是本文的目的,这里暂且跳过.接下来我想通俗易懂地介绍一下使用LVM管理磁盘的便捷之处.
首先得弄清LVM这么几个概念:VG,LV,磁盘.
VG:卷组,由LV组成.
LV:逻辑卷,由一块磁盘或几块磁盘的空间组成.LV可以跨多块磁盘,一块磁盘也可以划分出多个LV,这个要视LV的容量而定.具体一块磁盘上是有一个LV还是多个LV对用户来说是透明了,无需关心.
磁盘:通常是硬盘,也可以是存储盘柜上的空间.
弄明白了上面几个概念后,我们再来看安装系统时自动建立的VG.
df查看系统分区信息
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup01-LogVol00
65541900 6723852 55492664 11% /
根分区"/"挂载于/dev/mapper/VolGroup01-LogVol00,这并不是真正的设备名,对应设备名为/dev/VolGroup01/LogVol00
这里可以看出容量基本等于我们的硬盘容量,其它容量被boot,swap分区占用.
如果系统中的程序,数据库或其它数据存放于/分区中,而此时硬盘容量又接近上限,传统的做法是向系统中添加一块儿新硬盘,分区格式化,将新建立的分区挂载到原来数据存放目录.
这个的做法需要对系统进行改动,而且如果数据存放目录分布于/分区的很多不同的位置,那会给系统管理员带来很大的麻烦,几乎是Mission Impossible.
而如果使用LVM,我们只需要将新硬盘加入到卷组中,然后将/分区扩大即可,不需要对系统或程序进行改动,省去了mount的麻烦.具体数据存到哪一块硬盘里不需要我们关心,LVM会帮我们做好这一切.
再介绍几个LVM相关的命令:
1. vgscan:扫描系统中的VG.
Reading all physical volumes. This may take a while...
Found volume group "VolGroup01" using metadata type lvm2
扫描出的VG名字为VolGroup01
2. vgdisplay:查看卷组的属性.这里可以看到VG Size是多大,-v参数显示详细属性.PE size是物理块的大小,VG的容量单位.到了lvdisplay该名称变成了LE.Total PE是PE的数量.Total PE 乘以 PE Size就是VG的总容量.
3. lvdisplay:查看逻辑卷的属性.这里可以看到LV Size是多大
4. pvcreate:要将新硬盘加入VG前,需要用该命令初始化硬盘
5. vgextend:扩展VG容量
6. lvextend:扩展LV容量
7. ext2online:将扩展后的LV容量生效.
下面开始AS4中的操作:
1. 要使ESX3中添加的硬盘生效需要重启一下系统.个人觉得AS4应该不需要靠重启这样笨办法来实现对硬盘的添加,但没有接受过RedHat正规的培训,不知道该如何实现.如果有高手知道请告诉我,谢谢.
2. pvcreate /dev/sdb
此处以sdb为例,原硬盘为sda,新硬盘为sdb
3. vgextend VolGroup01 /dev/sdb
Linux是大小写敏感的,注意输入需要完全正确.
4. 下面开始做计算题.我们要将所有的可用容量都扩展给/分区.
首先要做vgdisplay -v,记下Total PE的数量,然后看看VolGroup01中除了/dev/VolGroup01/LogVol00外还有哪些LV.以安装系统时自动建立的VG为例,还有一个叫/dev/VolGroup01/LogVol01的LV.记下它的Current LE数量.最后将VolGroup01的Total PE减去LogVol01的Current LE数量,得出来的数值再乘以PE Size就是下面lvextend命令中需要用到的数值.
看着上面这些文字有些晕?不要紧,我们把它们带到实例中再来看一下.
#vgdisplay -v
Finding all volume groups
Finding volume group "VolGroup01"
--- Volume group ---
VG Name VolGroup01
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 8
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 3
Act PV 3
VG Size 71.81 GB ##VG的容量
PE Size 32.00 MB ##PE大小,后面用得到
Total PE 2298 ##PE总数,后面用得到
Alloc PE / Size 2298 / 71.81 GB
Free PE / Size 0 / 0
VG UUID Vfn9HB-E2VH-eF1d-a0fB-5n5R-0qns-IjmBOL
--- Logical volume ---
LV Name /dev/VolGroup01/LogVol00 ##我们要扩展的分区名
VG Name VolGroup01
LV UUID T20N3q-uezB-Uk2m-gvW1-z0lX-AiRX-XiDpn5
LV Write Access read/write
LV Status available
# open 1
LV Size 71.28 GB
Current LE 2281
Segments 4
Allocation inherit
Read ahead sectors 0
Block device 253:0
--- Logical volume ---
LV Name /dev/VolGroup01/LogVol01 ##VG中其它的LV
VG Name VolGroup01
LV UUID MksipB-Et70-frlY-dRpQ-wqhC-7ObE-C4kyYL
LV Write Access read/write
LV Status available
# open 1
LV Size 544.00 MB
Current LE 17 ##其它LV已占用的PE数量,后面用得到
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:1
Physical volumes的信息也会有显示,这里被我省略了.
我们把需要用的数值整理一下
PE Size 32.00 MB PE大小
Total PE 2298 PE总数
LV Name /dev/VolGroup01/LogVol00 我们要扩展的分区名
LV Name /dev/VolGroup01/LogVol01 VG中其它的LV
Current LE 17 其它LV已占用的PE数量
将VolGroup01的Total PE减去LogVol01的Current LE数量,
得出来的数值再乘以PE Size就是下面lvextend命令中需要用到的数值.
2298 - 17=2281
2281 X 32=72992,这个数值就是下面lvextend -L中要指定的数值
5. lvextend -L 72992 /dev/VolGroup01/LogVol00
将LV /dev/VolGroup01/LogVol00的容量扩展到72992.
6. ext2online /dev/VolGroup01/LogVol00
将扩展后的LV /dev/VolGroup01/LogVol00容量生效.
这样我们就完成了对/分区的容量扩展.
在实现的过程中发现LINUX真的是既强大又实用的系统,很多在HP-UX中需要额外购买的功能都集成在AS4中了,而且在操作上也比HP-UX要简单很多.
Special thanks:
在写这篇文档时,HP工程师刘吉给了我很大的帮忙,尤其是一些LVM概念上的讲解,使我受益良多.
Young.
December 04,2007