11.2。检查DRBD状态
11.2.1。使用drbdmon检索状态
drbdmon实用程序是查看DRBD状态的一种便捷方法 。它实时更新DRBD资源的状态。
11.2.2。通过drbdtop检索状态并与DRBD交互
顾名思义,它drbdtop与的工具具有相似之处htop。一方面,它允许监视DRBD资源以及进行交互(例如,将它们切换为Primary,甚至解决裂脑问题)。完整的概述可以在这里找到[ https://linbit.github.io/drbdtop/ ]。
11.2.3。中的状态信息/proc/drbd
/proc/drbd不推荐使用。尽管在8.4系列中不会将其删除,但我们建议您切换到其他方式,例如通过drbdadm;或者,为更加方便地进行监视,可通过进行一次或实时监视drbdsetup events2。 |
/proc/drbd是一个虚拟文件,显示有关DRBD模块的基本信息。它在DRBD 8.4之前得到了广泛的使用,但跟不上DRBD 9提供的信息量。
$ cat /proc/drbd
version: 9.0.0 (api:1/proto:86-110) FIXME
GIT-hash: XXX build by linbit@buildsystem.linbit, 2011-10-12 09:07:35
第一行以开头version:,显示系统上使用的DRBD版本。第二行包含有关此特定版本的信息。
11.2.4。状态信息通过drbdadm
在最简单的调用中,我们只要求单个资源的状态。
# drbdadm status home
home role:Secondary
disk:UpToDate
nina role:Secondary
disk:UpToDate
nino role:Secondary
disk:UpToDate
nono connection:Connecting
这只是说资源主页在本地,“ nina”和“ nino”上UpToDate和Secondary上;因此,这三个节点在其存储设备上具有相同的数据,并且目前没有人在使用该设备。
节点“ nono”未连接,其状态报告为正在 连接;有关更多详细信息,请参见下面的连接状态。
您可以通过将--verbose和和或 --statistics参数传递到drbdsetup(为了便于阅读而中断的行)来获取更多信息:
# drbdsetup status home --verbose --statistics
home node-id:1 role:Secondary suspended:no
write-ordering:none
volume:0 minor:0 disk:UpToDate
size:1048412 read:0 written:1048412 al-writes:0 bm-writes:48 upper-pending:0
lower-pending:0 al-suspended:no blocked:no
nina local:ipv4:10.9.9.111:7001 peer:ipv4:10.9.9.103:7010 node-id:0
connection:Connected role:Secondary
congested:no
volume:0 replication:Connected disk:UpToDate resync-suspended:no
received:1048412 sent:0 out-of-sync:0 pending:0 unacked:0
nino local:ipv4:10.9.9.111:7021 peer:ipv4:10.9.9.129:7012 node-id:2
connection:Connected role:Secondary
congested:no
volume:0 replication:Connected disk:UpToDate resync-suspended:no
received:0 sent:0 out-of-sync:0 pending:0 unacked:0
nono local:ipv4:10.9.9.111:7013 peer:ipv4:10.9.9.138:7031 node-id:3
connection:Connecting
在此示例中,每隔几行形成一个块,该块对该资源中使用的每个节点重复执行,本地节点的格式异常很小-有关更多详细信息,请参见下文。
每个块的第一行显示node-id(对于当前资源;主机可以node-id在不同资源中具有不同的)。此外,还将显示role(请参阅资源角色)。
下一条重要的代码行是volume规范。通常,这些编号从零开始编号,但是配置也可以指定其他ID。此行在项目中显示连接状态 replication(有关详细信息,请参阅连接状态),在其中显示远程磁盘的状态disk(请参阅磁盘状态)。那么,对于这种体积给人有点统计的线-数据received,sent,out-of-sync等; 请参阅 性能指标和连接信息数据以获取更多信息。
对于本地节点,在我们的示例中,第一行显示资源名称home。由于第一个块始终描述本地节点,因此没有连接或地址信息。
请参阅drbd.conf手册页以获取更多信息。
此示例中的其他四行形成一个块,该块针对每个配置的DRBD设备重复,并以设备次设备号为前缀。在这种情况下,它0对应于device /dev/drbd0。
特定于资源的输出包含有关资源的各种信息:
11.2.5。通过一站式或实时监控drbdsetup events2
仅在用户空间版本8.9.3及更高版本中可用。 |
这是一种从DRBD中获取信息的底层机制,适用于自动化工具(如监视)。
在最简单的调用中,仅显示当前状态,输出看起来像这样(但是,在终端上运行时,将包括颜色):
# drbdsetup events2 --now r0
exists resource name:r0 role:Secondary suspended:no
exists connection name:r0 peer-node-id:1 conn-name:remote-host connection:Connected role:Secondary
exists device name:r0 volume:0 minor:7 disk:UpToDate
exists device name:r0 volume:1 minor:8 disk:UpToDate
exists peer-device name:r0 peer-node-id:1 conn-name:remote-host volume:0
replication:Established peer-disk:UpToDate resync-suspended:no
exists peer-device name:r0 peer-node-id:1 conn-name:remote-host volume:1
replication:Established peer-disk:UpToDate resync-suspended:no
exists -
如果没有“ --now”,该进程将继续运行,并发送如下的连续更新:
# drbdsetup events2 r0
...
change connection name:r0 peer-node-id:1 conn-name:remote-host connection:StandAlone
change connection name:r0 peer-node-id:1 conn-name:remote-host connection:Unconnected
change connection name:r0 peer-node-id:1 conn-name:remote-host connection:Connecting
然后,出于监视目的,还有另一个参数“ --statistics”,它将产生一些性能计数器和其他事实:
'drbdsetup' 详细输出(为便于阅读,行被断开):
# drbdsetup events2 --statistics --now r0
exists resource name:r0 role:Secondary suspended:no write-ordering:drain
exists connection name:r0 peer-node-id:1 conn-name:remote-host connection:Connected
role:Secondary congested:no
exists device name:r0 volume:0 minor:7 disk:UpToDate size:6291228 read:6397188
written:131844 al-writes:34 bm-writes:0 upper-pending:0 lower-pending:0
al-suspended:no blocked:no
exists device name:r0 volume:1 minor:8 disk:UpToDate size:104854364 read:5910680
written:6634548 al-writes:417 bm-writes:0 upper-pending:0 lower-pending:0
al-suspended:no blocked:no
exists peer-device name:r0 peer-node-id:1 conn-name:remote-host volume:0
replication:Established peer-disk:UpToDate resync-suspended:no received:0
sent:131844 out-of-sync:0 pending:0 unacked:0
exists peer-device name:r0 peer-node-id:1 conn-name:remote-host volume:1
replication:Established peer-disk:UpToDate resync-suspended:no received:0
sent:6634548 out-of-sync:0 pending:0 unacked:0
exists -
您可能还喜欢``--timestamp''参数。
11.2.6。连接状态
可以通过发出以下drbdadm cstate命令来观察资源的连接状态:
# drbdadm cstate <resource>
Connected
Connected
StandAlone
如果您只对资源的单个连接感兴趣,请也指定连接名称:
默认值为配置文件中指定的对等方的主机名。
# drbdadm cstate <peer>:<resource>
Connected
资源可能具有以下连接状态之一:
单机版
没有可用的网络配置。资源尚未连接,或者已通过管理方式断开连接(使用drbdadm disconnect),或者由于身份验证失败或头脑分裂而中断了连接。
断开连接
断开连接时的临时状态。下一个状态是StandAlone。
未连接
尝试连接之前的临时状态。下一个可能的状态:正在连接。
暂停
与对等方通信超时后的临时状态。下一状态:未连接。
断管
与对等方的连接丢失后的临时状态。下一状态:未连接。
网络故障
与伙伴的连接丢失后的临时状态。下一状态:未连接。
协议错误
与伙伴的连接丢失后的临时状态。下一状态:未连接。
拆除
临时状态。对方正在关闭连接。下一状态:未连接。
连接中
该节点正在等待,直到对等节点在网络上可见。
连接的
已建立DRBD连接,数据镜像现在处于活动状态。这是正常状态。
11.2.7。复制状态
每个卷在每个连接上都有一个复制状态。可能的复制状态为:
关
由于该连接不是Connected,因此不会通过该连接复制该卷。
成立时间
该卷的所有写操作均在线复制。这是正常状态。
StartingSyncS
由管理员启动的完全同步才刚刚开始。下一个可能的状态是: SyncSource或PausedSyncS。
正在启动SyncT
由管理员启动的完全同步才刚刚开始。下一个状态:WFSyncUUID。
WFBitMapS
部分同步才刚刚开始。下一个可能的状态:SyncSource或PausedSyncS。
WFBitMapT
部分同步才刚刚开始。下一个可能的状态:WFSyncUUID。
WFSyncUUID
同步即将开始。下一个可能的状态:SyncTarget或PausedSyncT。
同步源
当前正在运行同步,本地节点是同步的源。
SyncTarget
同步当前正在运行,本地节点是同步的目标。
暂停同步
本地节点是正在进行的同步的源,但是同步当前已暂停。这可能是由于依赖于另一个同步过程的完成,或者是由于同步已被手动中断 drbdadm pause-sync。
暂停同步
本地节点是正在进行的同步的目标,但是当前已暂停同步。这可能是由于依赖于另一个同步过程的完成,或者是由于同步已被手动中断 drbdadm pause-sync。
验证
当前正在运行在线设备验证,本地节点是验证的来源。
验证码
当前正在运行在线设备验证,本地节点是验证的目标。
先
由于链接无法应对负载,因此数据复制已暂停。此状态由配置on-congestion选项启用 (请参阅配置拥塞策略和挂起的复制)。
背后
由于链接无法应对负载,因此数据复制被对等方暂停。此状态由on-congestion对等节点上的配置选项启用 (请参阅配置拥塞策略和挂起的复制)。
11.2.8。资源角色
可以通过发出以下drbdadm role命令来观察资源的角色 :
# drbdadm role <resource>
Primary
您可能会看到以下资源角色之一:
主
资源当前处于主要角色,可以从中读取和写入。除非启用了双主模式,否则此角色仅在两个节点之一上发生 。
次要的
该资源当前处于次要角色。它通常会从其对等方接收更新(除非以断开连接模式运行),但是既不能读取也不可以写入。此角色可能发生在一个或两个节点上。
未知
该资源的角色目前未知。本地资源角色永远不会具有此状态。它仅针对对等方的资源角色显示,并且仅在断开连接模式下显示。
11.2.9。磁盘状态
可以通过发出以下drbdadm dstate命令来观察资源的磁盘状态:
# drbdadm dstate <resource>
UpToDate
磁盘状态可能是以下之一:
无盘
尚未将本地块设备分配给DRBD驱动程序。这可能意味着该资源从未连接到其后备设备,或者已经使用进行了手动分离drbdadm detach,或者在发生较低级别的I / O错误后自动分离了该资源。
附加
读取元数据时的瞬态。
拆卸
分离并等待正在进行的IO完成时的瞬态状态。
失败的
本地块设备发出I / O故障报告后的瞬态状态。下一个状态:无盘。
谈判中
在已连接的 DRBD设备上执行附加时的临时状态。
前后不一致
数据不一致。在两个节点上创建新资源后,此状态立即发生(在初始完全同步之前)。同样,在同步过程中在一个节点(同步目标)中找到此状态。
过时的
资源数据是一致的,但已 过时。
D未知
如果没有网络连接可用,则此状态用于对等磁盘。
一致的
没有连接的节点的一致数据。建立连接后,将确定数据是UpToDate还是Outdated。
最新
数据的一致最新状态。这是正常状态。
11.2.10。连接信息数据
本地
显示网络系列,用于接受来自对等方的连接的本地地址和端口。
同行
显示网络家族,用于连接的对等地址和端口。
拥挤
该标志表明数据连接的TCP发送缓冲区是否已满80%。
11.2.11。性能指标
drbdadm status-output的 一行包含以下计数器和仪表:
发送(网络发送)
通过网络连接发送给合作伙伴的净数据量;在千字节。
接收(网络接收)
合作伙伴通过网络连接接收的净数据量;在千字节。
读(磁盘写)
净数据写在本地硬盘上;在千字节。
写入(磁盘读取)
从本地硬盘读取的净数据;在千字节。
al-writes(活动日志)
元数据的活动日志区域的更新数。
bm-writes(位图)
元数据的位图区域的更新次数。
低等(本地数量)
DRBD发出的对本地I / O子系统的打开请求数。
待定
发送给合作伙伴的请求数量,但尚未得到合作伙伴的答复。
UNACKED(未确认)
伙伴通过网络连接收到的但尚未答复的请求数。
最高待定(申请待定)
转发到DRBD的但尚未被DRBD答复的块I / O请求数。
写顺序(写顺序)
当前使用的写排序方法:b(屏障),f(刷新), d(漏极)或n(无)。
不同步
当前不同步的存储量;以千字节为单位。
重新同步暂停
重新同步当前是否已暂停。可能的值是no,user,peer,dependency。
受阻
显示本地I / O拥塞。
- 否:无拥塞。
- 上部:DRBD设备上方的I / O 被阻止,即。到文件系统。典型原因是
- 管理员暂停I / O,请参阅中的suspend-io命令drbdadm。
- 瞬态块,例如 在连接/分离期间
- 缓冲区已耗尽,请参阅优化DRBD性能
- 等待位图IO
- 较低:后备设备很拥挤。
也可以看到上,下的值。
11.3。启用和禁用资源
11.3.1。启用资源
通常,所有配置的DRBD资源都会自动启用
- 由群集资源管理应用程序根据您的群集配置自行决定,或
- 通过/etc/init.d/drbd系统启动时的初始化脚本。
但是,如果由于任何原因需要手动启用资源,则可以通过发出以下命令来启用
# drbdadm up <resource>
与往常一样,all如果要/etc/drbd.conf一次启用所有配置的资源,可以使用关键字而不是特定的资源名称 。
11.3.2。禁用资源
您可以通过发出以下命令暂时禁用特定资源
# drbdadm down <resource>
在这里,all如果您希望/etc/drbd.conf一次禁用所有列出的资源,也可以使用关键字代替资源名称 。
11.4。重新配置资源
使用DRBD,您可以在运行时重新配置资源。为此,
- 使在资源配置进行必要的修改 /etc/drbd.conf,
- /etc/drbd.conf在两个节点之间同步文件,
- drbdadm adjust <resource>在两个节点上发出命令。
drbdadm adjust然后放手drbdsetup对配置进行必要的调整。与往常一样,您可以drbdsetup通过drbdadm使用 -d(dry-run)选项运行来查看挂起的调用。
更改commonin中的部分时/etc/drbd.conf,可以通过发出来一次运行调整所有资源的配置drbdadm adjust all。 |
11.5。升级和降级资源
使用以下命令之一可以手动将资源的角色从辅助角色转换为主要角色(升级),反之亦然(降级):
# drbdadm primary <resource>
# drbdadm secondary <resource>
在单主要模式下(DRBD的默认设置),在连接状态为 Connected的任何给定时间,任何资源都只能在一个节点上担任主要角色。因此,drbdadm primary <resource>在指定的资源仍在另一节点上担任主要角色的同时在一个节点上发出将导致错误。
可将配置为允许双主要模式的资源在两个节点上切换为主要角色;这是例如。在线迁移虚拟机所需。
11.6。基本手动故障转移
如果不使用Pacemaker并希望在被动/主动配置中手动处理故障转移,则过程如下。
在当前的主节点上,停止使用DRBD设备的所有应用程序或服务,卸载DRBD设备,然后将资源降级为辅助资源。
# umount /dev/drbd/by-res/<resource>/<vol-nr>
# drbdadm secondary <resource>
现在,我们希望在节点上主要升级资源并安装设备。
# drbdadm primary <resource>
# mount /dev/drbd/by-res/<resource>/<vol-nr> <mountpoint>
如果您正在使用该auto-promote功能,则无需手动更改角色(“ 主要” /“ 次要”);只需停止服务并分别进行安装。
11.7。升级DRBD
升级DRBD是一个相当简单的过程。本节将详细介绍从8.4.x升级到9.0.x的过程;对于9内升级,它变得更加容易,请参见下面的简短版本。
11.7.1。总体概述
将8.4升级到9.0的一般过程如下:
- 配置新的存储库(如果使用LINBIT的软件包)
- 确保当前情况还可以
- 暂停任何集群管理器
- 获取新版本安装
- 如果要移到两个以上的节点,则需要调整低层存储的大小,以便为其他元数据提供空间。LVM章节将讨论该主题。
- 取消配置资源,卸载DRBD 8.4,并加载v9内核模块
- 将DRBD元数据转换为format v09,也许可以在同一步骤中更改位图的数量
- 充分利用DRBD 资源,并开心
11.7.2。更新您的存储库
由于8.4和9.0分支之间的更改数量众多,我们为每个分支创建了单独的存储库。在两台服务器上执行此存储库更新。
RHEL / CentOS系统
编辑/etc/yum.repos.d/linbit.repo文件以反映以下更改。
[drbd-9.0]
name=DRBD 9.0
baseurl=http://packages.linbit.com/<hash>/yum/rhel7/drbd-9.0/<arch>
gpgcheck=0
您将必须填充<hash>和<arch>变量。<hash>由LINBIT支持服务提供。 |
Debian / Ubuntu系统
编辑/etc/apt/sources.list(或中的文件/etc/apt/sources.d/)以反映以下更改。
deb http://packages.linbit.com/<hash>/ stretch drbd-9.0
如果您不使用stretch发行版,而使用其他发行版,则需要更改该行。
您将必须填充<hash>变量。该 <hash>由Linbit的支持服务提供。 |
接下来,您将需要将DRBD签名密钥添加到您的受信任密钥中。
# gpg --keyserver subkeys.pgp.net --recv-keys 0x282B6E23
# gpg --export -a 282B6E23 | apt-key add -
最后执行一个,apt update以便Debian识别更新的存储库。
# apt update
11.7.3。检查DRBD状态
在开始之前,请确保您的资源是同步的。cat /proc/drbd(仅在 9.0 之前可用)的输出 应显示UpToDate / UpToDate。
bob# cat /proc/drbd
version: 8.4.9-1 (api:1/proto:86-101)
GIT-hash: e081fb0570183db40caa29b26cb8ee907e9a7db3 build by linbit@buildsystem, 2016-11-18 14:49:21
0: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate C r-----
ns:0 nr:211852 dw:211852 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:d oos:0
11.7.4。暂停集群
现在您已经知道资源是同步的,首先升级辅助节点。这可以手动完成,也可以使用Pacemaker将节点置于待机模式。这两个过程都在下面介绍。如果您正在运行Pacemaker,请不要使用手动方法。
- 手动方式
bob# /etc/init.d/drbd stop
- 起搏器
将辅助节点置于待机模式。在此示例中,“ bob”是次要的。
bob# crm node standby bob
您可以使用crm_mon -rf观察 集群的状态,也可以观察cat /proc/drbd直到其资源显示未配置。 |
11.7.5。升级软件包
现在,使用yum或apt更新您的软件包。
bob# yum upgrade
bob# apt upgrade
升级完成后,现在将在您的辅助节点“ bob”上安装最新的DRBD 9.0内核模块和drbd-utils。
但是内核模块尚未激活。
11.7.6。加载新的内核模块
到目前为止,不应再使用DRBD模块,因此我们通过
bob#rmmod drbd
如果显示类似的消息ERROR: Module drbd is in use,则说明尚未正确停止所有资源。
重试升级DRBD和/或运行命令drbdadm down all以找出哪些资源仍处于活动状态。
这些可能阻止卸载的典型问题如下:
- 在DRBD支持的文件系统上导出NFS(请参阅exportfs -v输出)
- 文件系统仍挂载-检查 grep drbd /proc/mounts
- 环回设备有效(losetup -l)
- 直接或间接使用DRBD的设备映射器(dmsetup ls --tree)
- 具有DRBD-PV的LVM(pvs)
请注意,此列表并不完整-这些只是最常见的示例。
现在,我们可以加载新的DRBD模块:
bob#modprobe drbd
现在,您应该检查的内容/proc/drbd并验证是否加载了正确的(新)版本;如果安装的软件包使用了错误的内核版本,则说明安装modprobe成功,但是您将继续使用旧版本。
现在的输出cat /proc/drbd应显示9.0.x,看起来与此类似。
version: 9.0.0 (api:2/proto:86-110)
GIT-hash: 768965a7f158d966bd3bd4ff1014af7b3d9ff10c build by root@bob, 2015-09-03 13:58:02
Transports (api:10): tcp (1.0.0)
在主节点上,alice'cat / proc / drbd'仍会显示以前的版本,直到您对其进行升级。 |
11.7.7。迁移配置文件
DRBD 9.0向后兼容8.4配置文件。但是,某些语法已更改。有关更改的完整列表,请参见对配置语法的更改。同时,您可以使用“ drbdadm dump all”命令相当轻松地移植旧配置。这将同时输出新的全局配置和新的资源配置文件。取得此输出并进行相应的更改。
11.7.8。更改元数据
现在,您需要将磁盘元数据转换为新版本。这真的很容易,只需运行一个命令并确认两个问题即可。
如果要更改节点数,则应该已经增加了较低级别设备的大小,以便有足够的空间来存储其他位图。在这种情况下,您需要使用附加参数运行以下命令。在确定(可能)对等方的数量时,请考虑诸如DRBD客户端之类的设置。--max-peers=<N>
升级DRBD元数据就像运行一个命令并确认两个问题一样容易:
# drbdadm create-md <resource>
You want me to create a v09 style flexible-size internal meta data block.
There appears to be a v08 flexible-size internal meta data block
already in place on <disk> at byte offset <offset>
Valid v08 meta-data found, convert to v09?
[need to type 'yes' to confirm] yes
md_offset <offsets...>
al_offset <offsets...>
bm_offset <offsets...>
Found some data
==> This might destroy existing data! <==
Do you want to proceed?
[need to type 'yes' to confirm] yes
Writing meta data...
New drbd meta data block successfully created.
success
当然,您也可以传递all资源名称。如果您真的很幸运,也可以通过此处的命令行避免此类问题。(是的,顺序很重要。)
drbdadm -v --max-peers=<N> -- --force create-md <resources>
11.7.9。再次启动DRBD
现在,剩下要做的就是让DRBD设备重新启动并运行-一个简单的方法drbdadm up all就可以解决问题。
现在,根据您是否拥有集群管理器还是手动跟踪资源,再次有两种不同的方法。
- 手动地
bob# /etc/init.d/drbd start
- 起搏器
# crm node online bob
这应该使DRBD连接到另一个节点,并且重新同步过程将开始。
当两个节点再次在所有资源上都处于UpToDate时,可以将应用程序移至已升级的节点(此处为“ bob”),然后在仍运行8.4的群集节点上执行相同的步骤。
11.7.10。从DRBD 9到DRBD 9
如果您已经在运行9.0,则足以 安装新的软件包版本,使群集节点处于待机状态, 卸载/重新加载内核模块, 启动资源以及使群集节点 再次联机[ 7 ]。
这些单独的步骤已在上面进行了详细说明,因此在此不再赘述。
11.8。启用双主要模式
双主要模式允许资源在多个节点上同时担当主要角色。这样做可以是永久性或临时性的。
双主模式要求将资源配置为同步复制(协议C)。因此,它对延迟敏感,不适用于WAN环境。 此外,由于两种资源始终都是主要资源,因此节点之间网络中的任何中断都将导致脑裂。 |
在DRBD 9.0.x中,双主模式只能用于实时迁移,而仅限于2个主模式。 |
11.8.1。永久双主要模式
要启用双主要模式,请在资源配置的net部分中将allow-two-primaries选项设置为 :yes
resource <resource>
net {
protocol C;
allow-two-primaries yes;
fencing resource-and-stonith;
}
handlers {
fence-peer "...";
unfence-peer "...";
}
...
}
之后,不要忘记在节点之间同步配置。在两个节点上运行 。drbdadm adjust <resource>
现在,您可以使用将两个节点同时更改为主要角色 。drbdadm primary <resource>
您应该始终实施适当的防护策略。在没有防护的情况下使用“允许两个主键”是一个非常糟糕的主意,甚至比在没有防护的情况下使用单主键更糟糕。 |
11.8.2。临时双主模式
要为通常在单主配置中运行的资源临时启用双主模式,请发出以下命令:
# drbdadm net-options --protocol=C --allow-two-primaries <resource>
要结束临时双主模式,请运行与上述相同的命令,但使用 --allow-two-primaries=no(和所需的复制协议,如果适用)。
11.9。使用在线设备验证
11.9.1。启用在线验证
默认情况下,不启用资源的在线设备验证。要启用它,请将以下行添加到您的资源配置中 /etc/drbd.conf:
resource <resource>
net {
verify-alg <algorithm>;
}
...
}
<algorithm>可以是系统内核配置中内核加密API支持的任何消息摘要算法。通常情况下,你应该能够至少可供选择sha1,md5和crc32c。
如果像往常一样对现有资源进行此更改,请drbd.conf与对等方同步,然后在两个节点上运行。drbdadm adjust <resource>
11.9.2。调用在线验证
启用在线验证后,您将能够使用以下命令启动验证运行:
# drbdadm verify <resource>
这样做时,DRBD将启动<resource>的联机验证运行 ,并且如果它检测到任何不同步的块,则会将这些块标记为此类并向内核日志中写入一条消息。那时使用该设备的任何应用程序都可以继续这样做,并且您也可以随意切换资源角色。
如果在验证运行期间检测到不同步的块,则可以在验证完成后使用以下命令重新同步它们:
# drbdadm disconnect <resource>
# drbdadm connect <resource>
11.9.3。自动化在线验证
大多数用户将希望自动执行在线设备验证。这很容易实现。创建一个具有以下内容的文件,在您的一个节点/etc/cron.d/drbd-verify上命名 :
42 0 * * 0 root /sbin/drbdadm verify <resource>
这将在cron每个星期日的午夜42分之后调用设备验证;因此,如果您在星期一早上进入办公室,快速浏览资源状态将显示结果。如果您的设备很大,并且\ 〜32小时还不够,那么您会注意到VerifyS或 VerifyT为连接状态,这意味着verify仍在进行中。
如果您已经为所有资源启用了在线验证(例如,通过添加到中的部分),则还可以使用:verify-alg <algorithm>common/etc/drbd.d/global_common.conf
42 0 * * 0 root /sbin/drbdadm verify all
11.10。配置同步速率
通常,人们试图确保尽快完成后台同步(这将使同步目标上的数据暂时不一致)。但是,也有必要防止后台同步占用所有原本可用于前台复制的带宽,这将对应用程序性能造成不利影响。因此,您必须配置同步带宽以匹配您的硬件-您可以永久或实时地进行此操作。
设置高于辅助节点上的最大写吞吐量的同步速率是没有意义的。您绝不能指望辅助节点奇迹般地能够比其I / O子系统所允许的速度更快地写入数据,仅因为它恰好是正在进行的设备同步的目标。 |
同样,出于相同的原因,设置高于复制网络上可用带宽的同步速率也没有意义。
11.10.1。估计同步速度
此值的一个很好的经验法则是使用大约30%的可用复制带宽。因此,如果您拥有一个能够维持400MB / s的写入吞吐量的I / O子系统,以及一个能够维持110MB / s的网络吞吐量的千兆以太网(网络是瓶颈),那么您将计算: |
图10.同步器速率示例,有效带宽为110MB / s
因此,该rate选项的建议值为33M。
相比之下,如果您有一个最大吞吐量为80MB / s的I / O子系统和一个千兆以太网连接(I / O子系统是瓶颈),则可以计算:
图11.同步器速率示例,有效带宽为80MB / s
在这种情况下,该rate选项 的建议值为24M。
同样,对于800MB / s的存储速度和10Gbe的网络连接,您将以\〜240MB / s的同步速度拍摄。
11.10.2。可变同步速率配置
当多个DRBD资源共享一个复制/同步网络时,以固定速率进行同步可能不是最佳方法。因此,在DRBD 8.4.0中,默认情况下启用了可变速率同步。在这种模式下,DRBD使用自动控制环路算法来确定和调整同步速率。该算法确保始终有足够的带宽可用于前台复制,从而大大减轻了后台同步对前台I / O的影响。
可变速率同步的最佳配置可能会因可用的网络带宽,应用程序I / O模式和链路拥塞而有很大差异。理想的配置设置还取决于是否正在使用DRBD代理。寻求专业顾问以最佳配置此DRBD功能可能是明智的。下面提供了一个示例配置(假定与DRBD代理一起部署):
resource <resource> {
disk {
c-plan-ahead 5;
c-max-rate 10M;
c-fill-target 2M;
}
}
BDP * 2c-fill-target是 一个很好的起始值,其中 BDP是复制链接上的带宽延迟乘积。 |
例如,当使用1GBit / s的跨接连接时,您将获得大约200µs的延迟[ 8 ]。
1GBit / s表示约120MB / s;200 * 10 -6秒乘以24000字节。只要将该值向上舍入到下一个MB,就可以了。
另一个示例:具有200ms延迟的100MBit WAN连接意味着12MB / s乘以0.2s,即“在线”约为2.5MB。在这里,一个好的起始值为 c-fill-target3MB。
drbd.conf有关其他配置项目的更多详细信息,请参见手册页。
11.10.3。永久固定同步速率配置
在一些非常受限的情况下[ 9 ],仅使用一些固定的同步速率可能是有意义的。在这种情况下,首先您需要通过使用关闭动态同步速率控制器 c-plan-ahead 0;。
然后,资源用于后台重新同步的最大带宽由资源的resync-rate选项确定。这必须包含在资源的 disk部分中/etc/drbd.conf:
resource <resource>
disk {
resync-rate 40M;
...
}
...
}
请注意,速率设置以字节为单位,而不是每秒位数;默认单位为Kibibyte,因此的值4096将被解释为4MiB。
这仅定义了DRBD尝试达到的速率。如果存在吞吐量(网络,存储速度)较低的瓶颈,则将无法达到定义的速度(即“希望”性能)。 |
11.10.4。有关同步的更多提示
如果不再真正使用一些要同步的数据(例如,由于在未连接一个节点的情况下删除了文件),则可能会受益于Trim / Discard支持。
此外,c-min-rate很容易造成误解-它没有定义最低同步速度,而是一个限制,在该限制之下DRBD不会故意放慢速度。
是否设法达到同步速度取决于您的网络和存储速度,网络延迟(对于共享链接而言可能会有很大不同)和应用程序IO(可能无法执行任何操作)。