首页 数据库 mysql教程 ASM在线迁移LUN遇到的问题

ASM在线迁移LUN遇到的问题

Jun 07, 2016 pm 03:55 PM
asm lun 在线 迁移 遇到 问题

ASM在线迁移LUN遇到的问题 在2个节点上都配置好了RAW之后,确保在两边ll /dev/raw都能看到新配置好的raw, 在节点1用命令行的方式添加新LUN并删除旧的RAW,执行了一会报错: SQL Alter diskgroup ZXDG add disk /dev/raw/raw4,/dev/raw/raw5 drop disk /dev/r

ASM在线迁移LUN遇到的问题

在2个节点上都配置好了RAW之后,确保在两边ll /dev/raw都能看到新配置好的raw,
在节点1用命令行的方式添加新LUN并删除旧的RAW,执行了一会报错:
SQL> Alter diskgroup ZXDG add disk '/dev/raw/raw4','/dev/raw/raw5' drop disk '/dev/raw/raw1' rebalance power 4 nowait;
Alter diskgroup ZXDG add disk '/dev/raw/raw4','/dev/raw/raw5' drop disk '/dev/raw/raw1' rebalance power 4 nowait
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15054: disk "/DEV/RAW/RAW1" does not exist in diskgroup "ZXDG"

SQL>
在两边的v$asm_disk中查看,发现节点1上已经能看到新LUN了,但节点2上却看不到新LUN。
SQL> select disk_number from v$asm_disk;

DISK_NUMBER
-----------
0
1
0

于是在节点2上重新添加了一次:
SQL>
SQL>
SQL> Alter diskgroup ZXDG add disk '/dev/raw/raw4','/dev/raw/raw5' ;
Alter diskgroup ZXDG add disk '/dev/raw/raw4','/dev/raw/raw5'
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15031: disk specification '/dev/raw/raw5' matches no disks
ORA-15025: could not open disk '/dev/raw/raw5'
ORA-27041: unable to open file
Linux-x86_64 Error: 6: No such device or address
Additional information: 42
Additional information: 255
Additional information: -750856672
ORA-15031: disk specification '/dev/raw/raw4' matches no disks
ORA-15025: could not open disk '/dev/raw/raw4'
ORA-27041: unable to open file
Linux-x86_64 Error: 6: No such device or address
Additional information: 42
Additional information: 255
Additional information: -750856672

上面的报错一般是raw的属主、权限等问题,也可能是节点2识别raw有问题(ll /dev/raw的结果有很大的欺骗性),
检查发现raw的属主、权限都没问题,那么是不是节点2未能正确识别lun呢,在节点2上执行partprobe之后再次添加disk:
SQL>
SQL>
SQL> Alter diskgroup ZXDG add disk '/dev/raw/raw4','/dev/raw/raw5'
2 ;
Alter diskgroup ZXDG add disk '/dev/raw/raw4','/dev/raw/raw5'
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15033: disk '/dev/raw/raw4' belongs to diskgroup "ZXDG"
ORA-15033: disk '/dev/raw/raw5' belongs to diskgroup "ZXDG"

这回报ORA-15032与ORA-15033了,显示raw4/raw5已经属于DG的一部分了,
但再次查看v$asm_disk,发现raw4,raw5的状态有异常,group_number为0,mount_status为closed,没有分配name:
group_number disk_number mount_status header_status mode_status state path name
1 0 cached member online dropping /dev/raw/raw1 ZXDG_0000
0 1 closed member online normal /dev/raw/raw4
0 2 closed member online normal /dev/raw/raw5
而此时raw1已经处于dropping状态了,因为raw4/raw5没有被正常add到dg,所以无法对数据做rebalance,此时不允许将raw1从dg中drop掉,所以状态一直为dropping。
以防万一,先undrop:
SQL> Alter diskgroup ZXDG undrop disks ;

Diskgroup altered.

由于add raw的时候asm并有为raw4/raw5分配name,也无法正常将之从dg中删除:
SQL> Alter diskgroup ZXDG drop disk '/dev/raw/raw4';
Alter diskgroup ZXDG drop disk '/dev/raw/raw4'
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15054: disk "/DEV/RAW/RAW4" does not exist in diskgroup "ZXDG"
读取3个raw的metadata,庆幸的是发现metadata并没有出现混乱的情况,如下:
[oracle@zxdb01 ~]$ kfed read /dev/raw/raw1 > /tmp/raw1
[oracle@zxdb01 ~]$ kfed read /dev/raw/raw4 > /tmp/raw4
[oracle@zxdb01 ~]$ kfed read /dev/raw/raw5 > /tmp/raw5

