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

1.ZFS介绍

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

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

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

2.存储划盘并赋予主机

环境:Sparc S7-2 / Solaris11

Solaris虚拟机

##扫描新加磁盘cfgadm -aldevfsadm -v format ---find new diskroot@nwmsdb:~# formatSearching for disks...doneAVAILABLE DISK SELECTIONS:0. c0t5000CCA07D07ACC8d0      <HGST-H101860SFSUN600G-A990-558.91GB>     </HGST-H101860SFSUN600G-A990-558.91GB>          /scsi_vhci/disk@g5000cca07d07acc8          /dev/chassis/SYS/HDD0/disk1. c0t5000CCA07D06C690d0      <HGST-H101860SFSUN600G-A990-558.91GB>     </HGST-H101860SFSUN600G-A990-558.91GB>          /scsi_vhci/disk@g5000cca07d06c690          /dev/chassis/SYS/HDD1/disk2. c1t0d0          /pci@300/pci@1/pci@0/pci@2/usb@0/storage@1/disk@0,0          /dev/chassis/SYS/MB/EUSB-DISK/disk3. c0t60060E80122E7F0050402E7F00000027d0      <HITACHI-OPEN-V     </HITACHI-OPEN-V-SUN-8301-100.00GB> ---new disk          /scsi_vhci/ssd@g60060e80122e7f0050402e7f000000274. c0t60060E80122E7F0050402E7F00000028d0      <HITACHI-OPEN-V     </HITACHI-OPEN-V-SUN-8301-450.00GB>---new disk          /scsi_vhci/ssd@g60060e80122e7f0050402e7f000000285. c0t60060E801227C400504027C400000018d0      <HITACHI-OPEN-V     </HITACHI-OPEN-V-SUN-8301-100.00GB>---old disk          /scsi_vhci/ssd@g60060e801227c400504027c4000000186. c0t60060E801227C400504027C400000019d0      <HITACHI-OPEN-V     </HITACHI-OPEN-V-SUN-8301-400.00GB>---old disk          /scsi_vhci/ssd@g60060e801227c400504027c400000019Specify 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  UPTIMEprimary          active     -n-cv-  UART    8     16G      0.7%  0.7%  7d 2h 23mldg1             active     -n----  5000    120   110G     0.1%  0.1%  7d 45mroot@nwmsdb:~#root@nwmsdb:~#  ldm list-servicesVCC    NAME         LDOM         PORT-RANGE    primary-vcc0 primary      5000-5100VSW    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 ldomldm add-vdsdev  /dev/dsk/c0t60060E80122E7F0050402E7F00000027d0s2 ldg1_data03@primary-vds0ldm add-vdisk ldg1_data03 ldg1_data03@primary-vds0 ldg1ldm add-vdsdev  /dev/dsk/c0t60060E80122E7F0050402E7F00000028d0s2 ldg1_data04@primary-vds0ldm 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 ldg1ldm rm-vdisk ldg1_data04 ldg1

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

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

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

[root@wmsdb:/]# formatSearching for disks...doneAVAILABLE 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 diskSpecify 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: ONLINEstatus: 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% doneconfig:​        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
相关推荐
风_流沙11 分钟前
java 对ElasticSearch数据库操作封装工具类(对你是否适用嘞)
java·数据库·elasticsearch
亽仒凣凣19 分钟前
Windows安装Redis图文教程
数据库·windows·redis
亦世凡华、28 分钟前
MySQL--》如何在MySQL中打造高效优化索引
数据库·经验分享·mysql·索引·性能分析
YashanDB30 分钟前
【YashanDB知识库】Mybatis-Plus调用YashanDB怎么设置分页
数据库·yashandb·崖山数据库
ProtonBase41 分钟前
如何从 0 到 1 ,打造全新一代分布式数据架构
java·网络·数据库·数据仓库·分布式·云原生·架构
云和数据.ChenGuang6 小时前
Django 应用安装脚本 – 如何将应用添加到 INSTALLED_APPS 设置中 原创
数据库·django·sqlite
woshilys6 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
Hacker_LaoYi6 小时前
SQL注入的那些面试题总结
数据库·sql
建投数据7 小时前
建投数据与腾讯云数据库TDSQL完成产品兼容性互认证
数据库·腾讯云
Hacker_LaoYi8 小时前
【渗透技术总结】SQL手工注入总结
数据库·sql