OCR存储盘迁移+故障演练

OCR存储盘迁移OCR、OLR、VF 是什么?OCR 盘迁移ASM配置创建磁盘组迁移操作步骤OCR 盘故障恢复OCR、OLR、VF 是什么?OCR: 保存了 RAC 的配置和注册信息;OLR: 保存了 RAC 当前机器上 Oracle Clusterware 的配置信息;VF: 用于网络分区时解决“脑裂”问题。OCR 盘迁移ASM配置# 存储挂了3个盘过来[root@rac1 ~]# fdisk -lDisk /dev/mapper/mpathg: 5368 MB, 536870912
摘要由CSDN通过智能技术生成

OCR、OLR、VF 是什么?

OCR: 保存了 RAC 的配置和注册信息;
OLR: 保存了 RAC 当前机器上 Oracle Clusterware 的配置信息;
VF: 用于网络分区时解决“脑裂”问题。

OCR 盘迁移

ASM配置

# 存储挂了3个盘过来
[root@rac1 ~]# fdisk -l
Disk /dev/mapper/mpathg: 5368 MB, 5368709120 bytes, 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/mpathh: 5368 MB, 5368709120 bytes, 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/mpathi: 5368 MB, 5368709120 bytes, 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

# 获取磁盘设备scsi_id 
[root@rac1 ~]# for disk in `ls /dev/sd*`; do /usr/lib/udev/scsi_id -g -u -d $disk; echo $disk; done
1ATA_VBOX_HARDDISK_VB89af7d4b-db1d400b
/dev/sdg
1ATA_VBOX_HARDDISK_VB33102718-330fcd0a
/dev/sdh
1ATA_VBOX_HARDDISK_VBfc9afc3b-c545d13c
/dev/sdi

# 配置多路径绑定
[root@rac1 ~]# cat /etc/multipath/bindings
mpathg VBOX_HARDDISK_VB33102718-330fcd0a
mpathh VBOX_HARDDISK_VBfc9afc3b-c545d13c
mpathi VBOX_HARDDISK_VB89af7d4b-db1d400b

[root@rac1 ~]# cat /etc/multipath.conf
defaults {
   
        user_friendly_names yes
        find_multipaths no
}
multipaths {
   
        multipath {
   
                wwid                    1ATA_VBOX_HARDDISK_VB89af7d4b-db1d400b
                alias                   mpathg
        }
        multipath {
   
                wwid                    1ATA_VBOX_HARDDISK_VB33102718-330fcd0a
                alias                   mpathh
        }
        multipath {
   
                wwid                    1ATA_VBOX_HARDDISK_VBfc9afc3b-c545d13c
                alias                   mpathi
        }
}