[oracle@zxdb01 ~]$ diff /tmp/raw4 /tmp/raw5
6c6
< kfbh.block.obj: 2147483649 ; 0x008: TYPE=0x8 NUMB=0x1
---
> kfbh.block.obj: 2147483650 ; 0x008: TYPE=0x8 NUMB=0x2
20c20
< kfdhdb.dsknum: 1 ; 0x024: 0x0001
---
> kfdhdb.dsknum: 2 ; 0x024: 0x0002
23c23
< kfdhdb.dskname: ZXDG_0001 ; 0x028: length=10
---
> kfdhdb.dskname: ZXDG_0002 ; 0x028: length=10
25c25
< kfdhdb.fgname: ZXDG_0001 ; 0x068: length=10
---
> kfdhdb.fgname: ZXDG_0002 ; 0x068: length=10
[oracle@zxdb01 ~]$ diff /tmp/raw1 /tmp/raw4
6,7c6,7
---
> kfbh.block.obj:2147483649; 0x008:类型=0x8 数字=0x1
> kfbh.检查:3389207210; 0x00c: 0xca0332aa
20c20
---
> kfdhdb.dsknum: 1 ; 0x024: 0x0001
23c23
---
> kfdhdb.dsk名称:ZXDG_0001; 0x028:长度=10
25c25
---
> kfdhdb.fgname: ZXDG_0001 ; 0x068:长度=10
27,30c27,30
---
> kfdhdb.crestmp.hi:33000305; 0x0a8:小时=0x11 天=0x1b 月=0x2 年=0x7de
> kfdhdb.crestmp.lo:2735401984; 0x0ac: USEC=0x0 MSEC=0x2bb SECS=0x30 MINS=0x28
> kfdhdb.mntstmp.hi:33000305; 0x0b0:小时=0x11 天=0x1b 月=0x2 年=0x7de
> kfdhdb.mntstmp.lo:2735433728; 0x0b4: USEC=0x0 MSEC=0x2da SECS=0x30 MINS=0x28
35,36c35,36
---
> kfdhdb.dsk大小:102398; 0x0c4: 0x00018ffe
> kfdhdb.pmcnt: 2 ; 0x0c8: 0x00000002
39c39
---
> kfdhdb.f1b1locn: 0 ; 0x0d4: 0x00000000
[oracle@zxdb01 ~]$
[oracle@zxdb01 ~]$ diff /tmp/raw1 /tmp/raw5
6,7c6,7
---
> kfbh.block.obj:2147483650; 0x008:类型=0x8 数字=0x2
> kfbh.检查:3389207210; 0x00c: 0xca0332aa
20c20
---
> kfdhdb.dsknum: 2 ; 0x024: 0x0002
23c23
---
> kfdhdb.dsk名称:ZXDG_0002; 0x028:长度=10
25c25
---
> kfdhdb.fgname: ZXDG_0002 ; 0x068:长度=10
27,30c27,30
---
> kfdhdb.crestmp.hi:33000305; 0x0a8:小时=0x11 天=0x1b 月=0x2 年=0x7de
> kfdhdb.crestmp.lo:2735401984; 0x0ac: USEC=0x0 MSEC=0x2bb SECS=0x30 MINS=0x28
> kfdhdb.mntstmp.hi:33000305; 0x0b0:小时=0x11 天=0x1b 月=0x2 年=0x7de
> kfdhdb.mntstmp.lo:2735433728; 0x0b4: USEC=0x0 MSEC=0x2da SECS=0x30 MINS=0x28
35,36c35,36
---
> kfdhdb.dsk大小:102398; 0x0c4: 0x00018ffe
> kfdhdb.pmcnt: 2 ; 0x0c8: 0x00000002
39c39
---
> kfdhdb.f1b1locn: 0 ; 0x0d4: 0x00000000
[oracle@zxdb01 ~]$

这种情况下完全可以用添加磁盘强制的方式强制加入dg:
SQL>更改磁盘组 ZXDG 添加磁盘 '/dev/raw/raw4' 名称 ZXDG_01 强制 ;

磁盘组已更改。
SQL>更改磁盘组 ZXDG 添加磁盘 '/dev/raw/raw5' 名称 ZXDG_01 强制 ;

磁盘组已更改。

再看状态,已经成功加入:
name group_number disk_number mount_status header_status mode_status 状态路径
ZXDG_0000 1 0 缓存成员在线正常 /dev/raw/raw1
ZXDG_02 1 2 缓存会员在线正常 /dev/raw/raw5
ZXDG_01 1 1 缓存会员在线正常 /dev/raw/raw4

可以安全的drop raw1了,设置为10的再平衡:
SQL>
SQL>更改磁盘组 ZXDG 删除磁盘 ZXDG_0000 重新平衡功率 10 不等待;

磁盘组已更改。

SQL>
此时通过v$asm_disk可以查看rebalance的细节:
名称 free_mb
ZXDG_0000 155446
ZXDG_02 55532
ZXDG_01 54982

速度还是挺快的。

值得庆幸的是在故障的过程中,元数据是没有损坏的,如果元数据发生损坏,则需要对元数据进行修复,这是个很繁琐的步骤。
当然如果有大量的停机时间的话,也可以对dg进行重建以修复这个问题。
估计经常运营WINDOWS服务器的童鞋在碰到这种情况的时候很有想重启一把asm的冲动,但如果是metedata发生损坏的情况,千万不能去尝试重启asm(尤其不能将所有节点的asm同时重启),
因为很可能会导致dg无法被挂载,这会对解决问题带来不必要的麻烦。
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

