利用ASM功能实现零停机oracle RAC存储迁移

news2024/11/27 18:40:03

在实际生产过程中,经常会遇到比如新旧存储替换等场景,如果是一般情况可能只有做数据迁移才能实现,而迁移可能就存在停机的可能

这里介绍利用ASM DG加盘踢盘功能实现零停机存储迁移;原理很简单 将新存储磁盘添加到data dg,之后将老的磁盘踢出data磁盘组,即可实现存储迁移

solaris的ZFS的pool功能可以实现类似ASM的零停机迁移本地目录存储迁移,请参考如下
利用 ZFS实现存储迁移 - 墨天轮文档

  1. 存储划盘给集群
  2. 可能需要重启机器才能识别到新加盘 
    (IBM,SUN小机等也存在这种问题,需要重启才能识别新加盘,双节点轮流重启可以不影响生产)

新加四块盘磁盘的属性不同

[oracle@db4 ~]$ ll /dev/dm*

brw-rw---- 1 root disk 253, 0 Aug 31 10:04 /dev/dm-0

brw-rw---- 1 grid asmadmin 253, 1 Aug 31 10:08 /dev/dm-1

brw-rw---- 1 root disk 253, 10 Aug 31 10:04 /dev/dm-10

brw-rw---- 1 root disk 253, 11 Aug 31 10:04 /dev/dm-11

brw-rw---- 1 root disk 253, 12 Aug 31 10:04 /dev/dm-12

brw-rw---- 1 grid asmadmin 253, 2 Aug 31 10:08 /dev/dm-2

brw-rw---- 1 grid asmadmin 253, 3 Aug 31 10:08 /dev/dm-3

brw-rw---- 1 grid asmadmin 253, 4 Aug 31 10:07 /dev/dm-4

brw-rw---- 1 grid asmadmin 253, 5 Aug 31 10:08 /dev/dm-5

brw-rw---- 1 grid asmadmin 253, 6 Aug 31 10:08 /dev/dm-6

brw-rw---- 1 grid asmadmin 253, 7 Aug 31 10:07 /dev/dm-7

brw-rw---- 1 root disk 253, 8 Aug 31 10:04 /dev/dm-8

brw-rw---- 1 root disk 253, 9 Aug 31 10:04 /dev/dm-9

[oracle@db4 ~]$

[oracle@db4 ~]$ su -

查看多路径状态

[root@db4 ~]# multipath –ll

新加四块盘是没有别名的

crs3 (36006016056804c0099bbc25c79d5871a) dm-6 DGC,VRAID

size=2.0G features='2 queue_if_no_path retain_attached_hw_handler' hwhandler='1 emc' wp=rw

|-+- policy='round-robin 0' prio=50 status=active

| |- 16:0:1:6 sdal 66:80 active ready running

| `- 18:0:1:6 sdam 66:96 active ready running

`-+- policy='round-robin 0' prio=10 status=enabled

|- 18:0:0:6 sdo 8:224 active ready running

`- 16:0:0:6 sdn 8:208 active ready running

crs2 (36006016056804c0097bbc25c191f51e4) dm-5 DGC,VRAID

size=2.0G features='2 queue_if_no_path retain_attached_hw_handler' hwhandler='1 emc' wp=rw

|-+- policy='round-robin 0' prio=50 status=active

| |- 16:0:0:3 sdh 8:112 active ready running

| `- 18:0:0:3 sdi 8:128 active ready running

`-+- policy='round-robin 0' prio=10 status=enabled

|- 18:0:1:3 sdag 66:0 active ready running

`- 16:0:1:3 sdaf 65:240 active ready running

crs1 (36006016056804c0096bbc25c2e129aaf) dm-3 DGC,VRAID

size=2.0G features='2 queue_if_no_path retain_attached_hw_handler' hwhandler='1 emc' wp=rw

|-+- policy='round-robin 0' prio=50 status=active

| |- 16:0:1:2 sdad 65:208 active ready running

| `- 18:0:1:2 sdae 65:224 active ready running

`-+- policy='round-robin 0' prio=10 status=enabled

|- 16:0:0:2 sdf 8:80 active ready running

