网络硬盘实时备份

发表于:2007-07-04来源:作者:点击数: 标签:
什么是DRBD? DRBD 是由内核模块和相关脚本而构成,用以构建高可用性的集群。其实现方式是通过 网络 来镜像整个设备。您可以把它看作是一种网络 RAID。 drbd 的应用范围是什么?除此之外,创建高可用性集群还需要什么? Drbd 负责接收数据,把数据写到本地磁
什么是DRBD?
  DRBD 是由内核模块和相关脚本而构成,用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。您可以把它看作是一种网络RAID。
drbd 的应用范围是什么?除此之外,创建高可用性集群还需要什么?
  Drbd 负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。另一个主机再将数据存到自己的磁盘中。其他所需的组件有集群成员服
  务,如TurboHA 或心跳连接,以及一些能在块设备上运行的应用程序。
例如:

什么是DRBD?
  DRBD 是由内核模块和相关脚本而构成,用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。您可以把它看作是一种网络RAID。
drbd 的应用范围是什么?除此之外,创建高可用性集群还需要什么?
  Drbd 负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。另一个主机再将数据存到自己的磁盘中。其他所需的组件有集群成员服
  务,如TurboHA 或心跳连接,以及一些能在块设备上运行的应用程序。
例如:
o 裸I/O
o 文件系统及fsck
o 具有恢复能力的数据库
它是如何工作的?
  每个设备(drbd 提供了不止一个设备)都有一个状态,可能是‘主’状态或‘辅助’状态。在带有主要设备的节点上,应用程序应能运行和
  访问设备(/dev/nbX)。每次写入都会发往本地低层设备和带有‘辅助’状态设备的节点中。次要设备只能简单地把数据写入它的低层块设
  备上。读取数据通常在本地进行。如果主要节点发生故障,心跳将会把辅助设备转换到主状态,并启动其上的应用程序。(如果您将它和无
  日志FS 一起使用,则需要运行fsck)。
  如果发生故障的节点恢复工作,它就会成为新的辅助节点,而且必须使自己的内容与主节点的内容保持同步。当然,这些操作不会干扰到后
  台的服务。
drbd 同现在的HA 集群有什么关系?
  大部分现行高可用性集群(如:惠普、康柏等等)使用的是共享存储器,因此存储器连接多个节点(用共享的SCSI 总线或光纤通道就可以
  做到)。Drbd 也可以作为一个共享的设备,但是它并不需要任何不常见的硬件。它在IP 网络中运行,而且在价格上IP 网络要比专用的存
  储网络经济的多。目前,drbd 每次只允许对一个节点进行读写访问,这对于通常的故障切换高可用性集群来讲已经足够用了。以后的版本
  将支持两个节点进行读写存取。这很有用,比如对GFS 来讲就是如此。兼容性Drbd 可以在ide、SCSI 分区和整个驱动器之上运行,但不能
  在回路模块设备上运行。(如果您硬要这样做,它就会发生死锁)。Drbd 也不能在回送网络设备中运行。(因为它同样会发生死锁:所有
  请求都会被发送设备占用,发送流程也会阻塞在sock_sendmsg()中。有时,接收线程正从网络中提取数据块,并试图把它放在高速缓存器
  中;但系统却要把一些数据块从高速缓存器中取到磁盘中。这种情况往往会在接收器的环境下发生,因为所有的请求都已经被接收器块占用
  了。

安装
下载软件
最新的稳定版本为0.6.11,您可从http://www.drbd.org/releases.html 下载它。
环镜:redhat9.0 drbd.0.7.10.tar.gz
       配置:查看解压的INSTALL文件。
    1.[wanwan@root]cd /usr/src/linux-2.4
        2.[wanwan@root]make mrproper
 3.[wanwan@root]cp configs/kernel-2.4.20-i586.config ./config
        4.[wanwan@root]make -s oldconfig_nonint ; make -s oldconfig_nonint
        5.[wanwan@root] vi Makefile 修改 -8customer 把 customer删除
    6.[wanwan@root] make dep
        7.[wanwan@root]make include/linux/version.h
        解压drbd-0.7.10
        8.[wanwan@root]cd /usr/src/drbd-0.7.10/drbd
        9.[wanwan@root]make clean all
        10.[wanwan@root]make;
        11.[wanwan@root]make install;
测试加载drbd 模块
如果这些都已经创建和安装妥当,您就可以测试加载模块了。
$ /sbin/insmod drbd
如果一切正常,您不会看见任何ERROR(错误)信息,用Ismod 程序可以验证模块是否已被加载。
dev2-98:~/rpm/SPECS # lsmod
最后修改配置文件/etc/drbd.conf
参考如下:
     resource drbd0 {  //设备名
  protocol C;
 incon-degr-cmd "echo '!DRBD! pri on incon-degr' | wall ; sleep 60 ; halt -f";
  startup {
   degr-wfc-timeout 120; 
  }
 disk { 
  on-io-error   detach;
  }
 .net {
  
   }
  syncer {
   rate 10M;
   group 1;
   al-extents 257;
  }
 on Web_1{  //主机名
      device     /dev/drbd0;   //设备名
      disk       /dev/sda2;          //硬盘符
      address    192.168.3.195:7788;      //主机IP地址:端口
      meta-disk  internal;
  }

  on web_2 {                      //辅计算机
      device    /dev/drbd0;             //设备名
      disk      /dev/sda5;               //硬盘符
      address   192.168.2.250:7788;       //IP地址:端口
      meta-disk internal;
    } 
   
  另:增设为主镜像 drdbsetup /dev/drbd0 primary --do-what-I-say;
   建立虚拟设备for i in `seq 0 15` ; do mknod -m 0660 /dev/drbd$i b 147 $i; done
   镜像设备名:mount /dev/drbd0 /dev/sda2
   启动drbd  /etc/init.d/drbd start/stop/reload/restart/
  后续的应用等续.

原文转自:http://www.ltesting.net