1

drbd 工作原理

DRBD是一种块设备,可以被用于高可用(HA)之中。它类似于一个网络RAID-1功能。

当你将数据写入本地文件系统时,数据还将会被发送到网络中另一台主机上。以相同的形式记录在一个文件系统中。本地(主节点)与远程主机(备节点)的数据可以保证实时同步。本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用。在高可用(HA)中使用DRBD功能,可以代替使用一个共享盘阵。

因为数据同时存在于本地主机和远程主机上,切换时,远程主机只要使用它上面的那份备份数据。

简而言之,基本功能相当于一个网络raid1,也有很多特殊功能。

本文的目的是入门。

drbd 配置

准备工作

  1. 两台服务器如下:

    192.168.11.128  ubuntu1
    192.168.11.129  ubuntu2
    
  2. 每台服务器准备一个20G的分区。
    因为用到的只是最简单的功能raid1,所以需要每台服务器的磁盘大小相同。

    clipboard.png

  3. 安装drbd
    ubuntu系列软件包名为drbd8-utils。

开始配置

  1. 两台主机分别写hosts

    192.168.11.128  ubuntu1
    192.168.11.129  ubuntu2
    
  2. drbd运行时所需要的配置文件是

    include "drbd.d/global_common.conf";
    include "drbd.d/*.res";
    

    其中:
    global_common.conf是全局配置,
    *.res是单个的磁盘配置。

  3. 最简单的global_common.conf配置:

    global {
            usage-count no;
    }
    common {
            net {
                    protocol C;
            }
    }
    

    user-count指的是给drbd官方使用drbd的用户总数统计。
    protocol C指的是复制磁盘时所使用的协议,可以参考使用协议,最常用的是C协议。

  4. *.res配置
    一个最简单的示例sdb.res如下:

    resource sdb {
      on ubuntu1 {
        device    /dev/drbd1;#虚拟出的设备
        disk      /dev/sdb1;#原设备
        address   192.168.11.128:7789;
        meta-disk internal;
      }
      on ubuntu2 {
        device    /dev/drbd1;
        disk      /dev/sdb1;
        address   192.168.11.129:7789;
        meta-disk internal;
      }
    }
    

    功能:节点ubuntu1和节点ubuntu2上都将/dev/sdb1虚拟为drbd设备,访问设备需要用/dev/drbd1,而不是用/dev/sdb1

  5. 启动

    • 5.1 两台机器使用相同的global_common.confsdb.res
    • 5.2 分别执行drbdadm create-md all
    • 5.3 分别启动/etc/init.d/drbd start

      启动过程中,先启动的那一台会等待后一台的启动。

      clipboard.png

    • 5.4 查询启动状态:drbd-overview

    • 5.5 将ubuntu1的设备设为主设备:ubuntu1上执行drbdadm -- --overwrite-data-of-peer primary all,多个设备时,将ubuntu1的设备sdb设为主设备:drbdadm -- --overwrite-data-of-peer primary sdb
  6. ubuntu1上格式化并挂载进行测试:

    • 6.1 ubuntu1上执行

      mkfs.reiserfs /dev/drbd1 #此处并没有格式化ubuntu2。
      mkdir /tmp/drbd1
      mount /dev/drbd1 /tmp/drbd1
      cd /tmp/drbd1 
      git clone https://github.com/phpsysinfo/phpsysinfo
      drbdadm secondary sdb#将sdb设备设为从设备,同时只能有一个主设备。
      

      注:同时只能有一个主设备,只有主设备可以进行mount操作等。

    • 6.2 ubuntu2上执行

      drbdadm primary sdb#将sdb设备设为主设备
      mkdir /tmp/drbd1
      mount /dev/drbd1 /tmp/drbd1
      cd /tmp/drbd1 
      ls
      

      得到phpsysinfo目录。

至此,drbd的基本用法网络raid1完成。


更高级的用法、完全文档可以参考:


大舒
7k 声望815 粉丝

define TRUE FALSE