`- 18:0:0:2 sdg 8:96 active ready running

dbbak (3600601605a804c00cfc1c35ca78f2198) dm-0 DGC,VRAID

size=2.0T features='2 queue_if_no_path retain_attached_hw_handler' hwhandler='1 emc' wp=rw

|-+- policy='round-robin 0' prio=50 status=active

| |- 18:0:0:0 sdc 8:32 active ready running

| `- 16:0:0:0 sdb 8:16 active ready running

`-+- policy='round-robin 0' prio=10 status=enabled

|- 16:0:1:0 sdz 65:144 active ready running

`- 18:0:1:0 sdaa 65:160 active ready running

mpathm (36006016056804c000d3f0e6346a3cc75) dm-12 DGC,VRAID

size=500G features='2 queue_if_no_path retain_attached_hw_handler' hwhandler='1 emc' wp=rw

|-+- policy='round-robin 0' prio=50 status=active

| |- 18:0:1:11 sdaw 67:0 active ready running

| `- 16:0:1:11 sdav 66:240 active ready running

`-+- policy='round-robin 0' prio=10 status=enabled

|- 16:0:0:11 sdx 65:112 active ready running

`- 18:0:0:11 sdy 65:128 active ready running

mpathl (36006016056804c000d3f0e63d1536140) dm-10 DGC,VRAID

size=500G features='2 queue_if_no_path retain_attached_hw_handler' hwhandler='1 emc' wp=rw

|-+- policy='round-robin 0' prio=50 status=active

| |- 16:0:0:10 sdv 65:80 active ready running

| `- 18:0:0:10 sdw 65:96 active ready running

`-+- policy='round-robin 0' prio=10 status=enabled

|- 16:0:1:10 sdat 66:208 active ready running

`- 18:0:1:10 sdau 66:224 active ready running

mpathk (36006016056804c000c3f0e639c8cd30a) dm-9 DGC,VRAID

size=500G features='2 queue_if_no_path retain_attached_hw_handler' hwhandler='1 emc' wp=rw

|-+- policy='round-robin 0' prio=50 status=active

| |- 16:0:1:9 sdar 66:176 active ready running

| `- 18:0:1:9 sdas 66:192 active ready running

`-+- policy='round-robin 0' prio=10 status=enabled

|- 16:0:0:9 sdt 65:48 active ready running

`- 18:0:0:9 sdu 65:64 active ready running

mpathj (36006016056804c000c3f0e6307e54cd5) dm-8 DGC,VRAID

size=500G features='2 queue_if_no_path retain_attached_hw_handler' hwhandler='1 emc' wp=rw

|-+- policy='round-robin 0' prio=50 status=active

| |- 16:0:1:8 sdap 66:144 active ready running

| `- 18:0:1:8 sdaq 66:160 active ready running

`-+- policy='round-robin 0' prio=10 status=enabled

|- 16:0:0:8 sdr 65:16 active ready running

`- 18:0:0:8 sds 65:32 active ready running

data4 (36006016056804c00b0bbc25c0a9ff654) dm-2 DGC,VRAID

size=505G features='2 queue_if_no_path retain_attached_hw_handler' hwhandler='1 emc' wp=rw

|-+- policy='round-robin 0' prio=50 status=active

| |- 16:0:1:4 sdah 66:16 active ready running

| `- 18:0:1:4 sdai 66:32 active ready running

`-+- policy='round-robin 0' prio=10 status=enabled

|- 16:0:0:4 sdj 8:144 active ready running

`- 18:0:0:4 sdk 8:160 active ready running

data3 (36006016056804c00aebbc25c43721e7f) dm-7 DGC,VRAID

size=505G features='2 queue_if_no_path retain_attached_hw_handler' hwhandler='1 emc' wp=rw

|-+- policy='round-robin 0' prio=50 status=active

| |- 16:0:0:7 sdp 8:240 active ready running

| `- 18:0:0:7 sdq 65:0 active ready running

`-+- policy='round-robin 0' prio=10 status=enabled

|- 18:0:1:7 sdao 66:128 active ready running

`- 16:0:1:7 sdan 66:112 active ready running

data2 (36006016056804c00adbbc25cd11a9458) dm-4 DGC,VRAID

size=505G features='2 queue_if_no_path retain_attached_hw_handler' hwhandler='1 emc' wp=rw

|-+- policy='round-robin 0' prio=50 status=active

| |- 16:0:1:5 sdaj 66:48 active ready running

