这段时间由于采购存储,和很多存储厂商进行沟通时,都提到一点:支持存储容量的动态扩展。比如原来上的存储容量为5T划了一个lun,后来由于业务需求,需要扩展到10个T,后加的五个T的容量可以直接加到原来的存储上,原来的lun大小变成了10个T。

存储的lun在操作系统上是以磁盘的形式存在的,这样的话相当于磁盘的大小增加了,根据厂商技术的解释,如果使用了文件系统的话,在文件系统里,可以看到lun对应的磁盘变大,但是以前所使用的文件分区大小不变,如果需要使用新增的空间,可以对现有分区进行扩展,或划分新的分区,这一点不难理解。

比较疑惑的是,由于我使用的是oracle 11g rac+asm,而且没有使用asmlib,直接asm挂载的裸盘,如果某个lun变大以后,asm能不能识别到新增了空间?磁盘空间的改变,对原来asm的使用会不会有影响?这个问题厂家没能给出一个答覆,于是决定在虚拟机环境做一个测试,来验证一下。

测试环境是在vmware 8 下面,一个已经搭好的双机RAC环境,使用的是11gr2+asm+OEL6.1,在这个环境中我建好了三个磁盘组,ocr、data和fra,这三个磁盘组中ocr用了一块硬盘,data两个,fra一个,都是2g的虚拟盘。实验思路是将fra对应的2g盘手动扩展到2.5g,之后再查看diskgroup中磁盘组容量是否产生变化。

测试步骤如下:

1. 查看主机上fra磁盘组对应磁盘/dev/sdd大小为2g
clip_p_w_picpath001

2. 在asmca中查看各磁盘组大小为:
clip_p_w_picpath003

3. 在grid用户下使用sqlplus / as sysdba登录后查看各磁盘组大小:
运行select name,type,total_mb,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup;clip_p_w_picpath005

4. 将虚拟机两个节点停机

5. 使用vmware下的命令扩展fra对应的虚拟磁盘

a) 进入到vmware安装目录下
cd "C:\Program Files (x86)\VMware\VMware Workstation"

b) 执行管理命令:
C:\Program Files (x86)\VMware\VMware Workstation>vmware-vdiskmanager.exe -x 2.5GB "F:\vhd\erpsharedisk\fra.vmdk"
clip_p_w_picpath007

c) 完成后可以看到fra对应的磁盘文件扩展到2.5G
clip_p_w_picpath009

6. 再启动rac的两个节点,使用fdisk –l 查看对应的磁盘大小
clip_p_w_picpath011

7. 使用asmca查看磁盘组,发现所有磁盘组无法在asmca中查看,暂时还未找到出现该问题的原因
clip_p_w_picpath013

8. 使用sqlplus登录查询视图,发现磁盘组空间无变化
clip_p_w_picpath015

9. 此时怀疑是由于磁盘组需要重新mount才能识别新增容量,于是尝试重新mount FRA磁盘组.由于在asmca界面无法对磁盘组做操作,于是改用命令行完成

10. 使用命令先取消FRA磁盘组挂载,发现报权限错误
clip_p_w_picpath017

11. 后来发现在11g环境下,asm需要使用sysasm用户来完成磁盘组管理操作,换sysasm用户进行操作,将FRA磁盘组重新挂载
clip_p_w_picpath019

重新挂载后,发现磁盘组容量并没有像我们想像的变成该磁盘现在的实际大小。由此判断,在此环境中,如果直接扩展Lun的大小来实现数据库可用空间的扩展不能实现,如果需要扩展数据库可用容量,最好是在数据库存储端新增容量后,将新增容量划到一个新的lun中,在服务器上,将新的lun作为一个磁盘mount到需要扩展容量的磁盘组中,采用这样的方式才能非常方便和高效的实现ASM环境下数据库容量的扩展。