微信聊天记录怎么迁移到新手机 微信聊天记录怎么迁移到新手机 Mar 26, 2024 pm 04:48 PM

1、在旧设备上打开微信app,点击右下角的【我】,选择【设置】功能,点击【聊天】。2、选择【聊天记录迁移与备份】,点击【迁移】,选择要迁移设备的平台。3、点击【择需要迁移的聊天】,点击左下角的【全选】或自主选择聊天记录。4、选择完毕后,点击右下角的【开始】,使用新设备登录此微信账号。5、然后扫描该二维码即可开始迁移聊天记录,用户只需等待迁移完成即可。

如何使用Laravel开发一个在线餐厅预订系统 如何使用Laravel开发一个在线餐厅预订系统 Nov 02, 2023 pm 01:48 PM

如何使用Laravel开发一个在线餐厅预订系统近年来,随着互联网和移动互联网的快速发展,线上预订已成为现代人生活中不可或缺的一部分。餐饮行业也不例外,越来越多的餐厅开始提供在线预订服务,以提高用户体验和扩大市场份额。本文将介绍如何使用Laravel框架来开发一个简单但功能完善的在线餐厅预订系统,并提供具体的代码示例,方便读者学习和实践。环境搭建首先,我们需要

如何使用Java Websocket实现在线音视频通话? 如何使用Java Websocket实现在线音视频通话? Dec 02, 2023 am 09:44 AM

如何使用JavaWebsocket实现在线音视频通话?在当今数字化时代,实时通信变得越来越普遍。无论是在工作中进行远程协作,还是在家庭中与亲朋好友进行远程交流,实时音视频通话已经成为人们不可或缺的一部分。本文将介绍如何使用JavaWebsocket实现在线音视频通话,并提供具体的代码示例。一、了解WebsocketWebsocket是一种HTML5中的新

如何在GitLab中进行项目迁移和集成 如何在GitLab中进行项目迁移和集成 Oct 27, 2023 pm 05:53 PM

如何在GitLab中进行项目迁移和集成引言:在软件开发过程中,项目的迁移和集成是一项重要的任务。GitLab作为一个流行的代码托管平台,提供了一系列方便的工具和功能来支持项目迁移和集成。本文将介绍在GitLab中进行项目迁移和集成的具体步骤,并且提供一些代码示例来帮助读者更好地理解。一、项目迁移项目迁移是将已有的代码库从一个源代码管理系统迁移到GitLab上

微信聊天记录怎么迁移到另一个手机 微信聊天记录怎么迁移到另一个手机 May 08, 2024 am 11:20 AM

1、在旧设备上,依次点击“我”→“设置”→“聊天”→“聊天记录迁移与备份”→“迁移”。2、选择要迁移的目标平台设备,选择需要迁移的聊天记录,点击“开始”。3、在新设备上使用同一微信账号登录并扫描二维码,即可开启聊天记录迁移。

解决jQuery无法获取表单元素值的方法 解决jQuery无法获取表单元素值的方法 Feb 19, 2024 pm 02:01 PM

解决jQuery.val()无法使用的问题,需要具体代码示例对于前端开发者,使用jQuery是常见的操作之一。其中,使用.val()方法来获取或设置表单元素的值是非常常见的操作。然而,在一些特定的情况下,可能会出现无法使用.val()方法的问题。本文将介绍一些常见的情况以及解决方案,并提供具体的代码示例。问题描述在使用jQuery开发前端页面时,有时候会碰

教你如何诊断常见问题的iPhone故障 教你如何诊断常见问题的iPhone故障 Dec 03, 2023 am 08:15 AM

iPhone以其强大的性能和多方面的功能而闻名,它不能幸免于偶尔的打嗝或技术困难,这是复杂电子设备的共同特征。遇到iPhone问题可能会让人感到沮丧,但通常不需要警报。在这份综合指南中,我们旨在揭开与iPhone使用相关的一些最常遇到的挑战的神秘面纱。我们的分步方法旨在帮助您解决这些常见问题,提供实用的解决方案和故障排除技巧,让您的设备恢复到最佳工作状态。无论您是面对一个小故障还是更复杂的问题,本文都可以帮助您有效地解决这些问题。一般故障排除提示在深入研究具体的故障排除步骤之前,以下是一些有助于

聚类算法中的聚类效果评估问题 聚类算法中的聚类效果评估问题 Oct 10, 2023 pm 01:12 PM

聚类算法中的聚类效果评估问题,需要具体代码示例聚类是一种无监督学习方法,通过对数据进行聚类,将相似的样本归为一类。在聚类算法中,如何评估聚类的效果是一个重要的问题。本文将介绍几种常用的聚类效果评估指标,并给出相应的代码示例。一、聚类效果评估指标轮廓系数(SilhouetteCoefficient)轮廓系数是通过计算样本的紧密度和与其他簇的分离度来评估聚类效

See all articles