| `- 18:0:1:5 sdak 66:64 active ready running

`-+- policy='round-robin 0' prio=10 status=enabled

|- 16:0:0:5 sdl 8:176 active ready running

`- 18:0:0:5 sdm 8:192 active ready running

data1 (36006016056804c00acbbc25cab85eb40) dm-1 DGC,VRAID

size=505G features='2 queue_if_no_path retain_attached_hw_handler' hwhandler='1 emc' wp=rw

|-+- policy='round-robin 0' prio=50 status=active

| |- 18:0:0:1 sde 8:64 active ready running

| `- 16:0:0:1 sdd 8:48 active ready running

`-+- policy='round-robin 0' prio=10 status=enabled

|- 16:0:1:1 sdab 65:176 active ready running

`- 18:0:1:1 sdac 65:192 active ready running

[root@db4 ~]#

3.---获取所有磁盘wwid 

Linux 7--

for i in `cat /proc/partitions | awk {'print $4'} | grep sd`; do val=`/sbin/blockdev --getsize64 /dev/$i` ; val2=`expr $val / 1073741824`; echo "/dev/$i:$val2 ` /usr/lib/udev/scsi_id -g -u /dev/$i`" ; done

Linux 6--

for i in `cat /proc/partitions | awk {'print $4'} | grep sd`; do val=`/sbin/blockdev --getsize64 /dev/$i` ; val2=`expr $val / 1073741824`; echo "/dev/$i:$val2 ` scsi_id -g -u /dev/$i`" ; done

4.修改配置文件(两节点均要)

cat /etc/multipath.conf

将新加四块盘加入到配置文件

注意alisa 和wwid号

multipath {

wwid 36006016056804c000d3f0e6346a3cc75

alias data5

}

multipath {

wwid 36006016056804c000d3f0e63d1536140

alias data6

}

multipath {

wwid 36006016056804c000c3f0e639c8cd30a

alias data7

}

multipath {

wwid 36006016056804c000c3f0e6307e54cd5

alias data8

}

重启动多路径软件

#service multipathd restart

启用multipath配置后,会在/dev/mapper下生成多路径逻辑盘

#cd /dev/mapper

原来还是mpathl等 重启后应该能看的到别名

检查多路径状态

5.配置 udev(两节点)

利用udev绑定盘符(是Oracleasm绑定如果用作文件系统使用请忽略下面的步骤)

#cd /etc/udev/rules.d/

修改/etc/udev/rules.d/60-dm-permissions.rules,添加如下内容到最后面

ENV{DM_NAME}=="data5", OWNER:="grid", GROUP:="asmadmin", MODE:="660", SYMLINK+="iscsi/oraasm-$env{DM_NAME}"

ENV{DM_NAME}=="data6", OWNER:="grid", GROUP:="asmadmin", MODE:="660", SYMLINK+="iscsi/oraasm-$env{DM_NAME}"

ENV{DM_NAME}=="data7", OWNER:="grid", GROUP:="asmadmin", MODE:="660", SYMLINK+="iscsi/oraasm-$env{DM_NAME}"

ENV{DM_NAME}=="data8", OWNER:="grid", GROUP:="asmadmin", MODE:="660", SYMLINK+="iscsi/oraasm-$env{DM_NAME}"

重启udev服务

Linux 6 #start_udev

Linux 7:

udevadm control --reload-rules

/sbin/udevadm trigger --type=devices --action=change

查看结果 主要看权限

#ll /dev/dm*

确认盘的权限为grid:asmadmin

6,磁盘组加盘删盘(单节点即可)

column path format a20

select name,state,type,total_mb,free_mb from v$asm_diskgroup;

检查磁盘组状态

select name,path,total_mb,free_mb,MOUNT_STATUS,HEADER_STATUS,MODE_STATUS from v$asm_disk order by path;

select name,path,total_mb,free_mb,MOUNT_STATUS,HEADER_STATUS,MODE_STATUS from v$asm_disk where name like ‘DATA%’ order by path;

检查新加盘的状态

alter diskgroup DATA add disk '/dev/mapper/data9';

alter diskgroup DATA add disk '/dev/mapper/data10';

alter diskgroup DATA add disk '/dev/mapper/data7';

alter diskgroup DATA add disk '/dev/mapper/data8';

