百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Oracle小机利用ZFS实现在线存储迁移

ccwgpt 2024-12-20 11:31 38 浏览 0 评论

  1. ZFS介绍

2004年:Sun Microsystems 开始研发 ZFS 文件系统。ZFS 最初是作为 Solaris 操作系统的一部分而开发的,旨在解决传统文件系统的一些限制和问题。

2010年:Oracle 收购了 Sun 公司,从而获得了 ZFS 文件系统的所有权和控制权。Oracle 继续支持和开发 ZFS 文件系统,并将其作为 Solaris 操作系统的关键特性之一。Oracle 将 ZFS 文件系统引入到其硬件产品线中,包括 Sparc系列型机,Exadata存储等。这些产品提供了基于 ZFS 的存储解决方案,为企业提供了高度可靠、高性能和易于管理的存储平台。

ZFS的pool的管理和Oracle的ASM有一定相似性,可以在一个pool内实现加盘,删盘从而实现存储的无缝切换,本文以一个范例介绍这个功能。

2.存储划盘并赋予主机


环境:Sparc S7-2 / Solaris11

Solaris虚拟机

##扫描新加磁盘
cfgadm -al
devfsadm -v 
format ---find new disk
root@nwmsdb:~# format
Searching for disks...done

AVAILABLE DISK SELECTIONS:
0. c0t5000CCA07D07ACC8d0      <HGST-H101860SFSUN600G-A990-558.91GB>
     </HGST-H101860SFSUN600G-A990-558.91GB>
          /scsi_vhci/disk@g5000cca07d07acc8
          /dev/chassis/SYS/HDD0/disk
1. c0t5000CCA07D06C690d0      <HGST-H101860SFSUN600G-A990-558.91GB>
     </HGST-H101860SFSUN600G-A990-558.91GB>
          /scsi_vhci/disk@g5000cca07d06c690
          /dev/chassis/SYS/HDD1/disk
2. c1t0d0
          /pci@300/pci@1/pci@0/pci@2/usb@0/storage@1/disk@0,0
          /dev/chassis/SYS/MB/EUSB-DISK/disk
3. c0t60060E80122E7F0050402E7F00000027d0      <HITACHI-OPEN-V

     </HITACHI-OPEN-V-SUN-8301-100.00GB> ---new disk
          /scsi_vhci/ssd@g60060e80122e7f0050402e7f00000027
4. c0t60060E80122E7F0050402E7F00000028d0      <HITACHI-OPEN-V

     </HITACHI-OPEN-V-SUN-8301-450.00GB>---new disk
          /scsi_vhci/ssd@g60060e80122e7f0050402e7f00000028
5. c0t60060E801227C400504027C400000018d0      <HITACHI-OPEN-V

     </HITACHI-OPEN-V-SUN-8301-100.00GB>---old disk
          /scsi_vhci/ssd@g60060e801227c400504027c400000018
6. c0t60060E801227C400504027C400000019d0      <HITACHI-OPEN-V

     </HITACHI-OPEN-V-SUN-8301-400.00GB>---old disk
          /scsi_vhci/ssd@g60060e801227c400504027c400000019
Specify disk (enter its number):     


如果识别不到 可能需要重启主机,主机重启,该主机上的虚拟机会被挂起,

但是不会重启

Check ldm

更多关于solaris vm参考文件《Oracle VM Server for SPARC 3.1 管理指南》

root@nwmsdb:~#  ldm list         
NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  NORM  UPTIME
primary          active     -n-cv-  UART    8     16G      0.7%  0.7%  7d 2h 23m
ldg1             active     -n----  5000    120   110G     0.1%  0.1%  7d 45m
root@nwmsdb:~#
root@nwmsdb:~#  ldm list-services
VCC
    NAME         LDOM         PORT-RANGE
    primary-vcc0 primary      5000-5100

VSW
    NAME         LDOM         MACADDRESS          NET-DEV   DVID|PVID|VIDs
    ----         ----         ----------          -------   --------------
    primary-vsw0 primary      00:14:4f:fa:2b:c1   net0      1|1|--       

VDS
    NAME         LDOM         VOLUME         OPTIONS          MPGROUP        DEVICE
    primary-vds0 primary      ldg1_bootdisk                                  /dev/zvol/dsk/rpool/ldg1/disk1
                              ldg1_data01                                    /dev/dsk/c0t60060E801227C400504027C400000018d0s0
                              ldg1_data02                                    /dev/dsk/c0t60060E801227C400504027C400000019d0s0
----该虚拟机原有的两块磁盘

root@nwmsdb:~#


3.将物理磁盘付给本机的虚拟机