# 重启生效
[root@rac1 ~]# systemctl restart multipathd.service
[root@rac1 ~]# multipath -ll
mpathg (VBOX_HARDDISK_VB33102718-330fcd0a) dm-2 ATA     ,VBOX HARDDISK
size=5.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active
  `- 9:0:0:0  sdh 8:112 active ready running
mpathh (VBOX_HARDDISK_VBfc9afc3b-c545d13c) dm-3 ATA     ,VBOX HARDDISK
size=5.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio&
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OCR技术是一种能够将图像中的文本内容转化为可编辑文本的技术,其中ctpn和crnn是OCR技术中的两个重要组成部分。 ctpn(Connectionist Text Proposal Network)是一种基于深度学习的文本检测算法,其主要任务是检测图像中的文本行和单个字符,并将其转换为一组矩形边界框。这些边界框可以用于后续的文本识别操作。 crnn(Convolutional Recurrent Neural Network)是一种基于深度学习的文本识别算法,其主要任务是根据文本检测阶段生成的文本行或单个字符图像,识别其中的文本内容。crnn算法通常由卷积神经网络(CNN)和循环神经网络(RNN)两个部分组成,其中CNN用于提取图像特征,RNN用于对特征序列进行建模。 以下是一个基于ctpn和crnn的OCR代码实现示例(Python): ```python import cv2 import numpy as np import tensorflow as tf # 加载ctpn模型 ctpn_model = cv2.dnn.readNet('ctpn.pb') # 加载crnn模型 crnn_model = tf.keras.models.load_model('crnn.h5') # 定义字符集 charset = '0123456789abcdefghijklmnopqrstuvwxyz' # 定义字符到索引的映射表 char_to_index = {char: index for index, char in enumerate(charset)} # 定义CTPN参数 ctpn_params = { 'model': 'ctpn', 'scale': 600, 'max_scale': 1200, 'text_proposals': 2000, 'min_size': 16, 'line_min_score': 0.9, 'text_proposal_min_score': 0.7, 'text_proposal_nms_threshold': 0.3, 'min_num_proposals': 2, 'max_num_proposals': 10 } # 定义CRNN参数 crnn_params = { 'model': 'crnn', 'img_w': 100, 'img_h': 32, 'num_classes': len(charset), 'rnn_units': 128, 'rnn_dropout': 0.25, 'rnn_recurrent_dropout': 0.25, 'rnn_activation': 'relu', 'rnn_type': 'lstm', 'rnn_direction': 'bidirectional', 'rnn_merge_mode': 'concat', 'cnn_filters': 32, 'cnn_kernel_size': (3, 3), 'cnn_activation': 'relu', 'cnn_pool_size': (2, 2) } # 定义文本检测函数 def detect_text(image): # 将图像转换为灰度图 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 缩放图像 scale = ctpn_params['scale'] max_scale = ctpn_params['max_scale'] if np.max(gray) > 1: gray = gray / 255 rows, cols = gray.shape if rows > max_scale: scale = max_scale / rows gray = cv2.resize(gray, (0, 0), fx=scale, fy=scale) rows, cols = gray.shape elif rows < scale: scale = scale / rows gray = cv2.resize(gray, (0, 0), fx=scale, fy=scale) rows, cols = gray.shape # 文本检测 ctpn_model.setInput(cv2.dnn.blobFromImage(gray)) output = ctpn_model.forward() boxes = [] for i in range(output.shape[2]): score = output[0, 0, i, 2] if score > ctpn_params['text_proposal_min_score']: x1 = int(output[0, 0, i, 3] * cols / scale) y1 = int(output[0, 0, i, 4] * rows / scale) x2 = int(output[0, 0, i, 5] * cols / scale) y2 = int(output[0, 0, i, 6] * rows / scale) boxes.append([x1, y1, x2, y2]) # 合并重叠的文本框 boxes = cv2.dnn.NMSBoxes(boxes, output[:, :, :, 2], ctpn_params['text_proposal_min_score'], ctpn_params['text_proposal_nms_threshold']) # 提取文本行图像 lines = [] for i in boxes: i = i[0] x1, y1, x2, y2 = boxes[i] line = gray[y1:y2, x1:x2] lines.append(line) return lines # 定义文本识别函数 def recognize_text(image): # 缩放图像 img_w, img_h = crnn_params['img_w'], crnn_params['img_h'] image = cv2.resize(image, (img_w, img_h)) # 归一化图像 if np.max(image) > 1: image = image / 255 # 转换图像格式 image = image.transpose([1, 0, 2]) image = np.expand_dims(image, axis=0) # 预测文本 y_pred = crnn_model.predict(image) y_pred = np.argmax(y_pred, axis=2)[0] # 将预测结果转换为文本 text = '' for i in y_pred: if i != len(charset) - 1 and (not (len(text) > 0 and text[-1] == charset[i])): text += charset[i] return text # 读取图像 image = cv2.imread('test.png') # 检测文本行 lines = detect_text(image) # 识别文本 texts = [] for line in lines: text = recognize_text(line) texts.append(text) # 输出识别结果 print(texts) ``` 上述代码实现了一个基于ctpn和crnn的OCR系统,其中ctpn用于检测文本行,crnn用于识别文本内容。在使用代码时,需要将ctpn和crnn的模型文件替换为自己训练的模型文件,并根据实际情况调整参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值