alter diskgroup ARCH add disk '/dev/mapper/arch2';

将盘加到磁盘组

alter diskgroup DATA rebalance power 6;

调整磁盘均衡的并发(生产环境 根据实际情况调整并发度)

select * from v$asm_operation;

均衡结束后将就的磁盘剔除磁盘组  (非必须等到均衡结束)

alter diskgroup DATA drop disk 'DATA_0000','DATA_0001','DATA_0002','DATA_0003';

alter diskgroup ARCH drop disk 'ARCH_0000';

踢完结束后状态

 如果旧盘需要重新回收继续使用,记得修改/etc/multipath.conf 和/etc/udev/rules.d/60-dm-permissions.rules 删掉就磁盘的信息

墨天伦个人主页:潇湘秦的个人主页 - 墨天轮

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1425758.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

江科大stm32学习笔记9——OLED调试工具

一、OLED OLED:有机发光二极管,供电3~5.5V,0.96寸OLED通信协议:I2C/SPI,分辨率:128*64 二、调试方式 串口调试:通过串口通信,将调试信息发送到电脑端,电脑使用串口助手…

Mysql数据库锁--全局锁、表锁、行锁

Mysql数据库按照加锁范围划分 根据加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类 全局锁 全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL)。当你需要让整个库处于只…

CTF盲水印工具:Blind-WaterMark安装

工具下载地址:GitCode - 开发者的代码家园 下载完毕后,只留这些东西就行 接下来需要安装两个依赖: opencv、matplotlib 直接pip install安装的话,工具使用会报错 所以需要到网站里挑选适合的版本进行安装 下载地址&#xff1…

四通道 LVDS 差分线缆接收器MS21148T

产品简述 MS21148T 是一款四路低压差分信号 (LVDS) 线路接收器。在 输入共模电压范围内,每一路差分接收器都可以把 100mV 的差 分输入电压转换成有效的逻辑输出。 该芯片可应用于约 100Ω 的 受控阻抗介质上进行点对点基带数据传输。传输介质可以是印 刷电…

基于 Langchain-Chatchat,我搭建了一个本地知识库问答系统

文章目录 一、LangChain-Chatchat二、搭建步骤2.1 环境配置2.2 模型下载2.3 初始化知识库和配置文件2.4 一键启动2.5 启动界面示例 技术交流群用通俗易懂方式讲解系列 一、LangChain-Chatchat 基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现,开源、可离线部…

图像异或加密、解密的实现

很多论文提到了从左上角开始做异或,逐行推导得到结果。 解密过程是加密的逆过程。 先看其基本方法: 参考文献: A Chaotic System Based Image Encryption Scheme with Identical Encryption and Decryption Algorithm 大多数论文都用了这个思路,我们使用MATLAB实现代码…

永久删除 Elasticsearch 中的主节点

Elasticsearch 是一个开源分布式搜索和分析引擎,用于各种任务,例如全文搜索、日志分析和实时数据分析。 Elasticsearch 集群由一个或多个节点组成,每个节点可以具有多种角色,包括主节点(master node)、数据…

【JaveWeb教程】(37)SpringBootWeb案例之《智能学习辅助系统》的详细实现步骤与代码示例(10)JWT令牌技术讲解

目录 SpringBootWeb案例10 JWT令牌2.3 JWT令牌2.3.1 介绍2.3.2 生成和校验2.3.3 登录下发令牌 SpringBootWeb案例10 JWT令牌 2.3 JWT令牌 前面我们介绍了基于令牌技术来实现会话追踪。这里所提到的令牌就是用户身份的标识,其本质就是一个字符串。令牌的形式有很多…

【vim 学习系列文章 3.2 -- vim 删除 空格】

文章目录 vim 删除行尾空格 vim 删除行尾空格 在代码开发的过程中&#xff0c;经常会遇到行尾有空格的现象&#xff0c;如下&#xff1a; 我们可以在 .vimrc 中通过map 命令来映射删除行尾空格的快捷键&#xff0c;如下&#xff1a; map d<space> :%s/\s*$//g <cr…

C++初阶 类和对象(补充)

