实验software RAID5

/**
 * 给主机添加5块SCSI硬盘,每个8GB。其中4块用作RAID5的active sync
 * [sdd、sde、sdf、sdg],1块用作RAID5的Spare Disk[sdh]
 */
oracle:/dev# ls -l sd
sda   sda1  sda2  sdb   sdc   sdd   sde   sdf   sdg   sdh 


/**
 * 安装software RAID管理工具mdadm,这套软件可以让我们以软件的方式模拟很多高端磁盘
 * 镜像系统才有的功能,比如热拔插等。所谓热拔插功能就是允许用户在不关闭系统,不切
 * 断电源的情况下取出和更换坏掉的硬盘。现在的热拔插技术只要简单的打开链接开关或者
 * 转动手柄就可以直接取出硬盘,而系统仍然可以不间断的正常运行。
 * 值得注意的是用mdadm模拟出来的RAID阵列设备名称通常为/dev/md0,/dev/md1...
 */
apt-get install mdadm


// 通过mdadm来建立磁盘阵列
oracle:/dev# mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=4 \
> --spare-devices=1 /dev/sd{d,e,f,g,h} 
mdadm: array /dev/md0 started.


/** 
 * 磁盘阵列的建立相对比较慢,数分钟后,检查RADI的建立情况如下:
 * Chunk Size : 64K 表示带区大小为64K,合理的选择带区大小非常重要,如果噢带区过大
 * 可能一块磁盘上的带区空间就可以满足大部分的I/O操作,使得数据的读写只局限于一块
 * 硬盘上,这便不能充分发挥RAID并发的优势;如果带区设置过小,任何很小的I/O指令都
 * 可能引发大量的读写操作,占用过多的控制器总线带宽,也会影响阵列的性能。所以,在
 * 创建带区时,我们应该根据实际应用的需要,合理且慎重的选择带区大小。
 */
oracle:/dev# mdadm --detail /dev/md0 
/dev/md0:					// RAID设备名称
        Version : 00.90
  Creation Time : Sun Jun 27 02:42:33 2010
     Raid Level : raid5				// RAID5噢:)
     Array Size : 25165632 (24.00 GiB 25.77 GB) // 阵列可用大小
  Used Dev Size : 8388544 (8.00 GiB 8.59 GB)	// 组成阵列的每个设备容量
   Raid Devices : 4				// 当前处于活动状态的设备数量
  Total Devices : 5				// 全部设备数量
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Sun Jun 27 02:47:39 2010
          State : clean
 Active Devices : 4			// 激活的磁盘数量
Working Devices : 5			// 工作的磁盘数量[Working=Active+Spare]
 Failed Devices : 0			// 出现错误的磁盘数量
  Spare Devices : 1			// 备用磁盘数量

         Layout : left-symmetric
     Chunk Size : 64K			// RAID划分的小区块大小

           UUID : dd191942:a9381905:b6641343:7cc40f45 (local to host oracle)
         Events : 0.24

    Number   Major   Minor   RaidDevice State
       0       8       48        0      active sync   /dev/sdd
       1       8       64        1      active sync   /dev/sde
       2       8       80        2      active sync   /dev/sdf
       3       8       96        3      active sync   /dev/sdg

       4       8      112        -      spare   /dev/sdh

// 也可以基于/proc文件系统来检查RAID的建立情况
oracle:/dev# cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 sdg[3] sdh[4](S) sdf[2] sde[1] sdd[0]
      25165632 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
      
unused devices: <none>


// 格式化阵列为ext3文件系统
oracle:/dev# mkfs -t ext3 /dev/md0 
mke2fs 1.41.3 (12-Oct-2008)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1572864 inodes, 6291408 blocks
314570 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
192 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.


// 将/dev/md0并挂在到/raid
oracle:/# mkdir /raid
oracle:/# mount /dev/md0 /raid/
oracle:/# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/oracle-root
                        329233    135760    176475  44% /
tmpfs                   258148         0    258148   0% /lib/init/rw
udev                     10240       668      9572   7% /dev
tmpfs                   258148         0    258148   0% /dev/shm
/dev/sda1               233335     26271    194616  12% /boot
/dev/mapper/oracle-home
                       2789856     69796   2578340   3% /home
/dev/mapper/oracle-tmp
                        238003      6177    219538   3% /tmp
