停止 DRBD,以便我可以使用 VM 运行一些测试

停止 DRBD,以便我可以使用 VM 运行一些测试

我们有两台我继承的服务器,都运行 DRBD,并且每台都运行 KVM 虚拟机。

我很想停止在服务器 1 上运行的虚拟机,并在服务器 2 上启动 1 个虚拟机进行一些测试。尽管 DRBD 在这些服务器上运行,并且我从服务器 2 获得了损坏的启动脚本(发布于此处),但这让我很紧张,因为我不想完全停止服务器 1,只想停止其上的一个虚拟机。我没有创建或配置这些机器,我怀疑 DRBD(我对此知之甚少)是否完全正确实施。服务器 1 的停止脚本已发布,服务器 2 的启动脚本也发布于此处。

但在此之前,我想我只是想知道如何安全地停止 drbd 暂时干扰这两台服务器。这样我就可以在 server2 上安装文件系统,并启动我在 server1 上停止的虚拟机。

Server1站点停止脚本:

echo    poweroff -p now
echo
read -rsp $'Press any key to continue...\n' -n1 key

virsh shutdown irsc
virsh shutdown backup
virsh shutdown user
virsh shutdown repository
virsh shutdown web-firewall
virsh shutdown wiki
virsh shutdown a-gateway
virsh shutdown b-gateway
virsh shutdown dhcp
 
# shutdown the drbd
#drbd-stop
echo now manually turn off drbd
echo     umount /systems
echo     drbdadm secondary all
echo     drbd-overview

不知道为什么 drbd-stop 被注释掉了,为什么它会重复它应该做的事情?我不知道。但是好吧,这就是停止脚本。顺便说一下,Server1 的 KVM img 文件位于 /systems 中。

所以我转到服务器 2。第一个问题:/systems 文件夹中没有 img 文件,但启动脚本中有一条挂载行。这是服务器 2 的启动脚本:(我不知道 nodedev-detach pci 到底在做什么。)

#!/bin/sh
# isolate the CPUs for the VMs
#site-isolate

# backup 192 network
virsh nodedev-detach pci_0000_06_10_2
# 10.7
virsh nodedev-detach pci_0000_02_10_0
# 10.5
virsh nodedev-detach pci_0000_06_10_3
# 10.2
virsh nodedev-detach pci_0000_02_10_1

# a-gateway
# 192
virsh nodedev-detach pci_0000_06_10_0
# 10.5
virsh nodedev-detach pci_0000_06_10_1
# 10.7
virsh nodedev-detach pci_0000_02_10_4

# b-gateway
# 192
virsh nodedev-detach pci_0000_06_10_4
# 10.2
virsh nodedev-detach pci_0000_02_10_5

# dhcp
# 10.5
virsh nodedev-detach pci_0000_06_10_7
# 10.7
virsh nodedev-detach pci_0000_02_11_0
# 10.2
virsh nodedev-detach pci_0000_02_11_1

# dns2
# 192
virsh nodedev-detach pci_0000_06_11_0

# web-server
# 10.7
virsh nodedev-detach pci_0000_02_11_4

# web-firewall
# 192
virsh nodedev-detach pci_0000_06_10_6
# 10.7
virsh nodedev-detach pci_0000_02_12_4
# 10.2
virsh nodedev-detach pci_0000_02_11_5

# irsc
# 10.7
virsh nodedev-detach pci_0000_02_13_0
# BTTV
virsh nodedev-detach pci_0000_09_00_0

# firewall
# 10.25
virsh nodedev-detach pci_0000_02_12_1
# 10.5
virsh nodedev-detach pci_0000_06_11_1

# bro-server
# 192
virsh nodedev-detach pci_0000_06_11_2

echo start drbd
# start the disk mirror with the slave
service drbd start
sleep 2

# now setup drbd and filesystems

# for all VM images, mount the /systems
drbdadm primary systems
mount /dev/drbd/by-res/systems /systems

# for arc-gateway
drbdadm primary arc-gateway-data

# for backup
drbdadm primary archive
drbdadm primary amanda

# for user computer
# for user computer
drbdadm primary users

# for web server computer
drbdadm primary web-server

# for wiki
drbdadm primary svn

# for irsc. *** this is the one I want to bring up?  do I have to do this drbdadm primary irsc
drbdadm primary irsc

echo start vms
# start the VMs
# fundamental servers
virsh start dns2
virsh start dhcp
# take a long time to start servers
virsh start devel1
virsh start xmail
# gateways, sdss-gateway takes a long time
virsh start sdss-gateway
virsh start arc-gateway
virsh start user
# APO servers
virsh start web-server
virsh start backup
virsh start repository
virsh start wiki
virsh start irsc

# finally web firewall, now online to the world
virsh start web-firewall

答案1

正如您在上面的评论中所解释的那样。所有 VM 的根卷都作为映像文件存储在挂载在 的文件系统中/systems。为了安全地将其故障转移到对等系统,您需要先停止对此文件系统的访问(停止所有 VM)并卸载它。这会将所有 VM 集中在一起,因此您需要对所有 VM 进行故障转移。

一个选择通常是不建议就是断开 DRBD 节点并手动导致脑裂。本质上两个节点将同时成为主节点,从而导致数据分歧,您需要手动解决才能重新连接它们。我首先会验证您的 DRBD 配置不包含任何自动裂脑恢复选项。该过程应与以下内容类似。在此要特别小心命令--discard-my-data。从错误的节点运行这些命令可能会带来灾难性的后果。

## From the secondary node
# drbdadm disconnect systems
# drbdadm primary systems
## Verify irsc is stopped on the peer
# virsh start irsc
## Do whatever testing you need
# virsh stop irsc
# drbdadm secondary systems
# drbdacm connect systems --discard-my-data

相关内容