从服务域导出虚拟磁盘后端。---语法
# ldm add-vdsdev [-fq] [options={ro,slice,excl}] [mpgroup=mpgroup] \
backend volume-name@service-name
将后端指定给来宾域。
# ldm add-vdisk [timeout=seconds] [id=disk-id] disk-name volume-name@service-name ldom

ldm add-vdsdev  /dev/dsk/c0t60060E80122E7F0050402E7F00000027d0s2 ldg1_data03@primary-vds0

ldm add-vdisk ldg1_data03 ldg1_data03@primary-vds0 ldg1

ldm add-vdsdev  /dev/dsk/c0t60060E80122E7F0050402E7F00000028d0s2 ldg1_data04@primary-vds0

ldm add-vdisk ldg1_data04 ldg1_data04@primary-vds0 ldg1


▼ 如何将物理磁盘作为虚拟磁盘导出

注意– 配置虚拟磁盘时,确保每个虚拟磁盘引用不同的物理(后端)资源,如物理磁盘、磁盘分片、文件或卷。某些磁盘(如光纤通道和SAS)本身具有“双端口”,即同一个磁盘可以被两个不同的路径引用。确保分配给不同域的路径不会引用同一个物理磁盘。

将物理磁盘作为虚拟磁盘导出。

例如,要将物理磁盘c1t48d0 作为虚拟磁盘导出,则必须导出该磁盘的分片2

(c1t48d0s2)。
primary# ldm add-vdsdev /dev/dsk/c1t48d0s2 c1t48d0@primary-vds0

将磁盘指定给来宾域。例如,将磁盘(pdisk) 指定给来宾域ldg1。

primary# ldm add-vdisk pdisk c1t48d0@primary-vds0 ldg1

来宾域启动并运行Oracle Solaris OS 之后,检验该磁盘是否可供访问且是否为完整磁盘。完整磁盘是一个具有八(8) 个分片的常规磁盘。

例如,要检查的磁盘为c0d1。

ldg1# ls -1 /dev/dsk/c0d1s*
/dev/dsk/c0d1s0
/dev/dsk/c0d1s1
/dev/dsk/c0d1s2
/dev/dsk/c0d1s3
/dev/dsk/c0d1s4
/dev/dsk/c0d1s5
/dev/dsk/c0d1s6
/dev/dsk/c0d1s7

--如何删除虚拟磁盘

--从来宾域删除虚拟磁盘。

ldm rm-vdisk ldg1_data03 ldg1
ldm rm-vdisk ldg1_data04 ldg1

--停止从服务域导出相应的后端。

ldm rm-vdsdev ldg1_data03@primary-vds0
ldm rm-vdsdev ldg1_data04@primary-vds0


4.在虚拟机上发现新加磁盘


[root@wmsdb:/]# format
Searching for disks...done


AVAILABLE DISK SELECTIONS:
       0. c0d0
          /virtual-devices@100/channel-devices@200/disk@0
       1. c0d1
          /virtual-devices@100/channel-devices@200/disk@1
       2. c0d2
          /virtual-devices@100/channel-devices@200/disk@2
       3. c0d3      <HITACHI-OPEN-V

     </HITACHI-OPEN-V-SUN-8301-100.00GB>
          /virtual-devices@100/channel-devices@200/disk@3
       4. c0d4      <HITACHI-OPEN-V

     </HITACHI-OPEN-V-SUN-8301-450.00GB>
          /virtual-devices@100/channel-devices@200/disk@4
       ------new disk
Specify disk (enter its number):


5.利用zfs 将新盘替换掉原有盘 实现存储迁移

5.1,增加一个镜像盘到pool

 zpool attach arch_pool c0d1 c0d3
 zpool attach data_pool c0d2 c0d4

 [root@wmsdb:/]# zpool status data_pool  --check mirror status
  pool: data_pool
 state: ONLINE
status: One or more devices is currently being resilvered.  The pool will
        continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
 scan: resilver in progress since Mon Feb  3 15:44:51 2020
    165G scanned out of 341G at 45.3M/s, 1h6m to go
    165G resilvered, 48.49% done
config:

        NAME        STATE     READ WRITE CKSUM
        data_pool   ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c0d2    ONLINE       0     0     0
            c0d4    ONLINE       0     0     0  (resilvering)

同步完成后 可以删除旧盘

5.2,删除原磁盘

 zpool detach arch_pool c0d1
 zpool detach data_pool c0d2

5.3,可以将第二块盘的容量扩展出来(这步可以放在删除原磁盘c1t1d0之后做)

 zpool set autoexpand=on arch_pool
 zpool set autoexpand=on data_pool

相关推荐

