IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    使用losetup实现linux普通文件做asm disk

    惜分飞发表于 2016-06-18 11:35:36
    love 0

    联系:手机(13429648788) QQ(107644445)QQ咨询惜分飞

    标题:使用losetup实现linux普通文件做asm disk

    作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

    上一篇文章《使用_asm_allow_only_raw_disks实现普通文件做asm disk》中已经介绍使用_asm_allow_only_raw_disks参数使得oracle asm可以使用文件作为asm disk,这篇文章介绍在linux中还可以通过losetup来实现文件系统模拟磁盘实现使用文件系统做asm disk的效果
    通过dd构造文件

    [oracle@xifenfei ~]$ mkdir /u01/oracle/oradata/asmdisk
    [oracle@xifenfei ~]$ dd if=/dev/zero of=/u01/oracle/oradata/asmdisk/xifenfei01.dd bs=10240k count=100
    100+0 records in
    100+0 records out
    1048576000 bytes (1.0 GB) copied, 21.9158 seconds, 47.8 MB/s
    [oracle@xifenfei ~]$ dd if=/dev/zero of=/u01/oracle/oradata/asmdisk/xifenfei02.dd bs=10240k count=100
    100+0 records in
    100+0 records out
    1048576000 bytes (1.0 GB) copied, 22.392 seconds, 46.8 MB/s
    [oracle@xifenfei ~]$ ls -lh /u01/oracle/oradata/asmdisk/
    total 3.0G
    -rw-r--r-- 1 oracle oinstall 1000M Feb 27 22:58 xifenfei01.dd
    -rw-r--r-- 1 oracle oinstall 1000M Feb 27 23:00 xifenfei02.dd
    

    使用losetup模拟磁盘

    [root@xifenfei asmdisk]# ls -l /dev/lo
    log    loop0  loop1  loop2  loop3  loop4  loop5  loop6  loop7  
    [root@xifenfei asmdisk]# losetup /dev/loop1 xifenfei01.dd 
    [root@xifenfei asmdisk]# losetup /dev/loop2 xifenfei02.dd 
    

    使用raw实现磁盘转换为裸设备

    [root@xifenfei asmdisk]# raw  /dev/raw/raw10 /dev/loop1 
    /dev/raw/raw10: bound to major 7, minor 1
    [root@xifenfei asmdisk]# raw  /dev/raw/raw11 /dev/loop2 
    /dev/raw/raw11: bound to major 7, minor 2
    [root@xifenfei asmdisk]# ls -l /dev/raw/raw1[0-1]
    crw------- 1 root root 162, 10 Feb 27 23:16 /dev/raw/raw10
    crw------- 1 root root 162, 11 Feb 27 23:16 /dev/raw/raw11
    [root@xifenfei asmdisk]# chown oracle.dba /dev/raw/raw1[0-1]
    [root@xifenfei asmdisk]# ls -l /dev/raw/raw1[0-1]
    crw------- 1 oracle dba 162, 10 Feb 27 23:16 /dev/raw/raw10
    crw------- 1 oracle dba 162, 11 Feb 27 23:16 /dev/raw/raw11
    

    创建磁盘组

    [oracle@xifenfei ~]$ export ORACLE_SID=+ASM
    [oracle@xifenfei ~]$ sqlplus / as sysdba
    
    SQL*Plus: Release 10.2.0.4.0 - Production on Thu Feb 27 23:19:28 2014
    
    Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.
    
    
    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    
    
    SQL>  create diskgroup xff external redundancy disk '/dev/raw/raw10','/dev/raw/raw11';
    
    Diskgroup created.
    
    SQL> select group_number,name from v$asm_diskgroup;
    
    GROUP_NUMBER NAME
    ------------ ------------------------------------------------------------
               1 DATA
               2 XFF
    
    SQL> select path,TOTAL_MB from v$asm_disk where group_number=2;
    
    PATH                   TOTAL_MB
    -------------------- ----------
    /dev/raw/raw11             1000
    /dev/raw/raw10             1000
    

    通过kfed验证asm disk是数据文件

    [oracle@xifenfei tmp]$ kfed read /dev/raw/raw10|grep XFF
    kfdhdb.dskname:                XFF_0000 ; 0x028: length=8
    kfdhdb.grpname:                     XFF ; 0x048: length=3
    kfdhdb.fgname:                 XFF_0000 ; 0x068: length=8
    [oracle@xifenfei tmp]$ kfed read /dev/raw/raw11|grep XFF
    kfdhdb.dskname:                XFF_0001 ; 0x028: length=8
    kfdhdb.grpname:                     XFF ; 0x048: length=3
    kfdhdb.fgname:                 XFF_0001 ; 0x068: length=8
    [oracle@xifenfei tmp]$ kfed read /u01/oracle/oradata/asmdisk/xifenfei01.dd |grep XFF
    kfdhdb.dskname:                XFF_0000 ; 0x028: length=8
    kfdhdb.grpname:                     XFF ; 0x048: length=3
    kfdhdb.fgname:                 XFF_0000 ; 0x068: length=8
    [oracle@xifenfei tmp]$ kfed read /u01/oracle/oradata/asmdisk/xifenfei02.dd |grep XFF
    kfdhdb.dskname:                XFF_0001 ; 0x028: length=8
    kfdhdb.grpname:                     XFF ; 0x048: length=3
    kfdhdb.fgname:                 XFF_0001 ; 0x068: length=8
    

    通过kfed命令,确定asm本质是用了dd出来的数据文件做asm disk.

    • ASM DISK HEADER 备份与恢复
    • 手工修复ASM DISK HEADER 异常
    • 使用_asm_allow_only_raw_disks实现普通文件做asm disk
    • How to Get the Contents of an Spfile on ASM when ASM/GRID is down
    • asm disk误设置pvid导致asm diskgroup无法mount恢复
    • 使用dd复制asm中文件
    • oracle 12.1 RAC的ocr磁盘组异常恢复
    • 使用asm disk header 自动备份信息恢复异常asm disk header
    • 分享oracleasm createdisk重新创建asm disk后数据0丢失恢复案例
    • OCR/Vote disk 维护操作
    • exp dmp文件损坏(坏块/corruption)恢复—跳过dmp坏块
    • asm备份元数据之md_backup和md_restore


沪ICP备19023445号-2号
友情链接