/dev/mapper/oracle-usr
                       2822096    685372   1993364  26% /usr
/dev/mapper/oracle-var
                       1350552    123468   1158476  10% /var
/dev/mapper/optvg-optlv
                       8252856   2579504   5254128  33% /opt
/dev/mapper/oradatavg-oradatalv
                       8252856    149624   7684008   2% /oradata
/dev/md0              24770748    176196  23336272   1% /raid




/* 
 * 模拟RAID5阵列的自动恢复与救援。
 * 设定/dev/sdd这块磁盘为Fail
 */
oracle:/raid# mdadm --manage /dev/md0 --fail /dev/sdd 
mdadm: set /dev/sdd faulty in /dev/md0


/**
 * 检查阵列/dev/md0状态,我们发现/dev/sdd已经标识为faulty spare了,而/dev/sdh
 * 这块原先做Spare Disk的磁盘立马开始重建,正处于spare rebuilding状态。
 */
oracle:/raid# mdadm --detail /dev/md0                 
/dev/md0:
        Version : 00.90
  Creation Time : Sun Jun 27 02:42:33 2010
     Raid Level : raid5
     Array Size : 25165632 (24.00 GiB 25.77 GB)
  Used Dev Size : 8388544 (8.00 GiB 8.59 GB)
   Raid Devices : 4
  Total Devices : 5
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Sun Jun 27 04:36:19 2010
          State : clean, degraded, recovering
 Active Devices : 3
Working Devices : 4
 Failed Devices : 1
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 64K

 Rebuild Status : 2% complete

           UUID : dd191942:a9381905:bc444e69:8a5dd25b
         Events : 0.26

    Number   Major   Minor   RaidDevice State
       5       8      112        0      spare rebuilding   /dev/sdh
       1       8       64        1      active sync   /dev/sde
       2       8       80        2      active sync   /dev/sdf
       3       8       96        3      active sync   /dev/sdg

       4       8       48        -      faulty spare   /dev/sdd


/**
 * 等待重建完毕再次检查阵列状态,发现/dev/sdh重建完毕。
 */
oracle:/raid# mdadm --detail /dev/md0
/dev/md0:
        Version : 00.90
  Creation Time : Sun Jun 27 02:42:33 2010
     Raid Level : raid5
     Array Size : 25165632 (24.00 GiB 25.77 GB)
  Used Dev Size : 8388544 (8.00 GiB 8.59 GB)
   Raid Devices : 4
  Total Devices : 5
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Sun Jun 27 04:41:25 2010
          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 1
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 64K

           UUID : dd191942:a9381905:bc444e69:8a5dd25b
         Events : 0.34

    Number   Major   Minor   RaidDevice State
       0       8      112        0      active sync   /dev/sdh
       1       8       64        1      active sync   /dev/sde
       2       8       80        2      active sync   /dev/sdf
       3       8       96        3      active sync   /dev/sdg

       4       8       48        -      faulty spare   /dev/sdd


// 加入新的磁盘,拔出有问题的磁盘
oracle:~# mdadm --manage /dev/md0 --add /dev/sdi --remove /dev/sdd
mdadm: added /dev/sdi
mdadm: hot removed /dev/sdd

/**
 * 再次检查阵列,发现刚加入的/dev/sdi已成为了新的Spare Disk。
 */
oracle:~# mdadm --detail /dev/md0 
/dev/md0:
        Version : 00.90
  Creation Time : Sun Jun 27 02:42:33 2010
     Raid Level : raid5
     Array Size : 25165632 (24.00 GiB 25.77 GB)
  Used Dev Size : 8388544 (8.00 GiB 8.59 GB)
   Raid Devices : 4
  Total Devices : 5
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Sun Jun 27 04:47:30 2010
          State : clean
 Active Devices : 4
Working Devices : 5
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 64K

           UUID : dd191942:a9381905:bc444e69:8a5dd25b
         Events : 0.36

    Number   Major   Minor   RaidDevice State
       0       8      112        0      active sync   /dev/sdh
       1       8       64        1      active sync   /dev/sde
       2       8       80        2      active sync   /dev/sdf
       3       8       96        3      active sync   /dev/sdg

       4       8      128        -      spare   /dev/sdi

你可能感兴趣的:(oracle,C++,c,C#,sun)