ASM的一大卖点是联机地重新配置存储的能力。ASM的一个有用特性是使用它从一个磁盘组中的一组磁盘移植到另一个,或从一个存储队列移植到另一个。

  这基本上是可以实现的,因为ASM在一个磁盘组中的所有磁盘上均匀地分布数据,假定你具有足够的空间,你可以删除一个磁盘组中的磁盘,而ASM将无缝地将这些数据移植到这个磁盘组中的已有磁盘上。

SQL> select group_number, name, TOTAL_MB, FREE_MB
from V$asm_disk_stat;
GROUP_NUMBER      NAME          TOTAL_MB    FREE_MB
------------ ---------------- ---------- ----------
    1      VOL1  61439      61187
    2      VOL2  61439      61164
    3      VOL3  61439      61164
    4      VOL4        409594     310962
    4      VOL5        153597      95240
 


所以,我们看到VOL4和VOL5是磁盘组4中的两个磁盘。VOL4具有足够大的容量来将所有的数据放置在这个磁盘组上。现在可以安全地删除VOL5了,而且这是一个联机的操作:


SQL> alter diskgroup DATA4 drop disk VOL5;


磁盘组改变了。

  这个alter diskgroup命令实际上拖动你正在删除的磁盘的扩展段,并将它们放置在你的磁盘组中保留的磁盘上。当这个操作继续的时候,你可以查看你进行的操作的V$ASM_OPERATION:

SQL> select * from v$asm_operation;
GROUP_NUMBER OPERA STAT POWER ACTUAL SOFAR EST_WORK EST_RATE  EST_MINUTES
------------ ----- ---- ----- ----- ------ -------  ---------- ----------
    4 REBAL RUN     1  1   100   42234       1007     41 


这里大多数字段是自说明性的,不过SOFAR字段告诉你移动的分配单元(au)数量,EST_WORK和EST_RATE也是以分配单元和分配单元/分钟来显示。

  一旦重新调整删除了所有的分配单元,那么这个磁盘就从这个磁盘组中删除了:

SQL> select group_number, name, TOTAL_MB, FREE_MB
from V$asm_disk_stat;
GROUP_NUMBER      NAME          TOTAL_MB    FREE_MB
------------ ---------------- ---------- ----------
    1      VOL1  61439      61187
    2      VOL2  61439      61164
    3      VOL3  61439      61164
    4      VOL4        409594     252006
 


删除磁盘组中的一个磁盘看起来好像在做广告宣传,但它实际的好处不是仅仅删除一个磁盘,而是显示了一整个存储队列,而这具有潜力使你可以升级存储或甚至是完全移植到一个不同的存储平台

 

 

====================

SQL> select NAME,PATH from V$ASM_DISK;

NAME                               PATH
------------------------------ ----------------------------------------
DG1_0000                       /dev/raw/raw1
DG1_0001                       /dev/raw/raw2
RECOVERYDEST_0000     /dev/raw/raw3

 

select group_name,name,total_mb,free_mb  from v$asm_disk_stat;