停止 DRBD,以便我可以使用虛擬機器運行一些測試

停止 DRBD,以便我可以使用虛擬機器運行一些測試

我們繼承了兩台伺服器,都運行 DRBD,然後都運行 KVM 虛擬機器。

我希望停止在 server1 上運行的虛擬機,並僅在 server2 上啟動 1 個虛擬機進行一些測試。儘管DRBD 在這些伺服器上執行其操作,並且我從server2 獲得了損壞的啟動腳本(在此處發布),但這讓我感到緊張,因為我不想完全停止server1,而只是停止其上的一個虛擬機。我沒有創建或配置這些機器,我懷疑 DRBD(我對此知之甚少)是否完全正確實施。 Server1 的停止腳本已發布,server2 啟動腳本已發佈到此處。

但在此之前,我想我只是想知道如何安全地阻止 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。這是 server2 的啟動腳本:(我不知道 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。為了安全地將其故障轉移到對等系統,您需要停止對此檔案系統的存取(停止所有虛擬機器)並首先卸載它。這會將所有虛擬機器集中在一起,因此您需要對所有虛擬機器進行故障轉移。

一種選擇,一般是不建議的方法是斷開 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

相關內容