目录 一、友元 1.1什么是友元&#xff1f; 1.2如何使用友元&#xff1f; 1.3使用友元 1.4使用友元注意事项 二、初始化列表 2.1什么是初始化列表? 2.2为什么要有初始化列表&#xff1f; 2.3使用初始化列表 2.4注意事项 一、友元 1.1什么是友元&#xff1f; 友元是一…

前端使用cache storage实现远程图片缓存

Cache Storage 的主要特点和用途 缓存网络资源&#xff1a;可以将经常访问的网络资源缓存到 Cache Storage 中&#xff0c;以提高网页加载速度&#xff0c;减少网络请求。离线访问&#xff1a;当用户处于离线状态时&#xff0c;可以使用 Cache Storage 中的缓存资源来加载网页…

2024程序员的未来方向如何走?还看今朝

这几年的IT行业想必大家已经感受到了&#xff0c;Android、Java、前端等等程序员都经历了大厂裁员、小厂倒闭、找不到工作、毕业即失业的情况。大量失业是必然的&#xff0c;因为互联网公司都逐渐走向统一标准化&#xff0c;只剩下头部的一些大厂&#xff0c;所以市场需求少了。…

C++ QT入门2——记事本功能实现与优化(事件处理+基本控件)

C QT入门2——记事本功能优化&#xff08;事件处理基本控件&#xff09; 一、记事本功能优化编码乱码问题QComboBox下拉控件QString、string、char * 间的数据转化编码问题解决整合 光标行列值显示记事本打开窗口标题关闭按钮优化—弹窗提示快捷键设计 二、☆ QT事件处理事件处…

Common Mistakes in German

Comman Mistakes in German 1, Haus oder Hause2, ja nein oder doch(1) Positive Fragen(2) Negative Fragen 1, Haus oder Hause 2, ja nein oder doch (1) Positive Fragen (2) Negative Fragen kein / nicht P3

docker集成 nacos/nacos-server (包括踩的坑)

tips 这边需要的数据库我已经安装好了&#xff0c;所以数据库的安装这边已经省略了 拉取镜像&#xff08;这边使用nacos1.4.1作为例子&#xff09; docker pull nacos/nacos-server:1.4.1创建映射的文件夹 (conf存放配置文件&#xff0c;logs存放日志文件) mkdir -p /data/n…

202415读书笔记|《鲸鱼安慰了大海》——我不知道你爱不爱我 湖水想被青山拥在怀里

202415读书笔记|《鲸鱼安慰了大海》——我不知道你爱不爱我 湖水想被青山拥在怀里 辑一 我们一起站在山坡上开花辑二 野花唱歌给自己听辑三 星空给我留了位置后记 《鲸鱼安慰了大海》作者燕七&#xff0c;是在一个关注的友友那里知道的这本书&#xff0c;决定读下去&#xff0c…

IDEA如何进行远程Debug调试

背景&#xff1a; 使用docker进行CVE漏洞复现的时候&#xff0c;由于只能黑盒进行复现&#xff0c;并不能知道为什么会产生这个漏洞&#xff0c;以及漏洞的POC为什么要这么写&#xff0c;之前我都是通过本地debug来进行源码分析&#xff0c;后来搜了一下&#xff0c;发现可以进…

林浩然的“微分剑法”大显神威

林浩然的“微分剑法”大显神威 Lin Haoran’s Mighty “Differential Sword Technique” 在数学王国的一隅&#xff0c;有一位名叫林浩然的智者&#xff0c;他以其独特的“微分剑法”名震江湖。这门源自微积分的绝世武学&#xff0c;让他成功解决了瞬时速度难题和曲线切线问题&…

解决:ModuleNotFoundError: No module named ‘torchvision’

解决&#xff1a;ModuleNotFoundError: No module named ‘torchvision’ 文章目录 解决&#xff1a;ModuleNotFoundError: No module named torchvision背景报错问题报错翻译报错位置代码报错原因解决方法方法一&#xff0c;直接安装方法二&#xff0c;手动下载安装方法三&…

一文详解docker swarm

文章目录 1、简介1.1、涉及到哪些概念&#xff1f;1.2、需要注意什么&#xff1f; 2、集群管理2.1、创建集群2.2、将节点加入集群2.3、查看集群状态。2.4、将节点从集群中移除2.5、更新集群2.6、锁定/解锁集群 3、节点管理4、服务部署4.1、准备4.2、服务管理4.2.1、常用命令4.2…