腾讯开源框架TarsCpp-rpc设计分析-server(二)

2Tars协议2.1是什么借用官方说法:TARS编码协议是一种数据编解码规则,它将整形、枚举值、字符串、序列、字典、自定义结构体等数据类型按照一定的规则编码到二进制数据流中。对端接收到二进制数据流...

微服务调用为什么用RPC框架,http不更简单吗?

简单点,HTTP是协议,RPC是概念!实现RPC可以基于HTTP协议(Feign),TCP协议(Netty),RMI协议(Soap),WebService(XML—RPC)框架。传输过程中,也因为序列...

go-zero:开箱即用的微服务框架(gin框架微服务)

go-zero是一个集成了各种工程实践的Web和rpc框架,它的弹性设计保障了大并发服务端的稳定性,并且已经经过了充分的实战检验。go-zero在设计时遵循了“工具大于约定和文档”的理...

SOFARPC :高性能、高扩展性、生产级的 Java RPC 框架

#暑期创作大赛#SOFARPC是一个高性能、高扩展性、生产级的JavaRPC框架。在蚂蚁金服,SOFARPC已经使用了十多年,已经发展了五代。SOFARPC致力于简化应用程序之间的RPC...

自研分布式高性能RPC框架及服务注册中心ApiRegistry实践笔记

痛点1.bsf底层依赖springcloud,影响bsf更新springboot新版本和整体最新技术版本升级。2.eureka已经闭源,且框架设计较重,同时引入eureka会自行引入较多sprin...

Rust语言从入门到精通系列 - Tonic RPC框架入门实战

Rust语言是一种系统级语言,被誉为“没有丧失性能的安全语言”。Rust语言的优势在于其内存安全机制,在编译时就能保证程序的内存安全。Tonic模块是Rust语言的一个RPC(RemoteProce...

腾讯开源框架TarsCpp-rpc设计分析-client(一)

前言Tars是腾讯开源的微服务平台,包含了一个高性能的rpc框架和服务治理平台,TarsCpp是其C++版本。对于以C++为主要开发语言,同时还想深入了解rpc和微服务框架具体实现的同学来说,Tars...

设计了一款TPS百万级别的分布式、高性能、可扩展的RPC框架

为啥要开发RPC框架事情是这样的,在开发这个RPC框架之前,我花费了不少时间算是对Dubbo框架彻底研究透彻了。冰河在撸透了Dubbo2.x和Dubbo3.x的源码之后,本来想给大家写一个Dubbo源...

rpc框架使用教程,超级稳定好用,大厂都在使用

rpc是什么远程调用协议如何使用导入依赖<dependency><groupId>org.apache.dubbo</groupId><art...

Layui 框架实战:动态加载 Select 与二级联动全解析

在现代Web开发中,下拉选择框(Select)是用户输入数据时不可或缺的组件。很多时候,我们需要的选项并非静态写死在HTML中,而是需要根据业务逻辑从后端动态获取。更有甚者,我们可能需要实现“...

15个能为你节省数百小时的前端设计神器,从UI库到文档生成

无论你是刚开始开发之旅的新手,还是疲于应付生产期限的资深程序员,有一个真理始终不变:正确的工具能彻底改变你的工作流程。多年来,我测试了数百个开发工具——有些实用,大多数平庸。但有一批免费网站经受住了时...

Layui与WinForm通用权限管理系统全解析

嘿,小伙伴们,今天咱们来聊聊Layui和WinForm这两个框架在通用权限管理系统中的应用。别担心,我会尽量用简单易懂的语言来讲解,保证让大家都能跟上节奏!首先说说Layui。Layui是一个前端UI...

纯Python构建精美UI!MonsterUI让前端开发效率飙升

“无需CSS知识,告别类名记忆,11行代码实现专业级卡片组件”在传统Web开发中,构建美观界面需要同时掌握HTML、CSS、JavaScript三剑客,开发者不得不在多种语言间频繁切换。即使使用Boo...

WebTUI:将终端用户界面(TUI)之美带到浏览器的CSS库

在当今Web技术飞速发展的时代,界面设计愈发复杂多样。然而,随着现代化工具的广泛使用,一些开发者开始回归极简风格,追求一种简洁而富有韵味的设计。WebTUI正是这样一款CSS库,它将经典的终...

人教版二年级下册生字描红汇总(拼音+笔顺+描红),可打印!

可定制内容,评论区留言。本次整理的为人教版二年级下册所有生字,共计300个;写字是小学阶段一项重要的基本功训练,把汉字写得正确、工整、美观,可以提高运用汉字这一交际工具的准确性和效率。对小学生进行写字...

取消回复欢迎 发表评论: